Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r43lQ-007C6C-Do for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Nov 2023 18:40:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1r43lP-00F70V-3D for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Nov 2023 18:40:23 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r43lN-00F6zs-J1 for pgsql-hackers@lists.postgresql.org; Fri, 17 Nov 2023 18:40:22 +0000 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1r43l5-0063Rc-UW for pgsql-hackers@lists.postgresql.org; Fri, 17 Nov 2023 18:40:20 +0000 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-280351c32afso1861808a91.1 for ; Fri, 17 Nov 2023 10:40:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1700246403; x=1700851203; darn=lists.postgresql.org; 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=roMfNqofEIhMAumJG/YI2cshJPt7Nh3sQWX7h6oDTyQ=; b=H+6GUJJjavoPidER6zgOZGnOl+SuIWScaUFJWIgv71M+m2OsY0pxcSGIMWlqMtWB/V pHT7mKmjJOSEG6tVkh7U3yPWqEdw4acKh3iGe2A2kCDeqO5xbuSRmWafMjCHbGbaswIa gwykl0Fbl/gNKREOXQi9pY8aBCCPRKNq9qhac0wC3Adz56BjjDoTo9V3xenF7xxaWS+Y VOn48m1SnvCZE3DEPqMuG32ak8cjpxcORDqhnVRAFQ6bCGb+UFTY7fOdfPrL8brGsZer z2+fAQq45jgUxDPgZXry/6HGowzJXQnBtloajC2jvMnYgz3qoHhPpHPVQmG3IEUuMIFW f0yA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700246403; x=1700851203; 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=roMfNqofEIhMAumJG/YI2cshJPt7Nh3sQWX7h6oDTyQ=; b=peQYDIgHD1wp7BCkK3synpPppj1tBjHtJmjPNDpeZI3QagOlYrFELrUS6IbkdS13s8 QyNDj8pi8PoZv9MbKXBcNb1ZOvLu0vxS2xzEYL/yPOmrNR/98gPzGqytr71Bb0gBnMny U8+csVzPyxMyCo4ujfJOCFxow3htbPlcBNCCb3p7Dn99yK3pilwOTzC1UscU/bRFo2pV waUTmOs1WQC89XpYwcddd3yNhRdeRxScxc6bBZu3gKpsEQEM/ES2dVtzn4UmMYWVw8ZE qLSqdNAK+cbxy4YAlwxZlr7yBzfTVr185oW57AZZk6bfTextqqEevnwB35OwzH2AC37c 9UeQ== X-Gm-Message-State: AOJu0Yz21Tl85BE8S/fr/Hiv5gTWZD9+wh8kaN1PKxevWJHrphzPjlnw GxCXOW5mQpDDGkVlCcJZ0JMgFw== X-Google-Smtp-Source: AGHT+IEqFPEB1lH/RKYdLLj0yFCrDXdYnz1V80daH4g3TgwPhRdV8GKF7wPi9wsh5aggdh3bq6Dd1Q== X-Received: by 2002:a17:90b:3ecb:b0:283:a71:63be with SMTP id rm11-20020a17090b3ecb00b002830a7163bemr361750pjb.0.1700246402017; Fri, 17 Nov 2023 10:40:02 -0800 (PST) Received: from [192.168.2.139] ([50.53.98.191]) by smtp.googlemail.com with ESMTPSA id fs7-20020a17090af28700b00282ecb631a9sm1681037pjb.25.2023.11.17.10.39.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 17 Nov 2023 10:40:00 -0800 (PST) Content-Type: multipart/mixed; boundary="------------jwdNqnl5yO2Lo4Yc0EOjsS0s" Message-ID: Date: Fri, 17 Nov 2023 10:39:58 -0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: SQL:2011 application time Content-Language: en-US To: Peter Eisentraut , jian he Cc: PostgreSQL Hackers References: <5157e85a-6007-27a7-853a-5601d9c3722f@illuminatedcomputing.com> <5a16a59a-d497-7d72-07aa-0afc09d5193a@illuminatedcomputing.com> <2d9740ad-3bb7-473c-8441-344351caa8ee@illuminatedcomputing.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. --------------jwdNqnl5yO2Lo4Yc0EOjsS0s Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 11/9/23 05:47, Peter Eisentraut wrote: > I went over the patch v17-0001-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch in more > detail.  Attached is a fixup patch that addresses a variety of cosmetic issues. Thanks for the review! This all looks great to me, and it's applied in the attached patch (with one typo correction in a C comment). The patch addresses some of jian he's feedback too but I'll reply to those emails separately. > Two areas that could be improved: > > 1) In src/backend/commands/indexcmds.c, get_index_attr_temporal_operator() has this comment: > > +    * This seems like a hack > +    * but I can't find any existing lookup function > +    * that knows about pseudotypes. > > This doesn't see very confident. ;-)  I don't quite understand this.  Is this a gap in the currently > available APIs, do we need to improve something here, or does this need more research? I've improved this a bit but I'm still concerned about part of it. First the improved part: I realized I should be calling get_opclass_opfamily_and_input_type first and passing the opcintype to get_opfamily_member, which solves the problem of having a concrete rangetype but needing an operator that targets anyrange. We do the same thing with partition keys. But I feel the overall approach is wrong: originally I used hardcoded "=" and "&&" operators, and you asked me to look them up by strategy number instead. But that leads to trouble with core gist types vs btree_gist types. The core gist opclasses use RT*StrategyNumbers, but btree_gist creates opclasses with BT*StrategyNumbers. I don't see any way to ask ahead of time which class of strategy numbers are used by a given opclass. So I have code like this: *strat = RTEqualStrategyNumber; opname = "equality"; *opid = get_opfamily_member(opfamily, opcintype, opcintype, *strat); /* * For the non-overlaps key elements, * try both RTEqualStrategyNumber and BTEqualStrategyNumber. * If you're using btree_gist then you'll need the latter. */ if (!OidIsValid(*opid)) { *strat = BTEqualStrategyNumber; *opid = get_opfamily_member(opfamily, opcintype, opcintype, *strat); } I do a similar thing for foreign keys. But that can't be right. I added a scary comment there in this patch, but I'll explain here too: It's only by luck that RTEqualStrategyNumber (18) is bigger than any BT*StrategyNumber. If I checked in the reverse order, I would always find an operator---it would just sometimes be the wrong one! And what if someone has defined a new type+opclass with totally different strategy numbers? As far as I can tell, the gist AM doesn't require an opclass have any particular operators, only support functions, so the strategy numbers are "private" and can vary between opclasses. What we want is a way to ask which operators mean equality & overlaps for a given opclass. But the strategy numbers aren't meaningful terms to ask the question. So I think asking for "=" and "&&" is actually better here. Those will be correct for both core & btree_gist, and they should also match user expectations for custom types. They are what you'd use in a roll-your-own temporal constraint via EXCLUDE. We can also document that we implement WITHOUT OVERLAPS with those operator names, so people can get the right behavior from custom types. (This also maybe lets us implement WITHOUT OVERLAPS for more than rangetypes, as you suggested. See below for more about that.) It's taken me a while to grok the am/opclass/opfamily/amop interaction, and maybe I'm still missing something here. Let me know if that's the case! > 2) In src/backend/parser/parse_utilcmd.c, transformIndexConstraint(), there is too much duplication > between the normal and the if (constraint->without_overlaps) case, like the whole not-null > constraints stuff at the end.  This should be one code block with a few conditionals inside.  Also, > the normal case deals with things like table inheritance, which the added parts do not.  Is this all > complete? Cleaned things up here. I agree it's much better now. And you're right, now you should be able to use an inherited column in a temporal PK/UQ constraint. I think I need a lot more test coverage for how this feature combines with inherited tables, so I'll work on that. > I'm not sure the validateWithoutOverlaps() function is needed at this point in the code. Agreed, I removed it and moved the is-it-a-rangetype check into the caller. > We don't even need to > restrict this to range types.  Consider for example, it's possible that a type does not have a btree > equality operator.  We don't check that here either, but let the index code later check it. That is very interesting. Perhaps we allow anything with equals and overlaps then? Note that we need more for FOR PORTION OF, foreign keys, and foreign keys with CASCADE/SET. So it might be confusing if a type works with temporal PKs but not those other things. But if we documented what operators you need for each feature then you could implement as much as you liked. I like this direction a lot. It matches what I suggested in the conversation about multiple WITHOUT OVERLAPS/PERIOD columns: rather than having foreign keys and FOR PORTION OF know how to find n-dimensional "leftovers" we could leave it up the type, and just call a documented operator. (We would need to add that operator for rangetypes btw, one that calls range_leftover_internal. It should return an array (not a multirange!) of the untouched parts of the record.) This makes it easy to support bi/tri/n-temporal, spatial, multiranges, etc. (For spatial you probably want PostGIS instead, and I'm wary of over-abstracting here, but I like how this "leaves the door open" for PostGIS to eventually support spatial PKs/FKs.) Please let me know what you think! Yours, -- Paul ~{:-) pj@illuminatedcomputing.com --------------jwdNqnl5yO2Lo4Yc0EOjsS0s Content-Type: text/x-patch; charset=UTF-8; name="v18-0001-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch" Content-Disposition: attachment; filename*0="v18-0001-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSAxMDdmMGUyMjY3OWU0MWFjMjljYTE3ODRlYTk2ZTlmZjU3Y2Y4NjkxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IE1vbiwgMjggSnVuIDIwMjEgMTc6MzM6MjcgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxOCAxLzVdIEFkZCB0ZW1wb3JhbCBQUklNQVJZIEtFWSBh bmQgVU5JUVVFIGNvbnN0cmFpbnRzCgotIEFkZGVkIFdJVEhPVVQgT1ZFUkxBUFMgdG8gdGhl IGJpc29uIGdyYW1tYXIuIFdlIHBlcm1pdCBvbmx5IHJhbmdlCiAgY29sdW1ucywgbm90IHll dCBQRVJJT0RzICh3aGljaCB3ZSdsbCBhZGQgc29vbikuCi0gVGVtcG9yYWwgUFJJTUFSWSBL RVlzIGFuZCBVTklRVUUgY29uc3RyYWludHMgYXJlIGJhY2tlZCBieSBHaVNUCiAgaW5kZXhl cyBpbnN0ZWFkIG9mIEItdHJlZSBpbmRleGVzLCBzaW5jZSB0aGV5IGFyZSBlc3NlbnRpYWxs eQogIGV4Y2x1c2lvbiBjb25zdHJhaW50cyB3aXRoID0gZm9yIHRoZSBzY2FsYXIgcGFydHMg b2YgdGhlIGtleSBhbmQgJiYKICBmb3IgdGhlIHRlbXBvcmFsIHBhcnQuCi0gQWRkZWQgcGdf Y29uc3RyYWludC5jb250ZW1wb3JhbCB0byBzYXkgd2hldGhlciBhIGNvbnN0cmFpbnQgaXMg YQogIHRlbXBvcmFsIGNvbnN0cmFpbnQuCi0gQWRkZWQgZG9jcyBhbmQgdGVzdHMuCi0gQWRk ZWQgcGdfZHVtcCBzdXBwb3J0LgotLS0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICB8ICAgMyArLQogLi4uL2J0cmVlX2dpc3QvZXhwZWN0ZWQvd2l0 aG91dF9vdmVybGFwcy5vdXQgIHwgIDMxICsrCiBjb250cmliL2J0cmVlX2dpc3Qvc3FsL3dp dGhvdXRfb3ZlcmxhcHMuc3FsICAgfCAgMTMgKwogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwgICAgICAgICAgICAgICAgICAgIHwgIDEwICsKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3RhYmxlLnNnbWwgICAgICAgICAgICB8ICAzOSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9o ZWFwLmMgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXguYyAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9jYXRhbG9n L3BnX2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY29tbWFu ZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgMTU5ICsrKysrKystCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFj a2VuZC9jb21tYW5kcy90eXBlY21kcy5jICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9i YWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgMjkgKy0KIHNy Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8ICA2NyArKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8ICAxNCAr LQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwgIDE4 ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAg MTYgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAgICAg fCAgNDAgKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAxMiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAg ICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oICAgICAg ICAgICB8ICAxMCArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggICAgICAgICAg ICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAg ICAgICAgICAgfCAgIDIgKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFw cy5vdXQgICAgIHwgMzgyICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9w YXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAyODIgKysrKysrKysrKysrKwogMjkg ZmlsZXMgY2hhbmdlZCwgMTA5OSBpbnNlcnRpb25zKCspLCA1NSBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL2J0cmVlX2dpc3QvZXhwZWN0ZWQvd2l0aG91dF9v dmVybGFwcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL2J0cmVlX2dpc3Qvc3Fs L3dpdGhvdXRfb3ZlcmxhcHMuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCgpkaWZmIC0tZ2l0 IGEvY29udHJpYi9idHJlZV9naXN0L01ha2VmaWxlIGIvY29udHJpYi9idHJlZV9naXN0L01h a2VmaWxlCmluZGV4IDA3M2RjYzc0NWMuLjZkZDA1ZDZmNTAgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvYnRyZWVfZ2lzdC9NYWtlZmlsZQorKysgYi9jb250cmliL2J0cmVlX2dpc3QvTWFrZWZp bGUKQEAgLTM4LDcgKzM4LDggQEAgUEdGSUxFREVTQyA9ICJidHJlZV9naXN0IC0gQi10cmVl IGVxdWl2YWxlbnQgR2lTVCBvcGVyYXRvciBjbGFzc2VzIgogCiBSRUdSRVNTID0gaW5pdCBp bnQyIGludDQgaW50OCBmbG9hdDQgZmxvYXQ4IGNhc2ggb2lkIHRpbWVzdGFtcCB0aW1lc3Rh bXB0eiBcCiAgICAgICAgIHRpbWUgdGltZXR6IGRhdGUgaW50ZXJ2YWwgbWFjYWRkciBtYWNh ZGRyOCBpbmV0IGNpZHIgdGV4dCB2YXJjaGFyIGNoYXIgXAotICAgICAgICBieXRlYSBiaXQg dmFyYml0IG51bWVyaWMgdXVpZCBub3RfZXF1YWwgZW51bSBib29sIHBhcnRpdGlvbnMKKyAg ICAgICAgYnl0ZWEgYml0IHZhcmJpdCBudW1lcmljIHV1aWQgbm90X2VxdWFsIGVudW0gYm9v bCBwYXJ0aXRpb25zIFwKKyAgICAgICAgd2l0aG91dF9vdmVybGFwcwogCiBTSExJQl9MSU5L ICs9ICQoZmlsdGVyIC1sbSwgJChMSUJTKSkKIApkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJl ZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0IGIvY29udHJpYi9idHJlZV9n aXN0L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjA2OTI3MjY4OGYKLS0tIC9kZXYvbnVsbAorKysgYi9jb250 cmliL2J0cmVlX2dpc3QvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKQEAgLTAsMCAr MSwzMSBAQAorLS0gQ29yZSBtdXN0IHRlc3QgV0lUSE9VVCBPVkVSTEFQUworLS0gd2l0aCBh biBpbnQ0cmFuZ2UgKyB0c3JhbmdlLAorLS0gc28gaGVyZSB3ZSBkbyBzb21lIHNpbXBsZSB0 ZXN0cworLS0gdG8gbWFrZSBzdXJlIGludCArIHRzcmFuZ2Ugd29ya3MgdG9vLAorLS0gc2lu Y2UgdGhhdCBpcyB0aGUgZXhwZWN0ZWQgdXNlLWNhc2UuCitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcm5nICgKKyAgaWQgaW50ZWdlciwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZworICAgICAgICAgICAgIFRhYmxlICJw dWJsaWMudGVtcG9yYWxfcm5nIgorICBDb2x1bW4gIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8 IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAg IHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCB8IHRzcmFuZ2UgfCAgICAgICAgICAgfCBub3Qg bnVsbCB8IAorSW5kZXhlczoKKyAgICAidGVtcG9yYWxfcm5nX3BrIiBQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisKK1NFTEVDVCBwZ19nZXRfY29uc3Ry YWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBv cmFsX3JuZ19wayc7CisgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKygxIHJvdykK KworU0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19j b25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nX3BrJzsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2luZGV4ZGVmICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUg VU5JUVVFIElOREVYIHRlbXBvcmFsX3JuZ19wayBPTiB0ZW1wb3JhbF9ybmcgVVNJTkcgZ2lz dCAoaWQsIHZhbGlkX2F0KQorKDEgcm93KQorCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVl X2dpc3Qvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsIGIvY29udHJpYi9idHJlZV9naXN0L3Nx bC93aXRob3V0X292ZXJsYXBzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi45ODY2NWRiYjllCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9idHJlZV9n aXN0L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApAQCAtMCwwICsxLDEzIEBACistLSBDb3Jl IG11c3QgdGVzdCBXSVRIT1VUIE9WRVJMQVBTCistLSB3aXRoIGFuIGludDRyYW5nZSArIHRz cmFuZ2UsCistLSBzbyBoZXJlIHdlIGRvIHNvbWUgc2ltcGxlIHRlc3RzCistLSB0byBtYWtl IHN1cmUgaW50ICsgdHNyYW5nZSB3b3JrcyB0b28sCistLSBzaW5jZSB0aGF0IGlzIHRoZSBl eHBlY3RlZCB1c2UtY2FzZS4KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorICBpZCBp bnRlZ2VyLAorICB2YWxpZF9hdCB0c3JhbmdlLAorICBDT05TVFJBSU5UIHRlbXBvcmFsX3Ju Z19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOwor XGQgdGVtcG9yYWxfcm5nCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9N IHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmdfcGsnOworU0VM RUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJh aW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nX3BrJzsKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK aW5kZXggM2VjNzM5MWVjNS4uNjE4YTA1YWM4OSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTI3 MDksNiArMjcwOSwxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0 aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPC9w YXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jb253aXRob3V0b3ZlcmxhcHM8L3N0cnVjdGZp ZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgVGhpcyBjb25zdHJhaW50IGlzIGRlZmluZWQgd2l0aCA8bGl0ZXJhbD5XSVRIT1VU IE9WRVJMQVBTPC9saXRlcmFsPgorICAgICAgIChmb3IgcHJpbWFyeSBrZXlzIGFuZCB1bmlx dWUgY29uc3RyYWludHMpLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5j b25rZXk8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyW108L3R5cGU+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfdGFibGUuc2dtbAppbmRleCBlMDRhMDY5MmM0Li5hMGJkMmI4YWRjIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAgLTc4LDggKzc4LDggQEAgQ1JFQVRFIFsg WyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBU QUJMRSBbIElGIE5PVCBFWEkKIFsgQ09OU1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT4gXQogeyBDSEVDSyAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4g KSBbIE5PIElOSEVSSVQgXSB8CiAgIE5PVCBOVUxMIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFsgTk8gSU5IRVJJVCBdIHwKLSAg VU5JUVVFIFsgTlVMTFMgWyBOT1QgXSBESVNUSU5DVCBdICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfcGFyYW1ldGVyczwvcmVwbGFjZWFi bGU+IHwKLSAgUFJJTUFSWSBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAorICBVTklR VUUgWyBOVUxMUyBbIE5PVCBdIERJU1RJTkNUIF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBXSVRI T1VUIE9WRVJMQVBTIF0gKSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhf cGFyYW1ldGVyczwvcmVwbGFjZWFibGU+IHwKKyAgUFJJTUFSWSBLRVkgKCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4g XSBbLCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxh Y2VhYmxlPiBXSVRIT1VUIE9WRVJMQVBTIF0gKSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+aW5kZXhfcGFyYW1ldGVyczwvcmVwbGFjZWFibGU+IHwKICAgRVhDTFVERSBbIFVT SU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9tZXRob2Q8L3JlcGxh Y2VhYmxlPiBdICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2x1ZGVfZWxl bWVudDwvcmVwbGFjZWFibGU+IFdJVEggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm9wZXJhdG9yPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+aW5kZXhfcGFyYW1ldGVyczwvcmVwbGFjZWFibGU+IFsgV0hFUkUgKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHJlZGljYXRlPC9yZXBsYWNlYWJsZT4g KSBdIHwKICAgRk9SRUlHTiBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIFJFRkVSRU5DRVMgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4gWyAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1bW48L3JlcGxhY2VhYmxlPiBb LCAuLi4gXSApIF0KICAgICBbIE1BVENIIEZVTEwgfCBNQVRDSCBQQVJUSUFMIHwgTUFUQ0gg U0lNUExFIF0gWyBPTiBERUxFVEUgPHJlcGxhY2VhYmxlCkBAIC05NjUsNyArOTY1LDcgQEAg V0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNf bGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KIAogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3Fs LWNyZWF0ZXRhYmxlLXBhcm1zLXVuaXF1ZSI+CiAgICAgPHRlcm0+PGxpdGVyYWw+VU5JUVVF IFsgTlVMTFMgWyBOT1QgXSBESVNUSU5DVCBdPC9saXRlcmFsPiAoY29sdW1uIGNvbnN0cmFp bnQpPC90ZXJtPgotICAgIDx0ZXJtPjxsaXRlcmFsPlVOSVFVRSBbIE5VTExTIFsgTk9UIF0g RElTVElOQ1QgXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICk8L2xpdGVyYWw+CisgICAgPHRlcm0+PGxpdGVy YWw+VU5JUVVFIFsgTlVMTFMgWyBOT1QgXSBESVNUSU5DVCBdICggPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJs ZT4gV0lUSE9VVCBPVkVSTEFQUyBdICk8L2xpdGVyYWw+CiAgICAgPG9wdGlvbmFsPiA8bGl0 ZXJhbD5JTkNMVURFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9u YW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSk8L2xpdGVyYWw+IDwvb3B0aW9uYWw+ICh0YWJs ZSBjb25zdHJhaW50KTwvdGVybT4KIAogICAgIDxsaXN0aXRlbT4KQEAgLTk3OSw2ICs5Nzks MjYgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51 bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgIG9mIHRoZXNlIGNvbHVt bnMuCiAgICAgIDwvcGFyYT4KIAorICAgICA8cGFyYT4KKyAgICAgIElmIHRoZSA8bGl0ZXJh bD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiBvcHRpb24gaXMgc3BlY2lmaWVkIGZvciB0 aGUKKyAgICAgIGxhc3QgY29sdW1uLCB0aGVuIHRoYXQgY29sdW1uIGlzIGNoZWNrZWQgZm9y IG92ZXJsYXBzIGluc3RlYWQgb2YKKyAgICAgIGVxdWFsaXR5LiAgSW4gdGhhdCBjYXNlLCB0 aGUgb3RoZXIgY29sdW1ucyBvZiB0aGUgY29uc3RyYWludCB3aWxsIGFsbG93CisgICAgICBk dXBsaWNhdGVzIHNvIGxvbmcgYXMgdGhlIGR1cGxpY2F0ZXMgZG9uJ3Qgb3ZlcmxhcCBpbiB0 aGUKKyAgICAgIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IGNvbHVtbi4g IChUaGlzIGlzIHNvbWV0aW1lcyBjYWxsZWQgYQorICAgICAgdGVtcG9yYWwga2V5LCBpZiB0 aGUgY29sdW1uIGlzIGEgcmFuZ2Ugb2YgZGF0ZXMgb3IgdGltZXN0YW1wcywgYnV0CisgICAg ICBQb3N0Z3JlU1FMIGFsbG93cyByYW5nZXMgb3ZlciBhbnkgYmFzZSB0eXBlLikgIEluIGVm ZmVjdCwgc3VjaCBhCisgICAgICBjb25zdHJhaW50IGlzIGVuZm9yY2VkIHdpdGggYW4gPGxp dGVyYWw+RVhDTFVERTwvbGl0ZXJhbD4gY29uc3RyYWludAorICAgICAgcmF0aGVyIHRoYW4g YSA8bGl0ZXJhbD5VTklRVUU8L2xpdGVyYWw+IGNvbnN0cmFpbnQuICBTbyBmb3IgZXhhbXBs ZQorICAgICAgPGxpdGVyYWw+VU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ Uyk8L2xpdGVyYWw+IGJlaGF2ZXMgbGlrZQorICAgICAgPGxpdGVyYWw+RVhDTFVERSBVU0lO RyBHSVNUIChpZCBXSVRIID0sIHZhbGlkX2F0IFdJVEgKKyAgICAgICZhbXA7JmFtcDspPC9s aXRlcmFsPi4gIFRoZSA8bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiBjb2x1 bW4KKyAgICAgIG11c3QgaGF2ZSBhIHJhbmdlIHR5cGUuICBUaGUgbm9uLTxsaXRlcmFsPldJ VEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+CisgICAgICBjb2x1bW5zIG9mIHRoZSBjb25zdHJh aW50IGNhbiBiZSBhbnkgdHlwZSB0aGF0IGNhbiBiZSBjb21wYXJlZCBmb3IKKyAgICAgIGVx dWFsaXR5IGluIGEgR2lTVCBpbmRleC4gQnkgZGVmYXVsdCBvbmx5IHJhbmdlIHR5cGVzIGFy ZSBzdXBwb3J0ZWQsIGJ1dAorICAgICAgeW91IGNhbiB1c2Ugb3RoZXIgdHlwZXMgYnkgYWRk aW5nIHRoZSA8eHJlZiBsaW5rZW5kPSJidHJlZS1naXN0Ii8+CisgICAgICBleHRlbnNpb24g KHdoaWNoIGlzIHRoZSBleHBlY3RlZCB3YXkgdG8gdXNlIHRoaXMgZmVhdHVyZSkuCisgICAg IDwvcGFyYT4KKwogICAgICA8cGFyYT4KICAgICAgIEZvciB0aGUgcHVycG9zZSBvZiBhIHVu aXF1ZSBjb25zdHJhaW50LCBudWxsIHZhbHVlcyBhcmUgbm90CiAgICAgICBjb25zaWRlcmVk IGVxdWFsLCB1bmxlc3MgPGxpdGVyYWw+TlVMTFMgTk9UIERJU1RJTkNUPC9saXRlcmFsPiBp cwpAQCAtMTAwMSw3ICsxMDIxLDkgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KIAog ICAgICA8cGFyYT4KICAgICAgIEFkZGluZyBhIHVuaXF1ZSBjb25zdHJhaW50IHdpbGwgYXV0 b21hdGljYWxseSBjcmVhdGUgYSB1bmlxdWUgYnRyZWUKLSAgICAgIGluZGV4IG9uIHRoZSBj b2x1bW4gb3IgZ3JvdXAgb2YgY29sdW1ucyB1c2VkIGluIHRoZSBjb25zdHJhaW50LgorICAg ICAgaW5kZXggb24gdGhlIGNvbHVtbiBvciBncm91cCBvZiBjb2x1bW5zIHVzZWQgaW4gdGhl IGNvbnN0cmFpbnQuIEJ1dCBpZgorICAgICAgdGhlIGNvbnN0cmFpbnQgaW5jbHVkZXMgYSA8 bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiBjbGF1c2UsCisgICAgICBpdCB3 aWxsIHVzZSBhIEdpU1QgaW5kZXguCiAgICAgIDwvcGFyYT4KIAogICAgICA8cGFyYT4KQEAg LTEwMTksNyArMTA0MSw3IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAKICAgIDx2 YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGV0YWJsZS1wYXJtcy1wcmltYXJ5LWtleSI+CiAg ICAgPHRlcm0+PGxpdGVyYWw+UFJJTUFSWSBLRVk8L2xpdGVyYWw+IChjb2x1bW4gY29uc3Ry YWludCk8L3Rlcm0+Ci0gICAgPHRlcm0+PGxpdGVyYWw+UFJJTUFSWSBLRVkgKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAu Li4gXSApPC9saXRlcmFsPgorICAgIDx0ZXJtPjxsaXRlcmFsPlBSSU1BUlkgS0VZICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4g WywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1l PC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBdICk8L2xpdGVyYWw+CiAgICAgPG9w dGlvbmFsPiA8bGl0ZXJhbD5JTkNMVURFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSk8L2xpdGVyYWw+IDwvb3B0 aW9uYWw+ICh0YWJsZSBjb25zdHJhaW50KTwvdGVybT4KICAgICA8bGlzdGl0ZW0+CiAgICAg IDxwYXJhPgpAQCAtMTA1Miw5ICsxMDc0LDEwIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwg UkVNCiAgICAgIDwvcGFyYT4KIAogICAgICA8cGFyYT4KLSAgICAgIEFkZGluZyBhIDxsaXRl cmFsPlBSSU1BUlkgS0VZPC9saXRlcmFsPiBjb25zdHJhaW50IHdpbGwgYXV0b21hdGljYWxs eQotICAgICAgY3JlYXRlIGEgdW5pcXVlIGJ0cmVlIGluZGV4IG9uIHRoZSBjb2x1bW4gb3Ig Z3JvdXAgb2YgY29sdW1ucyB1c2VkIGluIHRoZQotICAgICAgY29uc3RyYWludC4KKyAgICAg IEFzIHdpdGggYSA8bGl0ZXJhbD5VTklRVUU8L2xpdGVyYWw+IGNvbnN0cmFpbnQsIGFkZGlu ZyBhCisgICAgICA8bGl0ZXJhbD5QUklNQVJZIEtFWTwvbGl0ZXJhbD4gY29uc3RyYWludCB3 aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEKKyAgICAgIHVuaXF1ZSBidHJlZSBpbmRleCwg b3IgR2lTVCBpZiA8bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiB3YXMKKyAg ICAgIHNwZWNpZmllZCwgb24gdGhlIGNvbHVtbiBvciBncm91cCBvZiBjb2x1bW5zIHVzZWQg aW4gdGhlIGNvbnN0cmFpbnQuCiAgICAgIDwvcGFyYT4KIAogICAgICA8cGFyYT4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9oZWFwLmMKaW5kZXggNzIyNGQ5NjY5NS4uNmI2NjA5ZTIzYSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFw LmMKQEAgLTIxNDAsNiArMjE0MCw3IEBAIFN0b3JlUmVsQ2hlY2soUmVsYXRpb24gcmVsLCBj b25zdCBjaGFyICpjY25hbWUsIE5vZGUgKmV4cHIsCiAJCQkJCQkJICBpc19sb2NhbCwgLyog Y29uaXNsb2NhbCAqLwogCQkJCQkJCSAgaW5oY291bnQsIC8qIGNvbmluaGNvdW50ICovCiAJ CQkJCQkJICBpc19ub19pbmhlcml0LAkvKiBjb25ub2luaGVyaXQgKi8KKwkJCQkJCQkgIGZh bHNlLAkvKiBjb253aXRob3V0b3ZlcmxhcHMgKi8KIAkJCQkJCQkgIGlzX2ludGVybmFsKTsg LyogaW50ZXJuYWxseSBjb25zdHJ1Y3RlZD8gKi8KIAogCXBmcmVlKGNjYmluKTsKQEAgLTIx OTAsNiArMjE5MSw3IEBAIFN0b3JlUmVsTm90TnVsbChSZWxhdGlvbiByZWwsIGNvbnN0IGNo YXIgKm5ubmFtZSwgQXR0ck51bWJlciBhdHRudW0sCiAJCQkJCQkJICBpc19sb2NhbCwKIAkJ CQkJCQkgIGluaGNvdW50LAogCQkJCQkJCSAgaXNfbm9faW5oZXJpdCwKKwkJCQkJCQkgIGZh bHNlLAkvKiBjb253aXRob3V0b3ZlcmxhcHMgKi8KIAkJCQkJCQkgIGZhbHNlKTsKIAlyZXR1 cm4gY29uc3RyT2lkOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDE0M2ZhZTAxZWIuLjg0 NDRkNzY4ZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTE4OTUsNiArMTg5NSw3IEBAIGlu ZGV4X2NvbmN1cnJlbnRseV9zZXRfZGVhZChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCkKICAq CQlJTkRFWF9DT05TVFJfQ1JFQVRFX1VQREFURV9JTkRFWDogdXBkYXRlIHRoZSBwZ19pbmRl eCByb3cKICAqCQlJTkRFWF9DT05TVFJfQ1JFQVRFX1JFTU9WRV9PTERfREVQUzogcmVtb3Zl IGV4aXN0aW5nIGRlcGVuZGVuY2llcwogICoJCQlvZiBpbmRleCBvbiB0YWJsZSdzIGNvbHVt bnMKKyAqCQlJTkRFWF9DT05TVFJfQ1JFQVRFX1dJVEhPVVRfT1ZFUkxBUFM6IGNvbnN0cmFp bnQgdXNlcyBXSVRIT1VUIE9WRVJMQVBTCiAgKiBhbGxvd19zeXN0ZW1fdGFibGVfbW9kczog YWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0gY2F0YWxvZwogICogaXNfaW50ZXJuYWw6IGlu ZGV4IGlzIGNvbnN0cnVjdGVkIGR1ZSB0byBpbnRlcm5hbCBwcm9jZXNzCiAgKi8KQEAgLTE5 MTgsMTEgKzE5MTksMTMgQEAgaW5kZXhfY29uc3RyYWludF9jcmVhdGUoUmVsYXRpb24gaGVh cFJlbGF0aW9uLAogCWJvb2wJCW1hcmtfYXNfcHJpbWFyeTsKIAlib29sCQlpc2xvY2FsOwog CWJvb2wJCW5vaW5oZXJpdDsKKwlib29sCQlpc193aXRob3V0X292ZXJsYXBzOwogCWludAkJ CWluaGNvdW50OwogCiAJZGVmZXJyYWJsZSA9IChjb25zdHJfZmxhZ3MgJiBJTkRFWF9DT05T VFJfQ1JFQVRFX0RFRkVSUkFCTEUpICE9IDA7CiAJaW5pdGRlZmVycmVkID0gKGNvbnN0cl9m bGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfSU5JVF9ERUZFUlJFRCkgIT0gMDsKIAltYXJr X2FzX3ByaW1hcnkgPSAoY29uc3RyX2ZsYWdzICYgSU5ERVhfQ09OU1RSX0NSRUFURV9NQVJL X0FTX1BSSU1BUlkpICE9IDA7CisJaXNfd2l0aG91dF9vdmVybGFwcyA9IChjb25zdHJfZmxh Z3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRFX1dJVEhPVVRfT1ZFUkxBUFMpICE9IDA7CiAKIAkv KiBjb25zdHJhaW50IGNyZWF0aW9uIHN1cHBvcnQgZG9lc24ndCB3b3JrIHdoaWxlIGJvb3Rz dHJhcHBpbmcgKi8KIAlBc3NlcnQoIUlzQm9vdHN0cmFwUHJvY2Vzc2luZ01vZGUoKSk7CkBA IC0xOTk5LDYgKzIwMDIsNyBAQCBpbmRleF9jb25zdHJhaW50X2NyZWF0ZShSZWxhdGlvbiBo ZWFwUmVsYXRpb24sCiAJCQkJCQkJCSAgIGlzbG9jYWwsCiAJCQkJCQkJCSAgIGluaGNvdW50 LAogCQkJCQkJCQkgICBub2luaGVyaXQsCisJCQkJCQkJCSAgIGlzX3dpdGhvdXRfb3Zlcmxh cHMsCiAJCQkJCQkJCSAgIGlzX2ludGVybmFsKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfY29uc3RyYWludC5jCmluZGV4IGU5ZDRkNjAwNmUuLmZmZDM0MGEyZTQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCkBAIC03OCw2ICs3OCw3IEBAIENyZWF0ZUNv bnN0cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAkJCQkJICBib29s IGNvbklzTG9jYWwsCiAJCQkJCSAgaW50IGNvbkluaENvdW50LAogCQkJCQkgIGJvb2wgY29u Tm9Jbmhlcml0LAorCQkJCQkgIGJvb2wgY29uV2l0aG91dE92ZXJsYXBzLAogCQkJCQkgIGJv b2wgaXNfaW50ZXJuYWwpCiB7CiAJUmVsYXRpb24JY29uRGVzYzsKQEAgLTE5Myw2ICsxOTQs NyBAQCBDcmVhdGVDb25zdHJhaW50RW50cnkoY29uc3QgY2hhciAqY29uc3RyYWludE5hbWUs CiAJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25pc2xvY2FsIC0gMV0gPSBCb29sR2V0 RGF0dW0oY29uSXNMb2NhbCk7CiAJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25pbmhj b3VudCAtIDFdID0gSW50MTZHZXREYXR1bShjb25JbmhDb3VudCk7CiAJdmFsdWVzW0FudW1f cGdfY29uc3RyYWludF9jb25ub2luaGVyaXQgLSAxXSA9IEJvb2xHZXREYXR1bShjb25Ob0lu aGVyaXQpOworCXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29ud2l0aG91dG92ZXJsYXBz IC0gMV0gPSBCb29sR2V0RGF0dW0oY29uV2l0aG91dE92ZXJsYXBzKTsKIAogCWlmIChjb25r ZXlBcnJheSkKIAkJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25rZXkgLSAxXSA9IFBv aW50ZXJHZXREYXR1bShjb25rZXlBcnJheSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j CmluZGV4IDBiM2I4ZTk4YjguLjEyOThkOTE3ZDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jCkBAIC03Myw2ICs3MywxMSBAQAogLyogbm9uLWV4cG9ydCBmdW5jdGlvbiBwcm90 b3R5cGVzICovCiBzdGF0aWMgYm9vbCBDb21wYXJlT3BjbGFzc09wdGlvbnMoY29uc3QgRGF0 dW0gKm9wdHMxLCBjb25zdCBEYXR1bSAqb3B0czIsIGludCBuYXR0cyk7CiBzdGF0aWMgdm9p ZCBDaGVja1ByZWRpY2F0ZShFeHByICpwcmVkaWNhdGUpOworc3RhdGljIHZvaWQgZ2V0X2lu ZGV4X2F0dHJfdGVtcG9yYWxfb3BlcmF0b3IoT2lkIG9wY2xhc3MsCisJCQkJCQkJCQkJCSBP aWQgYXR0dHlwZSwKKwkJCQkJCQkJCQkJIGJvb2wgaXNvdmVybGFwcywKKwkJCQkJCQkJCQkJ IE9pZCAqb3BpZCwKKwkJCQkJCQkJCQkJIGludCAqc3RyYXQpOwogc3RhdGljIHZvaWQgQ29t cHV0ZUluZGV4QXR0cnMoSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkJCQkJICBPaWQgKnR5 cGVPaWRzLAogCQkJCQkJCSAgT2lkICpjb2xsYXRpb25PaWRzLApAQCAtODYsNiArOTEsNyBA QCBzdGF0aWMgdm9pZCBDb21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywK IAkJCQkJCQkgIE9pZCBhY2Nlc3NNZXRob2RJZCwKIAkJCQkJCQkgIGJvb2wgYW1jYW5vcmRl ciwKIAkJCQkJCQkgIGJvb2wgaXNjb25zdHJhaW50LAorCQkJCQkJCSAgYm9vbCBpc3dpdGhv dXRvdmVybGFwcywKIAkJCQkJCQkgIE9pZCBkZGxfdXNlcmlkLAogCQkJCQkJCSAgaW50IGRk bF9zZWNfY29udGV4dCwKIAkJCQkJCQkgIGludCAqZGRsX3NhdmVfbmVzdGxldmVsKTsKQEAg LTE0Myw2ICsxNDksNyBAQCB0eXBlZGVmIHN0cnVjdCBSZWluZGV4RXJyb3JJbmZvCiAgKgkJ dG8gaW5kZXggb24uCiAgKiAnZXhjbHVzaW9uT3BOYW1lcyc6IGxpc3Qgb2YgbmFtZXMgb2Yg ZXhjbHVzaW9uLWNvbnN0cmFpbnQgb3BlcmF0b3JzLAogICoJCW9yIE5JTCBpZiBub3QgYW4g ZXhjbHVzaW9uIGNvbnN0cmFpbnQuCisgKiAnaXNXaXRob3V0T3ZlcmxhcHMnOiB0cnVlIGlm ZiB0aGlzIGluZGV4IGhhcyBhIFdJVEhPVVQgT1ZFUkxBUFMgY2xhdXNlLgogICoKICAqIFRo aXMgaXMgdGFpbG9yZWQgdG8gdGhlIG5lZWRzIG9mIEFMVEVSIFRBQkxFIEFMVEVSIFRZUEUs IHdoaWNoIHJlY3JlYXRlcwogICogYW55IGluZGV4ZXMgdGhhdCBkZXBlbmRlZCBvbiBhIGNo YW5naW5nIGNvbHVtbiBmcm9tIHRoZWlyIHBnX2dldF9pbmRleGRlZgpAQCAtMTcyLDcgKzE3 OSw4IEBAIGJvb2wKIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAkJCQkJIGNv bnN0IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsCiAJCQkJCSBjb25zdCBMaXN0ICphdHRyaWJ1 dGVMaXN0LAotCQkJCQkgY29uc3QgTGlzdCAqZXhjbHVzaW9uT3BOYW1lcykKKwkJCQkJIGNv bnN0IExpc3QgKmV4Y2x1c2lvbk9wTmFtZXMsCisJCQkJCSBib29sIGlzV2l0aG91dE92ZXJs YXBzKQogewogCWJvb2wJCWlzY29uc3RyYWludDsKIAlPaWQJCSAgICp0eXBlSWRzOwpAQCAt MjQ3LDggKzI1NSw4IEBAIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAkJCQkJ ICBjb2xvcHRpb25zLCBhdHRyaWJ1dGVMaXN0LAogCQkJCQkgIGV4Y2x1c2lvbk9wTmFtZXMs IHJlbGF0aW9uSWQsCiAJCQkJCSAgYWNjZXNzTWV0aG9kTmFtZSwgYWNjZXNzTWV0aG9kSWQs Ci0JCQkJCSAgYW1jYW5vcmRlciwgaXNjb25zdHJhaW50LCBJbnZhbGlkT2lkLCAwLCBOVUxM KTsKLQorCQkJCQkgIGFtY2Fub3JkZXIsIGlzY29uc3RyYWludCwgaXNXaXRob3V0T3Zlcmxh cHMsIEludmFsaWRPaWQsCisJCQkJCSAgMCwgTlVMTCk7CiAKIAkvKiBHZXQgdGhlIHNvb24t b2Jzb2xldGUgcGdfaW5kZXggdHVwbGUuICovCiAJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEo SU5ERVhSRUxJRCwgT2JqZWN0SWRHZXREYXR1bShvbGRJZCkpOwpAQCAtNTU4LDYgKzU2Niw3 IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCWJvb2wJCWFtY2Fub3JkZXI7CiAJYm9v bAkJYW1pc3N1bW1hcml6aW5nOwogCWFtb3B0aW9uc19mdW5jdGlvbiBhbW9wdGlvbnM7CisJ Ym9vbAkJZXhjbHVzaW9uOwogCWJvb2wJCXBhcnRpdGlvbmVkOwogCWJvb2wJCXNhZmVfaW5k ZXg7CiAJRGF0dW0JCXJlbG9wdGlvbnM7CkBAIC02NzYsNiArNjg1LDEyIEBAIERlZmluZUlu ZGV4KE9pZCB0YWJsZUlkLAogCiAJbmFtZXNwYWNlSWQgPSBSZWxhdGlvbkdldE5hbWVzcGFj ZShyZWwpOwogCisJLyoKKwkgKiBJdCBoYXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgYmVoYXZp b3IgaWYgaXQncyBhbiBFWENMVURFIGNvbnN0cmFpbnQKKwkgKiBvciBhIHRlbXBvcmFsIFBS SU1BUlkgS0VZL1VOSVFVRSBjb25zdHJhaW50CisJICovCisJZXhjbHVzaW9uID0gc3RtdC0+ ZXhjbHVkZU9wTmFtZXMgfHwgc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHM7CisKIAkvKiBFbnN1 cmUgdGhhdCBpdCBtYWtlcyBzZW5zZSB0byBpbmRleCB0aGlzIGtpbmQgb2YgcmVsYXRpb24g Ki8KIAlzd2l0Y2ggKHJlbC0+cmRfcmVsLT5yZWxraW5kKQogCXsKQEAgLTg0NCw3ICs4NTks NyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRl X3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9BQ0NFU1NfTUVUSE9EX09JRCwKIAkJCQkJCQkJ IGFjY2Vzc01ldGhvZElkKTsKIAotCWlmIChzdG10LT51bmlxdWUgJiYgIWFtUm91dGluZS0+ YW1jYW51bmlxdWUpCisJaWYgKHN0bXQtPnVuaXF1ZSAmJiAhc3RtdC0+aXN3aXRob3V0b3Zl cmxhcHMgJiYgIWFtUm91dGluZS0+YW1jYW51bmlxdWUpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJt c2coImFjY2VzcyBtZXRob2QgXCIlc1wiIGRvZXMgbm90IHN1cHBvcnQgdW5pcXVlIGluZGV4 ZXMiLApAQCAtODU5LDcgKzg3NCw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJ CShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNn KCJhY2Nlc3MgbWV0aG9kIFwiJXNcIiBkb2VzIG5vdCBzdXBwb3J0IG11bHRpY29sdW1uIGlu ZGV4ZXMiLAogCQkJCQkJYWNjZXNzTWV0aG9kTmFtZSkpKTsKLQlpZiAoc3RtdC0+ZXhjbHVk ZU9wTmFtZXMgJiYgYW1Sb3V0aW5lLT5hbWdldHR1cGxlID09IE5VTEwpCisJaWYgKGV4Y2x1 c2lvbiAmJiBhbVJvdXRpbmUtPmFtZ2V0dHVwbGUgPT0gTlVMTCkKIAkJZXJlcG9ydChFUlJP UiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJ IGVycm1zZygiYWNjZXNzIG1ldGhvZCBcIiVzXCIgZG9lcyBub3Qgc3VwcG9ydCBleGNsdXNp b24gY29uc3RyYWludHMiLApAQCAtOTEyLDggKzkyNyw5IEBAIERlZmluZUluZGV4KE9pZCB0 YWJsZUlkLAogCQkJCQkgIGNvbG9wdGlvbnMsIGFsbEluZGV4UGFyYW1zLAogCQkJCQkgIHN0 bXQtPmV4Y2x1ZGVPcE5hbWVzLCB0YWJsZUlkLAogCQkJCQkgIGFjY2Vzc01ldGhvZE5hbWUs IGFjY2Vzc01ldGhvZElkLAotCQkJCQkgIGFtY2Fub3JkZXIsIHN0bXQtPmlzY29uc3RyYWlu dCwgcm9vdF9zYXZlX3VzZXJpZCwKLQkJCQkJICByb290X3NhdmVfc2VjX2NvbnRleHQsICZy b290X3NhdmVfbmVzdGxldmVsKTsKKwkJCQkJICBhbWNhbm9yZGVyLCBzdG10LT5pc2NvbnN0 cmFpbnQsIHN0bXQtPmlzd2l0aG91dG92ZXJsYXBzLAorCQkJCQkgIHJvb3Rfc2F2ZV91c2Vy aWQsIHJvb3Rfc2F2ZV9zZWNfY29udGV4dCwKKwkJCQkJICAmcm9vdF9zYXZlX25lc3RsZXZl bCk7CiAKIAkvKgogCSAqIEV4dHJhIGNoZWNrcyB3aGVuIGNyZWF0aW5nIGEgUFJJTUFSWSBL RVkgaW5kZXguCkBAIC05MzEsNyArOTQ3LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQs CiAJICogV2UgY291bGQgbGlmdCB0aGlzIGxpbWl0YXRpb24gaWYgd2UgaGFkIGdsb2JhbCBp bmRleGVzLCBidXQgdGhvc2UgaGF2ZQogCSAqIHRoZWlyIG93biBwcm9ibGVtcywgc28gdGhp cyBpcyBhIHVzZWZ1bCBmZWF0dXJlIGNvbWJpbmF0aW9uLgogCSAqLwotCWlmIChwYXJ0aXRp b25lZCAmJiAoc3RtdC0+dW5pcXVlIHx8IHN0bXQtPmV4Y2x1ZGVPcE5hbWVzKSkKKwlpZiAo cGFydGl0aW9uZWQgJiYgKHN0bXQtPnVuaXF1ZSB8fCBleGNsdXNpb24pKQogCXsKIAkJUGFy dGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHJlbCk7CiAJCWNvbnN0 IGNoYXIgKmNvbnN0cmFpbnRfdHlwZTsKQEAgLTk4NSwxMCArMTAwMSwxMCBAQCBEZWZpbmVJ bmRleChPaWQgdGFibGVJZCwKIAkJCSAqIGFzc29jaWF0ZWQgd2l0aCBpbmRleCBjb2x1bW5z LCB0b28uICBXZSBrbm93IHdoYXQgdG8gZG8gd2l0aAogCQkJICogYnRyZWUgb3BjbGFzc2Vz OyBpZiB0aGVyZSBhcmUgZXZlciBhbnkgb3RoZXIgaW5kZXggdHlwZXMgdGhhdAogCQkJICog c3VwcG9ydCB1bmlxdWUgaW5kZXhlcywgdGhpcyBsb2dpYyB3aWxsIG5lZWQgZXh0ZW5zaW9u LiBCdXQgaWYKLQkJCSAqIHdlIGhhdmUgYW4gZXhjbHVzaW9uIGNvbnN0cmFpbnQsIGl0IGFs cmVhZHkga25vd3MgdGhlCi0JCQkgKiBvcGVyYXRvcnMsIHNvIHdlIGRvbid0IGhhdmUgdG8g aW5mZXIgdGhlbS4KKwkJCSAqIHdlIGhhdmUgYW4gZXhjbHVzaW9uIGNvbnN0cmFpbnQgKG9y IGEgdGVtcG9yYWwgUEspLCBpdCBhbHJlYWR5CisJCQkgKiBrbm93cyB0aGUgb3BlcmF0b3Jz LCBzbyB3ZSBkb24ndCBoYXZlIHRvIGluZmVyIHRoZW0uCiAJCQkgKi8KLQkJCWlmIChzdG10 LT51bmlxdWUgJiYgYWNjZXNzTWV0aG9kSWQgIT0gQlRSRUVfQU1fT0lEKQorCQkJaWYgKHN0 bXQtPnVuaXF1ZSAmJiAhc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMgJiYgYWNjZXNzTWV0aG9k SWQgIT0gQlRSRUVfQU1fT0lEKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCQkgZXJybXNnKCJjYW5u b3QgbWF0Y2ggcGFydGl0aW9uIGtleSB0byBhbiBpbmRleCB1c2luZyBhY2Nlc3MgbWV0aG9k IFwiJXNcIiIsCkBAIC0xMDIxLDEyICsxMDM3LDEyIEBAIERlZmluZUluZGV4KE9pZCB0YWJs ZUlkLAogCQkJCQl7CiAJCQkJCQlPaWQJCQlpZHhfZXFvcCA9IEludmFsaWRPaWQ7CiAKLQkJ CQkJCWlmIChzdG10LT51bmlxdWUpCisJCQkJCQlpZiAoc3RtdC0+dW5pcXVlICYmICFzdG10 LT5pc3dpdGhvdXRvdmVybGFwcykKIAkJCQkJCQlpZHhfZXFvcCA9IGdldF9vcGZhbWlseV9t ZW1iZXIoaWR4X29wZmFtaWx5LAogCQkJCQkJCQkJCQkJCQkgICBpZHhfb3BjaW50eXBlLAog CQkJCQkJCQkJCQkJCQkgICBpZHhfb3BjaW50eXBlLAogCQkJCQkJCQkJCQkJCQkgICBCVEVx dWFsU3RyYXRlZ3lOdW1iZXIpOwotCQkJCQkJZWxzZSBpZiAoc3RtdC0+ZXhjbHVkZU9wTmFt ZXMpCisJCQkJCQllbHNlIGlmIChleGNsdXNpb24pCiAJCQkJCQkJaWR4X2Vxb3AgPSBpbmRl eEluZm8tPmlpX0V4Y2x1c2lvbk9wc1tqXTsKIAkJCQkJCUFzc2VydChpZHhfZXFvcCk7CiAK QEAgLTEwMzUsNyArMTA1MSw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkJ CWZvdW5kID0gdHJ1ZTsKIAkJCQkJCQlicmVhazsKIAkJCQkJCX0KLQkJCQkJCWVsc2UgaWYg KHN0bXQtPmV4Y2x1ZGVPcE5hbWVzKQorCQkJCQkJZWxzZSBpZiAoZXhjbHVzaW9uKQogCQkJ CQkJewogCQkJCQkJCS8qCiAJCQkJCQkJICogV2UgZm91bmQgYSBtYXRjaCwgYnV0IGl0J3Mg bm90IGFuIGVxdWFsaXR5CkBAIC0xMTc5LDYgKzExOTUsOCBAQCBEZWZpbmVJbmRleChPaWQg dGFibGVJZCwKIAkJY29uc3RyX2ZsYWdzIHw9IElOREVYX0NPTlNUUl9DUkVBVEVfREVGRVJS QUJMRTsKIAlpZiAoc3RtdC0+aW5pdGRlZmVycmVkKQogCQljb25zdHJfZmxhZ3MgfD0gSU5E RVhfQ09OU1RSX0NSRUFURV9JTklUX0RFRkVSUkVEOworCWlmIChzdG10LT5pc3dpdGhvdXRv dmVybGFwcykKKwkJY29uc3RyX2ZsYWdzIHw9IElOREVYX0NPTlNUUl9DUkVBVEVfV0lUSE9V VF9PVkVSTEFQUzsKIAogCWluZGV4UmVsYXRpb25JZCA9CiAJCWluZGV4X2NyZWF0ZShyZWws IGluZGV4UmVsYXRpb25OYW1lLCBpbmRleFJlbGF0aW9uSWQsIHBhcmVudEluZGV4SWQsCkBA IC0xODIwLDYgKzE4MzgsOTcgQEAgQ2hlY2tQcmVkaWNhdGUoRXhwciAqcHJlZGljYXRlKQog CQkJCSBlcnJtc2coImZ1bmN0aW9ucyBpbiBpbmRleCBwcmVkaWNhdGUgbXVzdCBiZSBtYXJr ZWQgSU1NVVRBQkxFIikpKTsKIH0KIAorLyoKKyAqIGdldF9pbmRleF9hdHRyX3RlbXBvcmFs X29wZXJhdG9yCisgKgorICogRmluZHMgYW4gb3BlcmF0b3IgZm9yIGEgdGVtcG9yYWwgaW5k ZXggYXR0cmlidXRlLgorICogV2UgbmVlZCBhbiBlcXVhbGl0eSBvcGVyYXRvciBmb3Igbm9y bWFsIGtleXMKKyAqIGFuZCBhbiBvdmVybGFwcyBvcGVyYXRvciBmb3IgdGhlIHJhbmdlLgor ICogUmV0dXJucyB0aGUgb3BlcmF0b3Igb2lkIGFuZCBzdHJhdGVneSBpbiBvcGlkIGFuZCBz dHJhdCwKKyAqIHJlc3BlY3RpdmVseS4KKyAqLworc3RhdGljIHZvaWQKK2dldF9pbmRleF9h dHRyX3RlbXBvcmFsX29wZXJhdG9yKE9pZCBvcGNsYXNzLAorCQkJCQkJCQkgT2lkIGF0dHR5 cGUsCisJCQkJCQkJCSBib29sIGlzb3ZlcmxhcHMsCisJCQkJCQkJCSBPaWQgKm9waWQsCisJ CQkJCQkJCSBpbnQgKnN0cmF0KQoreworCU9pZCBvcGZhbWlseTsKKwlPaWQgb3BjaW50eXBl OworCWNvbnN0IGNoYXIgKm9wbmFtZTsKKworCSpvcGlkID0gSW52YWxpZE9pZDsKKworCWlm IChnZXRfb3BjbGFzc19vcGZhbWlseV9hbmRfaW5wdXRfdHlwZShvcGNsYXNzLAorCQkJCQkJ CQkJCQkmb3BmYW1pbHksCisJCQkJCQkJCQkJCSZvcGNpbnR5cGUpKQorCXsKKwkJaWYgKGlz b3ZlcmxhcHMpCisJCXsKKwkJCSpzdHJhdCA9IFJUT3ZlcmxhcFN0cmF0ZWd5TnVtYmVyOwor CQkJb3BuYW1lID0gIm92ZXJsYXBzIjsKKwkJCSpvcGlkID0gZ2V0X29wZmFtaWx5X21lbWJl cihvcGZhbWlseSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsICpzdHJhdCk7CisJCX0KKwkJZWxz ZQorCQl7CisJCQkqc3RyYXQgPSBSVEVxdWFsU3RyYXRlZ3lOdW1iZXI7CisJCQlvcG5hbWUg PSAiZXF1YWxpdHkiOworCQkJKm9waWQgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5 LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwgKnN0cmF0KTsKKworCQkJLyoKKwkJCSAqIEZvciB0 aGUgbm9uLW92ZXJsYXBzIGtleSBlbGVtZW50cywKKwkJCSAqIHRyeSBib3RoIFJURXF1YWxT dHJhdGVneU51bWJlciBhbmQgQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLgorCQkJICogSWYgeW91 J3JlIHVzaW5nIGJ0cmVlX2dpc3QgdGhlbiB5b3UnbGwgbmVlZCB0aGUgbGF0dGVyLgorCQkJ ICoKKwkJCSAqIFRPRE86IFRoaXMgaXMgc2NhcnkKKwkJCSAqIGJlY2F1c2Ugd2hhdCBpZiB0 aGVyZSBpcyBldmVyIGFuIFJUU29tZXRoaW5nU3RyYXRlZ3lOdW1iZXIKKwkJCSAqIHRoYXQg aGFwcGVucyB0byBlcXVhbCBCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsCisJCQkgKiBhbmQgd2Ug YWN0dWFsbHkgZmluZCBhbiBvcGlkIGFib3ZlLAorCQkJICogYnV0IG5vdCBvbmUgZm9yIGVx dWFsaXR5PworCQkJICoKKwkJCSAqIElmIHdlIHRyaWVkIHRoaXMgbG9va3VwIGluIHJldmVy c2Ugb3JkZXIgKEJURXF1YWwgZmlyc3QsIHRoZW4gUlRFcXVhbCksCisJCQkgKiB0aGF0IGNv aW5jaWRlbmNlIHdvdWxkIGhhcHBlbiwgYW5kIHdlJ2QgZ2V0IHdlaXJkIHJlc3VsdHMuCisJ CQkgKgorCQkJICogU28gSSBndWVzcyB3aGF0IHdlIG5lZWQgaXMgYSB3YXkgZm9yIGFuIG9w Y2xhc3MgdG8gdGVsbCB1cworCQkJICogd2hhdCBtZXRob2QncyBzdHJhdGVneSBudW1iZXJz IGl0IHVzZXMsCisJCQkgKiBvciBhdCBsZWFzdCB3aGF0IGlzIGl0cyBzdHJhdGVneSBudW1i ZXIgZm9yIGVxdWFsaXR5PworCQkJICovCisJCQlpZiAoIU9pZElzVmFsaWQoKm9waWQpKQor CQkJeworCQkJCSpzdHJhdCA9IEJURXF1YWxTdHJhdGVneU51bWJlcjsKKwkJCQkqb3BpZCA9 IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50eXBlLCAq c3RyYXQpOworCQkJfQorCQl9CisJfQorCisJaWYgKCFPaWRJc1ZhbGlkKCpvcGlkKSkKKwl7 CisJCUhlYXBUdXBsZQlvcGZ0dXBsZTsKKwkJRm9ybV9wZ19vcGZhbWlseSBvcGZmb3JtOwor CisJCS8qCisJCSAqIGF0dHJpYnV0ZS0+b3BjbGFzcyBtaWdodCBub3QgZXhwbGljaXRseSBu YW1lIHRoZSBvcGZhbWlseSwKKwkJICogc28gZmV0Y2ggdGhlIG5hbWUgb2YgdGhlIHNlbGVj dGVkIG9wZmFtaWx5IGZvciB1c2UgaW4gdGhlCisJCSAqIGVycm9yIG1lc3NhZ2UuCisJCSAq LworCQlvcGZ0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShPUEZBTUlMWU9JRCwKKwkJCQkJCQkJ ICAgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseSkpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFs aWQob3BmdHVwbGUpKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9y IG9wZmFtaWx5ICV1IiwKKwkJCQkgb3BmYW1pbHkpOworCQlvcGZmb3JtID0gKEZvcm1fcGdf b3BmYW1pbHkpIEdFVFNUUlVDVChvcGZ0dXBsZSk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coIm5v ICVzIG9wZXJhdG9yIGZvdW5kIGZvciBXSVRIT1VUIE9WRVJMQVBTIGNvbnN0cmFpbnQiLCBv cG5hbWUpLAorCQkJCSBlcnJkZXRhaWwoIlRoZXJlIG11c3QgYmUgYW4gJXMgb3BlcmF0b3Ig d2l0aGluIG9wZmFtaWx5IFwiJXNcIiBmb3IgdHlwZSBcIiVzXCIuIiwKKwkJCQkJCSAgIG9w bmFtZSwKKwkJCQkJCSAgIE5hbWVTdHIob3BmZm9ybS0+b3BmbmFtZSksCisJCQkJCQkgICBm b3JtYXRfdHlwZV9iZShhdHR0eXBlKSkpKTsKKwl9Cit9CisKIC8qCiAgKiBDb21wdXRlIHBl ci1pbmRleC1jb2x1bW4gaW5mb3JtYXRpb24sIGluY2x1ZGluZyBpbmRleGVkIGNvbHVtbiBu dW1iZXJzCiAgKiBvciBpbmRleCBleHByZXNzaW9ucywgb3BjbGFzc2VzIGFuZCB0aGVpciBv cHRpb25zLiBOb3RlLCBhbGwgb3V0cHV0IHZlY3RvcnMKQEAgLTE4NDMsNiArMTk1Miw3IEBA IENvbXB1dGVJbmRleEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAogCQkJCSAgT2lkIGFj Y2Vzc01ldGhvZElkLAogCQkJCSAgYm9vbCBhbWNhbm9yZGVyLAogCQkJCSAgYm9vbCBpc2Nv bnN0cmFpbnQsCisJCQkJICBib29sIGlzd2l0aG91dG92ZXJsYXBzLAogCQkJCSAgT2lkIGRk bF91c2VyaWQsCiAJCQkJICBpbnQgZGRsX3NlY19jb250ZXh0LAogCQkJCSAgaW50ICpkZGxf c2F2ZV9uZXN0bGV2ZWwpCkBAIC0xODY2LDYgKzE5NzYsMTQgQEAgQ29tcHV0ZUluZGV4QXR0 cnMoSW5kZXhJbmZvICppbmRleEluZm8sCiAJZWxzZQogCQluZXh0RXhjbE9wID0gTlVMTDsK IAorCS8qIGV4Y2x1c2lvbk9wTmFtZXMgY2FuIGJlIG5vbi1OSUwgaWYgd2UgYXJlIGNyZWF0 aW5nIGEgcGFydGl0aW9uICovCisJaWYgKGlzd2l0aG91dG92ZXJsYXBzICYmIGV4Y2x1c2lv bk9wTmFtZXMgPT0gTklMKQorCXsKKwkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25PcHMgPSBw YWxsb2NfYXJyYXkoT2lkLCBua2V5Y29scyk7CisJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9u UHJvY3MgPSBwYWxsb2NfYXJyYXkoT2lkLCBua2V5Y29scyk7CisJCWluZGV4SW5mby0+aWlf RXhjbHVzaW9uU3RyYXRzID0gcGFsbG9jX2FycmF5KHVpbnQxNiwgbmtleWNvbHMpOworCX0K KwogCWlmIChPaWRJc1ZhbGlkKGRkbF91c2VyaWQpKQogCQlHZXRVc2VySWRBbmRTZWNDb250 ZXh0KCZzYXZlX3VzZXJpZCwgJnNhdmVfc2VjX2NvbnRleHQpOwogCkBAIC0yMTQyLDYgKzIy NjAsMTkgQEAgQ29tcHV0ZUluZGV4QXR0cnMoSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQlp bmRleEluZm8tPmlpX0V4Y2x1c2lvblN0cmF0c1thdHRuXSA9IHN0cmF0OwogCQkJbmV4dEV4 Y2xPcCA9IGxuZXh0KGV4Y2x1c2lvbk9wTmFtZXMsIG5leHRFeGNsT3ApOwogCQl9CisJCWVs c2UgaWYgKGlzd2l0aG91dG92ZXJsYXBzKQorCQl7CisJCQlpbnQgc3RyYXQ7CisJCQlPaWQg b3BpZDsKKwkJCWdldF9pbmRleF9hdHRyX3RlbXBvcmFsX29wZXJhdG9yKG9wY2xhc3NPaWRz W2F0dG5dLAorCQkJCQkJCQkJCQkgYXR0dHlwZSwKKwkJCQkJCQkJCQkJIGF0dG4gPT0gbmtl eWNvbHMgLSAxLAorCQkJCQkJCQkJCQkgJm9waWQsCisJCQkJCQkJCQkJCSAmc3RyYXQpOwor CQkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25PcHNbYXR0bl0gPSBvcGlkOworCQkJaW5kZXhJ bmZvLT5paV9FeGNsdXNpb25Qcm9jc1thdHRuXSA9IGdldF9vcGNvZGUob3BpZCk7CisJCQlp bmRleEluZm8tPmlpX0V4Y2x1c2lvblN0cmF0c1thdHRuXSA9IHN0cmF0OworCQl9CiAKIAkJ LyoKIAkJICogU2V0IHVwIHRoZSBwZXItY29sdW1uIG9wdGlvbnMgKGluZG9wdGlvbiBmaWVs ZCkuICBGb3Igbm93LCB0aGlzIGlzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4 IDMyM2Q5YmY4NzAuLmJiZjRkNmYxMjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CkBAIC0xMDA5Myw2ICsxMDA5Myw3IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQoTGlzdCAq KndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJ CQkJCQkgIGNvbmlzbG9jYWwsCS8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJCSAgY29uaW5oY291 bnQsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJCQkgIGNvbm5vaW5oZXJpdCwgLyogY29uTm9J bmhlcml0ICovCisJCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25XaXRob3V0T3ZlcmxhcHMgKi8K IAkJCQkJCQkJCSAgZmFsc2UpOwkvKiBpc19pbnRlcm5hbCAqLwogCiAJT2JqZWN0QWRkcmVz c1NldChhZGRyZXNzLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY29uc3RyT2lkKTsKQEAgLTEw MzkxLDYgKzEwMzkyLDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1 ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkg IGZhbHNlLAogCQkJCQkJCQkJICAxLAogCQkJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJCSAg ZmFsc2UsCS8qIGNvbldpdGhvdXRPdmVybGFwcyAqLwogCQkJCQkJCQkJICBmYWxzZSk7CiAK IAkJCS8qCkBAIC0xMDg5Niw2ICsxMDg5OCw3IEBAIENsb25lRmtSZWZlcmVuY2luZyhMaXN0 ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBhcnRSZWwpCiAJCQkJ CQkJCSAgZmFsc2UsCS8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJICAxLAkvKiBpbmhjb3VudCAq LwogCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25Ob0luaGVyaXQgKi8KKwkJCQkJCQkJICBmYWxz ZSwJLyogY29uV2l0aG91dE92ZXJsYXBzICovCiAJCQkJCQkJCSAgdHJ1ZSk7CiAKIAkJLyog U2V0IHVwIHBhcnRpdGlvbiBkZXBlbmRlbmNpZXMgZm9yIHRoZSBuZXcgY29uc3RyYWludCAq LwpAQCAtMTQyODQsNyArMTQyODcsOCBAQCBUcnlSZXVzZUluZGV4KE9pZCBvbGRJZCwgSW5k ZXhTdG10ICpzdG10KQogCWlmIChDaGVja0luZGV4Q29tcGF0aWJsZShvbGRJZCwKIAkJCQkJ CQkgc3RtdC0+YWNjZXNzTWV0aG9kLAogCQkJCQkJCSBzdG10LT5pbmRleFBhcmFtcywKLQkJ CQkJCQkgc3RtdC0+ZXhjbHVkZU9wTmFtZXMpKQorCQkJCQkJCSBzdG10LT5leGNsdWRlT3BO YW1lcywKKwkJCQkJCQkgc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMpKQogCXsKIAkJUmVsYXRp b24JaXJlbCA9IGluZGV4X29wZW4ob2xkSWQsIE5vTG9jayk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Ry aWdnZXIuYwppbmRleCA1MjE3Nzc1OWFiLi5hMTBhNDJiOTdmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dHJpZ2dlci5jCkBAIC04NDEsNiArODQxLDcgQEAgQ3JlYXRlVHJpZ2dlckZpcmluZ09uKENy ZWF0ZVRyaWdTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCQkJ CQkJICB0cnVlLCAvKiBpc2xvY2FsICovCiAJCQkJCQkJCQkJCSAgMCwJLyogaW5oY291bnQg Ki8KIAkJCQkJCQkJCQkJICB0cnVlLCAvKiBub2luaGVyaXQgKi8KKwkJCQkJCQkJCQkJICBm YWxzZSwgLyogY29ud2l0aG91dG92ZXJsYXBzICovCiAJCQkJCQkJCQkJCSAgaXNJbnRlcm5h bCk7CS8qIGlzX2ludGVybmFsICovCiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy90eXBlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwpp bmRleCBhYWY5NzI4Njk3Li4yNDcwMDE5ODE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy90eXBlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRz LmMKQEAgLTM1NDQsNiArMzU0NCw3IEBAIGRvbWFpbkFkZENvbnN0cmFpbnQoT2lkIGRvbWFp bk9pZCwgT2lkIGRvbWFpbk5hbWVzcGFjZSwgT2lkIGJhc2VUeXBlT2lkLAogCQkJCQkJCSAg dHJ1ZSwgLyogaXMgbG9jYWwgKi8KIAkJCQkJCQkgIDAsCS8qIGluaGNvdW50ICovCiAJCQkJ CQkJICBmYWxzZSwJLyogY29ubm9pbmhlcml0ICovCisJCQkJCQkJICBmYWxzZSwJLyogY29u d2l0aG91dG92ZXJsYXBzICovCiAJCQkJCQkJICBmYWxzZSk7CS8qIGlzX2ludGVybmFsICov CiAJaWYgKGNvbnN0ckFkZHIpCiAJCU9iamVjdEFkZHJlc3NTZXQoKmNvbnN0ckFkZHIsIENv bnN0cmFpbnRSZWxhdGlvbklkLCBjY29pZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCBl NjZhOTkyNDdlLi5mNTJhZTNmYzk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9v dXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTc1Niw2 ICs3NTYsNyBAQCBfb3V0Q29uc3RyYWludChTdHJpbmdJbmZvIHN0ciwgY29uc3QgQ29uc3Ry YWludCAqbm9kZSkKIAkJY2FzZSBDT05TVFJfUFJJTUFSWToKIAkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoc3RyLCAiUFJJTUFSWV9LRVkiKTsKIAkJCVdSSVRFX05PREVfRklFTEQoa2V5 cyk7CisJCQlXUklURV9CT09MX0ZJRUxEKHdpdGhvdXRfb3ZlcmxhcHMpOwogCQkJV1JJVEVf Tk9ERV9GSUVMRChpbmNsdWRpbmcpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChvcHRpb25zKTsK IAkJCVdSSVRFX1NUUklOR19GSUVMRChpbmRleG5hbWUpOwpAQCAtNzY4LDYgKzc2OSw3IEBA IF9vdXRDb25zdHJhaW50KFN0cmluZ0luZm8gc3RyLCBjb25zdCBDb25zdHJhaW50ICpub2Rl KQogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhzdHIsICJVTklRVUUiKTsKIAkJCVdSSVRF X0JPT0xfRklFTEQobnVsbHNfbm90X2Rpc3RpbmN0KTsKIAkJCVdSSVRFX05PREVfRklFTEQo a2V5cyk7CisJCQlXUklURV9CT09MX0ZJRUxEKHdpdGhvdXRfb3ZlcmxhcHMpOwogCQkJV1JJ VEVfTk9ERV9GSUVMRChpbmNsdWRpbmcpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChvcHRpb25z KTsKIAkJCVdSSVRFX1NUUklOR19GSUVMRChpbmRleG5hbWUpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVu Y3MuYwppbmRleCBjYzIwMjFjMWY3Li5iNmVmMzBjZTBkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVu Y3MuYwpAQCAtNDI3LDYgKzQyNyw3IEBAIF9yZWFkQ29uc3RyYWludCh2b2lkKQogCiAJCWNh c2UgQ09OU1RSX1BSSU1BUlk6CiAJCQlSRUFEX05PREVfRklFTEQoa2V5cyk7CisJCQlSRUFE X0JPT0xfRklFTEQod2l0aG91dF9vdmVybGFwcyk7CiAJCQlSRUFEX05PREVfRklFTEQoaW5j bHVkaW5nKTsKIAkJCVJFQURfTk9ERV9GSUVMRChvcHRpb25zKTsKIAkJCVJFQURfU1RSSU5H X0ZJRUxEKGluZGV4bmFtZSk7CkBAIC00MzgsNiArNDM5LDcgQEAgX3JlYWRDb25zdHJhaW50 KHZvaWQpCiAJCWNhc2UgQ09OU1RSX1VOSVFVRToKIAkJCVJFQURfQk9PTF9GSUVMRChudWxs c19ub3RfZGlzdGluY3QpOwogCQkJUkVBRF9OT0RFX0ZJRUxEKGtleXMpOworCQkJUkVBRF9C T09MX0ZJRUxEKHdpdGhvdXRfb3ZlcmxhcHMpOwogCQkJUkVBRF9OT0RFX0ZJRUxEKGluY2x1 ZGluZyk7CiAJCQlSRUFEX05PREVfRklFTEQob3B0aW9ucyk7CiAJCQlSRUFEX1NUUklOR19G SUVMRChpbmRleG5hbWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggYzIyNGRmNGVjYy4uZmY0YWRk NjIyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIE5vZGUg Km1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMs IE5vZGUgKnF1ZXJ5KTsKIAkJCQljb2x1bW5yZWYgaW5fZXhwciBoYXZpbmdfY2xhdXNlIGZ1 bmNfdGFibGUgeG1sdGFibGUgYXJyYXlfZXhwcgogCQkJCU9wdFdoZXJlQ2xhdXNlIG9wZXJh dG9yX2RlZl9hcmcKICV0eXBlIDxsaXN0Pglyb3dzZnJvbV9pdGVtIHJvd3Nmcm9tX2xpc3Qg b3B0X2NvbF9kZWZfbGlzdAotJXR5cGUgPGJvb2xlYW4+IG9wdF9vcmRpbmFsaXR5CisldHlw ZSA8Ym9vbGVhbj4gb3B0X29yZGluYWxpdHkgb3B0X3dpdGhvdXRfb3ZlcmxhcHMKICV0eXBl IDxsaXN0PglFeGNsdXNpb25Db25zdHJhaW50TGlzdCBFeGNsdXNpb25Db25zdHJhaW50RWxl bQogJXR5cGUgPGxpc3Q+CWZ1bmNfYXJnX2xpc3QgZnVuY19hcmdfbGlzdF9vcHQKICV0eXBl IDxub2RlPglmdW5jX2FyZ19leHByCkBAIC00MTA0LDcgKzQxMDQsNyBAQCBDb25zdHJhaW50 RWxlbToKIAkJCQkJbi0+aW5pdGlhbGx5X3ZhbGlkID0gdHJ1ZTsKIAkJCQkJJCQgPSAoTm9k ZSAqKSBuOwogCQkJCX0KLQkJCXwgVU5JUVVFIG9wdF91bmlxdWVfbnVsbF90cmVhdG1lbnQg JygnIGNvbHVtbkxpc3QgJyknIG9wdF9jX2luY2x1ZGUgb3B0X2RlZmluaXRpb24gT3B0Q29u c1RhYmxlU3BhY2UKKwkJCXwgVU5JUVVFIG9wdF91bmlxdWVfbnVsbF90cmVhdG1lbnQgJygn IGNvbHVtbkxpc3Qgb3B0X3dpdGhvdXRfb3ZlcmxhcHMgJyknIG9wdF9jX2luY2x1ZGUgb3B0 X2RlZmluaXRpb24gT3B0Q29uc1RhYmxlU3BhY2UKIAkJCQlDb25zdHJhaW50QXR0cmlidXRl U3BlYwogCQkJCXsKIAkJCQkJQ29uc3RyYWludCAqbiA9IG1ha2VOb2RlKENvbnN0cmFpbnQp OwpAQCAtNDExMywxMSArNDExMywxMiBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+bG9j YXRpb24gPSBAMTsKIAkJCQkJbi0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gISQyOwogCQkJCQlu LT5rZXlzID0gJDQ7Ci0JCQkJCW4tPmluY2x1ZGluZyA9ICQ2OwotCQkJCQluLT5vcHRpb25z ID0gJDc7CisJCQkJCW4tPndpdGhvdXRfb3ZlcmxhcHMgPSAkNTsKKwkJCQkJbi0+aW5jbHVk aW5nID0gJDc7CisJCQkJCW4tPm9wdGlvbnMgPSAkODsKIAkJCQkJbi0+aW5kZXhuYW1lID0g TlVMTDsKLQkJCQkJbi0+aW5kZXhzcGFjZSA9ICQ4OwotCQkJCQlwcm9jZXNzQ0FTYml0cygk OSwgQDksICJVTklRVUUiLAorCQkJCQluLT5pbmRleHNwYWNlID0gJDk7CisJCQkJCXByb2Nl c3NDQVNiaXRzKCQxMCwgQDEwLCAiVU5JUVVFIiwKIAkJCQkJCQkJICAgJm4tPmRlZmVycmFi bGUsICZuLT5pbml0ZGVmZXJyZWQsIE5VTEwsCiAJCQkJCQkJCSAgIE5VTEwsIHl5c2Nhbm5l cik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTQxMzgsNyArNDEzOSw3IEBAIENvbnN0 cmFpbnRFbGVtOgogCQkJCQkJCQkgICBOVUxMLCB5eXNjYW5uZXIpOwogCQkJCQkkJCA9IChO b2RlICopIG47CiAJCQkJfQotCQkJfCBQUklNQVJZIEtFWSAnKCcgY29sdW1uTGlzdCAnKScg b3B0X2NfaW5jbHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZQorCQkJfCBQ UklNQVJZIEtFWSAnKCcgY29sdW1uTGlzdCBvcHRfd2l0aG91dF9vdmVybGFwcyAnKScgb3B0 X2NfaW5jbHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZQogCQkJCUNvbnN0 cmFpbnRBdHRyaWJ1dGVTcGVjCiAJCQkJewogCQkJCQlDb25zdHJhaW50ICpuID0gbWFrZU5v ZGUoQ29uc3RyYWludCk7CkBAIC00MTQ2LDExICs0MTQ3LDEyIEBAIENvbnN0cmFpbnRFbGVt OgogCQkJCQluLT5jb250eXBlID0gQ09OU1RSX1BSSU1BUlk7CiAJCQkJCW4tPmxvY2F0aW9u ID0gQDE7CiAJCQkJCW4tPmtleXMgPSAkNDsKLQkJCQkJbi0+aW5jbHVkaW5nID0gJDY7Ci0J CQkJCW4tPm9wdGlvbnMgPSAkNzsKKwkJCQkJbi0+d2l0aG91dF9vdmVybGFwcyA9ICQ1Owor CQkJCQluLT5pbmNsdWRpbmcgPSAkNzsKKwkJCQkJbi0+b3B0aW9ucyA9ICQ4OwogCQkJCQlu LT5pbmRleG5hbWUgPSBOVUxMOwotCQkJCQluLT5pbmRleHNwYWNlID0gJDg7Ci0JCQkJCXBy b2Nlc3NDQVNiaXRzKCQ5LCBAOSwgIlBSSU1BUlkgS0VZIiwKKwkJCQkJbi0+aW5kZXhzcGFj ZSA9ICQ5OworCQkJCQlwcm9jZXNzQ0FTYml0cygkMTAsIEAxMCwgIlBSSU1BUlkgS0VZIiwK IAkJCQkJCQkJICAgJm4tPmRlZmVycmFibGUsICZuLT5pbml0ZGVmZXJyZWQsIE5VTEwsCiAJ CQkJCQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAg LTQyMTgsNiArNDIyMCwxMSBAQCBvcHRfbm9faW5oZXJpdDoJTk8gSU5IRVJJVAkJCQkJCQl7 ICAkJCA9IHRydWU7IH0KIAkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyAgJCQgPSBmYWxzZTsg fQogCQk7CiAKK29wdF93aXRob3V0X292ZXJsYXBzOgorCQkJV0lUSE9VVCBPVkVSTEFQUwkJ CQkJCXsgJCQgPSB0cnVlOyB9CisJCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IGZhbHNl OyB9CisJOworCiBvcHRfY29sdW1uX2xpc3Q6CiAJCQknKCcgY29sdW1uTGlzdCAnKScJCQkJ CQl7ICQkID0gJDI7IH0KIAkJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gTklMOyB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCBjZjBkNDMyYWIxLi42MDMwYmE5 MGNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTE3MTYsNiArMTcx Niw3IEBAIGdlbmVyYXRlQ2xvbmVkSW5kZXhTdG10KFJhbmdlVmFyICpoZWFwUmVsLCBSZWxh dGlvbiBzb3VyY2VfaWR4LAogCWluZGV4LT51bmlxdWUgPSBpZHhyZWMtPmluZGlzdW5pcXVl OwogCWluZGV4LT5udWxsc19ub3RfZGlzdGluY3QgPSBpZHhyZWMtPmluZG51bGxzbm90ZGlz dGluY3Q7CiAJaW5kZXgtPnByaW1hcnkgPSBpZHhyZWMtPmluZGlzcHJpbWFyeTsKKwlpbmRl eC0+aXN3aXRob3V0b3ZlcmxhcHMgPSAoaWR4cmVjLT5pbmRpc3ByaW1hcnkgfHwgaWR4cmVj LT5pbmRpc3VuaXF1ZSkgJiYgaWR4cmVjLT5pbmRpc2V4Y2x1c2lvbjsKIAlpbmRleC0+dHJh bnNmb3JtZWQgPSB0cnVlOwkvKiBkb24ndCBuZWVkIHRyYW5zZm9ybUluZGV4U3RtdCAqLwog CWluZGV4LT5jb25jdXJyZW50ID0gZmFsc2U7CiAJaW5kZXgtPmlmX25vdF9leGlzdHMgPSBm YWxzZTsKQEAgLTE3NjUsNyArMTc2Niw5IEBAIGdlbmVyYXRlQ2xvbmVkSW5kZXhTdG10KFJh bmdlVmFyICpoZWFwUmVsLCBSZWxhdGlvbiBzb3VyY2VfaWR4LAogCQkJCWludAkJCW5FbGVt czsKIAkJCQlpbnQJCQlpOwogCi0JCQkJQXNzZXJ0KGNvbnJlYy0+Y29udHlwZSA9PSBDT05T VFJBSU5UX0VYQ0xVU0lPTik7CisJCQkJQXNzZXJ0KGNvbnJlYy0+Y29udHlwZSA9PSBDT05T VFJBSU5UX0VYQ0xVU0lPTiB8fAorCQkJCQkJKGluZGV4LT5pc3dpdGhvdXRvdmVybGFwcyAm JgorCQkJCQkJIChjb25yZWMtPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9QUklNQVJZIHx8IGNv bnJlYy0+Y29udHlwZSA9PSBDT05TVFJBSU5UX1VOSVFVRSkpKTsKIAkJCQkvKiBFeHRyYWN0 IG9wZXJhdG9yIE9JRHMgZnJvbSB0aGUgcGdfY29uc3RyYWludCB0dXBsZSAqLwogCQkJCWRh dHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIGh0X2NvbnN0ciwKIAkJ CQkJCQkJCQkJICAgQW51bV9wZ19jb25zdHJhaW50X2NvbmV4Y2xvcCk7CkBAIC0yMzA1LDYg KzIzMDgsNyBAQCB0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3Ry YWludCwgQ3JlYXRlU3RtdENvbnRleHQgKmN4dCkKIAl9CiAJaW5kZXgtPm51bGxzX25vdF9k aXN0aW5jdCA9IGNvbnN0cmFpbnQtPm51bGxzX25vdF9kaXN0aW5jdDsKIAlpbmRleC0+aXNj b25zdHJhaW50ID0gdHJ1ZTsKKwlpbmRleC0+aXN3aXRob3V0b3ZlcmxhcHMgPSBjb25zdHJh aW50LT53aXRob3V0X292ZXJsYXBzOwogCWluZGV4LT5kZWZlcnJhYmxlID0gY29uc3RyYWlu dC0+ZGVmZXJyYWJsZTsKIAlpbmRleC0+aW5pdGRlZmVycmVkID0gY29uc3RyYWludC0+aW5p dGRlZmVycmVkOwogCkBAIC0yMzk3LDYgKzI0MDEsMTEgQEAgdHJhbnNmb3JtSW5kZXhDb25z dHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsIENyZWF0ZVN0bXRDb250ZXh0ICpjeHQp CiAJCQkJCSBlcnJtc2coImluZGV4IFwiJXNcIiBpcyBub3QgdmFsaWQiLCBpbmRleF9uYW1l KSwKIAkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgY29uc3RyYWludC0+ bG9jYXRpb24pKSk7CiAKKwkJLyoKKwkJICogVG9kYXkgd2UgZm9yYmlkIG5vbi11bmlxdWUg aW5kZXhlcywgYnV0IHdlIGNvdWxkIHBlcm1pdCBHaVNUCisJCSAqIGluZGV4ZXMgd2hvc2Ug bGFzdCBlbnRyeSBpcyBhIHJhbmdlIHR5cGUgYW5kIHVzZSB0aGF0IHRvIGNyZWF0ZSBhCisJ CSAqIFdJVEhPVVQgT1ZFUkxBUFMgY29uc3RyYWludCAoaS5lLiBhIHRlbXBvcmFsIGNvbnN0 cmFpbnQpLgorCQkgKi8KIAkJaWYgKCFpbmRleF9mb3JtLT5pbmRpc3VuaXF1ZSkKIAkJCWVy ZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUp LApAQCAtMjY1Miw2ICsyNjYxLDQ1IEBAIHRyYW5zZm9ybUluZGV4Q29uc3RyYWludChDb25z dHJhaW50ICpjb25zdHJhaW50LCBDcmVhdGVTdG10Q29udGV4dCAqY3h0KQogCQkJCX0KIAkJ CX0KIAorCQkJLyogSWYgaXQncyBXSVRIT1VUIE9WRVJMQVBTLCBpdCBtdXN0IGJlIGEgcmFu Z2UgdHlwZSAqLworCQkJaWYgKGNvbnN0cmFpbnQtPndpdGhvdXRfb3ZlcmxhcHMgJiYgbGMg PT0gbGlzdF9sYXN0X2NlbGwoY29uc3RyYWludC0+a2V5cykpCisJCQl7CisJCQkJT2lkCXR5 cGlkID0gSW52YWxpZE9pZDsKKworCQkJCWlmICghZm91bmQgJiYgY3h0LT5pc2FsdGVyKQor CQkJCXsKKwkJCQkJLyoKKwkJCQkJICogTG9vayB1cCBjb2x1bW4gdHlwZSBvbiBleGlzdGlu ZyB0YWJsZS4KKwkJCQkJICogSWYgd2UgY2FuJ3QgZmluZCBpdCwgbGV0IHRoaW5ncyBmYWls IGluIERlZmluZUluZGV4LgorCQkJCQkgKi8KKwkJCQkJUmVsYXRpb24gcmVsID0gY3h0LT5y ZWw7CisJCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgcmVsLT5yZF9hdHQtPm5hdHRzOyBpKysp CisJCQkJCXsKKwkJCQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHIgPSBUdXBsZURlc2NBdHRy KHJlbC0+cmRfYXR0LCBpKTsKKwkJCQkJCWNvbnN0IGNoYXIgKmF0dG5hbWU7CisKKwkJCQkJ CWlmIChhdHRyLT5hdHRpc2Ryb3BwZWQpCisJCQkJCQkJYnJlYWs7CisKKwkJCQkJCWF0dG5h bWUgPSBOYW1lU3RyKGF0dHItPmF0dG5hbWUpOworCQkJCQkJaWYgKHN0cmNtcChhdHRuYW1l LCBrZXkpID09IDApCisJCQkJCQl7CisJCQkJCQkJdHlwaWQgPSBhdHRyLT5hdHR0eXBpZDsK KwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCQllbHNlCisJCQkJ CXR5cGlkID0gdHlwZW5hbWVUeXBlSWQoTlVMTCwgY29sdW1uLT50eXBlTmFtZSk7CisKKwkJ CQlpZiAoT2lkSXNWYWxpZCh0eXBpZCkgJiYgIXR5cGVfaXNfcmFuZ2UodHlwaWQpKQorCQkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlT TUFUQ0gpLAorCQkJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgaW4gV0lUSE9VVCBPVkVS TEFQUyBpcyBub3QgYSByYW5nZSB0eXBlIiwKKwkJCQkJCQkJCWtleSksCisJCQkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgY29uc3RyYWludC0+bG9jYXRpb24pKSk7 CisJCQl9CisKIAkJCS8qIE9LLCBhZGQgaXQgdG8gdGhlIGluZGV4IGRlZmluaXRpb24gKi8K IAkJCWlwYXJhbSA9IG1ha2VOb2RlKEluZGV4RWxlbSk7CiAJCQlpcGFyYW0tPm5hbWUgPSBw c3RyZHVwKGtleSk7CkBAIC0yNjczLDYgKzI3MjEsMjMgQEAgdHJhbnNmb3JtSW5kZXhDb25z dHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsIENyZWF0ZVN0bXRDb250ZXh0ICpjeHQp CiAJCQkJbm90bnVsbGNtZHMgPSBsYXBwZW5kKG5vdG51bGxjbWRzLCBub3RudWxsY21kKTsK IAkJCX0KIAkJfQorCisJCWlmIChjb25zdHJhaW50LT53aXRob3V0X292ZXJsYXBzKQorCQl7 CisJCQkvKgorCQkJICogVGhpcyBlbmZvcmNlcyB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9u ZSBlcXVhbGl0eSBjb2x1bW4gYmVzaWRlcworCQkJICogdGhlIFdJVEhPVVQgT1ZFUkxBUFMg Y29sdW1ucy4gIFRoaXMgaXMgcGVyIFNRTCBzdGFuZGFyZC4gIFhYWAorCQkJICogRG8gd2Ug bmVlZCB0aGlzPworCQkJICovCisJCQlpZiAobGlzdF9sZW5ndGgoY29uc3RyYWludC0+a2V5 cykgPCAyKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygiY29uc3RyYWludCB1c2luZyBXSVRIT1VUIE9W RVJMQVBTIG5lZWRzIGF0IGxlYXN0IHR3byBjb2x1bW5zIikpOworCisJCQkvKiBXSVRIT1VU IE9WRVJMQVBTIHJlcXVpcmVzIGEgR2lTVCBpbmRleCAqLworCQkJaW5kZXgtPmFjY2Vzc01l dGhvZCA9ICJnaXN0IjsKKwkJfQorCiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYwppbmRleCBlZDdmNDBmMDUzLi4yNWFjMGFkMWJjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jCkBAIC0zMzksNyArMzM5LDcgQEAgc3RhdGljIGNoYXIgKnBnX2dl dF92aWV3ZGVmX3dvcmtlcihPaWQgdmlld29pZCwKIAkJCQkJCQkJICAgaW50IHByZXR0eUZs YWdzLCBpbnQgd3JhcENvbHVtbik7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X3RyaWdnZXJkZWZf d29ya2VyKE9pZCB0cmlnaWQsIGJvb2wgcHJldHR5KTsKIHN0YXRpYyBpbnQJZGVjb21waWxl X2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJ ZCwKLQkJCQkJCQkJCQkgU3RyaW5nSW5mbyBidWYpOworCQkJCQkJCQkJCSBib29sIHdpdGhv dXRPdmVybGFwcywgU3RyaW5nSW5mbyBidWYpOwogc3RhdGljIGNoYXIgKnBnX2dldF9ydWxl ZGVmX3dvcmtlcihPaWQgcnVsZW9pZCwgaW50IHByZXR0eUZsYWdzKTsKIHN0YXRpYyBjaGFy ICpwZ19nZXRfaW5kZXhkZWZfd29ya2VyKE9pZCBpbmRleHJlbGlkLCBpbnQgY29sbm8sCiAJ CQkJCQkJCQljb25zdCBPaWQgKmV4Y2x1ZGVPcHMsCkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBw Z19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxs Q29tbWFuZCwKIAkJCQl2YWwgPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwg dHVwLAogCQkJCQkJCQkJCQkgQW51bV9wZ19jb25zdHJhaW50X2NvbmtleSk7CiAKLQkJCQlk ZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsICZi dWYpOworCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5j b25yZWxpZCwgZmFsc2UsICZidWYpOwogCiAJCQkJLyogYWRkIGZvcmVpZ24gcmVsYXRpb24g bmFtZSAqLwogCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIikgUkVGRVJFTkNFUyAlcygi LApAQCAtMjI1OCw3ICsyMjU4LDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9p ZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJdmFsID0gU3lzQ2FjaGVH ZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIHR1cCwKIAkJCQkJCQkJCQkJIEFudW1fcGdfY29u c3RyYWludF9jb25ma2V5KTsKIAotCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXko dmFsLCBjb25Gb3JtLT5jb25mcmVsaWQsICZidWYpOworCQkJCWRlY29tcGlsZV9jb2x1bW5f aW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVsaWQsIGZhbHNlLCAmYnVmKTsKIAog CQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAKQEAgLTIzNDQsNyArMjM0 NCw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBi b29sIGZ1bGxDb21tYW5kLAogCQkJCWlmICghaXNudWxsKQogCQkJCXsKIAkJCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmYnVmLCAiICgiKTsKLQkJCQkJZGVjb21waWxlX2NvbHVtbl9p bmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCAmYnVmKTsKKwkJCQkJZGVjb21w aWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCBmYWxzZSwg JmJ1Zik7CiAJCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAJCQkJfQog CkBAIC0yMzc5LDcgKzIzNzksNyBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lk IGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQl2YWwgPSBTeXNDYWNoZUdl dEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwLAogCQkJCQkJCQkJCQkgQW51bV9wZ19jb25z dHJhaW50X2NvbmtleSk7CiAKLQkJCQlrZXlhdHRzID0gZGVjb21waWxlX2NvbHVtbl9pbmRl eF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCAmYnVmKTsKKwkJCQlrZXlhdHRzID0g ZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCBj b25Gb3JtLT5jb253aXRob3V0b3ZlcmxhcHMsICZidWYpOwogCiAJCQkJYXBwZW5kU3RyaW5n SW5mb0NoYXIoJmJ1ZiwgJyknKTsKIApAQCAtMjU3NSw3ICsyNTc1LDcgQEAgcGdfZ2V0X2Nv bnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQs CiAgKi8KIHN0YXRpYyBpbnQKIGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0g Y29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsCi0JCQkJCQkJIFN0cmluZ0luZm8gYnVm KQorCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgU3RyaW5nSW5mbyBidWYpCiB7CiAJ RGF0dW0JICAgKmtleXM7CiAJaW50CQkJbktleXM7CkBAIC0yNTk2LDYgKzI1OTYsOCBAQCBk ZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwg T2lkIHJlbElkLAogCQllbHNlCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgJXMiLCBx dW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKIAl9CisJaWYgKHdpdGhvdXRPdmVybGFwcykK KwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgV0lUSE9VVCBPVkVSTEFQUyIpOwog CiAJcmV0dXJuIG5LZXlzOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5k ZXggYjNmYWNjYmVmZS4uZjM0MWM1YzM3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxj YWNoZS5jCkBAIC01NTY4LDExICs1NTY4LDE0IEBAIFJlbGF0aW9uR2V0SWRlbnRpdHlLZXlC aXRtYXAoUmVsYXRpb24gcmVsYXRpb24pCiAvKgogICogUmVsYXRpb25HZXRFeGNsdXNpb25J bmZvIC0tIGdldCBpbmZvIGFib3V0IGluZGV4J3MgZXhjbHVzaW9uIGNvbnN0cmFpbnQKICAq Ci0gKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25seSBmb3IgYW4gaW5kZXggdGhhdCBpcyBr bm93biB0byBoYXZlIGFuCi0gKiBhc3NvY2lhdGVkIGV4Y2x1c2lvbiBjb25zdHJhaW50LiAg SXQgcmV0dXJucyBhcnJheXMgKHBhbGxvYydkIGluIGNhbGxlcidzCi0gKiBjb250ZXh0KSBv ZiB0aGUgZXhjbHVzaW9uIG9wZXJhdG9yIE9JRHMsIHRoZWlyIHVuZGVybHlpbmcgZnVuY3Rp b25zJwotICogT0lEcywgYW5kIHRoZWlyIHN0cmF0ZWd5IG51bWJlcnMgaW4gdGhlIGluZGV4 J3Mgb3BjbGFzc2VzLiAgV2UgY2FjaGUKLSAqIGFsbCB0aGlzIGluZm9ybWF0aW9uIHNpbmNl IGl0IHJlcXVpcmVzIGEgZmFpciBhbW91bnQgb2Ygd29yayB0byBnZXQuCisgKiBUaGlzIHNo b3VsZCBiZSBjYWxsZWQgb25seSBmb3IgYW4gaW5kZXggdGhhdCBpcyBrbm93biB0byBoYXZl IGFuIGFzc29jaWF0ZWQKKyAqIGV4Y2x1c2lvbiBjb25zdHJhaW50IG9yIHByaW1hcnkga2V5 L3VuaXF1ZSBjb25zdHJhaW50IHVzaW5nIFdJVEhPVVQKKyAqIE9WRVJMQVBTLgorCisgKiBJ dCByZXR1cm5zIGFycmF5cyAocGFsbG9jJ2QgaW4gY2FsbGVyJ3MgY29udGV4dCkgb2YgdGhl IGV4Y2x1c2lvbiBvcGVyYXRvcgorICogT0lEcywgdGhlaXIgdW5kZXJseWluZyBmdW5jdGlv bnMnIE9JRHMsIGFuZCB0aGVpciBzdHJhdGVneSBudW1iZXJzIGluIHRoZQorICogaW5kZXgn cyBvcGNsYXNzZXMuICBXZSBjYWNoZSBhbGwgdGhpcyBpbmZvcm1hdGlvbiBzaW5jZSBpdCBy ZXF1aXJlcyBhIGZhaXIKKyAqIGFtb3VudCBvZiB3b3JrIHRvIGdldC4KICAqLwogdm9pZAog UmVsYXRpb25HZXRFeGNsdXNpb25JbmZvKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCkBAIC01 NjM2LDcgKzU2MzksMTAgQEAgUmVsYXRpb25HZXRFeGNsdXNpb25JbmZvKFJlbGF0aW9uIGlu ZGV4UmVsYXRpb24sCiAJCWludAkJCW5lbGVtOwogCiAJCS8qIFdlIHdhbnQgdGhlIGV4Y2x1 c2lvbiBjb25zdHJhaW50IG93bmluZyB0aGUgaW5kZXggKi8KLQkJaWYgKGNvbmZvcm0tPmNv bnR5cGUgIT0gQ09OU1RSQUlOVF9FWENMVVNJT04gfHwKKwkJaWYgKChjb25mb3JtLT5jb250 eXBlICE9IENPTlNUUkFJTlRfRVhDTFVTSU9OICYmCisJCQkJCSEoY29uZm9ybS0+Y29ud2l0 aG91dG92ZXJsYXBzICYmICgKKwkJCQkJCQljb25mb3JtLT5jb250eXBlID09IENPTlNUUkFJ TlRfUFJJTUFSWQorCQkJCQkJCXx8IGNvbmZvcm0tPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9V TklRVUUpKSkgfHwKIAkJCWNvbmZvcm0tPmNvbmluZGlkICE9IFJlbGF0aW9uR2V0UmVsaWQo aW5kZXhSZWxhdGlvbikpCiAJCQljb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggMzRm ZDBhODZlOS4uMTcwOTAwN2RjNiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC02OTg1LDYgKzY5ODUs NyBAQCBnZXRJbmRleGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGlu dCBudW1UYWJsZXMpCiAJCQkJaV9jb25uYW1lLAogCQkJCWlfY29uZGVmZXJyYWJsZSwKIAkJ CQlpX2NvbmRlZmVycmVkLAorCQkJCWlfY29ud2l0aG91dG92ZXJsYXBzLAogCQkJCWlfY29u dGFibGVvaWQsCiAJCQkJaV9jb25vaWQsCiAJCQkJaV9jb25kZWYsCkBAIC03MDY2LDEwICs3 MDY3LDE3IEBAIGdldEluZGV4ZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9b XSwgaW50IG51bVRhYmxlcykKIAogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE1MDAw MCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJCQkJICJpLmluZG51bGxz bm90ZGlzdGluY3QgIik7CisJCQkJCQkJICJpLmluZG51bGxzbm90ZGlzdGluY3QsICIpOwog CWVsc2UKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJCQkJICJmYWxzZSBB UyBpbmRudWxsc25vdGRpc3RpbmN0ICIpOworCQkJCQkJCSAiZmFsc2UgQVMgaW5kbnVsbHNu b3RkaXN0aW5jdCwgIik7CisKKwlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNzAwMDAp CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiYy5jb253aXRob3V0 b3ZlcmxhcHMgIik7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJ CQkJCQkgIk5VTEwgQVMgY29ud2l0aG91dG92ZXJsYXBzICIpOwogCiAJLyoKIAkgKiBUaGUg cG9pbnQgb2YgdGhlIG1lc3N5LWxvb2tpbmcgb3V0ZXIgam9pbiBpcyB0byBmaW5kIGEgY29u c3RyYWludCB0aGF0CkBAIC03MTM3LDYgKzcxNDUsNyBAQCBnZXRJbmRleGVzKEFyY2hpdmUg KmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJaV9jb25uYW1l ID0gUFFmbnVtYmVyKHJlcywgImNvbm5hbWUiKTsKIAlpX2NvbmRlZmVycmFibGUgPSBQUWZu dW1iZXIocmVzLCAiY29uZGVmZXJyYWJsZSIpOwogCWlfY29uZGVmZXJyZWQgPSBQUWZudW1i ZXIocmVzLCAiY29uZGVmZXJyZWQiKTsKKwlpX2NvbndpdGhvdXRvdmVybGFwcyA9IFBRZm51 bWJlcihyZXMsICJjb253aXRob3V0b3ZlcmxhcHMiKTsKIAlpX2NvbnRhYmxlb2lkID0gUFFm bnVtYmVyKHJlcywgImNvbnRhYmxlb2lkIik7CiAJaV9jb25vaWQgPSBQUWZudW1iZXIocmVz LCAiY29ub2lkIik7CiAJaV9jb25kZWYgPSBQUWZudW1iZXIocmVzLCAiY29uZGVmIik7CkBA IC03MjQ0LDYgKzcyNTMsNyBAQCBnZXRJbmRleGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5m byB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkJY29uc3RyaW5mby0+Y29uaW5kZXgg PSBpbmR4aW5mb1tqXS5kb2JqLmR1bXBJZDsKIAkJCQljb25zdHJpbmZvLT5jb25kZWZlcnJh YmxlID0gKihQUWdldHZhbHVlKHJlcywgaiwgaV9jb25kZWZlcnJhYmxlKSkgPT0gJ3QnOwog CQkJCWNvbnN0cmluZm8tPmNvbmRlZmVycmVkID0gKihQUWdldHZhbHVlKHJlcywgaiwgaV9j b25kZWZlcnJlZCkpID09ICd0JzsKKwkJCQljb25zdHJpbmZvLT5jb253aXRob3V0b3Zlcmxh cHMgPSAqKFBRZ2V0dmFsdWUocmVzLCBqLCBpX2NvbndpdGhvdXRvdmVybGFwcykpID09ICd0 JzsKIAkJCQljb25zdHJpbmZvLT5jb25pc2xvY2FsID0gdHJ1ZTsKIAkJCQljb25zdHJpbmZv LT5zZXBhcmF0ZSA9IHRydWU7CiAKQEAgLTE2OTQ1LDYgKzE2OTU1LDggQEAgZHVtcENvbnN0 cmFpbnQoQXJjaGl2ZSAqZm91dCwgY29uc3QgQ29uc3RyYWludEluZm8gKmNvbmluZm8pCiAJ CQkJCQkJCSAgKGsgPT0gMCkgPyAiIiA6ICIsICIsCiAJCQkJCQkJCSAgZm10SWQoYXR0bmFt ZSkpOwogCQkJfQorCQkJaWYgKGNvbmluZm8tPmNvbndpdGhvdXRvdmVybGFwcykKKwkJCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiIFdJVEhPVVQgT1ZFUkxBUFMiKTsKIAogCQkJaWYg KGluZHhpbmZvLT5pbmRua2V5YXR0cnMgPCBpbmR4aW5mby0+aW5kbmF0dHJzKQogCQkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHEsICIpIElOQ0xVREUgKCIpOwpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5k ZXggMmZlM2NiZWQ5YS4uY2JmNGI1ZTE3OSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC00ODcsNiAr NDg3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2NvbnN0cmFpbnRJbmZvCiAJRHVtcElkCQljb25p bmRleDsJCS8qIGlkZW50aWZpZXMgYXNzb2NpYXRlZCBpbmRleCBpZiBhbnkgKi8KIAlib29s CQljb25kZWZlcnJhYmxlOwkvKiB0cnVlIGlmIGNvbnN0cmFpbnQgaXMgREVGRVJSQUJMRSAq LwogCWJvb2wJCWNvbmRlZmVycmVkOwkvKiB0cnVlIGlmIGNvbnN0cmFpbnQgaXMgSU5JVElB TExZIERFRkVSUkVEICovCisJYm9vbAkJY29ud2l0aG91dG92ZXJsYXBzOwkvKiB0cnVlIGlm IHRoZSBjb25zdHJhaW50IGlzIFdJVEhPVVQgT1ZFUkxBUFMgKi8KIAlib29sCQljb25pc2xv Y2FsOwkJLyogdHJ1ZSBpZiBjb25zdHJhaW50IGhhcyBsb2NhbCBkZWZpbml0aW9uICovCiAJ Ym9vbAkJc2VwYXJhdGU7CQkvKiB0cnVlIGlmIG11c3QgZHVtcCBhcyBzZXBhcmF0ZSBpdGVt ICovCiB9IENvbnN0cmFpbnRJbmZvOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3Qv MDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRl eCBlYjNlYzUzNGI0Li44NTg0YTRiNDA2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv dC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5w bApAQCAtMTAxNSw2ICsxMDE1LDQ2IEBAIG15ICV0ZXN0cyA9ICgKIAkJfSwKIAl9LAogCisJ J0NPTlNUUkFJTlQgUFJJTUFSWSBLRVkgLyBXSVRIT1VUIE9WRVJMQVBTJyA9PiB7CisJCWNy ZWF0ZV9zcWwgID0+ICdDUkVBVEUgVEFCTEUgZHVtcF90ZXN0LnRlc3RfdGFibGVfdHBrICgK KwkJCQkJCQljb2wxIGludDRyYW5nZSwKKwkJCQkJCQljb2wyIHRzdHpyYW5nZSwKKwkJCQkJ CQlDT05TVFJBSU5UIHRlc3RfdGFibGVfdHBrX3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEsIGNv bDIgV0lUSE9VVCBPVkVSTEFQUykpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUFMVEVS IFRBQkxFIE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFibGVfdHBrXEUgXG5eXHMrCisJCQlcUUFE RCBDT05TVFJBSU5UIHRlc3RfdGFibGVfdHBrX3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEsIGNv bDIgV0lUSE9VVCBPVkVSTEFQUyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7CisJCQklZnVs bF9ydW5zLAorCQkJJWR1bXBfdGVzdF9zY2hlbWFfcnVucywKKwkJCXNlY3Rpb25fcG9zdF9k YXRhICA9PiAxLAorCQl9LAorCQl1bmxpa2UgPT4geworCQkJZXhjbHVkZV9kdW1wX3Rlc3Rf c2NoZW1hID0+IDEsCisJCQlvbmx5X2R1bXBfbWVhc3VyZW1lbnQgICAgPT4gMSwKKwkJfSwK Kwl9LAorCisJJ0NPTlNUUkFJTlQgVU5JUVVFIC8gV0lUSE9VVCBPVkVSTEFQUycgPT4gewor CQljcmVhdGVfc3FsICA9PiAnQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50ZXN0X3RhYmxlX3R1 cSAoCisJCQkJCQkJY29sMSBpbnQ0cmFuZ2UsCisJCQkJCQkJY29sMiB0c3R6cmFuZ2UsCisJ CQkJCQkJQ09OU1RSQUlOVCB0ZXN0X3RhYmxlX3R1cV91cSBVTklRVUUgKGNvbDEsIGNvbDIg V0lUSE9VVCBPVkVSTEFQUykpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUFMVEVSIFRB QkxFIE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFibGVfdHVxXEUgXG5eXHMrCisJCQlcUUFERCBD T05TVFJBSU5UIHRlc3RfdGFibGVfdHVxX3VxIFVOSVFVRSAoY29sMSwgY29sMiBXSVRIT1VU IE9WRVJMQVBTKTtcRQorCQkJL3htLAorCQlsaWtlID0+IHsKKwkJCSVmdWxsX3J1bnMsCisJ CQklZHVtcF90ZXN0X3NjaGVtYV9ydW5zLAorCQkJc2VjdGlvbl9wb3N0X2RhdGEgID0+IDEs CisJCX0sCisJCXVubGlrZSA9PiB7CisJCQlleGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4g MSwKKwkJCW9ubHlfZHVtcF9tZWFzdXJlbWVudCAgICA9PiAxLAorCQl9LAorCX0sCisKIAkn QUxURVIgVEFCTEUgKHBhcnRpdGlvbmVkKSBBREQgQ09OU1RSQUlOVCAuLi4gRk9SRUlHTiBL RVknID0+IHsKIAkJY3JlYXRlX29yZGVyID0+IDQsCiAJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFU RSBUQUJMRSBkdW1wX3Rlc3QudGVzdF90YWJsZV9mayAoCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDUwNzdl N2IzNTguLjYxZDY0NTJiNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5j CisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC0yMzc5LDYgKzIzNzksMTAgQEAg ZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCWVs c2UKIAkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLCBmYWxzZSBBUyBpbmRpc3Jl cGxpZGVudCIpOwogCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiwgYzIucmVsdGFi bGVzcGFjZSIpOworCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTcwMDAwKQorCQkJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZidWYsICIsIGNvbi5jb253aXRob3V0b3ZlcmxhcHMiKTsKKwkJ CWVsc2UKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLCBmYWxzZSBBUyBjb253 aXRob3V0b3ZlcmxhcHMiKTsKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJ ICAiXG5GUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19jbGFzcyBj MiwgcGdfY2F0YWxvZy5wZ19pbmRleCBpXG4iCiAJCQkJCQkJICAiICBMRUZUIEpPSU4gcGdf Y2F0YWxvZy5wZ19jb25zdHJhaW50IGNvbiBPTiAoY29ucmVsaWQgPSBpLmluZHJlbGlkIEFO RCBjb25pbmRpZCA9IGkuaW5kZXhyZWxpZCBBTkQgY29udHlwZSBJTiAoJ3AnLCd1JywneCcp KVxuIgpAQCAtMjQwMCw4ICsyNDA0LDEyIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNv bnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIg ICAgXCIlc1wiIiwKIAkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDApKTsKIAot CQkJCQkvKiBJZiBleGNsdXNpb24gY29uc3RyYWludCwgcHJpbnQgdGhlIGNvbnN0cmFpbnRk ZWYgKi8KLQkJCQkJaWYgKHN0cmNtcChQUWdldHZhbHVlKHJlc3VsdCwgaSwgNyksICJ4Iikg PT0gMCkKKwkJCQkJLyoKKwkJCQkJICogSWYgZXhjbHVzaW9uIGNvbnN0cmFpbnQgb3IgUEsv VU5JUVVFIGNvbnN0cmFpbnQgV0lUSE9VVAorCQkJCQkgKiBPVkVSTEFQUywgcHJpbnQgdGhl IGNvbnN0cmFpbnRkZWYKKwkJCQkJICovCisJCQkJCWlmIChzdHJjbXAoUFFnZXR2YWx1ZShy ZXN1bHQsIGksIDcpLCAieCIpID09IDAgfHwKKwkJCQkJCQlzdHJjbXAoUFFnZXR2YWx1ZShy ZXN1bHQsIGksIDEyKSwgInQiKSA9PSAwKQogCQkJCQl7CiAJCQkJCQlhcHBlbmRQUUV4cEJ1 ZmZlcigmYnVmLCAiICVzIiwKIAkJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCA2 KSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggYi9zcmMvaW5j bHVkZS9jYXRhbG9nL2luZGV4LmgKaW5kZXggYTQ3NzBlYWYxMi4uMGZjY2ZmOWMwNSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvaW5kZXguaApAQCAtOTIsNiArOTIsNyBAQCBleHRlcm4gT2lkCWluZGV4X2Ny ZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAjZGVmaW5lCUlOREVYX0NPTlNUUl9DUkVB VEVfSU5JVF9ERUZFUlJFRAkoMSA8PCAyKQogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRF X1VQREFURV9JTkRFWAkoMSA8PCAzKQogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX1JF TU9WRV9PTERfREVQUwkoMSA8PCA0KQorI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX1dJ VEhPVVRfT1ZFUkxBUFMgKDEgPDwgNSkKIAogZXh0ZXJuIE9pZAlpbmRleF9jb25jdXJyZW50 bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkJCSAgIE9p ZCBvbGRJbmRleElkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25z dHJhaW50LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaAppbmRleCBh MDI2YjQyNTE1Li5jMTdiMWU5ZDMxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2NvbnN0cmFpbnQuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFp bnQuaApAQCAtMTA3LDYgKzEwNywxMiBAQCBDQVRBTE9HKHBnX2NvbnN0cmFpbnQsMjYwNixD b25zdHJhaW50UmVsYXRpb25JZCkKIAkvKiBIYXMgYSBsb2NhbCBkZWZpbml0aW9uIGFuZCBj YW5ub3QgYmUgaW5oZXJpdGVkICovCiAJYm9vbAkJY29ubm9pbmhlcml0OwogCisJLyoKKwkg KiBGb3IgcHJpbWFyeSBrZXlzIGFuZCB1bmlxdWUgY29uc3RyYWludHMsIHNpZ25pZmllcyB0 aGUgbGFzdCBjb2x1bW4gdXNlcworCSAqIG92ZXJsYXBzIGluc3RlYWQgb2YgZXF1YWxzLgor CSAqLworCWJvb2wJCWNvbndpdGhvdXRvdmVybGFwczsKKwogI2lmZGVmIENBVEFMT0dfVkFS TEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAKIAkvKgpA QCAtMTQ2LDcgKzE1Miw4IEBAIENBVEFMT0cocGdfY29uc3RyYWludCwyNjA2LENvbnN0cmFp bnRSZWxhdGlvbklkKQogCiAJLyoKIAkgKiBJZiBhbiBleGNsdXNpb24gY29uc3RyYWludCwg dGhlIE9JRHMgb2YgdGhlIGV4Y2x1c2lvbiBvcGVyYXRvcnMgZm9yCi0JICogZWFjaCBjb2x1 bW4gb2YgdGhlIGNvbnN0cmFpbnQKKwkgKiBlYWNoIGNvbHVtbiBvZiB0aGUgY29uc3RyYWlu dC4gIEFsc28gc2V0IGZvciB1bmlxdWUgY29uc3RyYWludHMvcHJpbWFyeQorCSAqIGtleXMg dXNpbmcgV0lUSE9VVCBPVkVSTEFQUy4KIAkgKi8KIAlPaWQJCQljb25leGNsb3BbMV0gQktJ X0xPT0tVUChwZ19vcGVyYXRvcik7CiAKQEAgLTIzNiw2ICsyNDMsNyBAQCBleHRlcm4gT2lk CUNyZWF0ZUNvbnN0cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAkJ CQkJCQkJICBib29sIGNvbklzTG9jYWwsCiAJCQkJCQkJCSAgaW50IGNvbkluaENvdW50LAog CQkJCQkJCQkgIGJvb2wgY29uTm9Jbmhlcml0LAorCQkJCQkJCQkgIGJvb2wgY29uV2l0aG91 dE92ZXJsYXBzLAogCQkJCQkJCQkgIGJvb2wgaXNfaW50ZXJuYWwpOwogCiBleHRlcm4gYm9v bCBDb25zdHJhaW50TmFtZUlzVXNlZChDb25zdHJhaW50Q2F0ZWdvcnkgY29uQ2F0LCBPaWQg b2JqSWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaCBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCmluZGV4IDE3OWViOTkwMWYuLjI1ZjU1YzE4 MWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCkBAIC00NCw3ICs0NCw4IEBAIGV4dGVybiBj aGFyICpDaG9vc2VSZWxhdGlvbk5hbWUoY29uc3QgY2hhciAqbmFtZTEsIGNvbnN0IGNoYXIg Km5hbWUyLAogZXh0ZXJuIGJvb2wgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAog CQkJCQkJCQkgY29uc3QgY2hhciAqYWNjZXNzTWV0aG9kTmFtZSwKIAkJCQkJCQkJIGNvbnN0 IExpc3QgKmF0dHJpYnV0ZUxpc3QsCi0JCQkJCQkJCSBjb25zdCBMaXN0ICpleGNsdXNpb25P cE5hbWVzKTsKKwkJCQkJCQkJIGNvbnN0IExpc3QgKmV4Y2x1c2lvbk9wTmFtZXMsCisJCQkJ CQkJCSBib29sIGlzV2l0aG91dE92ZXJsYXBzKTsKIGV4dGVybiBPaWQJR2V0RGVmYXVsdE9w Q2xhc3MoT2lkIHR5cGVfaWQsIE9pZCBhbV9pZCk7CiBleHRlcm4gT2lkCVJlc29sdmVPcENs YXNzKGNvbnN0IExpc3QgKm9wY2xhc3MsIE9pZCBhdHRyVHlwZSwKIAkJCQkJCSAgIGNvbnN0 IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsIE9pZCBhY2Nlc3NNZXRob2RJZCk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmgKaW5kZXggZTQ5NDMwOWRhOC4uMDk4OTkwZGQxNiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaApAQCAtMjU4OSw2ICsyNTg5LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg Q29uc3RyYWludAogCWJvb2wJCW51bGxzX25vdF9kaXN0aW5jdDsgLyogbnVsbCB0cmVhdG1l bnQgZm9yIFVOSVFVRSBjb25zdHJhaW50cyAqLwogCUxpc3QJICAgKmtleXM7CQkJLyogU3Ry aW5nIG5vZGVzIG5hbWluZyByZWZlcmVuY2VkIGtleQogCQkJCQkJCQkgKiBjb2x1bW4ocyk7 IGFsc28gdXNlZCBmb3IgTk9UIE5VTEwgKi8KKwlib29sCQl3aXRob3V0X292ZXJsYXBzOwkv KiBXSVRIT1VUIE9WRVJMQVBTIHNwZWNpZmllZCAqLwogCUxpc3QJICAgKmluY2x1ZGluZzsJ CS8qIFN0cmluZyBub2RlcyBuYW1pbmcgcmVmZXJlbmNlZCBub25rZXkKIAkJCQkJCQkJICog Y29sdW1uKHMpICovCiAKQEAgLTMyMTgsNiArMzIxOSw3IEBAIHR5cGVkZWYgc3RydWN0IElu ZGV4U3RtdAogCWJvb2wJCW51bGxzX25vdF9kaXN0aW5jdDsgLyogbnVsbCB0cmVhdG1lbnQg Zm9yIFVOSVFVRSBjb25zdHJhaW50cyAqLwogCWJvb2wJCXByaW1hcnk7CQkvKiBpcyBpbmRl eCBhIHByaW1hcnkga2V5PyAqLwogCWJvb2wJCWlzY29uc3RyYWludDsJLyogaXMgaXQgZm9y IGEgcGtleS91bmlxdWUgY29uc3RyYWludD8gKi8KKwlib29sCQlpc3dpdGhvdXRvdmVybGFw czsJLyogaXMgdGhlIGNvbnN0cmFpbnQgV0lUSE9VVCBPVkVSTEFQUz8gKi8KIAlib29sCQlk ZWZlcnJhYmxlOwkJLyogaXMgdGhlIGNvbnN0cmFpbnQgREVGRVJSQUJMRT8gKi8KIAlib29s CQlpbml0ZGVmZXJyZWQ7CS8qIGlzIHRoZSBjb25zdHJhaW50IElOSVRJQUxMWSBERUZFUlJF RD8gKi8KIAlib29sCQl0cmFuc2Zvcm1lZDsJLyogdHJ1ZSB3aGVuIHRyYW5zZm9ybUluZGV4 U3RtdCBpcyBmaW5pc2hlZCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC93aXRob3V0X292ZXJsYXBzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv d2l0aG91dF9vdmVybGFwcy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uYzc0NDEzNzljMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKQEAgLTAsMCArMSwzODIgQEAKKy0tIFRl c3RzIGZvciBXSVRIT1VUIE9WRVJMQVBTLgorLS0KKy0tIFdlIGxlYXZlIGJlaGluZCBzZXZl cmFsIHRhYmxlcyB0byB0ZXN0IHBnX2R1bXAgZXRjOgorLS0gdGVtcG9yYWxfcm5nLCB0ZW1w b3JhbF9ybmcyLAorLS0gdGVtcG9yYWxfZmtfcm5nMnJuZy4KKy0tCistLSB0ZXN0IGlucHV0 IHBhcnNlcgorLS0KKy0tIFBLIHdpdGggbm8gY29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxB UFM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwl2YWxpZF9hdCB0c3JhbmdlLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZICh2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKK0VSUk9SOiAgY29uc3RyYWludCB1c2luZyBXSVRIT1VUIE9W RVJMQVBTIG5lZWRzIGF0IGxlYXN0IHR3byBjb2x1bW5zCistLSBQSyB3aXRoIGEgcmFuZ2Ug Y29sdW1uL1BFUklPRCB0aGF0IGlzbid0IHRoZXJlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3JuZyAoCisJaWQgSU5URUdFUiwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklN QVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRVJST1I6ICBj b2x1bW4gInZhbGlkX2F0IiBuYW1lZCBpbiBrZXkgZG9lcyBub3QgZXhpc3QKK0xJTkUgMzog IENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VLi4uCisgICAgICAgICBeCistLSBQSyB3aXRoIGEgbm9uLXJhbmdlIGNvbHVtbjoK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9h dCBURVhULAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitFUlJPUjogIGNvbHVtbiAidmFsaWRf YXQiIGluIFdJVEhPVVQgT1ZFUkxBUFMgaXMgbm90IGEgcmFuZ2UgdHlwZQorTElORSA0OiAg Q09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1UuLi4KKyAgICAgICAgIF4KKy0tIFBLIHdpdGggb25lIGNvbHVtbiBwbHVzIGEgcmFu Z2U6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwktLSBTaW5jZSB3ZSBjYW4ndCBk ZXBlbmQgb24gaGF2aW5nIGJ0cmVlX2dpc3QgaGVyZSwKKwktLSB1c2UgYW4gaW50NHJhbmdl IGluc3RlYWQgb2YgYW4gaW50LgorCS0tIChUaGUgcmFuZ2V0eXBlcyByZWdyZXNzaW9uIHRl c3QgdXNlcyB0aGUgc2FtZSB0cmljay4pCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRz cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZworICAgICAg ICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX3JuZyIKKyAgQ29sdW1uICB8ICAgVHlw ZSAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgICB8 IGludDRyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgfCB0c3Jh bmdlICAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorSW5kZXhlczoKKyAgICAidGVtcG9y YWxfcm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWlu dCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CisgICAgICAgICAgICBwZ19n ZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25p bmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVt cG9yYWxfcm5nX3BrJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X2luZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBvcmFsX3JuZ19wayBP TiB0ZW1wb3JhbF9ybmcgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KQorKDEgcm93KQorCist LSBQSyB3aXRoIHR3byBjb2x1bW5zIHBsdXMgYSByYW5nZToKKy0tIFdlIGRvbid0IGRyb3Ag dGhpcyB0YWJsZSBiZWNhdXNlIHRlc3RzIGJlbG93IGFsc28gbmVlZCBtdWx0aXBsZSBzY2Fs YXIgY29sdW1ucy4KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKKwlpZDEgaW50NHJh bmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5U IHRlbXBvcmFsX3JuZzJfcGsgUFJJTUFSWSBLRVkgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZzIKKyAgICAgICAgICAgICBUYWJs ZSAicHVibGljLnRlbXBvcmFsX3JuZzIiCisgIENvbHVtbiAgfCAgIFR5cGUgICAgfCBDb2xs YXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQxICAgICAgfCBpbnQ0cmFuZ2Ug fCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorIGlkMiAgICAgIHwgaW50NHJhbmdlIHwgICAg ICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCB8IHRzcmFuZ2UgICB8ICAgICAgICAg ICB8IG5vdCBudWxsIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3JhbF9ybmcyX3BrIiBQUklN QVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisKK1NFTEVD VCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBj b25uYW1lID0gJ3RlbXBvcmFsX3JuZzJfcGsnOworICAgICAgICAgICAgICAgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfaW5k ZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25u YW1lID0gJ3RlbXBvcmFsX3JuZzJfcGsnOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGdfZ2V0X2luZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5J UVVFIElOREVYIHRlbXBvcmFsX3JuZzJfcGsgT04gdGVtcG9yYWxfcm5nMiBVU0lORyBnaXN0 IChpZDEsIGlkMiwgdmFsaWRfYXQpCisoMSByb3cpCisKKy0tIFBLIHdpdGggYSBjdXN0b20g cmFuZ2UgdHlwZToKK0NSRUFURSBUWVBFIHRleHRyYW5nZTIgQVMgcmFuZ2UgKHN1YnR5cGU9 dGV4dCwgY29sbGF0aW9uPSJDIik7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJ aWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRleHRyYW5nZTIsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9ybmczX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmczIERST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ybmczX3BrOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmczOworRFJPUCBUWVBFIHRl eHRyYW5nZTI7CistLSBVTklRVUUgd2l0aCBubyBjb2x1bW5zIGp1c3QgV0lUSE9VVCBPVkVS TEFQUzoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwl2YWxpZF9hdCB0c3Jhbmdl LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCispOworRVJST1I6ICBjb25zdHJhaW50IHVzaW5nIFdJVEhPVVQgT1ZF UkxBUFMgbmVlZHMgYXQgbGVhc3QgdHdvIGNvbHVtbnMKKy0tIFVOSVFVRSB3aXRoIGEgcmFu Z2UgY29sdW1uL1BFUklPRCB0aGF0IGlzbid0IHRoZXJlOgorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3JuZzMgKAorCWlkIElOVEVHRVIsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3Vx IFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRVJST1I6ICBj b2x1bW4gInZhbGlkX2F0IiBuYW1lZCBpbiBrZXkgZG9lcyBub3QgZXhpc3QKK0xJTkUgMzog IENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WLi4uCisgICAgICAgICBeCistLSBVTklRVUUgd2l0aCBhIG5vbi1yYW5nZSBjb2x1 bW46CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2F0IFRFWFQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRVJST1I6ICBjb2x1bW4gInZhbGlk X2F0IiBpbiBXSVRIT1VUIE9WRVJMQVBTIGlzIG5vdCBhIHJhbmdlIHR5cGUKK0xJTkUgNDog IENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WLi4uCisgICAgICAgICBeCistLSBVTklRVUUgd2l0aCBvbmUgY29sdW1uIHBsdXMg YSByYW5nZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEgVU5J UVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9y bmczCisgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmczIgorICBDb2x1 bW4gIHwgICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQor IGlkICAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyB2YWxp ZF9hdCB8IHRzcmFuZ2UgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgor ICAgICJ0ZW1wb3JhbF9ybmczX3VxIiBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2Nv bnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmczX3VxJzsKKyAgICAgICAg ICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAw LCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9y bmczX3VxJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9pbmRl eGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9ybmczX3VxIE9O IHRlbXBvcmFsX3JuZzMgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KQorKDEgcm93KQorCitE Uk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CistLSBVTklRVUUgd2l0aCB0d28gY29sdW1ucyBw bHVzIGEgcmFuZ2U6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJaWQxIGludDRy YW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nMworICAgICAgICAgICAgIFRhYmxlICJw dWJsaWMudGVtcG9yYWxfcm5nMyIKKyAgQ29sdW1uICB8ICAgVHlwZSAgICB8IENvbGxhdGlv biB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZDEgICAgICB8IGludDRyYW5nZSB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCisgaWQyICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAg ICAgfCAgICAgICAgICB8IAorIHZhbGlkX2F0IHwgdHNyYW5nZSAgIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX3JuZzNfdXEiIFVOSVFVRSAo aWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisKK1NFTEVDVCBwZ19nZXRf Y29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0g J3RlbXBvcmFsX3JuZzNfdXEnOworICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVm ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUp IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzNfdXEn OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2luZGV4ZGVm ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBvcmFsX3JuZzNf dXEgT04gdGVtcG9yYWxfcm5nMyBVU0lORyBnaXN0IChpZDEsIGlkMiwgdmFsaWRfYXQpCiso MSByb3cpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKKy0tIFVOSVFVRSB3aXRoIGEg Y3VzdG9tIHJhbmdlIHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFTIHJhbmdlIChz dWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Ju ZzMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFuZ2UyLAorCUNPTlNUUkFJ TlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX3JuZzNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CitEUk9QIFRZUEUg dGV4dHJhbmdlMjsKKy0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05TVFJBSU5UCist LQorRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmc7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5n ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZQorKTsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX3JuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19waworCVBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CistLSBQSyB3aXRoIFVT SU5HIElOREVYIChub3QgcG9zc2libGUpOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJ aWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitDUkVBVEUgSU5ERVggaWR4 X3RlbXBvcmFsM191cSBPTiB0ZW1wb3JhbDMgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KTsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM19wawor CVBSSU1BUlkgS0VZIFVTSU5HIElOREVYIGlkeF90ZW1wb3JhbDNfdXE7CitFUlJPUjogICJp ZHhfdGVtcG9yYWwzX3VxIiBpcyBub3QgYSB1bmlxdWUgaW5kZXgKK0xJTkUgMjogIEFERCBD T05TVFJBSU5UIHRlbXBvcmFsM19waworICAgICAgICAgICAgIF4KK0RFVEFJTDogIENhbm5v dCBjcmVhdGUgYSBwcmltYXJ5IGtleSBvciB1bmlxdWUgY29uc3RyYWludCB1c2luZyBzdWNo IGFuIGluZGV4LgorRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLSBVTklRVUUgd2l0aCBVU0lO RyBJTkRFWCAobm90IHBvc3NpYmxlKToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlk IGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQ1JFQVRFIElOREVYIGlkeF90 ZW1wb3JhbDNfdXEgT04gdGVtcG9yYWwzIFVTSU5HIGdpc3QgKGlkLCB2YWxpZF9hdCk7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfdXEKKwlV TklRVUUgVVNJTkcgSU5ERVggaWR4X3RlbXBvcmFsM191cTsKK0VSUk9SOiAgImlkeF90ZW1w b3JhbDNfdXEiIGlzIG5vdCBhIHVuaXF1ZSBpbmRleAorTElORSAyOiAgQUREIENPTlNUUkFJ TlQgdGVtcG9yYWwzX3VxCisgICAgICAgICAgICAgXgorREVUQUlMOiAgQ2Fubm90IGNyZWF0 ZSBhIHByaW1hcnkga2V5IG9yIHVuaXF1ZSBjb25zdHJhaW50IHVzaW5nIHN1Y2ggYW4gaW5k ZXguCitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tIFVOSVFVRSB3aXRoIFVTSU5HIFtVTklR VUVdIElOREVYIChwb3NzaWJsZSBidXQgbm90IGEgdGVtcG9yYWwgY29uc3RyYWludCk6CitD UkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNy YW5nZQorKTsKK0NSRUFURSBVTklRVUUgSU5ERVggaWR4X3RlbXBvcmFsM191cSBPTiB0ZW1w b3JhbDMgKGlkLCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbDNfdXEKKwlVTklRVUUgVVNJTkcgSU5ERVggaWR4X3RlbXBvcmFs M191cTsKK05PVElDRTogIEFMVEVSIFRBQkxFIC8gQUREIENPTlNUUkFJTlQgVVNJTkcgSU5E RVggd2lsbCByZW5hbWUgaW5kZXggImlkeF90ZW1wb3JhbDNfdXEiIHRvICJ0ZW1wb3JhbDNf dXEiCitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tIEFkZCByYW5nZSBjb2x1bW4gYW5kIHRo ZSBQSyBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBp bnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09MVU1OIHZhbGlk X2F0IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3BrCisJUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKK0RST1AgVEFCTEUgdGVtcG9y YWwzOworLS0gQWRkIHJhbmdlIGNvbHVtbiBhbmQgVU5JUVVFIGNvbnN0cmFpbnQgYXQgdGhl IHNhbWUgdGltZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlCisp OworQUxURVIgVEFCTEUgdGVtcG9yYWwzCisJQUREIENPTFVNTiB2YWxpZF9hdCB0c3Jhbmdl LAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM191cQorCVVOSVFVRSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLQorLS0gdGVz dCBQSyBpbnNlcnRzCistLQorLS0gb2theToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMycpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIw MTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCBOVUxMKSk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w MS0wNScpKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1 c2lvbiBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ybmdfcGsiCitERVRBSUw6ICBLZXkgKGlkLCB2 YWxpZF9hdCk9KFsxLDIpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKYW4g MDUgMDA6MDA6MDAgMjAxOCIpKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGlkLCB2 YWxpZF9hdCk9KFsxLDIpLCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIg MDMgMDA6MDA6MDAgMjAxOCIpKS4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KE5VTEwsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0VSUk9SOiAg bnVsbCB2YWx1ZSBpbiBjb2x1bW4gImlkIiBvZiByZWxhdGlvbiAidGVtcG9yYWxfcm5nIiB2 aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50CitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250 YWlucyAobnVsbCwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAw OjAwOjAwIDIwMTgiKSkuCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzMs M10nLCBOVUxMKTsKK0VSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4gInZhbGlkX2F0IiBv ZiByZWxhdGlvbiAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50 CitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoWzMsNCksIG51bGwpLgorLS0KKy0t IHRlc3QgYSByYW5nZSB3aXRoIGJvdGggYSBQSyBhbmQgYSBVTklRVUUgY29uc3RyYWludAor LS0KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlk X2F0IGRhdGVyYW5nZSwKKyAgaWQyIGludDhyYW5nZSwKKyAgbmFtZSBURVhULAorICBDT05T VFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpLAorICBDT05TVFJBSU5UIHRlbXBvcmFsM191bmlxIFVOSVFVRSAoaWQyLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAo aWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJh bmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s3LDddJywgJ2ZvbycpLAorICAo J1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s5LDld JywgJ2JhcicpCis7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tCistLSB0ZXN0IGNoYW5n aW5nIHRoZSBQSydzIGRlcGVuZGVuY2llcworLS0KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVt cG9yYWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK Kyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgQUxURVIgQ09MVU1OIHZhbGlkX2F0IERST1Ag Tk9UIE5VTEw7CitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIGlzIGluIGEgcHJpbWFyeSBr ZXkKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0 c3R6cmFuZ2UgVVNJTkcgdHN0enJhbmdlKGxvd2VyKHZhbGlkX2F0KSwgdXBwZXIodmFsaWRf YXQpKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBSRU5BTUUgQ09MVU1OIHZhbGlkX2F0IFRP IHZhbGlkX3RocnU7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRf dGhydTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworLS0KKy0tIHRlc3QgUEFSVElUSU9OIEJZ IGZvciByYW5nZXMKKy0tCistLSB0ZW1wb3JhbCBQUklNQVJZIEtFWToKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRh dGVyYW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25l ZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispIFBB UlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0 ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzIsMl0nKTsK K0NSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZP UiBWQUxVRVMgSU4gKCdbMywzXScsICdbNCw0XScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWQgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEn LCAnMjAwMC0wMi0wMScpLCAnb25lJyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAt MDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyksCisgICgnWzMsM10nLCBkYXRlcmFuZ2Uo JzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAndGhyZWUnKTsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCwwMi0wMS0yMDAw KSB8IG9uZQorIFsxLDIpIHwgWzAyLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCBvbmUKKyBbMyw0 KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKKygzIHJvd3MpCisKK1NFTEVD VCAqIEZST00gdHAxIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2 YWxpZF9hdCAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0yMDAwLDAyLTAxLTIwMDApIHwgb25lCisg WzEsMikgfCBbMDItMDEtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorKDIgcm93cykKKworU0VM RUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAg IHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDEwKSB8IHRo cmVlCisoMSByb3cpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7CistLSB0 ZW1wb3JhbCBVTklRVUU6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgKAor CWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBU QUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMg SU4gKCdbMSwxXScsICdbMiwyXScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0Yg dGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKKyAgKCdbMSwxXScs IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKKyAgKCdb MSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwK KyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICd0 aHJlZScpOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUg IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8 IFswMS0wMS0yMDAwLDAyLTAxLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDItMDEtMjAwMCww My0wMS0yMDAwKSB8IG9uZQorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMDEtMjAxMCkgfCB0 aHJlZQorKDMgcm93cykKKworU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkgaWQsIHZhbGlk X2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lIAorLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWzAxLTAxLTIw MDAsMDItMDEtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFswMi0wMS0yMDAwLDAzLTAxLTIwMDAp IHwgb25lCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFs aWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMyw0KSB8IFswMS0w MS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKKygxIHJvdykKKworRFJPUCBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4 IGYwOTg3ZmY1MzcuLmIwOGFhYWU0NGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZQpAQCAtNzgsNyArNzgsNyBAQCB0ZXN0OiBicmluX2Jsb29tIGJyaW5fbXVsdGkKICMg cHNxbCBkZXBlbmRzIG9uIGNyZWF0ZV9hbQogIyBhbXV0aWxzIGRlcGVuZHMgb24gZ2VvbWV0 cnksIGNyZWF0ZV9pbmRleF9zcGdpc3QsIGhhc2hfaW5kZXgsIGJyaW4KICMgLS0tLS0tLS0t LQotdGVzdDogY3JlYXRlX3RhYmxlX2xpa2UgYWx0ZXJfZ2VuZXJpYyBhbHRlcl9vcGVyYXRv ciBtaXNjIGFzeW5jIGRic2l6ZSBtZXJnZSBtaXNjX2Z1bmN0aW9ucyBzeXN2aWV3cyB0c3Jm IHRpZCB0aWRzY2FuIHRpZHJhbmdlc2NhbiBjb2xsYXRlLmljdS51dGY4IGluY3JlbWVudGFs X3NvcnQgY3JlYXRlX3JvbGUKK3Rlc3Q6IGNyZWF0ZV90YWJsZV9saWtlIGFsdGVyX2dlbmVy aWMgYWx0ZXJfb3BlcmF0b3IgbWlzYyBhc3luYyBkYnNpemUgbWVyZ2UgbWlzY19mdW5jdGlv bnMgc3lzdmlld3MgdHNyZiB0aWQgdGlkc2NhbiB0aWRyYW5nZXNjYW4gY29sbGF0ZS5pY3Uu dXRmOCBpbmNyZW1lbnRhbF9zb3J0IGNyZWF0ZV9yb2xlIHdpdGhvdXRfb3ZlcmxhcHMKIAog IyBjb2xsYXRlLioudXRmOCB0ZXN0cyBjYW5ub3QgYmUgcnVuIGluIHBhcmFsbGVsIHdpdGgg ZWFjaCBvdGhlcgogdGVzdDogcnVsZXMgcHNxbCBwc3FsX2Nyb3NzdGFiIGFtdXRpbHMgc3Rh dHNfZXh0IGNvbGxhdGUubGludXgudXRmOCBjb2xsYXRlLndpbmRvd3Mud2luMTI1MgpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43MDFiY2ZiOTYyCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKQEAgLTAsMCAr MSwyODIgQEAKKy0tIFRlc3RzIGZvciBXSVRIT1VUIE9WRVJMQVBTLgorLS0KKy0tIFdlIGxl YXZlIGJlaGluZCBzZXZlcmFsIHRhYmxlcyB0byB0ZXN0IHBnX2R1bXAgZXRjOgorLS0gdGVt cG9yYWxfcm5nLCB0ZW1wb3JhbF9ybmcyLAorLS0gdGVtcG9yYWxfZmtfcm5nMnJuZy4KKwor LS0KKy0tIHRlc3QgaW5wdXQgcGFyc2VyCistLQorCistLSBQSyB3aXRoIG5vIGNvbHVtbnMg anVzdCBXSVRIT1VUIE9WRVJMQVBTOgorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgK Kwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1B UlkgS0VZICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKworLS0gUEsgd2l0aCBh IHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhhdCBpc24ndCB0aGVyZToKKworQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3JuZyAoCisJaWQgSU5URUdFUiwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Ju Z19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOwor CistLSBQSyB3aXRoIGEgbm9uLXJhbmdlIGNvbHVtbjoKKworQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IFRFWFQsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorKTsKKworLS0gUEsgd2l0aCBvbmUgY29sdW1uIHBsdXMgYSByYW5nZToKKwor Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJLS0gU2luY2Ugd2UgY2FuJ3QgZGVwZW5k IG9uIGhhdmluZyBidHJlZV9naXN0IGhlcmUsCisJLS0gdXNlIGFuIGludDRyYW5nZSBpbnN0 ZWFkIG9mIGFuIGludC4KKwktLSAoVGhlIHJhbmdldHlwZXMgcmVncmVzc2lvbiB0ZXN0IHVz ZXMgdGhlIHNhbWUgdHJpY2suKQorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jhbmdl LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcKK1NFTEVDVCBwZ19n ZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1l ID0gJ3RlbXBvcmFsX3JuZ19wayc7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlk LCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3Jh bF9ybmdfcGsnOworCistLSBQSyB3aXRoIHR3byBjb2x1bW5zIHBsdXMgYSByYW5nZToKKy0t IFdlIGRvbid0IGRyb3AgdGhpcyB0YWJsZSBiZWNhdXNlIHRlc3RzIGJlbG93IGFsc28gbmVl ZCBtdWx0aXBsZSBzY2FsYXIgY29sdW1ucy4KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcy ICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5n ZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsgUFJJTUFSWSBLRVkgKGlkMSwgaWQy LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZzIKK1NF TEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzJfcGsnOworU0VMRUNUIHBnX2dldF9pbmRleGRl Zihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUg PSAndGVtcG9yYWxfcm5nMl9wayc7CisKKworLS0gUEsgd2l0aCBhIGN1c3RvbSByYW5nZSB0 eXBlOgorQ1JFQVRFIFRZUEUgdGV4dHJhbmdlMiBBUyByYW5nZSAoc3VidHlwZT10ZXh0LCBj b2xsYXRpb249IkMiKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBpbnQ0 cmFuZ2UsCisJdmFsaWRfYXQgdGV4dHJhbmdlMiwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Ju ZzNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3Ju ZzNfcGs7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CitEUk9QIFRZUEUgdGV4dHJhbmdl MjsKKworLS0gVU5JUVVFIHdpdGggbm8gY29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6 CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwl2YWxpZF9hdCB0c3JhbmdlLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCispOworCistLSBVTklRVUUgd2l0aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0Qg dGhhdCBpc24ndCB0aGVyZToKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCWlk IElOVEVHRVIsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCistLSBVTklRVUUgd2l0aCBhIG5vbi1y YW5nZSBjb2x1bW46CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBpbnQ0 cmFuZ2UsCisJdmFsaWRfYXQgVEVYVCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEg VU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFVOSVFV RSB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdlOgorCitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcm5nMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nMworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50 ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxf cm5nM191cSc7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBG Uk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmczX3VxJzsK K0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKKworLS0gVU5JUVVFIHdpdGggdHdvIGNvbHVt bnMgcGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCWlkMSBp bnQ0cmFuZ2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZzMKK1NFTEVDVCBwZ19nZXRfY29u c3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3Rl bXBvcmFsX3JuZzNfdXEnOworU0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwg dHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5n M191cSc7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CisKKy0tIFVOSVFVRSB3aXRoIGEg Y3VzdG9tIHJhbmdlIHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFTIHJhbmdlIChz dWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Ju ZzMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFuZ2UyLAorCUNPTlNUUkFJ TlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX3JuZzNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CitEUk9QIFRZUEUg dGV4dHJhbmdlMjsKKworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUgQUREIENPTlNUUkFJTlQK Ky0tCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsKKwlQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworCistLSBQSyB3 aXRoIFVTSU5HIElOREVYIChub3QgcG9zc2libGUpOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs MyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitDUkVBVEUgSU5E RVggaWR4X3RlbXBvcmFsM191cSBPTiB0ZW1wb3JhbDMgVVNJTkcgZ2lzdCAoaWQsIHZhbGlk X2F0KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFs M19waworCVBSSU1BUlkgS0VZIFVTSU5HIElOREVYIGlkeF90ZW1wb3JhbDNfdXE7CitEUk9Q IFRBQkxFIHRlbXBvcmFsMzsKKworLS0gVU5JUVVFIHdpdGggVVNJTkcgSU5ERVggKG5vdCBw b3NzaWJsZSk6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJ dmFsaWRfYXQgdHNyYW5nZQorKTsKK0NSRUFURSBJTkRFWCBpZHhfdGVtcG9yYWwzX3VxIE9O IHRlbXBvcmFsMyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpOworQUxURVIgVEFCTEUgdGVt cG9yYWwzCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxCisJVU5JUVVFIFVTSU5HIElO REVYIGlkeF90ZW1wb3JhbDNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0gVU5J UVVFIHdpdGggVVNJTkcgW1VOSVFVRV0gSU5ERVggKHBvc3NpYmxlIGJ1dCBub3QgYSB0ZW1w b3JhbCBjb25zdHJhaW50KToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRy YW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhf dGVtcG9yYWwzX3VxIE9OIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0KTsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM191cQorCVVOSVFVRSBVU0lO RyBJTkRFWCBpZHhfdGVtcG9yYWwzX3VxOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CisKKy0t IEFkZCByYW5nZSBjb2x1bW4gYW5kIHRoZSBQSyBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUg VEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbDMKKwlBREQgQ09MVU1OIHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWwzX3BrCisJUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLSBBZGQgcmFuZ2UgY29sdW1uIGFu ZCBVTklRVUUgY29uc3RyYWludCBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVt cG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlB REQgQ09MVU1OIHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwz X3VxCisJVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRB QkxFIHRlbXBvcmFsMzsKKworLS0KKy0tIHRlc3QgUEsgaW5zZXJ0cworLS0KKworLS0gb2th eToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMycpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCBOVUxMKSk7CisKKy0t IHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoTlVMTCwgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAxLTA1JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1szLDNdJywg TlVMTCk7CisKKy0tCistLSB0ZXN0IGEgcmFuZ2Ugd2l0aCBib3RoIGEgUEsgYW5kIGEgVU5J UVVFIGNvbnN0cmFpbnQKKy0tCisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorICBpZCBp bnQ0cmFuZ2UsCisgIHZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgaWQyIGludDhyYW5nZSwKKyAg bmFtZSBURVhULAorICBDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorICBDT05TVFJBSU5UIHRlbXBvcmFsM191 bmlxIFVOSVFVRSAoaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUwor ICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s3 LDddJywgJ2ZvbycpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIw MTAtMDEtMDEnKSwgJ1s5LDldJywgJ2JhcicpCis7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsK KworLS0KKy0tIHRlc3QgY2hhbmdpbmcgdGhlIFBLJ3MgZGVwZW5kZW5jaWVzCistLQorCitD UkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgQUxU RVIgQ09MVU1OIHZhbGlkX2F0IERST1AgTk9UIE5VTEw7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bDMgQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgdHN0enJhbmdlIFVTSU5HIHRzdHpyYW5n ZShsb3dlcih2YWxpZF9hdCksIHVwcGVyKHZhbGlkX2F0KSk7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbDMgUkVOQU1FIENPTFVNTiB2YWxpZF9hdCBUTyB2YWxpZF90aHJ1OworQUxURVIgVEFC TEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX3RocnU7CitEUk9QIFRBQkxFIHRlbXBv cmFsMzsKKworLS0KKy0tIHRlc3QgUEFSVElUSU9OIEJZIGZvciByYW5nZXMKKy0tCisKKy0t IHRlbXBvcmFsIFBSSU1BUlkgS0VZOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRl eHQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlk KTsKK0NSRUFURSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk IEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMiwyXScpOworQ1JFQVRFIFRBQkxFIHRwMiBw YXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNd JywgJ1s0LDRdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMK KyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdv bmUnKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAx JyksICdvbmUnKSwKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEw LTAxLTAxJyksICd0aHJlZScpOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7 CitEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworCistLSB0ZW1wb3JhbCBVTklR VUU6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX3Bhcml0aW9uZWRfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0cDEgcGFy dGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScs ICdbMiwyXScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFy dGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgn MjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScsIGRhdGVy YW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdbMywzXScs IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICd0aHJlZScpOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7 CitTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBG Uk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkOwotLSAKMi40Mi4wCgo= --------------jwdNqnl5yO2Lo4Yc0EOjsS0s Content-Type: text/x-patch; charset=UTF-8; name="v18-0002-Add-temporal-FOREIGN-KEYs.patch" Content-Disposition: attachment; filename="v18-0002-Add-temporal-FOREIGN-KEYs.patch" Content-Transfer-Encoding: base64 RnJvbSA1ZDkzYTM1ZWI4Zjg0YmIyODkxOWEyMjBjYTNlMzIzY2MxZmRhZjY2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTI6NTg6NTEgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxOCAyLzVdIEFkZCB0ZW1wb3JhbCBGT1JFSUdOIEtFWXMK Ci0gQWRkZWQgYmlzb24gc3VwcG9ydCBmb3IgdGVtcG9yYWwgRk9SRUlHTiBLRVlzLiBUaGV5 IHNob3VsZCBoYXZlIGEKICByYW5nZSBjb2x1bW4gZm9yIHRoZSB0ZW1wb3JhbCBjb21wb25l bnQuCi0gQWRkZWQgdGVtcG9yYWwgdHJpZ2dlciBmdW5jdGlvbnMgYWtpbiB0byBleGlzdGlu ZyBSSSB0cmlnZ2VyCiAgZnVuY3Rpb25zLgotIERvbid0IHlldCBzdXBwb3J0IE9OIHtVUERB VEUsREVMRVRFfSB7Q0FTQ0FERSxTRVQgTlVMTCxTRVQgREVGQVVMVH0uCi0gQWRkZWQgcGdf ZHVtcCBzdXBwb3J0LgotIFNob3cgdGhlIGNvcnJlY3Qgc3ludGF4IGluIHBzcWwgXGQgb3V0 cHV0IGZvciBmb3JlaWduIGtleXMuCi0gQWRkZWQgdGVzdHMgYW5kIGRvY3VtZW50YXRpb24u Ci0tLQogLi4uL2J0cmVlX2dpc3QvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgIHwg IDI3ICsKIGNvbnRyaWIvYnRyZWVfZ2lzdC9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgICB8 ICAxMiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAg fCAgNDggKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAg ICB8IDc5MSArKysrKysrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNz LmMgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVu Y3MuYyAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eSAgICAgICAgICAgICAgICAgICAgIHwgIDM3ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQv cmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCAzNDIgKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8ICAxOSArLQogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19jb25zdHJhaW50LmggICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgMjQgKwogc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vcmVn cmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCAgICAgfCA1NTEgKysrKysrKysr KysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCA1 MjYgKysrKysrKysrKysrCiAxNSBmaWxlcyBjaGFuZ2VkLCAyMDQ4IGluc2VydGlvbnMoKyks IDM0NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvZXhw ZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9jb250cmliL2J0cmVlX2dpc3QvZXhwZWN0 ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKaW5kZXggMDY5MjcyNjg4Zi4uZDExNjAxZTU3MCAx MDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRfb3Zlcmxh cHMub3V0CisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9leHBlY3RlZC93aXRob3V0X292ZXJs YXBzLm91dApAQCAtMjksMyArMjksMzAgQEAgU0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25p bmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGUK ICBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBvcmFsX3JuZ19wayBPTiB0ZW1wb3JhbF9ybmcg VVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KQogKDEgcm93KQogCistLSBGb3JlaWduIGtleQor Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorICBpZCBpbnRlZ2VyLAorICB2 YWxpZF9hdCB0c3JhbmdlLAorICBwYXJlbnRfaWQgaW50ZWdlciwKKyAgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUyksCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisgICAgUkVGRVJFTkNFUyB0 ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworXGQgdGVtcG9yYWxfZmtf cm5nMnJuZworICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfZmtfcm5nMnJuZyIK KyAgQ29sdW1uICAgfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0 IAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tCisgaWQgICAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisg dmFsaWRfYXQgIHwgdHNyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgcGFyZW50 X2lkIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAg ICJ0ZW1wb3JhbF9ma19ybmcycm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpCitGb3JlaWduLWtleSBjb25zdHJhaW50czoKKyAgICAidGVtcG9y YWxfZmtfcm5nMnJuZ19mayIgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyhpZCwgUEVSSU9EIHZhbGlkX2F0KQorCitT RUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hF UkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ma19ybmcycm5nX2ZrJzsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZyhpZCwgUEVSSU9EIHZhbGlkX2F0KQorKDEgcm93KQorCmRpZmYgLS1n aXQgYS9jb250cmliL2J0cmVlX2dpc3Qvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsIGIvY29u dHJpYi9idHJlZV9naXN0L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAppbmRleCA5ODY2NWRi YjllLi4wMzZlZTBhNzYwIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3Qvc3FsL3dp dGhvdXRfb3ZlcmxhcHMuc3FsCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9zcWwvd2l0aG91 dF9vdmVybGFwcy5zcWwKQEAgLTExLDMgKzExLDE1IEBAIENSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ybmcgKAogXGQgdGVtcG9yYWxfcm5nCiBTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYo b2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmdf cGsnOwogU0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBw Z19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nX3BrJzsKKworLS0g Rm9yZWlnbiBrZXkKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKyAgaWQg aW50ZWdlciwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgcGFyZW50X2lkIGludGVnZXIsCisg IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorICBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorICAg IFJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK1xk IHRlbXBvcmFsX2ZrX3JuZzJybmcKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQp IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX2ZrX3JuZzJy bmdfZmsnOwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKaW5kZXggYTBiZDJiOGFk Yy4uYjVmNDg1MjVkZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFi bGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCkBAIC04 MSw3ICs4MSw3IEBAIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8 IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJCiAgIFVOSVFVRSBbIE5V TExTIFsgTk9UIF0gRElTVElOQ1QgXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFdJVEhPVVQgT1ZF UkxBUFMgXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0 ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBQUklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ IFdJVEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5p bmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBFWENMVURFIFsgVVNJTkcgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFjZWFibGU+ IF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjbHVkZV9lbGVtZW50PC9y ZXBsYWNlYWJsZT4gV0lUSCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0 b3I8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gWyBXSEVSRSAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wcmVkaWNhdGU8L3JlcGxhY2VhYmxlPiApIF0gfAot ICBGT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBd ICkgXQorICBGT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5j b2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBd ICkgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8 L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNv bHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBdICkgXQog ICAgIFsgTUFUQ0ggRlVMTCB8IE1BVENIIFBBUlRJQUwgfCBNQVRDSCBTSU1QTEUgXSBbIE9O IERFTEVURSA8cmVwbGFjZWFibGUKIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2Fj dGlvbjwvcmVwbGFjZWFibGU+IF0gWyBPTiBVUERBVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0gfQogWyBERUZF UlJBQkxFIHwgTk9UIERFRkVSUkFCTEUgXSBbIElOSVRJQUxMWSBERUZFUlJFRCB8IElOSVRJ QUxMWSBJTU1FRElBVEUgXQpAQCAtMTE0Niw4ICsxMTQ2LDggQEAgV0lUSCAoIE1PRFVMVVMg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFj ZWFibGU+LCBSRU0KICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGV0YWJsZS1wYXJt cy1yZWZlcmVuY2VzIj4KICAgICA8dGVybT48bGl0ZXJhbD5SRUZFUkVOQ0VTIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gKSBd IFsgTUFUQ0ggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1hdGNodHlwZTwvcmVw bGFjZWFibGU+IF0gWyBPTiBERUxFVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0gWyBPTiBVUERBVEUgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFi bGU+IF08L2xpdGVyYWw+IChjb2x1bW4gY29uc3RyYWludCk8L3Rlcm0+CiAKLSAgIDx0ZXJt PjxsaXRlcmFsPkZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKQotICAgIFJFRkVSRU5DRVMg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4g WyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1bW48L3JlcGxhY2Vh YmxlPiBbLCAuLi4gXSApIF0KKyAgIDx0ZXJtPjxsaXRlcmFsPkZPUkVJR04gS0VZICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4g WywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1w b3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IF0gKQorICAgIFJFRkVSRU5DRVMgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4gWyAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1bW48L3JlcGxhY2VhYmxlPiBb LCAuLi4gXSBbLCBQRVJJT0QgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBv cmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gXSApIF0KICAgICBbIE1BVENIIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5tYXRjaHR5cGU8L3JlcGxhY2VhYmxlPiBdCiAgICAg WyBPTiBERUxFVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFs X2FjdGlvbjwvcmVwbGFjZWFibGU+IF0KICAgICBbIE9OIFVQREFURSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXTwv bGl0ZXJhbD4KQEAgLTExNTgsMTEgKzExNTgsMjkgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+ LCBSRU0KICAgICAgIFRoZXNlIGNsYXVzZXMgc3BlY2lmeSBhIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQsIHdoaWNoIHJlcXVpcmVzCiAgICAgICB0aGF0IGEgZ3JvdXAgb2Ygb25lIG9yIG1v cmUgY29sdW1ucyBvZiB0aGUgbmV3IHRhYmxlIG11c3Qgb25seQogICAgICAgY29udGFpbiB2 YWx1ZXMgdGhhdCBtYXRjaCB2YWx1ZXMgaW4gdGhlIHJlZmVyZW5jZWQKLSAgICAgIGNvbHVt bihzKSBvZiBzb21lIHJvdyBvZiB0aGUgcmVmZXJlbmNlZCB0YWJsZS4gIElmIHRoZSA8cmVw bGFjZWFibGUKKyAgICAgIGNvbHVtbihzKSBvZiBzb21lIHJvdyBvZiB0aGUgcmVmZXJlbmNl ZCB0YWJsZS4KKyAgICAgIElmIHRoZSA8cmVwbGFjZWFibGUKICAgICAgIGNsYXNzPSJwYXJh bWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IGxpc3QgaXMgb21pdHRlZCwgdGhlCiAg ICAgICBwcmltYXJ5IGtleSBvZiB0aGUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4KICAgICAgIGlzIHVzZWQuICBUaGUgcmVmZXJlbmNl ZCBjb2x1bW5zIG11c3QgYmUgdGhlIGNvbHVtbnMgb2YgYSBub24tZGVmZXJyYWJsZQotICAg ICAgdW5pcXVlIG9yIHByaW1hcnkga2V5IGNvbnN0cmFpbnQgaW4gdGhlIHJlZmVyZW5jZWQg dGFibGUuICBUaGUgdXNlcgorICAgICAgdW5pcXVlIG9yIHByaW1hcnkga2V5IGNvbnN0cmFp bnQgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFy YT4KKyAgICAgIElmIHRoZSBsYXN0IGNvbHVtbiBpcyBtYXJrZWQgd2l0aCA8bGl0ZXJhbD5Q RVJJT0Q8L2xpdGVyYWw+LAorICAgICAgaXQgbXVzdCBiZSBhIHBlcmlvZCBvciByYW5nZSBj b2x1bW4sIGFuZCB0aGUgcmVmZXJlbmNlZCB0YWJsZQorICAgICAgbXVzdCBoYXZlIGEgdGVt cG9yYWwgcHJpbWFyeSBrZXkuCisgICAgICBUaGUgbm9uLTxsaXRlcmFsPlBFUklPRDwvbGl0 ZXJhbD4gY29sdW1ucyBhcmUgdHJlYXRlZCBub3JtYWxseQorICAgICAgKGFuZCB0aGVyZSBt dXN0IGJlIGF0IGxlYXN0IG9uZSBvZiB0aGVtKSwKKyAgICAgIGJ1dCB0aGUgPGxpdGVyYWw+ UEVSSU9EPC9saXRlcmFsPiBjb2x1bW4gaXMgbm90IGNvbXBhcmVkIGZvciBlcXVhbGl0eS4K KyAgICAgIEluc3RlYWQgdGhlIGNvbnN0cmFpbnQgaXMgY29uc2lkZXJlZCBzYXRpc2ZpZWQK KyAgICAgIGlmIHRoZSByZWZlcmVuY2VkIHRhYmxlIGhhcyBtYXRjaGluZyByZWNvcmRzIHdo b3NlIGNvbWJpbmVkIHJhbmdlcyBjb21wbGV0ZWx5IGNvdmVyCisgICAgICB0aGUgcmVmZXJl bmNpbmcgcmVjb3JkLgorICAgICAgSW4gb3RoZXIgd29yZHMsIHRoZSByZWZlcmVuY2UgbXVz dCBoYXZlIGEgcmVmZXJlbnQgZm9yIGl0cyBlbnRpcmUgZHVyYXRpb24uCisgICAgIDwvcGFy YT4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSB1c2VyCiAgICAgICBtdXN0IGhhdmUgPGxp dGVyYWw+UkVGRVJFTkNFUzwvbGl0ZXJhbD4gcGVybWlzc2lvbiBvbiB0aGUgcmVmZXJlbmNl ZCB0YWJsZQogICAgICAgKGVpdGhlciB0aGUgd2hvbGUgdGFibGUsIG9yIHRoZSBzcGVjaWZp YyByZWZlcmVuY2VkIGNvbHVtbnMpLiAgVGhlCiAgICAgICBhZGRpdGlvbiBvZiBhIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgcmVxdWlyZXMgYQpAQCAtMTIzNiw2ICsxMjU0LDEyIEBAIFdJ VEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xp dGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICAgICAgdmFsdWVzIG9mIHRoZSByZWZl cmVuY2luZyBjb2x1bW4ocykgdG8gdGhlIG5ldyB2YWx1ZXMgb2YgdGhlCiAgICAgICAgICAg cmVmZXJlbmNlZCBjb2x1bW5zLCByZXNwZWN0aXZlbHkuCiAgICAgICAgICA8L3BhcmE+CisK KyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIEluIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXks IHRoZSBkZWxldGUvdXBkYXRlIHdpbGwgdXNlCisgICAgICAgICAgPGxpdGVyYWw+Rk9SIFBP UlRJT04gT0Y8L2xpdGVyYWw+IHNlbWFudGljcyB0byBjb25zdHJhaW4gdGhlCisgICAgICAg ICAgZWZmZWN0IHRvIHRoZSBib3VuZHMgYmVpbmcgZGVsZXRlZC91cGRhdGVkIGluIHRoZSBy ZWZlcmVuY2VkIHJvdy4KKyAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4K ICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtMTI0Nyw2ICsxMjcxLDEzIEBAIFdJVEgg KCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVy YWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICAgICAgcmVmZXJlbmNpbmcgY29sdW1ucywg dG8gbnVsbC4gQSBzdWJzZXQgb2YgY29sdW1ucyBjYW4gb25seSBiZQogICAgICAgICAgIHNw ZWNpZmllZCBmb3IgPGxpdGVyYWw+T04gREVMRVRFPC9saXRlcmFsPiBhY3Rpb25zLgogICAg ICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJbiBhIHRlbXBv cmFsIGZvcmVpZ24ga2V5LCB0aGUgY2hhbmdlIHdpbGwgdXNlIDxsaXRlcmFsPkZPUiBQT1JU SU9OCisgICAgICAgICAgT0Y8L2xpdGVyYWw+IHNlbWFudGljcyB0byBjb25zdHJhaW4gdGhl IGVmZmVjdCB0byB0aGUgYm91bmRzIGJlaW5nCisgICAgICAgICAgZGVsZXRlZC91cGRhdGVk IGluIHRoZSByZWZlcmVuY2VkIHJvdy4gVGhlIGNvbHVtbiBtYWtlZCB3aXRoCisgICAgICAg ICAgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiB3aWxsIG5vdCBiZSBzZXQgdG8gbnVsbC4K KyAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxp c3RlbnRyeT4KIApAQCAtMTI2MCw2ICsxMjkxLDEzIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxl PiwgUkVNCiAgICAgICAgICAgKFRoZXJlIG11c3QgYmUgYSByb3cgaW4gdGhlIHJlZmVyZW5j ZWQgdGFibGUgbWF0Y2hpbmcgdGhlIGRlZmF1bHQKICAgICAgICAgICB2YWx1ZXMsIGlmIHRo ZXkgYXJlIG5vdCBudWxsLCBvciB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbC4pCiAgICAgICAg ICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIEluIGEgdGVtcG9yYWwg Zm9yZWlnbiBrZXksIHRoZSBjaGFuZ2Ugd2lsbCB1c2UgPGxpdGVyYWw+Rk9SIFBPUlRJT04K KyAgICAgICAgICBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzIHRvIGNvbnN0cmFpbiB0aGUgZWZm ZWN0IHRvIHRoZSBib3VuZHMgYmVpbmcKKyAgICAgICAgICBkZWxldGVkL3VwZGF0ZWQgaW4g dGhlIHJlZmVyZW5jZWQgcm93LiBUaGUgY29sdW1uIG1hcmtlZCB3aXRoCisgICAgICAgICAg PGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiB3aXRoIG5vdCBiZSBzZXQgdG8gYSBkZWZhdWx0 IHZhbHVlLgorICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAg IDwvdmFybGlzdGVudHJ5PgogICAgICAgPC92YXJpYWJsZWxpc3Q+CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jCmluZGV4IGJiZjRkNmYxMjYuLjRjZDRhYjlkZDAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jCkBAIC0yMDcsNiArMjA3LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg TmV3Q29uc3RyYWludAogCUNvbnN0clR5cGUJY29udHlwZTsJCS8qIENIRUNLIG9yIEZPUkVJ R04gKi8KIAlPaWQJCQlyZWZyZWxpZDsJCS8qIFBLIHJlbCwgaWYgRk9SRUlHTiAqLwogCU9p ZAkJCXJlZmluZGlkOwkJLyogT0lEIG9mIFBLJ3MgaW5kZXgsIGlmIEZPUkVJR04gKi8KKwli b29sCQljb253aXRocGVyaW9kOwkvKiBXaGV0aGVyIHRoZSBuZXcgRk9SRUlHTiBLRVkgdXNl cyBQRVJJT0QgKi8KIAlPaWQJCQljb25pZDsJCQkvKiBPSUQgb2YgcGdfY29uc3RyYWludCBl bnRyeSwgaWYgRk9SRUlHTiAqLwogCU5vZGUJICAgKnF1YWw7CQkJLyogQ2hlY2sgZXhwciBv ciBDT05TVFJfRk9SRUlHTiBDb25zdHJhaW50ICovCiAJRXhwclN0YXRlICAqcXVhbHN0YXRl OwkJLyogRXhlY3V0aW9uIHN0YXRlIGZvciBDSEVDSyBleHByICovCkBAIC0zNzksMTcgKzM4 MCwyMCBAQCBzdGF0aWMgaW50CXRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KE9pZCByZWxJZCwg TGlzdCAqY29sTGlzdCwKIAkJCQkJCQkJCWludDE2ICphdHRudW1zLCBPaWQgKmF0dHR5cGlk cyk7CiBzdGF0aWMgaW50CXRyYW5zZm9ybUZrZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBr cmVsLCBPaWQgKmluZGV4T2lkLAogCQkJCQkJCQkJICAgTGlzdCAqKmF0dG5hbWVsaXN0LAor CQkJCQkJCQkJICAgTm9kZSAqKnBrX3BlcmlvZCwKIAkJCQkJCQkJCSAgIGludDE2ICphdHRu dW1zLCBPaWQgKmF0dHR5cGlkcywKKwkJCQkJCQkJCSAgIGludDE2ICpwZXJpb2RhdHRudW1z LCBPaWQgKnBlcmlvZGF0dHR5cGlkcywKIAkJCQkJCQkJCSAgIE9pZCAqb3BjbGFzc2VzKTsK IHN0YXRpYyBPaWQJdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJ CQkJCQkJCQlpbnQgbnVtYXR0cnMsIGludDE2ICphdHRudW1zLAorCQkJCQkJCQkJYm9vbCBp c190ZW1wb3JhbCwgaW50MTYgcGVyaW9kYXR0bnVtLAogCQkJCQkJCQkJT2lkICpvcGNsYXNz ZXMpOwogc3RhdGljIHZvaWQgY2hlY2tGa2V5UGVybWlzc2lvbnMoUmVsYXRpb24gcmVsLCBp bnQxNiAqYXR0bnVtcywgaW50IG5hdHRzKTsKIHN0YXRpYyBDb2VyY2lvblBhdGhUeXBlIGZp bmRGa2V5Q2FzdChPaWQgdGFyZ2V0VHlwZUlkLCBPaWQgc291cmNlVHlwZUlkLAogCQkJCQkJ CQkJIE9pZCAqZnVuY2lkKTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0 cmFpbnQoY2hhciAqY29ubmFtZSwKIAkJCQkJCQkJCQkgUmVsYXRpb24gcmVsLCBSZWxhdGlv biBwa3JlbCwKLQkJCQkJCQkJCQkgT2lkIHBraW5kT2lkLCBPaWQgY29uc3RyYWludE9pZCk7 CisJCQkJCQkJCQkJIE9pZCBwa2luZE9pZCwgT2lkIGNvbnN0cmFpbnRPaWQsIGJvb2wgdGVt cG9yYWwpOwogc3RhdGljIHZvaWQgQVRDb250cm9sbGVyKEFsdGVyVGFibGVTdG10ICpwYXJz ZXRyZWUsCiAJCQkJCQkgUmVsYXRpb24gcmVsLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2Us IExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAq Y29udGV4dCk7CkBAIC00OTksNyArNTAzLDggQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgYWRk RmtSZWN1cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0 cmEKIAkJCQkJCQkJCQkJT2lkICpwZmVxb3BlcmF0b3JzLCBPaWQgKnBwZXFvcGVyYXRvcnMs IE9pZCAqZmZlcW9wZXJhdG9ycywKIAkJCQkJCQkJCQkJaW50IG51bWZrZGVsc2V0Y29scywg aW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJCQkJCQkJYm9vbCBvbGRfY2hlY2tfb2ssCi0J CQkJCQkJCQkJCU9pZCBwYXJlbnREZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcik7 CisJCQkJCQkJCQkJCU9pZCBwYXJlbnREZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dl ciwKKwkJCQkJCQkJCQkJYm9vbCBpc190ZW1wb3JhbCk7CiBzdGF0aWMgdm9pZCB2YWxpZGF0 ZUZrT25EZWxldGVTZXRDb2x1bW5zKGludCBudW1ma3MsIGNvbnN0IGludDE2ICpma2F0dG51 bXMsCiAJCQkJCQkJCQkJIGludCBudW1ma3NldGNvbHMsIGNvbnN0IGludDE2ICpma3NldGNv bHNhdHRudW1zLAogCQkJCQkJCQkJCSBMaXN0ICpma3NldGNvbHMpOwpAQCAtNTA5LDcgKzUx NCw5IEBAIHN0YXRpYyB2b2lkIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVl dWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKIAkJCQkJCQkJCU9pZCAqcGZlcW9wZXJh dG9ycywgT2lkICpwcGVxb3BlcmF0b3JzLCBPaWQgKmZmZXFvcGVyYXRvcnMsCiAJCQkJCQkJ CQlpbnQgbnVtZmtkZWxzZXRjb2xzLCBpbnQxNiAqZmtkZWxzZXRjb2xzLAogCQkJCQkJCQkJ Ym9vbCBvbGRfY2hlY2tfb2ssIExPQ0tNT0RFIGxvY2ttb2RlLAotCQkJCQkJCQkJT2lkIHBh cmVudEluc1RyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyKTsKKwkJCQkJCQkJCU9pZCBw YXJlbnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlciwKKwkJCQkJCQkJCWJvb2wg aXNfdGVtcG9yYWwpOworCiBzdGF0aWMgdm9pZCBDbG9uZUZvcmVpZ25LZXlDb25zdHJhaW50 cyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJlbnRSZWwsCiAJCQkJCQkJCQkgICBSZWxh dGlvbiBwYXJ0aXRpb25SZWwpOwogc3RhdGljIHZvaWQgQ2xvbmVGa1JlZmVyZW5jZWQoUmVs YXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0aXRpb25SZWwpOwpAQCAtNTQxLDYgKzU0 OCwxMiBAQCBzdGF0aWMgdm9pZCBHZXRGb3JlaWduS2V5Q2hlY2tUcmlnZ2VycyhSZWxhdGlv biB0cmlncmVsLAogCQkJCQkJCQkJICAgT2lkIGNvbm9pZCwgT2lkIGNvbmZyZWxpZCwgT2lk IGNvbnJlbGlkLAogCQkJCQkJCQkJICAgT2lkICppbnNlcnRUcmlnZ2VyT2lkLAogCQkJCQkJ CQkJICAgT2lkICp1cGRhdGVUcmlnZ2VyT2lkKTsKK3N0YXRpYyB2b2lkIEZpbmRGS0NvbXBh cmlzb25PcGVyYXRvcnMoQ29uc3RyYWludCAqZmtjb25zdHJhaW50LAorCQkJCQlBbHRlcmVk VGFibGVJbmZvICp0YWIsIGludCBpLCBpbnQxNiAqZmthdHRudW0sCisJCQkJCWJvb2wgKm9s ZF9jaGVja19vaywgTGlzdENlbGwgKipvbGRfcGZlcW9wX2l0ZW0sCisJCQkJCU9pZCBwa3R5 cGUsIE9pZCBma3R5cGUsIE9pZCBvcGNsYXNzLAorCQkJCQlib29sIGlzX3RlbXBvcmFsLCBi b29sIGZvcl9vdmVybGFwcywKKwkJCQkJT2lkICpwZmVxb3BPdXQsIE9pZCAqcHBlcW9wT3V0 LCBPaWQgKmZmZXFvcE91dCk7CiBzdGF0aWMgdm9pZCBBVEV4ZWNEcm9wQ29uc3RyYWludChS ZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbnN0ck5hbWUsCiAJCQkJCQkJCSBEcm9wQmVo YXZpb3IgYmVoYXZpb3IsIGJvb2wgcmVjdXJzZSwKIAkJCQkJCQkJIGJvb2wgbWlzc2luZ19v aywgTE9DS01PREUgbG9ja21vZGUpOwpAQCAtNTg5OCw3ICs1OTExLDggQEAgQVRSZXdyaXRl VGFibGVzKEFsdGVyVGFibGVTdG10ICpwYXJzZXRyZWUsIExpc3QgKip3cXVldWUsIExPQ0tN T0RFIGxvY2ttb2RlLAogCiAJCQkJdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChma2Nv bnN0cmFpbnQtPmNvbm5hbWUsIHJlbCwgcmVmcmVsLAogCQkJCQkJCQkJCQkgY29uLT5yZWZp bmRpZCwKLQkJCQkJCQkJCQkJIGNvbi0+Y29uaWQpOworCQkJCQkJCQkJCQkgY29uLT5jb25p ZCwKKwkJCQkJCQkJCQkJIGNvbi0+Y29ud2l0aHBlcmlvZCk7CiAKIAkJCQkvKgogCQkJCSAq IE5vIG5lZWQgdG8gbWFyayB0aGUgY29uc3RyYWludCByb3cgYXMgdmFsaWRhdGVkLCB3ZSBk aWQKQEAgLTk1MjcsNiArOTU0MSwxMSBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExp c3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCU9p ZAkJCXBwZXFvcGVyYXRvcnNbSU5ERVhfTUFYX0tFWVNdID0gezB9OwogCU9pZAkJCWZmZXFv cGVyYXRvcnNbSU5ERVhfTUFYX0tFWVNdID0gezB9OwogCWludDE2CQlma2RlbHNldGNvbHNb SU5ERVhfTUFYX0tFWVNdID0gezB9OworCWJvb2wJCWlzX3RlbXBvcmFsID0gKGZrY29uc3Ry YWludC0+ZmtfcGVyaW9kICE9IE5VTEwpOworCWludDE2CQlwa3BlcmlvZGF0dG51bXNbMV0g PSB7MH07CisJaW50MTYJCWZrcGVyaW9kYXR0bnVtc1sxXSA9IHswfTsKKwlPaWQJCQlwa3Bl cmlvZHR5cG9pZHNbMV0gPSB7MH07CisJT2lkCQkJZmtwZXJpb2R0eXBvaWRzWzFdID0gezB9 OwogCWludAkJCWk7CiAJaW50CQkJbnVtZmtzLAogCQkJCW51bXBrcywKQEAgLTk2MjEsNiAr OTY0MCwxNSBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFs dGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCW51bWZrcyA9IHRyYW5zZm9y bUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKIAkJCQkJCQkJCSBma2Nv bnN0cmFpbnQtPmZrX2F0dHJzLAogCQkJCQkJCQkJIGZrYXR0bnVtLCBma3R5cG9pZCk7CisJ aWYgKGlzX3RlbXBvcmFsKQorCQl0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdl dFJlbGlkKHJlbCksCisJCQkJCQkJICBsaXN0X21ha2UxKGZrY29uc3RyYWludC0+ZmtfcGVy aW9kKSwKKwkJCQkJCQkgIGZrcGVyaW9kYXR0bnVtcywgZmtwZXJpb2R0eXBvaWRzKTsKKwll bHNlCisJCWlmIChma2NvbnN0cmFpbnQtPnBrX3BlcmlvZCkKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GT1JFSUdOX0tFWSksCisJCQkJCWVy cm1zZygiZm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qgb24gdGhlIHJlZmVyZW5jZWQgdGFibGUg YnV0IG5vdCB0aGUgcmVmZXJlbmNpbmcgdGFibGUiKSkpOwogCiAJbnVtZmtkZWxzZXRjb2xz ID0gdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoUmVsYXRpb25HZXRSZWxpZChyZWwpLAogCQkJ CQkJCQkJCQkgIGZrY29uc3RyYWludC0+ZmtfZGVsX3NldF9jb2xzLApAQCAtOTYzOSw3ICs5 NjY3LDkgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAl7CiAJCW51bXBrcyA9IHRyYW5z Zm9ybUZrZXlHZXRQcmltYXJ5S2V5KHBrcmVsLCAmaW5kZXhPaWQsCiAJCQkJCQkJCQkJCSZm a2NvbnN0cmFpbnQtPnBrX2F0dHJzLAorCQkJCQkJCQkJCQkmZmtjb25zdHJhaW50LT5wa19w ZXJpb2QsCiAJCQkJCQkJCQkJCXBrYXR0bnVtLCBwa3R5cG9pZCwKKwkJCQkJCQkJCQkJcGtw ZXJpb2RhdHRudW1zLCBwa3BlcmlvZHR5cG9pZHMsCiAJCQkJCQkJCQkJCW9wY2xhc3Nlcyk7 CiAJfQogCWVsc2UKQEAgLTk2NDcsOCArOTY3NywyMiBAQCBBVEFkZEZvcmVpZ25LZXlDb25z dHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24g cmVsLAogCQludW1wa3MgPSB0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJl bGlkKHBrcmVsKSwKIAkJCQkJCQkJCQkgZmtjb25zdHJhaW50LT5wa19hdHRycywKIAkJCQkJ CQkJCQkgcGthdHRudW0sIHBrdHlwb2lkKTsKKwkJaWYgKGlzX3RlbXBvcmFsKQorCQl7CisJ CQkvKiBTaW5jZSB3ZSBnb3QgcGtfYXR0cnMsIHdlIHNob3VsZCBoYXZlIHBrX3BlcmlvZCB0 b28uICovCisJCQlpZiAoIWZrY29uc3RyYWludC0+cGtfcGVyaW9kKQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfRk9SRUlHTl9LRVkpLAor CQkJCQkJZXJybXNnKCJmb3JlaWduIGtleSB1c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJlbmNp bmcgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNlZCB0YWJsZSIpKSk7CisKKwkJCXRyYW5z Zm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocGtyZWwpLAorCQkJCQkJCQkJ bGlzdF9tYWtlMShma2NvbnN0cmFpbnQtPnBrX3BlcmlvZCksCisJCQkJCQkJCQlwa3Blcmlv ZGF0dG51bXMsIHBrcGVyaW9kdHlwb2lkcyk7CisJCX0KKwogCQkvKiBMb29rIGZvciBhbiBp bmRleCBtYXRjaGluZyB0aGUgY29sdW1uIGxpc3QgKi8KIAkJaW5kZXhPaWQgPSB0cmFuc2Zv cm1Ga2V5Q2hlY2tBdHRycyhwa3JlbCwgbnVtcGtzLCBwa2F0dG51bSwKKwkJCQkJCQkJCQkg ICBpc190ZW1wb3JhbCwgcGtwZXJpb2RhdHRudW1zWzBdLAogCQkJCQkJCQkJCSAgIG9wY2xh c3Nlcyk7CiAJfQogCkBAIC05NzA3LDE4NyArOTc1MSwyNyBAQCBBVEFkZEZvcmVpZ25LZXlD b25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRp b24gcmVsLAogCiAJZm9yIChpID0gMDsgaSA8IG51bXBrczsgaSsrKQogCXsKLQkJT2lkCQkJ cGt0eXBlID0gcGt0eXBvaWRbaV07Ci0JCU9pZAkJCWZrdHlwZSA9IGZrdHlwb2lkW2ldOwot CQlPaWQJCQlma3R5cGVkOwotCQlIZWFwVHVwbGUJY2xhX2h0OwotCQlGb3JtX3BnX29wY2xh c3MgY2xhX3R1cDsKLQkJT2lkCQkJYW1pZDsKLQkJT2lkCQkJb3BmYW1pbHk7Ci0JCU9pZAkJ CW9wY2ludHlwZTsKLQkJT2lkCQkJcGZlcW9wOwotCQlPaWQJCQlwcGVxb3A7Ci0JCU9pZAkJ CWZmZXFvcDsKLQkJaW50MTYJCWVxc3RyYXRlZ3k7Ci0JCU9pZAkJCXBmZXFvcF9yaWdodDsK LQotCQkvKiBXZSBuZWVkIHNldmVyYWwgZmllbGRzIG91dCBvZiB0aGUgcGdfb3BjbGFzcyBl bnRyeSAqLwotCQljbGFfaHQgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBPYmplY3RJZEdl dERhdHVtKG9wY2xhc3Nlc1tpXSkpOwotCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY2xhX2h0 KSkKLQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGNsYXNzICV1 Iiwgb3BjbGFzc2VzW2ldKTsKLQkJY2xhX3R1cCA9IChGb3JtX3BnX29wY2xhc3MpIEdFVFNU UlVDVChjbGFfaHQpOwotCQlhbWlkID0gY2xhX3R1cC0+b3BjbWV0aG9kOwotCQlvcGZhbWls eSA9IGNsYV90dXAtPm9wY2ZhbWlseTsKLQkJb3BjaW50eXBlID0gY2xhX3R1cC0+b3BjaW50 eXBlOwotCQlSZWxlYXNlU3lzQ2FjaGUoY2xhX2h0KTsKLQotCQkvKgotCQkgKiBDaGVjayBp dCdzIGEgYnRyZWU7IGN1cnJlbnRseSB0aGlzIGNhbiBuZXZlciBmYWlsIHNpbmNlIG5vIG90 aGVyCi0JCSAqIGluZGV4IEFNcyBzdXBwb3J0IHVuaXF1ZSBpbmRleGVzLiAgSWYgd2UgZXZl ciBkaWQgaGF2ZSBvdGhlciB0eXBlcwotCQkgKiBvZiB1bmlxdWUgaW5kZXhlcywgd2UnZCBu ZWVkIGEgd2F5IHRvIGRldGVybWluZSB3aGljaCBvcGVyYXRvcgotCQkgKiBzdHJhdGVneSBu dW1iZXIgaXMgZXF1YWxpdHkuICAoSXMgaXQgcmVhc29uYWJsZSB0byBpbnNpc3QgdGhhdAot CQkgKiBldmVyeSBzdWNoIGluZGV4IEFNIHVzZSBidHJlZSdzIG51bWJlciBmb3IgZXF1YWxp dHk/KQotCQkgKi8KLQkJaWYgKGFtaWQgIT0gQlRSRUVfQU1fT0lEKQotCQkJZWxvZyhFUlJP UiwgIm9ubHkgYi10cmVlIGluZGV4ZXMgYXJlIHN1cHBvcnRlZCBmb3IgZm9yZWlnbiBrZXlz Iik7Ci0JCWVxc3RyYXRlZ3kgPSBCVEVxdWFsU3RyYXRlZ3lOdW1iZXI7Ci0KLQkJLyoKLQkJ ICogVGhlcmUgaGFkIGJldHRlciBiZSBhIHByaW1hcnkgZXF1YWxpdHkgb3BlcmF0b3IgZm9y IHRoZSBpbmRleC4KLQkJICogV2UnbGwgdXNlIGl0IGZvciBQSyA9IFBLIGNvbXBhcmlzb25z LgotCQkgKi8KLQkJcHBlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3Bj aW50eXBlLCBvcGNpbnR5cGUsCi0JCQkJCQkJCQkgZXFzdHJhdGVneSk7Ci0KLQkJaWYgKCFP aWRJc1ZhbGlkKHBwZXFvcCkpCi0JCQllbG9nKEVSUk9SLCAibWlzc2luZyBvcGVyYXRvciAl ZCgldSwldSkgaW4gb3BmYW1pbHkgJXUiLAotCQkJCSBlcXN0cmF0ZWd5LCBvcGNpbnR5cGUs IG9wY2ludHlwZSwgb3BmYW1pbHkpOwotCi0JCS8qCi0JCSAqIEFyZSB0aGVyZSBlcXVhbGl0 eSBvcGVyYXRvcnMgdGhhdCB0YWtlIGV4YWN0bHkgdGhlIEZLIHR5cGU/IEFzc3VtZQotCQkg KiB3ZSBzaG91bGQgbG9vayB0aHJvdWdoIGFueSBkb21haW4gaGVyZS4KLQkJICovCi0JCWZr dHlwZWQgPSBnZXRCYXNlVHlwZShma3R5cGUpOwotCi0JCXBmZXFvcCA9IGdldF9vcGZhbWls eV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgZmt0eXBlZCwKLQkJCQkJCQkJCSBlcXN0 cmF0ZWd5KTsKLQkJaWYgKE9pZElzVmFsaWQocGZlcW9wKSkKLQkJewotCQkJcGZlcW9wX3Jp Z2h0ID0gZmt0eXBlZDsKLQkJCWZmZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1p bHksIGZrdHlwZWQsIGZrdHlwZWQsCi0JCQkJCQkJCQkJIGVxc3RyYXRlZ3kpOwotCQl9Ci0J CWVsc2UKLQkJewotCQkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLwotCQkJcGZlcW9wX3Jp Z2h0ID0gSW52YWxpZE9pZDsKLQkJCWZmZXFvcCA9IEludmFsaWRPaWQ7Ci0JCX0KLQotCQlp ZiAoIShPaWRJc1ZhbGlkKHBmZXFvcCkgJiYgT2lkSXNWYWxpZChmZmVxb3ApKSkKLQkJewot CQkJLyoKLQkJCSAqIE90aGVyd2lzZSwgbG9vayBmb3IgYW4gaW1wbGljaXQgY2FzdCBmcm9t IHRoZSBGSyB0eXBlIHRvIHRoZQotCQkJICogb3BjaW50eXBlLCBhbmQgaWYgZm91bmQsIHVz ZSB0aGUgcHJpbWFyeSBlcXVhbGl0eSBvcGVyYXRvci4KLQkJCSAqIFRoaXMgaXMgYSBiaXQg dHJpY2t5IGJlY2F1c2Ugb3BjaW50eXBlIG1pZ2h0IGJlIGEgcG9seW1vcnBoaWMKLQkJCSAq IHR5cGUgc3VjaCBhcyBBTllBUlJBWSBvciBBTllFTlVNOyBzbyB3aGF0IHdlIGhhdmUgdG8g dGVzdCBpcwotCQkJICogd2hldGhlciB0aGUgdHdvIGFjdHVhbCBjb2x1bW4gdHlwZXMgY2Fu IGJlIGNvbmN1cnJlbnRseSBjYXN0IHRvCi0JCQkgKiB0aGF0IHR5cGUuICAoT3RoZXJ3aXNl LCB3ZSdkIGZhaWwgdG8gcmVqZWN0IGNvbWJpbmF0aW9ucyBzdWNoCi0JCQkgKiBhcyBpbnRb XSBhbmQgcG9pbnRbXS4pCi0JCQkgKi8KLQkJCU9pZAkJCWlucHV0X3R5cGVpZHNbMl07Ci0J CQlPaWQJCQl0YXJnZXRfdHlwZWlkc1syXTsKLQotCQkJaW5wdXRfdHlwZWlkc1swXSA9IHBr dHlwZTsKLQkJCWlucHV0X3R5cGVpZHNbMV0gPSBma3R5cGU7Ci0JCQl0YXJnZXRfdHlwZWlk c1swXSA9IG9wY2ludHlwZTsKLQkJCXRhcmdldF90eXBlaWRzWzFdID0gb3BjaW50eXBlOwot CQkJaWYgKGNhbl9jb2VyY2VfdHlwZSgyLCBpbnB1dF90eXBlaWRzLCB0YXJnZXRfdHlwZWlk cywKLQkJCQkJCQkJQ09FUkNJT05fSU1QTElDSVQpKQotCQkJewotCQkJCXBmZXFvcCA9IGZm ZXFvcCA9IHBwZXFvcDsKLQkJCQlwZmVxb3BfcmlnaHQgPSBvcGNpbnR5cGU7Ci0JCQl9Ci0J CX0KLQotCQlpZiAoIShPaWRJc1ZhbGlkKHBmZXFvcCkgJiYgT2lkSXNWYWxpZChmZmVxb3Ap KSkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVf TUlTTUFUQ0gpLAotCQkJCQkgZXJybXNnKCJmb3JlaWduIGtleSBjb25zdHJhaW50IFwiJXNc IiBjYW5ub3QgYmUgaW1wbGVtZW50ZWQiLAotCQkJCQkJCWZrY29uc3RyYWludC0+Y29ubmFt ZSksCi0JCQkJCSBlcnJkZXRhaWwoIktleSBjb2x1bW5zIFwiJXNcIiBhbmQgXCIlc1wiICIK LQkJCQkJCQkgICAiYXJlIG9mIGluY29tcGF0aWJsZSB0eXBlczogJXMgYW5kICVzLiIsCi0J CQkJCQkJICAgc3RyVmFsKGxpc3RfbnRoKGZrY29uc3RyYWludC0+ZmtfYXR0cnMsIGkpKSwK LQkJCQkJCQkgICBzdHJWYWwobGlzdF9udGgoZmtjb25zdHJhaW50LT5wa19hdHRycywgaSkp LAotCQkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKGZrdHlwZSksCi0JCQkJCQkJICAgZm9ybWF0 X3R5cGVfYmUocGt0eXBlKSkpKTsKLQotCQlpZiAob2xkX2NoZWNrX29rKQotCQl7Ci0JCQkv KgotCQkJICogV2hlbiBhIHBmZXFvcCBjaGFuZ2VzLCByZXZhbGlkYXRlIHRoZSBjb25zdHJh aW50LiAgV2UgY291bGQKLQkJCSAqIHBlcm1pdCBpbnRyYS1vcGZhbWlseSBjaGFuZ2VzLCBi dXQgdGhhdCBhZGRzIHN1YnRsZSBjb21wbGV4aXR5Ci0JCQkgKiB3aXRob3V0IGFueSBjb25j cmV0ZSBiZW5lZml0IGZvciBjb3JlIHR5cGVzLiAgV2UgbmVlZCBub3QKLQkJCSAqIGFzc2Vz cyBwcGVxb3Agb3IgZmZlcW9wLCB3aGljaCBSSV9Jbml0aWFsX0NoZWNrKCkgZG9lcyBub3Qg dXNlLgotCQkJICovCi0JCQlvbGRfY2hlY2tfb2sgPSAocGZlcW9wID09IGxmaXJzdF9vaWQo b2xkX3BmZXFvcF9pdGVtKSk7Ci0JCQlvbGRfcGZlcW9wX2l0ZW0gPSBsbmV4dChma2NvbnN0 cmFpbnQtPm9sZF9jb25wZmVxb3AsCi0JCQkJCQkJCQlvbGRfcGZlcW9wX2l0ZW0pOwotCQl9 Ci0JCWlmIChvbGRfY2hlY2tfb2spCi0JCXsKLQkJCU9pZAkJCW9sZF9ma3R5cGU7Ci0JCQlP aWQJCQluZXdfZmt0eXBlOwotCQkJQ29lcmNpb25QYXRoVHlwZSBvbGRfcGF0aHR5cGU7Ci0J CQlDb2VyY2lvblBhdGhUeXBlIG5ld19wYXRodHlwZTsKLQkJCU9pZAkJCW9sZF9jYXN0ZnVu YzsKLQkJCU9pZAkJCW5ld19jYXN0ZnVuYzsKLQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHIg PSBUdXBsZURlc2NBdHRyKHRhYi0+b2xkRGVzYywKLQkJCQkJCQkJCQkJCSAgIGZrYXR0bnVt W2ldIC0gMSk7Ci0KLQkJCS8qCi0JCQkgKiBJZGVudGlmeSBjb2VyY2lvbiBwYXRod2F5cyBm cm9tIGVhY2ggb2YgdGhlIG9sZCBhbmQgbmV3IEZLLXNpZGUKLQkJCSAqIGNvbHVtbiB0eXBl cyB0byB0aGUgcmlnaHQgKGZvcmVpZ24pIG9wZXJhbmQgdHlwZSBvZiB0aGUgcGZlcW9wLgot CQkJICogV2UgbWF5IGFzc3VtZSB0aGF0IHBnX2NvbnN0cmFpbnQuY29ua2V5IGlzIG5vdCBj aGFuZ2luZy4KLQkJCSAqLwotCQkJb2xkX2ZrdHlwZSA9IGF0dHItPmF0dHR5cGlkOwotCQkJ bmV3X2ZrdHlwZSA9IGZrdHlwZTsKLQkJCW9sZF9wYXRodHlwZSA9IGZpbmRGa2V5Q2FzdChw ZmVxb3BfcmlnaHQsIG9sZF9ma3R5cGUsCi0JCQkJCQkJCQkJJm9sZF9jYXN0ZnVuYyk7Ci0J CQluZXdfcGF0aHR5cGUgPSBmaW5kRmtleUNhc3QocGZlcW9wX3JpZ2h0LCBuZXdfZmt0eXBl LAotCQkJCQkJCQkJCSZuZXdfY2FzdGZ1bmMpOwotCi0JCQkvKgotCQkJICogVXBvbiBhIGNo YW5nZSB0byB0aGUgY2FzdCBmcm9tIHRoZSBGSyBjb2x1bW4gdG8gaXRzIHBmZXFvcAotCQkJ ICogb3BlcmFuZCwgcmV2YWxpZGF0ZSB0aGUgY29uc3RyYWludC4gIEZvciB0aGlzIGV2YWx1 YXRpb24sIGEKLQkJCSAqIGJpbmFyeSBjb2VyY2lvbiBjYXN0IGlzIGVxdWl2YWxlbnQgdG8g bm8gY2FzdCBhdCBhbGwuICBXaGlsZQotCQkJICogdHlwZSBpbXBsZW1lbnRvcnMgc2hvdWxk IGRlc2lnbiBpbXBsaWNpdCBjYXN0cyB3aXRoIGFuIGV5ZQotCQkJICogdG93YXJkIGNvbnNp c3RlbmN5IG9mIG9wZXJhdGlvbnMgbGlrZSBlcXVhbGl0eSwgd2UgY2Fubm90Ci0JCQkgKiBh c3N1bWUgaGVyZSB0aGF0IHRoZXkgaGF2ZSBkb25lIHNvLgotCQkJICoKLQkJCSAqIEEgZnVu Y3Rpb24gd2l0aCBhIHBvbHltb3JwaGljIGFyZ3VtZW50IGNvdWxkIGNoYW5nZSBiZWhhdmlv cgotCQkJICogYXJiaXRyYXJpbHkgaW4gcmVzcG9uc2UgdG8gZ2V0X2ZuX2V4cHJfYXJndHlw ZSgpLiAgVGhlcmVmb3JlLAotCQkJICogd2hlbiB0aGUgY2FzdCBkZXN0aW5hdGlvbiBpcyBw b2x5bW9ycGhpYywgd2Ugb25seSBhdm9pZAotCQkJICogcmV2YWxpZGF0aW9uIGlmIHRoZSBp bnB1dCB0eXBlIGhhcyBub3QgY2hhbmdlZCBhdCBhbGwuICBHaXZlbgotCQkJICoganVzdCB0 aGUgY29yZSBkYXRhIHR5cGVzIGFuZCBvcGVyYXRvciBjbGFzc2VzLCB0aGlzIHJlcXVpcmVt ZW50Ci0JCQkgKiBwcmV2ZW50cyBubyB3b3VsZC1iZSBvcHRpbWl6YXRpb25zLgotCQkJICoK LQkJCSAqIElmIHRoZSBjYXN0IGNvbnZlcnRzIGZyb20gYSBiYXNlIHR5cGUgdG8gYSBkb21h aW4gdGhlcmVvbiwgdGhlbgotCQkJICogdGhhdCBkb21haW4gdHlwZSBtdXN0IGJlIHRoZSBv cGNpbnR5cGUgb2YgdGhlIHVuaXF1ZSBpbmRleC4KLQkJCSAqIE5lY2Vzc2FyaWx5LCB0aGUg cHJpbWFyeSBrZXkgY29sdW1uIG11c3QgdGhlbiBiZSBvZiB0aGUgZG9tYWluCi0JCQkgKiB0 eXBlLiAgU2luY2UgdGhlIGNvbnN0cmFpbnQgd2FzIHByZXZpb3VzbHkgdmFsaWQsIGFsbCB2 YWx1ZXMgb24KLQkJCSAqIHRoZSBmb3JlaWduIHNpZGUgbmVjZXNzYXJpbHkgZXhpc3Qgb24g dGhlIHByaW1hcnkgc2lkZSBhbmQgaW4KLQkJCSAqIHR1cm4gY29uZm9ybSB0byB0aGUgZG9t YWluLiAgQ29uc2VxdWVudGx5LCB3ZSBuZWVkIG5vdCB0cmVhdAotCQkJICogZG9tYWlucyBz cGVjaWFsbHkgaGVyZS4KLQkJCSAqCi0JCQkgKiBTaW5jZSB3ZSByZXF1aXJlIHRoYXQgYWxs IGNvbGxhdGlvbnMgc2hhcmUgdGhlIHNhbWUgbm90aW9uIG9mCi0JCQkgKiBlcXVhbGl0eSAo d2hpY2ggdGhleSBkbywgYmVjYXVzZSB0ZXh0ZXEgcmVkdWNlcyB0byBiaXR3aXNlCi0JCQkg KiBlcXVhbGl0eSksIHdlIGRvbid0IGNvbXBhcmUgY29sbGF0aW9uIGhlcmUuCi0JCQkgKgot CQkJICogV2UgbmVlZCBub3QgZGlyZWN0bHkgY29uc2lkZXIgdGhlIFBLIHR5cGUuICBJdCdz IG5lY2Vzc2FyaWx5Ci0JCQkgKiBiaW5hcnkgY29lcmNpYmxlIHRvIHRoZSBvcGNpbnR5cGUg b2YgdGhlIHVuaXF1ZSBpbmRleCBjb2x1bW4sCi0JCQkgKiBhbmQgcmlfdHJpZ2dlcnMuYyB3 aWxsIG9ubHkgZGVhbCB3aXRoIFBLIGRhdHVtcyBpbiB0ZXJtcyBvZgotCQkJICogdGhhdCBv cGNpbnR5cGUuICBDaGFuZ2luZyB0aGUgb3BjaW50eXBlIGFsc28gY2hhbmdlcyBwZmVxb3Au Ci0JCQkgKi8KLQkJCW9sZF9jaGVja19vayA9IChuZXdfcGF0aHR5cGUgPT0gb2xkX3BhdGh0 eXBlICYmCi0JCQkJCQkJbmV3X2Nhc3RmdW5jID09IG9sZF9jYXN0ZnVuYyAmJgotCQkJCQkJ CSghSXNQb2x5bW9ycGhpY1R5cGUocGZlcW9wX3JpZ2h0KSB8fAotCQkJCQkJCSBuZXdfZmt0 eXBlID09IG9sZF9ma3R5cGUpKTsKLQkJfQorCQlGaW5kRktDb21wYXJpc29uT3BlcmF0b3Jz KAorCQkJCWZrY29uc3RyYWludCwgdGFiLCBpLCBma2F0dG51bSwKKwkJCQkmb2xkX2NoZWNr X29rLCAmb2xkX3BmZXFvcF9pdGVtLAorCQkJCXBrdHlwb2lkW2ldLCBma3R5cG9pZFtpXSwg b3BjbGFzc2VzW2ldLAorCQkJCWlzX3RlbXBvcmFsLCBmYWxzZSwKKwkJCQkmcGZlcW9wZXJh dG9yc1tpXSwgJnBwZXFvcGVyYXRvcnNbaV0sICZmZmVxb3BlcmF0b3JzW2ldKTsKKwl9CisJ aWYgKGlzX3RlbXBvcmFsKSB7CisJCXBrYXR0bnVtW251bXBrc10gPSBwa3BlcmlvZGF0dG51 bXNbMF07CisJCXBrdHlwb2lkW251bXBrc10gPSBwa3BlcmlvZHR5cG9pZHNbMF07CisJCWZr YXR0bnVtW251bXBrc10gPSBma3BlcmlvZGF0dG51bXNbMF07CisJCWZrdHlwb2lkW251bXBr c10gPSBma3BlcmlvZHR5cG9pZHNbMF07CiAKLQkJcGZlcW9wZXJhdG9yc1tpXSA9IHBmZXFv cDsKLQkJcHBlcW9wZXJhdG9yc1tpXSA9IHBwZXFvcDsKLQkJZmZlcW9wZXJhdG9yc1tpXSA9 IGZmZXFvcDsKKwkJRmluZEZLQ29tcGFyaXNvbk9wZXJhdG9ycygKKwkJCQlma2NvbnN0cmFp bnQsIHRhYiwgbnVtcGtzLCBma2F0dG51bSwKKwkJCQkmb2xkX2NoZWNrX29rLCAmb2xkX3Bm ZXFvcF9pdGVtLAorCQkJCXBrcGVyaW9kdHlwb2lkc1swXSwgZmtwZXJpb2R0eXBvaWRzWzBd LCBvcGNsYXNzZXNbbnVtcGtzXSwKKwkJCQlpc190ZW1wb3JhbCwgdHJ1ZSwKKwkJCQkmcGZl cW9wZXJhdG9yc1tudW1wa3NdLCAmcHBlcW9wZXJhdG9yc1tudW1wa3NdLCAmZmZlcW9wZXJh dG9yc1tudW1wa3NdKTsKKwkJbnVtZmtzICs9IDE7CisJCW51bXBrcyArPSAxOwogCX0KIAog CS8qCkBAIC05OTA2LDcgKzk3OTAsOCBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExp c3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJ CQkJCQkJIG51bWZrZGVsc2V0Y29scywKIAkJCQkJCQkJCSBma2RlbHNldGNvbHMsCiAJCQkJ CQkJCQkgb2xkX2NoZWNrX29rLAotCQkJCQkJCQkJIEludmFsaWRPaWQsIEludmFsaWRPaWQp OworCQkJCQkJCQkJIEludmFsaWRPaWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkgaXNfdGVt cG9yYWwpOwogCiAJLyogTm93IGhhbmRsZSB0aGUgcmVmZXJlbmNpbmcgc2lkZS4gKi8KIAlh ZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyh3cXVldWUsIGZrY29uc3RyYWludCwgcmVsLCBwa3Jl bCwKQEAgLTk5MjIsNyArOTgwNyw4IEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJ CQkJZmtkZWxzZXRjb2xzLAogCQkJCQkJCW9sZF9jaGVja19vaywKIAkJCQkJCQlsb2NrbW9k ZSwKLQkJCQkJCQlJbnZhbGlkT2lkLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQlJbnZhbGlkT2lk LCBJbnZhbGlkT2lkLAorCQkJCQkJCWlzX3RlbXBvcmFsKTsKIAogCS8qCiAJICogRG9uZS4g IENsb3NlIHBrIHRhYmxlLCBidXQga2VlcCBsb2NrIHVudGlsIHdlJ3ZlIGNvbW1pdHRlZC4K QEAgLTEwMDA3LDcgKzk4OTMsOCBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3 cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkg ICBPaWQgKnBwZXFvcGVyYXRvcnMsIE9pZCAqZmZlcW9wZXJhdG9ycywKIAkJCQkJICAgaW50 IG51bWZrZGVsc2V0Y29scywgaW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJICAgYm9vbCBv bGRfY2hlY2tfb2ssCi0JCQkJCSAgIE9pZCBwYXJlbnREZWxUcmlnZ2VyLCBPaWQgcGFyZW50 VXBkVHJpZ2dlcikKKwkJCQkJICAgT2lkIHBhcmVudERlbFRyaWdnZXIsIE9pZCBwYXJlbnRV cGRUcmlnZ2VyLAorCQkJCQkgICBib29sIGlzX3RlbXBvcmFsKQogewogCU9iamVjdEFkZHJl c3MgYWRkcmVzczsKIAlPaWQJCQljb25zdHJPaWQ7CkBAIC0xMDA5Myw3ICs5OTgwLDcgQEAg YWRkRmtSZWN1cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2Nv bnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgY29uaXNsb2NhbCwJLyogaXNs b2NhbCAqLwogCQkJCQkJCQkJICBjb25pbmhjb3VudCwJLyogaW5oY291bnQgKi8KIAkJCQkJ CQkJCSAgY29ubm9pbmhlcml0LCAvKiBjb25Ob0luaGVyaXQgKi8KLQkJCQkJCQkJCSAgZmFs c2UsCS8qIGNvbldpdGhvdXRPdmVybGFwcyAqLworCQkJCQkJCQkJICBpc190ZW1wb3JhbCwJ LyogY29uV2l0aG91dE92ZXJsYXBzICovCiAJCQkJCQkJCQkgIGZhbHNlKTsJLyogaXNfaW50 ZXJuYWwgKi8KIAogCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVzcywgQ29uc3RyYWludFJlbGF0 aW9uSWQsIGNvbnN0ck9pZCk7CkBAIC0xMDE2OSw3ICsxMDA1Niw4IEBAIGFkZEZrUmVjdXJz ZVJlZmVyZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBS ZWxhdGlvbiByZWwsCiAJCQkJCQkJCSAgIHBmZXFvcGVyYXRvcnMsIHBwZXFvcGVyYXRvcnMs IGZmZXFvcGVyYXRvcnMsCiAJCQkJCQkJCSAgIG51bWZrZGVsc2V0Y29scywgZmtkZWxzZXRj b2xzLAogCQkJCQkJCQkgICBvbGRfY2hlY2tfb2ssCi0JCQkJCQkJCSAgIGRlbGV0ZVRyaWdn ZXJPaWQsIHVwZGF0ZVRyaWdnZXJPaWQpOworCQkJCQkJCQkgICBkZWxldGVUcmlnZ2VyT2lk LCB1cGRhdGVUcmlnZ2VyT2lkLAorCQkJCQkJCQkgICBpc190ZW1wb3JhbCk7CiAKIAkJCS8q IERvbmUgLS0gY2xlYW4gdXAgKGJ1dCBrZWVwIHRoZSBsb2NrKSAqLwogCQkJdGFibGVfY2xv c2UocGFydFJlbCwgTm9Mb2NrKTsKQEAgLTEwMjI3LDcgKzEwMTE1LDggQEAgYWRkRmtSZWN1 cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50 LCBSZWxhdGlvbiByZWwsCiAJCQkJCQlPaWQgKnBmZXFvcGVyYXRvcnMsIE9pZCAqcHBlcW9w ZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJCQkJaW50IG51bWZrZGVsc2V0Y29s cywgaW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJCWJvb2wgb2xkX2NoZWNrX29rLCBMT0NL TU9ERSBsb2NrbW9kZSwKLQkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50 VXBkVHJpZ2dlcikKKwkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBk VHJpZ2dlciwKKwkJCQkJCWJvb2wgaXNfdGVtcG9yYWwpCiB7CiAJT2lkCQkJaW5zZXJ0VHJp Z2dlck9pZCwKIAkJCQl1cGRhdGVUcmlnZ2VyT2lkOwpAQCAtMTAyNzUsNiArMTAxNjQsNyBA QCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpm a2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCW5ld2Nvbi0+cmVmcmVsaWQgPSBSZWxh dGlvbkdldFJlbGlkKHBrcmVsKTsKIAkJCW5ld2Nvbi0+cmVmaW5kaWQgPSBpbmRleE9pZDsK IAkJCW5ld2Nvbi0+Y29uaWQgPSBwYXJlbnRDb25zdHI7CisJCQluZXdjb24tPmNvbndpdGhw ZXJpb2QgPSBma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCAhPSBOVUxMOwogCQkJbmV3Y29uLT5x dWFsID0gKE5vZGUgKikgZmtjb25zdHJhaW50OwogCiAJCQl0YWItPmNvbnN0cmFpbnRzID0g bGFwcGVuZCh0YWItPmNvbnN0cmFpbnRzLCBuZXdjb24pOwpAQCAtMTAzOTIsNyArMTAyODIs NyBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50 ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgZmFsc2UsCiAJCQkJ CQkJCQkgIDEsCiAJCQkJCQkJCQkgIGZhbHNlLAotCQkJCQkJCQkJICBmYWxzZSwJLyogY29u V2l0aG91dE92ZXJsYXBzICovCisJCQkJCQkJCQkgIGlzX3RlbXBvcmFsLAkvKiBjb25XaXRo b3V0T3ZlcmxhcHMgKi8KIAkJCQkJCQkJCSAgZmFsc2UpOwogCiAJCQkvKgpAQCAtMTA0MjMs NyArMTAzMTMsOCBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBD b25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCW9sZF9j aGVja19vaywKIAkJCQkJCQkJCWxvY2ttb2RlLAogCQkJCQkJCQkJaW5zZXJ0VHJpZ2dlck9p ZCwKLQkJCQkJCQkJCXVwZGF0ZVRyaWdnZXJPaWQpOworCQkJCQkJCQkJdXBkYXRlVHJpZ2dl ck9pZCwKKwkJCQkJCQkJCWlzX3RlbXBvcmFsKTsKIAogCQkJdGFibGVfY2xvc2UocGFydGl0 aW9uLCBOb0xvY2spOwogCQl9CkBAIC0xMDY1OSw3ICsxMDU1MCw4IEBAIENsb25lRmtSZWZl cmVuY2VkKFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydGl0aW9uUmVsKQogCQkJ CQkJCSAgIGNvbmZkZWxzZXRjb2xzLAogCQkJCQkJCSAgIHRydWUsCiAJCQkJCQkJICAgZGVs ZXRlVHJpZ2dlck9pZCwKLQkJCQkJCQkgICB1cGRhdGVUcmlnZ2VyT2lkKTsKKwkJCQkJCQkg ICB1cGRhdGVUcmlnZ2VyT2lkLAorCQkJCQkJCSAgIGNvbnN0ckZvcm0tPmNvbndpdGhvdXRv dmVybGFwcyk7CiAKIAkJdGFibGVfY2xvc2UoZmtSZWwsIE5vTG9jayk7CiAJCVJlbGVhc2VT eXNDYWNoZSh0dXBsZSk7CkBAIC0xMDg5OCw3ICsxMDc5MCw3IEBAIENsb25lRmtSZWZlcmVu Y2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBhcnRS ZWwpCiAJCQkJCQkJCSAgZmFsc2UsCS8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJICAxLAkvKiBp bmhjb3VudCAqLwogCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25Ob0luaGVyaXQgKi8KLQkJCQkJ CQkJICBmYWxzZSwJLyogY29uV2l0aG91dE92ZXJsYXBzICovCisJCQkJCQkJCSAgY29uc3Ry Rm9ybS0+Y29ud2l0aG91dG92ZXJsYXBzLAkvKiBjb25XaXRob3V0T3ZlcmxhcHMgKi8KIAkJ CQkJCQkJICB0cnVlKTsKIAogCQkvKiBTZXQgdXAgcGFydGl0aW9uIGRlcGVuZGVuY2llcyBm b3IgdGhlIG5ldyBjb25zdHJhaW50ICovCkBAIC0xMDkzMiwxMyArMTA4MjQsMjQ1IEBAIENs b25lRmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJlbnRSZWwsIFJl bGF0aW9uIHBhcnRSZWwpCiAJCQkJCQkJCWZhbHNlLAkvKiBubyBvbGQgY2hlY2sgZXhpc3Rz ICovCiAJCQkJCQkJCUFjY2Vzc0V4Y2x1c2l2ZUxvY2ssCiAJCQkJCQkJCWluc2VydFRyaWdn ZXJPaWQsCi0JCQkJCQkJCXVwZGF0ZVRyaWdnZXJPaWQpOworCQkJCQkJCQl1cGRhdGVUcmln Z2VyT2lkLAorCQkJCQkJCQljb25zdHJGb3JtLT5jb253aXRob3V0b3ZlcmxhcHMpOwogCQl0 YWJsZV9jbG9zZShwa3JlbCwgTm9Mb2NrKTsKIAl9CiAKIAl0YWJsZV9jbG9zZSh0cmlncmVs LCBSb3dFeGNsdXNpdmVMb2NrKTsKIH0KIAorc3RhdGljIHZvaWQKK0ZpbmRGS0NvbXBhcmlz b25PcGVyYXRvcnMoQ29uc3RyYWludCAqZmtjb25zdHJhaW50LAorCQlBbHRlcmVkVGFibGVJ bmZvICp0YWIsCisJCWludCBpLAorCQlpbnQxNiAqZmthdHRudW0sCisJCWJvb2wgKm9sZF9j aGVja19vaywKKwkJTGlzdENlbGwgKipvbGRfcGZlcW9wX2l0ZW0sCisJCU9pZCBwa3R5cGUs IE9pZCBma3R5cGUsIE9pZCBvcGNsYXNzLAorCQlib29sIGlzX3RlbXBvcmFsLCBib29sIGZv cl9vdmVybGFwcywKKwkJT2lkICpwZmVxb3BPdXQsIE9pZCAqcHBlcW9wT3V0LCBPaWQgKmZm ZXFvcE91dCkKK3sKKwlPaWQJCQlma3R5cGVkOworCUhlYXBUdXBsZQljbGFfaHQ7CisJRm9y bV9wZ19vcGNsYXNzIGNsYV90dXA7CisJT2lkCQkJYW1pZDsKKwlPaWQJCQlvcGZhbWlseTsK KwlPaWQJCQlvcGNpbnR5cGU7CisJT2lkCQkJcGZlcW9wOworCU9pZAkJCXBwZXFvcDsKKwlP aWQJCQlmZmVxb3A7CisJaW50MTYJCWVxc3RyYXRlZ3k7CisJT2lkCQkJcGZlcW9wX3JpZ2h0 OworCisJLyogV2UgbmVlZCBzZXZlcmFsIGZpZWxkcyBvdXQgb2YgdGhlIHBnX29wY2xhc3Mg ZW50cnkgKi8KKwljbGFfaHQgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBPYmplY3RJZEdl dERhdHVtKG9wY2xhc3MpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY2xhX2h0KSkKKwkJ ZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wY2xhc3MgJXUiLCBvcGNs YXNzKTsKKwljbGFfdHVwID0gKEZvcm1fcGdfb3BjbGFzcykgR0VUU1RSVUNUKGNsYV9odCk7 CisJYW1pZCA9IGNsYV90dXAtPm9wY21ldGhvZDsKKwlvcGZhbWlseSA9IGNsYV90dXAtPm9w Y2ZhbWlseTsKKwlvcGNpbnR5cGUgPSBjbGFfdHVwLT5vcGNpbnR5cGU7CisJUmVsZWFzZVN5 c0NhY2hlKGNsYV9odCk7CisKKwlpZiAoaXNfdGVtcG9yYWwpCisJeworCQlpZiAoYW1pZCAh PSBHSVNUX0FNX09JRCkKKwkJCWVsb2coRVJST1IsICJvbmx5IEdpU1QgaW5kZXhlcyBhcmUg c3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMiKTsKKwkJLyoKKwkJICogRm9y IHRoZSBub24tb3ZlcmxhcHMgcGFydHMsIHdlIHdhbnQgZWl0aGVyIFJURXF1YWxTdHJhdGVn eU51bWJlciAod2l0aG91dCBidHJlZV9naXN0KQorCQkgKiBvciBCVEVxdWFsU3RyYXRlZ3lO dW1iZXIgKHdpdGggYnRyZWVfZ2lzdCkuIFdlJ2xsIHRyeSB0aGUgbGF0dGVyIGZpcnN0Lgor CQkgKi8KKwkJZXFzdHJhdGVneSA9IGZvcl9vdmVybGFwcyA/IFJUT3ZlcmxhcFN0cmF0ZWd5 TnVtYmVyIDogQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOworCX0KKwllbHNlCisJeworCQkvKgor CQkgKiBDaGVjayBpdCdzIGEgYnRyZWU7IGN1cnJlbnRseSB0aGlzIGNhbiBuZXZlciBmYWls IHNpbmNlIG5vIG90aGVyCisJCSAqIGluZGV4IEFNcyBzdXBwb3J0IHVuaXF1ZSBpbmRleGVz LiAgSWYgd2UgZXZlciBkaWQgaGF2ZSBvdGhlciB0eXBlcworCQkgKiBvZiB1bmlxdWUgaW5k ZXhlcywgd2UnZCBuZWVkIGEgd2F5IHRvIGRldGVybWluZSB3aGljaCBvcGVyYXRvcgorCQkg KiBzdHJhdGVneSBudW1iZXIgaXMgZXF1YWxpdHkuICAoSXMgaXQgcmVhc29uYWJsZSB0byBp bnNpc3QgdGhhdAorCQkgKiBldmVyeSBzdWNoIGluZGV4IEFNIHVzZSBidHJlZSdzIG51bWJl ciBmb3IgZXF1YWxpdHk/KQorCQkgKi8KKwkJaWYgKGFtaWQgIT0gQlRSRUVfQU1fT0lEKQor CQkJZWxvZyhFUlJPUiwgIm9ubHkgYi10cmVlIGluZGV4ZXMgYXJlIHN1cHBvcnRlZCBmb3Ig Zm9yZWlnbiBrZXlzIik7CisJCWVxc3RyYXRlZ3kgPSBCVEVxdWFsU3RyYXRlZ3lOdW1iZXI7 CisJfQorCisJLyoKKwkgKiBUaGVyZSBoYWQgYmV0dGVyIGJlIGEgcHJpbWFyeSBlcXVhbGl0 eSBvcGVyYXRvciBmb3IgdGhlIGluZGV4LgorCSAqIFdlJ2xsIHVzZSBpdCBmb3IgUEsgPSBQ SyBjb21wYXJpc29ucy4KKwkgKi8KKwlwcGVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9w ZmFtaWx5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwKKwkJCQkJCQkJIGVxc3RyYXRlZ3kpOwor CisJLyogRmFsbCBiYWNrIHRvIFJURXF1YWxTdHJhdGVneU51bWJlciBmb3IgdGVtcG9yYWwg b3ZlcmxhcHMgKi8KKwlpZiAoaXNfdGVtcG9yYWwgJiYgIWZvcl9vdmVybGFwcyAmJiAhT2lk SXNWYWxpZChwcGVxb3ApKQorCXsKKwkJZXFzdHJhdGVneSA9IFJURXF1YWxTdHJhdGVneU51 bWJlcjsKKwkJcHBlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50 eXBlLCBvcGNpbnR5cGUsCisJCQkJCQkJCQkgZXFzdHJhdGVneSk7CisJfQorCisKKwlpZiAo IU9pZElzVmFsaWQocHBlcW9wKSkKKwkJZWxvZyhFUlJPUiwgIm1pc3Npbmcgb3BlcmF0b3Ig JWQoJXUsJXUpIGluIG9wZmFtaWx5ICV1IiwKKwkJCSBlcXN0cmF0ZWd5LCBvcGNpbnR5cGUs IG9wY2ludHlwZSwgb3BmYW1pbHkpOworCisJLyoKKwkgKiBBcmUgdGhlcmUgZXF1YWxpdHkg b3BlcmF0b3JzIHRoYXQgdGFrZSBleGFjdGx5IHRoZSBGSyB0eXBlPyBBc3N1bWUKKwkgKiB3 ZSBzaG91bGQgbG9vayB0aHJvdWdoIGFueSBkb21haW4gaGVyZS4KKwkgKi8KKwlma3R5cGVk ID0gZ2V0QmFzZVR5cGUoZmt0eXBlKTsKKworCXBmZXFvcCA9IGdldF9vcGZhbWlseV9tZW1i ZXIob3BmYW1pbHksIG9wY2ludHlwZSwgZmt0eXBlZCwKKwkJCQkJCQkJIGVxc3RyYXRlZ3kp OworCWlmIChPaWRJc1ZhbGlkKHBmZXFvcCkpCisJeworCQlwZmVxb3BfcmlnaHQgPSBma3R5 cGVkOworCQlmZmVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBma3R5cGVk LCBma3R5cGVkLAorCQkJCQkJCQkJIGVxc3RyYXRlZ3kpOworCX0KKwllbHNlCisJeworCQkv KiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJCXBmZXFvcF9yaWdodCA9IEludmFsaWRPaWQ7 CisJCWZmZXFvcCA9IEludmFsaWRPaWQ7CisJfQorCisJaWYgKCEoT2lkSXNWYWxpZChwZmVx b3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCisJeworCQkvKgorCQkgKiBPdGhlcndpc2Us IGxvb2sgZm9yIGFuIGltcGxpY2l0IGNhc3QgZnJvbSB0aGUgRksgdHlwZSB0byB0aGUKKwkJ ICogb3BjaW50eXBlLCBhbmQgaWYgZm91bmQsIHVzZSB0aGUgcHJpbWFyeSBlcXVhbGl0eSBv cGVyYXRvci4KKwkJICogVGhpcyBpcyBhIGJpdCB0cmlja3kgYmVjYXVzZSBvcGNpbnR5cGUg bWlnaHQgYmUgYSBwb2x5bW9ycGhpYworCQkgKiB0eXBlIHN1Y2ggYXMgQU5ZQVJSQVkgb3Ig QU5ZRU5VTTsgc28gd2hhdCB3ZSBoYXZlIHRvIHRlc3QgaXMKKwkJICogd2hldGhlciB0aGUg dHdvIGFjdHVhbCBjb2x1bW4gdHlwZXMgY2FuIGJlIGNvbmN1cnJlbnRseSBjYXN0IHRvCisJ CSAqIHRoYXQgdHlwZS4gIChPdGhlcndpc2UsIHdlJ2QgZmFpbCB0byByZWplY3QgY29tYmlu YXRpb25zIHN1Y2gKKwkJICogYXMgaW50W10gYW5kIHBvaW50W10uKQorCQkgKi8KKwkJT2lk CQkJaW5wdXRfdHlwZWlkc1syXTsKKwkJT2lkCQkJdGFyZ2V0X3R5cGVpZHNbMl07CisKKwkJ aW5wdXRfdHlwZWlkc1swXSA9IHBrdHlwZTsKKwkJaW5wdXRfdHlwZWlkc1sxXSA9IGZrdHlw ZTsKKwkJdGFyZ2V0X3R5cGVpZHNbMF0gPSBvcGNpbnR5cGU7CisJCXRhcmdldF90eXBlaWRz WzFdID0gb3BjaW50eXBlOworCQlpZiAoY2FuX2NvZXJjZV90eXBlKDIsIGlucHV0X3R5cGVp ZHMsIHRhcmdldF90eXBlaWRzLAorCQkJCQkJCUNPRVJDSU9OX0lNUExJQ0lUKSkKKwkJewor CQkJcGZlcW9wID0gZmZlcW9wID0gcHBlcW9wOworCQkJcGZlcW9wX3JpZ2h0ID0gb3BjaW50 eXBlOworCQl9CisJfQorCisJaWYgKCEoT2lkSXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFs aWQoZmZlcW9wKSkpCisJeworCQljaGFyICpma2F0dHJfbmFtZTsKKwkJY2hhciAqcGthdHRy X25hbWU7CisKKwkJaWYgKGZvcl9vdmVybGFwcykKKwkJeworCQkJZmthdHRyX25hbWUgPSBz dHJWYWwoZmtjb25zdHJhaW50LT5ma19wZXJpb2QpOworCQkJcGthdHRyX25hbWUgPSBzdHJW YWwoZmtjb25zdHJhaW50LT5wa19wZXJpb2QpOworCQl9CisJCWVsc2UKKwkJeworCQkJZmth dHRyX25hbWUgPSBzdHJWYWwobGlzdF9udGgoZmtjb25zdHJhaW50LT5ma19hdHRycywgaSkp OworCQkJcGthdHRyX25hbWUgPSBzdHJWYWwobGlzdF9udGgoZmtjb25zdHJhaW50LT5wa19h dHRycywgaSkpOworCQl9CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkgZXJybXNnKCJmb3JlaWduIGtleSBjb25z dHJhaW50IFwiJXNcIiBjYW5ub3QgYmUgaW1wbGVtZW50ZWQiLAorCQkJCQkJZmtjb25zdHJh aW50LT5jb25uYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJLZXkgY29sdW1ucyBcIiVzXCIgYW5k IFwiJXNcIiAiCisJCQkJCQkgICAiYXJlIG9mIGluY29tcGF0aWJsZSB0eXBlczogJXMgYW5k ICVzLiIsCisJCQkJCQkgICBma2F0dHJfbmFtZSwKKwkJCQkJCSAgIHBrYXR0cl9uYW1lLAor CQkJCQkJICAgZm9ybWF0X3R5cGVfYmUoZmt0eXBlKSwKKwkJCQkJCSAgIGZvcm1hdF90eXBl X2JlKHBrdHlwZSkpKSk7CisJfQorCisJaWYgKCpvbGRfY2hlY2tfb2spCisJeworCQkvKgor CQkgKiBXaGVuIGEgcGZlcW9wIGNoYW5nZXMsIHJldmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQu ICBXZSBjb3VsZAorCQkgKiBwZXJtaXQgaW50cmEtb3BmYW1pbHkgY2hhbmdlcywgYnV0IHRo YXQgYWRkcyBzdWJ0bGUgY29tcGxleGl0eQorCQkgKiB3aXRob3V0IGFueSBjb25jcmV0ZSBi ZW5lZml0IGZvciBjb3JlIHR5cGVzLiAgV2UgbmVlZCBub3QKKwkJICogYXNzZXNzIHBwZXFv cCBvciBmZmVxb3AsIHdoaWNoIFJJX0luaXRpYWxfQ2hlY2soKSBkb2VzIG5vdCB1c2UuCisJ CSAqLworCQkqb2xkX2NoZWNrX29rID0gKHBmZXFvcCA9PSBsZmlyc3Rfb2lkKCpvbGRfcGZl cW9wX2l0ZW0pKTsKKwkJKm9sZF9wZmVxb3BfaXRlbSA9IGxuZXh0KGZrY29uc3RyYWludC0+ b2xkX2NvbnBmZXFvcCwKKwkJCQkJCQkJKm9sZF9wZmVxb3BfaXRlbSk7CisJfQorCWlmICgq b2xkX2NoZWNrX29rKQorCXsKKwkJT2lkCQkJb2xkX2ZrdHlwZTsKKwkJT2lkCQkJbmV3X2Zr dHlwZTsKKwkJQ29lcmNpb25QYXRoVHlwZSBvbGRfcGF0aHR5cGU7CisJCUNvZXJjaW9uUGF0 aFR5cGUgbmV3X3BhdGh0eXBlOworCQlPaWQJCQlvbGRfY2FzdGZ1bmM7CisJCU9pZAkJCW5l d19jYXN0ZnVuYzsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIo dGFiLT5vbGREZXNjLAorCQkJCQkJCQkJCQkgICBma2F0dG51bVtpXSAtIDEpOworCisJCS8q CisJCSAqIElkZW50aWZ5IGNvZXJjaW9uIHBhdGh3YXlzIGZyb20gZWFjaCBvZiB0aGUgb2xk IGFuZCBuZXcgRkstc2lkZQorCQkgKiBjb2x1bW4gdHlwZXMgdG8gdGhlIHJpZ2h0IChmb3Jl aWduKSBvcGVyYW5kIHR5cGUgb2YgdGhlIHBmZXFvcC4KKwkJICogV2UgbWF5IGFzc3VtZSB0 aGF0IHBnX2NvbnN0cmFpbnQuY29ua2V5IGlzIG5vdCBjaGFuZ2luZy4KKwkJICovCisJCW9s ZF9ma3R5cGUgPSBhdHRyLT5hdHR0eXBpZDsKKwkJbmV3X2ZrdHlwZSA9IGZrdHlwZTsKKwkJ b2xkX3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdodCwgb2xkX2ZrdHlwZSwK KwkJCQkJCQkJCSZvbGRfY2FzdGZ1bmMpOworCQluZXdfcGF0aHR5cGUgPSBmaW5kRmtleUNh c3QocGZlcW9wX3JpZ2h0LCBuZXdfZmt0eXBlLAorCQkJCQkJCQkJJm5ld19jYXN0ZnVuYyk7 CisKKwkJLyoKKwkJICogVXBvbiBhIGNoYW5nZSB0byB0aGUgY2FzdCBmcm9tIHRoZSBGSyBj b2x1bW4gdG8gaXRzIHBmZXFvcAorCQkgKiBvcGVyYW5kLCByZXZhbGlkYXRlIHRoZSBjb25z dHJhaW50LiAgRm9yIHRoaXMgZXZhbHVhdGlvbiwgYQorCQkgKiBiaW5hcnkgY29lcmNpb24g Y2FzdCBpcyBlcXVpdmFsZW50IHRvIG5vIGNhc3QgYXQgYWxsLiAgV2hpbGUKKwkJICogdHlw ZSBpbXBsZW1lbnRvcnMgc2hvdWxkIGRlc2lnbiBpbXBsaWNpdCBjYXN0cyB3aXRoIGFuIGV5 ZQorCQkgKiB0b3dhcmQgY29uc2lzdGVuY3kgb2Ygb3BlcmF0aW9ucyBsaWtlIGVxdWFsaXR5 LCB3ZSBjYW5ub3QKKwkJICogYXNzdW1lIGhlcmUgdGhhdCB0aGV5IGhhdmUgZG9uZSBzby4K KwkJICoKKwkJICogQSBmdW5jdGlvbiB3aXRoIGEgcG9seW1vcnBoaWMgYXJndW1lbnQgY291 bGQgY2hhbmdlIGJlaGF2aW9yCisJCSAqIGFyYml0cmFyaWx5IGluIHJlc3BvbnNlIHRvIGdl dF9mbl9leHByX2FyZ3R5cGUoKS4gIFRoZXJlZm9yZSwKKwkJICogd2hlbiB0aGUgY2FzdCBk ZXN0aW5hdGlvbiBpcyBwb2x5bW9ycGhpYywgd2Ugb25seSBhdm9pZAorCQkgKiByZXZhbGlk YXRpb24gaWYgdGhlIGlucHV0IHR5cGUgaGFzIG5vdCBjaGFuZ2VkIGF0IGFsbC4gIEdpdmVu CisJCSAqIGp1c3QgdGhlIGNvcmUgZGF0YSB0eXBlcyBhbmQgb3BlcmF0b3IgY2xhc3Nlcywg dGhpcyByZXF1aXJlbWVudAorCQkgKiBwcmV2ZW50cyBubyB3b3VsZC1iZSBvcHRpbWl6YXRp b25zLgorCQkgKgorCQkgKiBJZiB0aGUgY2FzdCBjb252ZXJ0cyBmcm9tIGEgYmFzZSB0eXBl IHRvIGEgZG9tYWluIHRoZXJlb24sIHRoZW4KKwkJICogdGhhdCBkb21haW4gdHlwZSBtdXN0 IGJlIHRoZSBvcGNpbnR5cGUgb2YgdGhlIHVuaXF1ZSBpbmRleC4KKwkJICogTmVjZXNzYXJp bHksIHRoZSBwcmltYXJ5IGtleSBjb2x1bW4gbXVzdCB0aGVuIGJlIG9mIHRoZSBkb21haW4K KwkJICogdHlwZS4gIFNpbmNlIHRoZSBjb25zdHJhaW50IHdhcyBwcmV2aW91c2x5IHZhbGlk LCBhbGwgdmFsdWVzIG9uCisJCSAqIHRoZSBmb3JlaWduIHNpZGUgbmVjZXNzYXJpbHkgZXhp c3Qgb24gdGhlIHByaW1hcnkgc2lkZSBhbmQgaW4KKwkJICogdHVybiBjb25mb3JtIHRvIHRo ZSBkb21haW4uICBDb25zZXF1ZW50bHksIHdlIG5lZWQgbm90IHRyZWF0CisJCSAqIGRvbWFp bnMgc3BlY2lhbGx5IGhlcmUuCisJCSAqCisJCSAqIFNpbmNlIHdlIHJlcXVpcmUgdGhhdCBh bGwgY29sbGF0aW9ucyBzaGFyZSB0aGUgc2FtZSBub3Rpb24gb2YKKwkJICogZXF1YWxpdHkg KHdoaWNoIHRoZXkgZG8sIGJlY2F1c2UgdGV4dGVxIHJlZHVjZXMgdG8gYml0d2lzZQorCQkg KiBlcXVhbGl0eSksIHdlIGRvbid0IGNvbXBhcmUgY29sbGF0aW9uIGhlcmUuCisJCSAqCisJ CSAqIFdlIG5lZWQgbm90IGRpcmVjdGx5IGNvbnNpZGVyIHRoZSBQSyB0eXBlLiAgSXQncyBu ZWNlc3NhcmlseQorCQkgKiBiaW5hcnkgY29lcmNpYmxlIHRvIHRoZSBvcGNpbnR5cGUgb2Yg dGhlIHVuaXF1ZSBpbmRleCBjb2x1bW4sCisJCSAqIGFuZCByaV90cmlnZ2Vycy5jIHdpbGwg b25seSBkZWFsIHdpdGggUEsgZGF0dW1zIGluIHRlcm1zIG9mCisJCSAqIHRoYXQgb3BjaW50 eXBlLiAgQ2hhbmdpbmcgdGhlIG9wY2ludHlwZSBhbHNvIGNoYW5nZXMgcGZlcW9wLgorCQkg Ki8KKwkJKm9sZF9jaGVja19vayA9IChuZXdfcGF0aHR5cGUgPT0gb2xkX3BhdGh0eXBlICYm CisJCQkJCQluZXdfY2FzdGZ1bmMgPT0gb2xkX2Nhc3RmdW5jICYmCisJCQkJCQkoIUlzUG9s eW1vcnBoaWNUeXBlKHBmZXFvcF9yaWdodCkgfHwKKwkJCQkJCSBuZXdfZmt0eXBlID09IG9s ZF9ma3R5cGUpKTsKKworCX0KKworCSpwZmVxb3BPdXQgPSBwZmVxb3A7CisJKnBwZXFvcE91 dCA9IHBwZXFvcDsKKwkqZmZlcW9wT3V0ID0gZmZlcW9wOworfQorCiAvKgogICogV2hlbiB0 aGUgcGFyZW50IG9mIGEgcGFydGl0aW9uIHJlY2VpdmVzIFt0aGUgcmVmZXJlbmNpbmcgc2lk ZSBvZl0gYSBmb3JlaWduCiAgKiBrZXksIHdlIG11c3QgcHJvcGFnYXRlIHRoYXQgZm9yZWln biBrZXkgdG8gdGhlIHBhcnRpdGlvbi4gIEhvd2V2ZXIsIHRoZQpAQCAtMTE0MzYsNyArMTE1 NjAsMTEgQEAgQVRFeGVjQWx0ZXJDb25zdHJSZWN1cnNlKENvbnN0cmFpbnQgKmNtZGNvbiwg UmVsYXRpb24gY29ucmVsLCBSZWxhdGlvbiB0Z3JlbCwKIAkJCWlmICh0Z2Zvcm0tPnRnZm9p ZCAhPSBGX1JJX0ZLRVlfTk9BQ1RJT05fREVMICYmCiAJCQkJdGdmb3JtLT50Z2ZvaWQgIT0g Rl9SSV9GS0VZX05PQUNUSU9OX1VQRCAmJgogCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZfUklf RktFWV9DSEVDS19JTlMgJiYKLQkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZLRVlfQ0hF Q0tfVVBEKQorCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZfUklfRktFWV9DSEVDS19VUEQgJiYK KwkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1RSSV9GS0VZX05PQUNUSU9OX0RFTCAmJgorCQkJ CXRnZm9ybS0+dGdmb2lkICE9IEZfVFJJX0ZLRVlfTk9BQ1RJT05fVVBEICYmCisJCQkJdGdm b3JtLT50Z2ZvaWQgIT0gRl9UUklfRktFWV9DSEVDS19JTlMgJiYKKwkJCQl0Z2Zvcm0tPnRn Zm9pZCAhPSBGX1RSSV9GS0VZX0NIRUNLX1VQRCkKIAkJCQljb250aW51ZTsKIAogCQkJdGdD b3B5VHVwbGUgPSBoZWFwX2NvcHl0dXBsZSh0Z3R1cGxlKTsKQEAgLTExNjgzLDcgKzExODEx LDYgQEAgQVRFeGVjVmFsaWRhdGVDb25zdHJhaW50KExpc3QgKip3cXVldWUsIFJlbGF0aW9u IHJlbCwgY2hhciAqY29uc3RyTmFtZSwKIAlyZXR1cm4gYWRkcmVzczsKIH0KIAotCiAvKgog ICogdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QgLSB0cmFuc2Zvcm0gbGlzdCBvZiBjb2x1bW4g bmFtZXMKICAqCkBAIC0xMTc0OSw3ICsxMTg3Niw5IEBAIHRyYW5zZm9ybUNvbHVtbk5hbWVM aXN0KE9pZCByZWxJZCwgTGlzdCAqY29sTGlzdCwKIHN0YXRpYyBpbnQKIHRyYW5zZm9ybUZr ZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAogCQkJCQkJ ICAgTGlzdCAqKmF0dG5hbWVsaXN0LAorCQkJCQkJICAgTm9kZSAqKnBrX3BlcmlvZCwKIAkJ CQkJCSAgIGludDE2ICphdHRudW1zLCBPaWQgKmF0dHR5cGlkcywKKwkJCQkJCSAgIGludDE2 ICpwZXJpb2RhdHRudW1zLCBPaWQgKnBlcmlvZGF0dHR5cGlkcywKIAkJCQkJCSAgIE9pZCAq b3BjbGFzc2VzKQogewogCUxpc3QJICAgKmluZGV4b2lkbGlzdDsKQEAgLTExODE0LDM2ICsx MTk0Myw1NSBAQCB0cmFuc2Zvcm1Ga2V5R2V0UHJpbWFyeUtleShSZWxhdGlvbiBwa3JlbCwg T2lkICppbmRleE9pZCwKIAogCS8qCiAJICogTm93IGJ1aWxkIHRoZSBsaXN0IG9mIFBLIGF0 dHJpYnV0ZXMgZnJvbSB0aGUgaW5ka2V5IGRlZmluaXRpb24gKHdlCi0JICogYXNzdW1lIGEg cHJpbWFyeSBrZXkgY2Fubm90IGhhdmUgZXhwcmVzc2lvbmFsIGVsZW1lbnRzKQorCSAqIGFz c3VtZSBhIHByaW1hcnkga2V5IGNhbm5vdCBoYXZlIGV4cHJlc3Npb25hbCBlbGVtZW50cywg dW5sZXNzIGl0CisJICogaGFzIGEgUEVSSU9EKQogCSAqLwogCSphdHRuYW1lbGlzdCA9IE5J TDsKIAlmb3IgKGkgPSAwOyBpIDwgaW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzOyBpKyspCiAJ ewogCQlpbnQJCQlwa2F0dG5vID0gaW5kZXhTdHJ1Y3QtPmluZGtleS52YWx1ZXNbaV07CiAK LQkJYXR0bnVtc1tpXSA9IHBrYXR0bm87Ci0JCWF0dHR5cGlkc1tpXSA9IGF0dG51bVR5cGVJ ZChwa3JlbCwgcGthdHRubyk7Ci0JCW9wY2xhc3Nlc1tpXSA9IGluZGNsYXNzLT52YWx1ZXNb aV07Ci0JCSphdHRuYW1lbGlzdCA9IGxhcHBlbmQoKmF0dG5hbWVsaXN0LAotCQkJCQkJCSAg IG1ha2VTdHJpbmcocHN0cmR1cChOYW1lU3RyKCphdHRudW1BdHROYW1lKHBrcmVsLCBwa2F0 dG5vKSkpKSk7CisJCWlmIChpID09IGluZGV4U3RydWN0LT5pbmRua2V5YXR0cyAtIDEgJiYg aW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uKQorCQl7CisJCQkvKiB3ZSBoYXZlIGEgcmFu Z2UgKi8KKwkJCS8qIFRoZSBjYWxsZXIgd2lsbCBzZXQgYXR0bnVtc1tpXSAqLworCQkJcGVy aW9kYXR0bnVtc1swXSA9IHBrYXR0bm87CisJCQlwZXJpb2RhdHR0eXBpZHNbMF0gPSBhdHRu dW1UeXBlSWQocGtyZWwsIHBrYXR0bm8pOworCQkJb3BjbGFzc2VzW2ldID0gaW5kY2xhc3Mt PnZhbHVlc1tpXTsKKworCQkJQXNzZXJ0KCpwa19wZXJpb2QgPT0gTlVMTCk7CisJCQkqcGtf cGVyaW9kID0gKE5vZGUgKikgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIoKmF0dG51bUF0 dE5hbWUocGtyZWwsIHBrYXR0bm8pKSkpOworCQl9CisJCWVsc2UKKwkJeworCQkJYXR0bnVt c1tpXSA9IHBrYXR0bm87CisJCQlhdHR0eXBpZHNbaV0gPSBhdHRudW1UeXBlSWQocGtyZWws IHBrYXR0bm8pOworCQkJb3BjbGFzc2VzW2ldID0gaW5kY2xhc3MtPnZhbHVlc1tpXTsKKwkJ CSphdHRuYW1lbGlzdCA9IGxhcHBlbmQoKmF0dG5hbWVsaXN0LAorCQkJCQkJCQkgIG1ha2VT dHJpbmcocHN0cmR1cChOYW1lU3RyKCphdHRudW1BdHROYW1lKHBrcmVsLCBwa2F0dG5vKSkp KSk7CisJCX0KIAl9CiAKIAlSZWxlYXNlU3lzQ2FjaGUoaW5kZXhUdXBsZSk7CiAKLQlyZXR1 cm4gaTsKKwlpZiAoaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uKSByZXR1cm4gaSAtIDE7 CisJZWxzZSByZXR1cm4gaTsKIH0KIAogLyoKICAqIHRyYW5zZm9ybUZrZXlDaGVja0F0dHJz IC0KICAqCiAgKglNYWtlIHN1cmUgdGhhdCB0aGUgYXR0cmlidXRlcyBvZiBhIHJlZmVyZW5j ZWQgdGFibGUgYmVsb25nIHRvIGEgdW5pcXVlCi0gKgkob3IgcHJpbWFyeSBrZXkpIGNvbnN0 cmFpbnQuICBSZXR1cm4gdGhlIE9JRCBvZiB0aGUgaW5kZXggc3VwcG9ydGluZwotICoJdGhl IGNvbnN0cmFpbnQsIGFzIHdlbGwgYXMgdGhlIG9wY2xhc3NlcyBhc3NvY2lhdGVkIHdpdGgg dGhlIGluZGV4CisgKgkob3IgcHJpbWFyeSBrZXkpIGNvbnN0cmFpbnQuICBPciBpZiB0aGlz IGlzIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXkKKyAqCXRoZSBwcmltYXJ5IGtleSBzaG91bGQg YmUgYW4gZXhjbHVzaW9uIGNvbnN0cmFpbnQgaW5zdGVhZC4KKyAqCVJldHVybiB0aGUgT0lE IG9mIHRoZSBpbmRleCBzdXBwb3J0aW5nIHRoZSBjb25zdHJhaW50LAorICoJYXMgd2VsbCBh cyB0aGUgb3BjbGFzc2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5kZXgKICAqCWNvbHVtbnMu CiAgKi8KIHN0YXRpYyBPaWQKIHRyYW5zZm9ybUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBr cmVsLAogCQkJCQkJaW50IG51bWF0dHJzLCBpbnQxNiAqYXR0bnVtcywKKwkJCQkJCWJvb2wg aXNfdGVtcG9yYWwsIGludDE2IHBlcmlvZGF0dG51bSwKIAkJCQkJCU9pZCAqb3BjbGFzc2Vz KSAvKiBvdXRwdXQgcGFyYW1ldGVyICovCiB7CiAJT2lkCQkJaW5kZXhvaWQgPSBJbnZhbGlk T2lkOwpAQCAtMTE4NzAsNiArMTIwMTgsMTAgQEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMo UmVsYXRpb24gcGtyZWwsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfRk9SRUlH Tl9LRVkpLAogCQkJCQkJIGVycm1zZygiZm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5z IGxpc3QgbXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGVzIikpKTsKIAkJfQorCQlpZiAoaXNf dGVtcG9yYWwgJiYgYXR0bnVtc1tpXSA9PSBwZXJpb2RhdHRudW0pCisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfRk9SRUlHTl9LRVkpLAorCQkJ CQkgZXJybXNnKCJmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5v dCBjb250YWluIGR1cGxpY2F0ZXMiKSkpOwogCX0KIAogCS8qCkBAIC0xMTg5MSwxMiArMTIw NDMsMTYgQEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCWlu ZGV4U3RydWN0ID0gKEZvcm1fcGdfaW5kZXgpIEdFVFNUUlVDVChpbmRleFR1cGxlKTsKIAog CQkvKgotCQkgKiBNdXN0IGhhdmUgdGhlIHJpZ2h0IG51bWJlciBvZiBjb2x1bW5zOyBtdXN0 IGJlIHVuaXF1ZSBhbmQgbm90IGEKLQkJICogcGFydGlhbCBpbmRleDsgZm9yZ2V0IGl0IGlm IHRoZXJlIGFyZSBhbnkgZXhwcmVzc2lvbnMsIHRvby4gSW52YWxpZAotCQkgKiBpbmRleGVz IGFyZSBvdXQgYXMgd2VsbC4KKwkJICogTXVzdCBoYXZlIHRoZSByaWdodCBudW1iZXIgb2Yg Y29sdW1uczsgbXVzdCBiZSB1bmlxdWUKKwkJICogKG9yIGlmIHRlbXBvcmFsIHRoZW4gZXhj bHVzaW9uIGluc3RlYWQpIGFuZCBub3QgYQorCQkgKiBwYXJ0aWFsIGluZGV4OyBmb3JnZXQg aXQgaWYgdGhlcmUgYXJlIGFueSBleHByZXNzaW9ucywgdG9vLgorCQkgKiBJbnZhbGlkIGlu ZGV4ZXMgYXJlIG91dCBhcyB3ZWxsLgogCQkgKi8KLQkJaWYgKGluZGV4U3RydWN0LT5pbmRu a2V5YXR0cyA9PSBudW1hdHRycyAmJgotCQkJaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlICYm CisJCWlmICgoaXNfdGVtcG9yYWwKKwkJCSAgPyAoaW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRz ID09IG51bWF0dHJzICsgMSAmJgorCQkJCSBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24p CisJCQkgIDogKGluZGV4U3RydWN0LT5pbmRua2V5YXR0cyA9PSBudW1hdHRycyAmJgorCQkJ CSBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUpKSAmJgogCQkJaW5kZXhTdHJ1Y3QtPmluZGlz dmFsaWQgJiYKIAkJCWhlYXBfYXR0aXNudWxsKGluZGV4VHVwbGUsIEFudW1fcGdfaW5kZXhf aW5kcHJlZCwgTlVMTCkgJiYKIAkJCWhlYXBfYXR0aXNudWxsKGluZGV4VHVwbGUsIEFudW1f cGdfaW5kZXhfaW5kZXhwcnMsIE5VTEwpKQpAQCAtMTE5MzQsNiArMTIwOTAsMTkgQEAgdHJh bnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJaWYgKCFmb3VuZCkK IAkJCQkJYnJlYWs7CiAJCQl9CisJCQlpZiAoZm91bmQgJiYgaXNfdGVtcG9yYWwpCisJCQl7 CisJCQkJZm91bmQgPSBmYWxzZTsKKwkJCQlmb3IgKGogPSAwOyBqIDwgbnVtYXR0cnMgKyAx OyBqKyspCisJCQkJeworCQkJCQlpZiAocGVyaW9kYXR0bnVtID09IGluZGV4U3RydWN0LT5p bmRrZXkudmFsdWVzW2pdKQorCQkJCQl7CisJCQkJCQlvcGNsYXNzZXNbbnVtYXR0cnNdID0g aW5kY2xhc3MtPnZhbHVlc1tqXTsKKwkJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJCWJyZWFr OworCQkJCQl9CisJCQkJfQorCQkJfQogCiAJCQkvKgogCQkJICogUmVmdXNlIHRvIHVzZSBh IGRlZmVycmFibGUgdW5pcXVlL3ByaW1hcnkga2V5LiAgVGhpcyBpcyBwZXIgU1FMCkBAIC0x MjA0Myw3ICsxMjIxMiw4IEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAq Y29ubmFtZSwKIAkJCQkJCQkgUmVsYXRpb24gcmVsLAogCQkJCQkJCSBSZWxhdGlvbiBwa3Jl bCwKIAkJCQkJCQkgT2lkIHBraW5kT2lkLAotCQkJCQkJCSBPaWQgY29uc3RyYWludE9pZCkK KwkJCQkJCQkgT2lkIGNvbnN0cmFpbnRPaWQsCisJCQkJCQkJIGJvb2wgdGVtcG9yYWwpCiB7 CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJVGFibGVTY2FuRGVzYyBzY2FuOwpAQCAtMTIw NzIsOCArMTIyNDIsMTAgQEAgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpj b25uYW1lLAogCS8qCiAJICogU2VlIGlmIHdlIGNhbiBkbyBpdCB3aXRoIGEgc2luZ2xlIExF RlQgSk9JTiBxdWVyeS4gIEEgZmFsc2UgcmVzdWx0CiAJICogaW5kaWNhdGVzIHdlIG11c3Qg cHJvY2VlZCB3aXRoIHRoZSBmaXJlLXRoZS10cmlnZ2VyIG1ldGhvZC4KKwkgKiBXZSBjYW4n dCBkbyBhIExFRlQgSk9JTiBmb3IgdGVtcG9yYWwgRktzIHlldCwKKwkgKiBidXQgd2UgY2Fu IG9uY2Ugd2Ugc3VwcG9ydCB0ZW1wb3JhbCBsZWZ0IGpvaW5zLgogCSAqLwotCWlmIChSSV9J bml0aWFsX0NoZWNrKCZ0cmlnLCByZWwsIHBrcmVsKSkKKwlpZiAoIXRlbXBvcmFsICYmIFJJ X0luaXRpYWxfQ2hlY2soJnRyaWcsIHJlbCwgcGtyZWwpKQogCQlyZXR1cm47CiAKIAkvKgpA QCAtMTIxNDIsNiArMTIzMTQsNyBAQCBDcmVhdGVGS0NoZWNrVHJpZ2dlcihPaWQgbXlSZWxP aWQsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKIHsKIAlPYmpl Y3RBZGRyZXNzIHRyaWdBZGRyZXNzOwogCUNyZWF0ZVRyaWdTdG10ICpma190cmlnZ2VyOwor CWJvb2wgaXNfdGVtcG9yYWwgPSBma2NvbnN0cmFpbnQtPmZrX3BlcmlvZDsKIAogCS8qCiAJ ICogTm90ZTogZm9yIGEgc2VsZi1yZWZlcmVudGlhbCBGSyAocmVmZXJlbmNpbmcgYW5kIHJl ZmVyZW5jZWQgdGFibGVzIGFyZQpAQCAtMTIxNjEsMTIgKzEyMzM0LDE4IEBAIENyZWF0ZUZL Q2hlY2tUcmlnZ2VyKE9pZCBteVJlbE9pZCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAq Zmtjb25zdHJhaW50LAogCS8qIEVpdGhlciBPTiBJTlNFUlQgb3IgT04gVVBEQVRFICovCiAJ aWYgKG9uX2luc2VydCkKIAl7Ci0JCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlJJX0ZLZXlfY2hlY2tfaW5zIik7CisJCWlmIChpc190ZW1wb3JhbCkKKwkJCWZr X3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2NoZWNrX2lu cyIpOworCQllbHNlCisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1l KCJSSV9GS2V5X2NoZWNrX2lucyIpOwogCQlma190cmlnZ2VyLT5ldmVudHMgPSBUUklHR0VS X1RZUEVfSU5TRVJUOwogCX0KIAllbHNlCiAJewotCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9 IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2NoZWNrX3VwZCIpOworCQlpZiAoaXNfdGVtcG9y YWwpCisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktl eV9jaGVja191cGQiKTsKKwkJZWxzZQorCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0 ZW1GdW5jTmFtZSgiUklfRktleV9jaGVja191cGQiKTsKIAkJZmtfdHJpZ2dlci0+ZXZlbnRz ID0gVFJJR0dFUl9UWVBFX1VQREFURTsKIAl9CiAKQEAgLTEyMjI0LDM3ICsxMjQwMyw2OCBA QCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMoUmVsYXRpb24gcmVsLCBPaWQgcmVm UmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cgogCWZrX3RyaWdnZXItPndoZW5DbGF1c2Ug PSBOVUxMOwogCWZrX3RyaWdnZXItPnRyYW5zaXRpb25SZWxzID0gTklMOwogCWZrX3RyaWdn ZXItPmNvbnN0cnJlbCA9IE5VTEw7Ci0Jc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX2RlbF9h Y3Rpb24pCisJaWYgKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kICE9IE5VTEwpCiAJewotCQlj YXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFi bGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVm ZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKLQkJCWZrX3RyaWdnZXItPmZ1 bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfbm9hY3Rpb25fZGVsIik7Ci0JCQli cmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJQ1Q6Ci0JCQlma190cmlnZ2Vy LT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBm YWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZL ZXlfcmVzdHJpY3RfZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f Q0FTQ0FERToKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3Ry aWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUg PSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRlX2RlbCIpOwotCQkJYnJlYWs7Ci0J CWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJh YmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJ CWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0bnVs bF9kZWwiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxU OgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3Rl bUZ1bmNOYW1lKCJSSV9GS2V5X3NldGRlZmF1bHRfZGVsIik7Ci0JCQlicmVhazsKLQkJZGVm YXVsdDoKLQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVk IiwKLQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uKTsKLQkJCWJyZWFr OworCQkvKiBUZW1wb3JhbCBmb3JlaWduIGtleXMgKi8KKwkJc3dpdGNoIChma2NvbnN0cmFp bnQtPmZrX2RlbF9hY3Rpb24pCisJCXsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX05PQUNU SU9OOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVy cmFibGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmtjb25zdHJhaW50LT5p bml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFt ZSgiVFJJX0ZLZXlfbm9hY3Rpb25fZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09O U1RSX0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFs c2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJp Z2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfcmVzdHJpY3RfZGVs Iik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgorCQkJ Y2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9O X1NFVERFRkFVTFQ6CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImFjdGlvbiBub3Qg c3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMiKSkpOworCQkJCWJyZWFrOwor CQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0 eXBlOiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24pOwor CQkJCWJyZWFrOworCQl9CisJfQorCWVsc2UKKwl7CisJCXN3aXRjaCAoZmtjb25zdHJhaW50 LT5ma19kZWxfYWN0aW9uKQorCQl7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElP TjoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJhaW50LT5kZWZlcnJh YmxlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+aW5p dGRlZmVycmVkOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUo IlJJX0ZLZXlfbm9hY3Rpb25fZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RS X0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7 CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dl ci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9yZXN0cmljdF9kZWwiKTsK KwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQkJZmtf dHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZl cnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUoIlJJX0ZLZXlfY2FzY2FkZV9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05T VFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNl OworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdn ZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0bnVsbF9kZWwiKTsK KwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJ ZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRk ZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1 bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQi LAorCQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uKTsKKwkJCQlicmVh azsKKwkJfQogCX0KIAogCXRyaWdBZGRyZXNzID0gQ3JlYXRlVHJpZ2dlcihma190cmlnZ2Vy LCBOVUxMLCByZWZSZWxPaWQsCkBAIC0xMjI4NCwzNyArMTI0OTQsNjggQEAgY3JlYXRlRm9y ZWlnbktleUFjdGlvblRyaWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIHJlZlJlbE9pZCwgQ29u c3RyYWludCAqZmtjb25zdHIKIAlma190cmlnZ2VyLT53aGVuQ2xhdXNlID0gTlVMTDsKIAlm a190cmlnZ2VyLT50cmFuc2l0aW9uUmVscyA9IE5JTDsKIAlma190cmlnZ2VyLT5jb25zdHJy ZWwgPSBOVUxMOwotCXN3aXRjaCAoZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKQorCWlm IChma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCAhPSBOVUxMKQogCXsKLQkJY2FzZSBGS0NPTlNU Ul9BQ1RJT05fTk9BQ1RJT046Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25z dHJhaW50LT5kZWZlcnJhYmxlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmtj b25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5 c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X25vYWN0aW9uX3VwZCIpOwotCQkJYnJlYWs7Ci0JCWNh c2UgRktDT05TVFJfQUNUSU9OX1JFU1RSSUNUOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJs ZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlm a190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3Jlc3RyaWN0 X3VwZCIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6Ci0J CQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0 ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09O U1RSX0FDVElPTl9TRVROVUxMOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNl OwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2Vy LT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldG51bGxfdXBkIik7Ci0J CQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKLQkJCWZrX3Ry aWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJl ZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgi UklfRktleV9zZXRkZWZhdWx0X3VwZCIpOwotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCi0JCQkJIChp bnQpIGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbik7Ci0JCQlicmVhazsKKwkJLyogVGVt cG9yYWwgZm9yZWlnbiBrZXlzICovCisJCXN3aXRjaCAoZmtjb25zdHJhaW50LT5ma191cGRf YWN0aW9uKQorCQl7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoKKwkJCQlm a190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJhaW50LT5kZWZlcnJhYmxlOworCQkJ CWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+aW5pdGRlZmVycmVk OworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5 X25vYWN0aW9uX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f UkVTVFJJQ1Q6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZr X3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNu YW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X3Jlc3RyaWN0X3VwZCIpOworCQkJCWJy ZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERToKKwkJCWNhc2UgRktDT05T VFJfQUNUSU9OX1NFVE5VTEw6CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxU OgorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJhY3Rpb24gbm90IHN1cHBvcnRlZCBm b3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIikpKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6 CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAor CQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKTsKKwkJCQlicmVhazsK KwkJfQorCX0KKwllbHNlCisJeworCQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfdXBkX2Fj dGlvbikKKwkJeworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046CisJCQkJZmtf dHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKKwkJCQlm a190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsK KwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X25v YWN0aW9uX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVT VFJJQ1Q6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3Ry aWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1l ID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7CisJCQkJYnJlYWs7 CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgorCQkJCWZrX3RyaWdnZXItPmRl ZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxz ZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5 X2Nhc2NhZGVfdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9T RVROVUxMOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190 cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFt ZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldG51bGxfdXBkIik7CisJCQkJYnJlYWs7 CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUOgorCQkJCWZrX3RyaWdnZXIt PmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBm YWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9G S2V5X3NldGRlZmF1bHRfdXBkIik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKKwkJCQkJIChp bnQpIGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbik7CisJCQkJYnJlYWs7CisJCX0KIAl9 CiAKIAl0cmlnQWRkcmVzcyA9IENyZWF0ZVRyaWdnZXIoZmtfdHJpZ2dlciwgTlVMTCwgcmVm UmVsT2lkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKaW5kZXggZjUyYWUzZmM5Ny4uM2JkZDQ2YTQx MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYworKysgYi9zcmMv YmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBAIC03OTQsNyArNzk0LDkgQEAgX291dENvbnN0 cmFpbnQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IENvbnN0cmFpbnQgKm5vZGUpCiAJCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKHN0ciwgIkZPUkVJR05fS0VZIik7CiAJCQlXUklURV9OT0RF X0ZJRUxEKHBrdGFibGUpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChma19hdHRycyk7CisJCQlX UklURV9OT0RFX0ZJRUxEKGZrX3BlcmlvZCk7CiAJCQlXUklURV9OT0RFX0ZJRUxEKHBrX2F0 dHJzKTsKKwkJCVdSSVRFX05PREVfRklFTEQocGtfcGVyaW9kKTsKIAkJCVdSSVRFX0NIQVJf RklFTEQoZmtfbWF0Y2h0eXBlKTsKIAkJCVdSSVRFX0NIQVJfRklFTEQoZmtfdXBkX2FjdGlv bik7CiAJCQlXUklURV9DSEFSX0ZJRUxEKGZrX2RlbF9hY3Rpb24pOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFk ZnVuY3MuYwppbmRleCBiNmVmMzBjZTBkLi4xOTBlYzE0ZWYxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFk ZnVuY3MuYwpAQCAtNDYyLDcgKzQ2Miw5IEBAIF9yZWFkQ29uc3RyYWludCh2b2lkKQogCQlj YXNlIENPTlNUUl9GT1JFSUdOOgogCQkJUkVBRF9OT0RFX0ZJRUxEKHBrdGFibGUpOwogCQkJ UkVBRF9OT0RFX0ZJRUxEKGZrX2F0dHJzKTsKKwkJCVJFQURfTk9ERV9GSUVMRChma19wZXJp b2QpOwogCQkJUkVBRF9OT0RFX0ZJRUxEKHBrX2F0dHJzKTsKKwkJCVJFQURfTk9ERV9GSUVM RChwa19wZXJpb2QpOwogCQkJUkVBRF9DSEFSX0ZJRUxEKGZrX21hdGNodHlwZSk7CiAJCQlS RUFEX0NIQVJfRklFTEQoZmtfdXBkX2FjdGlvbik7CiAJCQlSRUFEX0NIQVJfRklFTEQoZmtf ZGVsX2FjdGlvbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBmZjRhZGQ2MjI1Li45YTZmM2Y2NDdh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKQEAgLTUyMSwxMiArNTIxLDEzIEBAIHN0YXRpYyBOb2RlICpt YWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBO b2RlICpxdWVyeSk7CiAJCQkJIFNldFJlc2V0Q2xhdXNlIEZ1bmN0aW9uU2V0UmVzZXRDbGF1 c2UKIAogJXR5cGUgPG5vZGU+CVRhYmxlRWxlbWVudCBUeXBlZFRhYmxlRWxlbWVudCBDb25z dHJhaW50RWxlbSBUYWJsZUZ1bmNFbGVtZW50Ci0ldHlwZSA8bm9kZT4JY29sdW1uRGVmIGNv bHVtbk9wdGlvbnMKKyV0eXBlIDxub2RlPgljb2x1bW5EZWYgY29sdW1uT3B0aW9ucyBvcHRp b25hbFBlcmlvZE5hbWUKICV0eXBlIDxkZWZlbHQ+CWRlZl9lbGVtIHJlbG9wdGlvbl9lbGVt IG9sZF9hZ2dyX2VsZW0gb3BlcmF0b3JfZGVmX2VsZW0KICV0eXBlIDxub2RlPglkZWZfYXJn IGNvbHVtbkVsZW0gd2hlcmVfY2xhdXNlIHdoZXJlX29yX2N1cnJlbnRfY2xhdXNlCiAJCQkJ YV9leHByIGJfZXhwciBjX2V4cHIgQWV4cHJDb25zdCBpbmRpcmVjdGlvbl9lbCBvcHRfc2xp Y2VfYm91bmQKIAkJCQljb2x1bW5yZWYgaW5fZXhwciBoYXZpbmdfY2xhdXNlIGZ1bmNfdGFi bGUgeG1sdGFibGUgYXJyYXlfZXhwcgogCQkJCU9wdFdoZXJlQ2xhdXNlIG9wZXJhdG9yX2Rl Zl9hcmcKKyV0eXBlIDxsaXN0PglvcHRfY29sdW1uX2FuZF9wZXJpb2RfbGlzdAogJXR5cGUg PGxpc3Q+CXJvd3Nmcm9tX2l0ZW0gcm93c2Zyb21fbGlzdCBvcHRfY29sX2RlZl9saXN0CiAl dHlwZSA8Ym9vbGVhbj4gb3B0X29yZGluYWxpdHkgb3B0X3dpdGhvdXRfb3ZlcmxhcHMKICV0 eXBlIDxsaXN0PglFeGNsdXNpb25Db25zdHJhaW50TGlzdCBFeGNsdXNpb25Db25zdHJhaW50 RWxlbQpAQCAtNzQ0LDcgKzc0NSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmll d1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJ T1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJTkcgT1dORUQgT1dORVIKIAogCVBBUkFM TEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09S RAotCVBMQUNJTkcgUExBTlMgUE9MSUNZCisJUEVSSU9EIFBMQUNJTkcgUExBTlMgUE9MSUNZ CiAJUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBB UkVEIFBSSU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBS T0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElPTgogCkBAIC00MTkzLDIxICs0MTk0LDIzIEBA IENvbnN0cmFpbnRFbGVtOgogCQkJCQkJCQkgICBOVUxMLCB5eXNjYW5uZXIpOwogCQkJCQkk JCA9IChOb2RlICopIG47CiAJCQkJfQotCQkJfCBGT1JFSUdOIEtFWSAnKCcgY29sdW1uTGlz dCAnKScgUkVGRVJFTkNFUyBxdWFsaWZpZWRfbmFtZQotCQkJCW9wdF9jb2x1bW5fbGlzdCBr ZXlfbWF0Y2gga2V5X2FjdGlvbnMgQ29uc3RyYWludEF0dHJpYnV0ZVNwZWMKKwkJCXwgRk9S RUlHTiBLRVkgJygnIGNvbHVtbkxpc3Qgb3B0aW9uYWxQZXJpb2ROYW1lICcpJyBSRUZFUkVO Q0VTIHF1YWxpZmllZF9uYW1lCisJCQkJb3B0X2NvbHVtbl9hbmRfcGVyaW9kX2xpc3Qga2V5 X21hdGNoIGtleV9hY3Rpb25zIENvbnN0cmFpbnRBdHRyaWJ1dGVTcGVjCiAJCQkJewogCQkJ CQlDb25zdHJhaW50ICpuID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CiAKIAkJCQkJbi0+Y29u dHlwZSA9IENPTlNUUl9GT1JFSUdOOwogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwotCQkJCQlu LT5wa3RhYmxlID0gJDc7CisJCQkJCW4tPnBrdGFibGUgPSAkODsKIAkJCQkJbi0+ZmtfYXR0 cnMgPSAkNDsKLQkJCQkJbi0+cGtfYXR0cnMgPSAkODsKLQkJCQkJbi0+ZmtfbWF0Y2h0eXBl ID0gJDk7Ci0JCQkJCW4tPmZrX3VwZF9hY3Rpb24gPSAoJDEwKS0+dXBkYXRlQWN0aW9uLT5h Y3Rpb247Ci0JCQkJCW4tPmZrX2RlbF9hY3Rpb24gPSAoJDEwKS0+ZGVsZXRlQWN0aW9uLT5h Y3Rpb247Ci0JCQkJCW4tPmZrX2RlbF9zZXRfY29scyA9ICgkMTApLT5kZWxldGVBY3Rpb24t PmNvbHM7Ci0JCQkJCXByb2Nlc3NDQVNiaXRzKCQxMSwgQDExLCAiRk9SRUlHTiBLRVkiLAor CQkJCQluLT5ma19wZXJpb2QgPSAkNTsKKwkJCQkJbi0+cGtfYXR0cnMgPSBsaW5pdGlhbCgk OSk7CisJCQkJCW4tPnBrX3BlcmlvZCA9IGxzZWNvbmQoJDkpOworCQkJCQluLT5ma19tYXRj aHR5cGUgPSAkMTA7CisJCQkJCW4tPmZrX3VwZF9hY3Rpb24gPSAoJDExKS0+dXBkYXRlQWN0 aW9uLT5hY3Rpb247CisJCQkJCW4tPmZrX2RlbF9hY3Rpb24gPSAoJDExKS0+ZGVsZXRlQWN0 aW9uLT5hY3Rpb247CisJCQkJCW4tPmZrX2RlbF9zZXRfY29scyA9ICgkMTEpLT5kZWxldGVB Y3Rpb24tPmNvbHM7CisJCQkJCXByb2Nlc3NDQVNiaXRzKCQxMiwgQDEyLCAiRk9SRUlHTiBL RVkiLAogCQkJCQkJCQkgICAmbi0+ZGVmZXJyYWJsZSwgJm4tPmluaXRkZWZlcnJlZCwKIAkJ CQkJCQkJICAgJm4tPnNraXBfdmFsaWRhdGlvbiwgTlVMTCwKIAkJCQkJCQkJICAgeXlzY2Fu bmVyKTsKQEAgLTQyMzUsNiArNDIzOCwxNiBAQCBjb2x1bW5MaXN0OgogCQkJfCBjb2x1bW5M aXN0ICcsJyBjb2x1bW5FbGVtCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAkJOwog CitvcHRpb25hbFBlcmlvZE5hbWU6CisJCQknLCcgUEVSSU9EIGNvbHVtbkVsZW0geyAkJCA9 ICQzOyB9CisJCQl8IC8qRU1QVFkqLyAgICAgICAgICAgICAgIHsgJCQgPSBOVUxMOyB9CisJ OworCitvcHRfY29sdW1uX2FuZF9wZXJpb2RfbGlzdDoKKwkJCScoJyBjb2x1bW5MaXN0IG9w dGlvbmFsUGVyaW9kTmFtZSAnKScJCQl7ICQkID0gbGlzdF9tYWtlMigkMiwgJDMpOyB9CisJ CQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IGxpc3RfbWFrZTIoTklMLCBOVUxMKTsgfQor CQk7CisKIGNvbHVtbkVsZW06IENvbElkCiAJCQkJewogCQkJCQkkJCA9IChOb2RlICopIG1h a2VTdHJpbmcoJDEpOwpAQCAtMTc1NTgsNiArMTc1NzEsNyBAQCByZXNlcnZlZF9rZXl3b3Jk OgogCQkJfCBPTkxZCiAJCQl8IE9SCiAJCQl8IE9SREVSCisJCQl8IFBFUklPRAogCQkJfCBQ TEFDSU5HCiAJCQl8IFBSSU1BUlkKIAkJCXwgUkVGRVJFTkNFUwpAQCAtMTc4NjcsNiArMTc4 ODEsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFBBUlRJVElPTgogCQkJfCBQQVNT SU5HCiAJCQl8IFBBU1NXT1JECisJCQl8IFBFUklPRAogCQkJfCBQTEFDSU5HCiAJCQl8IFBM QU5TCiAJCQl8IFBPTElDWQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Jp X3RyaWdnZXJzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRl eCA2OTQ1ZDk5YjNkLi5kMDBjNmU1MzM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvcmlfdHJpZ2dlcnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJp Z2dlcnMuYwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0 aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcmFuZ2UuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmln Z2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKQEAgLTQ4LDYgKzQ5LDcg QEAKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcmFu Z2V0eXBlcy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3Js cy5oIgogI2luY2x1ZGUgInV0aWxzL3J1bGV1dGlscy5oIgpAQCAtMTE4LDYgKzEyMCw3IEBA IHR5cGVkZWYgc3RydWN0IFJJX0NvbnN0cmFpbnRJbmZvCiAJaW50MTYJCWNvbmZkZWxzZXRj b2xzW1JJX01BWF9OVU1LRVlTXTsgLyogYXR0bnVtcyBvZiBjb2xzIHRvIHNldCBvbgogCQkJ CQkJCQkJCQkJICogZGVsZXRlICovCiAJY2hhcgkJY29uZm1hdGNodHlwZTsJLyogZm9yZWln biBrZXkncyBtYXRjaCB0eXBlICovCisJYm9vbAkJdGVtcG9yYWw7CQkvKiBpZiB0aGUgZm9y ZWlnbiBrZXkgaXMgdGVtcG9yYWwgKi8KIAlpbnQJCQlua2V5czsJCQkvKiBudW1iZXIgb2Yg a2V5IGNvbHVtbnMgKi8KIAlpbnQxNgkJcGtfYXR0bnVtc1tSSV9NQVhfTlVNS0VZU107IC8q IGF0dG51bXMgb2YgcmVmZXJlbmNlZCBjb2xzICovCiAJaW50MTYJCWZrX2F0dG51bXNbUklf TUFYX05VTUtFWVNdOyAvKiBhdHRudW1zIG9mIHJlZmVyZW5jaW5nIGNvbHMgKi8KQEAgLTIw MCw4ICsyMDMsOSBAQCBzdGF0aWMgaW50CXJpX051bGxDaGVjayhUdXBsZURlc2MgdHVwRGVz YywgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiBzdGF0aWMgdm9pZCByaV9CdWlsZFF1ZXJ5S2V5 KFJJX1F1ZXJ5S2V5ICprZXksCiAJCQkJCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpy aWluZm8sCiAJCQkJCQkJIGludDMyIGNvbnN0cl9xdWVyeW5vKTsKLXN0YXRpYyBib29sIHJp X0tleXNFcXVhbChSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBs ZVRhYmxlU2xvdCAqbmV3c2xvdCwKK3N0YXRpYyBib29sIHJpX0tleXNTdGFibGUoUmVsYXRp b24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Ns b3QsCiAJCQkJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywgYm9vbCByZWxf aXNfcGspOworc3RhdGljIGJvb2wgcmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0NoZWNrKGJvb2wg cmVsX2lzX3BrLCBEYXR1bSBvbGR2YWx1ZSwgRGF0dW0gbmV3dmFsdWUpOwogc3RhdGljIGJv b2wgcmlfQXR0cmlidXRlc0VxdWFsKE9pZCBlcV9vcHIsIE9pZCB0eXBlaWQsCiAJCQkJCQkJ ICAgRGF0dW0gb2xkdmFsdWUsIERhdHVtIG5ld3ZhbHVlKTsKIApAQCAtMzYxLDI2ICszNjUs NTggQEAgUklfRktleV9jaGVjayhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEpCiAKIAkJLyogLS0t LS0tLS0tLQogCQkgKiBUaGUgcXVlcnkgc3RyaW5nIGJ1aWx0IGlzCi0JCSAqCVNFTEVDVCAx IEZST00gW09OTFldIDxwa3RhYmxlPiB4IFdIRVJFIHBrYXR0MSA9ICQxIFtBTkQgLi4uXQot CQkgKgkJICAgRk9SIEtFWSBTSEFSRSBPRiB4CisJCSAqCVNFTEVDVCAxCisJCSAqCUZST00g W09OTFldIDxwa3RhYmxlPiB4IFdIRVJFIHBrYXR0MSA9ICQxIFtBTkQgLi4uXQorCQkgKglG T1IgS0VZIFNIQVJFIE9GIHgKIAkJICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1l dGVycyBhcmUgdGhvc2Ugb2YgdGhlCiAJCSAqIGNvcnJlc3BvbmRpbmcgRksgYXR0cmlidXRl cy4KKwkJICoKKwkJICogQnV0IGZvciB0ZW1wb3JhbCBGS3Mgd2UgbmVlZCB0byBtYWtlIHN1 cmUKKwkJICogdGhlIEZLJ3MgcmFuZ2UgaXMgY29tcGxldGVseSBjb3ZlcmVkLgorCQkgKiBT byB3ZSB1c2UgdGhpcyBxdWVyeSBpbnN0ZWFkOgorCQkgKiAgU0VMRUNUIDEKKwkJICoJRlJP TQkoCisJCSAqCQlTRUxFQ1QgcGtwZXJpb2RhdHQgQVMgcgorCQkgKgkJRlJPTSAgIFtPTkxZ XSBwa3RhYmxlIHgKKwkJICoJCVdIRVJFICBwa2F0dDEgPSAkMSBbQU5EIC4uLl0KKwkJICoJ CUFORCAgICBwa3BlcmlvZGF0dCAmJiAkbgorCQkgKgkJRk9SIEtFWSBTSEFSRSBPRiB4CisJ CSAqCSkgeDEKKwkJICogIEhBVklORyAkbiA8QCByYW5nZV9hZ2coeDEucikKKwkJICogTm90 ZSBpZiBGT1IgS0VZIFNIQVJFIGV2ZXIgYWxsb3dzIEdST1VQIEJZIGFuZCBIQVZJTkcKKwkJ ICogd2UgY2FuIG1ha2UgdGhpcyBhIGJpdCBzaW1wbGVyLgogCQkgKiAtLS0tLS0tLS0tCiAJ CSAqLwogCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOwogCQlwa19vbmx5ID0gcGtfcmVs LT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CiAJCQki IiA6ICJPTkxZICI7CiAJCXF1b3RlUmVsYXRpb25OYW1lKHBrcmVsbmFtZSwgcGtfcmVsKTsK LQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIs Ci0JCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwp CisJCXsKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAorCQkJCQlSSUF0dE5hbWUocGtfcmVs LCByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJCWFwcGVu ZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAorCQkJCQkiU0VMRUNUIDEgRlJPTSAoU0VMRUNUICVz IEFTIHIgRlJPTSAlcyVzIHgiLAorCQkJCQlhdHRuYW1lLCBwa19vbmx5LCBwa3JlbG5hbWUp OworCQl9CisJCWVsc2UKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJT RUxFQ1QgMSBGUk9NICVzJXMgeCIsCisJCQkJCQkJIHBrX29ubHksIHBrcmVsbmFtZSk7CisJ CX0KIAkJcXVlcnlzZXAgPSAiV0hFUkUiOwogCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5m by0+bmtleXM7IGkrKykKIAkJewotCQkJT2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19y ZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7Ci0JCQlPaWQJCQlma190eXBlID0gUklBdHRU eXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCU9pZAlwa190eXBlOwor CQkJT2lkCWZrX3R5cGU7CiAKKwkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWlu Zm8tPnBrX2F0dG51bXNbaV0pOwogCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCiAJCQkJCQkg UklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKSk7CisKKwkJCWZrX3R5 cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCiAJCQlz cHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGkgKyAxKTsKIAkJCXJpX0dlbmVyYXRlUXVhbCgm cXVlcnlidWYsIHF1ZXJ5c2VwLAogCQkJCQkJCWF0dG5hbWUsIHBrX3R5cGUsCkBAIC0zOTAs NiArNDI2LDggQEAgUklfRktleV9jaGVjayhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEpCiAJCQlx dWVyeW9pZHNbaV0gPSBma190eXBlOwogCQl9CiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JnF1ZXJ5YnVmLCAiIEZPUiBLRVkgU0hBUkUgT0YgeCIpOworCQlpZiAocmlpbmZvLT50ZW1w b3JhbCkKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiKSB4MSBIQVZJTkcgJCVk IDxAIHBnX2NhdGFsb2cucmFuZ2VfYWdnKHgxLnIpIiwgcmlpbmZvLT5ua2V5cyk7CiAKIAkJ LyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLwogCQlxcGxhbiA9IHJpX1BsYW5DaGVj ayhxdWVyeWJ1Zi5kYXRhLCByaWluZm8tPm5rZXlzLCBxdWVyeW9pZHMsCkBAIC00OTcsMjEg KzUzNSw0OSBAQCByaV9DaGVja19Qa19NYXRjaChSZWxhdGlvbiBwa19yZWwsIFJlbGF0aW9u IGZrX3JlbCwKIAkJICoJCSAgIEZPUiBLRVkgU0hBUkUgT0YgeAogCQkgKiBUaGUgdHlwZSBp ZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBvZiB0aGUKIAkJICogUEsgYXR0 cmlidXRlcyB0aGVtc2VsdmVzLgorCQkgKiBCdXQgZm9yIHRlbXBvcmFsIEZLcyB3ZSBuZWVk IHRvIG1ha2Ugc3VyZQorCQkgKiB0aGUgRksncyByYW5nZSBpcyBjb21wbGV0ZWx5IGNvdmVy ZWQuCisJCSAqIFNvIHdlIHVzZSB0aGlzIHF1ZXJ5IGluc3RlYWQ6CisJCSAqICBTRUxFQ1Qg MQorCQkgKiAgRlJPTSAgICAoCisJCSAqCSAgU0VMRUNUIHBrcGVyaW9kYXR0IEFTIHIKKwkJ ICoJICBGUk9NICAgW09OTFldIHBrdGFibGUgeAorCQkgKgkgIFdIRVJFICBwa2F0dDEgPSAk MSBbQU5EIC4uLl0KKwkJICoJICBBTkQgICAgcGtwZXJpb2RhdHQgJiYgJG4KKwkJICoJICBG T1IgS0VZIFNIQVJFIE9GIHgKKwkJICogICkgeDEKKwkJICogIEhBVklORyAkbiA8QCByYW5n ZV9hZ2coeDEucikKKwkJICogTm90ZSBpZiBGT1IgS0VZIFNIQVJFIGV2ZXIgYWxsb3dzIEdS T1VQIEJZIGFuZCBIQVZJTkcKKwkJICogd2UgY2FuIG1ha2UgdGhpcyBhIGJpdCBzaW1wbGVy LgogCQkgKiAtLS0tLS0tLS0tCiAJCSAqLwogCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYp OwogCQlwa19vbmx5ID0gcGtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJU SVRJT05FRF9UQUJMRSA/CiAJCQkiIiA6ICJPTkxZICI7CiAJCXF1b3RlUmVsYXRpb25OYW1l KHBrcmVsbmFtZSwgcGtfcmVsKTsKLQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJT RUxFQ1QgMSBGUk9NICVzJXMgeCIsCi0JCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJ aWYgKHJpaW5mby0+dGVtcG9yYWwpCisJCXsKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1lLCBS SUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFd KSk7CisKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAorCQkJCQkiU0VMRUNUIDEg RlJPTSAoU0VMRUNUICVzIEFTIHIgRlJPTSAlcyVzIHgiLAorCQkJCQlhdHRuYW1lLCBwa19v bmx5LCBwa3JlbG5hbWUpOworCQl9CisJCWVsc2UKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5m bygmcXVlcnlidWYsICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIsCisJCQkJCXBrX29ubHksIHBr cmVsbmFtZSk7CisJCX0KKwogCQlxdWVyeXNlcCA9ICJXSEVSRSI7CiAJCWZvciAoaW50IGkg PSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCQl7Ci0JCQlPaWQJCQlwa190eXBlID0g UklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCU9pZAkJcGtf dHlwZTsKIAorCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0 bnVtc1tpXSk7CiAJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKIAkJCQkJCSBSSUF0dE5hbWUo cGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pKTsKKwogCQkJc3ByaW50ZihwYXJhbW5h bWUsICIkJWQiLCBpICsgMSk7CiAJCQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVmLCBxdWVy eXNlcCwKIAkJCQkJCQlhdHRuYW1lLCBwa190eXBlLApAQCAtNTIxLDYgKzU4Nyw4IEBAIHJp X0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkJ cXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKIAkJfQogCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KCZxdWVyeWJ1ZiwgIiBGT1IgS0VZIFNIQVJFIE9GIHgiKTsKKwkJaWYgKHJpaW5mby0+dGVt cG9yYWwpCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIikgeDEgSEFWSU5HICQl ZCA8QCBwZ19jYXRhbG9nLnJhbmdlX2FnZyh4MS5yKSIsIHJpaW5mby0+bmtleXMpOwogCiAJ CS8qIFByZXBhcmUgYW5kIHNhdmUgdGhlIHBsYW4gKi8KIAkJcXBsYW4gPSByaV9QbGFuQ2hl Y2socXVlcnlidWYuZGF0YSwgcmlpbmZvLT5ua2V5cywgcXVlcnlvaWRzLApAQCAtNjk1LDEw ICs3NjMsMTYgQEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlz X25vX2FjdGlvbikKIAkJcXVlcnlzZXAgPSAiV0hFUkUiOwogCQlmb3IgKGludCBpID0gMDsg aSA8IHJpaW5mby0+bmtleXM7IGkrKykKIAkJewotCQkJT2lkCQkJcGtfdHlwZSA9IFJJQXR0 VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7Ci0JCQlPaWQJCQlma190eXBl ID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKLQkJCU9pZAkJ CXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tp XSk7Ci0JCQlPaWQJCQlma19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8t PmZrX2F0dG51bXNbaV0pOworCQkJT2lkCQlwa190eXBlOworCQkJT2lkCQlma190eXBlOwor CQkJT2lkCQlwa19jb2xsOworCQkJT2lkCQlma19jb2xsOworCisJCQlwa190eXBlID0gUklB dHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCXBrX2NvbGwgPSBS SUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisKKwkJCWZr X3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJ ZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ld KTsKIAogCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCiAJCQkJCQkgUklBdHROYW1lKGZrX3Jl bCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CkBAIC0xMjEzLDYgKzEyODcsMTI2IEBAIHJp X3NldChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tp bmQpCiAJfQogfQogCisvKiAtLS0tLS0tLS0tCisgKiBUUklfRktleV9jaGVja19pbnMgLQor ICoKKyAqCUNoZWNrIHRlbXBvcmFsIGZvcmVpZ24ga2V5IGV4aXN0ZW5jZSBhdCBpbnNlcnQg ZXZlbnQgb24gRksgdGFibGUuCisgKiAtLS0tLS0tLS0tCisgKi8KK0RhdHVtCitUUklfRktl eV9jaGVja19pbnMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKgorCSAqIENoZWNrIHRoYXQg dGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZl bnQuCisJICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlJJX0ZLZXlfY2hlY2tfaW5z IiwgUklfVFJJR1RZUEVfSU5TRVJUKTsKKworCS8qCisJICogU2hhcmUgY29kZSB3aXRoIFVQ REFURSBjYXNlLgorCSAqLworCXJldHVybiBSSV9GS2V5X2NoZWNrKChUcmlnZ2VyRGF0YSAq KSBmY2luZm8tPmNvbnRleHQpOworfQorCisKKy8qIC0tLS0tLS0tLS0KKyAqIFRSSV9GS2V5 X2NoZWNrX3VwZCAtCisgKgorICoJQ2hlY2sgdGVtcG9yYWwgZm9yZWlnbiBrZXkgZXhpc3Rl bmNlIGF0IHVwZGF0ZSBldmVudCBvbiBGSyB0YWJsZS4KKyAqIC0tLS0tLS0tLS0KKyAqLwor RGF0dW0KK1RSSV9GS2V5X2NoZWNrX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qCisJ ICogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdo dCB0aW1lIGFuZCBldmVudC4KKwkgKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiUklf RktleV9jaGVja191cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyoKKwkgKiBTaGFy ZSBjb2RlIHdpdGggSU5TRVJUIGNhc2UuCisJICovCisJcmV0dXJuIFJJX0ZLZXlfY2hlY2so KFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCk7Cit9CisKKworLyogLS0tLS0tLS0t LQorICogVFJJX0ZLZXlfbm9hY3Rpb25fZGVsIC0KKyAqCisgKglHaXZlIGFuIGVycm9yIGFu ZCByb2xsIGJhY2sgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gaWYgdGhlCisgKglkZWxldGUg aGFzIHJlc3VsdGVkIGluIGEgdmlvbGF0aW9uIG9mIHRoZSBnaXZlbiB0ZW1wb3JhbAorICoJ cmVmZXJlbnRpYWwgaW50ZWdyaXR5IGNvbnN0cmFpbnQuCisgKiAtLS0tLS0tLS0tCisgKi8K K0RhdHVtCitUUklfRktleV9ub2FjdGlvbl9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkv KgorCSAqIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUg cmlnaHQgdGltZSBhbmQgZXZlbnQuCisJICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywg IlRSSV9GS2V5X25vYWN0aW9uX2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwkvKgor CSAqIFNoYXJlIGNvZGUgd2l0aCBSRVNUUklDVC9VUERBVEUgY2FzZXMuCisJICovCisJcmV0 dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIHRydWUp OworfQorCisvKgorICogVFJJX0ZLZXlfcmVzdHJpY3RfZGVsIC0KKyAqCisgKiBSZXN0cmlj dCBkZWxldGUgZnJvbSBQSyB0YWJsZSB0byByb3dzIHVucmVmZXJlbmNlZCBieSBmb3JlaWdu IGtleS4KKyAqCisgKiBUaGUgU1FMIHN0YW5kYXJkIGludGVuZHMgdGhhdCB0aGlzIHJlZmVy ZW50aWFsIGFjdGlvbiBvY2N1ciBleGFjdGx5IHdoZW4KKyAqIHRoZSBkZWxldGUgaXMgcGVy Zm9ybWVkLCByYXRoZXIgdGhhbiBhZnRlci4gIFRoaXMgYXBwZWFycyB0byBiZQorICogdGhl IG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuICJOTyBBQ1RJT04iIGFuZCAiUkVTVFJJQ1QiLiAg SW4gUG9zdGdyZXMKKyAqIHdlIHN0aWxsIGltcGxlbWVudCB0aGlzIGFzIGFuIEFGVEVSIHRy aWdnZXIsIGJ1dCBpdCdzIG5vbi1kZWZlcnJhYmxlLgorICovCitEYXR1bQorVFJJX0ZLZXlf cmVzdHJpY3RfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlz IGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4g Ki8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfcmVzdHJpY3RfZGVsIiwg UklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBOTyBBQ1RJT04v VVBEQVRFIGNhc2VzLiAqLworCXJldHVybiByaV9yZXN0cmljdCgoVHJpZ2dlckRhdGEgKikg ZmNpbmZvLT5jb250ZXh0LCBmYWxzZSk7Cit9CisKKy8qCisgKiBUUklfRktleV9ub2FjdGlv bl91cGQgLQorICoKKyAqIEdpdmUgYW4gZXJyb3IgYW5kIHJvbGwgYmFjayB0aGUgY3VycmVu dCB0cmFuc2FjdGlvbiBpZiB0aGUKKyAqIHVwZGF0ZSBoYXMgcmVzdWx0ZWQgaW4gYSB2aW9s YXRpb24gb2YgdGhlIGdpdmVuIHJlZmVyZW50aWFsCisgKiBpbnRlZ3JpdHkgY29uc3RyYWlu dC4KKyAqLworRGF0dW0KK1RSSV9GS2V5X25vYWN0aW9uX3VwZChQR19GVU5DVElPTl9BUkdT KQoreworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0 aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywg IlRSSV9GS2V5X25vYWN0aW9uX3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKiBT aGFyZSBjb2RlIHdpdGggUkVTVFJJQ1QvREVMRVRFIGNhc2VzLiAqLworCXJldHVybiByaV9y ZXN0cmljdCgoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0LCB0cnVlKTsKK30KKwor LyoKKyAqIFRSSV9GS2V5X3Jlc3RyaWN0X3VwZCAtCisgKgorICogUmVzdHJpY3QgdXBkYXRl IG9mIFBLIHRvIHJvd3MgdW5yZWZlcmVuY2VkIGJ5IGZvcmVpZ24ga2V5LgorICoKKyAqIFRo ZSBTUUwgc3RhbmRhcmQgaW50ZW5kcyB0aGF0IHRoaXMgcmVmZXJlbnRpYWwgYWN0aW9uIG9j Y3VyIGV4YWN0bHkgd2hlbgorICogdGhlIHVwZGF0ZSBpcyBwZXJmb3JtZWQsIHJhdGhlciB0 aGFuIGFmdGVyLiAgVGhpcyBhcHBlYXJzIHRvIGJlCisgKiB0aGUgb25seSBkaWZmZXJlbmNl IGJldHdlZW4gIk5PIEFDVElPTiIgYW5kICJSRVNUUklDVCIuICBJbiBQb3N0Z3JlcworICog d2Ugc3RpbGwgaW1wbGVtZW50IHRoaXMgYXMgYW4gQUZURVIgdHJpZ2dlciwgYnV0IGl0J3Mg bm9uLWRlZmVycmFibGUuCisgKi8KK0RhdHVtCitUUklfRktleV9yZXN0cmljdF91cGQoUEdf RlVOQ1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmln Z2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJp Z2dlcihmY2luZm8sICJUUklfRktleV9yZXN0cmljdF91cGQiLCBSSV9UUklHVFlQRV9VUERB VEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIE5PIEFDVElPTi9ERUxFVEUgY2FzZXMuICov CisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQs IGZhbHNlKTsKK30KIAogLyoKICAqIFJJX0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkIC0K QEAgLTEyNDEsNyArMTQzNSw3IEBAIFJJX0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkKFRy aWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIHBrX3JlbCwKIAkJcmV0dXJuIGZhbHNlOwogCiAJ LyogSWYgYWxsIG9sZCBhbmQgbmV3IGtleSB2YWx1ZXMgYXJlIGVxdWFsLCBubyBjaGVjayBp cyBuZWVkZWQgKi8KLQlpZiAobmV3c2xvdCAmJiByaV9LZXlzRXF1YWwocGtfcmVsLCBvbGRz bG90LCBuZXdzbG90LCByaWluZm8sIHRydWUpKQorCWlmIChuZXdzbG90ICYmIHJpX0tleXNT dGFibGUocGtfcmVsLCBvbGRzbG90LCBuZXdzbG90LCByaWluZm8sIHRydWUpKQogCQlyZXR1 cm4gZmFsc2U7CiAKIAkvKiBFbHNlIHdlIG5lZWQgdG8gZmlyZSB0aGUgdHJpZ2dlci4gKi8K QEAgLTEzNDAsNyArMTUzNCw3IEBAIFJJX0ZLZXlfZmtfdXBkX2NoZWNrX3JlcXVpcmVkKFRy aWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIGZrX3JlbCwKIAkJcmV0dXJuIHRydWU7CiAKIAkv KiBJZiBhbGwgb2xkIGFuZCBuZXcga2V5IHZhbHVlcyBhcmUgZXF1YWwsIG5vIGNoZWNrIGlz IG5lZWRlZCAqLwotCWlmIChyaV9LZXlzRXF1YWwoZmtfcmVsLCBvbGRzbG90LCBuZXdzbG90 LCByaWluZm8sIGZhbHNlKSkKKwlpZiAocmlfS2V5c1N0YWJsZShma19yZWwsIG9sZHNsb3Qs IG5ld3Nsb3QsIHJpaW5mbywgZmFsc2UpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBFbHNl IHdlIG5lZWQgdG8gZmlyZSB0aGUgdHJpZ2dlci4gKi8KQEAgLTE0ODgsMTUgKzE2ODIsMTcg QEAgUklfSW5pdGlhbF9DaGVjayhUcmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBma19yZWws IFJlbGF0aW9uIHBrX3JlbCkKIAlzZXAgPSAiKCI7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCBy aWluZm8tPm5rZXlzOyBpKyspCiAJewotCQlPaWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBr X3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJT2lkCQkJZmtfdHlwZSA9IFJJQXR0 VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7Ci0JCU9pZAkJCXBrX2NvbGwg PSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7Ci0JCU9p ZAkJCWZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tpXSk7CisJCU9pZAlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19h dHRudW1zW2ldKTsKKwkJT2lkCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8t PmZrX2F0dG51bXNbaV0pOworCQlPaWQJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3Jl bCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJT2lkCWZrX2NvbGwgPSBSSUF0dENvbGxh dGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CiAKIAkJcXVvdGVPbmVOYW1l KHBrYXR0bmFtZSArIDMsCiAJCQkJCSBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0 dG51bXNbaV0pKTsKKwogCQlxdW90ZU9uZU5hbWUoZmthdHRuYW1lICsgMywKIAkJCQkJIFJJ QXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCiAJCXJpX0dlbmVy YXRlUXVhbCgmcXVlcnlidWYsIHNlcCwKIAkJCQkJCXBrYXR0bmFtZSwgcGtfdHlwZSwKIAkJ CQkJCXJpaW5mby0+cGZfZXFfb3Byc1tpXSwKQEAgLTIxMzcsNiArMjMzMyw3IEBAIHJpX0xv YWRDb25zdHJhaW50SW5mbyhPaWQgY29uc3RyYWludE9pZCkKIAlyaWluZm8gPSAoUklfQ29u c3RyYWludEluZm8gKikgaGFzaF9zZWFyY2gocmlfY29uc3RyYWludF9jYWNoZSwKIAkJCQkJ CQkJCQkJICAgJmNvbnN0cmFpbnRPaWQsCiAJCQkJCQkJCQkJCSAgIEhBU0hfRU5URVIsICZm b3VuZCk7CisKIAlpZiAoIWZvdW5kKQogCQlyaWluZm8tPnZhbGlkID0gZmFsc2U7CiAJZWxz ZSBpZiAocmlpbmZvLT52YWxpZCkKQEAgLTIxNzEsNiArMjM2OCw3IEBAIHJpX0xvYWRDb25z dHJhaW50SW5mbyhPaWQgY29uc3RyYWludE9pZCkKIAlyaWluZm8tPmNvbmZ1cGR0eXBlID0g Y29uRm9ybS0+Y29uZnVwZHR5cGU7CiAJcmlpbmZvLT5jb25mZGVsdHlwZSA9IGNvbkZvcm0t PmNvbmZkZWx0eXBlOwogCXJpaW5mby0+Y29uZm1hdGNodHlwZSA9IGNvbkZvcm0tPmNvbmZt YXRjaHR5cGU7CisJcmlpbmZvLT50ZW1wb3JhbCA9IGNvbkZvcm0tPmNvbndpdGhvdXRvdmVy bGFwczsKIAogCURlY29uc3RydWN0RmtDb25zdHJhaW50Um93KHR1cCwKIAkJCQkJCQkgICAm cmlpbmZvLT5ua2V5cywKQEAgLTI3OTEsOSArMjk4OSwxMiBAQCByaV9IYXNoUHJlcGFyZWRQ bGFuKFJJX1F1ZXJ5S2V5ICprZXksIFNQSVBsYW5QdHIgcGxhbikKIAogCiAvKgotICogcmlf S2V5c0VxdWFsIC0KKyAqIHJpX0tleXNTdGFibGUgLQogICoKLSAqIENoZWNrIGlmIGFsbCBr ZXkgdmFsdWVzIGluIE9MRCBhbmQgTkVXIGFyZSBlcXVhbC4KKyAqIENoZWNrIGlmIGFsbCBr ZXkgdmFsdWVzIGluIE9MRCBhbmQgTkVXIGFyZSAiZXF1aXZhbGVudCI6CisgKiBGb3Igbm9y bWFsIEZLcyB3ZSBjaGVjayBmb3IgZXF1YWxpdHkuCisgKiBGb3IgdGVtcG9yYWwgRktzIHdl IGNoZWNrIHRoYXQgdGhlIFBLIHNpZGUgaXMgYSBzdXBlcnNldCBvZiBpdHMgb2xkIHZhbHVl LAorICogb3IgdGhlIEZLIHNpZGUgaXMgYSBzdWJzZXQuCiAgKgogICogTm90ZTogYXQgc29t ZSBwb2ludCB3ZSBtaWdodCB3aXNoIHRvIHJlZGVmaW5lIHRoaXMgYXMgY2hlY2tpbmcgZm9y CiAgKiAiSVMgTk9UIERJU1RJTkNUIiByYXRoZXIgdGhhbiAiPSIsIHRoYXQgaXMsIGFsbG93 IHR3byBudWxscyB0byBiZQpAQCAtMjgwMSw3ICszMDAyLDcgQEAgcmlfSGFzaFByZXBhcmVk UGxhbihSSV9RdWVyeUtleSAqa2V5LCBTUElQbGFuUHRyIHBsYW4pCiAgKiBwcmV2aW91c2x5 IGZvdW5kIGF0IGxlYXN0IG9uZSBvZiB0aGUgcm93cyB0byBjb250YWluIG5vIG51bGxzLgog ICovCiBzdGF0aWMgYm9vbAotcmlfS2V5c0VxdWFsKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJs ZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAorcmlfS2V5c1N0YWJs ZShSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xv dCAqbmV3c2xvdCwKIAkJCSBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBib29s IHJlbF9pc19waykKIHsKIAljb25zdCBpbnQxNiAqYXR0bnVtczsKQEAgLTI4MzQsMzUgKzMw MzUsODYgQEAgcmlfS2V5c0VxdWFsKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKm9s ZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAogCiAJCWlmIChyZWxfaXNfcGspCiAJ CXsKLQkJCS8qCi0JCQkgKiBJZiB3ZSBhcmUgbG9va2luZyBhdCB0aGUgUEsgdGFibGUsIHRo ZW4gZG8gYSBieXRld2lzZQotCQkJICogY29tcGFyaXNvbi4gIFdlIG11c3QgcHJvcGFnYXRl IFBLIGNoYW5nZXMgaWYgdGhlIHZhbHVlIGlzCi0JCQkgKiBjaGFuZ2VkIHRvIG9uZSB0aGF0 ICJsb29rcyIgZGlmZmVyZW50IGJ1dCB3b3VsZCBjb21wYXJlIGFzCi0JCQkgKiBlcXVhbCB1 c2luZyB0aGUgZXF1YWxpdHkgb3BlcmF0b3IuICBUaGlzIG9ubHkgbWFrZXMgYQotCQkJICog ZGlmZmVyZW5jZSBmb3IgT04gVVBEQVRFIENBU0NBREUsIGJ1dCBmb3IgY29uc2lzdGVuY3kg d2UgdHJlYXQKLQkJCSAqIGFsbCBjaGFuZ2VzIHRvIHRoZSBQSyB0aGUgc2FtZS4KLQkJCSAq LwotCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cihvbGRzbG90LT50 dHNfdHVwbGVEZXNjcmlwdG9yLCBhdHRudW1zW2ldIC0gMSk7CisJCQlpZiAocmlpbmZvLT50 ZW1wb3JhbCAmJiBpID09IHJpaW5mby0+bmtleXMgLSAxKQorCQkJeworCQkJCWlmIChyaV9S YW5nZUF0dHJpYnV0ZU5lZWRzQ2hlY2sodHJ1ZSwgb2xkdmFsdWUsIG5ld3ZhbHVlKSkKKwkJ CQkJcmV0dXJuIGZhbHNlOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICog SWYgd2UgYXJlIGxvb2tpbmcgYXQgdGhlIFBLIHRhYmxlLCB0aGVuIGRvIGEgYnl0ZXdpc2UK KwkJCQkgKiBjb21wYXJpc29uLiAgV2UgbXVzdCBwcm9wYWdhdGUgUEsgY2hhbmdlcyBpZiB0 aGUgdmFsdWUgaXMKKwkJCQkgKiBjaGFuZ2VkIHRvIG9uZSB0aGF0ICJsb29rcyIgZGlmZmVy ZW50IGJ1dCB3b3VsZCBjb21wYXJlIGFzCisJCQkJICogZXF1YWwgdXNpbmcgdGhlIGVxdWFs aXR5IG9wZXJhdG9yLiAgVGhpcyBvbmx5IG1ha2VzIGEKKwkJCQkgKiBkaWZmZXJlbmNlIGZv ciBPTiBVUERBVEUgQ0FTQ0FERSwgYnV0IGZvciBjb25zaXN0ZW5jeSB3ZSB0cmVhdAorCQkJ CSAqIGFsbCBjaGFuZ2VzIHRvIHRoZSBQSyB0aGUgc2FtZS4KKwkJCQkgKi8KKwkJCQlGb3Jt X3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKG9sZHNsb3QtPnR0c190dXBsZURl c2NyaXB0b3IsIGF0dG51bXNbaV0gLSAxKTsKIAotCQkJaWYgKCFkYXR1bV9pbWFnZV9lcShv bGR2YWx1ZSwgbmV3dmFsdWUsIGF0dC0+YXR0Ynl2YWwsIGF0dC0+YXR0bGVuKSkKLQkJCQly ZXR1cm4gZmFsc2U7CisJCQkJaWYgKCFkYXR1bV9pbWFnZV9lcShvbGR2YWx1ZSwgbmV3dmFs dWUsIGF0dC0+YXR0Ynl2YWwsIGF0dC0+YXR0bGVuKSkKKwkJCQkJcmV0dXJuIGZhbHNlOwor CQkJfQogCQl9CiAJCWVsc2UKIAkJewotCQkJLyoKLQkJCSAqIEZvciB0aGUgRksgdGFibGUs IGNvbXBhcmUgd2l0aCB0aGUgYXBwcm9wcmlhdGUgZXF1YWxpdHkKLQkJCSAqIG9wZXJhdG9y LiAgQ2hhbmdlcyB0aGF0IGNvbXBhcmUgZXF1YWwgd2lsbCBzdGlsbCBzYXRpc2Z5IHRoZQot CQkJICogY29uc3RyYWludCBhZnRlciB0aGUgdXBkYXRlLgotCQkJICovCi0JCQlpZiAoIXJp X0F0dHJpYnV0ZXNFcXVhbChyaWluZm8tPmZmX2VxX29wcnNbaV0sIFJJQXR0VHlwZShyZWws IGF0dG51bXNbaV0pLAotCQkJCQkJCQkJb2xkdmFsdWUsIG5ld3ZhbHVlKSkKLQkJCQlyZXR1 cm4gZmFsc2U7CisJCQlpZiAocmlpbmZvLT50ZW1wb3JhbCAmJiBpID09IHJpaW5mby0+bmtl eXMgLSAxKQorCQkJeworCQkJCWlmIChyaV9SYW5nZUF0dHJpYnV0ZU5lZWRzQ2hlY2soZmFs c2UsIG9sZHZhbHVlLCBuZXd2YWx1ZSkpCisJCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJ CWVsc2UKKwkJCXsKKwkJCQkvKgorCQkJCSAqIEZvciB0aGUgRksgdGFibGUsIGNvbXBhcmUg d2l0aCB0aGUgYXBwcm9wcmlhdGUgZXF1YWxpdHkKKwkJCQkgKiBvcGVyYXRvci4gIENoYW5n ZXMgdGhhdCBjb21wYXJlIGVxdWFsIHdpbGwgc3RpbGwgc2F0aXNmeSB0aGUKKwkJCQkgKiBj b25zdHJhaW50IGFmdGVyIHRoZSB1cGRhdGUuCisJCQkJICovCisJCQkJaWYgKCFyaV9BdHRy aWJ1dGVzRXF1YWwocmlpbmZvLT5mZl9lcV9vcHJzW2ldLCBSSUF0dFR5cGUocmVsLCBhdHRu dW1zW2ldKSwKKwkJCQkJCQkJCQlvbGR2YWx1ZSwgbmV3dmFsdWUpKQorCQkJCQlyZXR1cm4g ZmFsc2U7CisJCQl9CiAJCX0KIAl9CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorLyoKKyAqIHJp X1JhbmdlQXR0cmlidXRlTmVlZHNDaGVjayAtCisgKgorICogQ29tcGFyZSBvbGQgYW5kIG5l dyB2YWx1ZXMsIGFuZCByZXR1cm4gdHJ1ZSBpZiB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBGSy4K KyAqCisgKiBOQjogd2UgaGF2ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCBuZWl0aGVyIHZhbHVl IGlzIG51bGwuCisgKi8KK3N0YXRpYyBib29sCityaV9SYW5nZUF0dHJpYnV0ZU5lZWRzQ2hl Y2soYm9vbCByZWxfaXNfcGssIERhdHVtIG9sZHZhbHVlLCBEYXR1bSBuZXd2YWx1ZSkKK3sK KwlSYW5nZVR5cGUgKm9sZHJhbmdlLCAqbmV3cmFuZ2U7CisJT2lkIG9sZHJuZ3R5cGUsIG5l d3JuZ3R5cGU7CisJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlOworCisJb2xkcmFuZ2UgPSBE YXR1bUdldFJhbmdlVHlwZVAob2xkdmFsdWUpOworCW5ld3JhbmdlID0gRGF0dW1HZXRSYW5n ZVR5cGVQKG5ld3ZhbHVlKTsKKwlvbGRybmd0eXBlID0gUmFuZ2VUeXBlR2V0T2lkKG9sZHJh bmdlKTsKKwluZXdybmd0eXBlID0gUmFuZ2VUeXBlR2V0T2lkKG5ld3JhbmdlKTsKKworCWlm IChvbGRybmd0eXBlICE9IG5ld3JuZ3R5cGUpCisJCWVsb2coRVJST1IsICJyYW5nZSB0eXBl cyBhcmUgaW5jb25zaXN0ZW50Iik7CisKKwl0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hl KG9sZHJuZ3R5cGUsIFRZUEVDQUNIRV9SQU5HRV9JTkZPKTsKKwlpZiAodHlwY2FjaGUtPnJu Z2VsZW10eXBlID09IE5VTEwpCisJCWVsb2coRVJST1IsICJ0eXBlICV1IGlzIG5vdCBhIHJh bmdlIHR5cGUiLCBvbGRybmd0eXBlKTsKKworCWlmIChyZWxfaXNfcGspCisJCS8qIElmIHRo ZSBQSydzIHJhbmdlIHNocnVuaywgYSBjb25mbGljdCBpcyBwb3NzaWJsZS4gKi8KKwkJcmV0 dXJuICFyYW5nZV9lcV9pbnRlcm5hbCh0eXBjYWNoZSwgb2xkcmFuZ2UsIG5ld3JhbmdlKSAm JgorCQkJIXJhbmdlX2NvbnRhaW5zX2ludGVybmFsKHR5cGNhY2hlLCBuZXdyYW5nZSwgb2xk cmFuZ2UpOworCWVsc2UKKwkJLyogSWYgdGhlIEZLJ3MgcmFuZ2UgZ3JldywgYSBjb25mbGlj dCBpcyBwb3NzaWJsZS4gKi8KKwkJcmV0dXJuICFyYW5nZV9lcV9pbnRlcm5hbCh0eXBjYWNo ZSwgb2xkcmFuZ2UsIG5ld3JhbmdlKSAmJgorCQkJcmFuZ2VfY29udGFpbnNfaW50ZXJuYWwo dHlwY2FjaGUsIG5ld3JhbmdlLCBvbGRyYW5nZSk7Cit9CiAKIC8qCiAgKiByaV9BdHRyaWJ1 dGVzRXF1YWwgLQpAQCAtMzAyMSwxMCArMzI3MywxNiBAQCBSSV9GS2V5X3RyaWdnZXJfdHlw ZShPaWQgdGdmb2lkKQogCQljYXNlIEZfUklfRktFWV9TRVRERUZBVUxUX1VQRDoKIAkJY2Fz ZSBGX1JJX0ZLRVlfTk9BQ1RJT05fREVMOgogCQljYXNlIEZfUklfRktFWV9OT0FDVElPTl9V UEQ6CisJCWNhc2UgRl9UUklfRktFWV9SRVNUUklDVF9ERUw6CisJCWNhc2UgRl9UUklfRktF WV9SRVNUUklDVF9VUEQ6CisJCWNhc2UgRl9UUklfRktFWV9OT0FDVElPTl9ERUw6CisJCWNh c2UgRl9UUklfRktFWV9OT0FDVElPTl9VUEQ6CiAJCQlyZXR1cm4gUklfVFJJR0dFUl9QSzsK IAogCQljYXNlIEZfUklfRktFWV9DSEVDS19JTlM6CiAJCWNhc2UgRl9SSV9GS0VZX0NIRUNL X1VQRDoKKwkJY2FzZSBGX1RSSV9GS0VZX0NIRUNLX0lOUzoKKwkJY2FzZSBGX1RSSV9GS0VZ X0NIRUNLX1VQRDoKIAkJCXJldHVybiBSSV9UUklHR0VSX0ZLOwogCX0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDI1YWMwYWQxYmMuLjFiZjNhZWIzNDIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTMzOSw3ICszMzksNyBAQCBzdGF0aWMg Y2hhciAqcGdfZ2V0X3ZpZXdkZWZfd29ya2VyKE9pZCB2aWV3b2lkLAogCQkJCQkJCQkgICBp bnQgcHJldHR5RmxhZ3MsIGludCB3cmFwQ29sdW1uKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRf dHJpZ2dlcmRlZl93b3JrZXIoT2lkIHRyaWdpZCwgYm9vbCBwcmV0dHkpOwogc3RhdGljIGlu dAlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJh eSwgT2lkIHJlbElkLAotCQkJCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgU3RyaW5n SW5mbyBidWYpOworCQkJCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgYm9vbCB3aXRo UGVyaW9kLCBTdHJpbmdJbmZvIGJ1Zik7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X3J1bGVkZWZf d29ya2VyKE9pZCBydWxlb2lkLCBpbnQgcHJldHR5RmxhZ3MpOwogc3RhdGljIGNoYXIgKnBn X2dldF9pbmRleGRlZl93b3JrZXIoT2lkIGluZGV4cmVsaWQsIGludCBjb2xubywKIAkJCQkJ CQkJCWNvbnN0IE9pZCAqZXhjbHVkZU9wcywKQEAgLTIyNDcsNyArMjI0Nyw5IEBAIHBnX2dl dF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21t YW5kLAogCQkJCXZhbCA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09OU1RST0lELCB0dXAs CiAJCQkJCQkJCQkJCSBBbnVtX3BnX2NvbnN0cmFpbnRfY29ua2V5KTsKIAotCQkJCWRlY29t cGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgZmFsc2Us ICZidWYpOworCQkJCS8qIElmIGl0IGlzIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXkgdGhlbiBp dCB1c2VzIFBFUklPRC4gKi8KKwkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZh bCwgY29uRm9ybS0+Y29ucmVsaWQsIGZhbHNlLAorCQkJCQkJCQkJCQkgY29uRm9ybS0+Y29u d2l0aG91dG92ZXJsYXBzLCAmYnVmKTsKIAogCQkJCS8qIGFkZCBmb3JlaWduIHJlbGF0aW9u IG5hbWUgKi8KIAkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICIpIFJFRkVSRU5DRVMgJXMo IiwKQEAgLTIyNTgsNyArMjI2MCw4IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihP aWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCXZhbCA9IFN5c0NhY2hl R2V0QXR0ck5vdE51bGwoQ09OU1RST0lELCB0dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3BnX2Nv bnN0cmFpbnRfY29uZmtleSk7CiAKLQkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5 KHZhbCwgY29uRm9ybS0+Y29uZnJlbGlkLCBmYWxzZSwgJmJ1Zik7CisJCQkJZGVjb21waWxl X2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbmZyZWxpZCwgZmFsc2UsCisJ CQkJCQkJCQkJCSBjb25Gb3JtLT5jb253aXRob3V0b3ZlcmxhcHMsICZidWYpOwogCiAJCQkJ YXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJyknKTsKIApAQCAtMjM0NCw3ICsyMzQ3LDcg QEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wg ZnVsbENvbW1hbmQsCiAJCQkJaWYgKCFpc251bGwpCiAJCQkJewogCQkJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZidWYsICIgKCIpOwotCQkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4 X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGZhbHNlLCAmYnVmKTsKKwkJCQkJZGVj b21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCBmYWxz ZSwgZmFsc2UsICZidWYpOwogCQkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnKScp OwogCQkJCX0KIApAQCAtMjM3OSw3ICsyMzgyLDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZf d29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJdmFsID0g U3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIHR1cCwKIAkJCQkJCQkJCQkJIEFu dW1fcGdfY29uc3RyYWludF9jb25rZXkpOwogCi0JCQkJa2V5YXR0cyA9IGRlY29tcGlsZV9j b2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgY29uRm9ybS0+Y29u d2l0aG91dG92ZXJsYXBzLCAmYnVmKTsKKwkJCQlrZXlhdHRzID0gZGVjb21waWxlX2NvbHVt bl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCBjb25Gb3JtLT5jb253aXRo b3V0b3ZlcmxhcHMsIGZhbHNlLCAmYnVmKTsKIAogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFy KCZidWYsICcpJyk7CiAKQEAgLTI1NzUsNyArMjU3OCw3IEBAIHBnX2dldF9jb25zdHJhaW50 ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogICovCiBz dGF0aWMgaW50CiBkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9p bmRleF9hcnJheSwgT2lkIHJlbElkLAotCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywg U3RyaW5nSW5mbyBidWYpCisJCQkJCQkJIGJvb2wgd2l0aG91dE92ZXJsYXBzLCBib29sIHdp dGhQZXJpb2QsIFN0cmluZ0luZm8gYnVmKQogewogCURhdHVtCSAgICprZXlzOwogCWludAkJ CW5LZXlzOwpAQCAtMjU5NCw3ICsyNTk3LDkgQEAgZGVjb21waWxlX2NvbHVtbl9pbmRleF9h cnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwKIAkJaWYgKGogPT0g MCkKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90ZV9pZGVudGlmaWVyKGNv bE5hbWUpKTsKIAkJZWxzZQotCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsICVzIiwgcXVv dGVfaWRlbnRpZmllcihjb2xOYW1lKSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwg JXMlcyIsCisJCQkJCQkJICh3aXRoUGVyaW9kICYmIGogPT0gbktleXMgLSAxKSA/ICJQRVJJ T0QgIiA6ICIiLAorCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKIAl9CiAJ aWYgKHdpdGhvdXRPdmVybGFwcykKIAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIg V0lUSE9VVCBPVkVSTEFQUyIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19jb25zdHJhaW50LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaApp bmRleCBjMTdiMWU5ZDMxLi4wY2MxNWE1MGQ3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2NvbnN0cmFpbnQuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Nv bnN0cmFpbnQuaApAQCAtMTI3LDE5ICsxMjcsMTkgQEAgQ0FUQUxPRyhwZ19jb25zdHJhaW50 LDI2MDYsQ29uc3RyYWludFJlbGF0aW9uSWQpCiAJaW50MTYJCWNvbmZrZXlbMV07CiAKIAkv KgotCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9IEZLIGVxdWFs aXR5IG9wZXJhdG9ycyBmb3IgZWFjaAorCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURz IG9mIHRoZSBQSyA9IEZLIGNvbXBhcmlzb24gb3BlcmF0b3JzIGZvciBlYWNoCiAJICogY29s dW1uIG9mIHRoZSBjb25zdHJhaW50CiAJICovCiAJT2lkCQkJY29ucGZlcW9wWzFdIEJLSV9M T09LVVAocGdfb3BlcmF0b3IpOwogCiAJLyoKLQkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUg T0lEcyBvZiB0aGUgUEsgPSBQSyBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIGVhY2gKKwkgKiBJ ZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgUEsgPSBQSyBjb21wYXJpc29uIG9w ZXJhdG9ycyBmb3IgZWFjaAogCSAqIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludCAoaS5lLiwg ZXF1YWxpdHkgZm9yIHRoZSByZWZlcmVuY2VkIGNvbHVtbnMpCiAJICovCiAJT2lkCQkJY29u cHBlcW9wWzFdIEJLSV9MT09LVVAocGdfb3BlcmF0b3IpOwogCiAJLyoKLQkgKiBJZiBhIGZv cmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgRksgPSBGSyBlcXVhbGl0eSBvcGVyYXRvcnMg Zm9yIGVhY2gKKwkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgRksgPSBG SyBjb21wYXJpc29uIG9wZXJhdG9ycyBmb3IgZWFjaAogCSAqIGNvbHVtbiBvZiB0aGUgY29u c3RyYWludCAoaS5lLiwgZXF1YWxpdHkgZm9yIHRoZSByZWZlcmVuY2luZyBjb2x1bW5zKQog CSAqLwogCU9pZAkJCWNvbmZmZXFvcFsxXSBCS0lfTE9PS1VQKHBnX29wZXJhdG9yKTsKQEAg LTE4MSw3ICsxODEsNyBAQCBERUNMQVJFX0lOREVYKHBnX2NvbnN0cmFpbnRfY29ucGFyZW50 aWRfaW5kZXgsIDI1NzksIENvbnN0cmFpbnRQYXJlbnRJbmRleElkLCBwZwogCiAvKiBjb25r ZXkgY2FuIGNvbnRhaW4gemVybyAoSW52YWxpZEF0dHJOdW1iZXIpIGlmIGEgd2hvbGUtcm93 IFZhciBpcyB1c2VkICovCiBERUNMQVJFX0FSUkFZX0ZPUkVJR05fS0VZX09QVCgoY29ucmVs aWQsIGNvbmtleSksIHBnX2F0dHJpYnV0ZSwgKGF0dHJlbGlkLCBhdHRudW0pKTsKLURFQ0xB UkVfQVJSQVlfRk9SRUlHTl9LRVkoKGNvbmZyZWxpZCwgY29uZmtleSksIHBnX2F0dHJpYnV0 ZSwgKGF0dHJlbGlkLCBhdHRudW0pKTsKK0RFQ0xBUkVfQVJSQVlfRk9SRUlHTl9LRVlfT1BU KChjb25mcmVsaWQsIGNvbmZrZXkpLCBwZ19hdHRyaWJ1dGUsIChhdHRyZWxpZCwgYXR0bnVt KSk7CiAKICNpZmRlZiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUKIApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKaW5kZXggZmI1OGRlZTNiYy4uZTcwYjM5MWUwNCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CkBAIC0zOTQ1LDYgKzM5NDUsMzAgQEAKICAgcHJvcmV0dHlwZSA9PiAn dHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAogICBwcm9zcmMgPT4gJ1JJX0ZLZXlfbm9h Y3Rpb25fdXBkJyB9LAogCisjIFRlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBjb25z dHJhaW50IHRyaWdnZXJzCit7IG9pZCA9PiAnNjEyMicsIGRlc2NyID0+ICd0ZW1wb3JhbCBy ZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBLRVkgLi4uIFJFRkVSRU5DRVMnLAorICBw cm9uYW1lID0+ICdUUklfRktleV9jaGVja19pbnMnLCBwcm92b2xhdGlsZSA9PiAndicsIHBy b3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ ICdUUklfRktleV9jaGVja19pbnMnIH0sCit7IG9pZCA9PiAnNjEyMycsIGRlc2NyID0+ICd0 ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBLRVkgLi4uIFJFRkVSRU5D RVMnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9jaGVja191cGQnLCBwcm92b2xhdGlsZSA9 PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywg cHJvc3JjID0+ICdUUklfRktleV9jaGVja191cGQnIH0sCit7IG9pZCA9PiAnNjEyNicsIGRl c2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRFIFJFU1RS SUNUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfZGVsJywgcHJvdm9sYXRp bGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4g JycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfZGVsJyB9LAoreyBvaWQgPT4g JzYxMjcnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQ REFURSBSRVNUUklDVCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcs IHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2Fy Z3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcgfSwK K3sgb2lkID0+ICc2MTMyJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVn cml0eSBPTiBERUxFVEUgTk8gQUNUSU9OJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfbm9h Y3Rpb25fZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmln Z2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlfbm9hY3Rp b25fZGVsJyB9LAoreyBvaWQgPT4gJzYxMzMnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJl bnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBOTyBBQ1RJT04nLAorICBwcm9uYW1lID0+ICdU UklfRktleV9ub2FjdGlvbl91cGQnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5 cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklf RktleV9ub2FjdGlvbl91cGQnIH0sCisKIHsgb2lkID0+ICcxNjY2JywKICAgcHJvbmFtZSA9 PiAndmFyYml0ZXEnLCBwcm9sZWFrcHJvb2YgPT4gJ3QnLCBwcm9yZXR0eXBlID0+ICdib29s JywKICAgcHJvYXJndHlwZXMgPT4gJ3ZhcmJpdCB2YXJiaXQnLCBwcm9zcmMgPT4gJ2JpdGVx JyB9LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDA5ODk5MGRkMTYuLmFkZmM1YTIy M2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTI2MDksNyArMjYwOSw5IEBAIHR5 cGVkZWYgc3RydWN0IENvbnN0cmFpbnQKIAkvKiBGaWVsZHMgdXNlZCBmb3IgRk9SRUlHTiBL RVkgY29uc3RyYWludHM6ICovCiAJUmFuZ2VWYXIgICAqcGt0YWJsZTsJCS8qIFByaW1hcnkg a2V5IHRhYmxlICovCiAJTGlzdAkgICAqZmtfYXR0cnM7CQkvKiBBdHRyaWJ1dGVzIG9mIGZv cmVpZ24ga2V5ICovCisJTm9kZQkgICAqZmtfcGVyaW9kOwkJLyogU3RyaW5nIG5vZGUgbmFt aW5nIFBlcmlvZCBvciByYW5nZSBjb2x1bW4gKi8KIAlMaXN0CSAgICpwa19hdHRyczsJCS8q IENvcnJlc3BvbmRpbmcgYXR0cnMgaW4gUEsgdGFibGUgKi8KKwlOb2RlCSAgICpwa19wZXJp b2Q7CQkvKiBTdHJpbmcgbm9kZSBuYW1pbmcgUGVyaW9kIG9yIHJhbmdlIGNvbHVtbiAqLwog CWNoYXIJCWZrX21hdGNodHlwZTsJLyogRlVMTCwgUEFSVElBTCwgU0lNUExFICovCiAJY2hh cgkJZmtfdXBkX2FjdGlvbjsJLyogT04gVVBEQVRFIGFjdGlvbiAqLwogCWNoYXIJCWZrX2Rl bF9hY3Rpb247CS8qIE9OIERFTEVURSBhY3Rpb24gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRl eCA1OTg0ZGNmYTRiLi5jY2Y1YmY4YWE2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJz ZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0zMjYs NiArMzI2LDcgQEAgUEdfS0VZV09SRCgicGFydGlhbCIsIFBBUlRJQUwsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpdGlvbiIsIFBBUlRJVElP TiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc2lu ZyIsIFBBU1NJTkcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoInBhc3N3b3JkIiwgUEFTU1dPUkQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKK1BHX0tFWVdPUkQoInBlcmlvZCIsIFBFUklPRCwgUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInBsYWNpbmciLCBQTEFDSU5HLCBSRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGxhbnMiLCBQTEFOUywgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicG9saWN5IiwgUE9MSUNZLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAppbmRleCBjNzQ0MTM3OWMxLi4xMmQy ZWJkNmE1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRf b3ZlcmxhcHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9v dmVybGFwcy5vdXQKQEAgLTM4MCwzICszODAsNTU0IEBAIFNFTEVDVCAqIEZST00gdHAyIE9S REVSIEJZIGlkLCB2YWxpZF9hdDsKICgxIHJvdykKIAogRFJPUCBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZDsKKy0tCistLSB0ZXN0IEZLIGRlcGVuZGVuY2llcworLS0KKy0tIGNhbid0 IGRyb3AgYSByYW5nZSByZWZlcmVuY2VkIGJ5IGFuIEZLLCB1bmxlc3Mgd2l0aCBDQVNDQURF CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQg dHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVu dF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBS SU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbDMgKGlkLCBQRVJJT0QgdmFsaWRf YXQpCispOworQUxURVIgVEFCTEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX2F0Owor RVJST1I6ICBjYW5ub3QgZHJvcCBjb2x1bW4gdmFsaWRfYXQgb2YgdGFibGUgdGVtcG9yYWwz IGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIGNvbnN0cmFp bnQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBvbiB0YWJsZSB0ZW1wb3JhbF9ma19ybmcycm5n IGRlcGVuZHMgb24gY29sdW1uIHZhbGlkX2F0IG9mIHRhYmxlIHRlbXBvcmFsMworSElOVDog IFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRv by4KK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2YWxpZF9hdCBDQVNDQURF OworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBjb25zdHJhaW50IHRlbXBvcmFsX2ZrX3Ju ZzJybmdfZmsgb24gdGFibGUgdGVtcG9yYWxfZmtfcm5nMnJuZworRFJPUCBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLQorLS0gdGVzdCBG T1JFSUdOIEtFWSwgcmFuZ2UgcmVmZXJlbmNlcyByYW5nZQorLS0KKy0tIENhbid0IGNyZWF0 ZSBhIEZLIHdpdGggYSBtaXNtYXRjaGVkIHJhbmdlIHR5cGUKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgaW50NHJhbmdl LAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX3BrMiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazIgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQs IFBFUklPRCB2YWxpZF9hdCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg InRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyIiBjYW5ub3QgYmUgaW1wbGVtZW50ZWQKK0RFVEFJ TDogIEtleSBjb2x1bW5zICJ2YWxpZF9hdCIgYW5kICJ2YWxpZF9hdCIgYXJlIG9mIGluY29t cGF0aWJsZSB0eXBlczogaW50NHJhbmdlIGFuZCB0c3JhbmdlLgorQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jhbmdl LAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQ RVJJT0QgdmFsaWRfYXQpCispOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nOwor LS0gd2l0aCBtaXNtYXRjaGVkIFBFUklPRCBjb2x1bW5zOgorLS0gKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIChpZCwgdmFsaWRfYXQpCitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFu Z2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwK KwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQs IHZhbGlkX2F0KQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qgb24gdGhl IHJlZmVyZW5jaW5nIHRhYmxlIGJ1dCBub3QgdGhlIHJlZmVyZW5jZWQgdGFibGUKKy0tIChw YXJlbnRfaWQsIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIChpZCwgUEVSSU9EIHZhbGlkX2F0KQor Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2 YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHVzZXMg UEVSSU9EIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlIGJ1dCBub3QgdGhlIHJlZmVyZW5jaW5n IHRhYmxlCistLSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgKGlk KQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0 ZW1wb3JhbF9ybmcgKGlkKQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qg b24gdGhlIHJlZmVyZW5jaW5nIHRhYmxlIGJ1dCBub3QgdGhlIHJlZmVyZW5jZWQgdGFibGUK Ky0tIChwYXJlbnRfaWQpIFJFRkVSRU5DRVMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCitDUkVB VEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBL RVkgKHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0Qg dmFsaWRfYXQpCispOworRVJST1I6ICBmb3JlaWduIGtleSB1c2VzIFBFUklPRCBvbiB0aGUg cmVmZXJlbmNlZCB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVuY2luZyB0YWJsZQorLS0gd2l0 aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5n ZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCispOwor RFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nOworLS0gc2hvdWxkIGZhaWwgYmVjYXVz ZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCBwYXJlbnRfaWQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVS SU9EIGlkKQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxp c3QgbXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGVzCistLSBUd28gc2NhbGFyIGNvbHVtbnMK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAor CXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkMSBpbnQ0cmFuZ2UsCisJcGFyZW50X2lk MiBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19wayBQUklN QVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQg dGVtcG9yYWxfZmsyX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVu dF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyIChp ZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK1xkIHRlbXBvcmFsX2ZrMl9ybmcycm5n CisgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfZmsyX3JuZzJybmciCisgICBD b2x1bW4gICB8ICAgVHlwZSAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAK Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLQorIGlkICAgICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVsbCB8 IAorIHZhbGlkX2F0ICAgfCB0c3JhbmdlICAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAor IHBhcmVudF9pZDEgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIHBh cmVudF9pZDIgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhl czoKKyAgICAidGVtcG9yYWxfZmsyX3JuZzJybmdfcGsiIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKK0ZvcmVpZ24ta2V5IGNvbnN0cmFpbnRzOgorICAg ICJ0ZW1wb3JhbF9mazJfcm5nMnJuZ19mayIgRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBh cmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyKGlk MSwgaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmsyX3Ju ZzJybmc7CistLQorLS0gdGVzdCBBTFRFUiBUQUJMRSBBREQgQ09OU1RSQUlOVAorLS0KK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQ RVJJT0QgdmFsaWRfYXQpOworLS0gVHdvIHNjYWxhciBjb2x1bW5zOgorQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX2ZrMl9ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNy YW5nZSwKKwlwYXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJlbnRfaWQyIGludDRyYW5nZSwK KwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m azJfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkK KwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlkMSwgaWQyLCBQRVJJT0QgdmFsaWRfYXQp OworXGQgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy50 ZW1wb3JhbF9mazJfcm5nMnJuZyIKKyAgIENvbHVtbiAgIHwgICBUeXBlICAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgICB8IGludDRyYW5n ZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgICB8IHRzcmFuZ2UgICB8 ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgcGFyZW50X2lkMSB8IGludDRyYW5nZSB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCisgcGFyZW50X2lkMiB8IGludDRyYW5nZSB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3JhbF9mazJfcm5nMnJu Z19wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorRm9y ZWlnbi1rZXkgY29uc3RyYWludHM6CisgICAgInRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrIiBG T1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KSBS RUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9hdCkKKwor LS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSwgYW5kIHdyb25n IGNvbHVtbiB0eXBlOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFMVEVSIENPTFVNTiB2YWxp ZF9hdCBUWVBFIGRhdGVyYW5nZSBVU0lORyBkYXRlcmFuZ2UobG93ZXIodmFsaWRfYXQpOjpk YXRlLCB1cHBlcih2YWxpZF9hdCk6OmRhdGUpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1w b3JhbF9ybmc7CitFUlJPUjogIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2Zr X3JuZzJybmdfZmsiIGNhbm5vdCBiZSBpbXBsZW1lbnRlZAorREVUQUlMOiAgS2V5IGNvbHVt bnMgInZhbGlkX2F0IiBhbmQgInZhbGlkX2F0IiBhcmUgb2YgaW5jb21wYXRpYmxlIHR5cGVz OiBkYXRlcmFuZ2UgYW5kIHRzcmFuZ2UuCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcy cm5nCisJQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgdHNyYW5nZSBVU0lORyB0c3Jhbmdl KGxvd2VyKHZhbGlkX2F0KSwgdXBwZXIodmFsaWRfYXQpKTsKKy0tIHdpdGggaW5mZXJyZWQg UEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZzsKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5j ZWQgY29sdW1uczoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrMgorCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCBwYXJlbnRfaWQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQ RVJJT0QgaWQpOworRVJST1I6ICBmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlz dCBtdXN0IG5vdCBjb250YWluIGR1cGxpY2F0ZXMKKy0tCistLSB0ZXN0IHdpdGggcm93cyBh bHJlYWR5CistLQorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19mazsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgn WzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFdJyk7 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKK0FMVEVSIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m azsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLSBzaG91 bGQgZmFpbDoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworRVJST1I6ICBp bnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIiB2aW9sYXRl cyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIgorREVU QUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzEsMiksIFsiVHVlIEphbiAwMiAw MDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikpIGlzIG5vdCBwcmVz ZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9ybmciLgorLS0gb2theSBhZ2FpbjoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmc7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcy cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFs X3JuZzsKKy0tCistLSB0ZXN0IHBnX2dldF9jb25zdHJhaW50ZGVmCistLQorU0VMRUNUIHBn X2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5h bWUgPSAndGVtcG9yYWxfZmtfcm5nMnJuZ19mayc7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmcoaWQsIFBFUklPRCB2YWxpZF9hdCkKKygxIHJvdykKKworLS0KKy0tIHRlc3QgRksg Y2hpbGQgaW5zZXJ0cworLS0KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sx LDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJy bmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEn KSwgJ1sxLDFdJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBv cmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQp PShbMSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAw OjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCist LSBub3cgaXQgc2hvdWxkIHdvcms6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAzJywgJzIwMTgtMDMtMDMnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgn MjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJyksICdbMSwxXScpOworLS0KKy0tIHRlc3QgRksg Y2hpbGQgdXBkYXRlcworLS0KK1VQREFURSB0ZW1wb3JhbF9ma19ybmcycm5nIFNFVCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMy0wMScpIFdIRVJFIGlkID0g J1sxLDFdJzsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFsX2ZrX3JuZzJybmcg U0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA1LTAxJykgV0hF UkUgaWQgPSAnWzEsMV0nOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0 ZW1wb3JhbF9ma19ybmcycm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlk X2F0KT0oWzEsMiksIFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiVHVlIE1heSAwMSAw MDowMDowMCAyMDE4IikpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9ybmci LgorVVBEQVRFIHRlbXBvcmFsX2ZrX3JuZzJybmcgU0VUIHBhcmVudF9pZCA9ICdbOCw4XScg V0hFUkUgaWQgPSAnWzEsMV0nOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxl ICJ0ZW1wb3JhbF9ma19ybmcycm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50 ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZh bGlkX2F0KT0oWzgsOSksIFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAw MSAwMDowMDowMCAyMDE4IikpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9y bmciLgorLS0gQUxURVIgRksgREVGRVJSQUJMRQorQkVHSU47CisgIElOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMKKyAgICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJykpLAorICAgICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywg JzIwMTgtMDMtMDEnKSk7CisgIElOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTCisgICAgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcp LCAnWzUsNV0nKTsKKyAgQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworICAgIEFM VEVSIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworICAgIERFRkVSUkFCTEUg SU5JVElBTExZIERFRkVSUkVEOworICBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUg aWQgPSAnWzUsNV0nOyAtLXNob3VsZCBub3QgZmFpbCB5ZXQuCitDT01NSVQ7IC0tIHNob3Vs ZCBmYWlsIGhlcmUuCitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBv cmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtf cm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20g dGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0KKy0tIHRlc3QgRksgcGFyZW50IHVw ZGF0ZXMgTk8gQUNUSU9OCistLQorLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNh dXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEg UEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMg cmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcy MDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAx LTEwJyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOwor LS0gYSBQSyB1cGRhdGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6 CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEt MDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBv ciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkg Y29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFs X2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBp cyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgor LS0gY2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3Ju ZyBTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBv ciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkg Y29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFs X2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBp cyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgor LS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBL IHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwor LS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBh cmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nOworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QKKy0t CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZworCU9OIERFTEVURSBSRVNUUklDVDsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMg YmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7Cist LSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlk IGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5n ZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAx OC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0 ID0gdHNyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEn KTsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVu Y2VkOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2 LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRh dGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1w b3JhbF9ma19ybmcycm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwg WyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgi KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5n Ii4KKy0tIGNoYW5naW5nIHRoZSBzY2FsYXIgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3Jh bF9ybmcgU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRh dGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1w b3JhbF9ma19ybmcycm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwg WyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgi KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5n Ii4KKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2Ft ZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1szLDNdJzsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0 ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJF IGlkID0gJ1s1LDVdJzsKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIE5PIEFDVElP TgorLS0KK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9y YWxfcm5nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1l cmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBk ZWxldGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZl cmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5n ZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAx OC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBp ZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4 LTAzLTAxJyk7CistLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUg cmVmZXJlbmNlZDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7 CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlv bGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIg b24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxp ZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEg MDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBv cmFsX2ZrX3JuZzJybmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNv cmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVz IFJFU1RSSUNUCistLQorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9y YWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsK KwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKSk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0n OworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJp YyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1 LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgt MDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1 c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBv cmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtf cm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20g dGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVj dGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRF IEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tCistLSB0ZXN0IE9OIFVQ REFURS9ERUxFVEUgb3B0aW9ucworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgQ0FT Q0FERQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK KwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVM RVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CitFUlJPUjogIGFjdGlvbiBub3Qgc3Vw cG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0tIHRlc3QgRksgcGFyZW50IHVw ZGF0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOSw5 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s5LDldJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m a19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJ QUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n CisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CitFUlJPUjogIGFj dGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0tIHRlc3Qg RksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbLTEsLTFdJywgdHNyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sx MiwxMl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKyAgQUxURVIgQ09M VU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJCU9OIERFTEVURSBTRVQgREVGQVVMVCBP TiBVUERBVEUgU0VUIERFRkFVTFQ7CitFUlJPUjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZv ciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0tIEZLIGJldHdlZW4gcGFydGl0aW9uZWQgdGFi bGVzCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nICgKKwlpZCBpbnQ0 cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUg VEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZB TFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywg J1sxMSwxMV0nKTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0n LCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAt MDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2Uo JzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyksCisgICgnWzIsMl0nLCBkYXRl cmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAndHdvJyk7CitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAor CXZhbGlkX2F0IGRhdGVyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJ TlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwg UEVSSU9EIHZhbGlkX2F0KQorKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRB QkxFIHRma3AxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdb OSw5XScsICdbMTEsMTFdJyk7CitDUkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywg J1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworLS0g cGFydGl0aW9uZWQgRksgY2hpbGQgaW5zZXJ0cworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAw MC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwxXScpLAorICAoJ1sxLDFdJywgZGF0ZXJh bmdlKCcyMDAxLTAxLTAxJywgJzIwMDItMDEtMDEnKSwgJ1syLDJdJyksCisgICgnWzIsMl0n LCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScpLCAnWzEsMV0nKTsKKy0t IHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBWQUxVRVMKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxMC0wMS0wMScsICcyMDEw LTAyLTE1JyksICdbMSwxXScpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxl ICJ0ZmtwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZ19mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxp ZF9hdCk9KFsxLDIpLCBbMDEtMDEtMjAxMCwwMi0xNS0yMDEwKSkgaXMgbm90IHByZXNlbnQg aW4gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyIuCitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUworICAoJ1szLDNdJywgZGF0ZXJh bmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMTUnKSwgJ1szLDNdJyk7CitFUlJPUjogIGlu c2VydCBvciB1cGRhdGUgb24gdGFibGUgInRma3AxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBj b25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrIgorREVUQUlM OiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzMsNCksIFswMS0wMS0yMDAwLDAyLTE1 LTIwMDApKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIi4KKy0tIHBhcnRpdGlvbmVkIEZLIGNoaWxkIHVwZGF0ZXMKK1VQREFURSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAw MC0wMS0wMScsICcyMDAwLTAyLTEzJykgV0hFUkUgaWQgPSAnWzIsMl0nOworLS0gbW92ZSBh IHJvdyBmcm9tIHRoZSBmaXJzdCBwYXJ0aXRpb24gdG8gdGhlIHNlY29uZAorVVBEQVRFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgU0VUIGlkID0gJ1s0LDRdJyBXSEVSRSBp ZCA9ICdbMSwxXSc7CistLSBtb3ZlIGEgcm93IGZyb20gdGhlIHNlY29uZCBwYXJ0aXRpb24g dG8gdGhlIGZpcnN0CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBT RVQgaWQgPSAnWzEsMV0nIFdIRVJFIGlkID0gJ1s0LDRdJzsKKy0tIHNob3VsZCBmYWlsOgor VVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0g ZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDQtMDEnKSBXSEVSRSBpZCA9ICdbMSwx XSc7CitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24g Y29uc3RyYWludCAidGZrcDFfcGtleSIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0o WzEsMiksIFswMS0wMS0yMDAwLDA0LTAxLTIwMDApKSBjb25mbGljdHMgd2l0aCBleGlzdGlu ZyBrZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbMDEtMDEtMjAwMCwwNC0wMS0yMDAwKSku CistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5n ZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScs ICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4 LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBT RVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCisg IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMS0wMScs ICcyMDE2LTAyLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBv ciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWlu dCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24g dGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkg KGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3Rp bGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIi4KKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIHBhcnRpdGlv bmVkIEZLIHBhcmVudCBkZWxldGVzIE5PIEFDVElPTgorSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFM VUVTICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAn WzUsNV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBp ZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIw MTgtMDMtMDEnKTsKKy0tIHNob3VsZCBmYWlsOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRhdGUgb3IgZGVs ZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxl ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgorREVUQUlMOiAgS2V5IChpZCwg dmFsaWRfYXQpPShbNSw2KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAxOCkpIGlzIHN0aWxsIHJl ZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIu CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBwYXJ0aXRpb25lZCBG SyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVG RVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0n LCBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpKTsKK1VQREFURSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIw MTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEt MDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYt MDMtMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdl KCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRF IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIw MTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworRVJST1I6 ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lk X2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgorREVU QUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAx OCkpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyIuCistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7Cist LSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBSRVNUUklDVAorSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcy MDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAn MjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0w MS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAy LTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIHNob3VsZCBmYWlsOgorREVMRVRFIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQg PSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRh dGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXki IG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgorREVUQUlMOiAg S2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAxOCkpIGlz IHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyIuCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNU UkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nCisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURF OworRVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBr ZXlzCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCistLSBwYXJ0 aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorQUxURVIgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwor CQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworRVJST1I6ICBhY3Rp b24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCistLSBwYXJ0aXRp b25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTAorLS0gcGFydGl0aW9uZWQgRksgcGFy ZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAn Wy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJ CVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERFTEVURSBTRVQg REVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitFUlJPUjogIGFjdGlvbiBub3Qgc3Vw cG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0tIHBhcnRpdGlvbmVkIEZLIHBh cmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmc7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZzsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKaW5kZXggNzAx YmNmYjk2Mi4uMjEyNDFlZjljMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv d2l0aG91dF9vdmVybGFwcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91 dF9vdmVybGFwcy5zcWwKQEAgLTI4MCwzICsyODAsNTI5IEBAIFNFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICogRlJP TSB0cDEgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0cDIgT1JERVIg QlkgaWQsIHZhbGlkX2F0OwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKKwor LS0KKy0tIHRlc3QgRksgZGVwZW5kZW5jaWVzCistLQorCistLSBjYW4ndCBkcm9wIGEgcmFu Z2UgcmVmZXJlbmNlZCBieSBhbiBGSywgdW5sZXNzIHdpdGggQ0FTQ0FERQorQ1JFQVRFIFRB QkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgK KwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJh bmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisJCVJFRkVSRU5DRVMgdGVtcG9yYWwzIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2YWxpZF9hdCBDQVNDQURFOworRFJPUCBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CisKKy0tCistLSB0 ZXN0IEZPUkVJR04gS0VZLCByYW5nZSByZWZlcmVuY2VzIHJhbmdlCistLQorCistLSBDYW4n dCBjcmVhdGUgYSBGSyB3aXRoIGEgbWlzbWF0Y2hlZCByYW5nZSB0eXBlCitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGlu dDRyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19wazIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyIEZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFy ZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2 YWxpZF9hdCkKKyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CisKKy0tIHdp dGggbWlzbWF0Y2hlZCBQRVJJT0QgY29sdW1uczoKKy0tIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkgUkVGRVJFTkNFUyAoaWQsIHZhbGlkX2F0KQorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCB2YWxp ZF9hdCkKKyk7CistLSAocGFyZW50X2lkLCB2YWxpZF9hdCkgUkVGRVJFTkNFUyAoaWQsIFBF UklPRCB2YWxpZF9hdCkKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlp ZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdl LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCB2YWxpZF9hdCkKKwkJUkVGRVJF TkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworLS0gKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIChpZCkKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5n ZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCkK Kyk7CistLSAocGFyZW50X2lkKSBSRUZFUkVOQ0VTIChpZCwgUEVSSU9EIHZhbGlkX2F0KQor Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2 YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJ R04gS0VZIChwYXJlbnRfaWQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVS SU9EIHZhbGlkX2F0KQorKTsKKworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJl bmNlZCB0YWJsZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJF RkVSRU5DRVMgdGVtcG9yYWxfcm5nCispOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19ybmcy cm5nOworCistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVuY2Vk IGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50 NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwkJUkVG RVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgaWQpCispOworCistLSBUd28gc2Nh bGFyIGNvbHVtbnMKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZyAoCisJaWQg aW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkMSBpbnQ0cmFuZ2Us CisJcGFyZW50X2lkMiBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5n MnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1w b3JhbF9ybmcyIChpZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK1xkIHRlbXBvcmFs X2ZrMl9ybmcycm5nCitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nOworCistLQor LS0gdGVzdCBBTFRFUiBUQUJMRSBBREQgQ09OU1RSQUlOVAorLS0KKworQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jh bmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19y bmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK Kyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxp ZF9hdCk7CistLSBUd28gc2NhbGFyIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf ZmsyX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBh cmVudF9pZDEgaW50NHJhbmdlLAorCXBhcmVudF9pZDIgaW50NHJhbmdlLAorCUNPTlNUUkFJ TlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5n CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtF WSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5D RVMgdGVtcG9yYWxfcm5nMiAoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9hdCk7CitcZCB0ZW1w b3JhbF9mazJfcm5nMnJuZworCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVu Y2VkIHRhYmxlLCBhbmQgd3JvbmcgY29sdW1uIHR5cGU6CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmss CisJQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgZGF0ZXJhbmdlIFVTSU5HIGRhdGVyYW5n ZShsb3dlcih2YWxpZF9hdCk6OmRhdGUsIHVwcGVyKHZhbGlkX2F0KTo6ZGF0ZSk7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcKKwlBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0c3JhbmdlIFVTSU5HIHRz cmFuZ2UobG93ZXIodmFsaWRfYXQpLCB1cHBlcih2YWxpZF9hdCkpOworCistLSB3aXRoIGlu ZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQUxURVIgVEFCTEUgdGVtcG9y YWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsK KwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmc7CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRl IHJlZmVyZW5jZWQgY29sdW1uczoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrMgorCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmcgKGlkLCBQRVJJT0QgaWQpOworCistLQorLS0gdGVzdCB3aXRoIHJvd3MgYWxyZWFkeQor LS0KKworREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJu Z19mazsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEsMV0n LCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFdJyk7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFp bDoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0gb2theSBhZ2FpbjoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmc7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawor CUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZzsKKworLS0KKy0tIHRlc3QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYKKy0t CisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWlu dCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX2ZrX3JuZzJybmdfZmsnOworCistLQorLS0g dGVzdCBGSyBjaGlsZCBpbnNlcnRzCistLQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAy LTAxJyksICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcy MDE4LTA0LTAxJyksICdbMSwxXScpOworLS0gbm93IGl0IHNob3VsZCB3b3JrOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMi0w MycsICcyMDE4LTAzLTAzJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAn WzEsMV0nKTsKKworLS0KKy0tIHRlc3QgRksgY2hpbGQgdXBkYXRlcworLS0KKworVVBEQVRF IHRlbXBvcmFsX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0w MicsICcyMDE4LTAzLTAxJykgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gc2hvdWxkIGZhaWw6 CitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcy MDE4LTAxLTAyJywgJzIwMTgtMDUtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUg dGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgcGFyZW50X2lkID0gJ1s4LDhdJyBXSEVSRSBpZCA9 ICdbMSwxXSc7CisKKy0tIEFMVEVSIEZLIERFRkVSUkFCTEUKKworQkVHSU47CisgIElOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMKKyAgICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykpLAorICAgICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4 LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CisgIElOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTCisgICAgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAx OC0wMS0xMCcpLCAnWzUsNV0nKTsKKyAgQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZworICAgIEFMVEVSIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworICAgIERF RkVSUkFCTEUgSU5JVElBTExZIERFRkVSUkVEOworCisgIERFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7IC0tc2hvdWxkIG5vdCBmYWlsIHlldC4KK0NPTU1J VDsgLS0gc2hvdWxkIGZhaWwgaGVyZS4KKworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0 ZXMgTk8gQUNUSU9OCistLQorCistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1 c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQ SyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyBy ZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIw MTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEt MTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRz cmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7Cist LSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoK K1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0w MScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5naW5nIHRoZSBz Y2FsYXIgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDdd JworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyBy ZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFs X3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEn KQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLQorLS0gdGVzdCBGSyBwYXJl bnQgdXBkYXRlcyBSRVNUUklDVAorLS0KKworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworQUxURVIg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CistLSBh IFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3Qg cmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3Jh bF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAx JykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBl dmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJh bmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVd JzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0 c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUg dGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAx Ni0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxz IGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VU IHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKTsKKy0tIGNoYW5naW5nIHRoZSBzY2FsYXIgcGFydCBmYWlsczoKK1VQREFU RSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0g dGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVw ZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0g Y2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVu dF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQor QUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwor CUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7 CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQg aXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb NSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0 aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQg YmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4 LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEw JyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEn KTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVu Y2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIHRo ZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxl dGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7 CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCistLQorCitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQURE IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCU9O IERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb NSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0 aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQg YmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4 LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEw JyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEn KTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVu Y2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIHRo ZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxl dGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7 CisKKy0tCistLSB0ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucworLS0KKworLS0gdGVz dCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworQUxURVIgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19y bmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsK KworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb Niw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzksOV0nKTsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFU RSBTRVQgTlVMTDsKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1stMSwtMV0nLCB0c3JhbmdlKG51 bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTIsMTJd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEyXScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEs LTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJ T04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKworLS0gRksg YmV0d2VlbiBwYXJ0aXRpb25lZCB0YWJsZXMKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwK KyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF9ybmdfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKSBQQVJUSVRJ T04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRBQkxFIHRwMSBwYXJ0aXRpb24gT0YgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScsICdb NSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7CitDUkVBVEUgVEFCTEUgdHAy IHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAo J1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEy XScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUworICAo J1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29uZScp LAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEnKSwg J29uZScpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEt MDEnKSwgJ3R3bycpOworCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKwlwYXJl bnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mayBGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKSBQQVJUSVRJ T04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRpdGlvbiBPRiB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdb MywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7CitDUkVBVEUg VEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywg J1sxMCwxMF0nLCAnWzEyLDEyXScpOworCistLSBwYXJ0aXRpb25lZCBGSyBjaGlsZCBpbnNl cnRzCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFM VUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScp LCAnWzEsMV0nKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMS0wMS0wMScsICcyMDAy LTAxLTAxJyksICdbMiwyXScpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAx JywgJzIwMDAtMDItMTUnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgnWzMsM10n LCBkYXRlcmFuZ2UoJzIwMTAtMDEtMDEnLCAnMjAxMC0wMi0xNScpLCAnWzEsMV0nKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgn WzMsM10nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScpLCAnWzMsM10n KTsKKworLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgdXBkYXRlcworCitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIw MDAtMDEtMDEnLCAnMjAwMC0wMi0xMycpIFdIRVJFIGlkID0gJ1syLDJdJzsKKy0tIG1vdmUg YSByb3cgZnJvbSB0aGUgZmlyc3QgcGFydGl0aW9uIHRvIHRoZSBzZWNvbmQKK1VQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCBpZCA9ICdbNCw0XScgV0hFUkUg aWQgPSAnWzEsMV0nOworLS0gbW92ZSBhIHJvdyBmcm9tIHRoZSBzZWNvbmQgcGFydGl0aW9u IHRvIHRoZSBmaXJzdAorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg U0VUIGlkID0gJ1sxLDFdJyBXSEVSRSBpZCA9ICdbNCw0XSc7CistLSBzaG91bGQgZmFpbDoK K1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9 IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTA0LTAxJykgV0hFUkUgaWQgPSAnWzEs MV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywg ZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSk7CitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4 LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1 JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAz LTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgn MjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2 LTAxLTAxJywgJzIwMTYtMDItMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFu IHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVS RSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50 IGRlbGV0ZXMgTk8gQUNUSU9OCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNd JywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7 CistLSBzaG91bGQgZmFpbDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwor REVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVd JzsKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QKKworQUxU RVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCURST1AgQ09OU1RS QUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrOworQUxURVIgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAx Ni0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlk X2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSBXSEVSRSBpZCA9 ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVT ICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMs M10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsK K1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJh bmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsK Ky0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQg dmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCisgIFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOwor CistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBSRVNUUklDVAorCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0w MScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcy MDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIw MTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CisKKy0tIHBh cnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKKworQUxURVIgVEFCTEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZworCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKKworLS0gcGFydGl0 aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorCistLSBwYXJ0aXRpb25lZCBGSyBw YXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERFTEVU RSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CisKKy0tIHBhcnRpdGlvbmVkIEZLIHBh cmVudCBkZWxldGVzIFNFVCBOVUxMCisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRh dGVzIFNFVCBERUZBVUxUCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAnWy0xLC0x XScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdf ZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19m aworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERFTEVURSBTRVQgREVGQVVM VCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBk ZWxldGVzIFNFVCBERUZBVUxUCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nOwotLSAK Mi40Mi4wCgo= --------------jwdNqnl5yO2Lo4Yc0EOjsS0s Content-Type: text/x-patch; charset=UTF-8; name="v18-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v18-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 RnJvbSAyOTI1YWYwZjYwMGFlYWM0NmRlOWFmYzdkNTRlN2JmNjkyMzE2OTdlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjUgSnVuIDIwMjEgMTg6NTQ6MzUgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxOCAzLzVdIEFkZCBVUERBVEUvREVMRVRFIEZPUiBQT1JU SU9OIE9GCgotIEFkZGVkIGJpc29uIHN1cHBvcnQgZm9yIEZPUiBQT1JUSU9OIE9GIHN5bnRh eC4gVGhlIGJvdW5kcyBtdXN0IGJlCiAgY29uc3RhbnQsIHNvIHdlIGZvcmJpZCBjb2x1bW4g cmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLiBCdXQgd2UKICBwZXJtaXQgdGhlIG1hZ2lj IFVOQk9VTkRFRCBrZXl3b3JkIGFzIHRoZSBGUk9NIG9yIHRoZSBUTyAob3IgYm90aCkKICB0 byBwZXJmb3JtIGFuIHVuYm91bmRlZCB1cGRhdGUvZGVsZXRlLiBXZSBhbHNvIGFjY2VwdCBm dW5jdGlvbnMgbGlrZQogIE5PVygpLgotIEFkZGVkIGxvZ2ljIHRvIGV4ZWN1dG9yIHRvIGlu c2VydCBuZXcgcm93cyBmb3IgdGhlICJsZWZ0b3ZlciIgcGFydCBvZgogIGEgcmVjb3JkIHRv dWNoZWQgYnkgYSBGT1IgUE9SVElPTiBPRiBxdWVyeS4KLSBBZGRlZCB0Z190ZW1wb3JhbCBk ZXNjcmlwdG9yIHRvIHRoZSBUcmlnZ2VyRGF0YSBzdHJ1Y3QgdGhhdCB3ZSBwYXNzIHRvCiAg dHJpZ2dlciBmdW5jdGlvbnMuIE91ciB0cmlnZ2VycyB1c2UgdGhpcyB0byBsZWFybiB3aGF0 IGJvdW5kcyB3ZXJlCiAgZ2l2ZW4gaW4gdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZS4KLSBE b2N1bWVudGVkIEZPUiBQT1JUSU9OIE9GLgotIERvY3VtZW50ZWQgdGdfdGVtcG9yYWwgc3Ry dWN0LgotIEFkZGVkIHRlc3RzLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwg ICAgICAgICAgICAgICAgICB8ICA0NSArKwogZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dt bCAgICAgICAgICAgICAgICAgIHwgIDQ2ICsrCiBkb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21s ICAgICAgICAgICAgICAgICAgICAgfCAgNjAgKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv dHJpZ2dlci5jICAgICAgICAgICAgICAgIHwgIDQ5ICsrCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAgICAgIHwgMjI2ICsrKysrKysrLQogc3JjL2JhY2tl bmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgIDI0ICsKIHNyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyAgICAgICB8ICAgOCArLQogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgICAgICAgICB8ICAgNCArLQogc3Jj L2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyAgICAgICAgICAgICAgICAgIHwgMTc1ICsrKysr Ky0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICA0 NyArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jICAgICAgICAgICAgICAgIHwg IDEwICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMgICAgICAgICAgICB8 ICAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAgICAgICAg fCAgIDggKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgICAgICAgICAg IHwgICAzICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jICAgICAgICAgICAg ICB8ICAgMiArLQogc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jICAgICAg ICAgIHwgIDQwICsrCiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyAgICAgICAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZSAgICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMgICAgICAg ICAgICAgICAgfCAgNTYgKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5j ICAgICAgICAgICAgfCAgNDIgKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vy cy5jICAgICAgICAgICB8ICA3NCArKysKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNj YWNoZS5jICAgICAgICAgICB8ICA1MyArKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dl ci5oICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oICAgICAgICAgICAgICAgICB8ICAyNyArKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oICAgICAgICAgICAgICAgIHwgIDQ0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRo bm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3By aW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAyNSArCiBzcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvcGF0aG5vZGUuaCAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL3BhcnNl ci9hbmFseXplLmggICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3Bh cnNlci9wYXJzZV9ub2RlLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91 dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUv dXRpbHMvcGVyaW9kLmggICAgICAgICAgICAgICAgICAgIHwgIDE5ICsKIHNyYy9pbmNsdWRl L3V0aWxzL3JhbmdldHlwZXMuaCAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dCAgfCA0NTkgKysrKysrKysrKysr KysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0ICAgICAg fCAgMTggKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0 IHwgIDMyICsrCiAuLi4vcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCAg ICAgfCAxNDQgKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAg ICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29m LnNxbCAgICAgICB8IDM1OSArKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv cHJpdmlsZWdlcy5zcWwgICAgICAgICAgIHwgIDE4ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3VwZGF0YWJsZV92aWV3cy5zcWwgICAgICB8ICAxNCArCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC93aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAgOTMgKysrLQogNDcgZmlsZXMgY2hhbmdl ZCwgMjE5OCBpbnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv ZGVsZXRlLnNnbWwKaW5kZXggMWI4MWI0ZTdkNy4uZWI1N2E5YjFkNSAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Rl bGV0ZS5zZ21sCkBAIC0yMyw2ICsyMyw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgog PHN5bm9wc2lzPgogWyBXSVRIIFsgUkVDVVJTSVZFIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPndpdGhfcXVlcnk8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KIERFTEVURSBG Uk9NIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWyAqIF0gWyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmFsaWFzPC9yZXBsYWNlYWJsZT4gXQorICAgIFsgRk9SIFBPUlRJT04gT0YgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBs YWNlYWJsZT4gRlJPTSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRfdGlt ZTwvcmVwbGFjZWFibGU+IFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lbmRf dGltZTwvcmVwbGFjZWFibGU+IF0KICAgICBbIFVTSU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KICAgICBbIFdI RVJFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25kaXRpb248L3JlcGxhY2Vh YmxlPiB8IFdIRVJFIENVUlJFTlQgT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmN1cnNvcl9uYW1lPC9yZXBsYWNlYWJsZT4gXQogICAgIFsgUkVUVVJOSU5HICogfCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3V0cHV0X2V4cHJlc3Npb248L3JlcGxhY2Vh YmxlPiBbIFsgQVMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3V0cHV0X25h bWU8L3JlcGxhY2VhYmxlPiBdIFssIC4uLl0gXQpAQCAtNTQsNiArNTUsMTUgQEAgREVMRVRF IEZST00gWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbICoKICAgIGNpcmN1bXN0YW5jZXMuCiAgIDwvcGFyYT4KIAor ICA8cGFyYT4KKyAgIElmIHRoZSB0YWJsZSBoYXMgYSA8bGluayBsaW5rZW5kPSJkZGwtcGVy aW9kcy1hcHBsaWNhdGlvbi1wZXJpb2RzIj5yYW5nZSBjb2x1bW4KKyAgIG9yIDxsaXRlcmFs PlBFUklPRDwvbGl0ZXJhbD48L2xpbms+LCB5b3UgbWF5IHN1cHBseSBhCisgICA8bGl0ZXJh bD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gY2xhdXNlLCBhbmQgeW91ciBkZWxldGUgd2ls bCBvbmx5IGFmZmVjdCByb3dzCisgICB0aGF0IG92ZXJsYXAgdGhlIGdpdmVuIGludGVydmFs LiBGdXJ0aGVybW9yZSwgaWYgYSByb3cncyBzcGFuIGV4dGVuZHMgb3V0c2lkZQorICAgdGhl IDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBib3VuZHMsIHRoZW4gbmV3IHJv d3Mgc3Bhbm5pbmcgdGhlICJjdXQKKyAgIG9mZiIgZHVyYXRpb24gd2lsbCBiZSBpbnNlcnRl ZCB0byBwcmVzZXJ2ZSB0aGUgb2xkIHZhbHVlcy4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgog ICAgVGhlIG9wdGlvbmFsIDxsaXRlcmFsPlJFVFVSTklORzwvbGl0ZXJhbD4gY2xhdXNlIGNh dXNlcyA8Y29tbWFuZD5ERUxFVEU8L2NvbW1hbmQ+CiAgICB0byBjb21wdXRlIGFuZCByZXR1 cm4gdmFsdWUocykgYmFzZWQgb24gZWFjaCByb3cgYWN0dWFsbHkgZGVsZXRlZC4KQEAgLTEx Niw2ICsxMjYsNDEgQEAgREVMRVRFIEZST00gWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICoKICAgICA8L2xpc3Rp dGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1l PC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAg ICAgIFRoZSByYW5nZSBjb2x1bW4gb3IgcGVyaW9kIHRvIHVzZSB3aGVuIHBlcmZvcm1pbmcg YSB0ZW1wb3JhbCBkZWxldGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAg PC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVy bT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGVhcmxpZXN0IHRp bWUgKGluY2x1c2l2ZSkgdG8gY2hhbmdlIGluIGEgdGVtcG9yYWwgZGVsZXRlLgorICAgICAg VGhpcyBtdXN0IGJlIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIGJhc2UgdHlwZSBvZiB0aGUgcmFu Z2Ugb3IgcGVyaW9kIGZyb20KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+LiBBCisgICAgICA8bGl0ZXJh bD5OVUxMPC9saXRlcmFsPiBoZXJlIGluZGljYXRlcyBhIGRlbGV0ZSB3aG9zZSBiZWdpbm5p bmcgaXMKKyAgICAgIHVuYm91bmRlZCAoYXMgd2l0aCByYW5nZSB0eXBlcykuCisgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVu ZF90aW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgIFRoZSBsYXRlc3QgdGltZSAoZXhjbHVzaXZlKSB0byBjaGFuZ2UgaW4gYSB0 ZW1wb3JhbCBkZWxldGUuCisgICAgICBUaGlzIG11c3QgYmUgYSB2YWx1ZSBtYXRjaGluZyB0 aGUgYmFzZSB0eXBlIG9mIHRoZSByYW5nZSBvciBwZXJpb2QgZnJvbQorICAgICAgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNl YWJsZT4uIEEKKyAgICAgIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IGhlcmUgaW5kaWNhdGVz IGEgZGVsZXRlIHdob3NlIGVuZCBpcyB1bmJvdW5kZWQKKyAgICAgIChhcyB3aXRoIHJhbmdl IHR5cGVzKS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3Rl bnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+ZnJvbV9pdGVtPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgPGxp c3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9yZWYvdXBkYXRlLnNnbWwKaW5kZXggMmFiMjRiMDUyMy4uZTU3NjRhMDY5 MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sCkBAIC0yMyw2ICsyMyw3IEBAIFBvc3RncmVTUUwg ZG9jdW1lbnRhdGlvbgogPHN5bm9wc2lzPgogWyBXSVRIIFsgUkVDVVJTSVZFIF0gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndpdGhfcXVlcnk8L3JlcGxhY2VhYmxlPiBbLCAu Li5dIF0KIFVQREFURSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgWyBBUyBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5hbGlhczwvcmVwbGFjZWFibGU+IF0KKyAgICBbIEZPUiBQT1JU SU9OIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2Rf bmFtZTwvcmVwbGFjZWFibGU+IEZST00gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnN0YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPiBUTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPiBdCiAgICAgU0VUIHsgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gPSB7IDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfCBE RUZBVUxUIH0gfAogICAgICAgICAgICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApID0gWyBST1cgXSAoIHsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB8 IERFRkFVTFQgfSBbLCAuLi5dICkgfAogICAgICAgICAgICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApID0gKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3ViLVNFTEVDVDwvcmVwbGFjZWFibGU+ ICkKQEAgLTUxLDYgKzUyLDE2IEBAIFVQREFURSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsKICAgIGNp cmN1bXN0YW5jZXMuCiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIElmIHRoZSB0YWJsZSBo YXMgYSA8bGluayBsaW5rZW5kPSJkZGwtcGVyaW9kcy1hcHBsaWNhdGlvbi1wZXJpb2RzIj5y YW5nZSBjb2x1bW4KKyAgIG9yIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD48L2xpbms+LCB5 b3UgbWF5IHN1cHBseSBhCisgICA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4g Y2xhdXNlLCBhbmQgeW91ciB1cGRhdGUgd2lsbCBvbmx5IGFmZmVjdCByb3dzCisgICB0aGF0 IG92ZXJsYXAgdGhlIGdpdmVuIGludGVydmFsLiBGdXJ0aGVybW9yZSwgaWYgYSByb3cncyBz cGFuIGV4dGVuZHMgb3V0c2lkZQorICAgdGhlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9s aXRlcmFsPiBib3VuZHMsIHRoZW4gaXQgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gZml0CisgICB3 aXRoaW4gdGhlIGJvdW5kcywgYW5kIG5ldyByb3dzIHNwYW5uaW5nIHRoZSAiY3V0IG9mZiIg ZHVyYXRpb24gd2lsbCBiZQorICAgaW5zZXJ0ZWQgdG8gcHJlc2VydmUgdGhlIG9sZCB2YWx1 ZXMuCisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRoZSBvcHRpb25hbCA8bGl0ZXJhbD5S RVRVUk5JTkc8L2xpdGVyYWw+IGNsYXVzZSBjYXVzZXMgPGNvbW1hbmQ+VVBEQVRFPC9jb21t YW5kPgogICAgdG8gY29tcHV0ZSBhbmQgcmV0dXJuIHZhbHVlKHMpIGJhc2VkIG9uIGVhY2gg cm93IGFjdHVhbGx5IHVwZGF0ZWQuCkBAIC0xMTQsNiArMTI1LDQxIEBAIFVQREFURSBbIE9O TFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFj ZWFibGU+IFsgKiBdIFsKICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAK KyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSByYW5nZSBjb2x1bW4gb3IgcGVy aW9kIHRvIHVzZSB3aGVuIHBlcmZvcm1pbmcgYSB0ZW1wb3JhbCB1cGRhdGUuCisgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0 YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxw YXJhPgorICAgICAgVGhlIGVhcmxpZXN0IHRpbWUgKGluY2x1c2l2ZSkgdG8gY2hhbmdlIGlu IGEgdGVtcG9yYWwgdXBkYXRlLgorICAgICAgVGhpcyBtdXN0IGJlIGEgdmFsdWUgbWF0Y2hp bmcgdGhlIGJhc2UgdHlwZSBvZiB0aGUgcmFuZ2Ugb3IgcGVyaW9kIGZyb20KKyAgICAgIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVw bGFjZWFibGU+LiBBCisgICAgICA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBoZXJlIGluZGlj YXRlcyBhbiB1cGRhdGUgd2hvc2UgYmVnaW5uaW5nIGlzCisgICAgICB1bmJvdW5kZWQgKGFz IHdpdGggcmFuZ2UgdHlwZXMpLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lbmRfdGltZTwvcmVwbGFjZWFibGU+PC90ZXJt PgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbGF0ZXN0IHRpbWUg KGV4Y2x1c2l2ZSkgdG8gY2hhbmdlIGluIGEgdGVtcG9yYWwgdXBkYXRlLgorICAgICAgVGhp cyBtdXN0IGJlIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIGJhc2UgdHlwZSBvZiB0aGUgcmFuZ2Ug b3IgcGVyaW9kIGZyb20KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5y YW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+LiBBCisgICAgICA8bGl0ZXJhbD5O VUxMPC9saXRlcmFsPiBoZXJlIGluZGljYXRlcyBhbiB1cGRhdGUgd2hvc2UgZW5kIGlzIHVu Ym91bmRlZAorICAgICAgKGFzIHdpdGggcmFuZ2UgdHlwZXMpLgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5 PgogICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC90cmlnZ2VyLnNnbWwgYi9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sCmlu ZGV4IDZlMWYzNzBiMjEuLmI1OGU2MzQ4YWQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC90 cmlnZ2VyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbApAQCAtNTM3LDE3 ICs1MzcsMTggQEAgQ0FMTEVEX0FTX1RSSUdHRVIoZmNpbmZvKQogPHByb2dyYW1saXN0aW5n PgogdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckRhdGEKIHsKLSAgICBOb2RlVGFnICAgICAgICAg IHR5cGU7Ci0gICAgVHJpZ2dlckV2ZW50ICAgICB0Z19ldmVudDsKLSAgICBSZWxhdGlvbiAg ICAgICAgIHRnX3JlbGF0aW9uOwotICAgIEhlYXBUdXBsZSAgICAgICAgdGdfdHJpZ3R1cGxl OwotICAgIEhlYXBUdXBsZSAgICAgICAgdGdfbmV3dHVwbGU7Ci0gICAgVHJpZ2dlciAgICAg ICAgICp0Z190cmlnZ2VyOwotICAgIFR1cGxlVGFibGVTbG90ICAqdGdfdHJpZ3Nsb3Q7Ci0g ICAgVHVwbGVUYWJsZVNsb3QgICp0Z19uZXdzbG90OwotICAgIFR1cGxlc3RvcmVzdGF0ZSAq dGdfb2xkdGFibGU7Ci0gICAgVHVwbGVzdG9yZXN0YXRlICp0Z19uZXd0YWJsZTsKLSAgICBj b25zdCBCaXRtYXBzZXQgKnRnX3VwZGF0ZWRjb2xzOworICAgIE5vZGVUYWcgICAgICAgICAg ICB0eXBlOworICAgIFRyaWdnZXJFdmVudCAgICAgICB0Z19ldmVudDsKKyAgICBSZWxhdGlv biAgICAgICAgICAgdGdfcmVsYXRpb247CisgICAgSGVhcFR1cGxlICAgICAgICAgIHRnX3Ry aWd0dXBsZTsKKyAgICBIZWFwVHVwbGUgICAgICAgICAgdGdfbmV3dHVwbGU7CisgICAgVHJp Z2dlciAgICAgICAgICAgKnRnX3RyaWdnZXI7CisgICAgVHVwbGVUYWJsZVNsb3QgICAgKnRn X3RyaWdzbG90OworICAgIFR1cGxlVGFibGVTbG90ICAgICp0Z19uZXdzbG90OworICAgIFR1 cGxlc3RvcmVzdGF0ZSAgICp0Z19vbGR0YWJsZTsKKyAgICBUdXBsZXN0b3Jlc3RhdGUgICAq dGdfbmV3dGFibGU7CisgICAgY29uc3QgQml0bWFwc2V0ICAgKnRnX3VwZGF0ZWRjb2xzOwor ICAgIEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbDsKIH0gVHJpZ2dlckRhdGE7CiA8 L3Byb2dyYW1saXN0aW5nPgogCkBAIC04MTUsNiArODE2LDQzIEBAIHR5cGVkZWYgc3RydWN0 IFRyaWdnZXIKICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zh cmxpc3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PHN0cnVj dGZpZWxkPnRnX3RlbXBvcmFsPC9zdHJ1Y3RmaWVsZD48L3Rlcm0+CisgICAgICA8bGlzdGl0 ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFNldCBmb3IgPGxpdGVyYWw+VVBEQVRFPC9s aXRlcmFsPiBhbmQgPGxpdGVyYWw+REVMRVRFPC9saXRlcmFsPiBxdWVyaWVzCisgICAgICAg IHRoYXQgdXNlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiwgb3RoZXJ3aXNl IDxzeW1ib2w+TlVMTDwvc3ltYm9sPi4KKyAgICAgICAgQ29udGFpbnMgYSBwb2ludGVyIHRv IGEgc3RydWN0dXJlIG9mIHR5cGUKKyAgICAgICAgPHN0cnVjdG5hbWU+Rm9yUG9ydGlvbk9m U3RhdGU8L3N0cnVjdG5hbWU+LCBkZWZpbmVkIGluCisgICAgICAgIDxmaWxlbmFtZT5ub2Rl cy9leGVjbm9kZXMuaDwvZmlsZW5hbWU+OgorCis8cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVm IHN0cnVjdCBGb3JQb3J0aW9uT2ZTdGF0ZQoreworICAgIE5vZGVUYWcgdHlwZTsKKworICAg IGNoYXIgICAqZnBfcmFuZ2VOYW1lOyAgICAgICAvKiB0aGUgY29sdW1uL1BFUklPRCBuYW1l ZCBpbiBGT1IgUE9SVElPTiBPRiAqLworICAgIE9pZCAgICAgZnBfcmFuZ2VUeXBlOyAgICAg ICAvKiB0aGUgdHlwZSBvZiB0aGUgRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbiAqLworICAg IGJvb2wgICAgZnBfaGFzUGVyaW9kOyAgICAgICAvKiB0cnVlIGlmZiB0aGlzIGlzIGEgUEVS SU9EIG5vdCBhIHJhbmdlICovCisgICAgY2hhciAgICpmcF9wZXJpb2RTdGFydE5hbWU7IC8q IHRoZSBQRVJJT0QncyBzdGFydCBjb2x1bW4gKi8KKyAgICBjaGFyICAgKmZwX3BlcmlvZEVu ZE5hbWU7ICAgLyogdGhlIFBFUklPRCdzIGVuZCBjb2x1bW4gKi8KKyAgICBEYXR1bSAgIGZw X3RhcmdldFJhbmdlOyAgICAgLyogdGhlIHJhbmdlIGZyb20gRk9SIFBPUlRJT04gT0YgKi8K K30gRm9yUG9ydGlvbk9mU3RhdGU7Cis8L3Byb2dyYW1saXN0aW5nPgorCisgICAgICAgd2hl cmUgPHN0cnVjdGZpZWxkPmZwX3JhbmdlTmFtZTwvc3RydWN0ZmllbGQ+IGlzIHRoZSBwZXJp b2Qgb3IgcmFuZ2UKKyAgICAgICBjb2x1bW4gbmFtZWQgaW4gdGhlIDxsaXRlcmFsPkZPUiBQ T1JUSU9OIE9GPC9saXRlcmFsPiBjbGF1c2UsCisgICAgICAgPHN0cnVjdGZpZWxkPmZwX3Jh bmdlVHlwZTwvc3RydWN0ZmllbGQ+IGlzIGl0cyByYW5nZSB0eXBlLAorICAgICAgIDxzdHJ1 Y3RmaWVsZD5mcF9oYXNQZXJpb2Q8L3N0cnVjdGZpZWxkPiBpbmRpY2F0ZXMgd2hldGhlciBh IHBlcmlvZCB3YXMgdXNlZAorICAgICAgIG9yIGEgcmFuZ2UgY29sdW1uLCA8c3RydWN0Zmll bGQ+ZnBfcGVyaW9kU3RhcnROYW1lPC9zdHJ1Y3RmaWVsZD4gYW5kCisgICAgICAgPHN0cnVj dGZpZWxkPmZwX3BlcmlvZEVuZE5hbWU8L3N0cnVjdGZpZWxkPiBhcmUgdGhlIG5hbWVzIG9m IHRoZSBwZXJpb2QncworICAgICAgIHN0YXJ0IGFuZCBlbmQgY29sdW1ucyAob3IgPHN5bWJv bD5OVUxMPC9zeW1ib2w+IGlmIGEgcmFuZ2UgY29sdW1uIHdhcyB1c2VkKSwKKyAgICAgICBh bmQgPHN0cnVjdGZpZWxkPmZwX3RhcmdldFJhbmdlPC9zdHJ1Y3RmaWVsZD4gaXMgYSByYW5n ZXR5cGUgdmFsdWUgY3JlYXRlZAorICAgICAgIGJ5IGV2YWx1YXRpbmcgdGhlIDxsaXRlcmFs PkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBib3VuZHMuCisgICAgICAgPC9wYXJhPgorICAg ICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgPC92YXJpYWJsZWxp c3Q+CiAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggNGNk NGFiOWRkMC4uNDgwMzY4YWQ5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAg LTEyMjg1LDYgKzEyMjg1LDcgQEAgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFy ICpjb25uYW1lLAogCQl0cmlnZGF0YS50Z190cmlndHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVh cFR1cGxlKHNsb3QsIGZhbHNlLCBOVUxMKTsKIAkJdHJpZ2RhdGEudGdfdHJpZ3Nsb3QgPSBz bG90OwogCQl0cmlnZGF0YS50Z190cmlnZ2VyID0gJnRyaWc7CisJCXRyaWdkYXRhLnRnX3Rl bXBvcmFsID0gTlVMTDsKIAogCQlmY2luZm8tPmNvbnRleHQgPSAoTm9kZSAqKSAmdHJpZ2Rh dGE7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRleCBhMTBhNDJiOTdmLi4wNjljMjJi MzhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBAIC01NCw2ICs1NCw3IEBACiAjaW5j bHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9ieXRlYS5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVk ZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNp bmNsdWRlICJ1dGlscy9pbnZhbC5oIgpAQCAtMjYzOCw2ICsyNjM5LDcgQEAgRXhlY0JTRGVs ZXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8pCiAJ TG9jVHJpZ2dlckRhdGEudGdfZXZlbnQgPSBUUklHR0VSX0VWRU5UX0RFTEVURSB8CiAJCVRS SUdHRVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVs aW5mby0+cmlfUmVsYXRpb25EZXNjOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0g cmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+ bnVtdHJpZ2dlcnM7IGkrKykKIAl7CiAJCVRyaWdnZXIgICAgKnRyaWdnZXIgPSAmdHJpZ2Rl c2MtPnRyaWdnZXJzW2ldOwpAQCAtMjczNyw2ICsyNzM5LDcgQEAgRXhlY0JSRGVsZXRlVHJp Z2dlcnMoRVN0YXRlICplc3RhdGUsIEVQUVN0YXRlICplcHFzdGF0ZSwKIAkJVFJJR0dFUl9F VkVOVF9ST1cgfAogCQlUUklHR0VSX0VWRU5UX0JFRk9SRTsKIAlMb2NUcmlnZ2VyRGF0YS50 Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0 YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAlmb3IgKGkgPSAw OyBpIDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCiAJewogCQlIZWFwVHVwbGUJbmV3 dHVwbGU7CkBAIC0yODI4LDYgKzI4MzEsNyBAQCBFeGVjSVJEZWxldGVUcmlnZ2VycyhFU3Rh dGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJVFJJR0dFUl9FVkVOVF9S T1cgfAogCQlUUklHR0VSX0VWRU5UX0lOU1RFQUQ7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVs YXRpb24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdf dGVtcG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAKIAlFeGVjRm9yY2VTdG9y ZUhlYXBUdXBsZSh0cmlndHVwbGUsIHNsb3QsIGZhbHNlKTsKIApAQCAtMjg5MSw2ICsyODk1 LDcgQEAgRXhlY0JTVXBkYXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbElu Zm8gKnJlbGluZm8pCiAJCVRSSUdHRVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdnZXJEYXRh LnRnX3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOwogCUxvY1RyaWdnZXJE YXRhLnRnX3VwZGF0ZWRjb2xzID0gdXBkYXRlZENvbHM7CisJTG9jVHJpZ2dlckRhdGEudGdf dGVtcG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAJZm9yIChpID0gMDsgaSA8 IHRyaWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQogCXsKIAkJVHJpZ2dlciAgICAqdHJpZ2dl ciA9ICZ0cmlnZGVzYy0+dHJpZ2dlcnNbaV07CkBAIC0zMDA4LDYgKzMwMTMsNyBAQCBFeGVj QlJVcGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRlLAog CQlUUklHR0VSX0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRfQkVGT1JFOwogCUxvY1Ry aWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOworCUxv Y1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mOwog CXVwZGF0ZWRDb2xzID0gRXhlY0dldEFsbFVwZGF0ZWRDb2xzKHJlbGluZm8sIGVzdGF0ZSk7 CiAJTG9jVHJpZ2dlckRhdGEudGdfdXBkYXRlZGNvbHMgPSB1cGRhdGVkQ29sczsKIAlmb3Ig KGkgPSAwOyBpIDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCkBAIC0zMTU3LDYgKzMx NjMsNyBAQCBFeGVjSVJVcGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVs SW5mbyAqcmVsaW5mbywKIAkJVFJJR0dFUl9FVkVOVF9ST1cgfAogCQlUUklHR0VSX0VWRU5U X0lOU1RFQUQ7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9S ZWxhdGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5y aV9mb3JQb3J0aW9uT2Y7CiAKIAlFeGVjRm9yY2VTdG9yZUhlYXBUdXBsZSh0cmlndHVwbGUs IG9sZHNsb3QsIGZhbHNlKTsKIApAQCAtMzYyMyw2ICszNjMwLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgQWZ0ZXJUcmlnZ2VyU2hhcmVkRGF0YQogCU9pZAkJCWF0c190Z29pZDsJCS8qIHRoZSB0 cmlnZ2VyJ3MgSUQgKi8KIAlPaWQJCQlhdHNfcmVsaWQ7CQkvKiB0aGUgcmVsYXRpb24gaXQn cyBvbiAqLwogCUNvbW1hbmRJZAlhdHNfZmlyaW5nX2lkOwkvKiBJRCBmb3IgZmlyaW5nIGN5 Y2xlICovCisJRm9yUG9ydGlvbk9mU3RhdGUgKmZvcl9wb3J0aW9uX29mOwkvKiB0aGUgRk9S IFBPUlRJT04gT0YgY2xhdXNlICovCiAJc3RydWN0IEFmdGVyVHJpZ2dlcnNUYWJsZURhdGEg KmF0c190YWJsZTsJLyogdHJhbnNpdGlvbiB0YWJsZSBhY2Nlc3MgKi8KIAlCaXRtYXBzZXQg ICphdHNfbW9kaWZpZWRjb2xzOwkvKiBtb2RpZmllZCBjb2x1bW5zICovCiB9IEFmdGVyVHJp Z2dlclNoYXJlZERhdGE7CkBAIC0zODk2LDYgKzM5MDQsNyBAQCBzdGF0aWMgU2V0Q29uc3Ry YWludFN0YXRlIFNldENvbnN0cmFpbnRTdGF0ZUNyZWF0ZShpbnQgbnVtYWxsb2MpOwogc3Rh dGljIFNldENvbnN0cmFpbnRTdGF0ZSBTZXRDb25zdHJhaW50U3RhdGVDb3B5KFNldENvbnN0 cmFpbnRTdGF0ZSBvcmlnc3RhdGUpOwogc3RhdGljIFNldENvbnN0cmFpbnRTdGF0ZSBTZXRD b25zdHJhaW50U3RhdGVBZGRJdGVtKFNldENvbnN0cmFpbnRTdGF0ZSBzdGF0ZSwKIAkJCQkJ CQkJCQkJCQlPaWQgdGdvaWQsIGJvb2wgdGdpc2RlZmVycmVkKTsKK3N0YXRpYyBGb3JQb3J0 aW9uT2ZTdGF0ZSAqQ29weUZvclBvcnRpb25PZlN0YXRlKEZvclBvcnRpb25PZlN0YXRlICpz cmMpOwogc3RhdGljIHZvaWQgY2FuY2VsX3ByaW9yX3N0bXRfdHJpZ2dlcnMoT2lkIHJlbGlk LCBDbWRUeXBlIGNtZFR5cGUsIGludCB0Z2V2ZW50KTsKIAogCkBAIC00MTA1LDYgKzQxMTQs NyBAQCBhZnRlclRyaWdnZXJBZGRFdmVudChBZnRlclRyaWdnZXJFdmVudExpc3QgKmV2ZW50 cywKIAkJCW5ld3NoYXJlZC0+YXRzX3JlbGlkID09IGV2dHNoYXJlZC0+YXRzX3JlbGlkICYm CiAJCQluZXdzaGFyZWQtPmF0c19ldmVudCA9PSBldnRzaGFyZWQtPmF0c19ldmVudCAmJgog CQkJbmV3c2hhcmVkLT5hdHNfdGFibGUgPT0gZXZ0c2hhcmVkLT5hdHNfdGFibGUgJiYKKwkJ CW5ld3NoYXJlZC0+Zm9yX3BvcnRpb25fb2YgPT0gZXZ0c2hhcmVkLT5mb3JfcG9ydGlvbl9v ZiAmJgogCQkJbmV3c2hhcmVkLT5hdHNfZmlyaW5nX2lkID09IDApCiAJCQlicmVhazsKIAl9 CkBAIC00NDY5LDYgKzQ0NzksNyBAQCBBZnRlclRyaWdnZXJFeGVjdXRlKEVTdGF0ZSAqZXN0 YXRlLAogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsOwogCWlmIChUUklHR0VS X0ZPUl9VUERBVEUoTG9jVHJpZ2dlckRhdGEudGdfdHJpZ2dlci0+dGd0eXBlKSkKIAkJTG9j VHJpZ2dlckRhdGEudGdfdXBkYXRlZGNvbHMgPSBldnRzaGFyZWQtPmF0c19tb2RpZmllZGNv bHM7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSBldnRzaGFyZWQtPmZvcl9wb3J0 aW9uX29mOwogCiAJTWVtb3J5Q29udGV4dFJlc2V0KHBlcl90dXBsZV9jb250ZXh0KTsKIApA QCAtNjAwNSw2ICs2MDE2LDQzIEBAIEFmdGVyVHJpZ2dlclBlbmRpbmdPblJlbChPaWQgcmVs aWQpCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKiAtLS0tLS0tLS0tCisgKiBGb3JQb3J0aW9u T2ZTdGF0ZSgpCisgKgorICogQ29waWVzIGEgRm9yUG9ydGlvbk9mU3RhdGUgaW50byB0aGUg Y3VycmVudCBtZW1vcnkgY29udGV4dC4KKyAqLworc3RhdGljIEZvclBvcnRpb25PZlN0YXRl ICoKK0NvcHlGb3JQb3J0aW9uT2ZTdGF0ZShGb3JQb3J0aW9uT2ZTdGF0ZSAqc3JjKQorewor CUZvclBvcnRpb25PZlN0YXRlICpkc3QgPSBOVUxMOworCWlmIChzcmMpIHsKKwkJTWVtb3J5 Q29udGV4dCBvbGRjdHg7CisJCVJhbmdlVHlwZSAqcjsKKwkJVHlwZUNhY2hlRW50cnkgKnR5 cGNhY2hlOworCisJCS8qCisJCSAqIE5lZWQgdG8gbGlmdCB0aGUgRk9SIFBPUlRJT04gT0Yg ZGV0YWlscyBpbnRvIGEgaGlnaGVyIG1lbW9yeSBjb250ZXh0CisJCSAqIGJlY2F1c2UgY2Fz Y2FkaW5nIGZvcmVpZ24ga2V5IHVwZGF0ZS9kZWxldGVzIGNhbiBjYXVzZSB0cmlnZ2VycyB0 byBmaXJlCisJCSAqIHRyaWdnZXJzLCBhbmQgdGhlIEFmdGVyVHJpZ2dlckV2ZW50cyB3aWxs IG91dGxpdmUgdGhlIEZQTworCQkgKiBkZXRhaWxzIG9mIHRoZSBvcmlnaW5hbCBxdWVyeS4K KwkJICovCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlv bkNvbnRleHQpOworCQlkc3QgPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZTdGF0ZSk7CisJCWRz dC0+ZnBfcmFuZ2VOYW1lID0gcHN0cmR1cChzcmMtPmZwX3JhbmdlTmFtZSk7CisJCWRzdC0+ ZnBfcmFuZ2VUeXBlID0gc3JjLT5mcF9yYW5nZVR5cGU7CisJCWRzdC0+ZnBfaGFzUGVyaW9k ID0gc3JjLT5mcF9oYXNQZXJpb2Q7CisJCWRzdC0+ZnBfcmFuZ2VBdHRubyA9IHNyYy0+ZnBf cmFuZ2VBdHRubzsKKwkJZHN0LT5mcF9wZXJpb2RTdGFydEF0dG5vID0gc3JjLT5mcF9wZXJp b2RTdGFydEF0dG5vOworCQlkc3QtPmZwX3BlcmlvZEVuZEF0dG5vID0gc3JjLT5mcF9wZXJp b2RFbmRBdHRubzsKKworCQlyID0gRGF0dW1HZXRSYW5nZVR5cGVQKHNyYy0+ZnBfdGFyZ2V0 UmFuZ2UpOworCQl0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKFJhbmdlVHlwZUdldE9p ZChyKSwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCQlkc3QtPmZwX3RhcmdldFJhbmdlID0g ZGF0dW1Db3B5KHNyYy0+ZnBfdGFyZ2V0UmFuZ2UsIHR5cGNhY2hlLT50eXBieXZhbCwgdHlw Y2FjaGUtPnR5cGxlbik7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0K KwlyZXR1cm4gZHN0OworfQorCiAvKiAtLS0tLS0tLS0tCiAgKiBBZnRlclRyaWdnZXJTYXZl RXZlbnQoKQogICoKQEAgLTY0MjAsNiArNjQ2OCw3IEBAIEFmdGVyVHJpZ2dlclNhdmVFdmVu dChFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJZWxzZQogCQkJ bmV3X3NoYXJlZC5hdHNfdGFibGUgPSBOVUxMOwogCQluZXdfc2hhcmVkLmF0c19tb2RpZmll ZGNvbHMgPSBhZnRlclRyaWdnZXJDb3B5Qml0bWFwKG1vZGlmaWVkQ29scyk7CisJCW5ld19z aGFyZWQuZm9yX3BvcnRpb25fb2YgPSBDb3B5Rm9yUG9ydGlvbk9mU3RhdGUocmVsaW5mby0+ cmlfZm9yUG9ydGlvbk9mKTsKIAogCQlhZnRlclRyaWdnZXJBZGRFdmVudCgmYWZ0ZXJUcmln Z2Vycy5xdWVyeV9zdGFja1thZnRlclRyaWdnZXJzLnF1ZXJ5X2RlcHRoXS5ldmVudHMsCiAJ CQkJCQkJICZuZXdfZXZlbnQsICZuZXdfc2hhcmVkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jCmluZGV4IDRjNWE3YmJmNjIuLjY5MDk2Y2JlZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYwpAQCAtMTI3NCw2ICsxMjc0LDcgQEAgSW5pdFJlc3VsdFJlbEluZm8oUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAlyZXN1bHRSZWxJbmZvLT5yaV9wcm9qZWN0UmV0 dXJuaW5nID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlcklu ZGV4ZXMgPSBOSUw7CiAJcmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdCA9IE5VTEw7CisJ cmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZv LT5yaV9SZXR1cm5pbmdTbG90ID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnT2xk U2xvdCA9IE5VTEw7CiAJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ05ld1Nsb3QgPSBOVUxMOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCBiMTZmYmU5ZTIy Li44OGVkYTAxMjgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9k aWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YwpAQCAtNjEsNiArNjEsOSBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5j bHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2lu Y2x1ZGUgInV0aWxzL3BlcmlvZC5oIgorI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIK KyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIK IAogCkBAIC0xNDEsNiArMTQ0LDEwIEBAIHN0YXRpYyBib29sIEV4ZWNPbkNvbmZsaWN0VXBk YXRlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJIFR1cGxlVGFibGVT bG90ICpleGNsdWRlZFNsb3QsCiAJCQkJCQkJCSBib29sIGNhblNldFRhZywKIAkJCQkJCQkJ IFR1cGxlVGFibGVTbG90ICoqcmV0dXJuaW5nKTsKK3N0YXRpYyB2b2lkIEV4ZWNGb3JQb3J0 aW9uT2ZMZWZ0b3ZlcnMoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAorCQkJCQkJCQkJ ICBFU3RhdGUgKmVzdGF0ZSwKKwkJCQkJCQkJCSAgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVs SW5mbywKKwkJCQkJCQkJCSAgSXRlbVBvaW50ZXIgdHVwbGVpZCk7CiBzdGF0aWMgVHVwbGVU YWJsZVNsb3QgKkV4ZWNQcmVwYXJlVHVwbGVSb3V0aW5nKE1vZGlmeVRhYmxlU3RhdGUgKm10 c3RhdGUsCiAJCQkJCQkJCQkJCSAgIEVTdGF0ZSAqZXN0YXRlLAogCQkJCQkJCQkJCQkgICBQ YXJ0aXRpb25UdXBsZVJvdXRpbmcgKnByb3V0ZSwKQEAgLTEyMDUsNiArMTIxMiwxNDIgQEAg RXhlY0luc2VydChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJcmV0dXJuIHJlc3Vs dDsKIH0KIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCXNldF9sZWZ0b3Zlcl90dXBsZV9ib3VuZHMK KyAqCisgKgkJU2F2ZXMgdGhlIG5ldyBib3VuZHMgaW50byB0aGUgcmFuZ2UgYXR0cmlidXRl CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkIHNldF9sZWZ0b3Zlcl90dXBsZV9i b3VuZHMoVHVwbGVUYWJsZVNsb3QgKmxlZnRvdmVyVHVwbGUsCisJCQkJCQkJCQkgIEZvclBv cnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiwKKwkJCQkJCQkJCSAgVHlwZUNhY2hlRW50cnkg KnR5cGNhY2hlLAorCQkJCQkJCQkJICBSYW5nZVR5cGUgKmxlZnRvdmVyUmFuZ2VUeXBlKQor eworCS8qIFN0b3JlIHRoZSByYW5nZSBkaXJlY3RseSAqLworCisJbGVmdG92ZXJUdXBsZS0+ dHRzX3ZhbHVlc1tmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRubyAtIDFdID0gUmFu Z2VUeXBlUEdldERhdHVtKGxlZnRvdmVyUmFuZ2VUeXBlKTsKKwlsZWZ0b3ZlclR1cGxlLT50 dHNfaXNudWxsW2ZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5vIC0gMV0gPSBmYWxz ZTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMK KyAqCisgKgkJSW5zZXJ0IHR1cGxlcyBmb3IgdGhlIHVudG91Y2hlZCB0aW1lc3RhbXAgb2Yg YSByb3cgaW4gYSBGT1IKKyAqCQlQT1JUSU9OIE9GIFVQREFURS9ERUxFVEUKKyAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqLworc3RhdGljIHZvaWQKK0V4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMoTW9k aWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAorCQkJCQkJICBFU3RhdGUgKmVzdGF0ZSwKKwkJ CQkJCSAgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJCSAgSXRlbVBvaW50 ZXIgdHVwbGVpZCkKK3sKKwlNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlID0gY29udGV4dC0+ bXRzdGF0ZTsKKwlNb2RpZnlUYWJsZSAqbm9kZSA9IChNb2RpZnlUYWJsZSAqKSBtdHN0YXRl LT5wcy5wbGFuOworCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiA9IChGb3JQb3J0 aW9uT2ZFeHByICopIG5vZGUtPmZvclBvcnRpb25PZjsKKwlEYXR1bSBvbGRSYW5nZTsKKwlS YW5nZVR5cGUgKm9sZFJhbmdlVHlwZTsKKwlSYW5nZVR5cGUgKnRhcmdldFJhbmdlVHlwZTsK KwlSYW5nZVR5cGUgKmxlZnRvdmVyUmFuZ2VUeXBlMTsKKwlSYW5nZVR5cGUgKmxlZnRvdmVy UmFuZ2VUeXBlMjsKKwlPaWQgcmFuZ2VUeXBlT2lkID0gZm9yUG9ydGlvbk9mLT5yYW5nZVR5 cGU7CisJYm9vbCBpc051bGwgPSBmYWxzZTsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7 CisJRm9yUG9ydGlvbk9mU3RhdGUgKmZwb1N0YXRlID0gcmVzdWx0UmVsSW5mby0+cmlfZm9y UG9ydGlvbk9mOworCVR1cGxlVGFibGVTbG90ICpvbGR0dXBsZVNsb3QgPSBmcG9TdGF0ZS0+ ZnBfRXhpc3Rpbmc7CisJVHVwbGVUYWJsZVNsb3QgKmxlZnRvdmVyVHVwbGUxID0gZnBvU3Rh dGUtPmZwX0xlZnRvdmVyMTsKKwlUdXBsZVRhYmxlU2xvdCAqbGVmdG92ZXJUdXBsZTIgPSBm cG9TdGF0ZS0+ZnBfTGVmdG92ZXIyOworCUhlYXBUdXBsZSBvbGR0dXBsZSA9IE5VTEw7CisJ Ym9vbCBzaG91bGRGcmVlID0gZmFsc2U7CisKKwkvKgorCSAqIEdldCB0aGUgcmFuZ2Ugb2Yg dGhlIG9sZCBwcmUtVVBEQVRFL0RFTEVURSB0dXBsZSwKKwkgKiBzbyB3ZSBjYW4gaW50ZXJz ZWN0IGl0IHdpdGggdGhlIEZPUiBQT1JUSU9OIE9GIHRhcmdldAorCSAqIGFuZCBzZWUgaWYg dGhlcmUgYXJlIGFueSAibGVmdG92ZXJzIiB0byBpbnNlcnQuCisJICoKKwkgKiBXZSBoYXZl IGFscmVhZHkgbG9ja2VkIHRoZSB0dXBsZSBpbiBFeGVjVXBkYXRlL0V4ZWNEZWxldGUKKwkg KiAoVE9ETzogaWYgaXQgd2FzICpub3QqIGNvbmN1cnJlbnRseSB1cGRhdGVkLCBkb2VzIHRh YmxlX3R1cGxlX3VwZGF0ZSBsb2NrIHRoZSB0dXBsZSBpdHNlbGY/CisJICogSSBkb24ndCBm b3VuZCB0aGUgY29kZSBmb3IgdGhhdCB5ZXQsIGFuZCBtYXliZSBpdCBkZXBlbmRzIG9uIHRo ZSBBTT8pCisJICogYW5kIGl0IGhhcyBwYXNzZWQgRXZhbFBsYW5RdWFsLgorCSAqIE1ha2Ug c3VyZSB3ZSdyZSBsb29raW5nIGF0IHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uLgorCSAqIE90 aGVyd2lzZSBjb25jdXJyZW50IHVwZGF0ZXMgb2YgdGhlIHNhbWUgdHVwbGUgaW4gUkVBRCBD T01NSVRURUQKKwkgKiBjb3VsZCBpbnNlcnQgY29uZmxpY3RpbmcgImxlZnRvdmVycyIuCisJ ICovCisJaWYgKCF0YWJsZV90dXBsZV9mZXRjaF9yb3dfdmVyc2lvbihyZXN1bHRSZWxJbmZv LT5yaV9SZWxhdGlvbkRlc2MsIHR1cGxlaWQsIFNuYXBzaG90QW55LCBvbGR0dXBsZVNsb3Qp KQorCQllbG9nKEVSUk9SLCAiZmFpbGVkIHRvIGZldGNoIHR1cGxlIGZvciBGT1IgUE9SVElP TiBPRiIpOworCisJb2xkUmFuZ2UgPSBzbG90X2dldGF0dHIob2xkdHVwbGVTbG90LCBmb3JQ b3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRubywgJmlzTnVsbCk7CisKKwlpZiAoaXNOdWxs KQorCQllbG9nKEVSUk9SLCAiZm91bmQgYSBOVUxMIHJhbmdlIGluIGEgdGVtcG9yYWwgdGFi bGUiKTsKKwlvbGRSYW5nZVR5cGUgPSBEYXR1bUdldFJhbmdlVHlwZVAob2xkUmFuZ2UpOwor CisJLyogR2V0IHRoZSB0YXJnZXQgcmFuZ2UuICovCisKKwl0YXJnZXRSYW5nZVR5cGUgPSBE YXR1bUdldFJhbmdlVHlwZVAoZnBvU3RhdGUtPmZwX3RhcmdldFJhbmdlKTsKKworCS8qCisJ ICogR2V0IHRoZSByYW5nZSdzIHR5cGUgY2FjaGUgZW50cnkuIFRoaXMgaXMgd29ydGggY2Fj aGluZyBmb3IgdGhlIHdob2xlIFVQREFURQorCSAqIGxpa2UgcmFuZ2UgZnVuY3Rpb25zIGRv LgorCSAqLworCisJdHlwY2FjaGUgPSBmcG9TdGF0ZS0+ZnBfcmFuZ2V0eXBjYWNoZTsKKwlp ZiAodHlwY2FjaGUgPT0gTlVMTCkKKwl7CisJCXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2Fj aGUocmFuZ2VUeXBlT2lkLCBUWVBFQ0FDSEVfUkFOR0VfSU5GTyk7CisJCWlmICh0eXBjYWNo ZS0+cm5nZWxlbXR5cGUgPT0gTlVMTCkKKwkJCWVsb2coRVJST1IsICJ0eXBlICV1IGlzIG5v dCBhIHJhbmdlIHR5cGUiLCByYW5nZVR5cGVPaWQpOworCQlmcG9TdGF0ZS0+ZnBfcmFuZ2V0 eXBjYWNoZSA9IHR5cGNhY2hlOworCX0KKworCS8qIEdldCB0aGUgcmFuZ2VzIHRvIHRoZSBs ZWZ0L3JpZ2h0IG9mIHRoZSB0YXJnZXRlZCByYW5nZS4gKi8KKworCXJhbmdlX2xlZnRvdmVy X2ludGVybmFsKHR5cGNhY2hlLCBvbGRSYW5nZVR5cGUsIHRhcmdldFJhbmdlVHlwZSwgJmxl ZnRvdmVyUmFuZ2VUeXBlMSwKKwkJCSZsZWZ0b3ZlclJhbmdlVHlwZTIpOworCisJLyoKKwkg KiBJbnNlcnQgYSBjb3B5IG9mIHRoZSB0dXBsZSB3aXRoIHRoZSBsb3dlciBsZWZ0b3ZlciBy YW5nZS4KKwkgKiBFdmVuIGlmIHRoZSB0YWJsZSBpcyBwYXJ0aXRpb25lZCwKKwkgKiBvdXIg aW5zZXJ0IHdvbid0IGV4dGVuZCBwYXN0IHRoZSBjdXJyZW50IHJvdywgc28gd2UgZG9uJ3Qg bmVlZCB0byByZS1yb3V0ZS4KKwkgKiBUT0RPOiBSZWFsbHk/IFdoYXQgaWYgeW91IHVwZGF0 ZSB0aGUgcGFydGl0aW9uIGtleT8KKwkgKi8KKworCWlmICghUmFuZ2VJc0VtcHR5KGxlZnRv dmVyUmFuZ2VUeXBlMSkpCisJeworCQlvbGR0dXBsZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVw bGUob2xkdHVwbGVTbG90LCBmYWxzZSwgJnNob3VsZEZyZWUpOworCQlFeGVjRm9yY2VTdG9y ZUhlYXBUdXBsZShvbGR0dXBsZSwgbGVmdG92ZXJUdXBsZTEsIGZhbHNlKTsKKworCQlzZXRf bGVmdG92ZXJfdHVwbGVfYm91bmRzKGxlZnRvdmVyVHVwbGUxLCBmb3JQb3J0aW9uT2YsIHR5 cGNhY2hlLCBsZWZ0b3ZlclJhbmdlVHlwZTEpOworCQlFeGVjTWF0ZXJpYWxpemVTbG90KGxl ZnRvdmVyVHVwbGUxKTsKKworCQkvLyBUT0RPOiBOZWVkIHRvIHNhdmUgY29udGV4dC0+bXRz dGF0ZS0+bXRfdHJhbnNpdGlvbl9jYXB0dXJlPyAoU2VlIGNvbW1lbnQgb24gRXhlY0luc2Vy dCkKKwkJRXhlY0luc2VydChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCBsZWZ0b3ZlclR1cGxl MSwgbm9kZS0+Y2FuU2V0VGFnLCBOVUxMLCBOVUxMKTsKKwl9CisKKwkvKgorCSAqIEluc2Vy dCBhIGNvcHkgb2YgdGhlIHR1cGxlIHdpdGggdGhlIHVwcGVyIGxlZnRvdmVyIHJhbmdlCisJ ICogRXZlbiBpZiB0aGUgdGFibGUgaXMgcGFydGl0aW9uZWQsCisJICogb3VyIGluc2VydCB3 b24ndCBleHRlbmQgcGFzdCB0aGUgY3VycmVudCByb3csIHNvIHdlIGRvbid0IG5lZWQgdG8g cmUtcm91dGUuCisJICogVE9ETzogUmVhbGx5PyBXaGF0IGlmIHlvdSB1cGRhdGUgdGhlIHBh cnRpdGlvbiBrZXk/CisJICovCisKKwlpZiAoIVJhbmdlSXNFbXB0eShsZWZ0b3ZlclJhbmdl VHlwZTIpKQorCXsKKwkJaWYgKCFvbGR0dXBsZSkKKwkJCW9sZHR1cGxlID0gRXhlY0ZldGNo U2xvdEhlYXBUdXBsZShvbGR0dXBsZVNsb3QsIGZhbHNlLCAmc2hvdWxkRnJlZSk7CisJCUV4 ZWNGb3JjZVN0b3JlSGVhcFR1cGxlKG9sZHR1cGxlLCBsZWZ0b3ZlclR1cGxlMiwgZmFsc2Up OworCisJCXNldF9sZWZ0b3Zlcl90dXBsZV9ib3VuZHMobGVmdG92ZXJUdXBsZTIsIGZvclBv cnRpb25PZiwgdHlwY2FjaGUsIGxlZnRvdmVyUmFuZ2VUeXBlMik7CisJCUV4ZWNNYXRlcmlh bGl6ZVNsb3QobGVmdG92ZXJUdXBsZTIpOworCisJCS8vIFRPRE86IE5lZWQgdG8gc2F2ZSBj b250ZXh0LT5tdHN0YXRlLT5tdF90cmFuc2l0aW9uX2NhcHR1cmU/IChTZWUgY29tbWVudCBv biBFeGVjSW5zZXJ0KQorCQlFeGVjSW5zZXJ0KGNvbnRleHQsIHJlc3VsdFJlbEluZm8sIGxl ZnRvdmVyVHVwbGUyLCBub2RlLT5jYW5TZXRUYWcsIE5VTEwsIE5VTEwpOworCX0KKworCWlm IChzaG91bGRGcmVlKQorCQloZWFwX2ZyZWV0dXBsZShvbGR0dXBsZSk7Cit9CisKIC8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICAqCQlFeGVjQmF0Y2hJbnNlcnQKICAqCkBAIC0xMzU3LDcgKzE1MDAsOCBA QCBFeGVjRGVsZXRlQWN0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywKICAqCiAgKiBDbG9zaW5nIHN0ZXBzIG9mIHR1cGxlIGRl bGV0aW9uOyB0aGlzIGludm9rZXMgQUZURVIgRk9SIEVBQ0ggUk9XIHRyaWdnZXJzLAogICog aW5jbHVkaW5nIHRoZSBVUERBVEUgdHJpZ2dlcnMgaWYgdGhlIGRlbGV0aW9uIGlzIGJlaW5n IGRvbmUgYXMgcGFydCBvZiBhCi0gKiBjcm9zcy1wYXJ0aXRpb24gdHVwbGUgbW92ZS4KKyAq IGNyb3NzLXBhcnRpdGlvbiB0dXBsZSBtb3ZlLiBJdCBhbHNvIGluc2VydHMgbGVmdG92ZXJz IGZyb20gYSBGT1IgUE9SVElPTiBPRgorICogZGVsZXRlLgogICovCiBzdGF0aWMgdm9pZAog RXhlY0RlbGV0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKQEAgLTEzOTAsNiArMTUzNCwxMSBAQCBFeGVjRGVs ZXRlRXBpbG9ndWUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogCQlhcl9kZWxldGVfdHJpZ190Y3MgPSBOVUxMOwogCX0KIAor CS8qIENvbXB1dGUgbGVmdG92ZXJzIGluIEZPUiBQT1JUSU9OIE9GICovCisJLy8gVE9ETzog U2tpcCB0aGlzIGZvciBGRFcgZGVsZXRlcz8KKwlpZiAoKChNb2RpZnlUYWJsZSAqKSBjb250 ZXh0LT5tdHN0YXRlLT5wcy5wbGFuKS0+Zm9yUG9ydGlvbk9mKQorCQlFeGVjRm9yUG9ydGlv bk9mTGVmdG92ZXJzKGNvbnRleHQsIGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCk7 CisKIAkvKiBBRlRFUiBST1cgREVMRVRFIFRyaWdnZXJzICovCiAJRXhlY0FSRGVsZXRlVHJp Z2dlcnMoZXN0YXRlLCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwKIAkJCQkJ CSBhcl9kZWxldGVfdHJpZ190Y3MsIGNoYW5naW5nUGFydCk7CkBAIC0yMTMzLDYgKzIyODIs MTEgQEAgRXhlY1VwZGF0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwg VXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0LAogCQkJCQkJCQkJCQkgICBOVUxMLCBOSUwsCiAJ CQkJCQkJCQkJCSAgICh1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMgPT0gVFVfU3VtbWFyaXpp bmcpKTsKIAorCS8qIENvbXB1dGUgbGVmdG92ZXJzIGluIEZPUiBQT1JUSU9OIE9GICovCisJ Ly8gVE9ETzogU2tpcCB0aGlzIGZvciBGRFcgdXBkYXRlcz8KKwlpZiAoKChNb2RpZnlUYWJs ZSAqKSBjb250ZXh0LT5tdHN0YXRlLT5wcy5wbGFuKS0+Zm9yUG9ydGlvbk9mKQorCQlFeGVj Rm9yUG9ydGlvbk9mTGVmdG92ZXJzKGNvbnRleHQsIGNvbnRleHQtPmVzdGF0ZSwgcmVzdWx0 UmVsSW5mbywgdHVwbGVpZCk7CisKIAkvKiBBRlRFUiBST1cgVVBEQVRFIFRyaWdnZXJzICov CiAJRXhlY0FSVXBkYXRlVHJpZ2dlcnMoY29udGV4dC0+ZXN0YXRlLCByZXN1bHRSZWxJbmZv LAogCQkJCQkJIE5VTEwsIE5VTEwsCkBAIC0zNjI2LDYgKzM3ODAsNyBAQCBFeGVjTW9kaWZ5 VGFibGUoUGxhblN0YXRlICpwc3RhdGUpCiAJCSAqIFJlc2V0IHBlci10dXBsZSBtZW1vcnkg Y29udGV4dCB1c2VkIGZvciBwcm9jZXNzaW5nIG9uIGNvbmZsaWN0IGFuZAogCQkgKiByZXR1 cm5pbmcgY2xhdXNlcywgdG8gZnJlZSBhbnkgZXhwcmVzc2lvbiBldmFsdWF0aW9uIHN0b3Jh Z2UKIAkJICogYWxsb2NhdGVkIGluIHRoZSBwcmV2aW91cyBjeWNsZS4KKwkJICogVE9ETzog SXQgc291bmRzIGxpa2UgRk9SIFBPUlRJT04gT0YgbWlnaHQgbmVlZCB0byBkbyBzb21ldGhp bmcgaGVyZSB0b28/CiAJCSAqLwogCQlpZiAocHN0YXRlLT5wc19FeHByQ29udGV4dCkKIAkJ CVJlc2V0RXhwckNvbnRleHQocHN0YXRlLT5wc19FeHByQ29udGV4dCk7CkBAIC00Mjk5LDYg KzQ0NTQsNzUgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCX0KIAl9CiAKKwkvKgorCSAqIElmIG5lZWRl ZCwgaW5pdGlhbGl6ZSB0aGUgdGFyZ2V0IHJhbmdlIGZvciBGT1IgUE9SVElPTiBPRi4KKwkg Ki8KKwlpZiAobm9kZS0+Zm9yUG9ydGlvbk9mKQorCXsKKwkJVHVwbGVEZXNjIHR1cERlc2M7 CisJCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZjsKKwkJRGF0dW0JdGFyZ2V0UmFu Z2U7CisJCWJvb2wJaXNOdWxsOworCQlFeHByQ29udGV4dCAqZWNvbnRleHQ7CisJCUV4cHJT dGF0ZSAqZXhwclN0YXRlOworCQlGb3JQb3J0aW9uT2ZTdGF0ZSAqZnBvU3RhdGU7CisKKwkJ cmVzdWx0UmVsSW5mbyA9IG10c3RhdGUtPnJlc3VsdFJlbEluZm87CisJCXR1cERlc2MgPSBy ZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MtPnJkX2F0dDsKKwkJZm9yUG9ydGlvbk9m ID0gKEZvclBvcnRpb25PZkV4cHIgKikgbm9kZS0+Zm9yUG9ydGlvbk9mOworCisJCS8qIEV2 YWwgdGhlIEZPUiBQT1JUSU9OIE9GIHRhcmdldCAqLworCQlpZiAobXRzdGF0ZS0+cHMucHNf RXhwckNvbnRleHQgPT0gTlVMTCkKKwkJCUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUs ICZtdHN0YXRlLT5wcyk7CisJCWVjb250ZXh0ID0gbXRzdGF0ZS0+cHMucHNfRXhwckNvbnRl eHQ7CisKKwkJZXhwclN0YXRlID0gRXhlY1ByZXBhcmVFeHByKChFeHByICopIGZvclBvcnRp b25PZi0+dGFyZ2V0UmFuZ2UsIGVzdGF0ZSk7CisJCXRhcmdldFJhbmdlID0gRXhlY0V2YWxF eHByKGV4cHJTdGF0ZSwgZWNvbnRleHQsICZpc051bGwpOworCQlpZiAoaXNOdWxsKQorCQkJ ZWxvZyhFUlJPUiwgIkdvdCBhIE5VTEwgRk9SIFBPUlRJT04gT0YgdGFyZ2V0IHJhbmdlIik7 CisKKwkJLyogQ3JlYXRlIHN0YXRlIGZvciBGT1IgUE9SVElPTiBPRiBvcGVyYXRpb24gKi8K KworCQlmcG9TdGF0ZSA9IG1ha2VOb2RlKEZvclBvcnRpb25PZlN0YXRlKTsKKwkJZnBvU3Rh dGUtPmZwX3JhbmdlTmFtZSA9IGZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZTsKKwkJZnBvU3Rh dGUtPmZwX3JhbmdlVHlwZSA9IGZvclBvcnRpb25PZi0+cmFuZ2VUeXBlOworCQlmcG9TdGF0 ZS0+ZnBfcmFuZ2VBdHRubyA9IGZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5vOwor CQlmcG9TdGF0ZS0+ZnBfdGFyZ2V0UmFuZ2UgPSB0YXJnZXRSYW5nZTsKKworCQkvKiBJbml0 aWFsaXplIHNsb3QgZm9yIHRoZSBleGlzdGluZyB0dXBsZSAqLworCisJCWZwb1N0YXRlLT5m cF9FeGlzdGluZyA9CisJCQl0YWJsZV9zbG90X2NyZWF0ZShyZXN1bHRSZWxJbmZvLT5yaV9S ZWxhdGlvbkRlc2MsCisJCQkJCQkJICAmbXRzdGF0ZS0+cHMuc3RhdGUtPmVzX3R1cGxlVGFi bGUpOworCisJCS8qIENyZWF0ZSB0aGUgdHVwbGUgc2xvdHMgZm9yIElOU0VSVGluZyB0aGUg bGVmdG92ZXJzICovCisKKwkJZnBvU3RhdGUtPmZwX0xlZnRvdmVyMSA9CisJCQlFeGVjSW5p dEV4dHJhVHVwbGVTbG90KG10c3RhdGUtPnBzLnN0YXRlLCB0dXBEZXNjLCAmVFRTT3BzVmly dHVhbCk7CisJCWZwb1N0YXRlLT5mcF9MZWZ0b3ZlcjIgPQorCQkJRXhlY0luaXRFeHRyYVR1 cGxlU2xvdChtdHN0YXRlLT5wcy5zdGF0ZSwgdHVwRGVzYywgJlRUU09wc1ZpcnR1YWwpOwor CisJCS8qCisJCSAqIFdlIG11c3QgYXR0YWNoIHRoZSBGb3JQb3J0aW9uT2ZTdGF0ZSB0byBh bGwgcmVzdWx0IHJlbHMsCisJCSAqIGluIGNhc2Ugb2YgYSBjcm9zcy1wYXJ0aXRpb24gdXBk YXRlIG9yIHRyaWdnZXJzIGZpcmluZworCQkgKiBvbiBwYXJ0aXRpb25zLgorCQkgKgorCQkg KiBUaGV5IHNob3VsZCBhbGwgaGF2ZSB0aGUgc2FtZSB0dXBsZWRlc2MsIHNvIGl0J3Mgb2th eQorCQkgKiB0aGF0IGFueSBvbmUgb2YgdGhlbSBjYW4gdXNlIHRoZSB0dXBsZSB0YWJsZSBz bG90cyB0aGVyZS4KKwkJICovCisJCWZvciAoaSA9IDA7IGkgPCBucmVsczsgaSsrKQorCQl7 CisJCQlyZXN1bHRSZWxJbmZvID0gJm10c3RhdGUtPnJlc3VsdFJlbEluZm9baV07CisJCQly ZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YgPSBmcG9TdGF0ZTsKKwkJfQorCisJCS8q IE1ha2Ugc3VyZSB0aGUgcm9vdCByZWxhdGlvbiBoYXMgdGhlIEZPUiBQT1JUSU9OIE9GIGNs YXVzZSB0b28uICovCisJCWlmIChub2RlLT5yb290UmVsYXRpb24gPiAwKQorCQkJbXRzdGF0 ZS0+cm9vdFJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZiA9IGZwb1N0YXRlOworCisJ CS8qIERvbid0IGZyZWUgdGhlIEV4cHJDb250ZXh0IGhlcmUgYmVjYXVzZSB0aGUgcmVzdWx0 IG11c3QgbGFzdCBmb3IgdGhlIHdob2xlIHF1ZXJ5ICovCisJfQorCiAJLyoKIAkgKiBJZiB3 ZSBoYXZlIGFueSBzZWNvbmRhcnkgcmVsYXRpb25zIGluIGFuIFVQREFURSBvciBERUxFVEUs IHRoZXkgbmVlZCB0bwogCSAqIGJlIHRyZWF0ZWQgbGlrZSBub24tbG9ja2VkIHJlbGF0aW9u cyBpbiBTRUxFQ1QgRk9SIFVQREFURSwgaS5lLiwgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5j CmluZGV4IGMwM2Y0ZjIzZTIuLjYyY2NiZjlkM2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5j CkBAIC0yNDQyLDYgKzI0NDIsMTQgQEAgZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5v ZGUgKm5vZGUsCiAJCQkJCXJldHVybiB0cnVlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2Ug VF9Gb3JQb3J0aW9uT2ZFeHByOgorCQkJeworCQkJCUZvclBvcnRpb25PZkV4cHIgKmZvclBv cnRpb25PZiA9IChGb3JQb3J0aW9uT2ZFeHByICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhm b3JQb3J0aW9uT2YtPnRhcmdldFJhbmdlKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJ CQlicmVhazsKIAkJY2FzZSBUX1BhcnRpdGlvblBydW5lU3RlcE9wOgogCQkJewogCQkJCVBh cnRpdGlvblBydW5lU3RlcE9wICpvcHN0ZXAgPSAoUGFydGl0aW9uUHJ1bmVTdGVwT3AgKikg bm9kZTsKQEAgLTI1ODIsNiArMjU5MCw4IEBAIHF1ZXJ5X3RyZWVfd2Fsa2VyX2ltcGwoUXVl cnkgKnF1ZXJ5LAogCQlyZXR1cm4gdHJ1ZTsKIAlpZiAoV0FMSyhxdWVyeS0+bWVyZ2VBY3Rp b25MaXN0KSkKIAkJcmV0dXJuIHRydWU7CisJaWYgKFdBTEsocXVlcnktPmZvclBvcnRpb25P ZikpCisJCXJldHVybiB0cnVlOwogCWlmIChXQUxLKHF1ZXJ5LT5yZXR1cm5pbmdMaXN0KSkK IAkJcmV0dXJuIHRydWU7CiAJaWYgKFdBTEsocXVlcnktPmpvaW50cmVlKSkKQEAgLTM0MjUs NiArMzQzNSwxOSBAQCBleHByZXNzaW9uX3RyZWVfbXV0YXRvcl9pbXBsKE5vZGUgKm5vZGUs CiAJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CiAJCQl9CiAJCQlicmVhazsKKwkJY2Fz ZSBUX0ZvclBvcnRpb25PZkV4cHI6CisJCQl7CisJCQkJRm9yUG9ydGlvbk9mRXhwciAqZnBv ID0gKEZvclBvcnRpb25PZkV4cHIgKikgbm9kZTsKKwkJCQlGb3JQb3J0aW9uT2ZFeHByICpu ZXdub2RlOworCisJCQkJRkxBVENPUFkobmV3bm9kZSwgZnBvLCBGb3JQb3J0aW9uT2ZFeHBy KTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+cmFuZ2VWYXIsIGZwby0+cmFuZ2VWYXIsIFZhciAq KTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+dGFyZ2V0UmFuZ2UsIGZwby0+dGFyZ2V0UmFuZ2Us IE5vZGUgKik7CisJCQkJTVVUQVRFKG5ld25vZGUtPnJhbmdlU2V0LCBmcG8tPnJhbmdlU2V0 LCBMaXN0ICopOworCisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQli cmVhazsKIAkJY2FzZSBUX1BhcnRpdGlvblBydW5lU3RlcE9wOgogCQkJewogCQkJCVBhcnRp dGlvblBydW5lU3RlcE9wICpvcHN0ZXAgPSAoUGFydGl0aW9uUHJ1bmVTdGVwT3AgKikgbm9k ZTsKQEAgLTM2MDMsNiArMzYyNiw3IEBAIHF1ZXJ5X3RyZWVfbXV0YXRvcl9pbXBsKFF1ZXJ5 ICpxdWVyeSwKIAlNVVRBVEUocXVlcnktPndpdGhDaGVja09wdGlvbnMsIHF1ZXJ5LT53aXRo Q2hlY2tPcHRpb25zLCBMaXN0ICopOwogCU1VVEFURShxdWVyeS0+b25Db25mbGljdCwgcXVl cnktPm9uQ29uZmxpY3QsIE9uQ29uZmxpY3RFeHByICopOwogCU1VVEFURShxdWVyeS0+bWVy Z2VBY3Rpb25MaXN0LCBxdWVyeS0+bWVyZ2VBY3Rpb25MaXN0LCBMaXN0ICopOworCU1VVEFU RShxdWVyeS0+Zm9yUG9ydGlvbk9mLCBxdWVyeS0+Zm9yUG9ydGlvbk9mLCBGb3JQb3J0aW9u T2ZFeHByICopOwogCU1VVEFURShxdWVyeS0+cmV0dXJuaW5nTGlzdCwgcXVlcnktPnJldHVy bmluZ0xpc3QsIExpc3QgKik7CiAJTVVUQVRFKHF1ZXJ5LT5qb2ludHJlZSwgcXVlcnktPmpv aW50cmVlLCBGcm9tRXhwciAqKTsKIAlNVVRBVEUocXVlcnktPnNldE9wZXJhdGlvbnMsIHF1 ZXJ5LT5zZXRPcGVyYXRpb25zLCBOb2RlICopOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vY3JlYXRlcGxhbi5jCmluZGV4IDM0Y2E2ZDRhYzIuLjk1NGViNGRhODMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTMxMSw3ICszMTEsOCBA QCBzdGF0aWMgTW9kaWZ5VGFibGUgKm1ha2VfbW9kaWZ5dGFibGUoUGxhbm5lckluZm8gKnJv b3QsIFBsYW4gKnN1YnBsYW4sCiAJCQkJCQkJCQkgTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMs CiAJCQkJCQkJCQkgTGlzdCAqd2l0aENoZWNrT3B0aW9uTGlzdHMsIExpc3QgKnJldHVybmlu Z0xpc3RzLAogCQkJCQkJCQkJIExpc3QgKnJvd01hcmtzLCBPbkNvbmZsaWN0RXhwciAqb25j b25mbGljdCwKLQkJCQkJCQkJCSBMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBpbnQgZXBxUGFy YW0pOworCQkJCQkJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIEZvclBvcnRpb25PZkV4 cHIgKmZvclBvcnRpb25PZiwKKwkJCQkJCQkJCSBpbnQgZXBxUGFyYW0pOwogc3RhdGljIEdh dGhlck1lcmdlICpjcmVhdGVfZ2F0aGVyX21lcmdlX3BsYW4oUGxhbm5lckluZm8gKnJvb3Qs CiAJCQkJCQkJCQkJCSBHYXRoZXJNZXJnZVBhdGggKmJlc3RfcGF0aCk7CiAKQEAgLTI4MzUs NiArMjgzNiw3IEBAIGNyZWF0ZV9tb2RpZnl0YWJsZV9wbGFuKFBsYW5uZXJJbmZvICpyb290 LCBNb2RpZnlUYWJsZVBhdGggKmJlc3RfcGF0aCkKIAkJCQkJCQliZXN0X3BhdGgtPnJvd01h cmtzLAogCQkJCQkJCWJlc3RfcGF0aC0+b25jb25mbGljdCwKIAkJCQkJCQliZXN0X3BhdGgt Pm1lcmdlQWN0aW9uTGlzdHMsCisJCQkJCQkJYmVzdF9wYXRoLT5mb3JQb3J0aW9uT2YsCiAJ CQkJCQkJYmVzdF9wYXRoLT5lcHFQYXJhbSk7CiAKIAljb3B5X2dlbmVyaWNfcGF0aF9pbmZv KCZwbGFuLT5wbGFuLCAmYmVzdF9wYXRoLT5wYXRoKTsKQEAgLTcwMDUsNyArNzAwNyw4IEBA IG1ha2VfbW9kaWZ5dGFibGUoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnN1YnBsYW4sCiAJ CQkJIExpc3QgKnVwZGF0ZUNvbG5vc0xpc3RzLAogCQkJCSBMaXN0ICp3aXRoQ2hlY2tPcHRp b25MaXN0cywgTGlzdCAqcmV0dXJuaW5nTGlzdHMsCiAJCQkJIExpc3QgKnJvd01hcmtzLCBP bkNvbmZsaWN0RXhwciAqb25jb25mbGljdCwKLQkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0 cywgaW50IGVwcVBhcmFtKQorCQkJCSBMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBGb3JQb3J0 aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YsCisJCQkJIGludCBlcHFQYXJhbSkKIHsKIAlNb2Rp ZnlUYWJsZSAqbm9kZSA9IG1ha2VOb2RlKE1vZGlmeVRhYmxlKTsKIAlMaXN0CSAgICpmZHdf cHJpdmF0ZV9saXN0OwpAQCAtNzA3MSw2ICs3MDc0LDcgQEAgbWFrZV9tb2RpZnl0YWJsZShQ bGFubmVySW5mbyAqcm9vdCwgUGxhbiAqc3VicGxhbiwKIAkJbm9kZS0+ZXhjbFJlbFRsaXN0 ID0gb25jb25mbGljdC0+ZXhjbFJlbFRsaXN0OwogCX0KIAlub2RlLT51cGRhdGVDb2xub3NM aXN0cyA9IHVwZGF0ZUNvbG5vc0xpc3RzOworCW5vZGUtPmZvclBvcnRpb25PZiA9IChOb2Rl ICopIGZvclBvcnRpb25PZjsKIAlub2RlLT53aXRoQ2hlY2tPcHRpb25MaXN0cyA9IHdpdGhD aGVja09wdGlvbkxpc3RzOwogCW5vZGUtPnJldHVybmluZ0xpc3RzID0gcmV0dXJuaW5nTGlz dHM7CiAJbm9kZS0+cm93TWFya3MgPSByb3dNYXJrczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3BsYW5uZXIuYwppbmRleCBhOGNlYTVlZmUxLi40OGFmNDlmMGJkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC0xOTYzLDYgKzE5NjMsNyBAQCBncm91 cGluZ19wbGFubmVyKFBsYW5uZXJJbmZvICpyb290LCBkb3VibGUgdHVwbGVfZnJhY3Rpb24p CiAJCQkJCQkJCQkJcm93TWFya3MsCiAJCQkJCQkJCQkJcGFyc2UtPm9uQ29uZmxpY3QsCiAJ CQkJCQkJCQkJbWVyZ2VBY3Rpb25MaXN0cywKKwkJCQkJCQkJCQlwYXJzZS0+Zm9yUG9ydGlv bk9mLAogCQkJCQkJCQkJCWFzc2lnbl9zcGVjaWFsX2V4ZWNfcGFyYW0ocm9vdCkpOwogCQl9 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCmluZGV4IDBiMWQxN2I5 ZDMuLjBlMDQ0OTA3OTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L3BhdGhub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUu YwpAQCAtMzY4Niw3ICszNjg2LDggQEAgY3JlYXRlX21vZGlmeXRhYmxlX3BhdGgoUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCUxpc3QgKnVwZGF0ZUNvbG5v c0xpc3RzLAogCQkJCQkJTGlzdCAqd2l0aENoZWNrT3B0aW9uTGlzdHMsIExpc3QgKnJldHVy bmluZ0xpc3RzLAogCQkJCQkJTGlzdCAqcm93TWFya3MsIE9uQ29uZmxpY3RFeHByICpvbmNv bmZsaWN0LAotCQkJCQkJTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgaW50IGVwcVBhcmFtKQor CQkJCQkJTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9y dGlvbk9mLAorCQkJCQkJaW50IGVwcVBhcmFtKQogewogCU1vZGlmeVRhYmxlUGF0aCAqcGF0 aG5vZGUgPSBtYWtlTm9kZShNb2RpZnlUYWJsZVBhdGgpOwogCkBAIC0zNzUyLDYgKzM3NTMs NyBAQCBjcmVhdGVfbW9kaWZ5dGFibGVfcGF0aChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0 SW5mbyAqcmVsLAogCXBhdGhub2RlLT5yZXR1cm5pbmdMaXN0cyA9IHJldHVybmluZ0xpc3Rz OwogCXBhdGhub2RlLT5yb3dNYXJrcyA9IHJvd01hcmtzOwogCXBhdGhub2RlLT5vbmNvbmZs aWN0ID0gb25jb25mbGljdDsKKwlwYXRobm9kZS0+Zm9yUG9ydGlvbk9mID0gZm9yUG9ydGlv bk9mOwogCXBhdGhub2RlLT5lcHFQYXJhbSA9IGVwcVBhcmFtOwogCXBhdGhub2RlLT5tZXJn ZUFjdGlvbkxpc3RzID0gbWVyZ2VBY3Rpb25MaXN0czsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMK aW5kZXggN2ExZGZiNjM2NC4uZGIzYjFkNDU3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBA IC00NywxMSArNDcsMTMgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIK ICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdGFyZ2V0LmgiCiAjaW5jbHVkZSAicGFyc2VyL3Bh cnNlX3R5cGUuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VyLmgiCiAjaW5jbHVkZSAicGFy c2VyL3BhcnNldHJlZS5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCiAj aW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMuaCIKICNpbmNsdWRlICJ1dGlscy9idWls dGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2Nh Y2hlLmgiCiAKQEAgLTYwLDEwICs2MiwxNiBAQAogcG9zdF9wYXJzZV9hbmFseXplX2hvb2tf dHlwZSBwb3N0X3BhcnNlX2FuYWx5emVfaG9vayA9IE5VTEw7CiAKIHN0YXRpYyBRdWVyeSAq dHJhbnNmb3JtT3B0aW9uYWxTZWxlY3RJbnRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAq cGFyc2VUcmVlKTsKK3N0YXRpYyBOb2RlICphZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlv bnMoUXVlcnkgKnFyeSwgRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3JQb3J0aW9uT2YsCisJCQkJ CQkJCQkJCU5vZGUgKndoZXJlQ2xhdXNlKTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtRGVs ZXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIERlbGV0ZVN0bXQgKnN0bXQpOwogc3RhdGlj IFF1ZXJ5ICp0cmFuc2Zvcm1JbnNlcnRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgSW5zZXJ0 U3RtdCAqc3RtdCk7CiBzdGF0aWMgT25Db25mbGljdEV4cHIgKnRyYW5zZm9ybU9uQ29uZmxp Y3RDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCQkJIE9uQ29uZmxpY3RD bGF1c2UgKm9uQ29uZmxpY3RDbGF1c2UpOworc3RhdGljIEZvclBvcnRpb25PZkV4cHIgKnRy YW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJ CQkJCQkJIGludCBydGluZGV4LAorCQkJCQkJCQkJCQkJCSBGb3JQb3J0aW9uT2ZDbGF1c2Ug KmZvclBvcnRpb25PZkNsYXVzZSwKKwkJCQkJCQkJCQkJCQkgYm9vbCBpc1VwZGF0ZSk7CiBz dGF0aWMgaW50CWNvdW50X3Jvd2V4cHJfY29sdW1ucyhQYXJzZVN0YXRlICpwc3RhdGUsIE5v ZGUgKmV4cHIpOwogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1TZWxlY3RTdG10KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9y bVZhbHVlc0NsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpOwpA QCAtNDc5LDYgKzQ4NywyMCBAQCBzdG10X3JlcXVpcmVzX3BhcnNlX2FuYWx5c2lzKFJhd1N0 bXQgKnBhcnNlVHJlZSkKIAlyZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgTm9kZSAqCith ZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMoUXVlcnkgKnFyeSwgRm9yUG9ydGlvbk9m Q2xhdXNlICpmb3JQb3J0aW9uT2YsIE5vZGUgKndoZXJlQ2xhdXNlKQoreworCWlmIChmb3JQ b3J0aW9uT2YpCisJeworCQlpZiAod2hlcmVDbGF1c2UpCisJCQlyZXR1cm4gKE5vZGUgKikg bWFrZUJvb2xFeHByKEFORF9FWFBSLCBsaXN0X21ha2UyKHFyeS0+Zm9yUG9ydGlvbk9mLT5v dmVybGFwc0V4cHIsIHdoZXJlQ2xhdXNlKSwgLTEpOworCQllbHNlCisJCQlyZXR1cm4gcXJ5 LT5mb3JQb3J0aW9uT2YtPm92ZXJsYXBzRXhwcjsKKwl9CisJZWxzZQorCQlyZXR1cm4gd2hl cmVDbGF1c2U7Cit9CisKIC8qCiAgKiBhbmFseXplX3JlcXVpcmVzX3NuYXBzaG90CiAgKgkJ UmV0dXJucyB0cnVlIGlmIGEgc25hcHNob3QgbXVzdCBiZSBzZXQgYmVmb3JlIGRvaW5nIHBh cnNlIGFuYWx5c2lzCkBAIC01MTIsNiArNTM0LDcgQEAgdHJhbnNmb3JtRGVsZXRlU3RtdChQ YXJzZVN0YXRlICpwc3RhdGUsIERlbGV0ZVN0bXQgKnN0bXQpCiB7CiAJUXVlcnkJICAgKnFy eSA9IG1ha2VOb2RlKFF1ZXJ5KTsKIAlQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbTsKKwlO b2RlCSAgICp3aGVyZUNsYXVzZTsKIAlOb2RlCSAgICpxdWFsOwogCiAJcXJ5LT5jb21tYW5k VHlwZSA9IENNRF9ERUxFVEU7CkBAIC01NTAsNyArNTczLDExIEBAIHRyYW5zZm9ybURlbGV0 ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxldGVTdG10ICpzdG10KQogCW5zaXRlbS0+ cF9sYXRlcmFsX29ubHkgPSBmYWxzZTsKIAluc2l0ZW0tPnBfbGF0ZXJhbF9vayA9IHRydWU7 CiAKLQlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLCBzdG10LT53aGVyZUNs YXVzZSwKKwlpZiAoc3RtdC0+Zm9yUG9ydGlvbk9mKQorCQlxcnktPmZvclBvcnRpb25PZiA9 IHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShwc3RhdGUsIHFyeS0+cmVzdWx0UmVsYXRp b24sIHN0bXQtPmZvclBvcnRpb25PZiwgZmFsc2UpOworCisJd2hlcmVDbGF1c2UgPSBhZGRG b3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMocXJ5LCBzdG10LT5mb3JQb3J0aW9uT2YsIHN0 bXQtPndoZXJlQ2xhdXNlKTsKKwlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1c2UocHN0YXRl LCB3aGVyZUNsYXVzZSwKIAkJCQkJCQkJRVhQUl9LSU5EX1dIRVJFLCAiV0hFUkUiKTsKIAog CXFyeS0+cmV0dXJuaW5nTGlzdCA9IHRyYW5zZm9ybVJldHVybmluZ0xpc3QocHN0YXRlLCBz dG10LT5yZXR1cm5pbmdMaXN0KTsKQEAgLTExNzMsNyArMTIwMCw3IEBAIHRyYW5zZm9ybU9u Q29uZmxpY3RDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkgKiBOb3cgdHJhbnNmb3Jt IHRoZSBVUERBVEUgc3ViZXhwcmVzc2lvbnMuCiAJCSAqLwogCQlvbkNvbmZsaWN0U2V0ID0K LQkJCXRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0YXRlLCBvbkNvbmZsaWN0Q2xhdXNl LT50YXJnZXRMaXN0KTsKKwkJCXRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0YXRlLCBv bkNvbmZsaWN0Q2xhdXNlLT50YXJnZXRMaXN0LCBOVUxMKTsKIAogCQlvbkNvbmZsaWN0V2hl cmUgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUsCiAJCQkJCQkJCQkJCSAgIG9uQ29u ZmxpY3RDbGF1c2UtPndoZXJlQ2xhdXNlLApAQCAtMTIwMyw2ICsxMjMwLDEyMyBAQCB0cmFu c2Zvcm1PbkNvbmZsaWN0Q2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlyZXR1cm4gcmVz dWx0OwogfQogCisvKgorICogdHJhbnNmb3JtRm9yUG9ydGlvbk9mQ2xhdXNlCisgKgorICoJ ICBUcmFuc2Zvcm1zIGEgRm9yUG9ydGlvbk9mQ2xhdXNlIGluIGFuIFVQREFURS9ERUxFVEUg c3RhdGVtZW50LgorICoKKyAqCSAgLSBMb29rIHVwIHRoZSByYW5nZS9wZXJpb2QgcmVxdWVz dGVkLgorICoJICAtIEJ1aWxkIGEgY29tcGF0aWJsZSByYW5nZSB2YWx1ZSBmcm9tIHRoZSBG Uk9NIGFuZCBUTyBleHByZXNzaW9ucy4KKyAqCSAgLSBCdWlsZCBhbiAib3ZlcmxhcHMiIGV4 cHJlc3Npb24gZm9yIGZpbHRlcmluZy4KKyAqCSAgLSBGb3IgVVBEQVRFcywgYnVpbGQgYW4g ImludGVyc2VjdHMiIGV4cHJlc3Npb24gdGhlIHJld3JpdGVyIGNhbiBhZGQKKyAqCSAgLSB0 byB0aGUgdGFyZ2V0TGlzdCB0byBjaGFuZ2UgdGhlIHRlbXBvcmFsIGJvdW5kcy4KKyAqLwor c3RhdGljIEZvclBvcnRpb25PZkV4cHIgKgordHJhbnNmb3JtRm9yUG9ydGlvbk9mQ2xhdXNl KFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCQlpbnQgcnRpbmRleCwKKwkJCQkJCQlGb3JQ b3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZiwKKwkJCQkJCQlib29sIGlzVXBkYXRlKQor eworCVJlbGF0aW9uIHRhcmdldHJlbCA9IHBzdGF0ZS0+cF90YXJnZXRfcmVsYXRpb247CisJ UlRFUGVybWlzc2lvbkluZm8gKnRhcmdldF9wZXJtaW5mbyA9IHBzdGF0ZS0+cF90YXJnZXRf bnNpdGVtLT5wX3Blcm1pbmZvOworCWNoYXIgKnJhbmdlX25hbWUgPSBmb3JQb3J0aW9uT2Yt PnJhbmdlX25hbWU7CisJY2hhciAqcmFuZ2VfdHlwZV9uYW1lc3BhY2UgPSBOVUxMOworCWNo YXIgKnJhbmdlX3R5cGVfbmFtZSA9IE5VTEw7CisJaW50IHJhbmdlX2F0dG5vID0gSW52YWxp ZEF0dHJOdW1iZXI7CisJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cjsKKwlGb3JQb3J0aW9uT2ZF eHByICpyZXN1bHQ7CisJTGlzdCAqdGFyZ2V0TGlzdDsKKwlWYXIgKnJhbmdlVmFyOworCUZ1 bmNDYWxsICpmYzsKKworCXJlc3VsdCA9IG1ha2VOb2RlKEZvclBvcnRpb25PZkV4cHIpOwor CisJLyogTG9vayB1cCB0aGUgRk9SIFBPUlRJT04gT0YgbmFtZSByZXF1ZXN0ZWQuICovCisJ cmFuZ2VfYXR0bm8gPSBhdHRuYW1lQXR0TnVtKHRhcmdldHJlbCwgcmFuZ2VfbmFtZSwgZmFs c2UpOworCWlmIChyYW5nZV9hdHRubyA9PSBJbnZhbGlkQXR0ck51bWJlcikKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJ CSBlcnJtc2coImNvbHVtbiBvciBwZXJpb2QgXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBk b2VzIG5vdCBleGlzdCIsCisJCQkJCQlyYW5nZV9uYW1lLAorCQkJCQkJUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZV9sb2NhdGlvbikpKTsKKwlhdHRyID0gVHVw bGVEZXNjQXR0cih0YXJnZXRyZWwtPnJkX2F0dCwgcmFuZ2VfYXR0bm8gLSAxKTsKKworCS8q IE1ha2Ugc3VyZSBpdCdzIGEgcmFuZ2UgY29sdW1uICovCisJaWYgKCF0eXBlX2lzX3Jhbmdl KGF0dHItPmF0dHR5cGlkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfQ09MVU1OX1JFRkVSRU5DRSksCisJCQkJIGVycm1zZygiY29sdW1uIFwi JXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgaXMgbm90IGEgcmFuZ2UgdHlwZSIsCisJCQkJCQly YW5nZV9uYW1lLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSks CisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGZvclBvcnRpb25PZi0+cmFuZ2Vf bmFtZV9sb2NhdGlvbikpKTsKKworCXJhbmdlVmFyID0gbWFrZVZhcigKKwkJCXJ0aW5kZXgs CisJCQlyYW5nZV9hdHRubywKKwkJCWF0dHItPmF0dHR5cGlkLAorCQkJYXR0ci0+YXR0dHlw bW9kLAorCQkJYXR0ci0+YXR0Y29sbGF0aW9uLAorCQkJMCk7CisJcmFuZ2VWYXItPmxvY2F0 aW9uID0gZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uOworCXJlc3VsdC0+cmFu Z2VWYXIgPSByYW5nZVZhcjsKKwlyZXN1bHQtPnJhbmdlVHlwZSA9IGF0dHItPmF0dHR5cGlk OworCWlmICghZ2V0X3R5cG5hbWVfYW5kX25hbWVzcGFjZShhdHRyLT5hdHR0eXBpZCwgJnJh bmdlX3R5cGVfbmFtZSwgJnJhbmdlX3R5cGVfbmFtZXNwYWNlKSkKKwkJZWxvZyhFUlJPUiwg Im1pc3NpbmcgcmFuZ2UgdHlwZSAlZCIsIGF0dHItPmF0dHR5cGlkKTsKKworCisJLyoKKwkg KiBCdWlsZCBhIHJhbmdlIGZyb20gdGhlIEZST00gLi4uIFRPIC4uLi4gYm91bmRzLgorCSAq IFRoaXMgc2hvdWxkIGdpdmUgYSBjb25zdGFudCByZXN1bHQsIHNvIHdlIGFjY2VwdCBmdW5j dGlvbnMgbGlrZSBOT1coKQorCSAqIGJ1dCBub3QgY29sdW1uIHJlZmVyZW5jZXMsIHN1YnF1 ZXJpZXMsIGV0Yy4KKwkgKgorCSAqIEl0IGFsc28gcGVybWl0cyBVTkJPVU5ERUQgaW4gZWl0 aGVyIHBsYWNlLgorCSAqLworCWZjID0gbWFrZUZ1bmNDYWxsKAorCQkJbGlzdF9tYWtlMiht YWtlU3RyaW5nKHJhbmdlX3R5cGVfbmFtZXNwYWNlKSwgbWFrZVN0cmluZyhyYW5nZV90eXBl X25hbWUpKSwKKwkJCWxpc3RfbWFrZTIoZm9yUG9ydGlvbk9mLT50YXJnZXRfc3RhcnQsIGZv clBvcnRpb25PZi0+dGFyZ2V0X2VuZCksCisJCQlDT0VSQ0VfRVhQTElDSVRfQ0FMTCwKKwkJ CWZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZV9sb2NhdGlvbik7CisJcmVzdWx0LT50YXJnZXRS YW5nZSA9IHRyYW5zZm9ybUV4cHIocHN0YXRlLCAoTm9kZSAqKSBmYywgRVhQUl9LSU5EX1VQ REFURV9QT1JUSU9OKTsKKworCS8qIG92ZXJsYXBzRXhwciBpcyBzb21ldGhpbmcgd2UgY2Fu IGFkZCB0byB0aGUgd2hlcmVDbGF1c2UgKi8KKwlyZXN1bHQtPm92ZXJsYXBzRXhwciA9IChO b2RlICopIG1ha2VTaW1wbGVBX0V4cHIoQUVYUFJfT1AsICImJiIsCisJCQkoTm9kZSAqKSBj b3B5T2JqZWN0KHJhbmdlVmFyKSwgKE5vZGUgKikgZmMsCisJCQlmb3JQb3J0aW9uT2YtPnJh bmdlX25hbWVfbG9jYXRpb24pOworCisJaWYgKGlzVXBkYXRlKQorCXsKKwkJLyoKKwkJICog Tm93IG1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIHN0YXJ0L2VuZCB0aW1lIG9mIHRoZSByZWNv cmQuCisJCSAqIEZvciBhIHJhbmdlIGNvbCAocikgdGhpcyBpcyBgciA9IHIgKiB0YXJnZXRS YW5nZWAuCisJCSAqLworCQlFeHByICpyYW5nZVNldEV4cHIgPSAoRXhwciAqKSBtYWtlU2lt cGxlQV9FeHByKEFFWFBSX09QLCAiKiIsCisJCQkJKE5vZGUgKikgY29weU9iamVjdChyYW5n ZVZhciksIChOb2RlICopIGZjLAorCQkJCWZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZV9sb2Nh dGlvbik7CisJCVRhcmdldEVudHJ5ICp0bGU7CisKKwkJdGFyZ2V0TGlzdCA9IE5JTDsKKwkJ cmFuZ2VTZXRFeHByID0gKEV4cHIgKikgdHJhbnNmb3JtRXhwcihwc3RhdGUsIChOb2RlICop IHJhbmdlU2V0RXhwciwgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9OKTsKKwkJdGxlID0gbWFr ZVRhcmdldEVudHJ5KHJhbmdlU2V0RXhwciwKKwkJCQkJCQkgIHJhbmdlX2F0dG5vLAorCQkJ CQkJCSAgcmFuZ2VfbmFtZSwKKwkJCQkJCQkgIGZhbHNlKTsKKworCQl0YXJnZXRMaXN0ID0g bGFwcGVuZCh0YXJnZXRMaXN0LCB0bGUpOworCisJCS8qIE1hcmsgdGhlIHJhbmdlIGNvbHVt biBhcyByZXF1aXJpbmcgdXBkYXRlIHBlcm1pc3Npb25zICovCisJCXRhcmdldF9wZXJtaW5m by0+dXBkYXRlZENvbHMgPSBibXNfYWRkX21lbWJlcih0YXJnZXRfcGVybWluZm8tPnVwZGF0 ZWRDb2xzLAorCQkJCQkJCQkJCQkJCSAgcmFuZ2VfYXR0bm8gLSBGaXJzdExvd0ludmFsaWRI ZWFwQXR0cmlidXRlTnVtYmVyKTsKKworCQlyZXN1bHQtPnJhbmdlU2V0ID0gdGFyZ2V0TGlz dDsKKwl9CisJZWxzZQorCQlyZXN1bHQtPnJhbmdlU2V0ID0gTklMOworCisJcmVzdWx0LT5y YW5nZV9uYW1lID0gcmFuZ2VfbmFtZTsKKworCXJldHVybiByZXN1bHQ7Cit9CiAKIC8qCiAg KiBCdWlsZE9uQ29uZmxpY3RFeGNsdWRlZFRhcmdldGxpc3QKQEAgLTI0MDksNiArMjU1Myw3 IEBAIHRyYW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10 ICpzdG10KQogewogCVF1ZXJ5CSAgICpxcnkgPSBtYWtlTm9kZShRdWVyeSk7CiAJUGFyc2VO YW1lc3BhY2VJdGVtICpuc2l0ZW07CisJTm9kZQkgICAqd2hlcmVDbGF1c2U7CiAJTm9kZQkg ICAqcXVhbDsKIAogCXFyeS0+Y29tbWFuZFR5cGUgPSBDTURfVVBEQVRFOwpAQCAtMjQyNiw2 ICsyNTcxLDEwIEBAIHRyYW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBV cGRhdGVTdG10ICpzdG10KQogCQkJCQkJCQkJCSBzdG10LT5yZWxhdGlvbi0+aW5oLAogCQkJ CQkJCQkJCSB0cnVlLAogCQkJCQkJCQkJCSBBQ0xfVVBEQVRFKTsKKworCWlmIChzdG10LT5m b3JQb3J0aW9uT2YpCisJCXFyeS0+Zm9yUG9ydGlvbk9mID0gdHJhbnNmb3JtRm9yUG9ydGlv bk9mQ2xhdXNlKHBzdGF0ZSwgcXJ5LT5yZXN1bHRSZWxhdGlvbiwgc3RtdC0+Zm9yUG9ydGlv bk9mLCB0cnVlKTsKKwogCW5zaXRlbSA9IHBzdGF0ZS0+cF90YXJnZXRfbnNpdGVtOwogCiAJ Lyogc3VicXVlcmllcyBpbiBGUk9NIGNhbm5vdCBhY2Nlc3MgdGhlIHJlc3VsdCByZWxhdGlv biAqLwpAQCAtMjQ0Miw3ICsyNTkxLDggQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0 YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAJbnNpdGVtLT5wX2xhdGVyYWxfb25s eSA9IGZhbHNlOwogCW5zaXRlbS0+cF9sYXRlcmFsX29rID0gdHJ1ZTsKIAotCXF1YWwgPSB0 cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUsIHN0bXQtPndoZXJlQ2xhdXNlLAorCXdoZXJl Q2xhdXNlID0gYWRkRm9yUG9ydGlvbk9mV2hlcmVDb25kaXRpb25zKHFyeSwgc3RtdC0+Zm9y UG9ydGlvbk9mLCBzdG10LT53aGVyZUNsYXVzZSk7CisJcXVhbCA9IHRyYW5zZm9ybVdoZXJl Q2xhdXNlKHBzdGF0ZSwgd2hlcmVDbGF1c2UsCiAJCQkJCQkJCUVYUFJfS0lORF9XSEVSRSwg IldIRVJFIik7CiAKIAlxcnktPnJldHVybmluZ0xpc3QgPSB0cmFuc2Zvcm1SZXR1cm5pbmdM aXN0KHBzdGF0ZSwgc3RtdC0+cmV0dXJuaW5nTGlzdCk7CkBAIC0yNDUxLDcgKzI2MDEsNyBA QCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVXBkYXRlU3RtdCAq c3RtdCkKIAkgKiBOb3cgd2UgYXJlIGRvbmUgd2l0aCBTRUxFQ1QtbGlrZSBwcm9jZXNzaW5n LCBhbmQgY2FuIGdldCBvbiB3aXRoCiAJICogdHJhbnNmb3JtaW5nIHRoZSB0YXJnZXQgbGlz dCB0byBtYXRjaCB0aGUgVVBEQVRFIHRhcmdldCBjb2x1bW5zLgogCSAqLwotCXFyeS0+dGFy Z2V0TGlzdCA9IHRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0YXRlLCBzdG10LT50YXJn ZXRMaXN0KTsKKwlxcnktPnRhcmdldExpc3QgPSB0cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0 KHBzdGF0ZSwgc3RtdC0+dGFyZ2V0TGlzdCwgcXJ5LT5mb3JQb3J0aW9uT2YpOwogCiAJcXJ5 LT5ydGFibGUgPSBwc3RhdGUtPnBfcnRhYmxlOwogCXFyeS0+cnRlcGVybWluZm9zID0gcHN0 YXRlLT5wX3J0ZXBlcm1pbmZvczsKQEAgLTI0NzAsNyArMjYyMCw3IEBAIHRyYW5zZm9ybVVw ZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10KQogICoJaGFu ZGxlIFNFVCBjbGF1c2UgaW4gVVBEQVRFL01FUkdFL0lOU0VSVCAuLi4gT04gQ09ORkxJQ1Qg VVBEQVRFCiAgKi8KIExpc3QgKgotdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQYXJzZVN0 YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlzdCkKK3RyYW5zZm9ybVVwZGF0ZVRhcmdldExp c3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcmlnVGxpc3QsIEZvclBvcnRpb25PZkV4 cHIgKmZvclBvcnRpb25PZikKIHsKIAlMaXN0CSAgICp0bGlzdCA9IE5JTDsKIAlSVEVQZXJt aXNzaW9uSW5mbyAqdGFyZ2V0X3Blcm1pbmZvOwpAQCAtMjUyMCw2ICsyNjcwLDIxIEBAIHRy YW5zZm9ybVVwZGF0ZVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcmln VGxpc3QpCiAJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocHN0YXRlLT5wX3Rhcmdl dF9yZWxhdGlvbikpLAogCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3JpZ1Rh cmdldC0+bG9jYXRpb24pKSk7CiAKKwkJLyoKKwkJICogSWYgdGhpcyBpcyBhIEZPUiBQT1JU SU9OIE9GIHVwZGF0ZSwKKwkJICogZm9yYmlkIGRpcmVjdGx5IHNldHRpbmcgdGhlIHJhbmdl IGNvbHVtbiwKKwkJICogc2luY2UgdGhhdCB3b3VsZCBjb25mbGljdCB3aXRoIHRoZSBpbXBs aWNpdCB1cGRhdGVzLgorCQkgKi8KKwkJaWYgKGZvclBvcnRpb25PZiAhPSBOVUxMKQorCQl7 CisJCQlpZiAoYXR0cm5vID09IGZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5vKQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJCQkgZXJybXNnKCJjYW4ndCBkaXJlY3RseSBhc3NpZ24gdG8gXCIlc1wiIGlu IGEgRk9SIFBPUlRJT04gT0YgdXBkYXRlIiwKKwkJCQkJCQkJb3JpZ1RhcmdldC0+bmFtZSks CisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3JpZ1RhcmdldC0+bG9jYXRp b24pKSk7CisJCX0KKwogCQl1cGRhdGVUYXJnZXRMaXN0RW50cnkocHN0YXRlLCB0bGUsIG9y aWdUYXJnZXQtPm5hbWUsCiAJCQkJCQkJICBhdHRybm8sCiAJCQkJCQkJICBvcmlnVGFyZ2V0 LT5pbmRpcmVjdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkg Yi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDlhNmYzZjY0N2EuLjk4NTQ2YjIx ZTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMjU4LDYgKzI1OCw3IEBAIHN0YXRpYyBOb2RlICpt YWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBO b2RlICpxdWVyeSk7CiAJUmFuZ2VWYXIgICAqcmFuZ2U7CiAJSW50b0NsYXVzZSAqaW50bzsK IAlXaXRoQ2xhdXNlICp3aXRoOworCUZvclBvcnRpb25PZkNsYXVzZSAqZm9ycG9ydGlvbm9m OwogCUluZmVyQ2xhdXNlCSppbmZlcjsKIAlPbkNvbmZsaWN0Q2xhdXNlICpvbmNvbmZsaWN0 OwogCUFfSW5kaWNlcyAgKmFpbmQ7CkBAIC01NTAsNiArNTUxLDcgQEAgc3RhdGljIE5vZGUg Km1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMs IE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxyYW5nZT4JcmVsYXRpb25fZXhwcgogJXR5cGUgPHJh bmdlPglleHRlbmRlZF9yZWxhdGlvbl9leHByCiAldHlwZSA8cmFuZ2U+CXJlbGF0aW9uX2V4 cHJfb3B0X2FsaWFzCisldHlwZSA8Zm9ycG9ydGlvbm9mPiBmb3JfcG9ydGlvbl9vZl9jbGF1 c2UKICV0eXBlIDxub2RlPgl0YWJsZXNhbXBsZV9jbGF1c2Ugb3B0X3JlcGVhdGFibGVfY2xh dXNlCiAldHlwZSA8dGFyZ2V0Pgl0YXJnZXRfZWwgc2V0X3RhcmdldCBpbnNlcnRfY29sdW1u X2l0ZW0KIApAQCAtNzQ2LDcgKzc0OCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAKIAlQQVJBTExFTCBQQVJBTUVURVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBU1NJ TkcgUEFTU1dPUkQKIAlQRVJJT0QgUExBQ0lORyBQTEFOUyBQT0xJQ1kKLQlQT1NJVElPTiBQ UkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJFUEFSRUQgUFJJTUFSWQor CVBPUlRJT04gUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJF IFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VE VVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElPTgogCiAJUVVPVEUKQEAgLTgyNyw2 ICs4MjksMTYgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIg KnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICVub25hc3NvYwlLRVlT IE9CSkVDVF9QIFNDQUxBUiBWQUxVRV9QCiAlbm9uYXNzb2MJV0lUSCBXSVRIT1VUCiAKKy8q CisgKiBXZSBuZWVkIHRvIGhhbmRsZSB0aGlzIHNoaWZ0L3JlZHVjZSBjb25mbGljdDoKKyAq IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gSU5URVJWQUwgWUVBUiBUTyBNT05USCBU TyBmb28uCisgKiBUaGlzIGlzIGJhc2ljYWxseSB0aGUgY2xhc3NpYyAiZGFuZ2xpbmcgZWxz ZSIgcHJvYmxlbSwgYW5kIHdlIHdhbnQgYQorICogc2ltaWxhciByZXNvbHV0aW9uOiB0cmVh dCB0aGUgVE8gYXMgcGFydCBvZiB0aGUgSU5URVJWQUwsIG5vdCBhcyBwYXJ0IG9mCisgKiB0 aGUgRlJPTSAuLi4gVE8gLi4uLiBVc2VycyBjYW4gYWRkIHBhcmVudGhlc2VzIGlmIHRoYXQn cyBhIHByb2JsZW0uCisgKiBUTyBqdXN0IG5lZWRzIHRvIGJlIGhpZ2hlciBwcmVjZWRlbmNl IHRoYW4gWUVBUl9QIGV0Yy4KKyAqLworJW5vbmFzc29jIFlFQVJfUCBNT05USF9QIERBWV9Q IEhPVVJfUCBNSU5VVEVfUAorJW5vbmFzc29jIFRPCiAvKgogICogVG8gc3VwcG9ydCB0YXJn ZXRfZWwgd2l0aG91dCBBUywgaXQgdXNlZCB0byBiZSBuZWNlc3NhcnkgdG8gYXNzaWduIElE RU5UIGFuCiAgKiBleHBsaWNpdCBwcmVjZWRlbmNlIGp1c3QgbGVzcyB0aGFuIE9wLiAgV2hp bGUgdGhhdCdzIG5vdCByZWFsbHkgbmVjZXNzYXJ5CkBAIC0xMjIwMiwxNCArMTIyMTQsMTYg QEAgcmV0dXJuaW5nX2NsYXVzZToKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogRGVs ZXRlU3RtdDogb3B0X3dpdGhfY2xhdXNlIERFTEVURV9QIEZST00gcmVsYXRpb25fZXhwcl9v cHRfYWxpYXMKKwkJCWZvcl9wb3J0aW9uX29mX2NsYXVzZQogCQkJdXNpbmdfY2xhdXNlIHdo ZXJlX29yX2N1cnJlbnRfY2xhdXNlIHJldHVybmluZ19jbGF1c2UKIAkJCQl7CiAJCQkJCURl bGV0ZVN0bXQgKm4gPSBtYWtlTm9kZShEZWxldGVTdG10KTsKIAogCQkJCQluLT5yZWxhdGlv biA9ICQ0OwotCQkJCQluLT51c2luZ0NsYXVzZSA9ICQ1OwotCQkJCQluLT53aGVyZUNsYXVz ZSA9ICQ2OwotCQkJCQluLT5yZXR1cm5pbmdMaXN0ID0gJDc7CisJCQkJCW4tPmZvclBvcnRp b25PZiA9ICQ1OworCQkJCQluLT51c2luZ0NsYXVzZSA9ICQ2OworCQkJCQluLT53aGVyZUNs YXVzZSA9ICQ3OworCQkJCQluLT5yZXR1cm5pbmdMaXN0ID0gJDg7CiAJCQkJCW4tPndpdGhD bGF1c2UgPSAkMTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KQEAgLTEyMjcyLDYg KzEyMjg2LDcgQEAgb3B0X25vd2FpdF9vcl9za2lwOgogICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwogCiBVcGRhdGVTdG10OiBvcHRfd2l0aF9jbGF1c2UgVVBEQVRFIHJlbGF0aW9uX2V4 cHJfb3B0X2FsaWFzCisJCQlmb3JfcG9ydGlvbl9vZl9jbGF1c2UKIAkJCVNFVCBzZXRfY2xh dXNlX2xpc3QKIAkJCWZyb21fY2xhdXNlCiAJCQl3aGVyZV9vcl9jdXJyZW50X2NsYXVzZQpA QCAtMTIyODAsMTAgKzEyMjk1LDExIEBAIFVwZGF0ZVN0bXQ6IG9wdF93aXRoX2NsYXVzZSBV UERBVEUgcmVsYXRpb25fZXhwcl9vcHRfYWxpYXMKIAkJCQkJVXBkYXRlU3RtdCAqbiA9IG1h a2VOb2RlKFVwZGF0ZVN0bXQpOwogCiAJCQkJCW4tPnJlbGF0aW9uID0gJDM7Ci0JCQkJCW4t PnRhcmdldExpc3QgPSAkNTsKLQkJCQkJbi0+ZnJvbUNsYXVzZSA9ICQ2OwotCQkJCQluLT53 aGVyZUNsYXVzZSA9ICQ3OwotCQkJCQluLT5yZXR1cm5pbmdMaXN0ID0gJDg7CisJCQkJCW4t PmZvclBvcnRpb25PZiA9ICQ0OworCQkJCQluLT50YXJnZXRMaXN0ID0gJDY7CisJCQkJCW4t PmZyb21DbGF1c2UgPSAkNzsKKwkJCQkJbi0+d2hlcmVDbGF1c2UgPSAkODsKKwkJCQkJbi0+ cmV0dXJuaW5nTGlzdCA9ICQ5OwogCQkJCQluLT53aXRoQ2xhdXNlID0gJDE7CiAJCQkJCSQk ID0gKE5vZGUgKikgbjsKIAkJCQl9CkBAIC0xMzcxOSw2ICsxMzczNSwxOSBAQCByZWxhdGlv bl9leHByX29wdF9hbGlhczogcmVsYXRpb25fZXhwcgkJCQkJJXByZWMgVU1JTlVTCiAJCQkJ fQogCQk7CiAKK2Zvcl9wb3J0aW9uX29mX2NsYXVzZToKKwkJCUZPUiBQT1JUSU9OIE9GIENv bElkIEZST00gYV9leHByIFRPIGFfZXhwcgorCQkJCXsKKwkJCQkJRm9yUG9ydGlvbk9mQ2xh dXNlICpuID0gbWFrZU5vZGUoRm9yUG9ydGlvbk9mQ2xhdXNlKTsKKwkJCQkJbi0+cmFuZ2Vf bmFtZSA9ICQ0OworCQkJCQluLT5yYW5nZV9uYW1lX2xvY2F0aW9uID0gQDQ7CisJCQkJCW4t PnRhcmdldF9zdGFydCA9ICQ2OworCQkJCQluLT50YXJnZXRfZW5kID0gJDg7CisJCQkJCSQk ID0gbjsKKwkJCQl9CisJCQl8IC8qRU1QVFkqLwkJCQkJeyAkJCA9IE5VTEw7IH0KKwkJOwor CiAvKgogICogVEFCTEVTQU1QTEUgZGVjb3JhdGlvbiBpbiBhIEZST00gaXRlbQogICovCkBA IC0xNzI4MSw2ICsxNzMxMCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgUEFTU1dP UkQKIAkJCXwgUExBTlMKIAkJCXwgUE9MSUNZCisJCQl8IFBPUlRJT04KIAkJCXwgUFJFQ0VE SU5HCiAJCQl8IFBSRVBBUkUKIAkJCXwgUFJFUEFSRUQKQEAgLTE3ODg1LDYgKzE3OTE1LDcg QEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBQTEFDSU5HCiAJCQl8IFBMQU5TCiAJCQl8 IFBPTElDWQorCQkJfCBQT1JUSU9OCiAJCQl8IFBPU0lUSU9OCiAJCQl8IFBSRUNFRElORwog CQkJfCBQUkVQQVJFCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdn LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKaW5kZXggOWJiYWQzM2ZiZC4u YmZmMTBjOWM3OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwpAQCAtNTc0LDYgKzU3NCwx MyBAQCBjaGVja19hZ2dsZXZlbHNfYW5kX2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTm9kZSAqZXhwcikKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJCWVycmtp bmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9O OgorCQkJaWYgKGlzQWdnKQorCQkJCWVyciA9IF8oImFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYXJl IG5vdCBhbGxvd2VkIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb25zIik7CisJCQllbHNl CisJCQkJZXJyID0gXygiZ3JvdXBpbmcgb3BlcmF0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4g Rk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKworCQkJYnJlYWs7CiAKIAkJCS8qCiAJ CQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28g dGhhdCB0aGUKQEAgLTk2NCw2ICs5NzEsOSBAQCB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbChQ YXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0Z1bmMgKndmdW5jLAogCQljYXNlIEVYUFJfS0lO RF9DWUNMRV9NQVJLOgogCQkJZXJya2luZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBF WFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rpb25z IGFyZSBub3QgYWxsb3dlZCBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9ucyIpOworCQkJ YnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1 bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9jb2xsYXRlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29sbGF0 ZS5jCmluZGV4IGM0ODBjZTM2ODIuLmM2MzMwMWYwZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2NvbGxhdGUuYwpAQCAtNDg0LDYgKzQ4NCw3IEBAIGFzc2lnbl9jb2xsYXRpb25zX3dh bGtlcihOb2RlICpub2RlLCBhc3NpZ25fY29sbGF0aW9uc19jb250ZXh0ICpjb250ZXh0KQog CQljYXNlIFRfSm9pbkV4cHI6CiAJCWNhc2UgVF9Gcm9tRXhwcjoKIAkJY2FzZSBUX09uQ29u ZmxpY3RFeHByOgorCQljYXNlIFRfRm9yUG9ydGlvbk9mRXhwcjoKIAkJY2FzZSBUX1NvcnRH cm91cENsYXVzZToKIAkJY2FzZSBUX01lcmdlQWN0aW9uOgogCQkJKHZvaWQpIGV4cHJlc3Np b25fdHJlZV93YWxrZXIobm9kZSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDY0 YzU4MmMzNDQuLmZlZTZiZDkwMmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAt NTY2LDYgKzU2Niw5IEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUs IENvbHVtblJlZiAqY3JlZikKIAkJY2FzZSBFWFBSX0tJTkRfUEFSVElUSU9OX0JPVU5EOgog CQkJZXJyID0gXygiY2Fubm90IHVzZSBjb2x1bW4gcmVmZXJlbmNlIGluIHBhcnRpdGlvbiBi b3VuZCBleHByZXNzaW9uIik7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRF X1BPUlRJT046CisJCQllcnIgPSBfKCJjYW5ub3QgdXNlIGNvbHVtbiByZWZlcmVuY2UgaW4g Rk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbiIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkg KiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhh dCB0aGUKQEAgLTE4MTMsNiArMTgxNiw5IEBAIHRyYW5zZm9ybVN1YkxpbmsoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJsaW5rKQogCQljYXNlIEVYUFJfS0lORF9HRU5FUkFU RURfQ09MVU1OOgogCQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBjb2x1bW4g Z2VuZXJhdGlvbiBleHByZXNzaW9uIik7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRf VVBEQVRFX1BPUlRJT046CisJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIEZP UiBQT1JUSU9OIE9GIGV4cHJlc3Npb24iKTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICog VGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQg dGhlCkBAIC0zMTA0LDYgKzMxMTAsOCBAQCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJL aW5kIGV4cHJLaW5kKQogCQkJcmV0dXJuICJVUERBVEUiOwogCQljYXNlIEVYUFJfS0lORF9N RVJHRV9XSEVOOgogCQkJcmV0dXJuICJNRVJHRSBXSEVOIjsKKwkJY2FzZSBFWFBSX0tJTkRf VVBEQVRFX1BPUlRJT046CisJCQlyZXR1cm4gIkZPUiBQT1JUSU9OIE9GIjsKIAkJY2FzZSBF WFBSX0tJTkRfR1JPVVBfQlk6CiAJCQlyZXR1cm4gIkdST1VQIEJZIjsKIAkJY2FzZSBFWFBS X0tJTkRfT1JERVJfQlk6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf ZnVuYy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwppbmRleCA2YzI5NDcx YmIzLi5jZWYwYmVjNDZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf ZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKQEAgLTI2NTYs NiArMjY1Niw5IEBAIGNoZWNrX3NyZl9jYWxsX3BsYWNlbWVudChQYXJzZVN0YXRlICpwc3Rh dGUsIE5vZGUgKmxhc3Rfc3JmLCBpbnQgbG9jYXRpb24pCiAJCWNhc2UgRVhQUl9LSU5EX0NZ Q0xFX01BUks6CiAJCQllcnJraW5kID0gdHJ1ZTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJf S0lORF9VUERBVEVfUE9SVElPTjoKKwkJCWVyciA9IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rp b25zIGFyZSBub3QgYWxsb3dlZCBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9ucyIpOwor CQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRl ZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9tZXJnZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21lcmdl LmMKaW5kZXggOTFiMTE1NmQ5OS4uYzAwODAyYWUyMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX21lcmdlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X21lcmdlLmMKQEAgLTM3Miw3ICszNzIsNyBAQCB0cmFuc2Zvcm1NZXJnZVN0bXQoUGFyc2VT dGF0ZSAqcHN0YXRlLCBNZXJnZVN0bXQgKnN0bXQpCiAJCQkJCXBzdGF0ZS0+cF9pc19pbnNl cnQgPSBmYWxzZTsKIAkJCQkJYWN0aW9uLT50YXJnZXRMaXN0ID0KIAkJCQkJCXRyYW5zZm9y bVVwZGF0ZVRhcmdldExpc3QocHN0YXRlLAotCQkJCQkJCQkJCQkJICBtZXJnZVdoZW5DbGF1 c2UtPnRhcmdldExpc3QpOworCQkJCQkJCQkJCQkJICBtZXJnZVdoZW5DbGF1c2UtPnRhcmdl dExpc3QsIE5VTEwpOwogCQkJCX0KIAkJCQlicmVhazsKIAkJCWNhc2UgQ01EX0RFTEVURToK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyBiL3Ny Yy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwppbmRleCA0MWEzNjIzMTBhLi4y NjYyYWQ4NGNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5k bGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCkBAIC0z NDU5LDYgKzM0NTksMzAgQEAgcmV3cml0ZVRhcmdldFZpZXcoUXVlcnkgKnBhcnNldHJlZSwg UmVsYXRpb24gdmlldykKIAkJCQkJCQkJCSAgJnBhcnNldHJlZS0+aGFzU3ViTGlua3MpOwog CX0KIAorCWlmIChwYXJzZXRyZWUtPmZvclBvcnRpb25PZiAmJiBwYXJzZXRyZWUtPmNvbW1h bmRUeXBlID09IENNRF9VUERBVEUpCisJeworCQkvKgorCQkgKiBMaWtlIHRoZSBJTlNFUlQv VVBEQVRFIGNvZGUgYWJvdmUsIHVwZGF0ZSB0aGUgcmVzbm9zIGluIHRoZQorCQkgKiBhdXhp bGlhcnkgVVBEQVRFIHRhcmdldGxpc3QgdG8gcmVmZXIgdG8gY29sdW1ucyBvZiB0aGUgYmFz ZQorCQkgKiByZWxhdGlvbi4KKwkJICovCisJCWZvcmVhY2gobGMsIHBhcnNldHJlZS0+Zm9y UG9ydGlvbk9mLT5yYW5nZVNldCkKKwkJeworCQkJVGFyZ2V0RW50cnkgKnRsZSA9IChUYXJn ZXRFbnRyeSAqKSBsZmlyc3QobGMpOworCQkJVGFyZ2V0RW50cnkgKnZpZXdfdGxlOworCisJ CQlpZiAodGxlLT5yZXNqdW5rKQorCQkJCWNvbnRpbnVlOworCisJCQl2aWV3X3RsZSA9IGdl dF90bGVfYnlfcmVzbm8odmlld190YXJnZXRsaXN0LCB0bGUtPnJlc25vKTsKKwkJCWlmICh2 aWV3X3RsZSAhPSBOVUxMICYmICF2aWV3X3RsZS0+cmVzanVuayAmJiBJc0Eodmlld190bGUt PmV4cHIsIFZhcikpCisJCQkJdGxlLT5yZXNubyA9ICgoVmFyICopIHZpZXdfdGxlLT5leHBy KS0+dmFyYXR0bm87CisJCQllbHNlCisJCQkJZWxvZyhFUlJPUiwgImF0dHJpYnV0ZSBudW1i ZXIgJWQgbm90IGZvdW5kIGluIHZpZXcgdGFyZ2V0bGlzdCIsCisJCQkJCSB0bGUtPnJlc25v KTsKKwkJfQorCX0KKwogCS8qCiAJICogRm9yIFVQREFURS9ERUxFVEUsIHB1bGwgdXAgYW55 IFdIRVJFIHF1YWxzIGZyb20gdGhlIHZpZXcuICBXZSBrbm93IHRoYXQKIAkgKiBhbnkgVmFy cyBpbiB0aGUgcXVhbHMgbXVzdCByZWZlcmVuY2UgdGhlIG9uZSBiYXNlIHJlbGF0aW9uLCBz byB3ZSBuZWVkCkBAIC0zNzk3LDYgKzM4MjEsMjIgQEAgUmV3cml0ZVF1ZXJ5KFF1ZXJ5ICpw YXJzZXRyZWUsIExpc3QgKnJld3JpdGVfZXZlbnRzLCBpbnQgb3JpZ19ydF9sZW5ndGgpCiAJ CWVsc2UgaWYgKGV2ZW50ID09IENNRF9VUERBVEUpCiAJCXsKIAkJCUFzc2VydChwYXJzZXRy ZWUtPm92ZXJyaWRlID09IE9WRVJSSURJTkdfTk9UX1NFVCk7CisJCQkvKgorCQkJICogVXBk YXRlIEZPUiBQT1JUSU9OIE9GIGNvbHVtbihzKSBhdXRvbWF0aWNhbGx5LiBEb24ndAorCQkJ ICogZG8gdGhpcyB1bnRpbCB3ZSdyZSBkb25lIHJld3JpdGluZyBhIHZpZXcgdXBkYXRlLCBz bworCQkJICogdGhhdCB3ZSBkb24ndCBhZGQgdGhlIHNhbWUgdXBkYXRlIG9uIHRoZSByZWN1 cnNpb24uCisJCQkgKi8KKwkJCWlmIChwYXJzZXRyZWUtPmZvclBvcnRpb25PZiAmJgorCQkJ CXJ0X2VudHJ5X3JlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9WSUVXKQor CQkJeworCQkJCUxpc3RDZWxsICp0bDsKKwkJCQlmb3JlYWNoKHRsLCBwYXJzZXRyZWUtPmZv clBvcnRpb25PZi0+cmFuZ2VTZXQpCisJCQkJeworCQkJCQlUYXJnZXRFbnRyeSAqdGxlID0g KFRhcmdldEVudHJ5ICopIGxmaXJzdCh0bCk7CisJCQkJCXBhcnNldHJlZS0+dGFyZ2V0TGlz dCA9IGxhcHBlbmQocGFyc2V0cmVlLT50YXJnZXRMaXN0LCB0bGUpOworCQkJCX0KKwkJCX0K KwogCQkJcGFyc2V0cmVlLT50YXJnZXRMaXN0ID0KIAkJCQlyZXdyaXRlVGFyZ2V0TGlzdElV KHBhcnNldHJlZS0+dGFyZ2V0TGlzdCwKIAkJCQkJCQkJCXBhcnNldHJlZS0+Y29tbWFuZFR5 cGUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNr ZW5kL3Rjb3AvdXRpbGl0eS5jCmluZGV4IGUzY2NmNmM3ZjcuLjY3ODFlNTUwMjAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rj b3AvdXRpbGl0eS5jCkBAIC0xNTYwLDcgKzE1NjAsNyBAQCBQcm9jZXNzVXRpbGl0eVNsb3co UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJdHJ1ZSwJLyogY2hlY2tfcmlnaHRzICov CiAJCQkJCQkJCQl0cnVlLAkvKiBjaGVja19ub3RfaW5fdXNlICovCiAJCQkJCQkJCQlmYWxz ZSwJLyogc2tpcF9idWlsZCAqLwotCQkJCQkJCQkJZmFsc2UpOyAvKiBxdWlldCAqLworCQkJ CQkJCQkJZmFsc2UpOwkvKiBxdWlldCAqLwogCiAJCQkJCS8qCiAJCQkJCSAqIEFkZCB0aGUg Q1JFQVRFIElOREVYIG5vZGUgaXRzZWxmIHRvIHN0YXNoIHJpZ2h0IGF3YXk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvTWFrZWZpbGUKaW5kZXggMTk5ZWFlNTI1ZC4uZDA0Yzc1YjM5OCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9NYWtlZmlsZQpAQCAtNzgsNiArNzgsNyBAQCBPQkpTID0gXAogCW9yYWNsZV9j b21wYXQubyBcCiAJb3JkZXJlZHNldGFnZ3MubyBcCiAJcGFydGl0aW9uZnVuY3MubyBcCisJ cGVyaW9kLm8gXAogCXBnX2xvY2FsZS5vIFwKIAlwZ19sc24ubyBcCiAJcGdfdXBncmFkZV9z dXBwb3J0Lm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BlcmlvZC5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BlcmlvZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjBlZDQzMDRlMTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMKQEAgLTAsMCArMSw1NiBAQAorLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgorICogcGVyaW9kLmMKKyAqCSAgRnVuY3Rpb25zIHRvIHN1cHBv cnQgcGVyaW9kcy4KKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIw MjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZv cm5pYQorICoKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC91dGls cy9hZHQvcGVyaW9kLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1 ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgorI2lu Y2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJub2Rlcy9wcmltbm9kZXMuaCIKKyNpbmNsdWRl ICJ1dGlscy9mbWdycHJvdG9zLmgiCisjaW5jbHVkZSAidXRpbHMvcGVyaW9kLmgiCisjaW5j bHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgorCitEYXR1bSBwZXJpb2RfdG9fcmFuZ2UoVHVw bGVUYWJsZVNsb3QgKnNsb3QsIGludCBzdGFydGF0dG5vLCBpbnQgZW5kYXR0bm8sIE9pZCBy YW5nZXR5cGUpCit7CisJRGF0dW0gc3RhcnR2YWx1ZTsKKwlEYXR1bSBlbmR2YWx1ZTsKKwlE YXR1bSByZXN1bHQ7CisJYm9vbAlzdGFydGlzbnVsbDsKKwlib29sCWVuZGlzbnVsbDsKKwlM T0NBTF9GQ0lORk8oZmNpbmZvLCAyKTsKKwlGbWdySW5mbwlmbGluZm87CisJRnVuY0V4cHIg ICAqZjsKKworCUluaXRGdW5jdGlvbkNhbGxJbmZvRGF0YSgqZmNpbmZvLCAmZmxpbmZvLCAy LCBJbnZhbGlkT2lkLCBOVUxMLCBOVUxMKTsKKwlmID0gbWFrZU5vZGUoRnVuY0V4cHIpOwor CWYtPmZ1bmNyZXN1bHR0eXBlID0gcmFuZ2V0eXBlOworCWZsaW5mby5mbl9leHByID0gKE5v ZGUgKikgZjsKKwlmbGluZm8uZm5fZXh0cmEgPSBOVUxMOworCisJLyogY29tcHV0ZSBvbGR2 YWx1ZSAqLworCXN0YXJ0dmFsdWUgPSBzbG90X2dldGF0dHIoc2xvdCwgc3RhcnRhdHRubywg JnN0YXJ0aXNudWxsKTsKKwllbmR2YWx1ZSA9IHNsb3RfZ2V0YXR0cihzbG90LCBlbmRhdHRu bywgJmVuZGlzbnVsbCk7CisKKwlmY2luZm8tPmFyZ3NbMF0udmFsdWUgPSBzdGFydHZhbHVl OworCWZjaW5mby0+YXJnc1swXS5pc251bGwgPSBzdGFydGlzbnVsbDsKKwlmY2luZm8tPmFy Z3NbMV0udmFsdWUgPSBlbmR2YWx1ZTsKKwlmY2luZm8tPmFyZ3NbMV0uaXNudWxsID0gZW5k aXNudWxsOworCisJcmVzdWx0ID0gcmFuZ2VfY29uc3RydWN0b3IyKGZjaW5mbyk7CisJaWYg KGZjaW5mby0+aXNudWxsKQorCQllbG9nKEVSUk9SLCAiZnVuY3Rpb24gJXUgcmV0dXJuZWQg TlVMTCIsIGZsaW5mby5mbl9vaWQpOworCisJcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcmFuZ2V0eXBlcy5jCmluZGV4IDI0YmFkNTI5MjMuLjQzYTU4MGI1YWUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYwpAQCAtMTIwNiw2ICsxMjA2LDQ4IEBA IHJhbmdlX3NwbGl0X2ludGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgY29uc3Qg UmFuZ2VUeXBlICpyMSwgY29uc3QgUmFuZ2VUCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgor ICogcmFuZ2VfbGVmdG92ZXJfaW50ZXJuYWwgLSBTZXRzIG91dHB1dDEgYW5kIG91dHB1dDIg dG8gdGhlIHJlbWFpbmluZyBwYXJ0cyBvZiByMQorICogYWZ0ZXIgc3VidHJhY3RpbmcgcjIs IG9yIGlmIG5vdGhpbmcgaXMgbGVmdCB0aGVuIHRvIHRoZSBlbXB0eSByYW5nZS4KKyAqIG91 dHB1dDEgd2lsbCBhbHdheXMgYmUgImJlZm9yZSIgcjIgYW5kIG91dHB1dDIgImFmdGVyIi4K KyAqLwordm9pZAorcmFuZ2VfbGVmdG92ZXJfaW50ZXJuYWwoVHlwZUNhY2hlRW50cnkgKnR5 cGNhY2hlLCBjb25zdCBSYW5nZVR5cGUgKnIxLAorCQkJCQkJY29uc3QgUmFuZ2VUeXBlICpy MiwgUmFuZ2VUeXBlICoqb3V0cHV0MSwgUmFuZ2VUeXBlICoqb3V0cHV0MikKK3sKKwlSYW5n ZUJvdW5kCWxvd2VyMSwKKwkJCQlsb3dlcjI7CisJUmFuZ2VCb3VuZAl1cHBlcjEsCisJCQkJ dXBwZXIyOworCWJvb2wJCWVtcHR5MSwKKwkJCQllbXB0eTI7CisKKwlyYW5nZV9kZXNlcmlh bGl6ZSh0eXBjYWNoZSwgcjEsICZsb3dlcjEsICZ1cHBlcjEsICZlbXB0eTEpOworCXJhbmdl X2Rlc2VyaWFsaXplKHR5cGNhY2hlLCByMiwgJmxvd2VyMiwgJnVwcGVyMiwgJmVtcHR5Mik7 CisKKwlpZiAocmFuZ2VfY21wX2JvdW5kcyh0eXBjYWNoZSwgJmxvd2VyMSwgJmxvd2VyMikg PCAwKQorCXsKKwkJbG93ZXIyLmluY2x1c2l2ZSA9ICFsb3dlcjIuaW5jbHVzaXZlOworCQls b3dlcjIubG93ZXIgPSBmYWxzZTsKKwkJKm91dHB1dDEgPSBtYWtlX3JhbmdlKHR5cGNhY2hl LCAmbG93ZXIxLCAmbG93ZXIyLCBmYWxzZSwgTlVMTCk7CisJfQorCWVsc2UKKwl7CisJCSpv dXRwdXQxID0gbWFrZV9lbXB0eV9yYW5nZSh0eXBjYWNoZSk7CisJfQorCisJaWYgKHJhbmdl X2NtcF9ib3VuZHModHlwY2FjaGUsICZ1cHBlcjEsICZ1cHBlcjIpID4gMCkKKwl7CisJCXVw cGVyMi5pbmNsdXNpdmUgPSAhdXBwZXIyLmluY2x1c2l2ZTsKKwkJdXBwZXIyLmxvd2VyID0g dHJ1ZTsKKwkJKm91dHB1dDIgPSBtYWtlX3JhbmdlKHR5cGNhY2hlLCAmdXBwZXIyLCAmdXBw ZXIxLCBmYWxzZSwgTlVMTCk7CisJfQorCWVsc2UKKwl7CisJCSpvdXRwdXQyID0gbWFrZV9l bXB0eV9yYW5nZSh0eXBjYWNoZSk7CisJfQorfQorCiAvKiByYW5nZSAtPiByYW5nZSBhZ2dy ZWdhdGUgZnVuY3Rpb25zICovCiAKIERhdHVtCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmln Z2Vycy5jCmluZGV4IGQwMGM2ZTUzMzQuLjU1YjMyNDhiNzggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0yMjcsNiArMjI3LDcgQEAgc3RhdGljIGJvb2wgcmlf UGVyZm9ybUNoZWNrKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJCQkJ UklfUXVlcnlLZXkgKnFrZXksIFNQSVBsYW5QdHIgcXBsYW4sCiAJCQkJCQkJUmVsYXRpb24g ZmtfcmVsLCBSZWxhdGlvbiBwa19yZWwsCiAJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKm9sZHNs b3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAorCQkJCQkJCWludCBmb3JQb3J0aW9uT2ZQ YXJhbSwgRGF0dW0gZm9yUG9ydGlvbk9mLAogCQkJCQkJCWJvb2wgZGV0ZWN0TmV3Um93cywg aW50IGV4cGVjdF9PSyk7CiBzdGF0aWMgdm9pZCByaV9FeHRyYWN0VmFsdWVzKFJlbGF0aW9u IHJlbCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJIGNvbnN0IFJJX0NvbnN0cmFp bnRJbmZvICpyaWluZm8sIGJvb2wgcmVsX2lzX3BrLApAQCAtMjM1LDYgKzIzNiwxMSBAQCBz dGF0aWMgdm9pZCByaV9SZXBvcnRWaW9sYXRpb24oY29uc3QgUklfQ29uc3RyYWludEluZm8g KnJpaW5mbywKIAkJCQkJCQkgICBSZWxhdGlvbiBwa19yZWwsIFJlbGF0aW9uIGZrX3JlbCwK IAkJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqdmlvbGF0b3JzbG90LCBUdXBsZURlc2MgdHVw ZGVzYywKIAkJCQkJCQkgICBpbnQgcXVlcnlubywgYm9vbCBwYXJ0Z29uZSkgcGdfYXR0cmli dXRlX25vcmV0dXJuKCk7CitzdGF0aWMgYm9vbCBmcG9fdGFyZ2V0c19wa19yYW5nZShjb25z dCBGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsCisJCQkJCQkJCSBjb25zdCBSSV9D b25zdHJhaW50SW5mbyAqcmlpbmZvKTsKK3N0YXRpYyBEYXR1bSByZXN0cmljdF9jYXNjYWRp bmdfcmFuZ2UoY29uc3QgRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsLAorCQkJCQkJ CQkJICBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAorCQkJCQkJCQkJICBUdXBs ZVRhYmxlU2xvdCAqb2xkc2xvdCk7CiAKIAogLyoKQEAgLTQ0NCw2ICs0NTAsNyBAQCBSSV9G S2V5X2NoZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkKIAlyaV9QZXJmb3JtQ2hlY2socmlp bmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCWZrX3JlbCwgcGtfcmVsLAogCQkJCQlOVUxMLCBu ZXdzbG90LAorCQkJCQktMSwgMCwKIAkJCQkJcGtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0g UkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSwKIAkJCQkJU1BJX09LX1NFTEVDVCk7CiAKQEAg LTYwMSw2ICs2MDgsNyBAQCByaV9DaGVja19Qa19NYXRjaChSZWxhdGlvbiBwa19yZWwsIFJl bGF0aW9uIGZrX3JlbCwKIAlyZXN1bHQgPSByaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtl eSwgcXBsYW4sCiAJCQkJCQkJIGZrX3JlbCwgcGtfcmVsLAogCQkJCQkJCSBvbGRzbG90LCBO VUxMLAorCQkJCQkJCSAtMSwgMCwKIAkJCQkJCQkgdHJ1ZSwJLyogdHJlYXQgbGlrZSB1cGRh dGUgKi8KIAkJCQkJCQkgU1BJX09LX1NFTEVDVCk7CiAKQEAgLTcwMCw2ICs3MDgsOCBAQCBy aV9yZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfbm9fYWN0aW9uKQog CVR1cGxlVGFibGVTbG90ICpvbGRzbG90OwogCVJJX1F1ZXJ5S2V5IHFrZXk7CiAJU1BJUGxh blB0cglxcGxhbjsKKwlpbnQJCQl0YXJnZXRSYW5nZVBhcmFtID0gLTE7CisJRGF0dW0JCXRh cmdldFJhbmdlID0gMDsKIAogCXJpaW5mbyA9IHJpX0ZldGNoQ29uc3RyYWludEluZm8odHJp Z2RhdGEtPnRnX3RyaWdnZXIsCiAJCQkJCQkJCQl0cmlnZGF0YS0+dGdfcmVsYXRpb24sIHRy dWUpOwpAQCAtNzk2LDkgKzgwNiwxNiBAQCByaV9yZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJp Z2RhdGEsIGJvb2wgaXNfbm9fYWN0aW9uKQogCS8qCiAJICogV2UgaGF2ZSBhIHBsYW4gbm93 LiBSdW4gaXQgdG8gY2hlY2sgZm9yIGV4aXN0aW5nIHJlZmVyZW5jZXMuCiAJICovCisJaWYg KHRyaWdkYXRhLT50Z190ZW1wb3JhbCkKKwl7CisJCXRhcmdldFJhbmdlUGFyYW0gPSByaWlu Zm8tPm5rZXlzIC0gMTsKKwkJdGFyZ2V0UmFuZ2UgPSByZXN0cmljdF9jYXNjYWRpbmdfcmFu Z2UodHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8sIG9sZHNsb3QpOworCX0KKwogCXJp X1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKIAkJCQkJZmtfcmVsLCBwa19y ZWwsCiAJCQkJCW9sZHNsb3QsIE5VTEwsCisJCQkJCXRhcmdldFJhbmdlUGFyYW0sIHRhcmdl dFJhbmdlLAogCQkJCQl0cnVlLAkJLyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KIAkJCQkJ U1BJX09LX1NFTEVDVCk7CiAKQEAgLTkwNSw2ICs5MjIsNyBAQCBSSV9GS2V5X2Nhc2NhZGVf ZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXks IHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJ CQkJLTEsIDAsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJ CQlTUElfT0tfREVMRVRFKTsKIApAQCAtMTAyNiw2ICsxMDQ0LDcgQEAgUklfRktleV9jYXNj YWRlX3VwZChQR19GVU5DVElPTl9BUkdTKQogCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZx a2V5LCBxcGxhbiwKIAkJCQkJZmtfcmVsLCBwa19yZWwsCiAJCQkJCW9sZHNsb3QsIG5ld3Ns b3QsCisJCQkJCS0xLCAwLAogCQkJCQl0cnVlLAkJLyogbXVzdCBkZXRlY3QgbmV3IHJvd3Mg Ki8KIAkJCQkJU1BJX09LX1VQREFURSk7CiAKQEAgLTEyNTgsNiArMTI3Nyw3IEBAIHJpX3Nl dChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQp CiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlma19yZWws IHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJLTEsIDAsCiAJCQkJCXRydWUs CQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElfT0tfVVBEQVRFKTsKIApA QCAtMjUyMCw2ICsyNTQwLDcgQEAgcmlfUGVyZm9ybUNoZWNrKGNvbnN0IFJJX0NvbnN0cmFp bnRJbmZvICpyaWluZm8sCiAJCQkJUklfUXVlcnlLZXkgKnFrZXksIFNQSVBsYW5QdHIgcXBs YW4sCiAJCQkJUmVsYXRpb24gZmtfcmVsLCBSZWxhdGlvbiBwa19yZWwsCiAJCQkJVHVwbGVU YWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAorCQkJCWludCBm b3JQb3J0aW9uT2ZQYXJhbSwgRGF0dW0gZm9yUG9ydGlvbk9mLAogCQkJCWJvb2wgZGV0ZWN0 TmV3Um93cywgaW50IGV4cGVjdF9PSykKIHsKIAlSZWxhdGlvbglxdWVyeV9yZWwsCkBAIC0y NTc1LDYgKzI1OTYsMTIgQEAgcmlfUGVyZm9ybUNoZWNrKGNvbnN0IFJJX0NvbnN0cmFpbnRJ bmZvICpyaWluZm8sCiAJCXJpX0V4dHJhY3RWYWx1ZXMoc291cmNlX3JlbCwgb2xkc2xvdCwg cmlpbmZvLCBzb3VyY2VfaXNfcGssCiAJCQkJCQkgdmFscywgbnVsbHMpOwogCX0KKwkvKiBB ZGQgb25lIG1vcmUgcXVlcnkgcGFyYW0gaWYgd2UgYXJlIHVzaW5nIEZPUiBQT1JUSU9OIE9G ICovCisJaWYgKGZvclBvcnRpb25PZikKKwl7CisJCXZhbHNbZm9yUG9ydGlvbk9mUGFyYW1d ID0gZm9yUG9ydGlvbk9mOworCQludWxsc1tmb3JQb3J0aW9uT2ZQYXJhbV0gPSAnICc7CisJ fQogCiAJLyoKIAkgKiBJbiBSRUFEIENPTU1JVFRFRCBtb2RlLCB3ZSBqdXN0IG5lZWQgdG8g dXNlIGFuIHVwLXRvLWRhdGUgcmVndWxhcgpAQCAtMzI4OCwzICszMzE1LDUwIEBAIFJJX0ZL ZXlfdHJpZ2dlcl90eXBlKE9pZCB0Z2ZvaWQpCiAKIAlyZXR1cm4gUklfVFJJR0dFUl9OT05F OwogfQorCisvKgorICogZnBvX3RhcmdldHNfcGtfcmFuZ2UKKyAqCisgKiBSZXR1cm5zIHRy dWUgaWZmIHRoZSBwcmltYXJ5IGtleSByZWZlcmVuY2VkIGJ5IHJpaW5mbyBpbmNsdWRlcyB0 aGUgcmFuZ2UKKyAqIGNvbHVtbiB0YXJnZXRlZCBieSB0aGUgRk9SIFBPUlRJT04gT0YgY2xh dXNlIChhY2NvcmRpbmcgdG8gdGdfdGVtcG9yYWwpLgorICovCitzdGF0aWMgYm9vbAorZnBv X3RhcmdldHNfcGtfcmFuZ2UoY29uc3QgRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFs LCBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvKQoreworCWlmICh0Z190ZW1wb3Jh bCA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gcmlpbmZvLT5wa19hdHRu dW1zW3JpaW5mby0+bmtleXMgLSAxXSA9PSB0Z190ZW1wb3JhbC0+ZnBfcmFuZ2VBdHRubzsK K30KKworLyoKKyAqIHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSAtCisgKgorICogUmV0dXJu cyBhIERhdHVtIG9mIFJhbmdlVHlwZVAgaG9sZGluZyB0aGUgYXBwcm9wcmlhdGUgdGltZXNw YW4KKyAqIHRvIHRhcmdldCBjaGlsZCByZWNvcmRzIHdoZW4gd2UgQ0FTQ0FERS9TRVQgTlVM TC9TRVQgREVGQVVMVC4KKyAqCisgKiBJbiBhIG5vcm1hbCBVUERBVEUvREVMRVRFIHRoaXMg c2hvdWxkIGJlIHRoZSBwYXJlbnQncyBvd24gdmFsaWQgdGltZSwKKyAqIGJ1dCBpZiB0aGVy ZSB3YXMgYSBGT1IgUE9SVElPTiBPRiBjbGF1c2UsIHRoZW4gd2Ugc2hvdWxkIHVzZSB0aGF0 IHRvCisgKiB0cmltIGRvd24gdGhlIHBhcmVudCdzIHNwYW4gZnVydGhlci4KKyAqLworc3Rh dGljIERhdHVtCityZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UoY29uc3QgRm9yUG9ydGlvbk9m U3RhdGUgKnRnX3RlbXBvcmFsLCBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBU dXBsZVRhYmxlU2xvdCAqb2xkc2xvdCkKK3sKKwlEYXR1bQlwa1JlY29yZFJhbmdlOworCWJv b2wJaXNudWxsOworCisJcGtSZWNvcmRSYW5nZSA9IHNsb3RfZ2V0YXR0cihvbGRzbG90LCBy aWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdLCAmaXNudWxsKTsKKwlpZiAo aXNudWxsKQorCQllbG9nKEVSUk9SLCAiYXBwbGljYXRpb24gdGltZSBzaG91bGQgbm90IGJl IG51bGwiKTsKKworCWlmIChmcG9fdGFyZ2V0c19wa19yYW5nZSh0Z190ZW1wb3JhbCwgcmlp bmZvKSkKKwl7CisJCVJhbmdlVHlwZSAqcjEgPSBEYXR1bUdldFJhbmdlVHlwZVAocGtSZWNv cmRSYW5nZSk7CisJCVJhbmdlVHlwZSAqcjIgPSBEYXR1bUdldFJhbmdlVHlwZVAodGdfdGVt cG9yYWwtPmZwX3RhcmdldFJhbmdlKTsKKwkJT2lkIHJuZ3R5cGlkID0gUmFuZ2VUeXBlR2V0 T2lkKHIxKTsKKwkJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2Fj aGUocm5ndHlwaWQsIFRZUEVDQUNIRV9SQU5HRV9JTkZPKTsKKwkJcmV0dXJuIFJhbmdlVHlw ZVBHZXREYXR1bShyYW5nZV9pbnRlcnNlY3RfaW50ZXJuYWwodHlwY2FjaGUsIHIxLCByMikp OworCX0KKwllbHNlCisJCXJldHVybiBwa1JlY29yZFJhbmdlOworfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCBmYzZkMjY3ZTQ0Li5kYjI0NWU2NWFkIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpAQCAtMjE3MCw2ICsyMTcwLDU5IEBA IGdldF90eXBpc2RlZmluZWQoT2lkIHR5cGlkKQogCQlyZXR1cm4gZmFsc2U7CiB9CiAKKy8q CisgKiBnZXRfdHlwbmFtZQorICoKKyAqCSAgUmV0dXJucyB0aGUgbmFtZSBvZiBhIGdpdmVu IHR5cGUKKyAqCisgKiBSZXR1cm5zIGEgcGFsbG9jJ2QgY29weSBvZiB0aGUgc3RyaW5nLCBv ciBOVUxMIGlmIG5vIHN1Y2ggdHlwZS4KKyAqLworY2hhciAqCitnZXRfdHlwbmFtZShPaWQg dHlwaWQpCit7CisJSGVhcFR1cGxlICAgdHA7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShU WVBFT0lELCBPYmplY3RJZEdldERhdHVtKHR5cGlkKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFs aWQodHApKQorCXsKKwkJRm9ybV9wZ190eXBlIHR5cHR1cCA9IChGb3JtX3BnX3R5cGUpIEdF VFNUUlVDVCh0cCk7CisJCWNoYXIJICAgKnJlc3VsdDsKKworCQlyZXN1bHQgPSBwc3RyZHVw KE5hbWVTdHIodHlwdHVwLT50eXBuYW1lKSk7CisJCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJ CXJldHVybiByZXN1bHQ7CisJfQorCWVsc2UKKwkJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisg KiBnZXRfdHlwbmFtZV9hbmRfbmFtZXNwYWNlCisgKgorICoJICBSZXR1cm5zIHRoZSBuYW1l IGFuZCBuYW1lc3BhY2Ugb2YgYSBnaXZlbiB0eXBlCisgKgorICogUmV0dXJucyB0cnVlIGlm IG9uZSBmb3VuZCwgb3IgZmFsc2UgaWYgbm90LgorICovCitib29sCitnZXRfdHlwbmFtZV9h bmRfbmFtZXNwYWNlKE9pZCB0eXBpZCwgY2hhciAqKnR5cG5hbWUsIGNoYXIgKip0eXBuYW1l c3BhY2UpCit7CisJSGVhcFR1cGxlCXRwOworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoVFlQ RU9JRCwgT2JqZWN0SWRHZXREYXR1bSh0eXBpZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlk KHRwKSkKKwl7CisJCUZvcm1fcGdfdHlwZSB0eXB0dXAgPSAoRm9ybV9wZ190eXBlKSBHRVRT VFJVQ1QodHApOworCisJCSp0eXBuYW1lID0gcHN0cmR1cChOYW1lU3RyKHR5cHR1cC0+dHlw bmFtZSkpOworCQkqdHlwbmFtZXNwYWNlID0gZ2V0X25hbWVzcGFjZV9uYW1lKHR5cHR1cC0+ dHlwbmFtZXNwYWNlKTsKKwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJLyogKnR5cG5hbWVz cGFjZSBpcyBOVUxMIGlmIGl0IHdhc24ndCBmb3VuZDogKi8KKwkJcmV0dXJuICp0eXBuYW1l c3BhY2U7CisJfQorCWVsc2UKKwkJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICogZ2V0X3R5 cGxlbgogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaCBi L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAppbmRleCA0MzBlM2NhN2RkLi5iM2Q5 MGRlYWE3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKKysr IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCkBAIC00MSw2ICs0MSw3IEBAIHR5 cGVkZWYgc3RydWN0IFRyaWdnZXJEYXRhCiAJVHVwbGVzdG9yZXN0YXRlICp0Z19vbGR0YWJs ZTsKIAlUdXBsZXN0b3Jlc3RhdGUgKnRnX25ld3RhYmxlOwogCWNvbnN0IEJpdG1hcHNldCAq dGdfdXBkYXRlZGNvbHM7CisJRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsOwogfSBU cmlnZ2VyRGF0YTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNWQ3ZjE3ZGVl MC4uNDdhNGFiM2RhZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTQxLDEyICs0MSwx NCBAQAogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVk ZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL3F1ZXJ5ZW52aXJvbm1lbnQu aCIKKyNpbmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVs dHJpZ2dlci5oIgogI2luY2x1ZGUgInV0aWxzL3NoYXJlZHR1cGxlc3RvcmUuaCIKICNpbmNs dWRlICJ1dGlscy9zbmFwc2hvdC5oIgogI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0Lmgi CiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzb3J0LmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVz dG9yZS5oIgorI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKIHN0cnVjdCBQbGFuU3Rh dGU7CQkJCS8qIGZvcndhcmQgcmVmZXJlbmNlcyBpbiB0aGlzIGZpbGUgKi8KIHN0cnVjdCBQ YXJhbGxlbEhhc2hKb2luU3RhdGU7CkBAIC00MjEsNiArNDIzLDI4IEBAIHR5cGVkZWYgc3Ry dWN0IE1lcmdlQWN0aW9uU3RhdGUKIAlFeHByU3RhdGUgICptYXNfd2hlbnF1YWw7CS8qIFdI RU4gW05PVF0gTUFUQ0hFRCBBTkQgY29uZGl0aW9ucyAqLwogfSBNZXJnZUFjdGlvblN0YXRl OwogCisvKgorICogRm9yUG9ydGlvbk9mU3RhdGUKKyAqCisgKiBFeGVjdXRvciBzdGF0ZSBv ZiBhIEZPUiBQT1JUSU9OIE9GIG9wZXJhdGlvbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgRm9y UG9ydGlvbk9mU3RhdGUKK3sKKwlOb2RlVGFnCQl0eXBlOworCisJY2hhciAgICpmcF9yYW5n ZU5hbWU7CQkvKiB0aGUgY29sdW1uL1BFUklPRCBuYW1lZCBpbiBGT1IgUE9SVElPTiBPRiAq LworCU9pZAkJZnBfcmFuZ2VUeXBlOwkJLyogdGhlIHR5cGUgb2YgdGhlIEZPUiBQT1JUSU9O IE9GIGV4cHJlc3Npb24gKi8KKwlib29sCWZwX2hhc1BlcmlvZDsJCS8qIHRydWUgaWZmIHRo aXMgaXMgYSBQRVJJT0Qgbm90IGEgcmFuZ2UgKi8KKwlpbnQJCWZwX3JhbmdlQXR0bm87CQkv KiB0aGUgYXR0bm8gb2YgdGhlIHJhbmdlIGNvbHVtbiAob3IgMCBmb3IgYSBQRVJJT0QpICov CisJaW50CQlmcF9wZXJpb2RTdGFydEF0dG5vOwkvKiB0aGUgYXR0bm8gb2YgdGhlIFBFUklP RCBzdGFydCBjb2x1bW4gKG9yIDAgZm9yIGEgcmFuZ2UpICovCisJaW50CQlmcF9wZXJpb2RF bmRBdHRubzsJCS8qIHRoZSBhdHRubyBvZiB0aGUgUEVSSU9EIGVuZCBjb2x1bW4gKG9yIDAg Zm9yIGEgcmFuZ2UpICovCisJRGF0dW0JZnBfdGFyZ2V0UmFuZ2U7CQkvKiB0aGUgcmFuZ2Ug ZnJvbSBGT1IgUE9SVElPTiBPRiAqLworCVR5cGVDYWNoZUVudHJ5ICpmcF9yYW5nZXR5cGNh Y2hlOwkvKiB0eXBlIGNhY2hlIGVudHJ5IG9mIHRoZSByYW5nZSAqLworCVR1cGxlVGFibGVT bG90ICpmcF9FeGlzdGluZzsJCS8qIHNsb3QgdG8gc3RvcmUgZXhpc3RpbmcgdGFyZ2V0IHR1 cGxlIGluICovCisJVHVwbGVUYWJsZVNsb3QgKmZwX0xlZnRvdmVyMTsJCS8qIHNsb3QgdG8g c3RvcmUgbGVmdG92ZXIgYmVsb3cgdGhlIHRhcmdldCByYW5nZSAqLworCVR1cGxlVGFibGVT bG90ICpmcF9MZWZ0b3ZlcjI7CQkvKiBzbG90IHRvIHN0b3JlIGxlZnRvdmVyIGFib3ZlIHRo ZSB0YXJnZXQgcmFuZ2UgKi8KK30gRm9yUG9ydGlvbk9mU3RhdGU7CisKIC8qCiAgKiBSZXN1 bHRSZWxJbmZvCiAgKgpAQCAtNTQxLDYgKzU2NSw5IEBAIHR5cGVkZWYgc3RydWN0IFJlc3Vs dFJlbEluZm8KIAlMaXN0CSAgICpyaV9tYXRjaGVkTWVyZ2VBY3Rpb247CiAJTGlzdAkgICAq cmlfbm90TWF0Y2hlZE1lcmdlQWN0aW9uOwogCisJLyogRk9SIFBPUlRJT04gT0YgZXZhbHVh dGlvbiBzdGF0ZSAqLworCUZvclBvcnRpb25PZlN0YXRlICpyaV9mb3JQb3J0aW9uT2Y7CisK IAkvKiBwYXJ0aXRpb24gY2hlY2sgZXhwcmVzc2lvbiBzdGF0ZSAoTlVMTCBpZiBub3Qgc2V0 IHVwIHlldCkgKi8KIAlFeHByU3RhdGUgICpyaV9QYXJ0aXRpb25DaGVja0V4cHI7CiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBhZGZjNWEyMjNjLi5kNDYyY2NjZjU2IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xNDEsNiArMTQxLDkgQEAgdHlwZWRlZiBzdHJ1 Y3QgUXVlcnkKIAkgKi8KIAlpbnQJCQlyZXN1bHRSZWxhdGlvbiBwZ19ub2RlX2F0dHIocXVl cnlfanVtYmxlX2lnbm9yZSk7CiAKKwkvKiBGT1IgUE9SVElPTiBPRiBjbGF1c2UgZm9yIFVQ REFURS9ERUxFVEUgKi8KKwlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2Y7CisKIAkv KiBoYXMgYWdncmVnYXRlcyBpbiB0bGlzdCBvciBoYXZpbmdRdWFsICovCiAJYm9vbAkJaGFz QWdncyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAJLyogaGFzIHdpbmRv dyBmdW5jdGlvbnMgaW4gdGxpc3QgKi8KQEAgLTE1MzAsNiArMTUzMywxOSBAQCB0eXBlZGVm IHN0cnVjdCBSb3dNYXJrQ2xhdXNlCiAJYm9vbAkJcHVzaGVkRG93bjsJCS8qIHB1c2hlZCBk b3duIGZyb20gaGlnaGVyIHF1ZXJ5IGxldmVsPyAqLwogfSBSb3dNYXJrQ2xhdXNlOwogCisv KgorICogRm9yUG9ydGlvbk9mQ2xhdXNlCisgKgkJcmVwcmVzZW50YXRpb24gb2YgRk9SIFBP UlRJT04gT0YgPHBlcmlvZC1uYW1lPiBGUk9NIDx0MT4gVE8gPHQyPgorICovCit0eXBlZGVm IHN0cnVjdCBGb3JQb3J0aW9uT2ZDbGF1c2UKK3sKKwlOb2RlVGFnCQl0eXBlOworCWNoYXIJ ICAgKnJhbmdlX25hbWU7CisJaW50CQkJcmFuZ2VfbmFtZV9sb2NhdGlvbjsKKwlOb2RlCSAg ICp0YXJnZXRfc3RhcnQ7CisJTm9kZQkgICAqdGFyZ2V0X2VuZDsKK30gRm9yUG9ydGlvbk9m Q2xhdXNlOworCiAvKgogICogV2l0aENsYXVzZSAtCiAgKgkgICByZXByZXNlbnRhdGlvbiBv ZiBXSVRIIGNsYXVzZQpAQCAtMTg5MywxMiArMTkwOSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBJ bnNlcnRTdG10CiAgKi8KIHR5cGVkZWYgc3RydWN0IERlbGV0ZVN0bXQKIHsKLQlOb2RlVGFn CQl0eXBlOwotCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gZGVsZXRl IGZyb20gKi8KLQlMaXN0CSAgICp1c2luZ0NsYXVzZTsJLyogb3B0aW9uYWwgdXNpbmcgY2xh dXNlIGZvciBtb3JlIHRhYmxlcyAqLwotCU5vZGUJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFs aWZpY2F0aW9ucyAqLwotCUxpc3QJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhw cmVzc2lvbnMgdG8gcmV0dXJuICovCi0JV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJ VEggY2xhdXNlICovCisJTm9kZVRhZwkJCQl0eXBlOworCVJhbmdlVmFyCQkgICAqcmVsYXRp b247CQkvKiByZWxhdGlvbiB0byBkZWxldGUgZnJvbSAqLworCUZvclBvcnRpb25PZkNsYXVz ZSAqZm9yUG9ydGlvbk9mOwkvKiBGT1IgUE9SVElPTiBPRiBjbGF1c2UgKi8KKwlMaXN0CQkJ ICAgKnVzaW5nQ2xhdXNlOwkvKiBvcHRpb25hbCB1c2luZyBjbGF1c2UgZm9yIG1vcmUgdGFi bGVzICovCisJTm9kZQkJCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8K KwlMaXN0CQkJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8g cmV0dXJuICovCisJV2l0aENsYXVzZQkJICAgKndpdGhDbGF1c2U7CQkvKiBXSVRIIGNsYXVz ZSAqLwogfSBEZWxldGVTdG10OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0x OTA3LDEzICsxOTI0LDE0IEBAIHR5cGVkZWYgc3RydWN0IERlbGV0ZVN0bXQKICAqLwogdHlw ZWRlZiBzdHJ1Y3QgVXBkYXRlU3RtdAogewotCU5vZGVUYWcJCXR5cGU7Ci0JUmFuZ2VWYXIg ICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byB1cGRhdGUgKi8KLQlMaXN0CSAgICp0YXJn ZXRMaXN0OwkJLyogdGhlIHRhcmdldCBsaXN0IChvZiBSZXNUYXJnZXQpICovCi0JTm9kZQkg ICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICovCi0JTGlzdAkgICAqZnJvbUNs YXVzZTsJCS8qIG9wdGlvbmFsIGZyb20gY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAqLwotCUxp c3QJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJu ICovCi0JV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCisJTm9k ZVRhZwkJCQl0eXBlOworCVJhbmdlVmFyCQkgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0 byB1cGRhdGUgKi8KKwlGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZjsJLyogRk9S IFBPUlRJT04gT0YgY2xhdXNlICovCisJTGlzdAkJCSAgICp0YXJnZXRMaXN0OwkJLyogdGhl IHRhcmdldCBsaXN0IChvZiBSZXNUYXJnZXQpICovCisJTm9kZQkJCSAgICp3aGVyZUNsYXVz ZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KKwlMaXN0CQkJICAgKmZyb21DbGF1c2U7CQkvKiBv cHRpb25hbCBmcm9tIGNsYXVzZSBmb3IgbW9yZSB0YWJsZXMgKi8KKwlMaXN0CQkJICAgKnJl dHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCisJV2l0 aENsYXVzZQkJICAgKndpdGhDbGF1c2U7CQkvKiBXSVRIIGNsYXVzZSAqLwogfSBVcGRhdGVT dG10OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5o CmluZGV4IGVkODVkYzc0MTQuLjU0YWNhZGM4ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5o CkBAIC0yMzUyLDYgKzIzNTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBNb2RpZnlUYWJsZVBhdGgK IAlMaXN0CSAgICpyZXR1cm5pbmdMaXN0czsgLyogcGVyLXRhcmdldC10YWJsZSBSRVRVUk5J TkcgdGxpc3RzICovCiAJTGlzdAkgICAqcm93TWFya3M7CQkvKiBQbGFuUm93TWFya3MgKG5v bi1sb2NraW5nIG9ubHkpICovCiAJT25Db25mbGljdEV4cHIgKm9uY29uZmxpY3Q7IC8qIE9O IENPTkZMSUNUIGNsYXVzZSwgb3IgTlVMTCAqLworCUZvclBvcnRpb25PZkV4cHIgKmZvclBv cnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNlIGZvciBVUERBVEUvREVMRVRFICov CiAJaW50CQkJZXBxUGFyYW07CQkvKiBJRCBvZiBQYXJhbSBmb3IgRXZhbFBsYW5RdWFsIHJl LWV2YWwgKi8KIAlMaXN0CSAgICptZXJnZUFjdGlvbkxpc3RzOwkvKiBwZXItdGFyZ2V0LXRh YmxlIGxpc3RzIG9mIGFjdGlvbnMgZm9yCiAJCQkJCQkJCQkgKiBNRVJHRSAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9wbGFubm9kZXMuaAppbmRleCBkNDBhZjhlNTlmLi5lZDhmZjczMThlIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9wbGFubm9kZXMuaApAQCAtMjQzLDYgKzI0Myw3IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlm eVRhYmxlCiAJTGlzdAkgICAqcm93TWFya3M7CQkvKiBQbGFuUm93TWFya3MgKG5vbi1sb2Nr aW5nIG9ubHkpICovCiAJaW50CQkJZXBxUGFyYW07CQkvKiBJRCBvZiBQYXJhbSBmb3IgRXZh bFBsYW5RdWFsIHJlLWV2YWwgKi8KIAlPbkNvbmZsaWN0QWN0aW9uIG9uQ29uZmxpY3RBY3Rp b247CS8qIE9OIENPTkZMSUNUIGFjdGlvbiAqLworCU5vZGUJICAgKmZvclBvcnRpb25PZjsJ LyogRk9SIFBPUlRJT04gT0YgY2xhdXNlIGZvciBVUERBVEUvREVMRVRFICovCiAJTGlzdAkg ICAqYXJiaXRlckluZGV4ZXM7IC8qIExpc3Qgb2YgT04gQ09ORkxJQ1QgYXJiaXRlciBpbmRl eCBPSURzICAqLwogCUxpc3QJICAgKm9uQ29uZmxpY3RTZXQ7CS8qIElOU0VSVCBPTiBDT05G TElDVCBETyBVUERBVEUgdGFyZ2V0bGlzdCAqLwogCUxpc3QJICAgKm9uQ29uZmxpY3RDb2xz OyAvKiB0YXJnZXQgY29sdW1uIG51bWJlcnMgZm9yIG9uQ29uZmxpY3RTZXQgKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcHJpbW5vZGVzLmgKaW5kZXggYmI5MzBhZmI1Mi4uYzA4Mzg1MmIwMyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcHJpbW5vZGVzLmgKQEAgLTIwNjgsNCArMjA2OCwyOSBAQCB0eXBlZGVmIHN0cnVjdCBP bkNvbmZsaWN0RXhwcgogCUxpc3QJICAgKmV4Y2xSZWxUbGlzdDsJLyogdGxpc3Qgb2YgdGhl IEVYQ0xVREVEIHBzZXVkbyByZWxhdGlvbiAqLwogfSBPbkNvbmZsaWN0RXhwcjsKIAorLyot LS0tLS0tLS0tCisgKiBGb3JQb3J0aW9uT2ZFeHByIC0gcmVwcmVzZW50cyBhIEZPUiBQT1JU SU9OIE9GIC4uLiBleHByZXNzaW9uCisgKgorICogV2Ugc2V0IHVwIGFuIGV4cHJlc3Npb24g dG8gbWFrZSBhIHJhbmdlIGZyb20gdGhlIEZST00vVE8gYm91bmRzLAorICogc28gdGhhdCB3 ZSBjYW4gdXNlIHJhbmdlIG9wZXJhdG9ycyB3aXRoIGl0LgorICoKKyAqIFRoZW4gd2Ugc2V0 IHVwIGFuIG92ZXJsYXBzIGV4cHJlc3Npb24gYmV0d2VlbiB0aGF0IGFuZCB0aGUgcmFuZ2Ug Y29sdW1uLAorICogc28gdGhhdCB3ZSBjYW4gZmluZCB0aGUgcm93cyB3ZSBuZWVkIHRvIHVw ZGF0ZS9kZWxldGUuCisgKgorICogSW4gdGhlIGV4ZWN1dG9yIHdlJ2xsIGFsc28gYnVpbGQg YW4gaW50ZXJzZWN0IGV4cHJlc3Npb24gYmV0d2VlbiB0aGUKKyAqIHRhcmdldGVkIHJhbmdl IGFuZCB0aGUgcmFuZ2UgY29sdW1uLCBzbyB0aGF0IHdlIGNhbiB1cGRhdGUgdGhlIHN0YXJ0 L2VuZAorICogYm91bmRzIG9mIHRoZSBVUERBVEUnZCByZWNvcmQuCisgKi0tLS0tLS0tLS0K KyAqLwordHlwZWRlZiBzdHJ1Y3QgRm9yUG9ydGlvbk9mRXhwcgoreworCU5vZGVUYWcJCXR5 cGU7CisJVmFyCQkgICAqcmFuZ2VWYXI7CQkJLyogUmFuZ2UgY29sdW1uICovCisJY2hhcgkg ICAqcmFuZ2VfbmFtZTsJCQkvKiBSYW5nZSBuYW1lICovCisJTm9kZQkgICAqdGFyZ2V0UmFu Z2U7CQkvKiBGT1IgUE9SVElPTiBPRiBib3VuZHMgYXMgYSByYW5nZSAqLworCU9pZAkJCXJh bmdlVHlwZTsJCQkvKiB0eXBlIG9mIHRhcmdldFJhbmdlICovCisJTm9kZQkgICAqb3Zlcmxh cHNFeHByOwkJLyogcmFuZ2UgJiYgdGFyZ2V0UmFuZ2UgKi8KKwlMaXN0CSAgICpyYW5nZVNl dDsJCQkvKiBMaXN0IG9mIFRhcmdldEVudHJ5cyB0byBzZXQgdGhlIHRpbWUgY29sdW1uKHMp ICovCit9IEZvclBvcnRpb25PZkV4cHI7CisKICNlbmRpZgkJCQkJCQkvKiBQUklNTk9ERVNf SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmggYi9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaAppbmRleCA2ZTU1N2JlYmM0Li5jOTMy ZDEyMDRjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaAor KysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaApAQCAtMjgzLDcgKzI4Myw4 IEBAIGV4dGVybiBNb2RpZnlUYWJsZVBhdGggKmNyZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKFBs YW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMs CiAJCQkJCQkJCQkJCQlMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlzdCAqcmV0dXJu aW5nTGlzdHMsCiAJCQkJCQkJCQkJCQlMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4cHIg Km9uY29uZmxpY3QsCi0JCQkJCQkJCQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBpbnQg ZXBxUGFyYW0pOworCQkJCQkJCQkJCQkJTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywKKwkJCQkJ CQkJCQkJCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiwgaW50IGVwcVBhcmFtKTsK IGV4dGVybiBMaW1pdFBhdGggKmNyZWF0ZV9saW1pdF9wYXRoKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkJCQlQYXRoICpzdWJwYXRoLAogCQkJCQkJCQkJ Tm9kZSAqbGltaXRPZmZzZXQsIE5vZGUgKmxpbWl0Q291bnQsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUu aAppbmRleCBjOTY0ODNhZTc4Li5iNmQ1MDY1ZTEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9wYXJzZXIvYW5hbHl6ZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9hbmFseXplLmgK QEAgLTQzLDcgKzQzLDggQEAgZXh0ZXJuIExpc3QgKnRyYW5zZm9ybUluc2VydFJvdyhQYXJz ZVN0YXRlICpwc3RhdGUsIExpc3QgKmV4cHJsaXN0LAogCQkJCQkJCQlMaXN0ICpzdG10Y29s cywgTGlzdCAqaWNvbHVtbnMsIExpc3QgKmF0dHJub3MsCiAJCQkJCQkJCWJvb2wgc3RyaXBf aW5kaXJlY3Rpb24pOwogZXh0ZXJuIExpc3QgKnRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3Qo UGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJCQkJICAgTGlzdCAqb3JpZ1RsaXN0KTsKKwkJ CQkJCQkJCSAgIExpc3QgKm9yaWdUbGlzdCwKKwkJCQkJCQkJCSAgIEZvclBvcnRpb25PZkV4 cHIgKmZvclBvcnRpb25PZik7CiBleHRlcm4gUXVlcnkgKnRyYW5zZm9ybVRvcExldmVsU3Rt dChQYXJzZVN0YXRlICpwc3RhdGUsIFJhd1N0bXQgKnBhcnNlVHJlZSk7CiBleHRlcm4gUXVl cnkgKnRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUp OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5j bHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggY2NmNWJmOGFhNi4uYzg5Y2VlYTlmNiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRl L3BhcnNlci9rd2xpc3QuaApAQCAtMzMwLDYgKzMzMCw3IEBAIFBHX0tFWVdPUkQoInBlcmlv ZCIsIFBFUklPRCwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InBsYWNpbmciLCBQTEFDSU5HLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgicGxhbnMiLCBQTEFOUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgicG9saWN5IiwgUE9MSUNZLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCitQR19LRVlXT1JEKCJwb3J0aW9uIiwgUE9SVElPTiwgVU5SRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicG9zaXRpb24iLCBQT1NJVElPTiwg Q09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInByZWNlZGluZyIs IFBSRUNFRElORywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgicHJlY2lzaW9uIiwgUFJFQ0lTSU9OLCBDT0xfTkFNRV9LRVlXT1JELCBBU19MQUJFTCkK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggYi9zcmMvaW5j bHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IGY1ODkxMTJkNWUuLjBkNjAxZjM0YTUg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3Jj L2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtNTYsNiArNTYsNyBAQCB0eXBlZGVm IGVudW0gUGFyc2VFeHByS2luZAogCUVYUFJfS0lORF9VUERBVEVfU09VUkNFLAkvKiBVUERB VEUgYXNzaWdubWVudCBzb3VyY2UgaXRlbSAqLwogCUVYUFJfS0lORF9VUERBVEVfVEFSR0VU LAkvKiBVUERBVEUgYXNzaWdubWVudCB0YXJnZXQgaXRlbSAqLwogCUVYUFJfS0lORF9NRVJH RV9XSEVOLAkJLyogTUVSR0UgV0hFTiBbTk9UXSBNQVRDSEVEIGNvbmRpdGlvbiAqLworCUVY UFJfS0lORF9VUERBVEVfUE9SVElPTiwJLyogVVBEQVRFIEZPUiBQT1JUSU9OIE9GIGl0ZW0g Ki8KIAlFWFBSX0tJTkRfR1JPVVBfQlksCQkJLyogR1JPVVAgQlkgKi8KIAlFWFBSX0tJTkRf T1JERVJfQlksCQkJLyogT1JERVIgQlkgKi8KIAlFWFBSX0tJTkRfRElTVElOQ1RfT04sCQkv KiBESVNUSU5DVCBPTiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2Nh Y2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCBjMjJjYWJkZjQy Li44OGU0OWRiM2Q4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTQzLDYgKzE0Myw4 IEBAIGV4dGVybiBjaGFyIGdldF9yZWxfcGVyc2lzdGVuY2UoT2lkIHJlbGlkKTsKIGV4dGVy biBPaWQJZ2V0X3RyYW5zZm9ybV9mcm9tc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlz dCAqdHJmdHlwZXMpOwogZXh0ZXJuIE9pZAlnZXRfdHJhbnNmb3JtX3Rvc3FsKE9pZCB0eXBp ZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJuIGJvb2wgZ2V0X3R5cGlz ZGVmaW5lZChPaWQgdHlwaWQpOworZXh0ZXJuIGNoYXIgKmdldF90eXBuYW1lKE9pZCB0eXBp ZCk7CitleHRlcm4gYm9vbCBnZXRfdHlwbmFtZV9hbmRfbmFtZXNwYWNlKE9pZCB0eXBpZCwg Y2hhciAqKnR5cG5hbWUsIGNoYXIgKip0eXBuYW1lc3BhY2UpOwogZXh0ZXJuIGludDE2IGdl dF90eXBsZW4oT2lkIHR5cGlkKTsKIGV4dGVybiBib29sIGdldF90eXBieXZhbChPaWQgdHlw aWQpOwogZXh0ZXJuIHZvaWQgZ2V0X3R5cGxlbmJ5dmFsKE9pZCB0eXBpZCwgaW50MTYgKnR5 cGxlbiwgYm9vbCAqdHlwYnl2YWwpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv cGVyaW9kLmggYi9zcmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi4wYThhZjNlZGIwCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9kLmgKQEAgLTAsMCArMSwxOSBAQAorLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgorICogcGVyaW9kLmgKKyAqCSAgc3VwcG9ydCBmb3IgUG9zdGdy ZXMgcGVyaW9kcy4KKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIw MjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZv cm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL3V0aWxzL3BlcmlvZC5oCisgKgorICotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgUEVSSU9EX0gKKyNkZWZpbmUgUEVSSU9EX0gK KworZXh0ZXJuIERhdHVtIHBlcmlvZF90b19yYW5nZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwg aW50IHN0YXJ0YXR0bm8sIGludCBlbmRhdHRubywgT2lkIHJhbmdldHlwZSk7CisKKyNlbmRp ZgkJCQkJCQkvKiBQRVJJT0RfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv cmFuZ2V0eXBlcy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oCmluZGV4IDZi NDIwYTg2MTguLjQ4ZWUyZGViZWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3Jh bmdldHlwZXMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgKQEAgLTE2 NCw1ICsxNjQsOCBAQCBleHRlcm4gUmFuZ2VUeXBlICptYWtlX2VtcHR5X3JhbmdlKFR5cGVD YWNoZUVudHJ5ICp0eXBjYWNoZSk7CiBleHRlcm4gYm9vbCByYW5nZV9zcGxpdF9pbnRlcm5h bChUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEsCiAJCQkJ CQkJCSBjb25zdCBSYW5nZVR5cGUgKnIyLCBSYW5nZVR5cGUgKipvdXRwdXQxLAogCQkJCQkJ CQkgUmFuZ2VUeXBlICoqb3V0cHV0Mik7CitleHRlcm4gdm9pZCByYW5nZV9sZWZ0b3Zlcl9p bnRlcm5hbChUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEs CisJCQkJCQkJCQljb25zdCBSYW5nZVR5cGUgKnIyLCBSYW5nZVR5cGUgKipvdXRwdXQxLAor CQkJCQkJCQkJUmFuZ2VUeXBlICoqb3V0cHV0Mik7CiAKICNlbmRpZgkJCQkJCQkvKiBSQU5H RVRZUEVTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9y X3BvcnRpb25fb2Yub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlv bl9vZi5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMzJmMDBj ZGJmNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9y X3BvcnRpb25fb2Yub3V0CkBAIC0wLDAgKzEsNDU5IEBACistLSBUZXN0cyBmb3IgVVBEQVRF L0RFTEVURSBGT1IgUE9SVElPTiBPRgorLS0gV29ya3Mgb24gbm9uLVBLIGNvbHVtbnMKK0NS RUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2 YWxpZF9hdCB0c3JhbmdlLAorICBuYW1lIHRleHQgTk9UIE5VTEwKKyk7CitJTlNFUlQgSU5U TyBmb3JfcG9ydGlvbl9vZl90ZXN0IFZBTFVFUworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwy MDIwLTAxLTAxKScsICdvbmUnKTsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyAnMjAxOS0wMS0wMScK K1NFVCBuYW1lID0gJ2Zvbyc7CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTE1JyBUTyBOVUxMOworU0VM RUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWUgCist LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4 IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBmb28KKyBbMSwyKSB8IFsiVHVlIEph biAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmUK KyBbMSwyKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiVHVlIEphbiAxNSAwMDow MDowMCAyMDE5IikgfCBvbmUKKygzIHJvd3MpCisKKy0tIFdvcmtzIG9uIG1vcmUgdGhhbiBv bmUgcmFuZ2UKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDsKK0NSRUFURSBUQUJM RSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZDFfYXQg dHNyYW5nZSwKKyAgdmFsaWQyX2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4dCBOT1QgTlVMTAor KTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisoJ1sxLDFdJywg J1syMDE4LTAxLTAyLDIwMTgtMDItMDMpJywgJ1syMDE1LTAxLTAxLDIwMjUtMDEtMDEpJywg J29uZScpOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkMV9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyBOVUxMCitTRVQgbmFtZSA9ICdmb28nOwor U0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCBu YW1lIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAw OjAwOjAwIDIwMTgiLCJTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAw MSAwMDowMDowMCAyMDE1IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBmb28KKyBb MSwyKSB8IFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDow MCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyNSIpIHwgb25lCisoMiByb3dzKQorCitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQyX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPIE5V TEwKK1NFVCBuYW1lID0gJ2Jhcic7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMV9hdCAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDJfYXQgICAg ICAgICAgICAgICAgICAgICAgICB8IG5hbWUgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisg WzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6MDA6 MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIw MTgiLCJTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAwMDowMDow MCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBmb28KKyBbMSwyKSB8IFsi VHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4Iikg fCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy NSIpIHwgYmFyCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBK YW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJN b24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZQorKDQgcm93cykKKworREVMRVRFIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQxX2F0IEZST00g JzIwMTgtMDEtMjAnIFRPIE5VTEw7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMV9hdCAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDJfYXQgICAg ICAgICAgICAgICAgICAgICAgICB8IG5hbWUgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisg WzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6 MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIw MTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAwMDowMDow MCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmUKKyBbMSwyKSB8IFsi TW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4Iikg fCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy NSIpIHwgYmFyCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBK YW4gMjAgMDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJN b24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IGZvbworKDQgcm93cykKKworREVMRVRFIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQyX2F0IEZST00g JzIwMTgtMDEtMjAnIFRPIE5VTEw7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMV9hdCAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDJfYXQgICAg ICAgICAgICAgICAgICAgICAgICB8IG5hbWUgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisg WzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6 MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFuIDE1IDAw OjAwOjAwIDIwMTgiKSB8IG9uZQorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIw MTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAwMDowMDow MCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBmb28KKyBbMSwyKSB8IFsi VHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4Iikg fCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAgMDA6MDA6MDAgMjAx OCIpIHwgYmFyCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBK YW4gMjAgMDA6MDA6MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJT YXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IGJhcgorKDQgcm93cykKKworLS0gVGVzdCB3 aXRoIE5VTExzIGluIHRoZSBzY2FsYXIvcmFuZ2Uga2V5IGNvbHVtbnMuCistLSBUaGlzIHdv bid0IGhhcHBlbiBpZiB0aGVyZSBpcyBhIFBSSU1BUlkgS0VZIG9yIFVOSVFVRSBjb25zdHJh aW50CistLSBidXQgRk9SIFBPUlRJT04gT0Ygc2hvdWxkbid0IHJlcXVpcmUgdGhhdC4KK0RS T1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDsKK0NSRUFURSBVTkxPR0dFRCBUQUJMRSBm b3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0c3Jh bmdlLAorICBuYW1lIHRleHQKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0 IFZBTFVFUworICAoJ1sxLDFdJywgTlVMTCwgJzEgbnVsbCcpLAorICAoJ1sxLDFdJywgJygs KScsICcxIHVuYm91bmRlZCcpLAorICAoJ1sxLDFdJywgJ2VtcHR5JywgJzEgZW1wdHknKSwK KyAgKE5VTEwsIE5VTEwsIE5VTEwpLAorICAoTlVMTCwgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE5LTAxLTAxJyksICdudWxsIGtleScpOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKKyAgU0VU IG5hbWUgPSAnTlVMTCB0byBOVUxMJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgbmFtZSAgICAgCistLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLQorIFsxLDIpIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDEgbnVsbAorIFsxLDIpIHwgZW1wdHkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEgZW1wdHkKKyAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAKKyBbMSwyKSB8ICgsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBOVUxMIHRvIE5VTEwKKyAgICAgICB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBO VUxMIHRvIE5VTEwKKyg1IHJvd3MpCisKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVz dDsKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdl IE5PVCBOVUxMLAorICB2YWxpZF9hdCB0c3JhbmdlIE5PVCBOVUxMLAorICBuYW1lIHRleHQg Tk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9vZl9wayBQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gZm9yX3Bv cnRpb25fb2ZfdGVzdAorVkFMVUVTCisoJ1sxLDFdJywgJ1syMDE4LTAxLTAyLDIwMTgtMDIt MDMpJywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0wMi0wMywyMDE4LTAzLTAzKScsICdv bmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDMtMDMsMjAxOC0wNC0wNCknLCAnb25lJyksCiso J1syLDJdJywgJ1syMDE4LTAxLTAxLDIwMTgtMDEtMDUpJywgJ3R3bycpLAorKCdbMywzXScs ICdbMjAxOC0wMS0wMSwpJywgJ3RocmVlJyksCisoJ1s0LDRdJywgJygsMjAxOC0wNC0wMSkn LCAnZm91cicpLAorKCdbNSw1XScsICcoLCknLCAnZml2ZScpCis7CistLQorLS0gVVBEQVRF IHRlc3RzCistLQorLS0gU2V0dGluZyB3aXRoIGEgbWlzc2luZyBjb2x1bW4gZmFpbHMKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZS T00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gJ2ZvbycKK1dIRVJFIGlkID0g J1s1LDVdJzsKK0VSUk9SOiAgY29sdW1uIG9yIHBlcmlvZCAiaW52YWxpZF9hdCIgb2YgcmVs YXRpb24gImZvcl9wb3J0aW9uX29mX3Rlc3QiIGRvZXMgbm90IGV4aXN0CitMSU5FIDI6IEZP UiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorICAg ICAgICAgICAgICAgICAgICAgICBeCistLSBTZXR0aW5nIHRoZSByYW5nZSBmYWlscworVVBE QVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTgtMDYtMDEnIFRPIE5VTEwKK1NFVCB2YWxpZF9hdCA9ICdbMTk5MC0wMS0wMSwxOTk5 LTAxLTAxKScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgY2FuJ3QgZGlyZWN0bHkg YXNzaWduIHRvICJ2YWxpZF9hdCIgaW4gYSBGT1IgUE9SVElPTiBPRiB1cGRhdGUKK0xJTkUg MzogU0VUIHZhbGlkX2F0ID0gJ1sxOTkwLTAxLTAxLDE5OTktMDEtMDEpJworICAgICAgICAg ICAgXgorLS0gVGhlIHdyb25nIHR5cGUgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDEgVE8gNAorU0VUIG5hbWUgPSAn bm9wZScKK1dIRVJFIGlkID0gJ1szLDNdJzsKK0VSUk9SOiAgZnVuY3Rpb24gcGdfY2F0YWxv Zy50c3JhbmdlKGludGVnZXIsIGludGVnZXIpIGRvZXMgbm90IGV4aXN0CitMSU5FIDI6IEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gMSBUTyA0CisgICAgICAgICAgICAgICAgICAg ICAgIF4KK0hJTlQ6ICBObyBmdW5jdGlvbiBtYXRjaGVzIHRoZSBnaXZlbiBuYW1lIGFuZCBh cmd1bWVudCB0eXBlcy4gWW91IG1pZ2h0IG5lZWQgdG8gYWRkIGV4cGxpY2l0IHR5cGUgY2Fz dHMuCistLSBTZXR0aW5nIHdpdGggdGltZXN0YW1wcyByZXZlcnNlZCBmYWlscworVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTgtMDYtMDEnIFRPICcyMDE4LTAxLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMScKK1dIRVJF IGlkID0gJ1szLDNdJzsKK0VSUk9SOiAgcmFuZ2UgbG93ZXIgYm91bmQgbXVzdCBiZSBsZXNz IHRoYW4gb3IgZXF1YWwgdG8gcmFuZ2UgdXBwZXIgYm91bmQKKy0tIFNldHRpbmcgd2l0aCBh IHN1YnF1ZXJ5IGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAoU0VMRUNUICcyMDE4LTAxLTAxJykgVE8gJzIwMTgtMDYt MDEnCitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsM10nOworRVJST1I6ICBj YW5ub3QgdXNlIHN1YnF1ZXJ5IGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24KK0xJTkUg MjogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAoU0VMRUNUICcyMDE4LTAxLTAxJykg VE8gJzIwMTgtLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor LS0gU2V0dGluZyB3aXRoIGEgY29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBsb3dlcih2YWxpZF9hdCkgVE8g TlVMTAorU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDNdJzsKK0VSUk9SOiAg Y2Fubm90IHVzZSBjb2x1bW4gcmVmZXJlbmNlIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Np b24KK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBsb3dlcih2YWxpZF9h dCkgVE8gTlVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KKy0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMgbm90aGluZworVVBE QVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0LTAxJworU0VUIG5hbWUgPSAndGhyZWVeMCcKK1dI RVJFIGlkID0gJ1szLDNdJzsKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29wZW4gcG9ydGlvbiB3 aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorU0VU IG5hbWUgPSAndGhyZWVeMScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKy0tIFVwZGF0aW5nIGEg ZmluaXRlL29wZW4gcG9ydGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVM TCBUTyAnMjAxOC0wMy0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjInCitXSEVSRSBpZCA9ICdb MywzXSc7CistLSBVcGRhdGluZyBhbiBvcGVuL2Zpbml0ZSBwb3J0aW9uIHdpdGggYW4gb3Bl bi9maW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAyLTAxJworU0VUIG5hbWUgPSAn Zm91cl4xJworV0hFUkUgaWQgPSAnWzQsNF0nOworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5p dGUgcG9ydGlvbiB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScg VE8gTlVMTAorU0VUIG5hbWUgPSAnZm91cl4yJworV0hFUkUgaWQgPSAnWzQsNF0nOworLS0g VXBkYXRpbmcgYSBmaW5pdGUvZmluaXRlIHBvcnRpb24gd2l0aCBhbiBleGFjdCBmaXQKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE3LTAxLTAxJyBUTyAnMjAxOC0wMi0wMScKK1NFVCBuYW1lID0gJ2ZvdXJeMycKK1dI RVJFIGlkID0gJ1s0LDRdJzsKKy0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNwYW4KK1VQREFU RSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5V TEwgVE8gTlVMTAorU0VUIG5hbWUgPSAndHdvXjInCitXSEVSRSBpZCA9ICdbMiwyXSc7Cist LSBVcGRhdGluZyBhbiBvcGVuL29wZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRlL2Zpbml0ZSB0 YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE4LTAxLTAxJyBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ2Zp dmVeMicKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNw YW4gd2l0aCBzZXBhcmF0ZSBwcm90cnVkaW5nIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8g JzIwMjAtMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjMnCitXSEVSRSBpZCA9ICdbNSw1XSc7 CistLSBVcGRhdGluZyBtdWx0aXBsZSBlbmNsb3NlZCBzcGFucworVVBEQVRFIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxM CitTRVQgbmFtZSA9ICdvbmVeMicKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIFVwZGF0aW5n IHdpdGggYSBzaGlmdC9yZWR1Y2UgY29uZmxpY3QKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBU SU1FIFpPTkUgSU5URVJWQUwgJzEnIEhPVVIgVE8gTUlOVVRFCisgIFRPICcyMDE5LTAxLTAx JworU0VUIG5hbWUgPSAnb25lXjMnCitXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAnMjAx OC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VSCisgIFRPICcyMDE5LTAx LTAxJworU0VUIG5hbWUgPSAnb25lXjQnCitXSEVSRSBpZCA9ICdbMSwxXSc7CitFUlJPUjog IHN5bnRheCBlcnJvciBhdCBvciBuZWFyICInMjAxOS0wMS0wMSciCitMSU5FIDQ6ICAgVE8g JzIwMTktMDEtMDEnCisgICAgICAgICAgICAgXgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00gKCcyMDE4LTAzLTAxJyBBVCBU SU1FIFpPTkUgSU5URVJWQUwgJzInIEhPVVIpCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5h bWUgPSAnb25lXjQnCitXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBVcGRhdGluZyB0aGUgbm9u LXJhbmdlIHBhcnQgb2YgdGhlIFBLOgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDItMTUnIFRPIE5VTEwKK1NFVCBp ZCA9ICdbNiw2XScKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIFVQREFURSB3aXRoIG5vIFdI RVJFIGNsYXVzZQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMzAtMDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gbmFtZSB8 fCAnKic7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQs IHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgbmFtZSAgIAorLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJTYXQgRmViIDAz IDAwOjAwOjAwIDIwMTgiKSB8IG9uZV4yCisgWzEsMikgfCBbIlNhdCBGZWIgMDMgMDA6MDA6 MDAgMjAxOCIsIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMiwzKSB8 IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4 IikgfCB0d29eMgorIFszLDQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUg TWFyIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAw MSAwMDowMDowMCAyMDE4IiwiRnJpIEp1biAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQor IFszLDQpIHwgWyJGcmkgSnVuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAw OjAwIDIwMzAiKSB8IHRocmVlXjEKKyBbMyw0KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAy MDMwIiwpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aHJlZV4xKgorIFs0LDUpIHwg KCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IGZvdXJeMQorIFs0LDUpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJUaHUg RmViIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMworIFs0LDUpIHwgWyJUaHUgRmViIDAx IDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMgor IFs1LDYpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IGZpdmUKKyBbNSw2KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3 IiwiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBm aXZlXjMKKyBbNSw2KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIikgfCBmaXZlCisgWzUsNikg fCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIsKSAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgZml2ZSoKKyBbNiw3KSB8IFsiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IiwiVGh1 IE1hciAwMSAwODowMTowMCAyMDE4IikgfCBvbmVeMgorIFs2LDcpIHwgWyJUaHUgTWFyIDAx IDA4OjAxOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDEwOjAwOjAwIDIwMTgiKSB8IG9uZV4zCisg WzYsNykgfCBbIlRodSBNYXIgMDEgMTA6MDA6MDAgMjAxOCIsIlNhdCBNYXIgMDMgMDA6MDA6 MDAgMjAxOCIpIHwgb25lXjQKKyBbNiw3KSB8IFsiU2F0IE1hciAwMyAwMDowMDowMCAyMDE4 IiwiV2VkIEFwciAwNCAwMDowMDowMCAyMDE4IikgfCBvbmVeNAorKDIwIHJvd3MpCisKKy0t CistLSBERUxFVEUgdGVzdHMKKy0tCistLSBEZWxldGluZyB3aXRoIGEgbWlzc2luZyBjb2x1 bW4gZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorV0hFUkUgaWQgPSAn WzUsNV0nOworRVJST1I6ICBjb2x1bW4gb3IgcGVyaW9kICJpbnZhbGlkX2F0IiBvZiByZWxh dGlvbiAiZm9yX3BvcnRpb25fb2ZfdGVzdCIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMjogRk9S IFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCisgICAg ICAgICAgICAgICAgICAgICAgIF4KKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1wcyByZXZl cnNlZCBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEnCitXSEVS RSBpZCA9ICdbMywzXSc7CitFUlJPUjogIHJhbmdlIGxvd2VyIGJvdW5kIG11c3QgYmUgbGVz cyB0aGFuIG9yIGVxdWFsIHRvIHJhbmdlIHVwcGVyIGJvdW5kCistLSBEZWxldGluZyB3aXRo IHRpbWVzdGFtcHMgZXF1YWwgZG9lcyBub3RoaW5nCitERUxFVEUgRlJPTSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBU TyAnMjAxOC0wNC0wMScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKy0tIERlbGV0aW5nIHdpdGgg YSBjbG9zZWQvY2xvc2VkIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMjAt MDYtMDEnCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBEZWxldGluZyB3aXRoIGEgY2xvc2Vk L29wZW4gdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9 ICdbMywzXSc7CistLSBEZWxldGluZyB3aXRoIGFuIG9wZW4vY2xvc2VkIHRhcmdldAorREVM RVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSBOVUxMIFRPICcyMDE4LTAyLTA4JworV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gRGVs ZXRpbmcgd2l0aCBhbiBvcGVuL29wZW4gdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAor V0hFUkUgaWQgPSAnWzYsNl0nOworLS0gREVMRVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitE RUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDI1LTAxLTAxJyBUTyBOVUxMOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlv bl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICAgICAg ICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbmFtZSAg IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCisgWzEsMikgfCBbIlRodSBGZWIgMDggMDA6MDA6 MDAgMjAxOCIsIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMiwzKSB8 IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4 IikgfCB0d29eMgorIFszLDQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUg TWFyIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAw MSAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQor IFs0LDUpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IGZvdXJeMQorIFs0LDUpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIw MTciLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMworIFs0LDUpIHwgWyJU aHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8 IGZvdXJeMgorIFs1LDYpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IGZpdmUKKyBbNSw2KSB8IFsiU3VuIEphbiAwMSAwMDow MDowMCAyMDE3IiwiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2 KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEp1biAwMSAwMDowMDowMCAy MDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwi V2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBmaXZlCisoMTEgcm93cykKKworLS0gVVBE QVRFIC4uLiBSRVRVUk5JTkcgcmV0dXJucyBvbmx5IHRoZSB1cGRhdGVkIHZhbHVlcyAobm90 IHRoZSBpbnNlcnRlZCBzaWRlIHZhbHVlcykKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTAxJyBUTyAnMjAxOC0w Mi0xNScKK1NFVCBuYW1lID0gJ3RocmVlXjMnCitXSEVSRSBpZCA9ICdbMywzXScKK1JFVFVS TklORyAqOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAg ICAgICAgICAgICAgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0K KyBbMyw0KSB8IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAxNSAwMDow MDowMCAyMDE4IikgfCB0aHJlZV4zCisoMSByb3cpCisKKy0tIHRlc3QgdGhhdCB3ZSBydW4g dHJpZ2dlcnMgb24gdGhlIFVQREFURS9ERUxFVEVkIHJvdyBhbmQgdGhlIElOU0VSVGVkIHJv d3MKK0NSRUFURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCkKK1JFVFVSTlMg dHJpZ2dlcgorQVMKKyQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJyUgJSAlIG9mICUnLCBU R19XSEVOLCBUR19PUCwgTkVXLnZhbGlkX2F0LCBPTEQudmFsaWRfYXQ7CisgIElGIFRHX09Q ID0gJ0RFTEVURScgVEhFTgorICAgIFJFVFVSTiBPTEQ7CisgIEVMU0UKKyAgICBSRVRVUk4g TkVXOworICBFTkQgSUY7CitFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBU UklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfaW5zZXJ0CisgIEJFRk9SRSBJTlNF UlQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBG VU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdf Zm9yX3BvcnRpb25fb2ZfYWZ0ZXJfaW5zZXJ0CisgIEFGVEVSIElOU0VSVCBPTiBmb3JfcG9y dGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9w b3J0aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9v Zl9iZWZvcmVfdXBkYXRlCisgIEJFRk9SRSBVUERBVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVz dAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90 cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0ZXJfdXBk YXRlCisgIEFGVEVSIFVQREFURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNI IFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NS RUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfZGVsZXRlCisgIEJFRk9S RSBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhF Q1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dF UiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0ZXJfZGVsZXRlCisgIEFGVEVSIERFTEVURSBPTiBm b3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9O IGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDIxLTAxLTAxJyBUTyAnMjAyMi0w MS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeNCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK05PVElD RTogIEJFRk9SRSBVUERBVEUgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiLCJTYXQgSmFu IDAxIDAwOjAwOjAwIDIwMjIiKSBvZiBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIldl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiTW9u IEp1biAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgb2Yg PE5VTEw+CitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDowMDowMCAy MDIyIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBB RlRFUiBJTlNFUlQgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAw OjAwOjAwIDIwMjEiKSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIlNhdCBK YW4gMDEgMDA6MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxO VUxMPgorTk9USUNFOiAgQUZURVIgVVBEQVRFIFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IiwiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIikgb2YgWyJNb24gSnVuIDAxIDAwOjAwOjAw IDIwMjAiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKQorREVMRVRFIEZST00gZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyMy0wMS0w MScgVE8gJzIwMjQtMDEtMDEnCitXSEVSRSBpZCA9ICdbNSw1XSc7CitOT1RJQ0U6ICBCRUZP UkUgREVMRVRFIDxOVUxMPiBvZiBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyNSIpCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiU2F0IEph biAwMSAwMDowMDowMCAyMDIyIiwiU3VuIEphbiAwMSAwMDowMDowMCAyMDIzIikgb2YgPE5V TEw+CitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRF UiBJTlNFUlQgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAw OjAwIDIwMjMiKSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIk1vbiBKYW4g MDEgMDA6MDA6MDAgMjAyNCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxM PgorTk9USUNFOiAgQUZURVIgREVMRVRFIDxOVUxMPiBvZiBbIlNhdCBKYW4gMDEgMDA6MDA6 MDAgMjAyMiIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpCitTRUxFQ1QgKiBGUk9NIGZv cl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAg ICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8 ICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBbMSwyKSB8IFsiVGh1IEZlYiAw OCAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmVeMgor IFsyLDMpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAw OjAwIDIwMTgiKSB8IHR3b14yCisgWzMsNCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMgorIFszLDQpIHwgWyJU aHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiKSB8 IHRocmVlXjMKKyBbMyw0KSB8IFsiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IiwiVGh1IE1h ciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZV4yCisgWzMsNCkgfCBbIlRodSBNYXIgMDEg MDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWUKKyBb NCw1KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBmb3VyXjEKKyBbNCw1KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3 IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjMKKyBbNCw1KSB8IFsiVGh1 IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikgfCBm b3VyXjIKKyBbNSw2KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBmaXZlCisgWzUsNikgfCBbIlN1biBKYW4gMDEgMDA6MDA6 MDAgMjAxNyIsIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikg fCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKdW4gMDEgMDA6MDA6MDAgMjAx OCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZy aSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgZml2ZQorIFs1LDYpIHwgWyJGcmkgSmFuIDAx IDAwOjAwOjAwIDIwMjEiLCJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiKSB8IGZpdmVeNAor IFs1LDYpIHwgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAw OjAwIDIwMjMiKSB8IGZpdmUKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBmaXZlCisoMTYgcm93cykKKworLS0g VGVzdCB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGUKK0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdl IEFTIHJhbmdlKHN1YnR5cGU9ZGF0ZSk7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2Zf dGVzdDIgKAorICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2F0IG15ZGF0ZXJh bmdlIE5PVCBOVUxMLAorICBuYW1lIHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3Jf cG9ydGlvbl9vZl90ZXN0Ml9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdDIKK1ZBTFVF UworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdvbmUnKSwKKygnWzEs MV0nLCAnWzIwMTgtMDItMDMsMjAxOC0wMy0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1sy MDE4LTAzLTAzLDIwMTgtMDQtMDQpJywgJ29uZScpLAorKCdbMiwyXScsICdbMjAxOC0wMS0w MSwyMDE4LTA1LTAxKScsICd0d28nKSwKKygnWzMsM10nLCAnWzIwMTgtMDEtMDEsKScsICd0 aHJlZScpOworOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTEwJyBUTyAnMjAxOC0wMi0xMCcKK1NFVCBuYW1l ID0gJ29uZV4xJworV0hFUkUgaWQgPSAnWzEsMV0nOworREVMRVRFIEZST00gZm9yX3BvcnRp b25fb2ZfdGVzdDIKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUn IFRPICcyMDE4LTAyLTE1JworV0hFUkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0MiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAg ICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8IFswMS0wMi0yMDE4LDAxLTEwLTIwMTgp IHwgb25lCisgWzEsMikgfCBbMDEtMTAtMjAxOCwwMi0wMy0yMDE4KSB8IG9uZV4xCisgWzEs MikgfCBbMDItMDMtMjAxOCwwMi0xMC0yMDE4KSB8IG9uZV4xCisgWzEsMikgfCBbMDItMTAt MjAxOCwwMy0wMy0yMDE4KSB8IG9uZQorIFsxLDIpIHwgWzAzLTAzLTIwMTgsMDQtMDQtMjAx OCkgfCBvbmUKKyBbMiwzKSB8IFswMS0wMS0yMDE4LDAxLTE1LTIwMTgpIHwgdHdvCisgWzIs MykgfCBbMDItMTUtMjAxOCwwNS0wMS0yMDE4KSB8IHR3bworIFszLDQpIHwgWzAxLTAxLTIw MTgsKSAgICAgICAgICAgfCB0aHJlZQorKDggcm93cykKKworRFJPUCBUQUJMRSBmb3JfcG9y dGlvbl9vZl90ZXN0MjsKK0RST1AgVFlQRSBteWRhdGVyYW5nZTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0CmluZGV4IGZiYjA0ODlhNGYuLjMzOTVkMjE1 MGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dApAQCAt OTg1LDYgKzk4NSwyNCBAQCBFUlJPUjogIG51bGwgdmFsdWUgaW4gY29sdW1uICJiIiBvZiBy ZWxhdGlvbiAiZXJydHN0X3BhcnRfMiIgdmlvbGF0ZXMgbm90LW51bGwgYwogREVUQUlMOiAg RmFpbGluZyByb3cgY29udGFpbnMgKGEsIGIsIGMpID0gKGFhYWEsIG51bGwsIGNjYykuCiBT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKIERST1AgVEFC TEUgZXJydHN0OworLS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyBvbiB0aGUgcmFu Z2UvUEVSSU9EIHVzZWQgaW4gRk9SIFBPUlRJT04gT0YKK1NFVCBTRVNTSU9OIEFVVEhPUkla QVRJT04gcmVncmVzc19wcml2X3VzZXIxOworQ1JFQVRFIFRBQkxFIHQxICgKKyAgYzEgaW50 NHJhbmdlLAorICB2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdDFwayBQUklNQVJZ IEtFWSAoYzEsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworR1JBTlQgU0VMRUNU IE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5UIFNFTEVDVCBPTiB0MSBUTyBy ZWdyZXNzX3ByaXZfdXNlcjM7CitHUkFOVCBVUERBVEUgKGMxKSBPTiB0MSBUTyByZWdyZXNz X3ByaXZfdXNlcjI7CitHUkFOVCBVUERBVEUgKGMxLCB2YWxpZF9hdCkgT04gdDEgVE8gcmVn cmVzc19wcml2X3VzZXIzOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3By aXZfdXNlcjI7CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAw MC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitFUlJPUjogIHBl cm1pc3Npb24gZGVuaWVkIGZvciB0YWJsZSB0MQorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElP TiByZWdyZXNzX3ByaXZfdXNlcjM7CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAwMC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7 CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKK0RST1Ag VEFCTEUgdDE7CiAtLSB0ZXN0IGNvbHVtbi1sZXZlbCBwcml2aWxlZ2VzIHdoZW4gaW52b2x2 ZWQgd2l0aCBERUxFVEUKIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2 X3VzZXIxOwogQUxURVIgVEFCTEUgYXRlc3Q2IEFERCBDT0xVTU4gdGhyZWUgaW50ZWdlcjsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdz Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dApp bmRleCBhNzNjMWY5MGM0Li43MjdhZDA4ZTA4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0CkBAIC0zMDIwLDYgKzMwMjAsMzggQEAg c2VsZWN0ICogZnJvbSB1dl9pb2N1X3RhYjsKIAogZHJvcCB2aWV3IHV2X2lvY3VfdmlldzsK IGRyb3AgdGFibGUgdXZfaW9jdV90YWI7CistLSBDaGVjayBVUERBVEUgRk9SIFBPUlRJT04g T0Ygd29ya3MgY29ycmVjdGx5CitjcmVhdGUgdGFibGUgdXZfZnBvX3RhYiAoaWQgaW50NHJh bmdlLCB2YWxpZF9hdCB0c3JhbmdlLCBiIGZsb2F0LAorICAgIGNvbnN0cmFpbnQgcGtfdXZf ZnBvX3RhYiBwcmltYXJ5IGtleSAoaWQsIHZhbGlkX2F0IHdpdGhvdXQgb3ZlcmxhcHMpKTsK K2luc2VydCBpbnRvIHV2X2Zwb190YWIgdmFsdWVzICgnWzEsMV0nLCAnWzIwMjAtMDEtMDEs IDIwMzAtMDEtMDEpJywgMCk7CitjcmVhdGUgdmlldyB1dl9mcG9fdmlldyBhcworICAgIHNl bGVjdCBiLCBiKzEgYXMgYywgdmFsaWRfYXQsIGlkLCAnMi4wJzo6dGV4dCBhcyB0d28gZnJv bSB1dl9mcG9fdGFiOworaW5zZXJ0IGludG8gdXZfZnBvX3ZpZXcgKGlkLCB2YWxpZF9hdCwg YikgdmFsdWVzICgnWzEsMV0nLCAnWzIwMTAtMDEtMDEsIDIwMjAtMDEtMDEpJywgMSk7Citz ZWxlY3QgKiBmcm9tIHV2X2Zwb192aWV3OworIGIgfCBjIHwgICAgICAgICAgICAgICAgICAg ICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBpZCAgIHwgdHdvIAor LS0tKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLQorIDAgfCAxIHwgWyJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IFsxLDIpIHwgMi4wCisg MSB8IDIgfCBbIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAxMCIsIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIpIHwgWzEsMikgfCAyLjAKKygyIHJvd3MpCisKK3VwZGF0ZSB1dl9mcG9fdmll dyBmb3IgcG9ydGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE1LTAxLTAxJyB0byAnMjAyMC0w MS0wMScgc2V0IGIgPSAyIHdoZXJlIGlkID0gJ1sxLDFdJzsKK3NlbGVjdCAqIGZyb20gdXZf ZnBvX3ZpZXc7CisgYiB8IGMgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIGlkICAgfCB0d28gCistLS0rLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tKy0tLS0tCisgMCB8IDEgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIlR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAzMCIpIHwgWzEsMikgfCAyLjAKKyAyIHwgMyB8IFsiVGh1IEph biAwMSAwMDowMDowMCAyMDE1IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbMSwy KSB8IDIuMAorIDEgfCAyIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMTAiLCJUaHUgSmFu IDAxIDAwOjAwOjAwIDIwMTUiKSB8IFsxLDIpIHwgMi4wCisoMyByb3dzKQorCitkZWxldGUg ZnJvbSB1dl9mcG9fdmlldyBmb3IgcG9ydGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE3LTAx LTAxJyB0byAnMjAyMi0wMS0wMScgd2hlcmUgaWQgPSAnWzEsMV0nOworc2VsZWN0ICogZnJv bSB1dl9mcG9fdmlldzsKKyBiIHwgYyB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRf YXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgaWQgICB8IHR3byAKKy0tLSstLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0rLS0tLS0KKyAxIHwgMiB8IFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDEwIiwi VGh1IEphbiAwMSAwMDowMDowMCAyMDE1IikgfCBbMSwyKSB8IDIuMAorIDAgfCAxIHwgWyJT YXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8 IFsxLDIpIHwgMi4wCisgMiB8IDMgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIlN1 biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpIHwgWzEsMikgfCAyLjAKKygzIHJvd3MpCisKIC0t IFRlc3Qgd2hvbGUtcm93IHJlZmVyZW5jZXMgdG8gdGhlIHZpZXcKIGNyZWF0ZSB0YWJsZSB1 dl9pb2N1X3RhYiAoYSBpbnQgdW5pcXVlLCBiIHRleHQpOwogY3JlYXRlIHZpZXcgdXZfaW9j dV92aWV3IGFzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhv dXRfb3ZlcmxhcHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292 ZXJsYXBzLm91dAppbmRleCAxMmQyZWJkNmE1Li44MGE0ZTYwNjk1IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKQEAgLTI5Miw2 ICsyOTIsMzYgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwg bmFtZSkKICAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAx JyksICdbNyw3XScsICdmb28nKSwKICAgKCdbMiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0w MScsICcyMDEwLTAxLTAxJyksICdbOSw5XScsICdiYXInKQogOworVVBEQVRFIHRlbXBvcmFs MyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA1LTAxJyBUTyAnMjAwMC0w Ny0wMScKKyAgU0VUIG5hbWUgPSBuYW1lIHx8ICcxJzsKK1VQREFURSB0ZW1wb3JhbDMgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNC0wMScgVE8gJzIwMDAtMDYtMDEn CisgIFNFVCBuYW1lID0gbmFtZSB8fCAnMicKKyAgV0hFUkUgaWQgPSAnWzIsMl0nOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbDMgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCAgaWQyICAgfCBuYW1lICAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEt MDEtMjAwMCwwNS0wMS0yMDAwKSB8IFs3LDgpICB8IGZvbworIFsxLDIpIHwgWzA1LTAxLTIw MDAsMDctMDEtMjAwMCkgfCBbNyw4KSAgfCBmb28xCisgWzEsMikgfCBbMDctMDEtMjAwMCww MS0wMS0yMDEwKSB8IFs3LDgpICB8IGZvbworIFsyLDMpIHwgWzAxLTAxLTIwMDAsMDQtMDEt MjAwMCkgfCBbOSwxMCkgfCBiYXIKKyBbMiwzKSB8IFswNC0wMS0yMDAwLDA1LTAxLTIwMDAp IHwgWzksMTApIHwgYmFyMgorIFsyLDMpIHwgWzA1LTAxLTIwMDAsMDYtMDEtMjAwMCkgfCBb OSwxMCkgfCBiYXIxMgorIFsyLDMpIHwgWzA2LTAxLTIwMDAsMDctMDEtMjAwMCkgfCBbOSwx MCkgfCBiYXIxCisgWzIsMykgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKSB8IFs5LDEwKSB8 IGJhcgorKDggcm93cykKKworLS0gY29uZmxpY3RpbmcgaWQgb25seToKK0lOU0VSVCBJTlRP IHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sx LDFdJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSwgJ1s4LDhdJywg J2ZvbzMnKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1 c2lvbiBjb25zdHJhaW50ICJ0ZW1wb3JhbDNfcGsiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxp ZF9hdCk9KFsxLDIpLCBbMDEtMDEtMjAwNSwwMS0wMS0yMDA2KSkgY29uZmxpY3RzIHdpdGgg ZXhpc3Rpbmcga2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgWzA3LTAxLTIwMDAsMDEtMDEt MjAxMCkpLgorLS0gY29uZmxpY3RpbmcgaWQyIG9ubHk6CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bDMgKGlkLCB2YWxpZF9hdCwgaWQyLCBuYW1lKQorICBWQUxVRVMKKyAgKCdbMywzXScsIGRh dGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5XScsICdiYXIzJyk7 CitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29u c3RyYWludCAidGVtcG9yYWwzX3VuaXEiCitERVRBSUw6ICBLZXkgKGlkMiwgdmFsaWRfYXQp PShbOSwxMCksIFswMS0wMS0yMDA1LDAxLTAxLTIwMTApKSBjb25mbGljdHMgd2l0aCBleGlz dGluZyBrZXkgKGlkMiwgdmFsaWRfYXQpPShbOSwxMCksIFswNy0wMS0yMDAwLDAxLTAxLTIw MTApKS4KIERST1AgVEFCTEUgdGVtcG9yYWwzOwogLS0KIC0tIHRlc3QgY2hhbmdpbmcgdGhl IFBLJ3MgZGVwZW5kZW5jaWVzCkBAIC0zNDQsNiArMzc0LDM2IEBAIFNFTEVDVCAqIEZST00g dHAyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKICBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTAx LTIwMTApIHwgdGhyZWUKICgxIHJvdykKIAorVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25l ZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAw MC0wMi0xNScKKyAgU0VUIG5hbWUgPSAnb25lMicKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOwor VVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDAwLTAyLTIwJyBUTyAnMjAwMC0wMi0yNScKKyAgU0VUIGlkID0gJ1s0LDRd JworICBXSEVSRSBuYW1lID0gJ29uZSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVk CisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDItMDEtMDEnIFRPICcyMDAz LTAxLTAxJworICBTRVQgaWQgPSAnWzIsMl0nCisgIFdIRVJFIG5hbWUgPSAndGhyZWUnOwor REVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAwMC0wMS0xNScgVE8gJzIwMDAtMDItMTUnCisgIFdIRVJFIGlkID0g J1szLDNdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkg aWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1l ICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikg fCBbMDEtMDEtMjAwMCwwMS0xNS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAxLTE1LTIwMDAs MDItMDEtMjAwMCkgfCBvbmUyCisgWzEsMikgfCBbMDItMDEtMjAwMCwwMi0xNS0yMDAwKSB8 IG9uZTIKKyBbMSwyKSB8IFswMi0xNS0yMDAwLDAyLTIwLTIwMDApIHwgb25lCisgWzEsMikg fCBbMDItMjUtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorIFsyLDMpIHwgWzAxLTAxLTIwMDIs MDEtMDEtMjAwMykgfCB0aHJlZQorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMTUtMjAwMCkg fCB0aHJlZQorIFszLDQpIHwgWzAyLTE1LTIwMDAsMDEtMDEtMjAwMikgfCB0aHJlZQorIFsz LDQpIHwgWzAxLTAxLTIwMDMsMDEtMDEtMjAxMCkgfCB0aHJlZQorIFs0LDUpIHwgWzAyLTIw LTIwMDAsMDItMjUtMjAwMCkgfCBvbmUKKygxMCByb3dzKQorCiBEUk9QIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkOwogLS0gdGVtcG9yYWwgVU5JUVVFOgogQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkICgKQEAgLTM3OSw2ICs0MzksMzYgQEAgU0VMRUNUICogRlJP TSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEt MDEtMjAxMCkgfCB0aHJlZQogKDEgcm93KQogCitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlv bmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcy MDAwLTAyLTE1JworICBTRVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9ICdbMSwxXSc7 CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMDAtMDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQgaWQgPSAnWzQs NF0nCisgIFdIRVJFIG5hbWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9u ZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0wMScgVE8gJzIw MDMtMDEtMDEnCisgIFNFVCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9ICd0aHJlZSc7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgV0hFUkUgaWQg PSAnWzMsM10nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5h bWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMSwy KSB8IFswMS0wMS0yMDAwLDAxLTE1LTIwMDApIHwgb25lCisgWzEsMikgfCBbMDEtMTUtMjAw MCwwMi0wMS0yMDAwKSB8IG9uZTIKKyBbMSwyKSB8IFswMi0wMS0yMDAwLDAyLTE1LTIwMDAp IHwgb25lMgorIFsxLDIpIHwgWzAyLTE1LTIwMDAsMDItMjAtMjAwMCkgfCBvbmUKKyBbMSwy KSB8IFswMi0yNS0yMDAwLDAzLTAxLTIwMDApIHwgb25lCisgWzIsMykgfCBbMDEtMDEtMjAw MiwwMS0wMS0yMDAzKSB8IHRocmVlCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0xNS0yMDAw KSB8IHRocmVlCisgWzMsNCkgfCBbMDItMTUtMjAwMCwwMS0wMS0yMDAyKSB8IHRocmVlCisg WzMsNCkgfCBbMDEtMDEtMjAwMywwMS0wMS0yMDEwKSB8IHRocmVlCisgWzQsNSkgfCBbMDIt MjAtMjAwMCwwMi0yNS0yMDAwKSB8IG9uZQorKDEwIHJvd3MpCisKIERST1AgVEFCTEUgdGVt cG9yYWxfcGFydGl0aW9uZWQ7CiAtLQogLS0gdGVzdCBGSyBkZXBlbmRlbmNpZXMKQEAgLTY2 OSwxMyArNzU5LDI1IEBAIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJwog V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0 ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFs X2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgogREVUQUlM OiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBm cm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIGNoYW5naW5nIGFuIHVucmVm ZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1NFVCBp ZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGNoYW5naW5nIGp1c3QgYSBw YXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitTRVQgaWQgPSAnWzcsN10n CitXSEVSRSBpZCA9ICdbNSw1XSc7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFi bGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVt cG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitE RVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIldlZCBKYW4gMDMgMDA6MDA6 MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVu Y2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgogLS0gdGhlbiBkZWxldGUg dGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVk czoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10n OwogVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAx LTAxJywgJzIwMTYtMDItMDEnKQogV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9 IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogLS0gY2xlYW4gdXA6CiBE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1 XSc7Ci1ERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nLCAnWzcsN10nKTsK IC0tCiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFJFU1RSSUNUCiAtLQpAQCAtNzA2LDEz ICs4MDgsMjUgQEAgVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCiBXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBv cmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtf cm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCiBERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20g dGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gY2hhbmdpbmcgYW4gdW5yZWZlcmVu Y2VkIHBhcnQgaXMgb2theToKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRPICcyMDE4LTAxLTAzJworU0VUIGlkID0g J1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gY2hhbmdpbmcganVzdCBhIHBhcnQg ZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1NFVCBpZCA9ICdbNyw3XScKK1dI RVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAi dGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJ TDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiV2VkIEphbiAwMyAwMDowMDowMCAy MDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQg ZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCiAtLSB0aGVuIGRlbGV0ZSB0aGUg b2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgog REVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBV UERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEn LCAnMjAxNi0wMi0wMScpCiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiAtLSBjbGVhbiB1cDoKIERFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsK LURFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScsICdbNyw3XScpOwogLS0K IC0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCiAtLQpAQCAtNzM0LDkgKzg0 OCwyMiBAQCBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLAogREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIEVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0 YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIK IERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDow MDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVy ZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBkZWxldGluZyBh biB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5n CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0w MS0wMycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGRlbGV0aW5nIGp1c3QgYSBwYXJ0IGZh aWxzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1dIRVJFIGlkID0gJ1s1LDVd JzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2 aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2Zr IiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZh bGlkX2F0KT0oWzUsNiksIFsiV2VkIEphbiAwMyAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAw MSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVt cG9yYWxfZmtfcm5nMnJuZyIuCiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJl Y29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScpOwogLS0KIC0tIHRlc3Qg RksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKIC0tCkBAIC03NTgsOSArODg1LDIyIEBAIERF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0 ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsCiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hF UkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1w b3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2Zr X3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgogREVUQUlMOiAg S2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgi LCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9t IHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIGRlbGV0aW5nIGFuIHVucmVmZXJl bmNlZCBwYXJ0IGlzIG9rYXk6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRPICcyMDE4LTAxLTAzJworV0hF UkUgaWQgPSAnWzUsNV0nOworLS0gZGVsZXRpbmcganVzdCBhIHBhcnQgZmFpbHM6CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJworV0hFUkUgaWQgPSAnWzUsNV0nOworRVJST1I6 ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxl ICJ0ZW1wb3JhbF9ma19ybmcycm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShb NSw2KSwgWyJXZWQgSmFuIDAzIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAw IDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19y bmcycm5nIi4KIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0 aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAtLQogLS0gdGVzdCBPTiBVUERBVEUv REVMRVRFIG9wdGlvbnMKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRl eCBiMDhhYWFlNDRiLi5jYzJmNmI0NmUwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2No ZWR1bGUKQEAgLTQ4LDcgKzQ4LDcgQEAgdGVzdDogY3JlYXRlX2luZGV4IGNyZWF0ZV9pbmRl eF9zcGdpc3QgY3JlYXRlX3ZpZXcgaW5kZXhfaW5jbHVkaW5nIGluZGV4X2luY2x1ZGkKICMg LS0tLS0tLS0tLQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzCiAjIC0tLS0t LS0tLS0KLXRlc3Q6IGNyZWF0ZV9hZ2dyZWdhdGUgY3JlYXRlX2Z1bmN0aW9uX3NxbCBjcmVh dGVfY2FzdCBjb25zdHJhaW50cyB0cmlnZ2VycyBzZWxlY3QgaW5oZXJpdCB0eXBlZF90YWJs ZSB2YWN1dW0gZHJvcF9pZl9leGlzdHMgdXBkYXRhYmxlX3ZpZXdzIHJvbGVhdHRyaWJ1dGVz IGNyZWF0ZV9hbSBoYXNoX2Z1bmMgZXJyb3JzIGluZmluaXRlX3JlY3Vyc2UKK3Rlc3Q6IGNy ZWF0ZV9hZ2dyZWdhdGUgY3JlYXRlX2Z1bmN0aW9uX3NxbCBjcmVhdGVfY2FzdCBjb25zdHJh aW50cyB0cmlnZ2VycyBzZWxlY3QgaW5oZXJpdCB0eXBlZF90YWJsZSB2YWN1dW0gZHJvcF9p Zl9leGlzdHMgdXBkYXRhYmxlX3ZpZXdzIHJvbGVhdHRyaWJ1dGVzIGNyZWF0ZV9hbSBoYXNo X2Z1bmMgZXJyb3JzIGluZmluaXRlX3JlY3Vyc2UgZm9yX3BvcnRpb25fb2YKIAogIyAtLS0t LS0tLS0tCiAjIHNhbml0eV9jaGVjayBkb2VzIGEgdmFjdXVtLCBhZmZlY3RpbmcgdGhlIHNv cnQgb3JkZXIgb2YgU0VMRUNUICoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2Zvcl9wb3J0aW9uX29mLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9u X29mLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lNjU5Njhm YmY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRp b25fb2Yuc3FsCkBAIC0wLDAgKzEsMzU5IEBACistLSBUZXN0cyBmb3IgVVBEQVRFL0RFTEVU RSBGT1IgUE9SVElPTiBPRgorCistLSBXb3JrcyBvbiBub24tUEsgY29sdW1ucworQ1JFQVRF IFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlk X2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4dCBOT1QgTlVMTAorKTsKK0lOU0VSVCBJTlRPIGZv cl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisoJ1sxLDFdJywgJ1syMDE4LTAxLTAyLDIwMjAt MDEtMDEpJywgJ29uZScpOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gJzIwMTktMDEtMDEnCitT RVQgbmFtZSA9ICdmb28nOworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTE1JyBUTyBOVUxMOworCitT RUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisKKy0tIFdvcmtzIG9uIG1vcmUg dGhhbiBvbmUgcmFuZ2UKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDsKK0NSRUFU RSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxp ZDFfYXQgdHNyYW5nZSwKKyAgdmFsaWQyX2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4dCBOT1Qg TlVMTAorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisoJ1sx LDFdJywgJ1syMDE4LTAxLTAyLDIwMTgtMDItMDMpJywgJ1syMDE1LTAxLTAxLDIwMjUtMDEt MDEpJywgJ29uZScpOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWQxX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPIE5VTEwKK1NFVCBuYW1lID0g J2Zvbyc7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDJfYXQgRlJPTSAnMjAx OC0wMS0xNScgVE8gTlVMTAorU0VUIG5hbWUgPSAnYmFyJzsKK1NFTEVDVCAqIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdDsKKworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWQxX2F0IEZST00gJzIwMTgtMDEtMjAnIFRPIE5VTEw7CitT RUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisKK0RFTEVURSBGUk9NIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkMl9hdCBGUk9NICcyMDE4LTAx LTIwJyBUTyBOVUxMOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCist LSBUZXN0IHdpdGggTlVMTHMgaW4gdGhlIHNjYWxhci9yYW5nZSBrZXkgY29sdW1ucy4KKy0t IFRoaXMgd29uJ3QgaGFwcGVuIGlmIHRoZXJlIGlzIGEgUFJJTUFSWSBLRVkgb3IgVU5JUVVF IGNvbnN0cmFpbnQKKy0tIGJ1dCBGT1IgUE9SVElPTiBPRiBzaG91bGRuJ3QgcmVxdWlyZSB0 aGF0LgorRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFVOTE9HR0VE IFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlk X2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4dAorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9u X29mX3Rlc3QgVkFMVUVTCisgICgnWzEsMV0nLCBOVUxMLCAnMSBudWxsJyksCisgICgnWzEs MV0nLCAnKCwpJywgJzEgdW5ib3VuZGVkJyksCisgICgnWzEsMV0nLCAnZW1wdHknLCAnMSBl bXB0eScpLAorICAoTlVMTCwgTlVMTCwgTlVMTCksCisgIChOVUxMLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTktMDEtMDEnKSwgJ251bGwga2V5Jyk7CitVUERBVEUgZm9yX3BvcnRp b25fb2ZfdGVzdAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVM TAorICBTRVQgbmFtZSA9ICdOVUxMIHRvIE5VTEwnOworU0VMRUNUICogRlJPTSBmb3JfcG9y dGlvbl9vZl90ZXN0OworCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVB VEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSBOT1QgTlVM TCwKKyAgdmFsaWRfYXQgdHNyYW5nZSBOT1QgTlVMTCwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxM LAorCUNPTlNUUkFJTlQgZm9yX3BvcnRpb25fb2ZfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29m X3Rlc3QKK1ZBTFVFUworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdv bmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDItMDMsMjAxOC0wMy0wMyknLCAnb25lJyksCiso J1sxLDFdJywgJ1syMDE4LTAzLTAzLDIwMTgtMDQtMDQpJywgJ29uZScpLAorKCdbMiwyXScs ICdbMjAxOC0wMS0wMSwyMDE4LTAxLTA1KScsICd0d28nKSwKKygnWzMsM10nLCAnWzIwMTgt MDEtMDEsKScsICd0aHJlZScpLAorKCdbNCw0XScsICcoLDIwMTgtMDQtMDEpJywgJ2ZvdXIn KSwKKygnWzUsNV0nLCAnKCwpJywgJ2ZpdmUnKQorOworCistLQorLS0gVVBEQVRFIHRlc3Rz CistLQorCistLSBTZXR0aW5nIHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAn MjAxOC0wNi0wMScgVE8gTlVMTAorU0VUIG5hbWUgPSAnZm9vJworV0hFUkUgaWQgPSAnWzUs NV0nOworCistLSBTZXR0aW5nIHRoZSByYW5nZSBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRP IE5VTEwKK1NFVCB2YWxpZF9hdCA9ICdbMTk5MC0wMS0wMSwxOTk5LTAxLTAxKScKK1dIRVJF IGlkID0gJ1s1LDVdJzsKKworLS0gVGhlIHdyb25nIHR5cGUgZmFpbHMKK1VQREFURSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDEgVE8gNAor U0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gU2V0dGluZyB3 aXRoIHRpbWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAx OC0wMS0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjEnCitXSEVSRSBpZCA9ICdbMywzXSc7CisK Ky0tIFNldHRpbmcgd2l0aCBhIHN1YnF1ZXJ5IGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAoU0VMRUNUICcyMDE4LTAx LTAxJykgVE8gJzIwMTgtMDYtMDEnCitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAn WzMsM10nOworCistLSBTZXR0aW5nIHdpdGggYSBjb2x1bW4gZmFpbHMKK1VQREFURSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIGxvd2VyKHZh bGlkX2F0KSBUTyBOVUxMCitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsM10n OworCistLSBTZXR0aW5nIHdpdGggdGltZXN0YW1wcyBlcXVhbCBkb2VzIG5vdGhpbmcKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE4LTA0LTAxJyBUTyAnMjAxOC0wNC0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjAnCitX SEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29wZW4gcG9ydGlv biB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAor U0VUIG5hbWUgPSAndGhyZWVeMScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gVXBkYXRp bmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYW4gb3Blbi9maW5pdGUgdGFyZ2V0CitV UERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSBOVUxMIFRPICcyMDE4LTAzLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMicKK1dIRVJFIGlk ID0gJ1szLDNdJzsKKworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9ydGlvbiB3aXRo IGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMi0wMScKK1NFVCBu YW1lID0gJ2ZvdXJeMScKK1dIRVJFIGlkID0gJ1s0LDRdJzsKKworLS0gVXBkYXRpbmcgYW4g b3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAx Ny0wMS0wMScgVE8gTlVMTAorU0VUIG5hbWUgPSAnZm91cl4yJworV0hFUkUgaWQgPSAnWzQs NF0nOworCistLSBVcGRhdGluZyBhIGZpbml0ZS9maW5pdGUgcG9ydGlvbiB3aXRoIGFuIGV4 YWN0IGZpdAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPICcyMDE4LTAyLTAxJworU0VUIG5hbWUgPSAn Zm91cl4zJworV0hFUkUgaWQgPSAnWzQsNF0nOworCistLSBVcGRhdGluZyBhbiBlbmNsb3Nl ZCBzcGFuCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1NFVCBuYW1lID0gJ3R3b14yJworV0hFUkUgaWQg PSAnWzIsMl0nOworCistLSBVcGRhdGluZyBhbiBvcGVuL29wZW4gcG9ydGlvbiB3aXRoIGEg ZmluaXRlL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAxJyBUTyAnMjAxOS0wMS0wMScK K1NFVCBuYW1lID0gJ2ZpdmVeMicKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gVXBkYXRp bmcgYW4gZW5jbG9zZWQgc3BhbiB3aXRoIHNlcGFyYXRlIHByb3RydWRpbmcgc3BhbnMKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE3LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeMycKK1dI RVJFIGlkID0gJ1s1LDVdJzsKKworLS0gVXBkYXRpbmcgbXVsdGlwbGUgZW5jbG9zZWQgc3Bh bnMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NIE5VTEwgVE8gTlVMTAorU0VUIG5hbWUgPSAnb25lXjInCitXSEVSRSBpZCA9ICdb MSwxXSc7CisKKy0tIFVwZGF0aW5nIHdpdGggYSBzaGlmdC9yZWR1Y2UgY29uZmxpY3QKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBG Uk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5URVJWQUwgJzEnIEhPVVIgVE8gTUlO VVRFCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25lXjMnCitXSEVSRSBpZCA9 ICdbMSwxXSc7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5URVJWQUwg JzInIEhPVVIKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeNCcKK1dIRVJF IGlkID0gJ1sxLDFdJzsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0CisgIEZST00gKCcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5U RVJWQUwgJzInIEhPVVIpCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25lXjQn CitXSEVSRSBpZCA9ICdbMSwxXSc7CisKKy0tIFVwZGF0aW5nIHRoZSBub24tcmFuZ2UgcGFy dCBvZiB0aGUgUEs6CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMi0xNScgVE8gTlVMTAorU0VUIGlkID0gJ1s2LDZd JworV0hFUkUgaWQgPSAnWzEsMV0nOworCistLSBVUERBVEUgd2l0aCBubyBXSEVSRSBjbGF1 c2UKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDMwLTAxLTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9IG5hbWUgfHwgJyonOwor CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlk X2F0OworCistLQorLS0gREVMRVRFIHRlc3RzCistLQorCistLSBEZWxldGluZyB3aXRoIGEg bWlzc2luZyBjb2x1bW4gZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAor V0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBEZWxldGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2 ZXJzZWQgZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDE4LTAxLTAxJworV0hF UkUgaWQgPSAnWzMsM10nOworCistLSBEZWxldGluZyB3aXRoIHRpbWVzdGFtcHMgZXF1YWwg ZG9lcyBub3RoaW5nCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyAnMjAxOC0wNC0wMScKK1dI RVJFIGlkID0gJ1szLDNdJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhIGNsb3NlZC9jbG9zZWQg dGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAyMC0wNi0wMScKK1dIRVJFIGlk ID0gJ1s1LDVdJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhIGNsb3NlZC9vcGVuIHRhcmdldAor REVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzMsM10nOworCist LSBEZWxldGluZyB3aXRoIGFuIG9wZW4vY2xvc2VkIHRhcmdldAorREVMRVRFIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRP ICcyMDE4LTAyLTA4JworV0hFUkUgaWQgPSAnWzEsMV0nOworCistLSBEZWxldGluZyB3aXRo IGFuIG9wZW4vb3BlbiB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitXSEVSRSBpZCA9 ICdbNiw2XSc7CisKKy0tIERFTEVURSB3aXRoIG5vIFdIRVJFIGNsYXVzZQorREVMRVRFIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAyNS0wMS0wMScgVE8gTlVMTDsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90 ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworLS0gVVBEQVRFIC4uLiBSRVRVUk5JTkcg cmV0dXJucyBvbmx5IHRoZSB1cGRhdGVkIHZhbHVlcyAobm90IHRoZSBpbnNlcnRlZCBzaWRl IHZhbHVlcykKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTAyLTAxJyBUTyAnMjAxOC0wMi0xNScKK1NFVCBuYW1lID0g J3RocmVlXjMnCitXSEVSRSBpZCA9ICdbMywzXScKK1JFVFVSTklORyAqOworCistLSB0ZXN0 IHRoYXQgd2UgcnVuIHRyaWdnZXJzIG9uIHRoZSBVUERBVEUvREVMRVRFZCByb3cgYW5kIHRo ZSBJTlNFUlRlZCByb3dzCisKK0NSRUFURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmln Z2VyKCkKK1JFVFVSTlMgdHJpZ2dlcgorQVMKKyQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0Ug JyUgJSAlIG9mICUnLCBUR19XSEVOLCBUR19PUCwgTkVXLnZhbGlkX2F0LCBPTEQudmFsaWRf YXQ7CisgIElGIFRHX09QID0gJ0RFTEVURScgVEhFTgorICAgIFJFVFVSTiBPTEQ7CisgIEVM U0UKKyAgICBSRVRVUk4gTkVXOworICBFTkQgSUY7CitFTkQ7CiskJAorTEFOR1VBR0UgcGxw Z3NxbDsKKworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9yZV9pbnNl cnQKKyAgQkVGT1JFIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNI IFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NS RUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcl9pbnNlcnQKKyAgQUZURVIg SU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNV VEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIg dHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9yZV91cGRhdGUKKyAgQkVGT1JFIFVQREFURSBPTiBm b3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9O IGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9y dGlvbl9vZl9hZnRlcl91cGRhdGUKKyAgQUZURVIgVVBEQVRFIE9OIGZvcl9wb3J0aW9uX29m X3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25f b2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9y ZV9kZWxldGUKKyAgQkVGT1JFIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZP UiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIo KTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcl9kZWxldGUKKyAg QUZURVIgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisg IEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworCitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAy MS0wMS0wMScgVE8gJzIwMjItMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjQnCitXSEVSRSBp ZCA9ICdbNSw1XSc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjMtMDEtMDEnIFRPICcyMDI0LTAxLTAxJwor V0hFUkUgaWQgPSAnWzUsNV0nOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworCistLSBUZXN0IHdpdGggYSBjdXN0b20gcmFu Z2UgdHlwZQorCitDUkVBVEUgVFlQRSBteWRhdGVyYW5nZSBBUyByYW5nZShzdWJ0eXBlPWRh dGUpOworCitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDIgKAorICBpZCBpbnQ0 cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2F0IG15ZGF0ZXJhbmdlIE5PVCBOVUxMLAorICBu YW1lIHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9vZl90ZXN0Ml9w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5T RVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdDIKK1ZBTFVFUworKCdbMSwxXScsICdbMjAx OC0wMS0wMiwyMDE4LTAyLTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDItMDMs MjAxOC0wMy0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAzLTAzLDIwMTgtMDQt MDQpJywgJ29uZScpLAorKCdbMiwyXScsICdbMjAxOC0wMS0wMSwyMDE4LTA1LTAxKScsICd0 d28nKSwKKygnWzMsM10nLCAnWzIwMTgtMDEtMDEsKScsICd0aHJlZScpOworOworCitVUERB VEUgZm9yX3BvcnRpb25fb2ZfdGVzdDIKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTgtMDEtMTAnIFRPICcyMDE4LTAyLTEwJworU0VUIG5hbWUgPSAnb25lXjEnCitXSEVS RSBpZCA9ICdbMSwxXSc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyAnMjAxOC0wMi0x NScKK1dIRVJFIGlkID0gJ1syLDJdJzsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0MiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisKK0RST1AgVEFCTEUgZm9yX3BvcnRp b25fb2ZfdGVzdDI7CitEUk9QIFRZUEUgbXlkYXRlcmFuZ2U7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wcml2aWxlZ2VzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3ByaXZpbGVnZXMuc3FsCmluZGV4IDNmNjhjYWZjZDEuLmUxMGFkZGVkOWQgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsCkBAIC03MTMsNiArNzEzLDI0IEBAIFVQREFU RSBlcnJ0c3QgU0VUIGEgPSAnYWFhYScsIGIgPSBOVUxMIFdIRVJFIGEgPSAnYWFhJzsKIFNF VCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOwogRFJPUCBUQUJM RSBlcnJ0c3Q7CiAKKy0tIHRlc3QgY29sdW1uLWxldmVsIHByaXZpbGVnZXMgb24gdGhlIHJh bmdlL1BFUklPRCB1c2VkIGluIEZPUiBQT1JUSU9OIE9GCitTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKK0NSRUFURSBUQUJMRSB0MSAoCisgIGMxIGlu dDRyYW5nZSwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHQxcGsgUFJJTUFS WSBLRVkgKGMxLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0dSQU5UIFNFTEVD VCBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjI7CitHUkFOVCBTRUxFQ1QgT04gdDEgVE8g cmVncmVzc19wcml2X3VzZXIzOworR1JBTlQgVVBEQVRFIChjMSkgT04gdDEgVE8gcmVncmVz c19wcml2X3VzZXIyOworR1JBTlQgVVBEQVRFIChjMSwgdmFsaWRfYXQpIE9OIHQxIFRPIHJl Z3Jlc3NfcHJpdl91c2VyMzsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19w cml2X3VzZXIyOworVVBEQVRFIHQxIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MDAtMDEtMDEnIFRPICcyMDAxLTAxLTAxJyBTRVQgYzEgPSAnWzIsMyknOworU0VUIFNFU1NJ T04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjM7CitVUERBVEUgdDEgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNF VCBjMSA9ICdbMiwzKSc7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJp dl91c2VyMTsKK0RST1AgVEFCTEUgdDE7CisKIC0tIHRlc3QgY29sdW1uLWxldmVsIHByaXZp bGVnZXMgd2hlbiBpbnZvbHZlZCB3aXRoIERFTEVURQogU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CiBBTFRFUiBUQUJMRSBhdGVzdDYgQUREIENPTFVN TiB0aHJlZSBpbnRlZ2VyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBk YXRhYmxlX3ZpZXdzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3 cy5zcWwKaW5kZXggZWFlZTBiN2UxZC4uZjgxNDcwMWE0MyAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsCkBAIC0xNTQxLDYgKzE1NDEsMjAgQEAgc2Vs ZWN0ICogZnJvbSB1dl9pb2N1X3RhYjsKIGRyb3AgdmlldyB1dl9pb2N1X3ZpZXc7CiBkcm9w IHRhYmxlIHV2X2lvY3VfdGFiOwogCistLSBDaGVjayBVUERBVEUgRk9SIFBPUlRJT04gT0Yg d29ya3MgY29ycmVjdGx5CitjcmVhdGUgdGFibGUgdXZfZnBvX3RhYiAoaWQgaW50NHJhbmdl LCB2YWxpZF9hdCB0c3JhbmdlLCBiIGZsb2F0LAorICAgIGNvbnN0cmFpbnQgcGtfdXZfZnBv X3RhYiBwcmltYXJ5IGtleSAoaWQsIHZhbGlkX2F0IHdpdGhvdXQgb3ZlcmxhcHMpKTsKK2lu c2VydCBpbnRvIHV2X2Zwb190YWIgdmFsdWVzICgnWzEsMV0nLCAnWzIwMjAtMDEtMDEsIDIw MzAtMDEtMDEpJywgMCk7CitjcmVhdGUgdmlldyB1dl9mcG9fdmlldyBhcworICAgIHNlbGVj dCBiLCBiKzEgYXMgYywgdmFsaWRfYXQsIGlkLCAnMi4wJzo6dGV4dCBhcyB0d28gZnJvbSB1 dl9mcG9fdGFiOworCitpbnNlcnQgaW50byB1dl9mcG9fdmlldyAoaWQsIHZhbGlkX2F0LCBi KSB2YWx1ZXMgKCdbMSwxXScsICdbMjAxMC0wMS0wMSwgMjAyMC0wMS0wMSknLCAxKTsKK3Nl bGVjdCAqIGZyb20gdXZfZnBvX3ZpZXc7Cit1cGRhdGUgdXZfZnBvX3ZpZXcgZm9yIHBvcnRp b24gb2YgdmFsaWRfYXQgZnJvbSAnMjAxNS0wMS0wMScgdG8gJzIwMjAtMDEtMDEnIHNldCBi ID0gMiB3aGVyZSBpZCA9ICdbMSwxXSc7CitzZWxlY3QgKiBmcm9tIHV2X2Zwb192aWV3Owor ZGVsZXRlIGZyb20gdXZfZnBvX3ZpZXcgZm9yIHBvcnRpb24gb2YgdmFsaWRfYXQgZnJvbSAn MjAxNy0wMS0wMScgdG8gJzIwMjItMDEtMDEnIHdoZXJlIGlkID0gJ1sxLDFdJzsKK3NlbGVj dCAqIGZyb20gdXZfZnBvX3ZpZXc7CisKIC0tIFRlc3Qgd2hvbGUtcm93IHJlZmVyZW5jZXMg dG8gdGhlIHZpZXcKIGNyZWF0ZSB0YWJsZSB1dl9pb2N1X3RhYiAoYSBpbnQgdW5pcXVlLCBi IHRleHQpOwogY3JlYXRlIHZpZXcgdXZfaW9jdV92aWV3IGFzCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCmluZGV4IDIxMjQxZWY5YzIuLjI1MGVlNzFi MWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMu c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBA IC0yMjMsNiArMjIzLDIwIEBAIElOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0 LCBpZDIsIG5hbWUpCiAgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAx MC0wMS0wMScpLCAnWzcsN10nLCAnZm9vJyksCiAgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIw MDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAnYmFyJykKIDsKK1VQREFURSB0 ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNS0wMScgVE8g JzIwMDAtMDctMDEnCisgIFNFVCBuYW1lID0gbmFtZSB8fCAnMSc7CitVUERBVEUgdGVtcG9y YWwzIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDQtMDEnIFRPICcyMDAw LTA2LTAxJworICBTRVQgbmFtZSA9IG5hbWUgfHwgJzInCisgIFdIRVJFIGlkID0gJ1syLDJd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWwzIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKy0t IGNvbmZsaWN0aW5nIGlkIG9ubHk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxp ZF9hdCwgaWQyLCBuYW1lKQorICBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAw NS0wMS0wMScsICcyMDA2LTAxLTAxJyksICdbOCw4XScsICdmb28zJyk7CistLSBjb25mbGlj dGluZyBpZDIgb25seToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBp ZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAx JywgJzIwMTAtMDEtMDEnKSwgJ1s5LDldJywgJ2JhcjMnKTsKIERST1AgVEFCTEUgdGVtcG9y YWwzOwogCiAtLQpAQCAtMjYxLDYgKzI3NSwyMiBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZCBWQUxVRVMKIFNFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQg T1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkgaWQs IHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0Owor VVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgU0VUIG5hbWUgPSAnb25l MicKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25l ZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAyLTIwJyBUTyAnMjAw MC0wMi0yNScKKyAgU0VUIGlkID0gJ1s0LDRdJworICBXSEVSRSBuYW1lID0gJ29uZSc7CitV UERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMDItMDEtMDEnIFRPICcyMDAzLTAxLTAxJworICBTRVQgaWQgPSAnWzIsMl0n CisgIFdIRVJFIG5hbWUgPSAndGhyZWUnOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0xNScgVE8g JzIwMDAtMDItMTUnCisgIFdIRVJFIGlkID0gJ1szLDNdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogRFJPUCBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZDsKIAogLS0gdGVtcG9yYWwgVU5JUVVFOgpAQCAtMjc5LDYg KzMwOSwyMiBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKIFNF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0 OwogU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICog RlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0 aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBU TyAnMjAwMC0wMi0xNScKKyAgU0VUIG5hbWUgPSAnb25lMicKKyAgV0hFUkUgaWQgPSAnWzEs MV0nOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDAwLTAyLTIwJyBUTyAnMjAwMC0wMi0yNScKKyAgU0VUIGlkID0g J1s0LDRdJworICBXSEVSRSBuYW1lID0gJ29uZSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRp dGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDItMDEtMDEnIFRP ICcyMDAzLTAxLTAxJworICBTRVQgaWQgPSAnWzIsMl0nCisgIFdIRVJFIG5hbWUgPSAndGhy ZWUnOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0xNScgVE8gJzIwMDAtMDItMTUnCisgIFdIRVJF IGlkID0gJ1szLDNdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JE RVIgQlkgaWQsIHZhbGlkX2F0OwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsK IAogLS0KQEAgLTUzOSwxMyArNTg1LDIzIEBAIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIC0tIGNoYW5n aW5nIHRoZSBzY2FsYXIgcGFydCBmYWlsczoKIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlk ID0gJ1s3LDddJwogV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2hhbmdpbmcgYW4gdW5yZWZlcmVu Y2VkIHBhcnQgaXMgb2theToKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRPICcyMDE4LTAxLTAzJworU0VUIGlkID0g J1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gY2hhbmdpbmcganVzdCBhIHBhcnQg ZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1NFVCBpZCA9ICdbNyw3XScKK1dI RVJFIGlkID0gJ1s1LDVdJzsKIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVj b3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIFVQREFURSB0ZW1wb3JhbF9y bmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykK IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwotREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJywgJ1s3LDddJyk7CiAKIC0tCiAtLSB0ZXN0IEZLIHBh cmVudCB1cGRhdGVzIFJFU1RSSUNUCkBAIC01NzQsMTMgKzYzMCwyMyBAQCBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CiAtLSBjaGFuZ2luZyB0aGUgc2NhbGFyIHBhcnQgZmFpbHM6CiBVUERBVEUgdGVt cG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5n aW5nIGFuIHVucmVmZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitVUERBVEUgdGVtcG9yYWxfcm5n CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0w MS0wMycKK1NFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGNoYW5n aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitTRVQg aWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUg b2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgog REVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBV UERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEn LCAnMjAxNi0wMi0wMScpCiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiAtLSBjbGVhbiB1cDoKIERFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsK LURFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScsICdbNyw3XScpOwogLS0K IC0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCiAtLQpAQCAtNjAwLDE0ICs2 NjYsMjQgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywz XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0KIERFTEVURSBGUk9NIHRlbXBv cmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAx OC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CiAtLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJl Y2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CistLSBkZWxldGluZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBv a2F5OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1dIRVJFIGlkID0gJ1s1LDVd JzsKKy0tIGRlbGV0aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVtcG9y YWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAn MjAxOC0wMS0xMCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKIC0tIHRoZW4gZGVsZXRlIHRoZSBv YmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CiBE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIERF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0 ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1 LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7 CiAKIC0tCiAtLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCiAtLQotCiBBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfZms7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCkBAIC02 MjQsOSArNzAwLDIwIEBAIElOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVT ICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtCiBERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOwogLS0gYSBQSyBkZWxldGUgdGhhdCBm YWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CiBERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gZGVsZXRpbmcgYW4gdW5yZWZlcmVuY2VkIHBh cnQgaXMgb2theToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIwMTgtMDEtMDMnCitXSEVSRSBpZCA9 ICdbNSw1XSc7CistLSBkZWxldGluZyBqdXN0IGEgcGFydCBmYWlsczoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0w NScgVE8gJzIwMTgtMDEtMTAnCitXSEVSRSBpZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0 ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2Nl ZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywz XSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2 YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xl YW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9p ZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdb NSw1XScpOwogCiAtLQogLS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKLS0gCjIu NDIuMAoK --------------jwdNqnl5yO2Lo4Yc0EOjsS0s Content-Type: text/x-patch; charset=UTF-8; name="v18-0004-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.patch" Content-Disposition: attachment; filename*0="v18-0004-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxZTkzZTI2OGQzMjdmNTExMDg1OWM1YjcwNDQ0ZWFiZWIzYjMyOGQ2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMyBKdW4gMjAyMyAyMTo0MToxMSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggdjE4IDQvNV0gQWRkIENBU0NBREUvU0VUIE5VTEwvU0VUIERF RkFVTFQgZm9yIHRlbXBvcmFsIGZvcmVpZ24KIGtleXMKCi0tLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDQyICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCA1NDkgKysrKysrKysrKystCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgMjAgKwog Li4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwgODI3ICsr KysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFw cy5zcWwgICAgIHwgNDM4ICsrKysrKysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTgzNiBpbnNl cnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CmluZGV4IDQ4MDM2OGFkOWUuLjAzMGZmNGFkYWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgYWRkRmtS ZWN1cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmEK IAkJCQkJCQkJCQkJYm9vbCBvbGRfY2hlY2tfb2ssCiAJCQkJCQkJCQkJCU9pZCBwYXJlbnRE ZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlciwKIAkJCQkJCQkJCQkJYm9vbCBpc190 ZW1wb3JhbCk7Ci1zdGF0aWMgdm9pZCB2YWxpZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5zKGlu dCBudW1ma3MsIGNvbnN0IGludDE2ICpma2F0dG51bXMsCitzdGF0aWMgdm9pZCB2YWxpZGF0 ZUZrT25EZWxldGVTZXRDb2x1bW5zKGludCBudW1ma3MsIGNvbnN0IGludDE2ICpma2F0dG51 bXMsIGNvbnN0IGludDE2ICpma3BlcmlvZGF0dG51bXMsCiAJCQkJCQkJCQkJIGludCBudW1m a3NldGNvbHMsIGNvbnN0IGludDE2ICpma3NldGNvbHNhdHRudW1zLAogCQkJCQkJCQkJCSBM aXN0ICpma3NldGNvbHMpOwogc3RhdGljIHZvaWQgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmco TGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LApAQCAtOTY1Myw3ICs5 NjUzLDcgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAludW1ma2RlbHNldGNvbHMgPSB0 cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHJlbCksCiAJCQkJCQkJ CQkJCSAgZmtjb25zdHJhaW50LT5ma19kZWxfc2V0X2NvbHMsCiAJCQkJCQkJCQkJCSAgZmtk ZWxzZXRjb2xzLCBOVUxMKTsKLQl2YWxpZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5zKG51bWZr cywgZmthdHRudW0sCisJdmFsaWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhudW1ma3MsIGZr YXR0bnVtLCBma3BlcmlvZGF0dG51bXMsCiAJCQkJCQkJCSBudW1ma2RlbHNldGNvbHMsIGZr ZGVsc2V0Y29scywKIAkJCQkJCQkJIGZrY29uc3RyYWludC0+ZmtfZGVsX3NldF9jb2xzKTsK IApAQCAtOTgyNSwxMiArOTgyNSwxNSBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExp c3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogICov CiB2b2lkCiB2YWxpZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5zKGludCBudW1ma3MsIGNvbnN0 IGludDE2ICpma2F0dG51bXMsCisJCQkJCQkJIGNvbnN0IGludDE2ICpma3BlcmlvZGF0dG51 bXMsCiAJCQkJCQkJIGludCBudW1ma3NldGNvbHMsIGNvbnN0IGludDE2ICpma3NldGNvbHNh dHRudW1zLAogCQkJCQkJCSBMaXN0ICpma3NldGNvbHMpCiB7CiAJZm9yIChpbnQgaSA9IDA7 IGkgPCBudW1ma3NldGNvbHM7IGkrKykKIAl7CiAJCWludDE2CQlzZXRjb2xfYXR0bnVtID0g ZmtzZXRjb2xzYXR0bnVtc1tpXTsKKwkJLyogYXNzdW1lIG9ubHkgb25lIFBFUklPRCBrZXkg Y29sdW1uIGluIGEgZm9yZWlnbiBrZXkgKi8KKwkJaW50MTYJCWZrcGVyaW9kX2F0dG51bSA9 IGZrcGVyaW9kYXR0bnVtc1swXTsKIAkJYm9vbAkJc2VlbiA9IGZhbHNlOwogCiAJCWZvciAo aW50IGogPSAwOyBqIDwgbnVtZmtzOyBqKyspCkBAIC05ODQwLDYgKzk4NDMsMTMgQEAgdmFs aWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhpbnQgbnVtZmtzLCBjb25zdCBpbnQxNiAqZmth dHRudW1zLAogCQkJCXNlZW4gPSB0cnVlOwogCQkJCWJyZWFrOwogCQkJfQorCQkJaWYgKGZr cGVyaW9kX2F0dG51bSA9PSBzZXRjb2xfYXR0bnVtKQorCQkJeworCQkJCWNoYXIJICAgKmNv bCA9IHN0clZhbChsaXN0X250aChma3NldGNvbHMsIGkpKTsKKwkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAor CQkJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiByZWZlcmVuY2VkIGluIE9OIERFTEVURSBT RVQgYWN0aW9uIGNhbm5vdCBiZSBQRVJJT0QiLCBjb2wpKSk7CisJCQl9CiAJCX0KIAogCQlp ZiAoIXNlZW4pCkBAIC0xMjQyMCwxMSArMTI0MzAsMTkgQEAgY3JlYXRlRm9yZWlnbktleUFj dGlvblRyaWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAq Zmtjb25zdHIKIAkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJU UklfRktleV9yZXN0cmljdF9kZWwiKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgRktDT05TVFJf QUNUSU9OX0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwor CQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXIt PmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2Nhc2NhZGVfZGVsIik7CisJ CQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJCWZrX3Ry aWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJy ZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1l KCJUUklfRktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNU Ul9BQ1RJT05fU0VUREVGQVVMVDoKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkJIGVycm1zZygiYWN0 aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cyIpKSk7CisJCQkJ ZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRk ZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlRSSV9GS2V5X3NldGRlZmF1bHRfZGVsIik7CiAJCQkJYnJlYWs7CiAJCQlkZWZh dWx0OgogCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVk IiwKQEAgLTEyNTExLDExICsxMjUyOSwxOSBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJp Z2dlcnMoUmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0 cgogCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5 X3Jlc3RyaWN0X3VwZCIpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f Q0FTQ0FERToKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtf dHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25h bWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKKwkJCQlicmVh azsKIAkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZh bHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9G S2V5X3NldG51bGxfdXBkIik7CisJCQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElP Tl9TRVRERUZBVUxUOgotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCQkgZXJybXNnKCJhY3Rpb24gbm90 IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIikpKTsKKwkJCQlma190cmln Z2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVk ID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgi VFJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQiKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJ CQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRleCA1NWIzMjQ4Yjc4Li43MGFjZTcw ZTdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwpAQCAtODMsNiArODMs MTIgQEAKICNkZWZpbmUgUklfUExBTl9TRVROVUxMX09OVVBEQVRFCQk3CiAjZGVmaW5lIFJJ X1BMQU5fU0VUREVGQVVMVF9PTkRFTEVURQkJOAogI2RlZmluZSBSSV9QTEFOX1NFVERFRkFV TFRfT05VUERBVEUJCTkKKyNkZWZpbmUgVFJJX1BMQU5fQ0FTQ0FERV9PTkRFTEVURQkJMTAK KyNkZWZpbmUgVFJJX1BMQU5fQ0FTQ0FERV9PTlVQREFURQkJMTEKKyNkZWZpbmUgVFJJX1BM QU5fU0VUTlVMTF9PTlVQREFURQkJMTIKKyNkZWZpbmUgVFJJX1BMQU5fU0VUTlVMTF9PTkRF TEVURQkJMTMKKyNkZWZpbmUgVFJJX1BMQU5fU0VUREVGQVVMVF9PTlVQREFURQkxNAorI2Rl ZmluZSBUUklfUExBTl9TRVRERUZBVUxUX09OREVMRVRFCTE1CiAKICNkZWZpbmUgTUFYX1FV T1RFRF9OQU1FX0xFTiAgKE5BTUVEQVRBTEVOKjIrMykKICNkZWZpbmUgTUFYX1FVT1RFRF9S RUxfTkFNRV9MRU4gIChNQVhfUVVPVEVEX05BTUVfTEVOKjIpCkBAIC0xOTAsNiArMTk2LDcg QEAgc3RhdGljIGJvb2wgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVsLCBSZWxh dGlvbiBma19yZWwsCiAJCQkJCQkJICBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZv KTsKIHN0YXRpYyBEYXR1bSByaV9yZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJv b2wgaXNfbm9fYWN0aW9uKTsKIHN0YXRpYyBEYXR1bSByaV9zZXQoVHJpZ2dlckRhdGEgKnRy aWdkYXRhLCBib29sIGlzX3NldF9udWxsLCBpbnQgdGdraW5kKTsKK3N0YXRpYyBEYXR1bSB0 cmlfc2V0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRn a2luZCk7CiBzdGF0aWMgdm9pZCBxdW90ZU9uZU5hbWUoY2hhciAqYnVmZmVyLCBjb25zdCBj aGFyICpuYW1lKTsKIHN0YXRpYyB2b2lkIHF1b3RlUmVsYXRpb25OYW1lKGNoYXIgKmJ1ZmZl ciwgUmVsYXRpb24gcmVsKTsKIHN0YXRpYyB2b2lkIHJpX0dlbmVyYXRlUXVhbChTdHJpbmdJ bmZvIGJ1ZiwKQEAgLTEzOTEsNiArMTM5OCwxMjcgQEAgVFJJX0ZLZXlfcmVzdHJpY3RfZGVs KFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAq KSBmY2luZm8tPmNvbnRleHQsIGZhbHNlKTsKIH0KIAorLyoKKyAqIFRSSV9GS2V5X2Nhc2Nh ZGVfZGVsIC0KKyAqCisgKiBDYXNjYWRlZCBkZWxldGUgZm9yZWlnbiBrZXkgcmVmZXJlbmNl cyBhdCBkZWxldGUgZXZlbnQgb24gdGVtcG9yYWwgUEsgdGFibGUuCisgKi8KK0RhdHVtCitU UklfRktleV9jYXNjYWRlX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCVRyaWdnZXJEYXRh ICp0cmlnZGF0YSA9IChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQ7CisJY29uc3Qg UklfQ29uc3RyYWludEluZm8gKnJpaW5mbzsKKwlSZWxhdGlvbglma19yZWw7CisJUmVsYXRp b24JcGtfcmVsOworCVR1cGxlVGFibGVTbG90ICpvbGRzbG90OworCVJJX1F1ZXJ5S2V5IHFr ZXk7CisJU1BJUGxhblB0ciAgcXBsYW47CisJRGF0dW0gdGFyZ2V0UmFuZ2U7CisKKwkvKiBD aGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRp bWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9j YXNjYWRlX2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwlyaWluZm8gPSByaV9GZXRj aENvbnN0cmFpbnRJbmZvKHRyaWdkYXRhLT50Z190cmlnZ2VyLAorCQkJCQkJCQkJdHJpZ2Rh dGEtPnRnX3JlbGF0aW9uLCB0cnVlKTsKKworCS8qCisJICogR2V0IHRoZSByZWxhdGlvbiBk ZXNjcmlwdG9ycyBvZiB0aGUgRksgYW5kIFBLIHRhYmxlcyBhbmQgdGhlIG9sZCB0dXBsZS4K KwkgKgorCSAqIGZrX3JlbCBpcyBvcGVuZWQgaW4gUm93RXhjbHVzaXZlTG9jayBtb2RlIHNp bmNlIHRoYXQncyB3aGF0IG91cgorCSAqIGV2ZW50dWFsIERFTEVURSB3aWxsIGdldCBvbiBp dC4KKwkgKi8KKwlma19yZWwgPSB0YWJsZV9vcGVuKHJpaW5mby0+ZmtfcmVsaWQsIFJvd0V4 Y2x1c2l2ZUxvY2spOworCXBrX3JlbCA9IHRyaWdkYXRhLT50Z19yZWxhdGlvbjsKKwlvbGRz bG90ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90OworCisJLyoKKwkgKiBEb24ndCBkZWxldGUg dGhhbiBtb3JlIHRoYW4gdGhlIFBLJ3MgZHVyYXRpb24sCisJICogdHJpbW1lZCBieSBhbiBv cmlnaW5hbCBGT1IgUE9SVElPTiBPRiBpZiBuZWNlc3NhcnkuCisJICovCisJdGFyZ2V0UmFu Z2UgPSByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UodHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCBy aWluZm8sIG9sZHNsb3QpOworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0gU1BJX09LX0NPTk5F Q1QpCisJCWVsb2coRVJST1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKworCS8qIEZldGNo IG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgY2FzY2FkZWQgZGVsZXRlICovCisJ cmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLCBUUklfUExBTl9DQVNDQURFX09OREVM RVRFKTsKKworCWlmICgocXBsYW4gPSByaV9GZXRjaFByZXBhcmVkUGxhbigmcWtleSkpID09 IE5VTEwpCisJeworCQlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKKwkJY2hhcgkJZmtyZWxu YW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFtZVtNQVhfUVVP VEVEX05BTUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAq cXVlcnlzZXA7CisJCU9pZAkJCXF1ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZUyArIDFdOworCQlj b25zdCBjaGFyICpma19vbmx5OworCisJCS8qIC0tLS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5 IHN0cmluZyBidWlsdCBpcworCQkgKiAgREVMRVRFIEZST00gW09OTFldIDxma3RhYmxlPgor CQkgKiAgRk9SIFBPUlRJT04gT0YgJGZrYXR0IEZST00gbG93ZXIoJHtuKzF9KSBUTyB1cHBl cigke24rMX0pCisJCSAqICBXSEVSRSAkMSA9IGZrYXR0MSBbQU5EIC4uLl0KKwkJICogVGhl IHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2YgdGhlCisJCSAq IGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4KKwkJICogLS0tLS0tLS0tLQorCQkgKi8K KwkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJZmtfb25seSA9IGZrX3JlbC0+cmRf cmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPworCQkJIiIgOiAi T05MWSAiOworCQlxdW90ZVJlbGF0aW9uTmFtZShma3JlbG5hbWUsIGZrX3JlbCk7CisJCXF1 b3RlT25lTmFtZShhdHRuYW1lLCBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51 bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnli dWYsICJERUxFVEUgRlJPTSAlcyVzIEZPUiBQT1JUSU9OIE9GICVzIEZST00gbG93ZXIoJCVk KSBUTyB1cHBlcigkJWQpIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUs IHJpaW5mby0+bmtleXMgKyAxLCByaWluZm8tPm5rZXlzICsgMSk7CisJCXF1ZXJ5c2VwID0g IldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCisJ CXsKKwkJCU9pZCBwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW2ldKTsKKwkJCU9pZCBwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWlu Zm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkIGZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVs LCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lkIGZrX2NvbGwgPSBSSUF0dENvbGxh dGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisKKwkJCXF1b3RlT25lTmFt ZShhdHRuYW1lLAorCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tpXSkpOworCQkJc3ByaW50ZihwYXJhbW5hbWUsICIkJWQiLCBpICsgMSk7CisJCQlyaV9H ZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVmLCBxdWVyeXNlcCwKKwkJCQkJCQlwYXJhbW5hbWUsIHBr X3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAorCQkJCQkJCWF0dG5hbWUs IGZrX3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlv bl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0 aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWVyeXNlcCA9ICJBTkQiOworCQkJcXVl cnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJfQorCisJCS8qIFNldCBhIHBhcmFtIGZvciBGT1Ig UE9SVElPTiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5b2lkc1tyaWluZm8tPm5rZXlzXSA9IFJJ QXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0p OworCisJCS8qIFByZXBhcmUgYW5kIHNhdmUgdGhlIHBsYW4gKi8KKwkJcXBsYW4gPSByaV9Q bGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlpbmZvLT5ua2V5cyArIDEsIHF1ZXJ5b2lkcywK KwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9CisKKwkvKgorCSAqIFdlIGhh dmUgYSBwbGFuIG5vdy4gQnVpbGQgdXAgdGhlIGFyZ3VtZW50cyBmcm9tIHRoZSBrZXkgdmFs dWVzIGluIHRoZQorCSAqIGRlbGV0ZWQgUEsgdHVwbGUgYW5kIGRlbGV0ZSB0aGUgcmVmZXJl bmNpbmcgcm93cworCSAqLworCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxh biwKKwkJCQkJZmtfcmVsLCBwa19yZWwsCisJCQkJCW9sZHNsb3QsIE5VTEwsCisJCQkJCXJp aW5mby0+bmtleXMsIHRhcmdldFJhbmdlLAorCQkJCQl0cnVlLAkgICAvKiBtdXN0IGRldGVj dCBuZXcgcm93cyAqLworCQkJCQlTUElfT0tfREVMRVRFKTsKKworCWlmIChTUElfZmluaXNo KCkgIT0gU1BJX09LX0ZJTklTSCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9maW5pc2ggZmFpbGVk Iik7CisKKwl0YWJsZV9jbG9zZShma19yZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJcmV0 dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworCiAvKgogICogVFJJX0ZLZXlfbm9h Y3Rpb25fdXBkIC0KICAqCkBAIC0xNDI4LDYgKzE1NTYsNDE1IEBAIFRSSV9GS2V5X3Jlc3Ry aWN0X3VwZChQR19GVU5DVElPTl9BUkdTKQogCXJldHVybiByaV9yZXN0cmljdCgoVHJpZ2dl ckRhdGEgKikgZmNpbmZvLT5jb250ZXh0LCBmYWxzZSk7CiB9CiAKKy8qCisgKiBUUklfRktl eV9jYXNjYWRlX3VwZCAtCisgKgorICogQ2FzY2FkZWQgdXBkYXRlIGZvcmVpZ24ga2V5IHJl ZmVyZW5jZXMgYXQgdXBkYXRlIGV2ZW50IG9uIHRlbXBvcmFsIFBLIHRhYmxlLgorICovCitE YXR1bQorVFJJX0ZLZXlfY2FzY2FkZV91cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlUcmln Z2VyRGF0YSAqdHJpZ2RhdGEgPSAoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0Owor CWNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CisJUmVsYXRpb24JZmtfcmVsOwor CVJlbGF0aW9uCXBrX3JlbDsKKwlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdDsKKwlUdXBsZVRh YmxlU2xvdCAqbmV3c2xvdDsKKwlSSV9RdWVyeUtleSBxa2V5OworCVNQSVBsYW5QdHIgIHFw bGFuOworCURhdHVtIHRhcmdldFJhbmdlOworCisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEg dmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwly aV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfY2FzY2FkZV91cGQiLCBSSV9UUklH VFlQRV9VUERBVEUpOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25zdHJhaW50SW5mbyh0cmln ZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50Z19yZWxhdGlvbiwgdHJ1 ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3JpcHRvcnMgb2YgdGhlIEZL IGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBuZXcgYW5kCisJICogb2xkIHR1cGxlLgorCSAqCisJ ICogZmtfcmVsIGlzIG9wZW5lZCBpbiBSb3dFeGNsdXNpdmVMb2NrIG1vZGUgc2luY2UgdGhh dCdzIHdoYXQgb3VyCisJICogZXZlbnR1YWwgVVBEQVRFIHdpbGwgZ2V0IG9uIGl0LgorCSAq LworCWZrX3JlbCA9IHRhYmxlX29wZW4ocmlpbmZvLT5ma19yZWxpZCwgUm93RXhjbHVzaXZl TG9jayk7CisJcGtfcmVsID0gdHJpZ2RhdGEtPnRnX3JlbGF0aW9uOworCW5ld3Nsb3QgPSB0 cmlnZGF0YS0+dGdfbmV3c2xvdDsKKwlvbGRzbG90ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90 OworCisJLyoKKwkgKiBEb24ndCBkZWxldGUgdGhhbiBtb3JlIHRoYW4gdGhlIFBLJ3MgZHVy YXRpb24sCisJICogdHJpbW1lZCBieSBhbiBvcmlnaW5hbCBGT1IgUE9SVElPTiBPRiBpZiBu ZWNlc3NhcnkuCisJICovCisJdGFyZ2V0UmFuZ2UgPSByZXN0cmljdF9jYXNjYWRpbmdfcmFu Z2UodHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8sIG9sZHNsb3QpOworCisJaWYgKFNQ SV9jb25uZWN0KCkgIT0gU1BJX09LX0NPTk5FQ1QpCisJCWVsb2coRVJST1IsICJTUElfY29u bmVjdCBmYWlsZWQiKTsKKworCS8qIEZldGNoIG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZv ciB0aGUgY2FzY2FkZWQgdXBkYXRlICovCisJcmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlp bmZvLCBUUklfUExBTl9DQVNDQURFX09OVVBEQVRFKTsKKworCWlmICgocXBsYW4gPSByaV9G ZXRjaFByZXBhcmVkUGxhbigmcWtleSkpID09IE5VTEwpCisJeworCQlTdHJpbmdJbmZvRGF0 YSBxdWVyeWJ1ZjsKKwkJU3RyaW5nSW5mb0RhdGEgcXVhbGJ1ZjsKKwkJY2hhcgkJZmtyZWxu YW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFtZVtNQVhfUVVP VEVEX05BTUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAq cXVlcnlzZXA7CisJCWNvbnN0IGNoYXIgKnF1YWxzZXA7CisJCU9pZAkJIHF1ZXJ5b2lkc1sy ICogUklfTUFYX05VTUtFWVMgKyAxXTsKKwkJY29uc3QgY2hhciAqZmtfb25seTsKKworCQkv KiAtLS0tLS0tLS0tCisJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMKKwkJICogIFVQ REFURSBbT05MWV0gPGZrdGFibGU+CisJCSAqCQkgIEZPUiBQT1JUSU9OIE9GICRma2F0dCBG Uk9NIGxvd2VyKCR7Mm4rMX0pIFRPIHVwcGVyKCR7Mm4rMX0pCisJCSAqCQkgIFNFVCBma2F0 dDEgPSAkMSwgWywgLi4uXQorCQkgKgkJICBXSEVSRSAkbiA9IGZrYXR0MSBbQU5EIC4uLl0K KwkJICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2Yg dGhlCisJCSAqIGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4gIE5vdGUgdGhhdCB3ZSBh cmUgYXNzdW1pbmcKKwkJICogdGhlcmUgaXMgYW4gYXNzaWdubWVudCBjYXN0IGZyb20gdGhl IFBLIHRvIHRoZSBGSyB0eXBlOworCQkgKiBlbHNlIHRoZSBwYXJzZXIgd2lsbCBmYWlsLgor CQkgKiAtLS0tLS0tLS0tCisJCSAqLworCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOwor CQlpbml0U3RyaW5nSW5mbygmcXVhbGJ1Zik7CisJCWZrX29ubHkgPSBma19yZWwtPnJkX3Jl bC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KKwkJCSIiIDogIk9O TFkgIjsKKwkJcXVvdGVSZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOworCQlxdW90 ZU9uZU5hbWUoYXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W3JpaW5mby0+bmtleXMgLSAxXSkpOworCisJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVm LCAiVVBEQVRFICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRPIHVw cGVyKCQlZCkgU0VUIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIDIg KiByaWluZm8tPm5rZXlzICsgMSwgMiAqIHJpaW5mby0+bmtleXMgKyAxKTsKKworCQlxdWVy eXNlcCA9ICIiOworCQlxdWFsc2VwID0gIldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDAsIGog PSByaWluZm8tPm5rZXlzOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrLCBqKyspCisJCXsKKwkJ CU9pZCBwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ld KTsKKwkJCU9pZCBwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBr X2F0dG51bXNbaV0pOworCQkJT2lkIGZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWlu Zm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lkIGZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisKKwkJCXF1b3RlT25lTmFtZShhdHRu YW1lLAorCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkp OworCQkJLyoKKwkJCSAqIERvbid0IHNldCB0aGUgdGVtcG9yYWwgY29sdW1uKHMpLgorCQkJ ICogRk9SIFBPUlRJT04gT0Ygd2lsbCB0YWtlIGNhcmUgb2YgdGhhdC4KKwkJCSAqLworCQkJ aWYgKGkgPCByaWluZm8tPm5rZXlzIC0gMSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVy eWJ1ZiwKKwkJCQkJCQkJICIlcyAlcyA9ICQlZCIsCisJCQkJCQkJCSBxdWVyeXNlcCwgYXR0 bmFtZSwgaSArIDEpOworCisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGogKyAxKTsK KwkJCXJpX0dlbmVyYXRlUXVhbCgmcXVhbGJ1ZiwgcXVhbHNlcCwKKwkJCQkJCQlwYXJhbW5h bWUsIHBrX3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAorCQkJCQkJCWF0 dG5hbWUsIGZrX3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2Nv bGxhdGlvbl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJcmlfR2VuZXJhdGVRdWFs Q29sbGF0aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWVyeXNlcCA9ICIsIjsKKwkJ CXF1YWxzZXAgPSAiQU5EIjsKKwkJCXF1ZXJ5b2lkc1tpXSA9IHBrX3R5cGU7CisJCQlxdWVy eW9pZHNbal0gPSBwa190eXBlOworCQl9CisJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oJnF1 ZXJ5YnVmLCBxdWFsYnVmLmRhdGEsIHF1YWxidWYubGVuKTsKKworCQkvKiBTZXQgYSBwYXJh bSBmb3IgRk9SIFBPUlRJT04gT0YgVE8vRlJPTSAqLworCQlxdWVyeW9pZHNbMiAqIHJpaW5m by0+bmtleXNdID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5m by0+bmtleXMgLSAxXSk7CisKKwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLwor CQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCAyICogcmlpbmZvLT5ua2V5 cyArIDEsIHF1ZXJ5b2lkcywKKwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9 CisKKwkvKgorCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIHVwZGF0ZSB0aGUg ZXhpc3RpbmcgcmVmZXJlbmNlcy4KKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAm cWtleSwgcXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90LCBuZXdz bG90LAorCQkJCQlyaWluZm8tPm5rZXlzICogMiwgdGFyZ2V0UmFuZ2UsCisJCQkJCXRydWUs CQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLworCQkJCQlTUElfT0tfVVBEQVRFKTsKKwor CWlmIChTUElfZmluaXNoKCkgIT0gU1BJX09LX0ZJTklTSCkKKwkJZWxvZyhFUlJPUiwgIlNQ SV9maW5pc2ggZmFpbGVkIik7CisKKwl0YWJsZV9jbG9zZShma19yZWwsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCisJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworLyoKKyAq IFRSSV9GS2V5X3NldG51bGxfZGVsIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJl bmNlcyB0byBOVUxMIHZhbHVlcyBhdCBkZWxldGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8K K0RhdHVtCitUUklfRktleV9zZXRudWxsX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8q IENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQg dGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5 X3NldG51bGxfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qIFNoYXJlIGNvZGUg d2l0aCBVUERBVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBm Y2luZm8tPmNvbnRleHQsIHRydWUsIFJJX1RSSUdUWVBFX0RFTEVURSk7Cit9CisKKy8qCisg KiBUUklfRktleV9zZXRudWxsX3VwZCAtCisgKgorICogU2V0IGZvcmVpZ24ga2V5IHJlZmVy ZW5jZXMgdG8gTlVMTCBhdCB1cGRhdGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVt CitUUklfRktleV9zZXRudWxsX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNr IHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBh bmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3NldG51 bGxfdXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBE RUxFVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8t PmNvbnRleHQsIHRydWUsIFJJX1RSSUdUWVBFX1VQREFURSk7Cit9CisKKy8qCisgKiBUUklf RktleV9zZXRkZWZhdWx0X2RlbCAtCisgKgorICogU2V0IGZvcmVpZ24ga2V5IHJlZmVyZW5j ZXMgdG8gZGVmYXVsdHMgYXQgZGVsZXRlIGV2ZW50IG9uIFBLIHRhYmxlLgorICovCitEYXR1 bQorVFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKiBD aGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRp bWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9z ZXRkZWZhdWx0X2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwkvKiBTaGFyZSBjb2Rl IHdpdGggVVBEQVRFIGNhc2UgKi8KKwlyZXR1cm4gdHJpX3NldCgoVHJpZ2dlckRhdGEgKikg ZmNpbmZvLT5jb250ZXh0LCBmYWxzZSwgUklfVFJJR1RZUEVfREVMRVRFKTsKK30KKworLyoK KyAqIFRSSV9GS2V5X3NldGRlZmF1bHRfdXBkIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkg cmVmZXJlbmNlcyB0byBkZWZhdWx0cyBhdCB1cGRhdGUgZXZlbnQgb24gUEsgdGFibGUuCisg Ki8KK0RhdHVtCitUUklfRktleV9zZXRkZWZhdWx0X3VwZChQR19GVU5DVElPTl9BUkdTKQor eworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUg cmlnaHQgdGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRS SV9GS2V5X3NldGRlZmF1bHRfdXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNo YXJlIGNvZGUgd2l0aCBERUxFVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2Vy RGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlLCBSSV9UUklHVFlQRV9VUERBVEUpOwor fQorCisvKgorICogdHJpX3NldCAtCisgKgorICogQ29tbW9uIGNvZGUgZm9yIHRlbXBvcmFs IE9OIERFTEVURSBTRVQgTlVMTCwgT04gREVMRVRFIFNFVCBERUZBVUxULCBPTgorICogVVBE QVRFIFNFVCBOVUxMLCBhbmQgT04gVVBEQVRFIFNFVCBERUZBVUxULgorICovCitzdGF0aWMg RGF0dW0KK3RyaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX3NldF9udWxs LCBpbnQgdGdraW5kKQoreworCWNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CisJ UmVsYXRpb24JZmtfcmVsOworCVJlbGF0aW9uCXBrX3JlbDsKKwlUdXBsZVRhYmxlU2xvdCAq b2xkc2xvdDsKKwlSSV9RdWVyeUtleSBxa2V5OworCVNQSVBsYW5QdHIJcXBsYW47CisJRGF0 dW0JCXRhcmdldFJhbmdlOworCWludDMyCQlxdWVyeW5vOworCisJcmlpbmZvID0gcmlfRmV0 Y2hDb25zdHJhaW50SW5mbyh0cmlnZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdk YXRhLT50Z19yZWxhdGlvbiwgdHJ1ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24g ZGVzY3JpcHRvcnMgb2YgdGhlIEZLIGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBvbGQgdHVwbGUu CisJICoKKwkgKiBma19yZWwgaXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBz aW5jZSB0aGF0J3Mgd2hhdCBvdXIKKwkgKiBldmVudHVhbCBVUERBVEUgd2lsbCBnZXQgb24g aXQuCisJICovCisJZmtfcmVsID0gdGFibGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dF eGNsdXNpdmVMb2NrKTsKKwlwa19yZWwgPSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJb2xk c2xvdCA9IHRyaWdkYXRhLT50Z190cmlnc2xvdDsKKworCS8qCisJICogRG9uJ3QgU0VUIE5V TEwvREVGQVVMVCB0aGFuIG1vcmUgdGhhbiB0aGUgUEsncyBkdXJhdGlvbiwKKwkgKiB0cmlt bWVkIGJ5IGFuIG9yaWdpbmFsIEZPUiBQT1JUSU9OIE9GIGlmIG5lY2Vzc2FyeS4KKwkgKi8K Kwl0YXJnZXRSYW5nZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSh0cmlnZGF0YS0+dGdf dGVtcG9yYWwsIHJpaW5mbywgb2xkc2xvdCk7CisKKwlpZiAoU1BJX2Nvbm5lY3QoKSAhPSBT UElfT0tfQ09OTkVDVCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9jb25uZWN0IGZhaWxlZCIpOwor CisJLyoKKwkgKiBGZXRjaCBvciBwcmVwYXJlIGEgc2F2ZWQgcGxhbiBmb3IgdGhlIHRyaWdn ZXIuCisJICovCisJc3dpdGNoICh0Z2tpbmQpCisJeworCQljYXNlIFJJX1RSSUdUWVBFX1VQ REFURToKKwkJCXF1ZXJ5bm8gPSBpc19zZXRfbnVsbAorCQkJCT8gVFJJX1BMQU5fU0VUTlVM TF9PTlVQREFURQorCQkJCTogVFJJX1BMQU5fU0VUREVGQVVMVF9PTlVQREFURTsKKwkJCWJy ZWFrOworCQljYXNlIFJJX1RSSUdUWVBFX0RFTEVURToKKwkJCXF1ZXJ5bm8gPSBpc19zZXRf bnVsbAorCQkJCT8gVFJJX1BMQU5fU0VUTlVMTF9PTkRFTEVURQorCQkJCTogVFJJX1BMQU5f U0VUREVGQVVMVF9PTkRFTEVURTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhF UlJPUiwgImludmFsaWQgdGdraW5kIHBhc3NlZCB0byByaV9zZXQiKTsKKwl9CisKKwlyaV9C dWlsZFF1ZXJ5S2V5KCZxa2V5LCByaWluZm8sIHF1ZXJ5bm8pOworCisJaWYgKChxcGxhbiA9 IHJpX0ZldGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkgPT0gTlVMTCkKKwl7CisJCVN0cmluZ0lu Zm9EYXRhIHF1ZXJ5YnVmOworCQlTdHJpbmdJbmZvRGF0YSBxdWFsYnVmOworCQljaGFyCQlm a3JlbG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOworCQljaGFyCQlhdHRuYW1lW01B WF9RVU9URURfTkFNRV9MRU5dOworCQljaGFyCQlwYXJhbW5hbWVbMTZdOworCQljb25zdCBj aGFyICpxdWVyeXNlcDsKKwkJY29uc3QgY2hhciAqcXVhbHNlcDsKKwkJT2lkCQkJcXVlcnlv aWRzW1JJX01BWF9OVU1LRVlTICsgMV07IC8qICsxIGZvciBGT1IgUE9SVElPTiBPRiAqLwor CQljb25zdCBjaGFyICpma19vbmx5OworCQlpbnQJCQludW1fY29sc190b19zZXQ7CisJCWNv bnN0IGludDE2ICpzZXRfY29sczsKKworCQlzd2l0Y2ggKHRna2luZCkKKwkJeworCQkJY2Fz ZSBSSV9UUklHVFlQRV9VUERBVEU6CisJCQkJLyogLTEgc28gd2UgbGV0IEZPUiBQT1JUSU9O IE9GIHNldCB0aGUgcmFuZ2UuICovCisJCQkJbnVtX2NvbHNfdG9fc2V0ID0gcmlpbmZvLT5u a2V5cyAtIDE7CisJCQkJc2V0X2NvbHMgPSByaWluZm8tPmZrX2F0dG51bXM7CisJCQkJYnJl YWs7CisJCQljYXNlIFJJX1RSSUdUWVBFX0RFTEVURToKKwkJCQkvKgorCQkJCSAqIElmIGNv bmZkZWxzZXRjb2xzIGFyZSBwcmVzZW50LCB0aGVuIHdlIG9ubHkgdXBkYXRlIHRoZQorCQkJ CSAqIGNvbHVtbnMgc3BlY2lmaWVkIGluIHRoYXQgYXJyYXksIG90aGVyd2lzZSB3ZSB1cGRh dGUgYWxsCisJCQkJICogdGhlIHJlZmVyZW5jaW5nIGNvbHVtbnMuCisJCQkJICovCisJCQkJ aWYgKHJpaW5mby0+bmRlbHNldGNvbHMgIT0gMCkKKwkJCQl7CisJCQkJCW51bV9jb2xzX3Rv X3NldCA9IHJpaW5mby0+bmRlbHNldGNvbHM7CisJCQkJCXNldF9jb2xzID0gcmlpbmZvLT5j b25mZGVsc2V0Y29sczsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyogLTEgc28g d2UgbGV0IEZPUiBQT1JUSU9OIE9GIHNldCB0aGUgcmFuZ2UuICovCisJCQkJCW51bV9jb2xz X3RvX3NldCA9IHJpaW5mby0+bmtleXMgLSAxOworCQkJCQlzZXRfY29scyA9IHJpaW5mby0+ ZmtfYXR0bnVtczsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2co RVJST1IsICJpbnZhbGlkIHRna2luZCBwYXNzZWQgdG8gcmlfc2V0Iik7CisJCX0KKworCQkv KiAtLS0tLS0tLS0tCisJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMKKwkJICoJVVBE QVRFIFtPTkxZXSA8Zmt0YWJsZT4KKwkJICoJCQlGT1IgUE9SVElPTiBPRiAkZmthdHQgRlJP TSBsb3dlcigke24rMX0pIFRPIHVwcGVyKCR7bisxfSkKKwkJICoJCQlTRVQgZmthdHQxID0g e05VTEx8REVGQVVMVH0gWywgLi4uXQorCQkgKgkJCVdIRVJFICQxID0gZmthdHQxIFtBTkQg Li4uXQorCQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9z ZSBvZiB0aGUKKwkJICogY29ycmVzcG9uZGluZyBQSyBhdHRyaWJ1dGVzLgorCQkgKiAtLS0t LS0tLS0tCisJCSAqLworCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOworCQlpbml0U3Ry aW5nSW5mbygmcXVhbGJ1Zik7CisJCWZrX29ubHkgPSBma19yZWwtPnJkX3JlbC0+cmVsa2lu ZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KKwkJCSIiIDogIk9OTFkgIjsKKwkJ cXVvdGVSZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOworCQlxdW90ZU9uZU5hbWUo YXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW3JpaW5mby0+ bmtleXMgLSAxXSkpOworCisJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiVVBEQVRF ICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRPIHVwcGVyKCQlZCkg U0VUIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIHJpaW5mby0+bmtl eXMgKyAxLCByaWluZm8tPm5rZXlzICsgMSk7CisKKwkJLyoKKwkJICogQWRkIGFzc2lnbm1l bnQgY2xhdXNlcworCQkgKi8KKwkJcXVlcnlzZXAgPSAiIjsKKwkJZm9yIChpbnQgaSA9IDA7 IGkgPCBudW1fY29sc190b19zZXQ7IGkrKykKKwkJeworCQkJcXVvdGVPbmVOYW1lKGF0dG5h bWUsIFJJQXR0TmFtZShma19yZWwsIHNldF9jb2xzW2ldKSk7CisJCQlhcHBlbmRTdHJpbmdJ bmZvKCZxdWVyeWJ1ZiwKKwkJCQkJCQkgIiVzICVzID0gJXMiLAorCQkJCQkJCSBxdWVyeXNl cCwgYXR0bmFtZSwKKwkJCQkJCQkgaXNfc2V0X251bGwgPyAiTlVMTCIgOiAiREVGQVVMVCIp OworCQkJcXVlcnlzZXAgPSAiLCI7CisJCX0KKworCQkvKgorCQkgKiBBZGQgV0hFUkUgY2xh dXNlCisJCSAqLworCQlxdWFsc2VwID0gIldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDA7IGkg PCByaWluZm8tPm5rZXlzOyBpKyspCisJCXsKKwkJCU9pZAlwa190eXBlID0gUklBdHRUeXBl KHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCU9pZAlma190eXBlID0gUklB dHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCU9pZAlwa19jb2xs ID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJ T2lkCWZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tpXSk7CisKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAorCQkJCQkJIFJJQXR0TmFtZShm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCisJCQlzcHJpbnRmKHBhcmFtbmFt ZSwgIiQlZCIsIGkgKyAxKTsKKwkJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1YWxz ZXAsCisJCQkJCQkJcGFyYW1uYW1lLCBwa190eXBlLAorCQkJCQkJCXJpaW5mby0+cGZfZXFf b3Byc1tpXSwKKwkJCQkJCQlhdHRuYW1lLCBma190eXBlKTsKKwkJCWlmIChwa19jb2xsICE9 IGZrX2NvbGwgJiYgIWdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlzdGljKHBrX2NvbGwpKQor CQkJCXJpX0dlbmVyYXRlUXVhbENvbGxhdGlvbigmcXVlcnlidWYsIHBrX2NvbGwpOworCQkJ cXVhbHNlcCA9ICJBTkQiOworCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJfQorCisJ CS8qIFNldCBhIHBhcmFtIGZvciBGT1IgUE9SVElPTiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5 b2lkc1tyaWluZm8tPm5rZXlzXSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0 bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pOworCisJCS8qIFByZXBhcmUgYW5kIHNhdmUgdGhl IHBsYW4gKi8KKwkJcXBsYW4gPSByaV9QbGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlpbmZv LT5ua2V5cyArIDEsIHF1ZXJ5b2lkcywKKwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVs KTsKKwl9CisKKwkvKgorCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIHVwZGF0 ZSB0aGUgZXhpc3RpbmcgcmVmZXJlbmNlcy4KKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlp bmZvLCAmcWtleSwgcXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90 LCBOVUxMLAorCQkJCQlyaWluZm8tPm5rZXlzLCB0YXJnZXRSYW5nZSwKKwkJCQkJdHJ1ZSwJ CS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19VUERBVEUpOworCisJ aWYgKFNQSV9maW5pc2goKSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVSUk9SLCAiU1BJ X2ZpbmlzaCBmYWlsZWQiKTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVzaXZl TG9jayk7CisKKwlpZiAoaXNfc2V0X251bGwpCisJCXJldHVybiBQb2ludGVyR2V0RGF0dW0o TlVMTCk7CisJZWxzZQorCXsKKwkJLyoKKwkJICogSWYgd2UganVzdCBkZWxldGVkIG9yIHVw ZGF0ZWQgdGhlIFBLIHJvdyB3aG9zZSBrZXkgd2FzIGVxdWFsIHRvIHRoZQorCQkgKiBGSyBj b2x1bW5zJyBkZWZhdWx0IHZhbHVlcywgYW5kIGEgcmVmZXJlbmNpbmcgcm93IGV4aXN0cyBp biB0aGUgRksKKwkJICogdGFibGUsIHdlIHdvdWxkIGhhdmUgdXBkYXRlZCB0aGF0IHJvdyB0 byB0aGUgc2FtZSB2YWx1ZXMgaXQgYWxyZWFkeQorCQkgKiBoYWQgLS0tIGFuZCBSSV9GS2V5 X2ZrX3VwZF9jaGVja19yZXF1aXJlZCB3b3VsZCBoZW5jZSBiZWxpZXZlIG5vCisJCSAqIGNo ZWNrIGlzIG5lY2Vzc2FyeS4gIFNvIHdlIG5lZWQgdG8gZG8gYW5vdGhlciBsb29rdXAgbm93 IGFuZCBpbgorCQkgKiBjYXNlIGEgcmVmZXJlbmNlIHN0aWxsIGV4aXN0cywgYWJvcnQgdGhl IG9wZXJhdGlvbi4gIFRoYXQgaXMKKwkJICogYWxyZWFkeSBpbXBsZW1lbnRlZCBpbiB0aGUg Tk8gQUNUSU9OIHRyaWdnZXIsIHNvIGp1c3QgcnVuIGl0LiAoVGhpcworCQkgKiByZWNoZWNr IGlzIG9ubHkgbmVlZGVkIGluIHRoZSBTRVQgREVGQVVMVCBjYXNlLCBzaW5jZSBDQVNDQURF IHdvdWxkCisJCSAqIHJlbW92ZSBzdWNoIHJvd3MgaW4gY2FzZSBvZiBhIERFTEVURSBvcGVy YXRpb24gb3Igd291bGQgY2hhbmdlIHRoZQorCQkgKiBGSyBrZXkgdmFsdWVzIGluIGNhc2Ug b2YgYW4gVVBEQVRFLCB3aGlsZSBTRVQgTlVMTCBpcyBjZXJ0YWluIHRvCisJCSAqIHJlc3Vs dCBpbiByb3dzIHRoYXQgc2F0aXNmeSB0aGUgRksgY29uc3RyYWludC4pCisJCSAqLworCQly ZXR1cm4gcmlfcmVzdHJpY3QodHJpZ2RhdGEsIHRydWUpOworCX0KK30KKwogLyoKICAqIFJJ X0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkIC0KICAqCkBAIC0yNTUyLDggKzMwODksOCBA QCByaV9QZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAlp bnQJCQlzcGlfcmVzdWx0OwogCU9pZAkJCXNhdmVfdXNlcmlkOwogCWludAkJCXNhdmVfc2Vj X2NvbnRleHQ7Ci0JRGF0dW0JCXZhbHNbUklfTUFYX05VTUtFWVMgKiAyXTsKLQljaGFyCQlu dWxsc1tSSV9NQVhfTlVNS0VZUyAqIDJdOworCURhdHVtCQl2YWxzW1JJX01BWF9OVU1LRVlT ICogMiArIDFdOworCWNoYXIJCW51bGxzW1JJX01BWF9OVU1LRVlTICogMiArIDFdOwogCiAJ LyoKIAkgKiBVc2UgdGhlIHF1ZXJ5IHR5cGUgY29kZSB0byBkZXRlcm1pbmUgd2hldGhlciB0 aGUgcXVlcnkgaXMgcnVuIGFnYWluc3QKQEAgLTI1ODgsOCArMzEyNSwxMCBAQCByaV9QZXJm b3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJcmlfRXh0cmFj dFZhbHVlcyhzb3VyY2VfcmVsLCBuZXdzbG90LCByaWluZm8sIHNvdXJjZV9pc19waywKIAkJ CQkJCSB2YWxzLCBudWxscyk7CiAJCWlmIChvbGRzbG90KQorCQl7CiAJCQlyaV9FeHRyYWN0 VmFsdWVzKHNvdXJjZV9yZWwsIG9sZHNsb3QsIHJpaW5mbywgc291cmNlX2lzX3BrLAogCQkJ CQkJCSB2YWxzICsgcmlpbmZvLT5ua2V5cywgbnVsbHMgKyByaWluZm8tPm5rZXlzKTsKKwkJ fQogCX0KIAllbHNlCiAJewpAQCAtMzMwMCw4ICszODM5LDE0IEBAIFJJX0ZLZXlfdHJpZ2dl cl90eXBlKE9pZCB0Z2ZvaWQpCiAJCWNhc2UgRl9SSV9GS0VZX1NFVERFRkFVTFRfVVBEOgog CQljYXNlIEZfUklfRktFWV9OT0FDVElPTl9ERUw6CiAJCWNhc2UgRl9SSV9GS0VZX05PQUNU SU9OX1VQRDoKKwkJY2FzZSBGX1RSSV9GS0VZX0NBU0NBREVfREVMOgorCQljYXNlIEZfVFJJ X0ZLRVlfQ0FTQ0FERV9VUEQ6CiAJCWNhc2UgRl9UUklfRktFWV9SRVNUUklDVF9ERUw6CiAJ CWNhc2UgRl9UUklfRktFWV9SRVNUUklDVF9VUEQ6CisJCWNhc2UgRl9UUklfRktFWV9TRVRO VUxMX0RFTDoKKwkJY2FzZSBGX1RSSV9GS0VZX1NFVE5VTExfVVBEOgorCQljYXNlIEZfVFJJ X0ZLRVlfU0VUREVGQVVMVF9ERUw6CisJCWNhc2UgRl9UUklfRktFWV9TRVRERUZBVUxUX1VQ RDoKIAkJY2FzZSBGX1RSSV9GS0VZX05PQUNUSU9OX0RFTDoKIAkJY2FzZSBGX1RSSV9GS0VZ X05PQUNUSU9OX1VQRDoKIAkJCXJldHVybiBSSV9UUklHR0VSX1BLOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKaW5kZXggZTcwYjM5MWUwNC4uNTQ1YTZiMWNhMCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CkBAIC0zOTUyLDYgKzM5NTIsMTIgQEAKIHsgb2lkID0+ICc2MTIz JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBGT1JFSUdOIEtF WSAuLi4gUkVGRVJFTkNFUycsCiAgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcs IHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCiAgIHByb2Fy Z3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcgfSwKK3sgb2lk ID0+ICc2MTI0JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBP TiBERUxFVEUgQ0FTQ0FERScsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfZGVs JywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJv YXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfY2FzY2FkZV9kZWwnIH0sCit7 IG9pZCA9PiAnNjEyNScsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3Jp dHkgT04gVVBEQVRFIENBU0NBREUnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9jYXNjYWRl X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisg IHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfdXBkJyB9 LAogeyBvaWQgPT4gJzYxMjYnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50 ZWdyaXR5IE9OIERFTEVURSBSRVNUUklDVCcsCiAgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3Jl c3RyaWN0X2RlbCcsIHByb3ZvbGF0aWxlID0+ICd2JywKICAgcHJvcmV0dHlwZSA9PiAndHJp Z2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLApAQCAtMzk2MCw2ICszOTY2LDIwIEBACiAgIHBy b25hbWUgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywK ICAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAogICBwcm9z cmMgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcgfSwKK3sgb2lkID0+ICc2MTI4JywgZGVz Y3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgU0VUIE5V TEwnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9zZXRudWxsX2RlbCcsIHByb3ZvbGF0aWxl ID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcn LCBwcm9zcmMgPT4gJ1RSSV9GS2V5X3NldG51bGxfZGVsJyB9LAoreyBvaWQgPT4gJzYxMjkn LCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBT RVQgTlVMTCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3NldG51bGxfdXBkJywgcHJvdm9s YXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMg PT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfc2V0bnVsbF91cGQnIH0sCit7IG9pZCA9PiAn NjEzMCcsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVM RVRFIFNFVCBERUZBVUxUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfc2V0ZGVmYXVsdF9k ZWwnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBw cm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9zZXRkZWZhdWx0X2Rl bCcgfSwKK3sgb2lkID0+ICc2MTMxJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFs IGludGVncml0eSBPTiBVUERBVEUgU0VUIERFRkFVTFQnLAorICBwcm9uYW1lID0+ICdUUklf RktleV9zZXRkZWZhdWx0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlw ZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9G S2V5X3NldGRlZmF1bHRfdXBkJyB9LAogeyBvaWQgPT4gJzYxMzInLCBkZXNjciA9PiAndGVt cG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERFTEVURSBOTyBBQ1RJT04nLAogICBw cm9uYW1lID0+ICdUUklfRktleV9ub2FjdGlvbl9kZWwnLCBwcm92b2xhdGlsZSA9PiAndics CiAgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4 IDgwYTRlNjA2OTUuLmEwMTFiN2RjZTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAtOTA0LDMwICs5MDQsMTg0IEBAIERF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAtLQogLS0g dGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKIC0tCistLSBUT0M6CistLSBwYXJlbnQg dXBkYXRlcyBDQVNDQURFCistLSBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCistLSBwYXJlbnQg dXBkYXRlcyBTRVQgTlVMTAorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKKy0tIHBhcmVu dCB1cGRhdGVzIFNFVCBERUZBVUxUCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAor LS0gcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50 IGRlbGV0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IHVwZGF0ZXMg U0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBOVUxM ICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdvIHNj YWxhciBjb2xzLCBTRVQgTlVMTCBzdWJzZXQpCistLSBwYXJlbnQgdXBkYXRlcyBTRVQgREVG QVVMVCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQg KHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0d28g c2NhbGFyIGNvbHMsIFNFVCBERUZBVUxUIHN1YnNldCkKIC0tIHRlc3QgRksgcGFyZW50IHVw ZGF0ZXMgQ0FTQ0FERQogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlPTiBE RUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKLUVSUk9SOiAgYWN0aW9uIG5vdCBz dXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gbGVmdG92ZXJzIG9uIGJv dGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdI RVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWzcsOCkKKyBb MTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygzIHJvd3Mp CisKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAn WzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg WzcsOCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzcsOCkKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzcsOCkK KygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9y YWxfcm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9h dCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBb Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgWzksMTApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJG cmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVh biB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sx MDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0 IEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworLS0gbGVm dG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdI RVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBb MTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6 MDA6MDAgMjAyMSIpIHwgWzYsNykKKygyIHJvd3MpCisKKy0tIG5vbi1GUE8gZGVsZXRlOgor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworIGlk IHwgdmFsaWRfYXQgfCBwYXJlbnRfaWQgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KygwIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0w MS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkKKygx IHJvdykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdb OSw5XScpOwogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAotSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzks OV0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAogCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlP TiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOwotRVJST1I6ICBhY3Rpb24g bm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCistLSBsZWZ0b3ZlcnMg b24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3 XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEph biAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBb MTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygzIHJvd3Mp CisKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAn WzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg CisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiKSB8IAorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCAKKygzIHJvd3MpCisKKy0t IEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5n ZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9 ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzIwMCwyMDEp IHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MjEiKSB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0n KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3 LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNF VCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVz OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBd JzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAw MDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KQorIFsx MDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIikgfCBbNiw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyBkZWxldGU6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAg aWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor IFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIikgfCAKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgCisgWzEwMCwxMDEpIHwgWyJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8 IAorKDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5 LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAK Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbMjAw LDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAs MjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0n LCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKIC0tIHRlc3QgRksgcGFyZW50IHVwZGF0 ZXMgU0VUIERFRkFVTFQKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbLTEs LTFdJywgdHNyYW5nZShudWxsLCBudWxsKSk7Ci1JTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzgsOF0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwogICBBTFRF UiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKIAlEUk9QIENPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKQEAgLTkzNSw3ICsxMDg5LDQ2MSBAQCBB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCiAJCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04g REVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKLUVSUk9SOiAgYWN0 aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gbGVmdG92 ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAn WzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg Wy0xLDApCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUg SmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcp CisoMyByb3dzKQorCistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcg U0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEwMCwx MDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiKSB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbLTEsMCkKKyBbMTAwLDEwMSkg fCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAy MSIpIHwgWy0xLDApCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQg cm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwy MDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOwor VVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzksOV0nIFdIRVJFIGlkID0gJ1s4LDhd JyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBp ZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzIwMCwyMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiKSB8IFstMSwwKQorIFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbOCw5KQorKDIgcm93 cykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5 XScpOworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBU TyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAg ICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAx KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIikgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBb IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIp IHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkg fCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIpIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgi LCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikg fCBbLTEsMCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dz OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBA PiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg Wy0xLDApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkg SmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1 cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAs MTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBp ZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZL IHBhcmVudCB1cGRhdGVzIENBU0NBREUgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5n MnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJf cm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAo cGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7 CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcyIEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAx JyBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlk ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAw OjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFs3LDgpICAgICAg fCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKyBbMTAwLDEw MSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAg MjAyMSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIHVw ZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlk MSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJF IGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJl bnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBb MTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIpIHwgWzcsOCkgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs3 LDgpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNyw4KSAgICAgIHwgWzYsNykK KygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMg KCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4 LDhdJywgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s5LDld JyBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRp bWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQg PSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZh bGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9p ZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsyMDAs MjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBbOSwxMCkgICAgIHwgWzgsOSkKKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkg ICAgICB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVt cG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywg J1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVz IENBU0NBREUgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdb MTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZd JywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8 IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkg SmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorKDIgcm93cykK KworLS0gbm9uLUZQTyBkZWxldGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJF IGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgaWQgfCB2YWxpZF9hdCB8IHBhcmVudF9pZDEgfCBw YXJlbnRfaWQyIAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KygwIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMg KCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4 LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9 ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0n OworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzIwMCwyMDEpIHwgWyJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4 LDkpICAgICAgfCBbOCw5KQorKDEgcm93KQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00g dGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwy MDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZd JywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCB1cGRh dGVzIFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVT ICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb Niw2XScsICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlE Uk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEs IHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmcyCisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CistLSBsZWZ0 b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQx ID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIw MTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAgICAgICAgfCAKKyBbMTAw LDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6 MDAgMjAxOSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcp ICAgICAgfCBbNiw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUg dGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEw MF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAg ICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8 ICAgICAgICAgICAgfCAKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgICAgICAgICAgICB8IAorIFsxMDAs MTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDow MCAyMDIxIikgfCAgICAgICAgICAgIHwgCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdv IHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgn WzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywg dHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBEQVRFIHRlbXBv cmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFs aWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAg ICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IAorIFsy MDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIikgfCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFu IHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sx MDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hF UkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRl c3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m azJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90 aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0g J1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxp ZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQy IAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEw MSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIpIHwgICAgICAgICAgICB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDow MDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwg WzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBK YW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQor CistLSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUg aWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hF UkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBh cmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor IFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgCisgWzEwMCwxMDEpIHwgWyJNb24gSmFu IDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8ICAgICAg ICAgICAgfCAKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZy aSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgICAgICAgICAgICB8IAorKDMgcm93cykKKwor LS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdb OCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0n KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQg dmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IAor IFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAw MDowMDowMCAyMDIxIikgfCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNs ZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAo J1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIg V0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0t IHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scywgU0VU IE5VTEwgc3Vic2V0KQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2 XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsK Ky0tIGZhaWxzIGJlY2F1c2UgeW91IGNhbid0IHNldCB0aGUgUEVSSU9EIGNvbHVtbjoKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcy cm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUgU0VU IE5VTEwgKHZhbGlkX2F0KSBPTiBVUERBVEUgU0VUIE5VTEw7CitFUlJPUjogIGNvbHVtbiAi dmFsaWRfYXQiIHJlZmVyZW5jZWQgaW4gT04gREVMRVRFIFNFVCBhY3Rpb24gY2Fubm90IGJl IFBFUklPRAorLS0gb2s6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworCURS T1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlO VCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwg cGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZzIKKwkJT04gREVMRVRFIFNFVCBOVUxMIChwYXJlbnRfaWQxKSBPTiBVUERBVEUgU0VUIE5V TEw7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIw MjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAx OSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IFs2LDcpCisg WzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAw OjAwOjAwIDIwMTkiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2Vk IEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBb Niw3KSAgICAgIHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gZGVsZXRlOgorREVM RVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAg IGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAgICAg ICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCAgICAgICAgICAgIHwgWzYsNykKKyBbMTAw LDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgICAgICAgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBGSyBhY3Jv c3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFM VUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4 LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworREVMRVRF IEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBA PiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsy X3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFy ZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgWzgsOSkKKyBbMjAw LDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgWzgsOSkgICAgICB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1 cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAw LDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJF IGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0 IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMpCitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAnWy0xLC0xXScsIHRz cmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMg KCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAw XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYs Nl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisgIEFMVEVSIENPTFVN TiBwYXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKyAgQUxURVIgQ09MVU1OIHBh cmVudF9pZDIgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5n MnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9E IHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNF VCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxlZnRvdmVycyBvbiBib3Ro IHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEgPSAnWzcsN10nLCBp ZDIgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAg ICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFstMSww KQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAw MSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBb IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIp IHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIHVwZGF0ZToK K1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nLCBpZDIgPSAnWzcsN10n IFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9p ZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsxMDAsMTAx KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFstMSwwKSAg ICAgfCBbLTEsMCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCBy b3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIw LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5n MnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nMiBTRVQg aWQxID0gJ1s5LDldJywgaWQyID0gJ1s5LDldJyBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2 YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0x LDApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKwor LS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk IElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScp OworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBj b2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKKy0tIGxlZnRv dmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hF UkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcg V0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8 IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzEwMCwxMDEpIHwg WyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTki KSB8IFs2LDcpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3KSAgICAgIHwg WzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIw MTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbLTEsMCkK KyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikg fCBbLTEsMCkgICAgIHwgWy0xLDApCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJl ZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgs OF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNy YW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0w MS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcg V0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8 IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzIwMCwyMDEpIHwg WyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEi KSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4gdXAKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywg J1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4g KCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVzdCBGSyBwYXJl bnQgZGVsZXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBjb2xzLCBTRVQgREVGQVVMVCBz dWJzZXQpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAn WzYsNl0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMg KCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2 LDZdJywgJ1s2LDZdJyk7CistLSBmYWlscyBiZWNhdXNlIHlvdSBjYW4ndCBzZXQgdGhlIFBF UklPRCBjb2x1bW46CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworICBBTFRF UiBDT0xVTU4gcGFyZW50X2lkMSBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRf aWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlP TiBERUxFVEUgU0VUIERFRkFVTFQgKHZhbGlkX2F0KSBPTiBVUERBVEUgU0VUIERFRkFVTFQ7 CitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIHJlZmVyZW5jZWQgaW4gT04gREVMRVRFIFNF VCBhY3Rpb24gY2Fubm90IGJlIFBFUklPRAorLS0gb2s6CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9mazJfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkMSBTRVQgREVGQVVMVCAn Wy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAor CUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5D RVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgKHBhcmVudF9pZDEp IE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBd JzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBb LTEsMCkgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8IFs2LDcp CisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAx IDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorKDMgcm93cykKKworLS0g bm9uLUZQTyB1cGRhdGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9 ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRf aWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAw LDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJNb24gSmFu IDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFstMSww KSAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbLTEsMCkgICAgIHwgWzYsNykKKygz IHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0n LCAnWzgsOF0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEt MDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBw YXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFs4LDkpCisgWzIwMCwyMDEpIHwgWyJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8 IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1sy MDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdb Niw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gRksgd2l0aCBhIGN1c3Rv bSByYW5nZSB0eXBlCitDUkVBVEUgVFlQRSBteWRhdGVyYW5nZSBBUyByYW5nZShzdWJ0eXBl PWRhdGUpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCBteWRhdGVyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbF9mazNfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IG15ZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9mazNfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmszX3JuZzJybmdfZmsgRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRl bXBvcmFsX3JuZzMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpIE9OIERFTEVURSBDQVNDQURFCisp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMyBWQUxVRVMgKCdbOCw4XScsIG15ZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9mazNfcm5nMnJuZyBWQUxVRVMgKCdbNSw1XScsIG15ZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcz IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAx LTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrM19y bmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAg ICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgWzUsNikgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IFs4LDkp CisgWzUsNikgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFs4LDkpCisoMiByb3dzKQor CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrM19ybmcycm5nOworRFJPUCBUQUJMRSB0ZW1wb3Jh bF9ybmczOworRFJPUCBUWVBFIG15ZGF0ZXJhbmdlOwogLS0gRksgYmV0d2VlbiBwYXJ0aXRp b25lZCB0YWJsZXMKIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKAog CWlkIGludDRyYW5nZSwKQEAgLTk0Myw4ICsxNTUxLDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyAoCiAgIG5hbWUgdGV4dCwKIAlDT05TVFJBSU5UIHRlbXBv cmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKLUNSRUFURSBUQUJMRSB0 cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElO ICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDEx XScpOwotQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4 XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0NSRUFURSBUQUJMRSB0cDEgcGFydGl0aW9u IE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAn WzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDExXScsICdbMTMsMTNd JywgJ1sxNSwxNV0nLCAnWzE3LDE3XScsICdbMTksMTldJywgJ1syMSwyMV0nLCAnWzIzLDIz XScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMCwwXScsICdbMiwyXScsICdbNCw0XScsICdbNiw2 XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nLCAnWzE0LDE0XScsICdbMTYsMTZd JywgJ1sxOCwxOF0nLCAnWzIwLDIwXScsICdbMjIsMjJdJywgJ1syNCwyNF0nKTsKIElOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMKICAgKCdbMSwxXScsIGRh dGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKICAgKCdbMSwx XScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKQEAg LTk1Nyw4ICsxNTY1LDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgKAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu Z19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQog KSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRpdGlv biBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdb MSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7 Ci1DUkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywg J1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRma3AxIHBh cnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMg SU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEs MTFdJywgJ1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAnWzIx LDIxXScsICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1swLDBdJywg J1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEy XScsICdbMTQsMTRdJywgJ1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAsMjBdJywgJ1syMiwy Ml0nLCAnWzI0LDI0XScpOwogLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgaW5zZXJ0cwogSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKICAgKCdb MSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwxXScp LApAQCAtOTkzLDcgKzE2MDEsNyBAQCBVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLQogLS0g c2hvdWxkIGZhaWw6CiBVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxp ZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKICAgV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7Ci1FUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIg dmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmciCitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRw MSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleTEiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2 KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAxOCkpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0 YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIuCiAtLSBjbGVhbiB1cDoK IERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFy ZW50X2lkID0gJ1s1LDVdJzsKQEAgLTEwMDUsNyArMTYxMyw3IEBAIElOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtCiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hF UkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScs ICcyMDE4LTAzLTAxJyk7CiAtLSBzaG91bGQgZmFpbDoKIERFTEVURSBGUk9NIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0 ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKLUVSUk9SOiAgdXBkYXRlIG9y IGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50 ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0 YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0VSUk9SOiAgdXBkYXRl IG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5MSIg b24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCiBERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMg c3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIi4KIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwpAQCAtMTAyNyw3ICsx NjM1LDcgQEAgVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQg PSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0KIC0tIHNob3VsZCBmYWlsOgog VVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFu Z2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiAgIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwot RVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFy ZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IgorRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdf cGFyZW50X2lkX2ZrZXkxIiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4 LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgogLS0gY2xlYW4gdXA6CiBERUxFVEUgRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1 XSc7CkBAIC0xMDM5LDM1ICsxNjQ3LDIxNCBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAx LQogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpOwogLS0gc2hvdWxkIGZhaWw6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJyk7Ci1FUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24g dGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUg b24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleTEiIG9uIHRhYmxlICJ0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFs aWRfYXQpPShbNSw2KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAxOCkpIGlzIHN0aWxsIHJlZmVy ZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIuCiAt LSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzYsNl0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzQsNF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKIAkJT04g REVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7Ci1FUlJPUjogIGFjdGlvbiBub3Qg c3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKK1VQREFURSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0n OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1s0LDRdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFy ZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzQsNSkgfCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IFs3LDgpCisgWzQsNSkgfCBb MDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IFs2LDcpCisgWzQsNSkgfCBbMDEtMDEtMjAyMCww MS0wMS0yMDIxKSB8IFs2LDcpCisoMyByb3dzKQorCitVUERBVEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s0 LDRdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzQsNSkg fCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IFs3LDgpCisgWzQsNSkgfCBbMDEtMDEtMjAx OCwwMS0wMS0yMDE5KSB8IFs3LDgpCisgWzQsNSkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIx KSB8IFs3LDgpCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgVkFMVUVTICgnWzE1LDE1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIw LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVF UyAoJ1sxNSwxNV0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgn WzEwLDEwXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTUs MTVdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTYs MTZdJyBXSEVSRSBpZCA9ICdbMTUsMTVdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEn OjpkYXRlOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1sxMCwxMF0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAg ICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgWzEwLDExKSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgWzE2 LDE3KQorIFsxMCwxMSkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsxNSwxNikKKygy IHJvd3MpCisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOCw4XScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQg CistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNSw2 KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzgsOSkKKyBbNSw2KSB8IFswMS0wMS0y MDIwLDAxLTAxLTIwMjEpIHwgWzgsOSkKKygyIHJvd3MpCisKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzUsNV0nOwor IGlkIHwgdmFsaWRfYXQgfCBwYXJlbnRfaWQgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKygwIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBW QUxVRVMgKCdbMTcsMTddJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE3 LDE3XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTEsMTFd JywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNywxN10nKTsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbMTcs MTddJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMSwxMV0n OworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzExLDEy KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzE3LDE4KQorKDEgcm93KQorCiAtLSBw YXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s5LDldJywgZGF0ZXJhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s2LDZdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s5LDldJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCiAJCU9OIERF TEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7Ci1FUlJPUjogIGFjdGlvbiBub3Qg c3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKK1VQREFURSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5 XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzYsNl0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyBbNiw3KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgCisgWzYsNykgfCBbMDEt MDEtMjAxOCwwMS0wMS0yMDE5KSB8IFs5LDEwKQorIFs2LDcpIHwgWzAxLTAxLTIwMjAsMDEt MDEtMjAyMSkgfCBbOSwxMCkKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb Niw2XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAK Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs2LDcp IHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCAKKyBbNiw3KSB8IFswMS0wMS0yMDE4LDAx LTAxLTIwMTkpIHwgCisgWzYsNykgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IAorKDMg cm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1sxOCwxOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTgsMThdJywg ZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE4LDE4XScpOworVVBEQVRF IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQg PSAnWzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb MTIsMTJdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRf aWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor IFsxMiwxMykgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IAorIFsxMiwxMykgfCBbMDEt MDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsxOCwxOSkKKygyIHJvd3MpCisKIC0tIHBhcnRpdGlv bmVkIEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzExLDExXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbNyw3XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbMTEsMTFdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8g JzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s3LDddJzsKKyAgaWQg ICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzcsOCkgfCBbMDEtMDEtMjAx OSwwMS0wMS0yMDIwKSB8IAorIFs3LDgpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBb MTEsMTIpCisgWzcsOCkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsxMSwxMikKKygz IHJvd3MpCisKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBp ZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbNyw3XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQg ICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorIFs3LDgpIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCAKKyBb Nyw4KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgCisgWzcsOCkgfCBbMDEtMDEtMjAy MCwwMS0wMS0yMDIxKSB8IAorKDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBWQUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZB TFVFUyAoJ1sxMywxM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp LCAnWzIwLDIwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdI RVJFIGlkID0gJ1syMCwyMF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7 CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzEzLDEzXSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwg cGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbMTMsMTQpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkgfCAKKyBbMTMsMTQp IHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMjAsMjEpCisoMiByb3dzKQorCiAtLSBw YXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1swLDBdJywgZGF0ZXJhbmdlKG51 bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbMTIsMTJdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAo J1s4LDhdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwx Ml0nKTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKLSAg QUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisgIEFMVEVS IENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1swLDBdJywKIAlEUk9QIENPTlNUUkFJ TlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlO VCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcKIAkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVG QVVMVDsKLUVSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVp Z24ga2V5cworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0g J1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAgaWQgICB8 ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzgsOSkgfCBbMDEtMDEtMjAxOSww MS0wMS0yMDIwKSB8IFswLDEpCisgWzgsOSkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8 IFsxMiwxMykKKyBbOCw5KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzEyLDEzKQor KDMgcm93cykKKworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAn WzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworICBpZCAgIHwg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFswMS0wMS0yMDE5LDAx LTAxLTIwMjApIHwgWzAsMSkKKyBbOCw5KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwg WzAsMSkKKyBbOCw5KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzAsMSkKKygzIHJv d3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdb MjIsMjJdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzIyLDIyXScsIGRh dGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTQsMTRdJywgZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1syMiwyMl0nKTsKK1VQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1syMywyM10nIFdIRVJFIGlkID0g J1syMiwyMl0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzE0 LDE0XSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lk IAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBb MTQsMTUpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkgfCBbMCwxKQorIFsxNCwxNSkgfCBb MDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsyMiwyMykKKygyIHJvd3MpCisKIC0tIHBhcnRp dGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE0LDE0XScsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOSw5XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbMTQsMTRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s5LDldJzsK KyAgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOSwxMCkgfCBb MDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzksMTApIHwgWzAxLTAxLTIwMTgs MDEtMDEtMjAxOSkgfCBbMTQsMTUpCisgWzksMTApIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAy MSkgfCBbMTQsMTUpCisoMyByb3dzKQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzksOV0nOworICAgaWQgICB8 ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs5LDEwKSB8IFswMS0wMS0yMDE5 LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbOSwxMCkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5 KSB8IFswLDEpCisgWzksMTApIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMCwxKQor KDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVF UyAoJ1syNCwyNF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjQsMjRd JywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzI0LDI0XScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1syNCwyNF0n IEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzE1LDE1XSc7Cisg ICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTUsMTYpIHwg WzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkgfCBbMCwxKQorIFsxNSwxNikgfCBbMDEtMDEtMjAy MCwwMS0wMS0yMDIxKSB8IFsyNCwyNSkKKygyIHJvd3MpCisKIERST1AgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZzsKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9v dmVybGFwcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNx bAppbmRleCAyNTBlZTcxYjFjLi5iZGI2YTYxNzdjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApAQCAtNzE4LDMxICs3MTgsMTE0IEBAIERFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAtLQogLS0gdGVz dCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKIC0tCistLSBUT0M6CistLSBwYXJlbnQgdXBk YXRlcyBDQVNDQURFCistLSBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCistLSBwYXJlbnQgdXBk YXRlcyBTRVQgTlVMTAorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKKy0tIHBhcmVudCB1 cGRhdGVzIFNFVCBERUZBVUxUCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAorLS0g cGFyZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRl bGV0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IHVwZGF0ZXMgU0VU IE5VTEwgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMICh0 d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdvIHNjYWxh ciBjb2xzLCBTRVQgTlVMTCBzdWJzZXQpCistLSBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVM VCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQgKHR3 byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0d28gc2Nh bGFyIGNvbHMsIFNFVCBERUZBVUxUIHN1YnNldCkKIAogLS0gdGVzdCBGSyBwYXJlbnQgdXBk YXRlcyBDQVNDQURFCiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7Ci1JTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf cm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJCU9OIERF TEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworLS0gbGVmdG92ZXJzIG9uIGJvdGgg c2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJF IGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUgdGVtcG9y YWxfcm5nIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBG SyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2Uo JzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbOCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAn WzksOV0nIFdIRVJFIGlkID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEn Ojp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9m a19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcsN10nLCAn WzgsOF0nLCAnWzksOV0nKTsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURF CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0t IG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5 LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0n KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3 LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CiAKIC0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMg U0VUIE5VTEwKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOSw5XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKLUlOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSwgJ1s5LDldJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKIEFMVEVSIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCiAJ CUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmcKIAkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVM TDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0w MScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1G UE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJF IGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK1VQREFU RSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s5LDldJyBXSEVSRSBpZCA9ICdbOCw4XScgQU5E IHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1 cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAs MTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBp ZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRlc3Qg RksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworLS0gbGVm dG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdI RVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyBkZWxldGU6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3Mg dHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s4 LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0t IGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElO ICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5n IFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKIAog LS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAogSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1stMSwtMV0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKLUlO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTIsMTJdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5n MnJuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzEyLDEyXScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2 LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nCiAgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQg J1stMSwtMV0nLAogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLApA QCAtNzUwLDYgKzgzMywyNzEgQEAgQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwog CQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5D RVMgdGVtcG9yYWxfcm5nCiAJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VU IERFRkFVTFQ7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3Jh bF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIw MjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7Cist LSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDdd JyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNl ZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAw LDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7 CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgs OF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0g Y2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgSU4g KCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworCist LSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sx MDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0n KTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIw LTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gdXBkYXRlOgor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0g RksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3Jhbmdl KCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1w OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAs MjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5 LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdvIHNjYWxh ciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdb Niw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5n X2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUgQ0FTQ0FE RSBPTiBVUERBVEUgQ0FTQ0FERTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorVVBE QVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0w MS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0g J1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcy IFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBh Y3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywg J1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBE QVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhd JyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBj bGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4g KCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcy IFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisK Ky0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBv biBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQx ID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUg aWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3 byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAo J1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScs IHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIw MTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcy cm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00g dGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwy MDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZd JywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IHVw ZGF0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxV RVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1s2LDZdJywgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZwor CURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lk MSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFs X3JuZzIKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKKy0tIGxl ZnRvdmVycyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBp ZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVw ZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlk MSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJF IGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0w MScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcg VkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbOCw4XScsICdbOCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9 ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEt MDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9y YWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3 LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMg U0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdb MTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZd JywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24t RlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2 LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAn WzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMg KCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4 LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9 ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0n OworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJF IGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5 XScpOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMICh0d28gc2NhbGFy IGNvbHMsIFNFVCBOVUxMIHN1YnNldCkKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFM VUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAw LDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywg J1s2LDZdJyk7CistLSBmYWlscyBiZWNhdXNlIHlvdSBjYW4ndCBzZXQgdGhlIFBFUklPRCBj b2x1bW46CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworCURST1AgQ09OU1RS QUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lk MiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04g REVMRVRFIFNFVCBOVUxMICh2YWxpZF9hdCkgT04gVVBEQVRFIFNFVCBOVUxMOworLS0gb2s6 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJf cm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVS SU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRF IFNFVCBOVUxMIChwYXJlbnRfaWQxKSBPTiBVUERBVEUgU0VUIE5VTEw7CistLSBsZWZ0b3Zl cnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJF IGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9z cyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxV RVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgs OF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1sy MDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdb Niw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVu dCB1cGRhdGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAnWy0xLC0xXScsIHRzcmFuZ2UobnVs bCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScs ICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisgIEFMVEVSIENPTFVNTiBwYXJlbnRf aWQxIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZDIg U0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJf cm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19mawor CQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0 KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNFVCBERUZBVUxU IE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgor VVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAx OS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEgPSAnWzcsN10nLCBpZDIgPSAnWzcs N10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9y bmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToKK1VQ REFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nLCBpZDIgPSAnWzcsN10nIFdI RVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQg cm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgs OF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAy MC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3Ju ZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VU IGlkMSA9ICdbOSw5XScsIGlkMiA9ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQg dmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1 cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAw LDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJF IGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRl c3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQgKHR3byBzY2FsYXIgY29scykKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24g Ym90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9 ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf ZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28g cmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdb OCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0 c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5 LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAw XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScs ICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxl dGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMsIFNFVCBERUZBVUxUIHN1YnNldCkK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWy0xLC0xXScsICdbNiw2XScs IHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxV RVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAs MTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAn WzYsNl0nKTsKKy0tIGZhaWxzIGJlY2F1c2UgeW91IGNhbid0IHNldCB0aGUgUEVSSU9EIGNv bHVtbjoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisgIEFMVEVSIENPTFVN TiBwYXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQg dGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsy X3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBF UklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9OIERFTEVU RSBTRVQgREVGQVVMVCAodmFsaWRfYXQpIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIG9r OgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgQUxURVIgQ09MVU1OIHBh cmVudF9pZDEgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5n MnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9E IHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNF VCBERUZBVUxUIChwYXJlbnRfaWQxKSBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CistLSBsZWZ0 b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdI RVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFj cm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBW QUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAn WzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAnWzgsOF0nLCB0c3Jhbmdl KG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVF UyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQx ID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAw XSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hF UkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5 LDldJyk7CisKKy0tIEZLIHdpdGggYSBjdXN0b20gcmFuZ2UgdHlwZQorCitDUkVBVEUgVFlQ RSBteWRhdGVyYW5nZSBBUyByYW5nZShzdWJ0eXBlPWRhdGUpOworCitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfcm5nMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IG15ZGF0ZXJhbmdl LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrM19y bmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgbXlkYXRlcmFuZ2UsCisJcGFy ZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrM19ybmcycm5nX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9mazNfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMyAoaWQsIFBFUklP RCB2YWxpZF9hdCkgT04gREVMRVRFIENBU0NBREUKKyk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmczIFZBTFVFUyAoJ1s4LDhdJywgbXlkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrM19ybmcycm5nIFZBTFVFUyAo J1s1LDVdJywgbXlkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgs OF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzMgRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s4LDhd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmszX3JuZzJybmcgV0hFUkUgaWQgPSAnWzUs NV0nOworCitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrM19ybmcycm5nOworRFJPUCBUQUJMRSB0 ZW1wb3JhbF9ybmczOworRFJPUCBUWVBFIG15ZGF0ZXJhbmdlOwogCiAtLSBGSyBiZXR3ZWVu IHBhcnRpdGlvbmVkIHRhYmxlcwogCkBAIC03NTksOCArMTEwNyw4IEBAIENSRUFURSBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKAogICBuYW1lIHRleHQsCiAJQ09OU1RSQUlO VCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7Ci1DUkVBVEUg VEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZB TFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywg J1sxMSwxMV0nKTsKLUNSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0n LCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitDUkVBVEUgVEFCTEUgdHAxIHBh cnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1sx LDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nLCAn WzEzLDEzXScsICdbMTUsMTVdJywgJ1sxNywxN10nLCAnWzE5LDE5XScsICdbMjEsMjFdJywg J1syMywyM10nKTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzAsMF0nLCAnWzIsMl0nLCAnWzQsNF0n LCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJywgJ1sxNCwxNF0nLCAn WzE2LDE2XScsICdbMTgsMThdJywgJ1syMCwyMF0nLCAnWzIyLDIyXScsICdbMjQsMjRdJyk7 CiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTCiAgICgnWzEs MV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCiAg ICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25l JyksCkBAIC03NzQsOCArMTEyMiw4IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nICgKIAlDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQog CQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoaWQsIFBFUklPRCB2YWxp ZF9hdCkKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKLUNSRUFURSBUQUJMRSB0ZmtwMSBw YXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVT IElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzEx LDExXScpOwotQ1JFQVRFIFRBQkxFIHRma3AyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdb Niw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0NSRUFURSBUQUJMRSB0 ZmtwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1Ig VkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0n LCAnWzExLDExXScsICdbMTMsMTNdJywgJ1sxNSwxNV0nLCAnWzE3LDE3XScsICdbMTksMTld JywgJ1syMSwyMV0nLCAnWzIzLDIzXScpOworQ1JFQVRFIFRBQkxFIHRma3AyIHBhcnRpdGlv biBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdb MCwwXScsICdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywg J1sxMiwxMl0nLCAnWzE0LDE0XScsICdbMTYsMTZdJywgJ1sxOCwxOF0nLCAnWzIwLDIwXScs ICdbMjIsMjJdJywgJ1syNCwyNF0nKTsKIAogLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgaW5z ZXJ0cwogCkBAIC04NTksMzcgKzEyMDcsMTA3IEBAIERFTEVURSBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJh bmdlCiAKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKIAorSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s2LDZdJywgZGF0 ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nCiAJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworVVBEQVRFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9 ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzQsNF0nOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNCw0XSc7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE1LDE1XScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBkYXRlcmFuZ2Uo JzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwLDEwXScsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTUsMTVdJyk7CitVUERBVEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdbMTUsMTVd JyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMCwxMF0nOwog CiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCiAKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOCw4XScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzUsNV0n OworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s4 LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgVkFMVUVTICgnWzE3LDE3XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEx LDExXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTdd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAn WzE3LDE3XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTEs MTFdJzsKKwogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKIAor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s5LDldJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s2LDZdJywgZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s5LDldJyk7CiBBTFRFUiBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nCiAJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CitVUERB VEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEwLDEwXScgV0hF UkUgaWQgPSAnWzksOV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb Niw2XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgn WzE4LDE4XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxOCwxOF0nLCBk YXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEyLDEyXScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTgsMThdJyk7CitVUERBVEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTksMTldJyBXSEVSRSBpZCA9 ICdbMTgsMThdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sx MiwxMl0nOwogCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTAog CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzExLDEx XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNyw3XScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTEsMTFdJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxMSwx MV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1s3LDddJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNyw3XSc7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzIwLDIwXScsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzEzLDEzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJyksICdbMjAsMjBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgV0hFUkUgaWQgPSAnWzIwLDIwXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAx Jzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMTMsMTNdJzsKKwogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVw ZGF0ZXMgU0VUIERFRkFVTFQKIAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFZBTFVFUyAoJ1swLDBdJywgZGF0ZXJhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTIsMTJdJywgZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s4LDhdJywgZGF0ZXJhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKIEFMVEVSIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKLSAgQUxURVIgQ09MVU1OIHBhcmVudF9p ZCBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VU IERFRkFVTFQgJ1swLDBdJywKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKIAkJT04gREVM RVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKK1VQREFURSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0w MS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdb MTIsMTJdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbOCw4XSc7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFNFVCBpZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOCw4XSc7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzIyLDIy XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMiwyMl0nLCBkYXRlcmFu Z2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzE0LDE0XScsIGRhdGVyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjIsMjJdJyk7CitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMjMsMjNdJyBXSEVSRSBpZCA9ICdbMjIs MjJdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxNCwxNF0n OwogCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAogCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE0LDE0XScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOSw5XScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTQsMTRdJyk7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxNCwxNF0n OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1s5LDldJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBX SEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOSw5XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzI0LDI0XScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFZBTFVFUyAoJ1syNCwyNF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgVkFMVUVTICgnWzE1LDE1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbMjQsMjRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgV0hFUkUgaWQgPSAnWzI0LDI0XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6 ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTUsMTVdJzsKKwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nOwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmc7Ci0t IAoyLjQyLjAKCg== --------------jwdNqnl5yO2Lo4Yc0EOjsS0s Content-Type: text/x-patch; charset=UTF-8; name="v18-0005-Add-PERIODs.patch" Content-Disposition: attachment; filename="v18-0005-Add-PERIODs.patch" Content-Transfer-Encoding: base64 RnJvbSBjMmNhZjU2NjhkYjAwMGIxZjhmZDk1NmUzMmQzM2NmNGVhNThiNGE2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAyMTo1OTo0MyAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggdjE4IDUvNV0gQWRkIFBFUklPRHMKCi0gQWRkZWQgcGFyc2lu ZyBmb3IgU1FMOjIwMTEgc3ludGF4IHRvIGRlZmluZSBhbiBhcHBsaWNhdGlvbi10aW1lIFBF UklPRCBvbiBhCiAgdGFibGUgKGluIGJvdGggQ1JFQVRFIFRBQkxFIGFuZCBBTFRFUiBUQUJM RSkuIE1ha2Ugc3VyZSB3ZSBjcmVhdGUgdGhlIFBFUklPRAogIGFmdGVyIGNvbHVtbnMgYXJl IGtub3duIChzaW5jZSBQRVJJT0RzIGNhbiByZWZlciB0byB0aGVtKSBidXQgYmVmb3JlCiAg Y29uc3RyYWludHMgYXJlIGhhbmRsZWQgKHNpbmNlIFBFUklPRHMgY2FuIGFwcGVhciBpbiB0 aGVtKS4KLSBBZGRlZCBBTFRFUiBUQUJMRSBEUk9QIHN1cHBvcnQgZm9yIFBFUklPRHMuCi0g Q3JlYXRlZCBwb3N0Z3Jlcy5wZ19wZXJpb2QgdGFibGUuCi0gQ3JlYXRlZCBpbmZvcm1hdGlv bl9zY2hlbWEucGVyaW9kcyB2aWV3LgotIEFkZGVkIHBnX2R1bXAgc3VwcG9ydC4KLSBBZGRl ZCB0ZXN0cyBhbmQgZG9jdW1lbnRhdGlvbi4KLSBBdXRvbWF0aWNhbGx5IGRlZmluZSBhIGNv bnN0cmFpbnQgZm9yIGVhY2ggUEVSSU9EIHJlcXVpcmluZyB0aGUgc3RhcnQgY29sdW1uCiAg dG8gYmUgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uLgotIFdoZW4gY3JlYXRpbmcgYSBQRVJJ T0QsIGNob29zZSBhbiBhcHByb3ByaWF0ZSByYW5nZSB0eXBlIHdlIGNhbiB1c2UgdG8KICBp bXBsZW1lbnQgUEVSSU9ELXJlbGF0ZWQgb3BlcmF0aW9ucy4gWW91IGNhbiBjaG9vc2Ugb25l IGV4cGxpY2l0bHkgaWYgdGhlcmUKICBpcyBhbWJpZ3VpdHkgKGR1ZSB0byBtdWx0aXBsZSBy YW5nZSB0eXBlcyBjcmVhdGVkIG92ZXIgdGhlIHNhbWUgYmFzZSB0eXBlKS4KLS0tCiBkb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAxMTIgKysrCiBk b2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTggKysK IGRvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbCAgICAgICAgICB8ICA2MyAr KwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDI1 ICsKIGRvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sICAgICAgICAgICAgICAgICB8ICAg MiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAgfCAg NDAgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwg ICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgICAgICAgICAgICAgICAgICB8 ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyAgICAgICAgICAgICAg fCAgIDkgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgICAgICAgICAgICAgICAgICAg IHwgIDc2ICsrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwg ICAgfCAgMjMgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYyAgICAg ICAgICAgfCAgNzMgKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMgICAgICAg ICAgICAgICB8IDEzMiArKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4 dCAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyAgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYyAg ICAgICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5j ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJp Z2dlci5jICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVs LmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYyAgICAgICAgICAgICAgfCA3NjMgKysrKysrKysrKysrKysrKystCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy92aWV3LmMgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jICAgICAgICAgICB8ICAxMCArCiBzcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAxNDUgKysrLQog c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgICAgICAgIHwgIDg3ICsr CiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jICAgICAgICAgICAgfCAgMjEg Kwogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jICAgICAgICAgIHwgICAx ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8IDE3 MyArKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAg fCAgMTQgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAgICAgICAgICAg IHwgICA3ICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAzNiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggICAgICAgICAgICAgICAg ICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmggICAgICAgICAg ICAgICAgfCAgIDEgLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaCAgICAgICAg ICAgICAgIHwgIDU0ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmggICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmggICAg ICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAg ICAgICAgICAgICAgfCAgMzkgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21k LmggICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAg ICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaCAg ICAgICAgICAgICAgICAgIHwgICAzICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRs X2RlcGFyc2UuYyAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bl cmlvZHMub3V0ICAgICAgICAgfCAxNzcgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w ZXJpb2RzLnNxbCAgICAgICAgICAgICAgfCAxMTkgKysrCiA0OCBmaWxlcyBjaGFuZ2VkLCAy MzE2IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZXJpb2RzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BlcmlvZHMuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRl eCA2MThhMDVhYzg5Li40NTBmMzVmOWQ1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtMjMwLDYg KzIzMCwxMSBAQAogICAgICAgPGVudHJ5PmluZm9ybWF0aW9uIGFib3V0IHBhcnRpdGlvbiBr ZXkgb2YgdGFibGVzPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXBlcmlvZCI+PHN0cnVjdG5hbWU+ cGdfcGVyaW9kPC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgorICAgICAgPGVudHJ5PnBl cmlvZHM8L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5 PjxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctcG9saWN5Ij48c3RydWN0bmFtZT5wZ19wb2xp Y3k8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CiAgICAgICA8ZW50cnk+cm93LXNlY3Vy aXR5IHBvbGljaWVzPC9lbnRyeT4KQEAgLTU3MjMsNiArNTcyOCwxMTMgQEAgU0NSQU0tU0hB LTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxl Pjo8cmVwbGFjZWFibGU+JmwKICAgICAgICBhcmUgc2ltcGxlIHJlZmVyZW5jZXMuCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICA8L3Rib2R5PgorICAgPC90 Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKworCisgPHNlY3QxIGlkPSJjYXRhbG9n LXBnLXBlcmlvZCI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVjdG5h bWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFsb2ctcGctcGVyaW9kIj4K KyAgIDxwcmltYXJ5PnBnX3BlcmlvZDwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAg PHBhcmE+CisgICBUaGUgY2F0YWxvZyA8c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVjdG5h bWU+IHN0b3JlcworICAgaW5mb3JtYXRpb24gYWJvdXQgc3lzdGVtIGFuZCBhcHBsaWNhdGlv biB0aW1lIHBlcmlvZHMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFBlcmlvZHMgYXJl IGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJkZGwtcGVyaW9kcyIvPi4KKyAgPC9wYXJh PgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVj dG5hbWU+IENvbHVtbnM8L3RpdGxlPgorCisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0 aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5 cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAg IDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIFJvdyBpZGVudGlmaWVyCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcm5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0 PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUGVyaW9kIG5h bWUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVycmVsaWQ8L3N0cnVj dGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlu a2VuZD0iY2F0YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5hbWU+cGdfY2xhc3M8L3N0cnVjdG5h bWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgdGFibGUgdGhpcyBwZXJpb2QgYmVsb25n cyB0bworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJzdGFydDwvc3Ry dWN0ZmllbGQ+IDx0eXBlPmludDI8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsg bGlua2VuZD0iY2F0YWxvZy1wZy1hdHRyaWJ1dGUiPjxzdHJ1Y3RuYW1lPnBnX2F0dHJpYnV0 ZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5hdHRudW08L3N0cnVjdGZpZWxk PikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBudW1iZXIgb2Yg dGhlIHN0YXJ0IGNvbHVtbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5w ZXJlbmQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90eXBlPgorICAgICAgIChyZWZlcmVu Y2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFtZT5w Z19hdHRyaWJ1dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVtPC9z dHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUg bnVtYmVyIG9mIHRoZSBlbmQgY29sdW1uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPnBlcnJhbmdlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MjwvdHlwZT4KKyAgICAg ICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF0dHJpYnV0ZSI+PHN0 cnVjdG5hbWU+cGdfYXR0cmlidXRlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxk PmF0dG51bTwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgVGhlIG51bWJlciBvZiB0aGUgPGxpdGVyYWw+R0VORVJBVEVEPC9saXRlcmFsPiBj b2x1bW4gdGhhdCBpbXBsZW1lbnRzIHRoZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+Lgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJjb25zdHJhaW50PC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxp bmtlbmQ9ImNhdGFsb2ctcGctY29uc3RyYWludCI+PHN0cnVjdG5hbWU+cGdfY29uc3RyYWlu dDwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikK KyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBPSUQgb2YgdGhlIHBl cmlvZCdzIDxsaXRlcmFsPkNIRUNLPC9saXRlcmFsPiBjb25zdHJhaW50CisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICA8L3Rib2R5PgogICAgPC90Z3JvdXA+ CiAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mv c3JjL3NnbWwvZGRsLnNnbWwKaW5kZXggNDQ5MGU4MmFhNS4uY2I2YTQ5ODNiZSAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dt bApAQCAtMTI2Myw2ICsxMjYzLDY0IEBAIENSRUFURSBUQUJMRSBjaXJjbGVzICgKICAgPC9z ZWN0Mj4KICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJkZGwtcGVyaW9kcyI+CisgIDx0aXRs ZT5QZXJpb2RzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFBlcmlvZHMgYXJlIGRlZmluaXRp b25zIG9uIGEgdGFibGUgdGhhdCBhc3NvY2lhdGUgYSBwZXJpb2QgbmFtZSB3aXRoIGEgc3Rh cnQKKyAgIGNvbHVtbiBhbmQgYW4gZW5kIGNvbHVtbi4gIEJvdGggY29sdW1ucyBtdXN0IGJl IG9mIGV4YWN0bHkgdGhlIHNhbWUgdHlwZQorICAgKGluY2x1ZGluZyBjb2xsYXRpb24pLCBo YXZlIGEgYnRyZWUgb3BlcmF0b3IgY2xhc3MsIGFuZCB0aGUgc3RhcnQgY29sdW1uCisgICB2 YWx1ZSBtdXN0IGJlIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIGNvbHVtbiB2YWx1ZS4K KyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBwZXJp b2RzOiBhcHBsaWNhdGlvbiBhbmQgc3lzdGVtLiAgU3lzdGVtIHBlcmlvZHMgYXJlCisgICBk aXN0aW5ndWlzaGVkIGJ5IHRoZWlyIG5hbWUgd2hpY2ggbXVzdCBiZSA8bGl0ZXJhbD5TWVNU RU1fVElNRTwvbGl0ZXJhbD4uICBBbnkKKyAgIG90aGVyIG5hbWUgaXMgYW4gYXBwbGljYXRp b24gcGVyaW9kLgorICA8L3BhcmE+CisKKyAgPHNlY3QyIGlkPSJkZGwtcGVyaW9kcy1hcHBs aWNhdGlvbi1wZXJpb2RzIj4KKyAgPHRpdGxlPkFwcGxpY2F0aW9uIFBlcmlvZHM8L3RpdGxl PgorCisgICA8aW5kZXh0ZXJtPgorICAgIDxwcmltYXJ5PnBlcmlvZDwvcHJpbWFyeT4KKyAg ICA8c2Vjb25kYXJ5PmFwcGxpY2F0aW9uPC9zZWNvbmRhcnk+CisgICA8L2luZGV4dGVybT4K KworICAgPHBhcmE+CisgICAgQXBwbGljYXRpb24gcGVyaW9kcyBhcmUgZGVmaW5lZCBvbiBh IHRhYmxlIHVzaW5nIHRoZSBmb2xsb3dpbmcgc3ludGF4OgorICAgPC9wYXJhPgorCis8cHJv Z3JhbWxpc3Rpbmc+CitDUkVBVEUgVEFCTEUgYmlsbGluZ19hZGRyZXNzZXMgKAorICBjdXN0 b21lcl9pZCBpbnRlZ2VyLAorICBhZGRyZXNzX2lkIGludGVnZXIsCisgIHZhbGlkX2Zyb20g ZGF0ZSwKKyAgdmFsaWRfdG8gZGF0ZSwKKyAgPGVtcGhhc2lzPlBFUklPRCBGT1IgdmFsaWRp dHkgKHZhbGlkX2Zyb20sIHZhbGlkX3RvKTwvZW1waGFzaXM+CispOworPC9wcm9ncmFtbGlz dGluZz4KKworICAgPHBhcmE+CisgICAgQXBwbGljYXRpb24gcGVyaW9kcyBjYW4gYmUgdXNl ZCB0byBkZWZpbmUgdGVtcG9yYWwgcHJpbWFyeSBhbmQgZm9yZWlnbiBrZXlzLgorICAgIEFu eSB0YWJsZSB3aXRoIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkgaXMgYSB0ZW1wb3JhbCB0YWJs ZSBhbmQgc3VwcG9ydHMgdGVtcG9yYWwgdXBkYXRlIGFuZCBkZWxldGUgY29tbWFuZHMuCisg ICA8L3BhcmE+CisgIDwvc2VjdDI+CisKKyAgPHNlY3QyIGlkPSJkZGwtcGVyaW9kcy1zeXN0 ZW0tcGVyaW9kcyI+CisgICA8dGl0bGU+U3lzdGVtIFBlcmlvZHM8L3RpdGxlPgorCisgICA8 aW5kZXh0ZXJtPgorICAgIDxwcmltYXJ5PnBlcmlvZDwvcHJpbWFyeT4KKyAgICA8c2Vjb25k YXJ5PnN5c3RlbTwvc2Vjb25kYXJ5PgorICAgPC9pbmRleHRlcm0+CisKKyAgIDxwYXJhPgor ICAgIFBlcmlvZHMgZm9yIDxsaXRlcmFsPlNZU1RFTV9USU1FPC9saXRlcmFsPiBhcmUgY3Vy cmVudGx5IG5vdCBpbXBsZW1lbnRlZC4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKyA8L3Nl Y3QxPgorCiAgPHNlY3QxIGlkPSJkZGwtc3lzdGVtLWNvbHVtbnMiPgogICA8dGl0bGU+U3lz dGVtIENvbHVtbnM8L3RpdGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvaW5mb3Jt YXRpb25fc2NoZW1hLnNnbWwgYi9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNn bWwKaW5kZXggOWMzOWU5YWFiNS4uODQxMmJmMGE4NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9pbmZvcm1h dGlvbl9zY2hlbWEuc2dtbApAQCAtNDE3MSw2ICs0MTcxLDY5IEBAIE9SREVSIEJZIGMub3Jk aW5hbF9wb3NpdGlvbjsKICAgPC90YWJsZT4KICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJp bmZvc2NoZW1hLXBlcmlvZHMiPgorICA8dGl0bGU+PGxpdGVyYWw+cGVyaW9kczwvbGl0ZXJh bD48L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhlIHZpZXcgPGxpdGVyYWw+cGFyYW1ldGVy czwvbGl0ZXJhbD4gY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICBwZXJpb2Rz IG9mIGFsbCB0YWJsZXMgaW4gdGhlIGN1cnJlbnQgZGF0YWJhc2UuICBUaGUgc3RhcnQgYW5k IGVuZCBjb2x1bW4KKyAgIG5hbWVzIGFyZSBvbmx5IHNob3duIGlmIHRoZSBjdXJyZW50IHVz ZXIgaGFzIGFjY2VzcyB0byB0aGVtIChieSB3YXkgb2YgYmVpbmcKKyAgIHRoZSBvd25lciBv ciBoYXZpbmcgc29tZSBwcml2aWxlZ2UpLgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAg PHRpdGxlPjxsaXRlcmFsPnBlcmlvZHM8L2xpdGVyYWw+IENvbHVtbnM8L3RpdGxlPgorCisg ICA8dGdyb3VwIGNvbHM9IjMiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeT5OYW1lPC9lbnRyeT4KKyAgICAgIDxlbnRyeT5EYXRhIFR5cGU8L2VudHJ5PgorICAg ICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVh ZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD50 YWJsZV9jYXRhbG9nPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+c3Fs X2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBk YXRhYmFzZSBjb250YWluaW5nIHRoZSBwZXJpb2QgKGFsd2F5cyB0aGUgY3VycmVudCBkYXRh YmFzZSk8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 PjxsaXRlcmFsPnRhYmxlX3NjaGVtYTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5 Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFt ZSBvZiB0aGUgc2NoZW1hIGNvbnRhaW5pbmcgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwv cm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+dGFibGVfbmFtZTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90 eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgdGFibGUgY29udGFpbmlu ZyB0aGUgcGVyaW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGl0ZXJhbD5wZXJpb2RfbmFtZTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg PGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50 cnk+TmFtZSBvZiB0aGUgcGVyaW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5zdGFydF9jb2x1bW5fbmFtZTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50 cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgc3RhcnQgY29sdW1uIGZvciB0aGUgcGVy aW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48 bGl0ZXJhbD5lbmRfY29sdW1uX25hbWU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5h bWUgb2YgdGhlIGVuZCBjb2x1bW4gZm9yIHRoZSBwZXJpb2Q8L2VudHJ5PgorICAgICA8L3Jv dz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4K KwogIDxzZWN0MSBpZD0iaW5mb3NjaGVtYS1yZWZlcmVudGlhbC1jb25zdHJhaW50cyI+CiAg IDx0aXRsZT48bGl0ZXJhbD5yZWZlcmVudGlhbF9jb25zdHJhaW50czwvbGl0ZXJhbD48L3Rp dGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXggMmM0MTM4ZTRlOS4u YWVlOTg2ZWZkNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApAQCAtNjAsNiAr NjAsOCBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBTFRFUiBDT05TVFJBSU5UIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2Vh YmxlPiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElBTExZIERFRkVS UkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCiAgICAgVkFMSURBVEUgQ09OU1RSQUlOVCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNl YWJsZT4KICAgICBEUk9QIENPTlNUUkFJTlQgWyBJRiBFWElTVFMgXSAgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+IFsgUkVT VFJJQ1QgfCBDQVNDQURFIF0KKyAgICBBREQgUEVSSU9EIEZPUiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF9jb2x1bW48L3JlcGxhY2VhYmxlPiwgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF9jb2x1bW48L3JlcGxhY2VhYmxlPiApIFsg V0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9y ZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKyAgICBEUk9QIFBFUklPRCBGT1IgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gWyBSRVNU UklDVCB8IENBU0NBREUgXQogICAgIERJU0FCTEUgVFJJR0dFUiBbIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50cmlnZ2VyX25hbWU8L3JlcGxhY2VhYmxlPiB8IEFMTCB8IFVT RVIgXQogICAgIEVOQUJMRSBUUklHR0VSIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRyaWdnZXJfbmFtZTwvcmVwbGFjZWFibGU+IHwgQUxMIHwgVVNFUiBdCiAgICAgRU5B QkxFIFJFUExJQ0EgVFJJR0dFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJp Z2dlcl9uYW1lPC9yZXBsYWNlYWJsZT4KQEAgLTU3MSw2ICs1NzMsMjkgQEAgV0lUSCAoIE1P RFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwv cmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+ CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtYWRkLXBlcmlv ZCI+CisgICAgPHRlcm0+PGxpdGVyYWw+QUREIFBFUklPRCBGT1I8L2xpdGVyYWw+PC90ZXJt PgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZvcm0gYWRkcyBh IG5ldyBwZXJpb2QgdG8gYSB0YWJsZSB1c2luZyB0aGUgc2FtZSBzeW50YXggYXMKKyAgICAg IDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV0YWJsZSIvPi4KKyAgICAgPC9wYXJhPgorICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeSBp ZD0ic3FsLWFsdGVydGFibGUtZGVzYy1kcm9wLXBlcmlvZCI+CisgICAgPHRlcm0+PGxpdGVy YWw+RFJPUCBQRVJJT0QgRk9SPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIGRyb3BzIHRoZSBzcGVjaWZpZWQgcGVyaW9k IG9uIGEgdGFibGUuICBUaGUgc3RhcnQgYW5kIGVuZAorICAgICAgY29sdW1ucyB3aWxsIG5v dCBiZSBkcm9wcGVkIGJ5IHRoaXMgY29tbWFuZCBidXQgdGhlCisgICAgICA8bGl0ZXJhbD5D SEVDSzwvbGl0ZXJhbD4gY29uc3RyYWludCB3aWxsIGJlLiAgWW91IHdpbGwgbmVlZCB0byBz YXkKKyAgICAgIDxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+IGlmIGFueXRoaW5nIG91dHNp ZGUgdGhlIHRhYmxlIGRlcGVuZHMgb24gdGhlCisgICAgICBjb2x1bW4uCisgICAgIDwvcGFy YT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0 ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtZGlzYWJsZS1lbmFibGUtdHJpZ2dlciI+ CiAgICAgPHRlcm0+PGxpdGVyYWw+RElTQUJMRTwvbGl0ZXJhbD4vPGxpdGVyYWw+RU5BQkxF IFsgUkVQTElDQSB8IEFMV0FZUyBdIFRSSUdHRVI8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxs aXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKaW5kZXggNWI0M2M1NmIxMy4uNDljMmRm OTk0NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKQEAgLTQ0LDYgKzQ0LDcgQEAgQ09NTUVO VCBPTgogICBPUEVSQVRPUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0 b3JfbmFtZTwvcmVwbGFjZWFibGU+ICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bGVmdF90eXBlPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yaWdodF90eXBlPC9yZXBsYWNlYWJsZT4pIHwKICAgT1BFUkFUT1IgQ0xBU1MgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNlYWJsZT4gVVNJ TkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFj ZWFibGU+IHwKICAgT1BFUkFUT1IgRkFNSUxZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5vYmplY3RfbmFtZTwvcmVwbGFjZWFibGU+IFVTSU5HIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5pbmRleF9tZXRob2Q8L3JlcGxhY2VhYmxlPiB8CisgIFBFUklPRCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVsYXRpb25fbmFtZTwvcmVwbGFjZWFi bGU+LjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFj ZWFibGU+IHwKICAgUE9MSUNZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wb2xp Y3lfbmFtZTwvcmVwbGFjZWFibGU+IE9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gfAogICBbIFBST0NFRFVSQUwgXSBMQU5HVUFH RSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2Vh YmxlPiB8CiAgIFBST0NFRFVSRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHJv Y2VkdXJlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggWyBbIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5hcmdtb2RlPC9yZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5hcmduYW1lPC9yZXBsYWNlYWJsZT4gXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+YXJndHlwZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXSApIF0gfApA QCAtMzQxLDYgKzM0Miw3IEBAIENPTU1FTlQgT04gT1BFUkFUT1IgXiAodGV4dCwgdGV4dCkg SVMgJ1BlcmZvcm1zIGludGVyc2VjdGlvbiBvZiB0d28gdGV4dHMnOwogQ09NTUVOVCBPTiBP UEVSQVRPUiAtIChOT05FLCBpbnRlZ2VyKSBJUyAnVW5hcnkgbWludXMnOwogQ09NTUVOVCBP TiBPUEVSQVRPUiBDTEFTUyBpbnQ0b3BzIFVTSU5HIGJ0cmVlIElTICc0IGJ5dGUgaW50ZWdl ciBvcGVyYXRvcnMgZm9yIGJ0cmVlcyc7CiBDT01NRU5UIE9OIE9QRVJBVE9SIEZBTUlMWSBp bnRlZ2VyX29wcyBVU0lORyBidHJlZSBJUyAnYWxsIGludGVnZXIgb3BlcmF0b3JzIGZvciBi dHJlZXMnOworQ09NTUVOVCBPTiBQRVJJT0QgbXlfdGFibGUubXlfY29sdW1uIElTICdTYWxl cyBwcm9tb3Rpb24gdmFsaWRpdHknOwogQ09NTUVOVCBPTiBQT0xJQ1kgbXlfcG9saWN5IE9O IG15dGFibGUgSVMgJ0ZpbHRlciByb3dzIGJ5IHVzZXJzJzsKIENPTU1FTlQgT04gUFJPQ0VE VVJFIG15X3Byb2MgKGludGVnZXIsIGludGVnZXIpIElTICdSdW5zIGEgcmVwb3J0JzsKIENP TU1FTlQgT04gUFVCTElDQVRJT04gYWxsdGFibGVzIElTICdQdWJsaXNoZXMgYWxsIG9wZXJh dGlvbnMgb24gYWxsIHRhYmxlcyc7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbApp bmRleCBiNWY0ODUyNWRlLi5iMDBiZDgwY2Y1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3Rh YmxlLnNnbWwKQEAgLTIzLDYgKzIzLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiA8 c3lub3BzaXM+CiBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBU RU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gKCBbCiAgIHsg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJs ZT4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFi bGU+IFsgU1RPUkFHRSB7IFBMQUlOIHwgRVhURVJOQUwgfCBFWFRFTkRFRCB8IE1BSU4gfCBE RUZBVUxUIH0gXSBbIENPTVBSRVNTSU9OIDxyZXBsYWNlYWJsZT5jb21wcmVzc2lvbl9tZXRo b2Q8L3JlcGxhY2VhYmxlPiBdIFsgQ09MTEFURSA8cmVwbGFjZWFibGU+Y29sbGF0aW9uPC9y ZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f Y29uc3RyYWludDwvcmVwbGFjZWFibGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxl PnBlcmlvZF9kZWZpbml0aW9uPC9yZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50 YWJsZV9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT4KICAgICB8IExJS0UgPHJlcGxhY2VhYmxl PnNvdXJjZV90YWJsZTwvcmVwbGFjZWFibGU+IFsgPHJlcGxhY2VhYmxlPmxpa2Vfb3B0aW9u PC9yZXBsYWNlYWJsZT4gLi4uIF0gfQogICAgIFssIC4uLiBdCkBAIC0zNyw2ICszOCw3IEBA IENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8IFVO TE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJCiBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FM IF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVY SVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBs YWNlYWJsZT4KICAgICBPRiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHlwZV9u YW1lPC9yZXBsYWNlYWJsZT4gWyAoCiAgIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBXSVRIIE9QVElPTlMgXSBbIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fY29uc3RyYWludDwvcmVwbGFjZWFi bGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxlPnBlcmlvZF9kZWZpbml0aW9uPC9y ZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50YWJsZV9jb25zdHJhaW50PC9yZXBs YWNlYWJsZT4gfQogICAgIFssIC4uLiBdCiApIF0KQEAgLTQ5LDYgKzUxLDcgQEAgQ1JFQVRF IFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQg XSBUQUJMRSBbIElGIE5PVCBFWEkKIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRF TVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJU1RTIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxl PgogICAgIFBBUlRJVElPTiBPRiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy ZW50X3RhYmxlPC9yZXBsYWNlYWJsZT4gWyAoCiAgIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBXSVRIIE9QVElPTlMgXSBb IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fY29uc3RyYWludDwvcmVw bGFjZWFibGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxlPnBlcmlvZF9kZWZpbml0 aW9uPC9yZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50YWJsZV9jb25zdHJhaW50 PC9yZXBsYWNlYWJsZT4gfQogICAgIFssIC4uLiBdCiApIF0geyBGT1IgVkFMVUVTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFj ZWFibGU+IHwgREVGQVVMVCB9CkBAIC03Myw2ICs3NiwxMSBAQCBDUkVBVEUgWyBbIEdMT0JB TCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsg SUYgTk9UIEVYSQogICAgIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBdIFsgT04gVVBEQVRFIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxh Y2VhYmxlPiBdIH0KIFsgREVGRVJSQUJMRSB8IE5PVCBERUZFUlJBQkxFIF0gWyBJTklUSUFM TFkgREVGRVJSRUQgfCBJTklUSUFMTFkgSU1NRURJQVRFIF0KIAorPHBocmFzZT5hbmQgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9kZWZpbml0aW9uPC9yZXBsYWNl YWJsZT4gaXM6PC9waHJhc2U+CisKK1BFUklPRCBGT1IgeyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiB8IFNZU1RFTV9USU1FIH0g KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gKQorWyBXSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBl cmlvZF9vcHRpb248L3JlcGxhY2VhYmxlPiA9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorCiA8cGhyYXNlPmFuZCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfY29uc3RyYWludDwvcmVwbGFj ZWFibGU+IGlzOjwvcGhyYXNlPgogCiBbIENPTlNUUkFJTlQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+IF0KQEAgLTE0MCw2 ICsxNDgsMTQgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgIG5hbWUgYXMgYW55 IGV4aXN0aW5nIGRhdGEgdHlwZSBpbiB0aGUgc2FtZSBzY2hlbWEuCiAgIDwvcGFyYT4KIAor ICA8cGFyYT4KKyAgIFBlcmlvZHMgbXkgYmUgZGVmaW5lZCBvbiB0YWJsZXMsIHNwZWNpZnlp bmcgdGhhdCB0d28gZXhpc3RpbmcgY29sdW1ucworICAgcmVwcmVzZW50IHN0YXJ0IGFuZCBl bmQgdmFsdWVzIGZvciB0aGUgcGVyaW9kLiAgUGVyaW9kcyBtYXkgaGF2ZSBhbnkgbmFtZQor ICAgdGhhdCBkb2Vzbid0IGNvbmZsaWN0IHdpdGggYSBjb2x1bW4gbmFtZSwgYnV0IHRoZSBu YW1lCisgICA8bGl0ZXJhbD5TWVNURU1fVElNRTwvbGl0ZXJhbD4gaXMgc3BlY2lhbCwgdXNl ZCBmb3IgdmVyc2lvbmluZyB0YWJsZXMuCisgICBTeXN0ZW0gcGVyaW9kcyBhcmUgbm90IHll dCBpbXBsZW1lbnRlZC4gIFNlZSA8eHJlZiBsaW5rZW5kPSJkZGwtcGVyaW9kcyIvPiBmb3Ig bW9yZSBkZXRhaWxzLgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBUaGUgb3B0aW9uYWwg Y29uc3RyYWludCBjbGF1c2VzIHNwZWNpZnkgY29uc3RyYWludHMgKHRlc3RzKSB0aGF0CiAg ICBuZXcgb3IgdXBkYXRlZCByb3dzIG11c3Qgc2F0aXNmeSBmb3IgYW4gaW5zZXJ0IG9yIHVw ZGF0ZSBvcGVyYXRpb24KQEAgLTgwMCw2ICs4MTYsMzAgQEAgV0lUSCAoIE1PRFVMVVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFi bGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2 YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGV0YWJsZS1wYXJtcy1wZXJpb2QiPgorICAgIDx0 ZXJtPjxsaXRlcmFsPlBFUklPRCBGT1IgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gKSBbIFdJVEggKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX29wdGlvbjwvcmVwbGFjZWFibGU+ID0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT4gWywg Li4uIF0gKSBdPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgQSBwZXJpb2QgZGVmaW5pdGlvbiBnaXZlcyBzZW1hbnRpYyBtZWFuaW5nIHRv IHR3byBleGlzdGluZyBjb2x1bW5zIG9mCisgICAgICB0aGUgdGFibGUuICBJdCBkZWZpbmVz IGEgInN0YXJ0IGNvbHVtbiIgYW5kIGFuICJlbmQgY29sdW1uIiB3aGVyZSB0aGUKKyAgICAg IHN0YXJ0IHZhbHVlIGlzIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIHZhbHVlLiAgQQor ICAgICAgPGxpdGVyYWw+Q0hFQ0s8L2xpdGVyYWw+IGNvbnN0cmFpbnQgaXMgYXV0b21hdGlj YWxseSBjcmVhdGVkIHRvIGVuZm9yY2UKKyAgICAgIHRoaXMuIFlvdSBjYW4gc3BlY2lmeSB0 aGUgbmFtZSBvZiB0aGF0IGNvbnN0cmFpbnQgd2l0aCB0aGUKKyAgICAgIDxsaXRlcmFsPmNo ZWNrX2NvbnN0cmFpbnRfbmFtZTwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxhY2VhYmxlPi4KKyAgICAgPC9wYXJhPgorCisg ICAgIDxwYXJhPgorICAgICAgQm90aCBjb2x1bW5zIG11c3QgaGF2ZSBleGFjdGx5IHRoZSBz YW1lIHR5cGUgYW5kIG11c3QgaGF2ZSBhIHJhbmdlIHR5cGUKKyAgICAgIGRlZmluZWQgZnJv bSB0aGVpciBiYXNlIHR5cGUuICBJZiB0aGVyZSBhcmUgc2V2ZXJhbCByYW5nZSB0eXBlcyBm b3IgdGhhdAorICAgICAgYmFzZSB0eXBlLCB5b3UgbXVzdCBzcGVjaWZ5IHdoaWNoIG9uZSB5 b3Ugd2FudCBieSB1c2luZyB0aGUKKyAgICAgIDxsaXRlcmFsPnJhbmdldHlwZTwvbGl0ZXJh bD4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxh Y2VhYmxlPi4KKyAgICAgIEFueSBiYXNlIHR5cGUgaXMgYWxsb3dlZCwgYXMgbG9uZyBhcyBp dCBoYXMgYSByYW5nZSB0eXBlLCBhbHRob3VnaCBpdCBpcworICAgICAgZXhwZWN0ZWQgdGhh dCBtb3N0IHBlcmlvZHMgd2lsbCB1c2UgdGVtcG9yYWwgdHlwZXMgbGlrZSA8bGl0ZXJhbD50 aW1lc3RhbXB0ejwvbGl0ZXJhbD4KKyAgICAgIG9yIDxsaXRlcmFsPmRhdGU8L2xpdGVyYWw+ LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMtY29uc3RyYWlu dCI+CiAgICAgPHRlcm0+PGxpdGVyYWw+Q09OU1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90 ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv TWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCmluZGV4IGVjN2I2ZjUz NjIuLjQ2NmY1NzA5NWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZp bGUKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQpAQCAtMzksNiArMzksNyBA QCBPQkpTID0gXAogCXBnX25hbWVzcGFjZS5vIFwKIAlwZ19vcGVyYXRvci5vIFwKIAlwZ19w YXJhbWV0ZXJfYWNsLm8gXAorCXBnX3BlcmlvZC5vIFwKIAlwZ19wcm9jLm8gXAogCXBnX3B1 YmxpY2F0aW9uLm8gXAogCXBnX3JhbmdlLm8gXApAQCAtMTExLDYgKzExMiw3IEBAIENBVEFM T0dfSEVBREVSUyA6PSBcCiAJcGdfY29sbGF0aW9uLmggXAogCXBnX3BhcmFtZXRlcl9hY2wu aCBcCiAJcGdfcGFydGl0aW9uZWRfdGFibGUuaCBcCisJcGdfcGVyaW9kLmggXAogCXBnX3Jh bmdlLmggXAogCXBnX3RyYW5zZm9ybS5oIFwKIAlwZ19zZXF1ZW5jZS5oIFwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2FjbGNoay5jCmluZGV4IDNjZTZjMDliNDQuLjVkZDc4YzdkMDkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9h Y2xjaGsuYwpAQCAtMjgxNyw2ICsyODE3LDcgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0 IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9ERUZBVUxU OgogCQkJCQljYXNlIE9CSkVDVF9ERUZBQ0w6CiAJCQkJCWNhc2UgT0JKRUNUX0RPTUNPTlNU UkFJTlQ6CisJCQkJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJCQkJY2FzZSBPQkpFQ1RfUFVC TElDQVRJT05fTkFNRVNQQUNFOgogCQkJCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6 CiAJCQkJCWNhc2UgT0JKRUNUX1JPTEU6CkBAIC0yOTU4LDYgKzI5NTksNyBAQCBhY2xjaGVj a19lcnJvcihBY2xSZXN1bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNh c2UgT0JKRUNUX0RFRkFDTDoKIAkJCQkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKIAkJ CQkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJCQkJY2FzZSBPQkpFQ1RfUEVSSU9E OgogCQkJCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJCQkJCWNhc2Ug T0JKRUNUX1BVQkxJQ0FUSU9OX1JFTDoKIAkJCQkJY2FzZSBPQkpFQ1RfUk9MRToKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9kZXBlbmRlbmN5LmMKaW5kZXggZjhhMTM2YmEwYS4uMjMyZjc3Yzk2ZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl ICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWls eS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFyYW1ldGVyX2FjbC5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wb2xpY3kuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmgiCkBAIC0xNTQsNiArMTU1LDcgQEAgc3RhdGljIGNvbnN0IE9pZCBvYmpl Y3RfY2xhc3Nlc1tdID0gewogCUNhc3RSZWxhdGlvbklkLAkJCQkvKiBPQ0xBU1NfQ0FTVCAq LwogCUNvbGxhdGlvblJlbGF0aW9uSWQsCQkvKiBPQ0xBU1NfQ09MTEFUSU9OICovCiAJQ29u c3RyYWludFJlbGF0aW9uSWQsCQkvKiBPQ0xBU1NfQ09OU1RSQUlOVCAqLworCVBlcmlvZFJl bGF0aW9uSWQsCQkJLyogT0NMQVNTX1BFUklPRCAqLwogCUNvbnZlcnNpb25SZWxhdGlvbklk LAkJLyogT0NMQVNTX0NPTlZFUlNJT04gKi8KIAlBdHRyRGVmYXVsdFJlbGF0aW9uSWQsCQkv KiBPQ0xBU1NfREVGQVVMVCAqLwogCUxhbmd1YWdlUmVsYXRpb25JZCwJCQkvKiBPQ0xBU1Nf TEFOR1VBR0UgKi8KQEAgLTE0NDMsNiArMTQ0NSwxMCBAQCBkb0RlbGV0aW9uKGNvbnN0IE9i amVjdEFkZHJlc3MgKm9iamVjdCwgaW50IGZsYWdzKQogCQkJUmVtb3ZlQ29uc3RyYWludEJ5 SWQob2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVhazsKIAorCQljYXNlIE9DTEFTU19QRVJJ T0Q6CisJCQlSZW1vdmVQZXJpb2RCeUlkKG9iamVjdC0+b2JqZWN0SWQpOworCQkJYnJlYWs7 CisKIAkJY2FzZSBPQ0xBU1NfREVGQVVMVDoKIAkJCVJlbW92ZUF0dHJEZWZhdWx0QnlJZChv YmplY3QtPm9iamVjdElkKTsKIAkJCWJyZWFrOwpAQCAtMjg2Miw2ICsyODY4LDkgQEAgZ2V0 T2JqZWN0Q2xhc3MoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQogCQljYXNlIENvbnN0 cmFpbnRSZWxhdGlvbklkOgogCQkJcmV0dXJuIE9DTEFTU19DT05TVFJBSU5UOwogCisJCWNh c2UgUGVyaW9kUmVsYXRpb25JZDoKKwkJCXJldHVybiBPQ0xBU1NfUEVSSU9EOworCiAJCWNh c2UgQ29udmVyc2lvblJlbGF0aW9uSWQ6CiAJCQlyZXR1cm4gT0NMQVNTX0NPTlZFUlNJT047 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggNmI2NjA5ZTIzYS4uZGQxMjlhYjRiMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9oZWFwLmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX25h bWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfcGFydGl0aW9uZWRfdGFibGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190YWJsZXNwYWNlLmgiCkBAIC0yMDM5LDYgKzIwNDAsODEgQEAgU2V0QXR0ck1pc3Npbmco T2lkIHJlbGlkLCBjaGFyICphdHRuYW1lLCBjaGFyICp2YWx1ZSkKIAl0YWJsZV9jbG9zZSh0 YWJsZXJlbCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiB9CiAKKy8qCisgKiBTdG9yZSBhIHBl cmlvZCBvZiByZWxhdGlvbiByZWwuCisgKgorICogUmV0dXJucyB0aGUgT0lEIG9mIHRoZSBu ZXcgcGdfcGVyaW9kIHR1cGxlLgorICovCitPaWQKK1N0b3JlUGVyaW9kKFJlbGF0aW9uIHJl bCwgY29uc3QgY2hhciAqcGVyaW9kbmFtZSwgQXR0ck51bWJlciBzdGFydG51bSwKKwkJCUF0 dHJOdW1iZXIgZW5kbnVtLCBBdHRyTnVtYmVyIHJhbmdlbnVtLCBPaWQgY29ub2lkKQorewor CURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcGVyaW9kXTsKKwlib29sCQludWxsc1tOYXR0c19w Z19wZXJpb2RdOworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwbGU7CisJ T2lkCQkJb2lkOworCU5hbWVEYXRhCXBlcm5hbWU7CisJT2JqZWN0QWRkcmVzcwlteXNlbGYs IHJlZmVyZW5jZWQ7CisKKwlBc3NlcnQocmFuZ2VudW0gIT0gSW52YWxpZEF0dHJOdW1iZXIp OworCisJbmFtZXN0cmNweSgmcGVybmFtZSwgcGVyaW9kbmFtZSk7CisKKwlNZW1TZXQodmFs dWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJTWVtU2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9m KG51bGxzKSk7CisKKwlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQs IFJvd0V4Y2x1c2l2ZUxvY2spOworCisJb2lkID0gR2V0TmV3T2lkV2l0aEluZGV4KHBnX3Bl cmlvZCwgQXR0ckRlZmF1bHRPaWRJbmRleElkLCBBbnVtX3BnX3BlcmlvZF9vaWQpOworCXZh bHVlc1tBbnVtX3BnX3BlcmlvZF9vaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0ob2lkKTsK Kwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVybmFtZSAtIDFdID0gTmFtZUdldERhdHVtKCZw ZXJuYW1lKTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVycmVsaWQgLSAxXSA9IFJlbGF0 aW9uR2V0UmVsaWQocmVsKTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVyc3RhcnQgLSAx XSA9IHN0YXJ0bnVtOworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJlbmQgLSAxXSA9IGVu ZG51bTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVycmFuZ2UgLSAxXSA9IHJhbmdlbnVt OworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJjb25zdHJhaW50IC0gMV0gPSBjb25vaWQ7 CisKKwl0dXBsZSA9IGhlYXBfZm9ybV90dXBsZShSZWxhdGlvbkdldERlc2NyKHBnX3Blcmlv ZCksIHZhbHVlcywgbnVsbHMpOworCUNhdGFsb2dUdXBsZUluc2VydChwZ19wZXJpb2QsIHR1 cGxlKTsKKworCU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBQZXJpb2RSZWxhdGlvbklkLCBv aWQpOworCisJLyogRHJvcCB0aGUgcGVyaW9kIHdoZW4gdGhlIHRhYmxlIGlzIGRyb3BwZWQu ICovCisJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQs IFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYs ICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX0FVVE8pOworCisJLyogRm9yYmlkIGRyb3BwaW5n IHRoZSBjb2x1bW5zIG9mIHRoZSBwZXJpb2QuICovCisJT2JqZWN0QWRkcmVzc1N1YlNldChy ZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwg c3RhcnRudW0pOworCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwg REVQRU5ERU5DWV9OT1JNQUwpOworCU9iamVjdEFkZHJlc3NTdWJTZXQocmVmZXJlbmNlZCwg UmVsYXRpb25SZWxhdGlvbklkLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIGVuZG51bSk7CisJ cmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05P Uk1BTCk7CisKKwkvKgorCSAqIFRoZSByYW5nZSBjb2x1bW4gaXMgYW4gaW1wbGVtZW50YXRp b24gZGV0YWlsLAorCSAqIGJ1dCB3ZSBjYW4ndCB1c2UgREVQRU5ERU5DWV9JTlRFUk5BTAor CSAqIGJlY2F1c2UgZHJvcHBpbmcgdGhlIHRhYmxlIHdpbGwgY2hlY2sgZm9yIGRlcGVuZGVu Y2llcyBvbiBhbGwgc3Vib2JqZWN0cyB0b28KKwkgKiAoaW4gZmluZERlcGVuZGVudE9iamVj dHMpLgorCSAqIEJ1dCBpZiB3ZSBtYWtlIGFuIEFVVE8gZGVwZW5kZW5jeSBvbmUgd2F5IHdl IHdpbGwgYXV0by1kcm9wIHRoZSBjb2x1bW4KKwkgKiB3aGVuIHdlIGRyb3AgdGhlIFBFUklP RCwKKwkgKiBhbmQgYSBOT1JNQUwgZGVwZW5kZW5jeSB0aGUgb3RoZXIgd2F5IHdlIHdpbGwg Zm9yYmlkIGRyb3BwaW5nIHRoZSBjb2x1bW4gZGlyZWN0bHkuCisJICovCisJT2JqZWN0QWRk cmVzc1N1YlNldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0 UmVsaWQocmVsKSwgcmFuZ2VudW0pOworCXJlY29yZERlcGVuZGVuY3lPbigmcmVmZXJlbmNl ZCwgJm15c2VsZiwgREVQRU5ERU5DWV9BVVRPKTsKKwlyZWNvcmREZXBlbmRlbmN5T24oJm15 c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9STUFMKTsKKworCS8qCisJICogVGhl IGNvbnN0cmFpbnQgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBzbyB3ZSBtYXJrIGl0 IGFzIHN1Y2guCisJICogKE5vdGUgdGhhdCBteXNlbGYgYW5kIHJlZmVyZW5jZWQgYXJlIHJl dmVyc2VkIGZvciB0aGlzIG9uZS4pCisJICovCisJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVu Y2VkLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY29ub2lkKTsKKwlyZWNvcmREZXBlbmRlbmN5 T24oJnJlZmVyZW5jZWQsICZteXNlbGYsIERFUEVOREVOQ1lfSU5URVJOQUwpOworCisJdGFi bGVfY2xvc2UocGdfcGVyaW9kLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBvaWQ7 Cit9CisKIC8qCiAgKiBTdG9yZSBhIGNoZWNrLWNvbnN0cmFpbnQgZXhwcmVzc2lvbiBmb3Ig dGhlIGdpdmVuIHJlbGF0aW9uLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3Jt YXRpb25fc2NoZW1hLnNxbAppbmRleCAxMGIzNGMzYzViLi4xMTA0MzMxMjg5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsCkBAIC0xMjEwLDcg KzEyMTAsMjggQEAgR1JBTlQgU0VMRUNUIE9OIHBhcmFtZXRlcnMgVE8gUFVCTElDOwogICog UEVSSU9EUyB2aWV3CiAgKi8KIAotLS0gZmVhdHVyZSBub3Qgc3VwcG9ydGVkCitDUkVBVEUg VklFVyBwZXJpb2RzIEFTCisgICAgU0VMRUNUIGN1cnJlbnRfZGF0YWJhc2UoKTo6aW5mb3Jt YXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX2NhdGFsb2csCisgICAgICAg ICAgIG5jLm5zcG5hbWU6OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRlbnRpZmllciBBUyB0 YWJsZV9zY2hlbWEsCisgICAgICAgICAgIGMucmVsbmFtZTo6aW5mb3JtYXRpb25fc2NoZW1h LnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX25hbWUsCisgICAgICAgICAgIHAucGVybmFtZTo6 aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHBlcmlvZF9uYW1lLAorICAg ICAgICAgICBDQVNFIFdIRU4gcGdfaGFzX3JvbGUoYy5yZWxvd25lciwgJ1VTQUdFJykKKyAg ICAgICAgICAgICAgICAgIE9SIGhhc19jb2x1bW5fcHJpdmlsZWdlKHNhLmF0dHJlbGlkLCBz YS5hdHRudW0sICdTRUxFQ1QsIElOU0VSVCwgVVBEQVRFLCBSRUZFUkVOQ0VTJykKKyAgICAg ICAgICAgICAgICBUSEVOIHNhLmF0dG5hbWU6OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRl bnRpZmllcgorICAgICAgICAgICBFTkQgQVMgc3RhcnRfY29sdW1uX25hbWUsCisgICAgICAg ICAgIENBU0UgV0hFTiBwZ19oYXNfcm9sZShjLnJlbG93bmVyLCAnVVNBR0UnKQorICAgICAg ICAgICAgICAgICAgT1IgaGFzX2NvbHVtbl9wcml2aWxlZ2UoZWEuYXR0cmVsaWQsIGVhLmF0 dG51bSwgJ1NFTEVDVCwgSU5TRVJULCBVUERBVEUsIFJFRkVSRU5DRVMnKQorICAgICAgICAg ICAgICAgIFRIRU4gZWEuYXR0bmFtZTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlm aWVyCisgICAgICAgICAgIEVORCBBUyBlbmRfY29sdW1uX25hbWUKKyAgICBGUk9NIHBnX3Bl cmlvZCBBUyBwCisgICAgSk9JTiBwZ19jbGFzcyBBUyBjIE9OIGMub2lkID0gcC5wZXJyZWxp ZAorICAgIEpPSU4gcGdfbmFtZXNwYWNlIEFTIG5jIE9OIG5jLm9pZCA9IGMucmVsbmFtZXNw YWNlCisgICAgSk9JTiBwZ19hdHRyaWJ1dGUgQVMgc2EgT04gKHNhLmF0dHJlbGlkLCBzYS5h dHRudW0pID0gKHAucGVycmVsaWQsIHAucGVyc3RhcnQpCisgICAgSk9JTiBwZ19hdHRyaWJ1 dGUgQVMgZWEgT04gKGVhLmF0dHJlbGlkLCBlYS5hdHRudW0pID0gKHAucGVycmVsaWQsIHAu cGVyZW5kKQorICAgIFdIRVJFIE5PVCBwZ19pc19vdGhlcl90ZW1wX3NjaGVtYShuYy5vaWQp CisgICAgICBBTkQgYy5yZWxraW5kIElOICgncicsICd2Jyk7CisKK0dSQU5UIFNFTEVDVCBP TiBwZXJpb2RzIFRPIFBVQkxJQzsKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQK aW5kZXggZmE2NjA5ZTU3Ny4uYzQ5OWNkMmY1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL21lc29uLmJ1 aWxkCkBAIC0yNiw2ICsyNiw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ3Bn X25hbWVzcGFjZS5jJywKICAgJ3BnX29wZXJhdG9yLmMnLAogICAncGdfcGFyYW1ldGVyX2Fj bC5jJywKKyAgJ3BnX3BlcmlvZC5jJywKICAgJ3BnX3Byb2MuYycsCiAgICdwZ19wdWJsaWNh dGlvbi5jJywKICAgJ3BnX3JhbmdlLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJl c3MuYwppbmRleCBiYjRlZmNhZDIwLi5iNDg4OTViMzU1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L29iamVjdGFkZHJlc3MuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cv cGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wYXJhbWV0ZXJfYWNsLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BvbGljeS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24u aCIKQEAgLTczNiw2ICs3MzcsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvYmplY3RfdHlw ZV9tYXAKIAl7CiAJCSJkb21haW4gY29uc3RyYWludCIsIE9CSkVDVF9ET01DT05TVFJBSU5U CiAJfSwKKwkvKiBPQ0xBU1NfUEVSSU9EICovCisJeworCQkicGVyaW9kIiwgT0JKRUNUX1BF UklPRAorCX0sCiAJLyogT0NMQVNTX0NPTlZFUlNJT04gKi8KIAl7CiAJCSJjb252ZXJzaW9u IiwgT0JKRUNUX0NPTlZFUlNJT04KQEAgLTEwMTQsNiArMTAxOSw3IEBAIGdldF9vYmplY3Rf YWRkcmVzcyhPYmplY3RUeXBlIG9ianR5cGUsIE5vZGUgKm9iamVjdCwKIAkJCWNhc2UgT0JK RUNUX1RSSUdHRVI6CiAJCQljYXNlIE9CSkVDVF9UQUJDT05TVFJBSU5UOgogCQkJY2FzZSBP QkpFQ1RfUE9MSUNZOgorCQkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQkJCWFkZHJlc3MgPSBn ZXRfb2JqZWN0X2FkZHJlc3NfcmVsb2JqZWN0KG9ianR5cGUsIGNhc3ROb2RlKExpc3QsIG9i amVjdCksCiAJCQkJCQkJCQkJCQkJICAgJnJlbGF0aW9uLCBtaXNzaW5nX29rKTsKIAkJCQli cmVhazsKQEAgLTE1MTIsNiArMTUxOCwxMyBAQCBnZXRfb2JqZWN0X2FkZHJlc3NfcmVsb2Jq ZWN0KE9iamVjdFR5cGUgb2JqdHlwZSwgTGlzdCAqb2JqZWN0LAogCQkJCUludmFsaWRPaWQ7 CiAJCQlhZGRyZXNzLm9iamVjdFN1YklkID0gMDsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVD VF9QRVJJT0Q6CisJCQlhZGRyZXNzLmNsYXNzSWQgPSBQZXJpb2RSZWxhdGlvbklkOworCQkJ YWRkcmVzcy5vYmplY3RJZCA9IHJlbGF0aW9uID8KKwkJCQlnZXRfcmVsYXRpb25fcGVyaW9k X29pZChyZWxvaWQsIGRlcG5hbWUsIG1pc3Npbmdfb2spIDoKKwkJCQlJbnZhbGlkT2lkOwor CQkJYWRkcmVzcy5vYmplY3RTdWJJZCA9IDA7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqZWN0IHR5cGU6ICVkIiwgKGludCkgb2Jq dHlwZSk7CiAJfQpAQCAtMjMyOSw2ICsyMzQyLDcgQEAgcGdfZ2V0X29iamVjdF9hZGRyZXNz KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNhc2UgT0JKRUNUX1JVTEU6CiAJCWNhc2UgT0JKRUNU X1RSSUdHRVI6CiAJCWNhc2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJCWNhc2UgT0JKRUNU X1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1J TFk6CiAJCQlvYmpub2RlID0gKE5vZGUgKikgbmFtZTsKQEAgLTI0MzksNiArMjQ1Myw3IEBA IGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJvbGVpZCwgT2JqZWN0VHlwZSBvYmp0eXBl LCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAJCWNhc2UgT0JKRUNUX1RSSUdHRVI6CiAJCWNh c2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKKwkJY2Fz ZSBPQkpFQ1RfUEVSSU9EOgogCQkJaWYgKCFvYmplY3Rfb3duZXJjaGVjayhSZWxhdGlvblJl bGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pLCByb2xlaWQpKQogCQkJCWFj bGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgb2JqdHlwZSwKIAkJCQkJCQkgICBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpOwpAQCAtMzA4Nyw2ICszMTAyLDM4 IEBAIGdldE9iamVjdERlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwg Ym9vbCBtaXNzaW5nX29rKQogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1BF UklPRDoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVwOworCQkJCUZvcm1fcGdfcGVyaW9k IHBlcjsKKworCQkJCXBlclR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJ CQkJCQkJIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICgh SGVhcFR1cGxlSXNWYWxpZChwZXJUdXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgcGVyaW9kICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsK KwkJCQlwZXIgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVChwZXJUdXApOworCisJCQkJ aWYgKE9pZElzVmFsaWQocGVyLT5wZXJyZWxpZCkpCisJCQkJeworCQkJCQlTdHJpbmdJbmZv RGF0YSByZWw7CisKKwkJCQkJaW5pdFN0cmluZ0luZm8oJnJlbCk7CisJCQkJCWdldFJlbGF0 aW9uRGVzY3JpcHRpb24oJnJlbCwgcGVyLT5wZXJyZWxpZCwgZmFsc2UpOworCQkJCQlhcHBl bmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInBlcmlvZCAlcyBvbiAlcyIpLAorCQkJCQkJCQkJ IE5hbWVTdHIocGVyLT5wZXJuYW1lKSwgcmVsLmRhdGEpOworCQkJCQlwZnJlZShyZWwuZGF0 YSk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1 ZmZlciwgXygicGVyaW9kICVzIiksCisJCQkJCQkJCQkgTmFtZVN0cihwZXItPnBlcm5hbWUp KTsKKwkJCQl9CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUocGVyVHVwKTsKKwkJCQlicmVhazsK KwkJCX0KKwogCQljYXNlIE9DTEFTU19DT05WRVJTSU9OOgogCQkJewogCQkJCUhlYXBUdXBs ZQljb25UdXA7CkBAIC00NDUxLDYgKzQ0OTgsMTAgQEAgZ2V0T2JqZWN0VHlwZURlc2NyaXB0 aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29rKQogCQkJ CQkJCQkJCSBtaXNzaW5nX29rKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0NMQVNTX1BFUklP RDoKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgInBlcmlvZCIpOworCQkJ YnJlYWs7CisKIAkJY2FzZSBPQ0xBU1NfQ09OVkVSU0lPTjoKIAkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJmJ1ZmZlciwgImNvbnZlcnNpb24iKTsKIAkJCWJyZWFrOwpAQCAtNDk1OCw2 ICs1MDA5LDI4IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVz cyAqb2JqZWN0LAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1BFUklPRDoK KwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVwOworCQkJCUZvcm1fcGdfcGVyaW9kIHBlcjsK KworCQkJCXBlclR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJCQkJCQkJ IE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1 cGxlSXNWYWxpZChwZXJUdXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgcGVyaW9kICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsKKwkJCQlw ZXIgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVChwZXJUdXApOworCisJCQkJYXBwZW5k U3RyaW5nSW5mbygmYnVmZmVyLCAiJXMgb24gIiwKKwkJCQkJCQkJIHF1b3RlX2lkZW50aWZp ZXIoTmFtZVN0cihwZXItPnBlcm5hbWUpKSk7CisJCQkJZ2V0UmVsYXRpb25JZGVudGl0eSgm YnVmZmVyLCBwZXItPnBlcnJlbGlkLCBvYmpuYW1lLCBmYWxzZSk7CisJCQkJaWYgKG9iam5h bWUpCisJCQkJCSpvYmpuYW1lID0gbGFwcGVuZCgqb2JqbmFtZSwgcHN0cmR1cChOYW1lU3Ry KHBlci0+cGVybmFtZSkpKTsKKworCQkJCVJlbGVhc2VTeXNDYWNoZShwZXJUdXApOworCQkJ CWJyZWFrOworCQkJfQorCiAJCWNhc2UgT0NMQVNTX0NPTlZFUlNJT046CiAJCQl7CiAJCQkJ SGVhcFR1cGxlCWNvblR1cDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf cGVyaW9kLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQ2NWI1YjY3NWUKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCkBAIC0wLDAgKzEsMTMyIEBA CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19wZXJpb2QuYworICoJICByb3V0 aW5lcyB0byBzdXBwb3J0IG1hbmlwdWxhdGlvbiBvZiB0aGUgcGdfcGVyaW9kIHJlbGF0aW9u CisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisg KgkgIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nl c3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNj ZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRz LmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvcmVs LmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworCisvKgorICogRGVsZXRlIGEg c2luZ2xlIHBlcmlvZCByZWNvcmQuCisgKi8KK3ZvaWQKK1JlbW92ZVBlcmlvZEJ5SWQoT2lk IHBlcmlvZElkKQoreworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwOwor CisJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQZXJpb2RSZWxhdGlvbklkLCBSb3dFeGNsdXNp dmVMb2NrKTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsIE9iamVjdElk R2V0RGF0dW0ocGVyaW9kSWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkgLyog c2hvdWxkIG5vdCBoYXBwZW4gKi8KKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIHBlcmlvZCAldSIsIHBlcmlvZElkKTsKKworCS8qIEZyeSB0aGUgcGVyaW9kIGl0 c2VsZiAqLworCUNhdGFsb2dUdXBsZURlbGV0ZShwZ19wZXJpb2QsICZ0dXAtPnRfc2VsZik7 CisKKwkvKiBDbGVhbiB1cCAqLworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCXRhYmxlX2Ns b3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKKy8qCisgKiBnZXRfcmVs YXRpb25fcGVyaW9kX29pZAorICoJCUZpbmQgYSBwZXJpb2Qgb24gdGhlIHNwZWNpZmllZCBy ZWxhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4KKyAqCQlSZXR1cm5zIHBlcmlvZCdz IE9JRC4KKyAqLworT2lkCitnZXRfcmVsYXRpb25fcGVyaW9kX29pZChPaWQgcmVsaWQsIGNv bnN0IGNoYXIgKnBlcm5hbWUsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlSZWxhdGlvbglwZ19w ZXJpb2Q7CisJSGVhcFR1cGxlCXR1cGxlOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2Nhbktl eURhdGEgc2tleVsyXTsKKwlPaWQJCQlwZXJPaWQgPSBJbnZhbGlkT2lkOworCisJLyogRmV0 Y2ggdGhlIHBlcmlvZCB0dXBsZSBmcm9tIHBnX3BlcmlvZC4gKi8KKwlwZ19wZXJpb2QgPSB0 YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2Fu S2V5SW5pdCgmc2tleVswXSwKKwkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCQlC VEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShy ZWxpZCkpOworCVNjYW5LZXlJbml0KCZza2V5WzFdLAorCQkJCUFudW1fcGdfcGVyaW9kX3Bl cm5hbWUsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX05BTUVFUSwKKwkJCQlDU3Ry aW5nR2V0RGF0dW0ocGVybmFtZSkpOworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2Nhbihw Z19wZXJpb2QsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxM LCAyLCBza2V5KTsKKworCS8qIFRoZXJlIGNhbiBiZSBhdCBtb3N0IG9uZSBtYXRjaGluZyBy b3cgKi8KKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQo c2NhbikpKQorCQlwZXJPaWQgPSAoKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUp KS0+b2lkOworCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKworCS8qIElmIG5vIHN1Y2gg cGVyaW9kIGV4aXN0cywgY29tcGxhaW4gKi8KKwlpZiAoIU9pZElzVmFsaWQocGVyT2lkKSAm JiAhbWlzc2luZ19vaykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgZm9yIHRh YmxlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQlwZXJuYW1lLCBnZXRfcmVsX25h bWUocmVsaWQpKSkpOworCisJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBBY2Nlc3NTaGFyZUxv Y2spOworCisJcmV0dXJuIHBlck9pZDsKK30KKworLyoKKyAqIGdldF9wZXJpb2RfYXR0bm9z CisgKgkJR2V0IHRoZSBhdHRubyBvZiB0aGUgR0VORVJBVEVEIHJhbmdldHlwZSBjb2x1bW4K KyAqCQlmb3IgYWxsIFBFUklPRHMgaW4gdGhpcyB0YWJsZS4KKyAqLworZXh0ZXJuIEJpdG1h cHNldAorKmdldF9wZXJpb2RfYXR0bm9zKE9pZCByZWxpZCkKK3sKKwlCaXRtYXBzZXQgKmF0 dG5vcyA9IE5VTEw7CisJUmVsYXRpb24JcGdfcGVyaW9kOworCUhlYXBUdXBsZQl0dXBsZTsK KwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5LZXlEYXRhIHNrZXlbMV07CisKKwlwZ19wZXJp b2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisK KwlTY2FuS2V5SW5pdCgmc2tleVswXSwKKwkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwK KwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXRE YXR1bShyZWxpZCkpOworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2Qs IFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxMLCAxLCBza2V5 KTsKKworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4 dChzY2FuKSkpCisJeworCQlGb3JtX3BnX3BlcmlvZCBwZXJpb2QgPSAoRm9ybV9wZ19wZXJp b2QpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJYXR0bm9zID0gYm1zX2FkZF9tZW1iZXIoYXR0 bm9zLCBwZXJpb2QtPnBlcnJhbmdlKTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4p OworCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVy biBhdHRub3M7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0 dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5kZXgg ODBjNDBlYWY1Ny4uMmMxZDFhMTBhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zcWxfZmVhdHVyZXMudHh0CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1 cmVzLnR4dApAQCAtNDQ5LDcgKzQ0OSw3IEBAIFQxNzYJU2VxdWVuY2UgZ2VuZXJhdG9yIHN1 cHBvcnQJCQlOTwlzdXBwb3J0ZWQgZXhjZXB0IGZvciBORVhUIFZBTFVFIEZPUgogVDE3NwlT ZXF1ZW5jZSBnZW5lcmF0b3Igc3VwcG9ydDogc2ltcGxlIHJlc3RhcnQgb3B0aW9uCQkJWUVT CQogVDE3OAlJZGVudGl0eSBjb2x1bW5zOiBzaW1wbGUgcmVzdGFydCBvcHRpb24JCQlZRVMJ CiBUMTgwCVN5c3RlbS12ZXJzaW9uZWQgdGFibGVzCQkJTk8JCi1UMTgxCUFwcGxpY2F0aW9u LXRpbWUgcGVyaW9kIHRhYmxlcwkJCU5PCQorVDE4MQlBcHBsaWNhdGlvbi10aW1lIHBlcmlv ZCB0YWJsZXMJCQlZRVMJCiBUMTkxCVJlZmVyZW50aWFsIGFjdGlvbiBSRVNUUklDVAkJCVlF UwkKIFQyMDAJVHJpZ2dlciBEREwJCQlOTwlzaW1pbGFyIGJ1dCBub3QgZnVsbHkgY29tcGF0 aWJsZQogVDIwMQlDb21wYXJhYmxlIGRhdGEgdHlwZXMgZm9yIHJlZmVyZW50aWFsIGNvbnN0 cmFpbnRzCQkJWUVTCQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKaW5kZXggZmY4ZDAwMzg3Ni4uMmVi ZTQ1ODY0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCkBAIC02NjksNiArNjY5LDcgQEAgQWx0 ZXJPYmplY3ROYW1lc3BhY2Vfb2lkKE9pZCBjbGFzc0lkLCBPaWQgb2JqaWQsIE9pZCBuc3BP aWQsCiAKIAkJY2FzZSBPQ0xBU1NfQ0FTVDoKIAkJY2FzZSBPQ0xBU1NfQ09OU1RSQUlOVDoK KwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgogCQljYXNlIE9DTEFTU19ERUZBVUxUOgogCQljYXNl IE9DTEFTU19MQU5HVUFHRToKIAkJY2FzZSBPQ0xBU1NfTEFSR0VPQkpFQ1Q6CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50LmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jb21tZW50LmMKaW5kZXggMjZjNGQ1OTIwMi4uNDUyYWYxZDQxMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvbW1lbnQuYwpAQCAtMTAyLDYgKzEwMiwxNiBAQCBDb21tZW50T2JqZWN0KENv bW1lbnRTdG10ICpzdG10KQogCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxh dGlvbikpLAogCQkJCQkJIGVycmRldGFpbF9yZWxraW5kX25vdF9zdXBwb3J0ZWQocmVsYXRp b24tPnJkX3JlbC0+cmVsa2luZCkpKTsKIAkJCWJyZWFrOworCisJCWNhc2UgT0JKRUNUX1BF UklPRDoKKwkJCS8qIFBlcmlvZHMgY2FuIG9ubHkgZ28gb24gdGFibGVzICovCisJCQlpZiAo cmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OKQorCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBF KSwKKwkJCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSB0YWJsZSIsCisJCQkJCQkJCVJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSkpKTsKKwkJCWJyZWFrOworCiAJCWRl ZmF1bHQ6CiAJCQlicmVhazsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9kcm9wY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYwppbmRleCA0 NjlhNmMyZWU5Li4xYjk3NTRlOTk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9kcm9wY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMKQEAg LTUwOSw2ICs1MDksNyBAQCBkb2VzX25vdF9leGlzdF9za2lwcGluZyhPYmplY3RUeXBlIG9i anR5cGUsIE5vZGUgKm9iamVjdCkKIAkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKIAkJ Y2FzZSBPQkpFQ1RfTEFSR0VPQkpFQ1Q6CiAJCWNhc2UgT0JKRUNUX1BBUkFNRVRFUl9BQ0w6 CisJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fTkFN RVNQQUNFOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6CiAJCWNhc2UgT0JKRUNU X1RBQkNPTlNUUkFJTlQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVu dF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5k ZXggYmY0N2IwZjZlMi4uZGM1MzJhMzllNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuYwpAQCAtMTEzOCw2ICsxMTM4LDcgQEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNP YmplY3RUeXBlKE9iamVjdFR5cGUgb2J0eXBlKQogCQljYXNlIE9CSkVDVF9PUENMQVNTOgog CQljYXNlIE9CSkVDVF9PUEVSQVRPUjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJCWNh c2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgogCQljYXNlIE9CSkVD VF9QUk9DRURVUkU6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OOgpAQCAtMTE5Niw2ICsx MTk3LDcgQEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNPYmplY3RDbGFzcyhPYmplY3RDbGFzcyBv YmpjbGFzcykKIAkJY2FzZSBPQ0xBU1NfQ0FTVDoKIAkJY2FzZSBPQ0xBU1NfQ09MTEFUSU9O OgogCQljYXNlIE9DTEFTU19DT05TVFJBSU5UOgorCQljYXNlIE9DTEFTU19QRVJJT0Q6CiAJ CWNhc2UgT0NMQVNTX0NPTlZFUlNJT046CiAJCWNhc2UgT0NMQVNTX0RFRkFVTFQ6CiAJCWNh c2UgT0NMQVNTX0xBTkdVQUdFOgpAQCAtMjIzNyw2ICsyMjM5LDcgQEAgc3RyaW5naWZ5X2dy YW50X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9PUENMQVNT OgogCQljYXNlIE9CSkVDVF9PUEVSQVRPUjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJ CWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgogCQljYXNlIE9C SkVDVF9QVUJMSUNBVElPTjoKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fTkFNRVNQQUNF OgpAQCAtMjMyMSw2ICsyMzI0LDcgQEAgc3RyaW5naWZ5X2FkZWZwcml2c19vYmp0eXBlKE9i amVjdFR5cGUgb2JqdHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JK RUNUX09QRkFNSUxZOgogCQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgorCQljYXNlIE9C SkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfUFVC TElDQVRJT046CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9zZWNsYWJlbC5jCmluZGV4IDdmZjE2ZTMyNzYuLjNkZGM5OTU4MWEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvc2VjbGFiZWwuYwpAQCAtNzksNiArNzksNyBAQCBTZWNMYWJlbFN1cHBv cnRzT2JqZWN0VHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX09QRVJB VE9SOgogCQljYXNlIE9CSkVDVF9PUEZBTUlMWToKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVS X0FDTDoKKwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJ CWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKIAkJY2FzZSBPQkpFQ1RfUFVC TElDQVRJT05fUkVMOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAwMzBmZjRh ZGFiLi4zNjZkY2Q2ODAyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNDMs NiArNDMsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfbGFyZ2VvYmplY3QuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3Bj bGFzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19zdGF0aXN0aWNfZXh0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNw YWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCkBAIC0xNDksMTMgKzE1 MCwxOCBAQCBzdGF0aWMgTGlzdCAqb25fY29tbWl0cyA9IE5JTDsKICNkZWZpbmUgQVRfUEFT U19PTERfQ09OU1RSCQkzCS8qIHJlLWFkZCBleGlzdGluZyBjb25zdHJhaW50cyAqLwogLyog V2UgY291bGQgc3VwcG9ydCBhIFJFTkFNRSBDT0xVTU4gcGFzcyBoZXJlLCBidXQgbm90IGN1 cnJlbnRseSB1c2VkICovCiAjZGVmaW5lIEFUX1BBU1NfQUREX0NPTAkJCTQJLyogQUREIENP TFVNTiAqLwotI2RlZmluZSBBVF9QQVNTX0FERF9DT05TVFIJCTUJLyogQUREIGNvbnN0cmFp bnRzIChpbml0aWFsIGV4YW1pbmF0aW9uKSAqLwotI2RlZmluZSBBVF9QQVNTX0NPTF9BVFRS UwkJNgkvKiBzZXQgY29sdW1uIGF0dHJpYnV0ZXMsIGVnIE5PVCBOVUxMICovCi0jZGVmaW5l IEFUX1BBU1NfQUREX0lOREVYQ09OU1RSCTcJLyogQUREIGluZGV4LWJhc2VkIGNvbnN0cmFp bnRzICovCi0jZGVmaW5lIEFUX1BBU1NfQUREX0lOREVYCQk4CS8qIEFERCBpbmRleGVzICov Ci0jZGVmaW5lIEFUX1BBU1NfQUREX09USEVSQ09OU1RSCTkJLyogQUREIG90aGVyIGNvbnN0 cmFpbnRzLCBkZWZhdWx0cyAqLwotI2RlZmluZSBBVF9QQVNTX01JU0MJCQkxMAkvKiBvdGhl ciBzdHVmZiAqLwotI2RlZmluZSBBVF9OVU1fUEFTU0VTCQkJMTEKKy8qCisgKiBXZSBtdXN0 IGFkZCBQRVJJT0RzIGFmdGVyIGNvbHVtbnMsIGluIGNhc2UgdGhleSByZWZlcmVuY2UgYSBu ZXdseS1hZGRlZCBjb2x1bW4sCisgKiBhbmQgYmVmb3JlIGNvbnN0cmFpbnRzLCBpbiBjYXNl IGEgbmV3bHktYWRkZWQgUEsvRksgcmVmZXJlbmNlcyB0aGVtLgorICovCisjZGVmaW5lIEFU X1BBU1NfQUREX1BFUklPRAkJNQkvKiBBREQgUEVSSU9EICovCisjZGVmaW5lIEFUX1BBU1Nf QUREX0NPTlNUUgkJNgkvKiBBREQgY29uc3RyYWludHMgKGluaXRpYWwgZXhhbWluYXRpb24p ICovCisjZGVmaW5lIEFUX1BBU1NfQ09MX0FUVFJTCQk3CS8qIHNldCBjb2x1bW4gYXR0cmli dXRlcywgZWcgTk9UIE5VTEwgKi8KKyNkZWZpbmUgQVRfUEFTU19BRERfSU5ERVhDT05TVFIJ OAkvKiBBREQgaW5kZXgtYmFzZWQgY29uc3RyYWludHMgKi8KKyNkZWZpbmUgQVRfUEFTU19B RERfSU5ERVgJCTkJLyogQUREIGluZGV4ZXMgKi8KKyNkZWZpbmUgQVRfUEFTU19BRERfT1RI RVJDT05TVFIJMTAJLyogQUREIG90aGVyIGNvbnN0cmFpbnRzLCBkZWZhdWx0cyAqLworI2Rl ZmluZSBBVF9QQVNTX01JU0MJCQkxMQkvKiBvdGhlciBzdHVmZiAqLworI2RlZmluZSBBVF9O VU1fUEFTU0VTCQkJMTIKIAogdHlwZWRlZiBzdHJ1Y3QgQWx0ZXJlZFRhYmxlSW5mbwogewpA QCAtMzU0LDYgKzM2MCw3IEBAIHN0YXRpYyB2b2lkIFJhbmdlVmFyQ2FsbGJhY2tGb3JUcnVu Y2F0ZShjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiBzdGF0aWMgTGlzdCAqTWVyZ2VBdHRy aWJ1dGVzKExpc3QgKmNvbHVtbnMsIGNvbnN0IExpc3QgKnN1cGVycywgY2hhciByZWxwZXJz aXN0ZW5jZSwKIAkJCQkJCQkgYm9vbCBpc19wYXJ0aXRpb24sIExpc3QgKipzdXBjb25zdHIs CiAJCQkJCQkJIExpc3QgKipzdXBub3RudWxscyk7CitzdGF0aWMgTGlzdCAqTWVyZ2VQZXJp b2RzKGNoYXIgKnJlbG5hbWUsIExpc3QgKnBlcmlvZHMsIExpc3QgKnRhYmxlRWx0cywgTGlz dCAqc3VwZXJzKTsKIHN0YXRpYyBMaXN0ICpNZXJnZUNoZWNrQ29uc3RyYWludChMaXN0ICpj b25zdHJhaW50cywgY29uc3QgY2hhciAqbmFtZSwgTm9kZSAqZXhwcik7CiBzdGF0aWMgdm9p ZCBNZXJnZUF0dHJpYnV0ZXNJbnRvRXhpc3RpbmcoUmVsYXRpb24gY2hpbGRfcmVsLCBSZWxh dGlvbiBwYXJlbnRfcmVsKTsKIHN0YXRpYyB2b2lkIE1lcmdlQ29uc3RyYWludHNJbnRvRXhp c3RpbmcoUmVsYXRpb24gY2hpbGRfcmVsLCBSZWxhdGlvbiBwYXJlbnRfcmVsKTsKQEAgLTQz NSw2ICs0NDIsOCBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNBZGRDb2x1bW4oTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQkJCQkJCQkJIEFsdGVyVGFi bGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CiBzdGF0aWMgYm9vbCBjaGVja19mb3JfY29s dW1uX25hbWVfY29sbGlzaW9uKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sbmFtZSwK IAkJCQkJCQkJCQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsKK3N0YXRpYyBib29sIGNoZWNrX2Zv cl9wZXJpb2RfbmFtZV9jb2xsaXNpb24oUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpwZXJu YW1lLAorCQkJCQkJCQkJCQlib29sIGlmX25vdF9leGlzdHMpOwogc3RhdGljIHZvaWQgYWRk X2NvbHVtbl9kYXRhdHlwZV9kZXBlbmRlbmN5KE9pZCByZWxpZCwgaW50MzIgYXR0bnVtLCBP aWQgdHlwaWQpOwogc3RhdGljIHZvaWQgYWRkX2NvbHVtbl9jb2xsYXRpb25fZGVwZW5kZW5j eShPaWQgcmVsaWQsIGludDMyIGF0dG51bSwgT2lkIGNvbGxpZCk7CiBzdGF0aWMgT2JqZWN0 QWRkcmVzcyBBVEV4ZWNEcm9wTm90TnVsbChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNv bE5hbWUsIGJvb2wgcmVjdXJzZSwKQEAgLTQ1NCw2ICs0NjMsMTIgQEAgc3RhdGljIE9iamVj dEFkZHJlc3MgQVRFeGVjQ29sdW1uRGVmYXVsdChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIg KmNvbE5hbWUsCiAJCQkJCQkJCQkJIE5vZGUgKm5ld0RlZmF1bHQsIExPQ0tNT0RFIGxvY2tt b2RlKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0Nvb2tlZENvbHVtbkRlZmF1bHQo UmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkJCQkJCQkJCQkJICAgTm9kZSAq bmV3RGVmYXVsdCk7CitzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNBZGRQZXJpb2QoUmVs YXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCwKKwkJCQkJCQkJCSBBbHRlclRhYmxlVXRp bGl0eUNvbnRleHQgKmNvbnRleHQpOworc3RhdGljIHZvaWQgQVRFeGVjRHJvcFBlcmlvZChS ZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKnBlcmlvZE5hbWUsCisJCQkJCQkJIERyb3BCZWhh dmlvciBiZWhhdmlvciwKKwkJCQkJCQkgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywK KwkJCQkJCQkgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhl Y0FkZElkZW50aXR5KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkJCQkJ CQkJCSAgIE5vZGUgKmRlZiwgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIE9iamVjdEFk ZHJlc3MgQVRFeGVjU2V0SWRlbnRpdHkoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xO YW1lLApAQCAtNjYyLDYgKzY3NywxMCBAQCBzdGF0aWMgTGlzdCAqR2V0UGFyZW50ZWRGb3Jl aWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIHZvaWQgQVREZXRhY2hD aGVja05vRm9yZWlnbktleVJlZnMoUmVsYXRpb24gcGFydGl0aW9uKTsKIHN0YXRpYyBjaGFy IEdldEF0dHJpYnV0ZUNvbXByZXNzaW9uKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqY29t cHJlc3Npb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlw aWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKTsKK3N0YXRpYyB2b2lkIEFkZFJlbGF0aW9u TmV3UGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJpb2QpOworc3RhdGljIHZv aWQgVmFsaWRhdGVQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCk7Citz dGF0aWMgQ29uc3RyYWludCAqbWFrZV9jb25zdHJhaW50X2Zvcl9wZXJpb2QoUmVsYXRpb24g cmVsLCBQZXJpb2REZWYgKnBlcmlvZCk7CitzdGF0aWMgQ29sdW1uRGVmICptYWtlX3Jhbmdl X2NvbHVtbl9mb3JfcGVyaW9kKFBlcmlvZERlZiAqcGVyaW9kKTsKIAogCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCkBAIC04OTAsNiArOTA5LDI2IEBAIERlZmluZVJlbGF0aW9uKENyZWF0ZVN0bXQgKnN0 bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAJCQkJCQlzdG10LT5wYXJ0Ym91bmQg IT0gTlVMTCwKIAkJCQkJCSZvbGRfY29uc3RyYWludHMsICZvbGRfbm90bnVsbHMpOwogCisJ LyoKKwkgKiBVc2luZyB0aGUgY29sdW1uIGxpc3QgKGluY2x1ZGluZyBpbmhlcml0ZWQgY29s dW1ucyksCisJICogZmluZCB0aGUgc3RhcnQvZW5kIGNvbHVtbnMgZm9yIGVhY2ggcGVyaW9k LgorCSAqIFBFUklPRHMgc2hvdWxkIGJlIGluaGVyaXRlZCB0b28gKGJ1dCBhcmVuJ3QgeWV0 KS4KKwkgKi8KKwlzdG10LT5wZXJpb2RzID0gTWVyZ2VQZXJpb2RzKHJlbG5hbWUsIHN0bXQt PnBlcmlvZHMsIHN0bXQtPnRhYmxlRWx0cywgaW5oZXJpdE9pZHMpOworCisJLyoKKwkgKiBG b3IgZWFjaCBQRVJJT0Qgd2UgbmVlZCB0byBjcmVhdGUgYSBHRU5FUkFURUQgY29sdW1uLAor CSAqIHNvIGFkZCB0aG9zZSB0byB0YWJsZUVsdHMuCisJICogVGhlc2UgY29sdW1ucyBhcmUg bm90IGluaGVyaXRlZCwKKwkgKiBzbyB3ZSBkb24ndCB3b3JyeSBhYm91dCBjb25mbGljdHMg aW4gdGFibGVFbHRzLgorCSAqLworCWZvcmVhY2gobGlzdHB0ciwgc3RtdC0+cGVyaW9kcykK Kwl7CisJCVBlcmlvZERlZiAqcGVyaW9kID0gKFBlcmlvZERlZiAqKSBsZmlyc3QobGlzdHB0 cik7CisJCUNvbHVtbkRlZiAqY29sID0gbWFrZV9yYW5nZV9jb2x1bW5fZm9yX3BlcmlvZChw ZXJpb2QpOworCQlzdG10LT50YWJsZUVsdHMgPSBsYXBwZW5kKHN0bXQtPnRhYmxlRWx0cywg Y29sKTsKKwl9CisKIAkvKgogCSAqIENyZWF0ZSBhIHR1cGxlIGRlc2NyaXB0b3IgZnJvbSB0 aGUgcmVsYXRpb24gc2NoZW1hLiAgTm90ZSB0aGF0IHRoaXMKIAkgKiBkZWFscyB3aXRoIGNv bHVtbiBuYW1lcywgdHlwZXMsIGFuZCBpbi1kZXNjcmlwdG9yIE5PVCBOVUxMIGZsYWdzLCBi dXQKQEAgLTEyNzUsNiArMTMxNCwyMSBAQCBEZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpz dG10LCBjaGFyIHJlbGtpbmQsIE9pZCBvd25lcklkLAogCWZvcmVhY2gobGlzdHB0ciwgbm5j b2xzKQogCQlzZXRfYXR0bm90bnVsbChOVUxMLCByZWwsIGxmaXJzdF9pbnQobGlzdHB0ciks IGZhbHNlLCBOb0xvY2spOwogCisJLyoKKwkgKiBDcmVhdGUgcGVyaW9kcyBmb3IgdGhlIHRh YmxlLiBUaGlzIG11c3QgY29tZSBhZnRlciB3ZSBjcmVhdGUgY29sdW1ucworCSAqIGFuZCBi ZWZvcmUgd2UgY3JlYXRlIGluZGV4IGNvbnN0cmFpbnRzLiBJdCB3aWxsIGF1dG9tYXRpY2Fs bHkgY3JlYXRlCisJICogYSBDSEVDSyBjb25zdHJhaW50IGZvciB0aGUgcGVyaW9kLgorCSAq LworCWZvcmVhY2gobGlzdHB0ciwgc3RtdC0+cGVyaW9kcykKKwl7CisJCVBlcmlvZERlZiAq cGVyaW9kID0gKFBlcmlvZERlZiAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJLyogRG9uJ3Qg dXBkYXRlIHRoZSBjb3VudCBvZiBjaGVjayBjb25zdHJhaW50cyB0d2ljZSAqLworCQlDb21t YW5kQ291bnRlckluY3JlbWVudCgpOworCisJCUFkZFJlbGF0aW9uTmV3UGVyaW9kKHJlbCwg cGVyaW9kKTsKKwl9CisKIAlPYmplY3RBZGRyZXNzU2V0KGFkZHJlc3MsIFJlbGF0aW9uUmVs YXRpb25JZCwgcmVsYXRpb25JZCk7CiAKIAkvKgpAQCAtMTM5MSw2ICsxNDQ1LDI2NCBAQCBC dWlsZERlc2NGb3JSZWxhdGlvbihjb25zdCBMaXN0ICpjb2x1bW5zKQogCXJldHVybiBkZXNj OwogfQogCisvKgorICogbWFrZV9jb25zdHJhaW50X2Zvcl9wZXJpb2QKKyAqCisgKiBCdWls ZHMgYSBDSEVDSyBDb25zdHJhaW50IHRvIGVuc3VyZSBzdGFydCA8IGVuZC4KKyAqIFJldHVy bnMgdGhlIENIRUNLIENvbnN0cmFpbnQuCisgKiBBbHNvIGZpbGxzIGluIHBlcmlvZC0+Y29u c3RyYWludG5hbWUgaWYgbmVlZGVkLgorICovCitzdGF0aWMgQ29uc3RyYWludCAqCittYWtl X2NvbnN0cmFpbnRfZm9yX3BlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAqcGVyaW9k KQoreworCUNvbHVtblJlZiAgKnNjb2wsICplY29sOworCUNvbnN0cmFpbnQgKmNvbnN0cjsK KwlUeXBlQ2FjaGVFbnRyeSAqdHlwZTsKKworCWlmIChwZXJpb2QtPmNvbnN0cmFpbnRuYW1l ID09IE5VTEwpCisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBDaG9vc2VDb25zdHJhaW50 TmFtZShSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLAorCQkJCQkJCQkJCQkJCSAgcGVy aW9kLT5wZXJpb2RuYW1lLAorCQkJCQkJCQkJCQkJCSAgImNoZWNrIiwKKwkJCQkJCQkJCQkJ CQkgIFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCksCisJCQkJCQkJCQkJCQkJICBOSUwpOwor CXNjb2wgPSBtYWtlTm9kZShDb2x1bW5SZWYpOworCXNjb2wtPmZpZWxkcyA9IGxpc3RfbWFr ZTEobWFrZVN0cmluZyhwc3RyZHVwKHBlcmlvZC0+c3RhcnRjb2xuYW1lKSkpOworCXNjb2wt PmxvY2F0aW9uID0gMDsKKworCWVjb2wgPSBtYWtlTm9kZShDb2x1bW5SZWYpOworCWVjb2wt PmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVwKHBlcmlvZC0+ZW5kY29s bmFtZSkpKTsKKwllY29sLT5sb2NhdGlvbiA9IDA7CisKKwl0eXBlID0gbG9va3VwX3R5cGVf Y2FjaGUocGVyaW9kLT5jb2x0eXBpZCwgVFlQRUNBQ0hFX0xUX09QUik7CisJaWYgKHR5cGUt Pmx0X29wciA9PSBJbnZhbGlkT2lkKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjb2x1bW4g XCIlc1wiIGNhbm5vdCBiZSB1c2VkIGluIGEgUEVSSU9EIGJlY2F1c2UgaXRzIHR5cGUgJXMg aGFzIG5vIGxlc3MgdGhhbiBvcGVyYXRvciIsCisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFt ZSwgZm9ybWF0X3R5cGVfYmUocGVyaW9kLT5jb2x0eXBpZCkpKSk7CisKKwljb25zdHIgPSBt YWtlTm9kZShDb25zdHJhaW50KTsKKwljb25zdHItPmNvbnR5cGUgPSBDT05TVFJfQ0hFQ0s7 CisJY29uc3RyLT5jb25uYW1lID0gcGVyaW9kLT5jb25zdHJhaW50bmFtZTsKKwljb25zdHIt PmRlZmVycmFibGUgPSBmYWxzZTsKKwljb25zdHItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwor CWNvbnN0ci0+bG9jYXRpb24gPSAtMTsKKwljb25zdHItPmlzX25vX2luaGVyaXQgPSBmYWxz ZTsKKwljb25zdHItPnJhd19leHByID0gKE5vZGUgKikgbWFrZVNpbXBsZUFfRXhwcihBRVhQ Ul9PUCwKKwkJCQkJCQkJCQkJCSBnZXRfb3BuYW1lKHR5cGUtPmx0X29wciksCisJCQkJCQkJ CQkJCQkgKE5vZGUgKikgc2NvbCwKKwkJCQkJCQkJCQkJCSAoTm9kZSAqKSBlY29sLAorCQkJ CQkJCQkJCQkJIDApOworCWNvbnN0ci0+Y29va2VkX2V4cHIgPSBOVUxMOworCWNvbnN0ci0+ c2tpcF92YWxpZGF0aW9uID0gZmFsc2U7CisJY29uc3RyLT5pbml0aWFsbHlfdmFsaWQgPSB0 cnVlOworCisJcmV0dXJuIGNvbnN0cjsKK30KKworLyoKKyAqIG1ha2VfcmFuZ2VfY29sdW1u X2Zvcl9wZXJpb2QKKyAqCisgKiBCdWlsZHMgYSBHRU5FUkFURUQgQUxXQVlTIHJhbmdlIGNv bHVtbiBiYXNlZCBvbiB0aGUgUEVSSU9ECisgKiBzdGFydC9lbmQgY29sdW1ucy4gUmV0dXJu cyB0aGUgQ29sdW1uRGVmLgorICovCitDb2x1bW5EZWYgKgorbWFrZV9yYW5nZV9jb2x1bW5f Zm9yX3BlcmlvZChQZXJpb2REZWYgKnBlcmlvZCkKK3sKKwljaGFyICpyYW5nZV90eXBlX25h bWVzcGFjZTsKKwljaGFyICpyYW5nZV90eXBlX25hbWU7CisJQ29sdW1uRGVmICpjb2wgPSBt YWtlTm9kZShDb2x1bW5EZWYpOworCUNvbHVtblJlZiAqc3RhcnR2YXIsICplbmR2YXI7CisJ RXhwciAqcmFuZ2VDb25zdHJ1Y3RvcjsKKworCWlmICghZ2V0X3R5cG5hbWVfYW5kX25hbWVz cGFjZShwZXJpb2QtPnJuZ3R5cGlkLCAmcmFuZ2VfdHlwZV9uYW1lLCAmcmFuZ2VfdHlwZV9u YW1lc3BhY2UpKQorCQllbG9nKEVSUk9SLCAibWlzc2luZyByYW5nZSB0eXBlICVkIiwgcGVy aW9kLT5ybmd0eXBpZCk7CisKKwlzdGFydHZhciA9IG1ha2VOb2RlKENvbHVtblJlZik7CisJ c3RhcnR2YXItPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVwKHBlcmlv ZC0+c3RhcnRjb2xuYW1lKSkpOworCWVuZHZhciA9IG1ha2VOb2RlKENvbHVtblJlZik7CisJ ZW5kdmFyLT5maWVsZHMgPSBsaXN0X21ha2UxKG1ha2VTdHJpbmcocHN0cmR1cChwZXJpb2Qt PmVuZGNvbG5hbWUpKSk7CisJcmFuZ2VDb25zdHJ1Y3RvciA9IChFeHByICopIG1ha2VGdW5j Q2FsbCgKKwkJCWxpc3RfbWFrZTIobWFrZVN0cmluZyhyYW5nZV90eXBlX25hbWVzcGFjZSks IG1ha2VTdHJpbmcocmFuZ2VfdHlwZV9uYW1lKSksCisJCQlsaXN0X21ha2UyKHN0YXJ0dmFy LCBlbmR2YXIpLAorCQkJQ09FUkNFX0VYUExJQ0lUX0NBTEwsCisJCQlwZXJpb2QtPmxvY2F0 aW9uKTsKKworCWNvbC0+Y29sbmFtZSA9IHBzdHJkdXAocGVyaW9kLT5wZXJpb2RuYW1lKTsK Kwljb2wtPnR5cGVOYW1lID0gbWFrZVR5cGVOYW1lKHJhbmdlX3R5cGVfbmFtZSk7CisJY29s LT5jb21wcmVzc2lvbiA9IE5VTEw7CisJY29sLT5pbmhjb3VudCA9IDA7CisJY29sLT5pc19s b2NhbCA9IHRydWU7CisJY29sLT5pc19ub3RfbnVsbCA9IHRydWU7CisJY29sLT5pc19mcm9t X3R5cGUgPSBmYWxzZTsKKwljb2wtPnN0b3JhZ2UgPSAwOworCWNvbC0+c3RvcmFnZV9uYW1l ID0gTlVMTDsKKwljb2wtPnJhd19kZWZhdWx0ID0gKE5vZGUgKikgcmFuZ2VDb25zdHJ1Y3Rv cjsKKwljb2wtPmNvb2tlZF9kZWZhdWx0ID0gTlVMTDsKKwljb2wtPmlkZW50aXR5ID0gMDsK Kwljb2wtPmdlbmVyYXRlZCA9IEFUVFJJQlVURV9HRU5FUkFURURfU1RPUkVEOworCWNvbC0+ Y29sbENsYXVzZSA9IE5VTEw7CisJY29sLT5jb2xsT2lkID0gSW52YWxpZE9pZDsKKwljb2wt PmZkd29wdGlvbnMgPSBOSUw7CisJY29sLT5sb2NhdGlvbiA9IHBlcmlvZC0+bG9jYXRpb247 CisKKwlyZXR1cm4gY29sOworfQorCisvKgorICogVmFsaWRhdGVQZXJpb2QKKyAqCisgKiBM b29rIHVwIHRoZSBhdHRyaWJ1dGVzIHVzZWQgYnkgdGhlIFBFUklPRCwKKyAqIG1ha2Ugc3Vy ZSB0aGV5IGV4aXN0LCBhcmUgbm90IHN5c3RlbSBjb2x1bW5zLAorICogYW5kIGhhdmUgdGhl IHNhbWUgdHlwZSBhbmQgY29sbGF0aW9uLgorICoKKyAqIFlvdSBtdXN0IGhhdmUgYSBSb3dF eGNsdXNpdmVMb2NrIG9uIHBnX2F0dHJpYnV0ZQorICogYmVmb3JlIGNhbGxpbmcgdGhpcyBm dW5jdGlvbi4KKyAqCisgKiBBZGQgb3VyIGZpbmRpbmdzIHRvIHRoZXNlIFBlcmlvZERlZiBm aWVsZHM6CisgKgorICogY29sdHlwaWQgLSB0aGUgdHlwZSBvZiBQRVJJT0QgY29sdW1ucy4K KyAqIHN0YXJ0YXR0bnVtIC0gdGhlIGF0dG51bSBvZiB0aGUgc3RhcnQgY29sdW1uLgorICog ZW5kYXR0bnVtIC0gdGhlIGF0dG51bSBvZiB0aGUgZW5kIGNvbHVtbi4KKyAqLworc3RhdGlj IHZvaWQKK1ZhbGlkYXRlUGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJpb2Qp Cit7CisJSGVhcFR1cGxlIHN0YXJ0dHVwbGU7CisJSGVhcFR1cGxlIGVuZHR1cGxlOworCUZv cm1fcGdfYXR0cmlidXRlCWF0dHR1cGxlOworCU9pZAlhdHRjb2xsYXRpb247CisKKwkvKiBG aW5kIHRoZSBzdGFydCBjb2x1bW4gKi8KKwlzdGFydHR1cGxlID0gU2VhcmNoU3lzQ2FjaGVD b3B5QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+c3RhcnRjb2xuYW1l KTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoc3RhcnR0dXBsZSkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQkgZXJy bXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIs CisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSkpKTsKKwlhdHR0dXBsZSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKHN0 YXJ0dHVwbGUpOworCXBlcmlvZC0+Y29sdHlwaWQgPSBhdHR0dXBsZS0+YXR0dHlwaWQ7CisJ YXR0Y29sbGF0aW9uID0gYXR0dHVwbGUtPmF0dGNvbGxhdGlvbjsKKwlwZXJpb2QtPnN0YXJ0 YXR0bnVtID0gYXR0dHVwbGUtPmF0dG51bTsKKworCS8qIE1ha2Ugc3VyZSBpdCdzIG5vdCBh IHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAocGVyaW9kLT5zdGFydGF0dG51bSA8PSAwKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVG SU5JVElPTiksCisJCQkJIGVycm1zZygiY2Fubm90IHVzZSBzeXN0ZW0gY29sdW1uIFwiJXNc IiBpbiBwZXJpb2QiLAorCQkJCQkJcGVyaW9kLT5zdGFydGNvbG5hbWUpKSk7CisKKwkvKiBG aW5kIHRoZSBlbmQgY29sdW1uICovCisJZW5kdHVwbGUgPSBTZWFyY2hTeXNDYWNoZUNvcHlB dHROYW1lKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5lbmRjb2xuYW1lKTsKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQoZW5kdHVwbGUpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVycm1zZygiY29s dW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJ cGVyaW9kLT5lbmRjb2xuYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwor CWF0dHR1cGxlID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1QoZW5kdHVwbGUpOwor CXBlcmlvZC0+ZW5kYXR0bnVtID0gYXR0dHVwbGUtPmF0dG51bTsKKworCS8qIE1ha2Ugc3Vy ZSBpdCdzIG5vdCBhIHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAocGVyaW9kLT5lbmRhdHRudW0g PD0gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf T0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coImNhbm5vdCB1c2Ugc3lzdGVtIGNv bHVtbiBcIiVzXCIgaW4gcGVyaW9kIiwKKwkJCQkJCXBlcmlvZC0+ZW5kY29sbmFtZSkpKTsK KworCS8qIEJvdGggY29sdW1ucyBtdXN0IGJlIG9mIHNhbWUgdHlwZSAqLworCWlmIChwZXJp b2QtPmNvbHR5cGlkICE9IGF0dHR1cGxlLT5hdHR0eXBpZCkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkgZXJybXNn KCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3QgYmUgb2Ygc2FtZSB0eXBl IikpKTsKKworCS8qIEJvdGggY29sdW1ucyBtdXN0IGhhdmUgdGhlIHNhbWUgY29sbGF0aW9u ICovCisJaWYgKGF0dGNvbGxhdGlvbiAhPSBhdHR0dXBsZS0+YXR0Y29sbGF0aW9uKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQ09MTEFUSU9OX01JU01BVENI KSwKKwkJCQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3Qg aGF2ZSBzYW1lIGNvbGxhdGlvbiIpKSk7CisKKwloZWFwX2ZyZWV0dXBsZShzdGFydHR1cGxl KTsKKwloZWFwX2ZyZWV0dXBsZShlbmR0dXBsZSk7Cit9CisKKy8qCisgKiBjaG9vc2VfcmFu Z2V0eXBlX2Zvcl9wZXJpb2QKKyAqCisgKiBGaW5kIGEgc3VpdGFibGUgcmFuZ2UgdHlwZSBm b3Igb3BlcmF0aW9ucyBpbnZvbHZpbmcgdGhpcyBwZXJpb2QuCisgKiBVc2UgdGhlIHJhbmdl dHlwZSBvcHRpb24gaWYgcHJvdmlkZWQsIG90aGVyd2lzZSB0cnkgdG8gZmluZCBhCisgKiBu b24tYW1iaWd1b3VzIGV4aXN0aW5nIHR5cGUuCisgKi8KKy8vIFRPRE86IFRoaXMgY291bGQg YmUgc3RhdGljIG5vdworT2lkCitjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9wZXJpb2QoUGVyaW9k RGVmICpwZXJpb2QpCit7CisJT2lkCXJuZ3R5cGlkOworCisJaWYgKHBlcmlvZC0+cmFuZ2V0 eXBlbmFtZSAhPSBOVUxMKQorCXsKKwkJLyogTWFrZSBzdXJlIGl0IGV4aXN0cyAqLworCQly bmd0eXBpZCA9IFR5cGVuYW1lR2V0VHlwaWRFeHRlbmRlZChwZXJpb2QtPnJhbmdldHlwZW5h bWUsIGZhbHNlKTsKKwkJaWYgKHJuZ3R5cGlkID09IEludmFsaWRPaWQpCisJCQllcmVwb3J0 KEVSUk9SLCAoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJy bXNnKCJSYW5nZSB0eXBlICVzIG5vdCBmb3VuZCIsIHBlcmlvZC0+cmFuZ2V0eXBlbmFtZSkp KTsKKworCQkvKiBNYWtlIHN1cmUgaXQgaXMgYSByYW5nZSB0eXBlICovCisJCWlmICghdHlw ZV9pc19yYW5nZShybmd0eXBpZCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygiVHlwZSAlcyBp cyBub3QgYSByYW5nZSB0eXBlIiwgcGVyaW9kLT5yYW5nZXR5cGVuYW1lKSkpOworCisJCS8q IE1ha2Ugc3VyZSBpdCBtYXRjaGVzIHRoZSBjb2x1bW4gdHlwZSAqLworCQlpZiAoZ2V0X3Jh bmdlX3N1YnR5cGUocm5ndHlwaWQpICE9IHBlcmlvZC0+Y29sdHlwaWQpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJ CQkJIGVycm1zZygiUmFuZ2UgdHlwZSAlcyBkb2VzIG5vdCBtYXRjaCBjb2x1bW4gdHlwZSAl cyIsCisJCQkJCQkgcGVyaW9kLT5yYW5nZXR5cGVuYW1lLAorCQkJCQkJIGZvcm1hdF90eXBl X2JlKHBlcmlvZC0+Y29sdHlwaWQpKSkpOworCX0KKwllbHNlCisJeworCQlybmd0eXBpZCA9 IGdldF9zdWJ0eXBlX3JhbmdlKHBlcmlvZC0+Y29sdHlwaWQpOworCQlpZiAocm5ndHlwaWQg PT0gSW52YWxpZE9pZCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBlcnJtc2coIm5vIHJhbmdlIHR5cGUgZm9y ICVzIGZvdW5kIGZvciBwZXJpb2QgJXMiLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKHBlcmlv ZC0+Y29sdHlwaWQpLAorCQkJCQkJCXBlcmlvZC0+cGVyaW9kbmFtZSksCisJCQkJCSBlcnJo aW50KCJZb3UgY2FuIGRlZmluZSBhIGN1c3RvbSByYW5nZSB0eXBlIHdpdGggQ1JFQVRFIFRZ UEUiKSkpOworCisJfQorCisJcmV0dXJuIHJuZ3R5cGlkOworfQorCitzdGF0aWMgdm9pZAor QWRkUmVsYXRpb25OZXdQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCkK K3sKKwlSZWxhdGlvbglhdHRyZWxhdGlvbjsKKwlPaWQJCQljb25vaWQ7CisJQ29uc3RyYWlu dCAqY29uc3RyOworCUxpc3QJICAgKm5ld2NvbnN0cnM7CisKKwlhdHRyZWxhdGlvbiA9IHRh YmxlX29wZW4oQXR0cmlidXRlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwkv KiBGaW5kIHRoZSBHRU5FUkFURUQgcmFuZ2UgY29sdW1uICovCisKKwlwZXJpb2QtPnJuZ2F0 dG51bSA9IGdldF9hdHRudW0oUmVsYXRpb25HZXRSZWxpZChyZWwpLCBwZXJpb2QtPnBlcmlv ZG5hbWUpOworCWlmIChwZXJpb2QtPnJuZ2F0dG51bSA9PSBJbnZhbGlkQXR0ck51bWJlcikK KwkJZWxvZyhFUlJPUiwgIm1pc3NpbmcgYXR0cmlidXRlICVzIiwgcGVyaW9kLT5wZXJpb2Ru YW1lKTsKKworCS8qIFRoZSBwYXJzZXIgaGFzIGFscmVhZHkgZm91bmQgcGVyaW9kLT5jb2x0 eXBpZCAqLworCisJY29uc3RyID0gbWFrZV9jb25zdHJhaW50X2Zvcl9wZXJpb2QocmVsLCBw ZXJpb2QpOworCW5ld2NvbnN0cnMgPSBBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKHJlbCwg TklMLCBsaXN0X21ha2UxKGNvbnN0ciksIGZhbHNlLCB0cnVlLCB0cnVlLCBOVUxMKTsKKwlj b25vaWQgPSAoKENvb2tlZENvbnN0cmFpbnQgKikgbGluaXRpYWwobmV3Y29uc3RycykpLT5j b25vaWQ7CisKKwkvKiBTYXZlIGl0ICovCisJU3RvcmVQZXJpb2QocmVsLCBwZXJpb2QtPnBl cmlvZG5hbWUsIHBlcmlvZC0+c3RhcnRhdHRudW0sIHBlcmlvZC0+ZW5kYXR0bnVtLCBwZXJp b2QtPnJuZ2F0dG51bSwgY29ub2lkKTsKKworCXRhYmxlX2Nsb3NlKGF0dHJlbGF0aW9uLCBS b3dFeGNsdXNpdmVMb2NrKTsKK30KKwogLyoKICAqIEVtaXQgdGhlIHJpZ2h0IGVycm9yIG9y IHdhcm5pbmcgbWVzc2FnZSBmb3IgYSAiRFJPUCIgY29tbWFuZCBpc3N1ZWQgb24gYQogICog bm9uLWV4aXN0ZW50IHJlbGF0aW9uCkBAIC0zMzQ3LDYgKzM2NTksMTY4IEBAIE1lcmdlQXR0 cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0ICpzdXBlcnMsIGNoYXIgcmVscGVy c2lzdGVuY2UsCiB9CiAKIAorLyotLS0tLS0tLS0tCisgKiBNZXJnZVBlcmlvZHMKKyAqCQlS ZXR1cm5zIG5ldyBwZXJpb2QgbGlzdCBnaXZlbiBpbml0aWFsIHBlcmlvZHMgYW5kIHN1cGVy Y2xhc3Nlcy4KKyAqCisgKiBGb3Igbm93IHdlIGRvbid0IHN1cHBvcnQgaW5oZXJpdGVuY2Ug d2l0aCBQRVJJT0RzLAorICogYnV0IHdlIG1pZ2h0IG1ha2UgaXQgd29yayBldmVudHVhbGx5 LgorICoKKyAqIFdlIGNhbiBvbWl0IGxvdHMgb2YgY2hlY2tzIGhlcmUgYW5kIGFzc3VtZSBN ZXJnZUF0dHJpYnV0ZXMgYWxyZWFkeSBkaWQgdGhlbSwKKyAqIGZvciBleGFtcGxlIHRoYXQg Y2hpbGQgJiBwYXJlbnRzIGFyZSBub3QgYSBtaXggb2YgcGVybWFuZW50IGFuZCB0ZW1wLgor ICovCitzdGF0aWMgTGlzdCAqCitNZXJnZVBlcmlvZHMoY2hhciAqcmVsbmFtZSwgTGlzdCAq cGVyaW9kcywgTGlzdCAqdGFibGVFbHRzLCBMaXN0ICpzdXBlcnMpCit7CisJTGlzdENlbGwg ICAqZW50cnk7CisKKwkvKiBJZiB3ZSBoYXZlIGEgUEVSSU9EIHRoZW4gc3VwZXJzIG11c3Qg YmUgZW1wdHkuICovCisKKwlpZiAobGlzdF9sZW5ndGgocGVyaW9kcykgPiAwICYmIGxpc3Rf bGVuZ3RoKHN1cGVycykgPiAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJJbmhlcml0aW5n IGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBhIHRhYmxlIGhhcyBhIFBFUklPRCIpKSk7CisKKwkv KiBJZiBhbnkgcGFyZW50IHRhYmxlIGhhcyBhIFBFUklPRCwgdGhlbiBmYWlsLiAqLworCisJ Zm9yZWFjaChlbnRyeSwgc3VwZXJzKQorCXsKKwkJT2lkCQkJcGFyZW50ID0gbGZpcnN0X29p ZChlbnRyeSk7CisJCVJlbGF0aW9uCXJlbGF0aW9uOworCQlSZWxhdGlvbglwZ19wZXJpb2Q7 CisJCVN5c1NjYW5EZXNjIHNjYW47CisJCVNjYW5LZXlEYXRhIHNrZXlbMV07CisJCUhlYXBU dXBsZQl0dXBsZTsKKworCQkvKiBjYWxsZXIgYWxyZWFkeSBnb3QgbG9jayAqLworCQlyZWxh dGlvbiA9IHRhYmxlX29wZW4ocGFyZW50LCBOb0xvY2spOworCQlwZ19wZXJpb2QgPSB0YWJs ZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJU2Nhbktl eUluaXQoJnNrZXlbMF0sCisJCQkJCUFudW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJCQlC VEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJCU9iamVjdElkR2V0RGF0dW0o cGFyZW50KSk7CisKKwkJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2QsIFBl cmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJCSAgTlVMTCwgMSwgc2tleSk7 CisKKwkJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNj YW4pKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiSW5oZXJpdGluZyBmcm9tIGEgdGFi bGUgd2l0aCBhIFBFUklPRCBpcyBub3Qgc3VwcG9ydGVkIikpKTsKKworCQlzeXN0YWJsZV9l bmRzY2FuKHNjYW4pOworCQl0YWJsZV9jbG9zZShwZ19wZXJpb2QsIEFjY2Vzc1NoYXJlTG9j ayk7CisJCXRhYmxlX2Nsb3NlKHJlbGF0aW9uLCBOb0xvY2spOworCX0KKworCS8qCisJICog RmluZCB0aGUgc3RhcnQgJiBlbmQgY29sdW1ucyBhbmQgZ2V0IHRoZWlyIGF0dG5vIGFuZCB0 eXBlLgorCSAqIEluIHRoZSBzYW1lIHBhc3MsIG1ha2Ugc3VyZSB0aGUgcGVyaW9kIGRvZXNu J3QgY29uZmxpY3Qgd2l0aCBhbnkgY29sdW1uIG5hbWVzLgorCSAqIEFsc28gbWFrZSBzdXJl IHRoZSBzYW1lIHBlcmlvZCBuYW1lIGlzbid0IHVzZWQgbW9yZSB0aGFuIG9uY2UuCisJICov CisJZm9yZWFjaCAoZW50cnksIHBlcmlvZHMpCisJeworCQlQZXJpb2REZWYgKnBlcmlvZCA9 IGxmaXJzdChlbnRyeSk7CisJCUxpc3RDZWxsICplbnRyeTI7CisJCWludCBpID0gMTsKKwkJ T2lkIHN0YXJ0Y29sdHlwaWQgPSBJbnZhbGlkT2lkOworCQlPaWQgZW5kY29sdHlwaWQgPSBJ bnZhbGlkT2lkOworCQlPaWQJc3RhcnRjb2xjb2xsYXRpb24gPSBJbnZhbGlkT2lkOworCQlP aWQJZW5kY29sY29sbGF0aW9uID0gSW52YWxpZE9pZDsKKworCQlwZXJpb2QtPnN0YXJ0YXR0 bnVtID0gSW52YWxpZEF0dHJOdW1iZXI7CisJCXBlcmlvZC0+ZW5kYXR0bnVtID0gSW52YWxp ZEF0dHJOdW1iZXI7CisKKwkJaWYgKFN5c3RlbUF0dHJpYnV0ZUJ5TmFtZShwZXJpb2QtPnBl cmlvZG5hbWUpICE9IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJwZXJpb2QgbmFtZSBc IiVzXCIgY29uZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1uIG5hbWUiLAorCQkJCQkJCXBl cmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCQlmb3JlYWNoIChlbnRyeTIsIHBlcmlvZHMpCisJ CXsKKwkJCVBlcmlvZERlZiAqcGVyaW9kMiA9IGxmaXJzdChlbnRyeTIpOworCisJCQlpZiAo cGVyaW9kICE9IHBlcmlvZDIgJiYgc3RyY21wKHBlcmlvZC0+cGVyaW9kbmFtZSwgcGVyaW9k Mi0+cGVyaW9kbmFtZSkgPT0gMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJCSBlcnJtc2coInBlcmlvZCBu YW1lIFwiJXNcIiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UiLAorCQkJCQkJCQlwZXJpb2Qt PnBlcmlvZG5hbWUpKSk7CisJCX0KKworCQlmb3JlYWNoIChlbnRyeTIsIHRhYmxlRWx0cykK KwkJeworCQkJQ29sdW1uRGVmICpjb2wgPSBsZmlyc3QoZW50cnkyKTsKKwkJCWludDMyCWF0 dHR5cG1vZDsKKwkJCUFjbFJlc3VsdCBhY2xyZXN1bHQ7CisKKwkJCWlmIChzdHJjbXAocGVy aW9kLT5wZXJpb2RuYW1lLCBjb2wtPmNvbG5hbWUpID09IDApCisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJCQkg ZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGggYSBjb2x1bW4gbmFt ZSIsCisJCQkJCQkJCXBlcmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCQkJaWYgKHN0cmNtcChw ZXJpb2QtPnN0YXJ0Y29sbmFtZSwgY29sLT5jb2xuYW1lKSA9PSAwKQorCQkJeworCQkJCXBl cmlvZC0+c3RhcnRhdHRudW0gPSBpOworCisJCQkJdHlwZW5hbWVUeXBlSWRBbmRNb2QoTlVM TCwgY29sLT50eXBlTmFtZSwgJnN0YXJ0Y29sdHlwaWQsICZhdHR0eXBtb2QpOworCisJCQkJ YWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKFR5cGVSZWxhdGlvbklkLCBzdGFydGNvbHR5 cGlkLCBHZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsKKwkJCQlpZiAoYWNscmVzdWx0ICE9IEFD TENIRUNLX09LKQorCQkJCQlhY2xjaGVja19lcnJvcl90eXBlKGFjbHJlc3VsdCwgc3RhcnRj b2x0eXBpZCk7CisKKwkJCQlzdGFydGNvbGNvbGxhdGlvbiA9IEdldENvbHVtbkRlZkNvbGxh dGlvbihOVUxMLCBjb2wsIHN0YXJ0Y29sdHlwaWQpOworCQkJfQorCisJCQlpZiAoc3RyY21w KHBlcmlvZC0+ZW5kY29sbmFtZSwgY29sLT5jb2xuYW1lKSA9PSAwKQorCQkJeworCQkJCXBl cmlvZC0+ZW5kYXR0bnVtID0gaTsKKworCQkJCXR5cGVuYW1lVHlwZUlkQW5kTW9kKE5VTEws IGNvbC0+dHlwZU5hbWUsICZlbmRjb2x0eXBpZCwgJmF0dHR5cG1vZCk7CisKKwkJCQlhY2xy ZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soVHlwZVJlbGF0aW9uSWQsIGVuZGNvbHR5cGlkLCBH ZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsKKwkJCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNL X09LKQorCQkJCQlhY2xjaGVja19lcnJvcl90eXBlKGFjbHJlc3VsdCwgZW5kY29sdHlwaWQp OworCisJCQkJZW5kY29sY29sbGF0aW9uID0gR2V0Q29sdW1uRGVmQ29sbGF0aW9uKE5VTEws IGNvbCwgZW5kY29sdHlwaWQpOworCQkJfQorCisJCQlpKys7CisJCX0KKworCQkvKiBEaWQg d2UgZmluZCB0aGUgY29sdW1ucz8gKi8KKwkJaWYgKHBlcmlvZC0+c3RhcnRhdHRudW0gPT0g SW52YWxpZEF0dHJOdW1iZXIpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wi IG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJcGVyaW9kLT5z dGFydGNvbG5hbWUsIHJlbG5hbWUpKSk7CisJCWlmIChwZXJpb2QtPmVuZGF0dG51bSA9PSBJ bnZhbGlkQXR0ck51bWJlcikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVS UkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIg b2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQlwZXJpb2QtPmVu ZGNvbG5hbWUsIHJlbG5hbWUpKSk7CisKKwkJLyogQm90aCBjb2x1bW5zIG11c3QgYmUgb2Yg c2FtZSB0eXBlICovCisJCWlmIChzdGFydGNvbHR5cGlkICE9IGVuZGNvbHR5cGlkKQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRD SCksCisJCQkJCSBlcnJtc2coInN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2QgbXVz dCBiZSBvZiBzYW1lIHR5cGUiKSkpOworCisJCS8qIEJvdGggY29sdW1ucyBtdXN0IGhhdmUg dGhlIHNhbWUgY29sbGF0aW9uICovCisJCWlmIChzdGFydGNvbGNvbGxhdGlvbiAhPSBlbmRj b2xjb2xsYXRpb24pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X0NPTExBVElPTl9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coInN0YXJ0IGFuZCBlbmQgY29s dW1ucyBvZiBwZXJpb2QgbXVzdCBoYXZlIHNhbWUgY29sbGF0aW9uIikpKTsKKworCQlwZXJp b2QtPmNvbHR5cGlkID0gc3RhcnRjb2x0eXBpZDsKKwkJcGVyaW9kLT5ybmd0eXBpZCA9IGNo b29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChwZXJpb2QpOworCX0KKworCXJldHVybiBwZXJp b2RzOworfQorCiAvKgogICogTWVyZ2VDaGVja0NvbnN0cmFpbnQKICAqCQlUcnkgdG8gbWVy Z2UgYW4gaW5oZXJpdGVkIENIRUNLIGNvbnN0cmFpbnQgd2l0aCBwcmV2aW91cyBvbmVzCkBA IC00NDAzLDEyICs0ODc3LDEyIEBAIEFsdGVyVGFibGUoQWx0ZXJUYWJsZVN0bXQgKnN0bXQs IExPQ0tNT0RFIGxvY2ttb2RlLAogICogZXhpc3RpbmcgcXVlcnkgcGxhbnMuICBPbiB0aGUg YXNzdW1wdGlvbiBpdCdzIG5vdCB1c2VkIGZvciBzdWNoLCB3ZQogICogZG9uJ3QgaGF2ZSB0 byByZWplY3QgcGVuZGluZyBBRlRFUiB0cmlnZ2VycywgZWl0aGVyLgogICoKLSAqIEFsc28s IHNpbmNlIHdlIGRvbid0IGhhdmUgYW4gQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0LCB0aGlz IGNhbm5vdCBiZQorICogQWxzbywgaWYgeW91IGRvbid0IHBhc3MgYW4gQWx0ZXJUYWJsZVV0 aWxpdHlDb250ZXh0LCB0aGlzIGNhbm5vdCBiZQogICogdXNlZCBmb3IgYW55IHN1YmNvbW1h bmQgdHlwZXMgdGhhdCByZXF1aXJlIHBhcnNlIHRyYW5zZm9ybWF0aW9uIG9yCiAgKiBjb3Vs ZCBnZW5lcmF0ZSBzdWJjb21tYW5kcyB0aGF0IGhhdmUgdG8gYmUgcGFzc2VkIHRvIFByb2Nl c3NVdGlsaXR5LgogICovCiB2b2lkCi1BbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBM aXN0ICpjbWRzLCBib29sIHJlY3Vyc2UpCitBbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlk LCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAq Y29udGV4dCkKIHsKIAlSZWxhdGlvbglyZWw7CiAJTE9DS01PREUJbG9ja21vZGUgPSBBbHRl clRhYmxlR2V0TG9ja0xldmVsKGNtZHMpOwpAQCAtNDQxNyw3ICs0ODkxLDcgQEAgQWx0ZXJU YWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlzdCAqY21kcywgYm9vbCByZWN1cnNlKQogCiAJ RXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVJlbGlkKHJlbGlkKTsKIAotCUFUQ29udHJvbGxlcihO VUxMLCByZWwsIGNtZHMsIHJlY3Vyc2UsIGxvY2ttb2RlLCBOVUxMKTsKKwlBVENvbnRyb2xs ZXIoTlVMTCwgcmVsLCBjbWRzLCByZWN1cnNlLCBsb2NrbW9kZSwgY29udGV4dCk7CiB9CiAK IC8qCkBAIC00NTEwLDYgKzQ5ODQsOCBAQCBBbHRlclRhYmxlR2V0TG9ja0xldmVsKExpc3Qg KmNtZHMpCiAJCQljYXNlIEFUX0VuYWJsZVJlcGxpY2FSdWxlOgkvKiBtYXkgY2hhbmdlIFNF TEVDVCBydWxlcyAqLwogCQkJY2FzZSBBVF9FbmFibGVSdWxlOiAvKiBtYXkgY2hhbmdlIFNF TEVDVCBydWxlcyAqLwogCQkJY2FzZSBBVF9EaXNhYmxlUnVsZToJLyogbWF5IGNoYW5nZSBT RUxFQ1QgcnVsZXMgKi8KKwkJCWNhc2UgQVRfQWRkUGVyaW9kOiAvKiBzaGFyZXMgbmFtZXNw YWNlIHdpdGggY29sdW1ucywgYWRkcyBjb25zdHJhaW50ICovCisJCQljYXNlIEFUX0Ryb3BQ ZXJpb2Q6CiAJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKIAkJCQli cmVhazsKIApAQCAtNDgyNSw2ICs1MzAxLDE0IEBAIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVl LCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCS8qIFRoaXMgY29tbWFu ZCBuZXZlciByZWN1cnNlcyAqLwogCQkJcGFzcyA9IEFUX1BBU1NfQUREX09USEVSQ09OU1RS OwogCQkJYnJlYWs7CisJCWNhc2UgQVRfQWRkUGVyaW9kOiAvKiBBTFRFUiBUQUJMRSAuLi4g QUREIFBFUklPRCBGT1IgbmFtZSAoc3RhcnQsIGVuZCkgKi8KKwkJCUFUU2ltcGxlUGVybWlz c2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9UQUJMRSk7CisJCQlwYXNzID0gQVRfUEFT U19BRERfUEVSSU9EOworCQkJYnJlYWs7CisJCWNhc2UgQVRfRHJvcFBlcmlvZDogLyogQUxU RVIgVEFCTEUgLi4uIERST1AgUEVSSU9EIEZPUiBuYW1lICovCisJCQlBVFNpbXBsZVBlcm1p c3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFCTEUpOworCQkJcGFzcyA9IEFUX1BB U1NfRFJPUDsKKwkJCWJyZWFrOwogCQljYXNlIEFUX0FkZElkZW50aXR5OgogCQkJQVRTaW1w bGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRUX1RBQkxFIHwgQVRUX1ZJRVcg fCBBVFRfRk9SRUlHTl9UQUJMRSk7CiAJCQkvKiBUaGlzIGNvbW1hbmQgbmV2ZXIgcmVjdXJz ZXMgKi8KQEAgLTUyMjIsNiArNTcwNiwxNCBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwg QWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0Nvb2tlZENvbHVtbkRlZmF1bHQ6 CS8qIGFkZCBhIHByZS1jb29rZWQgZGVmYXVsdCAqLwogCQkJYWRkcmVzcyA9IEFURXhlY0Nv b2tlZENvbHVtbkRlZmF1bHQocmVsLCBjbWQtPm51bSwgY21kLT5kZWYpOwogCQkJYnJlYWs7 CisJCWNhc2UgQVRfQWRkUGVyaW9kOgorCQkJYWRkcmVzcyA9IEFURXhlY0FkZFBlcmlvZChy ZWwsIChQZXJpb2REZWYgKikgY21kLT5kZWYsIGNvbnRleHQpOworCQkJYnJlYWs7CisJCWNh c2UgQVRfRHJvcFBlcmlvZDoKKwkJCUFURXhlY0Ryb3BQZXJpb2QocmVsLCBjbWQtPm5hbWUs IGNtZC0+YmVoYXZpb3IsCisJCQkJCQkJCSBmYWxzZSwgZmFsc2UsCisJCQkJCQkJCSBjbWQt Pm1pc3Npbmdfb2spOworCQkJYnJlYWs7CiAJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CiAJCQlj bWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCByZWwsIGNtZCwgZmFsc2Us IGxvY2ttb2RlLAogCQkJCQkJCQkJICBjdXJfcGFzcywgY29udGV4dCk7CkBAIC02MzY2LDYg KzY4NTgsOCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRhYmxlVHlwZSBj bWR0eXBlKQogCQljYXNlIEFUX0FkZENvbHVtbjoKIAkJY2FzZSBBVF9BZGRDb2x1bW5Ub1Zp ZXc6CiAJCQlyZXR1cm4gIkFERCBDT0xVTU4iOworCQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJ CXJldHVybiAiQUREIFBFUklPRCI7CiAJCWNhc2UgQVRfQ29sdW1uRGVmYXVsdDoKIAkJY2Fz ZSBBVF9Db29rZWRDb2x1bW5EZWZhdWx0OgogCQkJcmV0dXJuICJBTFRFUiBDT0xVTU4gLi4u IFNFVCBERUZBVUxUIjsKQEAgLTYzODksNiArNjg4Myw4IEBAIGFsdGVyX3RhYmxlX3R5cGVf dG9fc3RyaW5nKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJCQlyZXR1cm4gIkFMVEVSIENP TFVNTiAuLi4gU0VUIENPTVBSRVNTSU9OIjsKIAkJY2FzZSBBVF9Ecm9wQ29sdW1uOgogCQkJ cmV0dXJuICJEUk9QIENPTFVNTiI7CisJCWNhc2UgQVRfRHJvcFBlcmlvZDoKKwkJCXJldHVy biAiRFJPUCBQRVJJT0QiOwogCQljYXNlIEFUX0FkZEluZGV4OgogCQljYXNlIEFUX1JlQWRk SW5kZXg6CiAJCQlyZXR1cm4gTlVMTDsJCS8qIG5vdCByZWFsIGdyYW1tYXIgKi8KQEAgLTcz OTQsMTQgKzc4OTAsMjkgQEAgQVRFeGVjQWRkQ29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVy ZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogLyoKICAqIElmIGEgbmV3IG9yIHJl bmFtZWQgY29sdW1uIHdpbGwgY29sbGlkZSB3aXRoIHRoZSBuYW1lIG9mIGFuIGV4aXN0aW5n CiAgKiBjb2x1bW4gYW5kIGlmX25vdF9leGlzdHMgaXMgZmFsc2UgdGhlbiBlcnJvciBvdXQs IGVsc2UgZG8gbm90aGluZy4KKyAqCisgKiBTZWUgYWxzbyBjaGVja19mb3JfcGVyaW9kX25h bWVfY29sbGlzaW9uLgogICovCiBzdGF0aWMgYm9vbAogY2hlY2tfZm9yX2NvbHVtbl9uYW1l X2NvbGxpc2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbG5hbWUsCiAJCQkJCQkJ CWJvb2wgaWZfbm90X2V4aXN0cykKIHsKLQlIZWFwVHVwbGUJYXR0VHVwbGU7CisJSGVhcFR1 cGxlCWF0dFR1cGxlLCBwZXJUdXBsZTsKIAlpbnQJCQlhdHRudW07CiAKKwkvKiBJZiB0aGUg bmFtZSBleGlzdHMgYXMgYSBwZXJpb2QsIHdlJ3JlIGRvbmUuICovCisJcGVyVHVwbGUgPSBT ZWFyY2hTeXNDYWNoZTIoUEVSSU9ETkFNRSwKKwkJCQkJCQkgICBPYmplY3RJZEdldERhdHVt KFJlbGF0aW9uR2V0UmVsaWQocmVsKSksCisJCQkJCQkJICAgUG9pbnRlckdldERhdHVtKGNv bG5hbWUpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZChwZXJUdXBsZSkpCisJeworCQlSZWxl YXNlU3lzQ2FjaGUocGVyVHVwbGUpOworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJIGVycm1zZygiY29sdW1uIG5hbWUg XCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgcGVyaW9kIG5hbWUiLAorCQkJCQkJY29sbmFtZSkp KTsKKwl9CisKIAkvKgogCSAqIHRoaXMgdGVzdCBpcyBkZWxpYmVyYXRlbHkgbm90IGF0dGlz ZHJvcHBlZC1hd2FyZSwgc2luY2UgaWYgb25lIHRyaWVzIHRvCiAJICogYWRkIGEgY29sdW1u IG1hdGNoaW5nIGEgZHJvcHBlZCBjb2x1bW4gbmFtZSwgaXQncyBnb25uYSBmYWlsIGFueXdh eS4KQEAgLTc0NDUsNiArNzk1Niw3NiBAQCBjaGVja19mb3JfY29sdW1uX25hbWVfY29sbGlz aW9uKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sbmFtZSwKIAlyZXR1cm4gdHJ1ZTsK IH0KIAorLyoKKyAqIElmIGEgbmV3IHBlcmlvZCBuYW1lIHdpbGwgY29sbGlkZSB3aXRoIHRo ZSBuYW1lIG9mIGFuIGV4aXN0aW5nIGNvbHVtbiBvcgorICogcGVyaW9kIFthbmQgaWZfbm90 X2V4aXN0cyBpcyBmYWxzZV0gdGhlbiBlcnJvciBvdXQsIGVsc2UgZG8gbm90aGluZy4KKyAq CisgKiBTZWUgYWxzbyBjaGVja19mb3JfY29sdW1uX25hbWVfY29sbGlzaW9uLgorICovCitz dGF0aWMgYm9vbAorY2hlY2tfZm9yX3BlcmlvZF9uYW1lX2NvbGxpc2lvbihSZWxhdGlvbiBy ZWwsIGNvbnN0IGNoYXIgKnBlcm5hbWUsCisJCQkJCQkJCWJvb2wgaWZfbm90X2V4aXN0cykK K3sKKwlIZWFwVHVwbGUJYXR0VHVwbGUsIHBlclR1cGxlOworCWludAkJCWF0dG51bTsKKwor CS8qIFRPRE86IGltcGxlbWVudCBJRiBbTk9UXSBFWElTVFMgZm9yIHBlcmlvZHMgKi8KKwlB c3NlcnQoIWlmX25vdF9leGlzdHMpOworCisJLyogSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHBl cmlvZCB3aXRoIHRoaXMgbmFtZSwgdGhlbiB3ZSdyZSBkb25lLiAqLworCXBlclR1cGxlID0g U2VhcmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1 bShSZWxhdGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShw ZXJuYW1lKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQocGVyVHVwbGUpKQorCXsKKwkJaWYg KGlmX25vdF9leGlzdHMpCisJCXsKKwkJCVJlbGVhc2VTeXNDYWNoZShwZXJUdXBsZSk7CisK KwkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9D T0xVTU4pLAorCQkJCQkgZXJybXNnKCJwZXJpb2QgXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNc IiBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmciLAorCQkJCQkJCXBlcm5hbWUsIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKworCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiks CisJCQkJIGVycm1zZygicGVyaW9kIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgYWxyZWFk eSBleGlzdHMiLAorCQkJCQkJcGVybmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs KSkpKTsKKwl9CisKKwkvKgorCSAqIHRoaXMgdGVzdCBpcyBkZWxpYmVyYXRlbHkgbm90IGF0 dGlzZHJvcHBlZC1hd2FyZSwgc2luY2UgaWYgb25lIHRyaWVzIHRvCisJICogYWRkIGEgY29s dW1uIG1hdGNoaW5nIGEgZHJvcHBlZCBjb2x1bW4gbmFtZSwgaXQncyBnb25uYSBmYWlsIGFu eXdheS4KKwkgKi8KKwlhdHRUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMihBVFROQU1FLAorCQkJ CQkJCSAgIE9iamVjdElkR2V0RGF0dW0oUmVsYXRpb25HZXRSZWxpZChyZWwpKSwKKwkJCQkJ CQkgICBQb2ludGVyR2V0RGF0dW0ocGVybmFtZSkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlk KGF0dFR1cGxlKSkKKwl7CisJCWF0dG51bSA9ICgoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNU UlVDVChhdHRUdXBsZSkpLT5hdHRudW07CisJCVJlbGVhc2VTeXNDYWNoZShhdHRUdXBsZSk7 CisKKwkJLyoKKwkJICogV2UgdGhyb3cgYSBkaWZmZXJlbnQgZXJyb3IgbWVzc2FnZSBmb3Ig Y29uZmxpY3RzIHdpdGggc3lzdGVtIGNvbHVtbgorCQkgKiBuYW1lcywgc2luY2UgdGhleSBh cmUgbm9ybWFsbHkgbm90IHNob3duIGFuZCB0aGUgdXNlciBtaWdodCBvdGhlcndpc2UKKwkJ ICogYmUgY29uZnVzZWQgYWJvdXQgdGhlIHJlYXNvbiBmb3IgdGhlIGNvbmZsaWN0LgorCQkg Ki8KKwkJaWYgKGF0dG51bSA8PSAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJIGVycm1zZygicGVyaW9kIG5h bWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgc3lzdGVtIGNvbHVtbiBuYW1lIiwKKwkJCQkJ CQlwZXJuYW1lKSkpOworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf RFVQTElDQVRFX0NPTFVNTiksCisJCQkJIGVycm1zZygicGVyaW9kIG5hbWUgXCIlc1wiIGNv bmZsaWN0cyB3aXRoIGEgY29sdW1uIG5hbWUiLAorCQkJCQkJcGVybmFtZSkpKTsKKwl9CisK KwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIEluc3RhbGwgYSBjb2x1bW4ncyBkZXBlbmRl bmN5IG9uIGl0cyBkYXRhdHlwZS4KICAqLwpAQCAtODA5NSw2ICs4Njc2LDE1NSBAQCBBVEV4 ZWNDb29rZWRDb2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgQXR0ck51bWJlciBhdHRudW0s CiAJcmV0dXJuIGFkZHJlc3M7CiB9CiAKKy8qCisgKiBBTFRFUiBUQUJMRSBBREQgUEVSSU9E CisgKgorICogUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBwZXJpb2QuCisgKi8KK3N0YXRp YyBPYmplY3RBZGRyZXNzCitBVEV4ZWNBZGRQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2RE ZWYgKnBlcmlvZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQoreworCVJl bGF0aW9uCQlhdHRyZWxhdGlvbjsKKwlPYmplY3RBZGRyZXNzCWFkZHJlc3MgPSBJbnZhbGlk T2JqZWN0QWRkcmVzczsKKwlDb25zdHJhaW50CSAgICpjb25zdHI7CisJQ29sdW1uRGVmCSAg ICpyYW5nZWNvbDsKKwlPaWQJCQkJY29ub2lkLCBwZXJpb2RvaWQ7CisJTGlzdAkJICAgKmNt ZHMgPSBOSUw7CisJQWx0ZXJUYWJsZUNtZCAgKmNtZDsKKworCS8qCisJICogUEVSSU9EIEZP UiBTWVNURU1fVElNRSBpcyBub3QgeWV0IGltcGxlbWVudGVkLCBidXQgbWFrZSBzdXJlIG5v IG9uZSB1c2VzCisJICogdGhlIG5hbWUuCisJICovCisJaWYgKHN0cmNtcChwZXJpb2QtPnBl cmlvZG5hbWUsICJzeXN0ZW1fdGltZSIpID09IDApCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJt c2coIlBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBvcnRlZCIpKSk7CisKKwkv KiBUaGUgcGVyaW9kIG5hbWUgbXVzdCBub3QgYWxyZWFkeSBleGlzdCAqLworCSh2b2lkKSBj aGVja19mb3JfcGVyaW9kX25hbWVfY29sbGlzaW9uKHJlbCwgcGVyaW9kLT5wZXJpb2RuYW1l LCBmYWxzZSk7CisKKwkvKiBQYXJzZSBvcHRpb25zICovCisJdHJhbnNmb3JtUGVyaW9kT3B0 aW9ucyhwZXJpb2QpOworCisJYXR0cmVsYXRpb24gPSB0YWJsZV9vcGVuKEF0dHJpYnV0ZVJl bGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCVZhbGlkYXRlUGVyaW9kKHJlbCwgcGVy aW9kKTsKKworCXBlcmlvZC0+cm5ndHlwaWQgPSBjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9wZXJp b2QocGVyaW9kKTsKKworCS8qIE1ha2UgdGhlIENIRUNLIGNvbnN0cmFpbnQgKi8KKwljb25z dHIgPSBtYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZChyZWwsIHBlcmlvZCk7CisJY21kID0g bWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJY21kLT5zdWJ0eXBlID0gQVRfQWRkQ29uc3Ry YWludDsKKwljbWQtPmRlZiA9IChOb2RlICopIGNvbnN0cjsKKwljbWRzID0gbGFwcGVuZChj bWRzLCBjbWQpOworCUFsdGVyVGFibGVJbnRlcm5hbChSZWxhdGlvbkdldFJlbGlkKHJlbCks IGNtZHMsIHRydWUsIGNvbnRleHQpOworCWNvbm9pZCA9IGdldF9yZWxhdGlvbl9jb25zdHJh aW50X29pZChSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+Y29uc3RyYWludG5hbWUs IGZhbHNlKTsKKworCS8qIE1ha2UgdGhlIHJhbmdlIGNvbHVtbiAqLworCXJhbmdlY29sID0g bWFrZV9yYW5nZV9jb2x1bW5fZm9yX3BlcmlvZChwZXJpb2QpOworCWNtZCA9IG1ha2VOb2Rl KEFsdGVyVGFibGVDbWQpOworCWNtZC0+c3VidHlwZSA9IEFUX0FkZENvbHVtbjsKKwljbWQt PmRlZiA9IChOb2RlICopIHJhbmdlY29sOworCWNtZC0+bmFtZSA9IHBlcmlvZC0+cGVyaW9k bmFtZTsKKwljbWQtPnJlY3Vyc2UgPSBmYWxzZTsgLyogbm8sIGxldCB0aGUgUEVSSU9EIHJl Y3Vyc2UgaW5zdGVhZCAqLworCUFsdGVyVGFibGVJbnRlcm5hbChSZWxhdGlvbkdldFJlbGlk KHJlbCksIGxpc3RfbWFrZTEoY21kKSwgdHJ1ZSwgY29udGV4dCk7CisJcGVyaW9kLT5ybmdh dHRudW0gPSBnZXRfYXR0bnVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5wZXJp b2RuYW1lKTsKKwlpZiAocGVyaW9kLT5ybmdhdHRudW0gPT0gSW52YWxpZEF0dHJOdW1iZXIp CisJCWVsb2coRVJST1IsICJtaXNzaW5nIGF0dHJpYnV0ZSAlcyIsIHBlcmlvZC0+cGVyaW9k bmFtZSk7CisKKwkvKiBTYXZlIHRoZSBQZXJpb2QgKi8KKwlwZXJpb2RvaWQgPSBTdG9yZVBl cmlvZChyZWwsIHBlcmlvZC0+cGVyaW9kbmFtZSwgcGVyaW9kLT5zdGFydGF0dG51bSwgcGVy aW9kLT5lbmRhdHRudW0sIHBlcmlvZC0+cm5nYXR0bnVtLCBjb25vaWQpOworCisJT2JqZWN0 QWRkcmVzc1NldChhZGRyZXNzLCBQZXJpb2RSZWxhdGlvbklkLCBwZXJpb2RvaWQpOworCisJ dGFibGVfY2xvc2UoYXR0cmVsYXRpb24sIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJcmV0dXJu IGFkZHJlc3M7Cit9CisKKy8qCisgKiBBTFRFUiBUQUJMRSBEUk9QIFBFUklPRAorICoKKyAq IExpa2UgRFJPUCBDT0xVTU4sIHdlIGNhbid0IHVzZSB0aGUgbm9ybWFsIEFMVEVSIFRBQkxF IHJlY3Vyc2lvbiBtZWNoYW5pc20uCisgKi8KK3N0YXRpYyB2b2lkCitBVEV4ZWNEcm9wUGVy aW9kKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVyaW9kTmFtZSwKKwkJCQkJIERyb3BC ZWhhdmlvciBiZWhhdmlvciwKKwkJCQkJIGJvb2wgcmVjdXJzZSwgYm9vbCByZWN1cnNpbmcs CisJCQkJCSBib29sIG1pc3Npbmdfb2spCit7CisJUmVsYXRpb24JcGdfcGVyaW9kOworCUZv cm1fcGdfcGVyaW9kIHBlcmlvZDsKKwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5LZXlEYXRh IGtleTsKKwlIZWFwVHVwbGUJdHVwbGU7CisJYm9vbAkJZm91bmQgPSBmYWxzZTsKKworCS8q IEF0IHRvcCBsZXZlbCwgcGVybWlzc2lvbiBjaGVjayB3YXMgZG9uZSBpbiBBVFByZXBDbWQs IGVsc2UgZG8gaXQgKi8KKwlpZiAocmVjdXJzaW5nKQorCQlBVFNpbXBsZVBlcm1pc3Npb25z KEFUX0Ryb3BQZXJpb2QsIHJlbCwgQVRUX1RBQkxFKTsKKworCXBnX3BlcmlvZCA9IHRhYmxl X29wZW4oUGVyaW9kUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwkvKgorCSAq IEZpbmQgYW5kIGRyb3AgdGhlIHRhcmdldCBwZXJpb2QKKwkgKi8KKwlTY2FuS2V5SW5pdCgm a2V5LAorCQkJCUFudW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJCUJURXF1YWxTdHJhdGVn eU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKFJlbGF0aW9uR2V0UmVs aWQocmVsKSkpOworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfcGVyaW9kLCBQZXJp b2RSZWxpZE5hbWVJbmRleElkLAorCQkJCQkJCSAgdHJ1ZSwgTlVMTCwgMSwgJmtleSk7CisK Kwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQoc2Nh bikpKQorCXsKKwkJT2JqZWN0QWRkcmVzcyBwZXJvYmo7CisKKwkJcGVyaW9kID0gKEZvcm1f cGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCWlmIChzdHJjbXAoTmFtZVN0cihw ZXJpb2QtPnBlcm5hbWUpLCBwZXJpb2ROYW1lKSAhPSAwKQorCQkJY29udGludWU7CisKKwkJ LyoKKwkJICogUGVyZm9ybSB0aGUgYWN0dWFsIHBlcmlvZCBkZWxldGlvbgorCQkgKi8KKwkJ cGVyb2JqLmNsYXNzSWQgPSBQZXJpb2RSZWxhdGlvbklkOworCQlwZXJvYmoub2JqZWN0SWQg PSBwZXJpb2QtPm9pZDsKKwkJcGVyb2JqLm9iamVjdFN1YklkID0gMDsKKworCQlwZXJmb3Jt RGVsZXRpb24oJnBlcm9iaiwgYmVoYXZpb3IsIDApOworCisJCWZvdW5kID0gdHJ1ZTsKKwor CQkvKiBwZXJpb2QgZm91bmQgYW5kIGRyb3BwZWQgLS0gbm8gbmVlZCB0byBrZWVwIGxvb3Bp bmcgKi8KKwkJYnJlYWs7CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKworCWlm ICghZm91bmQpCisJeworCQlpZiAoIW1pc3Npbmdfb2spCisJCXsKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBl cnJtc2coInBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0 IiwKKwkJCQkJCQlwZXJpb2ROYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkp OworCQl9CisJCWVsc2UKKwkJeworCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCShlcnJtc2co InBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0LCBza2lw cGluZyIsCisJCQkJCQkJcGVyaW9kTmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs KSkpKTsKKwkJCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7CisJ CQlyZXR1cm47CisJCX0KKwl9CisKKwl0YWJsZV9jbG9zZShwZ19wZXJpb2QsIFJvd0V4Y2x1 c2l2ZUxvY2spOworfQorCiAvKgogICogQUxURVIgVEFCTEUgQUxURVIgQ09MVU1OIEFERCBJ REVOVElUWQogICoKQEAgLTEzNjMwLDYgKzE0MzYwLDE1IEBAIEFURXhlY0FsdGVyQ29sdW1u VHlwZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQlSZW1lbWJl ckNvbnN0cmFpbnRGb3JSZWJ1aWxkaW5nKGZvdW5kT2JqZWN0Lm9iamVjdElkLCB0YWIpOwog CQkJCWJyZWFrOwogCisJCQljYXNlIE9DTEFTU19QRVJJT0Q6CisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CQkJCSBlcnJtc2coImNhbm5vdCBhbHRlciB0eXBlIG9mIGEgY29sdW1uIHVzZWQgYnkgYSBw ZXJpb2QiKSwKKwkJCQkJCSBlcnJkZXRhaWwoIiVzIGRlcGVuZHMgb24gY29sdW1uIFwiJXNc IiIsCisJCQkJCQkJCSAgIGdldE9iamVjdERlc2NyaXB0aW9uKCZmb3VuZE9iamVjdCwgZmFs c2UpLAorCQkJCQkJCQkgICBjb2xOYW1lKSkpOworCQkJCWJyZWFrOworCiAJCQljYXNlIE9D TEFTU19SRVdSSVRFOgogCQkJCS8qIFhYWCBzb21lZGF5IHNlZSBpZiB3ZSBjYW4gY29wZSB3 aXRoIHJldmlzaW5nIHZpZXdzICovCiAJCQkJZXJlcG9ydChFUlJPUiwKQEAgLTE1NjkzLDcg KzE2NDMyLDcgQEAgQWx0ZXJUYWJsZU1vdmVBbGwoQWx0ZXJUYWJsZU1vdmVBbGxTdG10ICpz dG10KQogCiAJCUV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFydCgoTm9kZSAqKSBzdG10KTsK IAkJLyogT0lEIGlzIHNldCBieSBBbHRlclRhYmxlSW50ZXJuYWwgKi8KLQkJQWx0ZXJUYWJs ZUludGVybmFsKGxmaXJzdF9vaWQobCksIGNtZHMsIGZhbHNlKTsKKwkJQWx0ZXJUYWJsZUlu dGVybmFsKGxmaXJzdF9vaWQobCksIGNtZHMsIGZhbHNlLCBOVUxMKTsKIAkJRXZlbnRUcmln Z2VyQWx0ZXJUYWJsZUVuZCgpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5jCmluZGV4IDliZDc3 NTQ2YjkuLmJlNDYzNzI4N2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zp ZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92aWV3LmMKQEAgLTE2OSw3ICsxNjks NyBAQCBEZWZpbmVWaXJ0dWFsUmVsYXRpb24oUmFuZ2VWYXIgKnJlbGF0aW9uLCBMaXN0ICp0 bGlzdCwgYm9vbCByZXBsYWNlLAogCQkJfQogCiAJCQkvKiBFdmVudFRyaWdnZXJBbHRlclRh YmxlU3RhcnQgY2FsbGVkIGJ5IFByb2Nlc3NVdGlsaXR5U2xvdyAqLwotCQkJQWx0ZXJUYWJs ZUludGVybmFsKHZpZXdPaWQsIGF0Y21kcywgdHJ1ZSk7CisJCQlBbHRlclRhYmxlSW50ZXJu YWwodmlld09pZCwgYXRjbWRzLCB0cnVlLCBOVUxMKTsKIAogCQkJLyogTWFrZSB0aGUgbmV3 IHZpZXcgY29sdW1ucyB2aXNpYmxlICovCiAJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgp OwpAQCAtMjAxLDcgKzIwMSw3IEBAIERlZmluZVZpcnR1YWxSZWxhdGlvbihSYW5nZVZhciAq cmVsYXRpb24sIExpc3QgKnRsaXN0LCBib29sIHJlcGxhY2UsCiAJCWF0Y21kcyA9IGxpc3Rf bWFrZTEoYXRjbWQpOwogCiAJCS8qIEV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFydCBjYWxs ZWQgYnkgUHJvY2Vzc1V0aWxpdHlTbG93ICovCi0JCUFsdGVyVGFibGVJbnRlcm5hbCh2aWV3 T2lkLCBhdGNtZHMsIHRydWUpOworCQlBbHRlclRhYmxlSW50ZXJuYWwodmlld09pZCwgYXRj bWRzLCB0cnVlLCBOVUxMKTsKIAogCQkvKgogCQkgKiBUaGVyZSBpcyB2ZXJ5IGxpdHRsZSB0 byBkbyBoZXJlIHRvIHVwZGF0ZSB0aGUgdmlldydzIGRlcGVuZGVuY2llcy4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMKaW5kZXggNjJjY2JmOWQzYy4uYTBjMDY5ZmM1ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMKQEAgLTE2MzksNiArMTYzOSw5IEBAIGV4cHJMb2NhdGlvbihjb25zdCBO b2RlICpleHByKQogCQljYXNlIFRfQ29uc3RyYWludDoKIAkJCWxvYyA9ICgoY29uc3QgQ29u c3RyYWludCAqKSBleHByKS0+bG9jYXRpb247CiAJCQlicmVhazsKKwkJY2FzZSBUX1Blcmlv ZERlZjoKKwkJCWxvYyA9ICgoY29uc3QgUGVyaW9kRGVmICopIGV4cHIpLT5sb2NhdGlvbjsK KwkJCWJyZWFrOwogCQljYXNlIFRfRnVuY3Rpb25QYXJhbWV0ZXI6CiAJCQkvKiBqdXN0IHVz ZSB0eXBlbmFtZSdzIGxvY2F0aW9uICovCiAJCQlsb2MgPSBleHByTG9jYXRpb24oKE5vZGUg KikgKChjb25zdCBGdW5jdGlvblBhcmFtZXRlciAqKSBleHByKS0+YXJnVHlwZSk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQppbmRleCA5ODU0NmIyMWU3Li4wMjIxOGM1NDQ5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK QEAgLTU5NCw3ICs1OTQsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxl Y3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUg PGtleXdvcmQ+IGNvbF9uYW1lX2tleXdvcmQgcmVzZXJ2ZWRfa2V5d29yZAogJXR5cGUgPGtl eXdvcmQ+IGJhcmVfbGFiZWxfa2V5d29yZAogCi0ldHlwZSA8bm9kZT4JVGFibGVDb25zdHJh aW50IFRhYmxlTGlrZUNsYXVzZQorJXR5cGUgPG5vZGU+CVRhYmxlQ29uc3RyYWludCBUYWJs ZUxpa2VDbGF1c2UgVGFibGVQZXJpb2QKICV0eXBlIDxpdmFsPglUYWJsZUxpa2VPcHRpb25M aXN0IFRhYmxlTGlrZU9wdGlvbgogJXR5cGUgPHN0cj4JCWNvbHVtbl9jb21wcmVzc2lvbiBv cHRfY29sdW1uX2NvbXByZXNzaW9uIGNvbHVtbl9zdG9yYWdlIG9wdF9jb2x1bW5fc3RvcmFn ZQogJXR5cGUgPGxpc3Q+CUNvbFF1YWxMaXN0CkBAIC0yNjAwLDYgKzI2MDAsMjQgQEAgYWx0 ZXJfdGFibGVfY21kOgogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSAkNDsKIAkJCQkJJCQgPSAo Tm9kZSAqKSBuOwogCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBBREQgUEVSSU9E IEZPUiA8bmFtZT4gKDxuYW1lPiwgPG5hbWU+KSAqLworCQkJfCBBRERfUCBUYWJsZVBlcmlv ZAorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVD bWQpOworCQkJCQluLT5zdWJ0eXBlID0gQVRfQWRkUGVyaW9kOworCQkJCQluLT5kZWYgPSAk MjsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJLyogQUxURVIgVEFCTEUgPG5h bWU+IERST1AgUEVSSU9EIEZPUiA8bmFtZT4gW1JFU1RSSUNUfENBU0NBREVdICovCisJCQl8 IERST1AgUEVSSU9EIEZPUiBuYW1lIG9wdF9kcm9wX2JlaGF2aW9yCisJCQkJeworCQkJCQlB bHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCW4tPnN1 YnR5cGUgPSBBVF9Ecm9wUGVyaW9kOworCQkJCQluLT5uYW1lID0gJDQ7CisJCQkJCW4tPmJl aGF2aW9yID0gJDU7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJCQkJJCQgPSAo Tm9kZSAqKW47CisJCQkJfQogCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IEFERCBDT05TVFJB SU5UIC4uLiAqLwogCQkJfCBBRERfUCBUYWJsZUNvbnN0cmFpbnQKIAkJCQl7CkBAIC0zNzE5 LDggKzM3MzcsMTAgQEAgVGFibGVFbGVtZW50OgogCQkJY29sdW1uRGVmCQkJCQkJCXsgJCQg PSAkMTsgfQogCQkJfCBUYWJsZUxpa2VDbGF1c2UJCQkJCXsgJCQgPSAkMTsgfQogCQkJfCBU YWJsZUNvbnN0cmFpbnQJCQkJCXsgJCQgPSAkMTsgfQorCQkJfCBUYWJsZVBlcmlvZAkJCQkJ CXsgJCQgPSAkMTsgfQogCQk7CiAKKwogVHlwZWRUYWJsZUVsZW1lbnQ6CiAJCQljb2x1bW5P cHRpb25zCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8IFRhYmxlQ29uc3RyYWludAkJCQkJeyAk JCA9ICQxOyB9CkBAIC00MDcyLDYgKzQwOTIsMTkgQEAgVGFibGVMaWtlT3B0aW9uOgogCQk7 CiAKIAorVGFibGVQZXJpb2Q6CisJCQlQRVJJT0QgRk9SIG5hbWUgJygnIG5hbWUgJywnIG5h bWUgJyknIG9wdF9kZWZpbml0aW9uCisJCQkJeworCQkJCQlQZXJpb2REZWYgKm4gPSBtYWtl Tm9kZShQZXJpb2REZWYpOworCQkJCQluLT5wZXJpb2RuYW1lID0gJDM7CisJCQkJCW4tPnN0 YXJ0Y29sbmFtZSA9ICQ1OworCQkJCQluLT5lbmRjb2xuYW1lID0gJDc7CisJCQkJCW4tPm9w dGlvbnMgPSAkOTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAq KSBuOworCQkJCX0KKwkJOworCiAvKiBDb25zdHJhaW50RWxlbSBzcGVjaWZpZXMgY29uc3Ry YWludCBzeW50YXggd2hpY2ggaXMgbm90IGVtYmVkZGVkIGludG8KICAqCWEgY29sdW1uIGRl ZmluaXRpb24uIENvbENvbnN0cmFpbnRFbGVtIHNwZWNpZmllcyB0aGUgZW1iZWRkZWQgZm9y bS4KICAqIC0gdGhvbWFzIDE5OTctMTItMDMKQEAgLTcxMzAsNiArNzE2MywxNCBAQCBDb21t ZW50U3RtdDoKIAkJCQkJbi0+Y29tbWVudCA9ICQ5OwogCQkJCQkkJCA9IChOb2RlICopIG47 CiAJCQkJfQorCQkJfCBDT01NRU5UIE9OIFBFUklPRCBhbnlfbmFtZSBJUyBjb21tZW50X3Rl eHQKKwkJCQl7CisJCQkJCUNvbW1lbnRTdG10ICpuID0gbWFrZU5vZGUoQ29tbWVudFN0bXQp OworCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1BFUklPRDsKKwkJCQkJbi0+b2JqZWN0ID0g KE5vZGUgKikgJDQ7CisJCQkJCW4tPmNvbW1lbnQgPSAkNjsKKwkJCQkJJCQgPSAoTm9kZSAq KSBuOworCQkJCX0KIAkJCXwgQ09NTUVOVCBPTiBMQVJHRV9QIE9CSkVDVF9QIE51bWVyaWNP bmx5IElTIGNvbW1lbnRfdGV4dAogCQkJCXsKIAkJCQkJQ29tbWVudFN0bXQgKm4gPSBtYWtl Tm9kZShDb21tZW50U3RtdCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCmlu ZGV4IDg2NGVhOWIwZDUuLmZiYmFkZTUxNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9y ZWxhdGlvbi5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9oZWFwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3Bh Y2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJub2Rlcy9t YWtlZnVuY3MuaCIKQEAgLTMxODksNiArMzE5MCw3IEBAIGV4cGFuZE5TSXRlbUF0dHJzKFBh cnNlU3RhdGUgKnBzdGF0ZSwgUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW0sCiAJCQkJICBp bnQgc3VibGV2ZWxzX3VwLCBib29sIHJlcXVpcmVfY29sX3ByaXZzLCBpbnQgbG9jYXRpb24p CiB7CiAJUmFuZ2VUYmxFbnRyeSAqcnRlID0gbnNpdGVtLT5wX3J0ZTsKKwlCaXRtYXBzZXQg ICpwZXJpb2RhdHRzID0gTlVMTDsKIAlSVEVQZXJtaXNzaW9uSW5mbyAqcGVybWluZm8gPSBu c2l0ZW0tPnBfcGVybWluZm87CiAJTGlzdAkgICAqbmFtZXMsCiAJCQkgICAqdmFyczsKQEAg LTMyMTIsMTIgKzMyMTQsMjAgQEAgZXhwYW5kTlNJdGVtQXR0cnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbSwKIAkJcGVybWluZm8tPnJlcXVpcmVk UGVybXMgfD0gQUNMX1NFTEVDVDsKIAl9CiAKKwkvKiBHZXQgUEVSSU9EIGNvbHVtbnMgdG8g ZXhjbHVkZSAqLworCWlmIChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKQorCQlwZXJp b2RhdHRzID0gZ2V0X3BlcmlvZF9hdHRub3MocnRlLT5yZWxpZCk7CisKIAlmb3Jib3RoKG5h bWUsIG5hbWVzLCB2YXIsIHZhcnMpCiAJewogCQljaGFyCSAgICpsYWJlbCA9IHN0clZhbChs Zmlyc3QobmFtZSkpOwogCQlWYXIJCSAgICp2YXJub2RlID0gKFZhciAqKSBsZmlyc3QodmFy KTsKIAkJVGFyZ2V0RW50cnkgKnRlOwogCisJCS8qIElmIHRoaXMgY29sdW1uIGlzIGZyb20g YSBQRVJJT0QsIHNraXAgaXQgKi8KKwkJaWYgKGJtc19pc19tZW1iZXIocHN0YXRlLT5wX25l eHRfcmVzbm8sIHBlcmlvZGF0dHMpKQorCQkJCWNvbnRpbnVlOworCiAJCXRlID0gbWFrZVRh cmdldEVudHJ5KChFeHByICopIHZhcm5vZGUsCiAJCQkJCQkJIChBdHRyTnVtYmVyKSBwc3Rh dGUtPnBfbmV4dF9yZXNubysrLAogCQkJCQkJCSBsYWJlbCwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfdXRpbGNtZC5jCmluZGV4IDYwMzBiYTkwY2QuLmE5NTMxYmM4YTcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImNh dGFsb2cvcGdfY29uc3RyYWludC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIKKyNpbmNsdWRlICJjYXRhbG9n L3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dC5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NvbW1l bnQuaCIKQEAgLTgwLDYgKzgxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlib29sCQlpc2ZvcmVp Z247CQkvKiB0cnVlIGlmIENSRUFURS9BTFRFUiBGT1JFSUdOIFRBQkxFICovCiAJYm9vbAkJ aXNhbHRlcjsJCS8qIHRydWUgaWYgYWx0ZXJpbmcgZXhpc3RpbmcgdGFibGUgKi8KIAlMaXN0 CSAgICpjb2x1bW5zOwkJLyogQ29sdW1uRGVmIGl0ZW1zICovCisJTGlzdAkgICAqcGVyaW9k czsJCS8qIFBlcmlvZERlZiBpdGVtcyAqLwogCUxpc3QJICAgKmNrY29uc3RyYWludHM7CS8q IENIRUNLIGNvbnN0cmFpbnRzICovCiAJTGlzdAkgICAqbm5jb25zdHJhaW50czsJLyogTk9U IE5VTEwgY29uc3RyYWludHMgKi8KIAlMaXN0CSAgICpma2NvbnN0cmFpbnRzOwkvKiBGT1JF SUdOIEtFWSBjb25zdHJhaW50cyAqLwpAQCAtMTExLDYgKzExMyw4IEBAIHR5cGVkZWYgc3Ry dWN0CiAKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbHVtbkRlZmluaXRpb24oQ3JlYXRlU3Rt dENvbnRleHQgKmN4dCwKIAkJCQkJCQkJCSAgQ29sdW1uRGVmICpjb2x1bW4pOworc3RhdGlj IHZvaWQgdHJhbnNmb3JtVGFibGVQZXJpb2QoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKKwkJ CQkJCQkJIFBlcmlvZERlZiAqcGVyaW9kKTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybVRhYmxl Q29uc3RyYWludChDcmVhdGVTdG10Q29udGV4dCAqY3h0LAogCQkJCQkJCQkJIENvbnN0cmFp bnQgKmNvbnN0cmFpbnQpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNl KENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCkBAIC0yNDAsNiArMjQ0LDcgQEAgdHJhbnNmb3Jt Q3JlYXRlU3RtdChDcmVhdGVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZykK IAljeHQuaW5oUmVsYXRpb25zID0gc3RtdC0+aW5oUmVsYXRpb25zOwogCWN4dC5pc2FsdGVy ID0gZmFsc2U7CiAJY3h0LmNvbHVtbnMgPSBOSUw7CisJY3h0LnBlcmlvZHMgPSBOSUw7CiAJ Y3h0LmNrY29uc3RyYWludHMgPSBOSUw7CiAJY3h0Lm5uY29uc3RyYWludHMgPSBOSUw7CiAJ Y3h0LmZrY29uc3RyYWludHMgPSBOSUw7CkBAIC0yODAsNiArMjg1LDEwIEBAIHRyYW5zZm9y bUNyZWF0ZVN0bXQoQ3JlYXRlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcp CiAJCQkJdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbigmY3h0LCAoQ29sdW1uRGVmICopIGVs ZW1lbnQpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIFRfUGVyaW9kRGVmOgorCQkJCXRyYW5z Zm9ybVRhYmxlUGVyaW9kKCZjeHQsIChQZXJpb2REZWYgKikgZWxlbWVudCk7CisJCQkJYnJl YWs7CisKIAkJCWNhc2UgVF9Db25zdHJhaW50OgogCQkJCXRyYW5zZm9ybVRhYmxlQ29uc3Ry YWludCgmY3h0LCAoQ29uc3RyYWludCAqKSBlbGVtZW50KTsKIAkJCQlicmVhazsKQEAgLTM0 Nyw2ICszNTYsNyBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENyZWF0ZVN0bXQgKnN0bXQsIGNv bnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCSAqIE91dHB1dCByZXN1bHRzLgogCSAqLwogCXN0 bXQtPnRhYmxlRWx0cyA9IGN4dC5jb2x1bW5zOworCXN0bXQtPnBlcmlvZHMgPSBjeHQucGVy aW9kczsKIAlzdG10LT5jb25zdHJhaW50cyA9IGN4dC5ja2NvbnN0cmFpbnRzOwogCXN0bXQt Pm5uY29uc3RyYWludHMgPSBjeHQubm5jb25zdHJhaW50czsKIApAQCAtOTEzLDYgKzkyMywx MTMgQEAgdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbihDcmVhdGVTdG10Q29udGV4dCAqY3h0 LCBDb2x1bW5EZWYgKmNvbHVtbikKIAl9CiB9CiAKK3ZvaWQKK3RyYW5zZm9ybVBlcmlvZE9w dGlvbnMoUGVyaW9kRGVmICpwZXJpb2QpCit7CisJTGlzdENlbGwgICAqb3B0aW9uOworCURl ZkVsZW0JICAgKmRjb25zdHJhaW50bmFtZSA9IE5VTEw7CisJRGVmRWxlbQkgICAqZHJhbmdl dHlwZW5hbWUgPSBOVUxMOworCisJZm9yZWFjaChvcHRpb24sIHBlcmlvZC0+b3B0aW9ucykK Kwl7CisJCURlZkVsZW0gICAgKmRlZmVsID0gKERlZkVsZW0gKikgbGZpcnN0KG9wdGlvbik7 CisKKwkJaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImNoZWNrX2NvbnN0cmFpbnRfbmFt ZSIpID09IDApCisJCXsKKwkJCWlmIChkY29uc3RyYWludG5hbWUpCisJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBl cnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsKKwkJCWRjb25z dHJhaW50bmFtZSA9IGRlZmVsOworCQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVm bmFtZSwgInJhbmdldHlwZSIpID09IDApCisJCXsKKwkJCWlmIChkcmFuZ2V0eXBlbmFtZSkK KwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJS T1IpLAorCQkJCQkJIGVycm1zZygiY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMi KSkpOworCQkJZHJhbmdldHlwZW5hbWUgPSBkZWZlbDsKKwkJfQorCQllbHNlCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJ CSBlcnJtc2coIm9wdGlvbiBcIiVzXCIgbm90IHJlY29nbml6ZWQiLCBkZWZlbC0+ZGVmbmFt ZSkpKTsKKwl9CisKKwlpZiAoZGNvbnN0cmFpbnRuYW1lICE9IE5VTEwpCisJCXBlcmlvZC0+ Y29uc3RyYWludG5hbWUgPSBkZWZHZXRTdHJpbmcoZGNvbnN0cmFpbnRuYW1lKTsKKwllbHNl CisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBOVUxMOworCisJaWYgKGRyYW5nZXR5cGVu YW1lICE9IE5VTEwpCisJCXBlcmlvZC0+cmFuZ2V0eXBlbmFtZSA9IGRlZkdldFN0cmluZyhk cmFuZ2V0eXBlbmFtZSk7CisJZWxzZQorCQlwZXJpb2QtPnJhbmdldHlwZW5hbWUgPSBOVUxM OworfQorCisvKgorICogdHJhbnNmb3JtVGFibGVQZXJpb2QKKyAqCQl0cmFuc2Zvcm0gYSBQ ZXJpb2REZWYgbm9kZSB3aXRoaW4gQ1JFQVRFIFRBQkxFIG9yIEFMVEVSIFRBQkxFCisgKgkJ VE9ETzogRG9lcyBBTFRFUiBUQUJMRSByZWFsbHkgY2FsbCB1cz8/IEl0IGRvZXNuJ3Qgc2Vl bSBsaWtlIGl0IGRvZXMuIE1heWJlIGl0IHNob3VsZC4gRGlkIGl0IGluIFZpaydzIG9yaWdp bmFsIHBhdGNoPworICovCitzdGF0aWMgdm9pZAordHJhbnNmb3JtVGFibGVQZXJpb2QoQ3Jl YXRlU3RtdENvbnRleHQgKmN4dCwgUGVyaW9kRGVmICpwZXJpb2QpCit7CisJLy8gT2lkCQkJ Y29sdHlwaWQ7CisJLy8gQ29sdW1uRGVmICAqY29sOworCS8vIExpc3RDZWxsICAgKmNvbHVt bnM7CisKKwlpZiAoc3RyY21wKHBlcmlvZC0+cGVyaW9kbmFtZSwgInN5c3RlbV90aW1lIikg PT0gMCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiUEVSSU9EIEZPUiBTWVNURU1fVElN RSBpcyBub3Qgc3VwcG9ydGVkIiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5w c3RhdGUsCisJCQkJCQkJCQkJcGVyaW9kLT5sb2NhdGlvbikpKTsKKworCWlmIChzdHJjbXAo cGVyaW9kLT5zdGFydGNvbG5hbWUsIHBlcmlvZC0+ZW5kY29sbmFtZSkgPT0gMCkKKwkJZXJl cG9ydChFUlJPUiwgKGVycm1zZygiY29sdW1uIFwiJXNcIiBjYW4ndCBiZSB0aGUgc3RhcnQg YW5kIGVuZCBjb2x1bW4gZm9yIHBlcmlvZCBcIiVzXCIiLAorCQkJCQkgICAgcGVyaW9kLT5z dGFydGNvbG5hbWUsIHBlcmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCS8qCisJICogRGV0ZXJt aW5lIHRoZSBjb2x1bW4gaW5mbyBhbmQgcmFuZ2UgdHlwZSBzbyB0aGF0IHRyYW5zZm9ybUlu ZGV4Q29uc3RyYWludHMKKwkgKiBrbm93cyBob3cgdG8gY3JlYXRlIFBSSU1BUlkgS0VZL1VO SVFVRSBjb25zdHJhaW50cyB1c2luZyB0aGlzIFBFUklPRC4KKwkgKi8KKwl0cmFuc2Zvcm1Q ZXJpb2RPcHRpb25zKHBlcmlvZCk7CisKKwkvKgorCSAqIEZpbmQgYSBzdWl0YWJsZSByYW5n ZSB0eXBlIGZvciBvcGVyYXRpb25zIGludm9sdmluZyB0aGlzIHBlcmlvZC4KKwkgKiBVc2Ug dGhlIHJhbmdldHlwZSBvcHRpb24gaWYgcHJvdmlkZWQsIG90aGVyd2lzZSB0cnkgdG8gZmlu ZCBhCisJICogbm9uLWFtYmlndW91cyBleGlzdGluZyB0eXBlLgorCSAqLworCisjaWZkZWYg YXNkc2RmYQorCS8qIEZpcnN0IGZpbmQgb3V0IHRoZSB0eXBlIG9mIHRoZSBwZXJpb2QncyBj b2x1bW5zICovCisJLy8gVE9ETzogSSdtIGRvaW5nIHRoaXMgaW4gRGVmaW5lUmVsYXRpb24g bm93LAorCS8vIHdoaWNoIHNlZW1zIGxpa2UgYSBiZXR0ZXIgcGxhY2Ugc2luY2UgaXQga25v d3MgYWJvdXQgaW5oZXJpdGVkIGNvbHVtbnMuCisJcGVyaW9kLT5jb2x0eXBpZCA9IEludmFs aWRPaWQ7CisJcGVyaW9kLT5ybmd0eXBpZCA9IEludmFsaWRPaWQ7CisJZm9yZWFjaCAoY29s dW1ucywgY3h0LT5jb2x1bW5zKQorCXsKKwkJY29sID0gKENvbHVtbkRlZiAqKSBsZmlyc3Qo Y29sdW1ucyk7CisJCWlmIChzdHJjbXAoY29sLT5jb2xuYW1lLCBwZXJpb2QtPnN0YXJ0Y29s bmFtZSkgPT0gMCkKKwkJeworCQkJY29sdHlwaWQgPSB0eXBlbmFtZVR5cGVJZChjeHQtPnBz dGF0ZSwgY29sLT50eXBlTmFtZSk7CisJCQlicmVhazsKKwkJfQorCX0KKwlpZiAoY29sdHlw aWQgPT0gSW52YWxpZE9pZCkKKwkJZXJlcG9ydChFUlJPUiwgKGVycm1zZygiY29sdW1uIFwi JXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJcGVyaW9k LT5zdGFydGNvbG5hbWUsIGN4dC0+cmVsYXRpb24tPnJlbG5hbWUpKSk7CisKKwlwZXJpb2Qt PmNvbHR5cGlkID0gY29sdHlwaWQ7CisKKwkvKiBOb3cgbWFrZSBzdXJlIGl0IG1hdGNoZXMg cmFuZ2V0eXBlbmFtZSBvciB3ZSBjYW4gZmluZCBhIG1hdGNoaW5nIHJhbmdlICovCisJcGVy aW9kLT5ybmd0eXBpZCA9IGNob29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChwZXJpb2QpOwor I2VuZGlmCisKKwljeHQtPnBlcmlvZHMgPSBsYXBwZW5kKGN4dC0+cGVyaW9kcywgcGVyaW9k KTsKK30KKwogLyoKICAqIHRyYW5zZm9ybVRhYmxlQ29uc3RyYWludAogICoJCXRyYW5zZm9y bSBhIENvbnN0cmFpbnQgbm9kZSB3aXRoaW4gQ1JFQVRFIFRBQkxFIG9yIEFMVEVSIFRBQkxF CkBAIC0xMDAzLDYgKzExMjAsNyBAQCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1c2UoQ3JlYXRl U3RtdENvbnRleHQgKmN4dCwgVGFibGVMaWtlQ2xhdXNlICp0YWJsZV9saWtlX2NsYQogCUF0 dHJOdW1iZXIJcGFyZW50X2F0dG5vOwogCVJlbGF0aW9uCXJlbGF0aW9uOwogCVR1cGxlRGVz Ywl0dXBsZURlc2M7CisJQml0bWFwc2V0ICAqcGVyaW9kYXR0czsKIAlBY2xSZXN1bHQJYWNs cmVzdWx0OwogCWNoYXIJICAgKmNvbW1lbnQ7CiAJUGFyc2VDYWxsYmFja1N0YXRlIHBjYnN0 YXRlOwpAQCAtMTA1NSw2ICsxMTczLDcgQEAgdHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNlKENy ZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAqdGFibGVfbGlrZV9jbGEK IAl9CiAKIAl0dXBsZURlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKTsKKwlwZXJp b2RhdHRzID0gZ2V0X3BlcmlvZF9hdHRub3MoUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbikp OwogCiAJLyoKIAkgKiBJbnNlcnQgdGhlIGNvcGllZCBhdHRyaWJ1dGVzIGludG8gdGhlIGN4 dCBmb3IgdGhlIG5ldyB0YWJsZSBkZWZpbml0aW9uLgpAQCAtMTA2NCwxMCArMTE4MywxOCBA QCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1c2UoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgVGFi bGVMaWtlQ2xhdXNlICp0YWJsZV9saWtlX2NsYQogCWZvciAocGFyZW50X2F0dG5vID0gMTsg cGFyZW50X2F0dG5vIDw9IHR1cGxlRGVzYy0+bmF0dHM7CiAJCSBwYXJlbnRfYXR0bm8rKykK IAl7Ci0JCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJpYnV0ZSA9IFR1cGxlRGVzY0F0dHIodHVw bGVEZXNjLAotCQkJCQkJCQkJCQkJCXBhcmVudF9hdHRubyAtIDEpOworCQlGb3JtX3BnX2F0 dHJpYnV0ZSBhdHRyaWJ1dGU7CiAJCUNvbHVtbkRlZiAgKmRlZjsKIAorCQkvKgorCQkgKiBJ ZiB0aGlzIGNvbHVtbiBpcyBmcm9tIGEgUEVSSU9ELCBza2lwIGl0CisJCSAqIChzaW5jZSBM SUtFIG5ldmVyIGNvcGllcyBQRVJJT0RzKS4KKwkJICovCisJCWlmIChibXNfaXNfbWVtYmVy KHBhcmVudF9hdHRubywgcGVyaW9kYXR0cykpCisJCQljb250aW51ZTsKKworCQlhdHRyaWJ1 dGUgPSBUdXBsZURlc2NBdHRyKHR1cGxlRGVzYywgcGFyZW50X2F0dG5vIC0gMSk7CisKIAkJ LyoKIAkJICogSWdub3JlIGRyb3BwZWQgY29sdW1ucyBpbiB0aGUgcGFyZW50LgogCQkgKi8K QEAgLTMwNDcsNiArMzE3NCwxMCBAQCB0cmFuc2Zvcm1JbmRleFN0bXQoT2lkIHJlbGlkLCBJ bmRleFN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCQl9CiAJfQogCisJ LyogdGFrZSBjYXJlIG9mIHRoZSBwZXJpb2QgKi8KKwlpZiAoc3RtdC0+cGVyaW9kKQorCQlz dG10LT5wZXJpb2QtPm9pZCA9IGdldF9wZXJpb2Rfb2lkKHJlbGlkLCBzdG10LT5wZXJpb2Qt PnBlcmlvZG5hbWUsIGZhbHNlKTsKKwogCS8qCiAJICogQ2hlY2sgdGhhdCBvbmx5IHRoZSBi YXNlIHJlbCBpcyBtZW50aW9uZWQuICAoVGhpcyBzaG91bGQgYmUgZGVhZCBjb2RlCiAJICog bm93IHRoYXQgYWRkX21pc3NpbmdfZnJvbSBpcyBoaXN0b3J5LikKQEAgLTM1MDQsNiArMzYz NSw3IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0 bXQgKnN0bXQsCiAJY3h0LmluaFJlbGF0aW9ucyA9IE5JTDsKIAljeHQuaXNhbHRlciA9IHRy dWU7CiAJY3h0LmNvbHVtbnMgPSBOSUw7CisJY3h0LnBlcmlvZHMgPSBOSUw7CiAJY3h0LmNr Y29uc3RyYWludHMgPSBOSUw7CiAJY3h0Lm5uY29uc3RyYWludHMgPSBOSUw7CiAJY3h0LmZr Y29uc3RyYWludHMgPSBOSUw7CkBAIC0zNTY2LDYgKzM2OTgsMTUgQEAgdHJhbnNmb3JtQWx0 ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3RtdCwKIAkJCQkJCSAo aW50KSBub2RlVGFnKGNtZC0+ZGVmKSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfQWRk UGVyaW9kOgorCQkJCXsKKwkJCQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3Y21kcywgY21kKTsK KwkJCQkJLy8gV2h5IG5vdCBjYWxsIHRyYW5zZm9ybVRhYmxlUGVyaW9kIGhlcmU/CisJCQkJ CS8vIEFoIGJlY2F1c2UgaXQgbG9va3MgYXQgY3h0LT5jb2x1bW5zCisJCQkJCS8vIGFuZCBp biBhbiBBTFRFUiBzdGF0ZW1lbnQgdGhlIGNvbHVtbnMgbWlnaHQgYWxyZWFkeSBleGlzdCAo b3Igbm90KS4KKwkJCQkJYnJlYWs7CisJCQkJfQorCiAJCQljYXNlIEFUX0FsdGVyQ29sdW1u VHlwZToKIAkJCQl7CiAJCQkJCUNvbHVtbkRlZiAgKmRlZiA9IGNhc3ROb2RlKENvbHVtbkRl ZiwgY21kLT5kZWYpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5 c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCBk YjI0NWU2NWFkLi4xMmFjNjg5YTFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2Fj aGUuYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19yYW5nZS5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljLmgiCkBAIC0xMDIxLDYgKzEwMjIs NjggQEAgZ2V0X2F0dG9wdGlvbnMoT2lkIHJlbGlkLCBpbnQxNiBhdHRudW0pCiAJcmV0dXJu IHJlc3VsdDsKIH0KIAorLyoJCQkJLS0tLS0tLS0tLSBQR19QRVJJT0QgQ0FDSEUgLS0tLS0t LS0tLQkJCQkgKi8KKworLyoKKyAqIGdldF9wZXJpb2RuYW1lIC0gZ2l2ZW4gaXRzIE9JRCwg bG9vayB1cCBhIHBlcmlvZAorICoKKyAqIElmIG1pc3Npbmdfb2sgaXMgZmFsc2UsIHRocm93 IGFuIGVycm9yIGlmIHRoZSBwZXJpb2QgaXMgbm90IGZvdW5kLgorICogSWYgdHJ1ZSwganVz dCByZXR1cm4gSW52YWxpZE9pZC4KKyAqLworY2hhciAqCitnZXRfcGVyaW9kbmFtZShPaWQg cGVyaW9kaWQsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlIZWFwVHVwbGUJdHA7CisKKwl0cCA9 IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShw ZXJpb2RpZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJCUZvcm1fcGdf cGVyaW9kIHBlcmlvZF90dXAgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVCh0cCk7CisJ CWNoYXIJICAgKnJlc3VsdDsKKworCQlyZXN1bHQgPSBwc3RyZHVwKE5hbWVTdHIocGVyaW9k X3R1cC0+cGVybmFtZSkpOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQlyZXR1cm4gcmVz dWx0OworCX0KKworCWlmICghbWlzc2luZ19vaykKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAlZCIsCisJCQkgcGVyaW9kaWQpOworCXJldHVybiBO VUxMOworfQorCisvKgorICogZ2V0X3BlcmlvZF9vaWQgLSBnZXRzIGl0cyByZWxhdGlvbiBh bmQgbmFtZSwgbG9vayB1cCBhIHBlcmlvZAorICoKKyAqIElmIG1pc3Npbmdfb2sgaXMgZmFs c2UsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYXN0IGlzIG5vdCBmb3VuZC4gIElmCisgKiB0 cnVlLCBqdXN0IHJldHVybiBJbnZhbGlkT2lkLgorICovCitPaWQKK2dldF9wZXJpb2Rfb2lk KE9pZCByZWxpZCwgY29uc3QgY2hhciAqcGVyaW9kbmFtZSwgYm9vbCBtaXNzaW5nX29rKQor eworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUs CisJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCisJCQkJCQkgUG9pbnRlckdldERh dHVtKHBlcmlvZG5hbWUpKTsKKworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJ CUZvcm1fcGdfcGVyaW9kIHBlcmlvZF90dXAgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVD VCh0cCk7CisJCU9pZCByZXN1bHQ7CisKKwkJcmVzdWx0ID0gcGVyaW9kX3R1cC0+b2lkOwor CQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQlyZXR1cm4gcmVzdWx0OworCX0KKworCWlmICgh bWlzc2luZ19vaykKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBl cmlvZCAlcyIsCisJCQkgcGVyaW9kbmFtZSk7CisJcmV0dXJuIEludmFsaWRPaWQ7Cit9CisK IC8qCQkJCS0tLS0tLS0tLS0gUEdfQ0FTVCBDQUNIRSAtLS0tLS0tLS0tCQkJCQkgKi8KIAog LyoKQEAgLTM1MzMsNiArMzU5NiwzMCBAQCBnZXRfbXVsdGlyYW5nZV9yYW5nZShPaWQgbXVs dGlyYW5nZU9pZCkKIAkJcmV0dXJuIEludmFsaWRPaWQ7CiB9CiAKK09pZAorZ2V0X3N1YnR5 cGVfcmFuZ2UoT2lkIHN1YnR5cGVPaWQpCit7CisJQ2F0Q0xpc3QgKmNhdGxpc3Q7CisJT2lk CXJlc3VsdCA9IEludmFsaWRPaWQ7CisKKwljYXRsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0 MShSQU5HRVNVQlRZUEUsIE9iamVjdElkR2V0RGF0dW0oc3VidHlwZU9pZCkpOworCisJaWYg KGNhdGxpc3QtPm5fbWVtYmVycyA9PSAxKQorCXsKKwkJSGVhcFR1cGxlCXR1cGxlID0gJmNh dGxpc3QtPm1lbWJlcnNbMF0tPnR1cGxlOworCQlGb3JtX3BnX3JhbmdlIHJuZ3R1cCA9IChG b3JtX3BnX3JhbmdlKSBHRVRTVFJVQ1QodHVwbGUpOworCQlyZXN1bHQgPSBybmd0dXAtPnJu Z3R5cGlkOworCQlSZWxlYXNlQ2F0Q2FjaGVMaXN0KGNhdGxpc3QpOworCX0KKwllbHNlIGlm IChjYXRsaXN0LT5uX21lbWJlcnMgPiAxKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfSU5ERVRFUk1JTkFURV9EQVRBVFlQRSksCisJCQkJIGVycm1zZygiYW1i aWd1b3VzIHJhbmdlIGZvciB0eXBlICVzIiwKKwkJCQkJCWZvcm1hdF90eXBlX2JlKHN1YnR5 cGVPaWQpKSkpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoJCQkJLS0tLS0tLS0tLSBQ R19JTkRFWCBDQUNIRSAtLS0tLS0tLS0tCQkJCSAqLwogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3N5c2NhY2hlLmMKaW5kZXggOGRiZGEwMDI0Zi4uNDRlNjM2ZTViZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19vcGZhbWlseS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFyYW1ldGVy X2FjbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFydGl0aW9uZWRfdGFibGUuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJv Yy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24uaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5oIgpAQCAtNDIyLDYgKzQyMywxOSBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGNhY2hlZGVzYyBjYWNoZWluZm9bXSA9IHsKIAkJS0VZ KEFudW1fcGdfcGFydGl0aW9uZWRfdGFibGVfcGFydHJlbGlkKSwKIAkJMzIKIAl9LAorCVtQ RVJJT0ROQU1FXSA9IHsKKwkJUGVyaW9kUmVsYXRpb25JZCwKKwkJUGVyaW9kUmVsaWROYW1l SW5kZXhJZCwKKwkJS0VZKEFudW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJQW51bV9wZ19w ZXJpb2RfcGVybmFtZSksCisJCTMyCisJfSwKKwlbUEVSSU9ET0lEXSA9IHsKKwkJUGVyaW9k UmVsYXRpb25JZCwKKwkJUGVyaW9kT2JqZWN0SW5kZXhJZCwKKwkJS0VZKEFudW1fcGdfcGVy aW9kX29pZCksCisJCTMyCisJfSwKIAlbUFJPQ05BTUVBUkdTTlNQXSA9IHsKIAkJUHJvY2Vk dXJlUmVsYXRpb25JZCwKIAkJUHJvY2VkdXJlTmFtZUFyZ3NOc3BJbmRleElkLApAQCAtNDgw LDYgKzQ5NCwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNhY2hlZGVzYyBjYWNoZWluZm9b XSA9IHsKIAkJS0VZKEFudW1fcGdfcmFuZ2Vfcm5nbXVsdGl0eXBpZCksCiAJCTQKIAl9LAor CVtSQU5HRVNVQlRZUEVdID0geworCQlSYW5nZVJlbGF0aW9uSWQsCisJCVJhbmdlU3ViVHlw aWRUeXBpZEluZGV4SWQsCisJCUtFWShBbnVtX3BnX3JhbmdlX3JuZ3N1YnR5cGUsCisJCQlB bnVtX3BnX3JhbmdlX3JuZ3R5cGlkKSwKKwkJNAorCX0sCiAJW1JBTkdFVFlQRV0gPSB7CiAJ CVJhbmdlUmVsYXRpb25JZCwKIAkJUmFuZ2VUeXBpZEluZGV4SWQsCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1bXAv cGdfYmFja3VwX2FyY2hpdmVyLmMKaW5kZXggMjU2ZDFlMzVhNC4uMGEyNjk2YzU1OSAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCisrKyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwpAQCAtMzUxOCw2ICszNTE4LDcg QEAgX2dldE9iamVjdERlc2NyaXB0aW9uKFBRRXhwQnVmZmVyIGJ1ZiwgY29uc3QgVG9jRW50 cnkgKnRlKQogCQkJIHN0cmNtcCh0eXBlLCAiREFUQUJBU0UgUFJPUEVSVElFUyIpID09IDAg fHwKIAkJCSBzdHJjbXAodHlwZSwgIkRFRkFVTFQiKSA9PSAwIHx8CiAJCQkgc3RyY21wKHR5 cGUsICJGSyBDT05TVFJBSU5UIikgPT0gMCB8fAorCQkJIHN0cmNtcCh0eXBlLCAiUEVSSU9E IikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiSU5ERVgiKSA9PSAwIHx8CiAJCQkgc3Ry Y21wKHR5cGUsICJSVUxFIikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiVFJJR0dFUiIp ID09IDAgfHwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDE3MDkwMDdkYzYuLjE2ODI2NGM2ZWQgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYwpAQCAtNjM1Miw2ICs2MzUyLDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUg KmZvdXQsIGludCAqbnVtVGFibGVzKQogCWludAkJCWlfcmVsdHlwZTsKIAlpbnQJCQlpX3Jl bG93bmVyOwogCWludAkJCWlfcmVsY2hlY2tzOworCWludAkJCWlfbnBlcmlvZDsKIAlpbnQJ CQlpX3JlbGhhc2luZGV4OwogCWludAkJCWlfcmVsaGFzcnVsZXM7CiAJaW50CQkJaV9yZWxw YWdlczsKQEAgLTY0MjksNiArNjQzMCwxNCBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwg aW50ICpudW1UYWJsZXMpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJ CSAiYy5yZWxoYXNvaWRzLCAiKTsKIAorCS8qIEluIFBHMTYgdXB3YXJkcyB3ZSBoYXZlIFBF UklPRHMuICovCisJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTYwMDAwKQorCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIihTRUxFQ1QgY291bnQoKikgRlJP TSBwZ19wZXJpb2QgV0hFUkUgcGVycmVsaWQgPSBjLm9pZCkgQVMgbnBlcmlvZHMsICIpOwor CWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJICIwIEFTIG5w ZXJpb2RzLCAiKTsKKwogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDkwMzAwKQogCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgImMucmVsaXNwb3B1bGF0ZWQs ICIpOwpAQCAtNjU2Niw2ICs2NTc1LDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGlu dCAqbnVtVGFibGVzKQogCWlfcmVsdHlwZSA9IFBRZm51bWJlcihyZXMsICJyZWx0eXBlIik7 CiAJaV9yZWxvd25lciA9IFBRZm51bWJlcihyZXMsICJyZWxvd25lciIpOwogCWlfcmVsY2hl Y2tzID0gUFFmbnVtYmVyKHJlcywgInJlbGNoZWNrcyIpOworCWlfbnBlcmlvZCA9IFBRZm51 bWJlcihyZXMsICJucGVyaW9kcyIpOwogCWlfcmVsaGFzaW5kZXggPSBQUWZudW1iZXIocmVz LCAicmVsaGFzaW5kZXgiKTsKIAlpX3JlbGhhc3J1bGVzID0gUFFmbnVtYmVyKHJlcywgInJl bGhhc3J1bGVzIik7CiAJaV9yZWxwYWdlcyA9IFBRZm51bWJlcihyZXMsICJyZWxwYWdlcyIp OwpAQCAtNjY0OSw2ICs2NjU5LDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAq bnVtVGFibGVzKQogCQl9CiAJCXRibGluZm9baV0ucmVsdGFibGVzcGFjZSA9IHBnX3N0cmR1 cChQUWdldHZhbHVlKHJlcywgaSwgaV9yZWx0YWJsZXNwYWNlKSk7CiAJCXRibGluZm9baV0u aGFzb2lkcyA9IChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcmVsaGFzb2lkcyksICJ0 IikgPT0gMCk7CisJCXRibGluZm9baV0ubnBlcmlvZCA9IGF0b2koUFFnZXR2YWx1ZShyZXMs IGksIGlfbnBlcmlvZCkpOwogCQl0YmxpbmZvW2ldLmhhc3RyaWdnZXJzID0gKHN0cmNtcChQ UWdldHZhbHVlKHJlcywgaSwgaV9yZWxoYXN0cmlnZ2VycyksICJ0IikgPT0gMCk7CiAJCXRi bGluZm9baV0ucmVscGVyc2lzdGVuY2UgPSAqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbHBl cnNpc3RlbmNlKSk7CiAJCXRibGluZm9baV0ucmVsaXNwb3B1bGF0ZWQgPSAoc3RyY21wKFBR Z2V0dmFsdWUocmVzLCBpLCBpX3JlbGlzcG9wdWxhdGVkKSwgInQiKSA9PSAwKTsKQEAgLTgz ODMsNyArODM5NCw3IEBAIGdldFRyYW5zZm9ybXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1U cmFuc2Zvcm1zKQogLyoKICAqIGdldFRhYmxlQXR0cnMgLQogICoJICBmb3IgZWFjaCBpbnRl cmVzdGluZyB0YWJsZSwgcmVhZCBpbmZvIGFib3V0IGl0cyBhdHRyaWJ1dGVzCi0gKgkgIChu YW1lcywgdHlwZXMsIGRlZmF1bHQgdmFsdWVzLCBDSEVDSyBjb25zdHJhaW50cywgZXRjKQor ICoJICAobmFtZXMsIHR5cGVzLCBkZWZhdWx0IHZhbHVlcywgQ0hFQ0sgY29uc3RyYWludHMs IFBFUklPRHMsIGV0YykKICAqCiAgKgltb2RpZmllcyB0YmxpbmZvCiAgKi8KQEAgLTg0MzYs NiArODQ0Nyw4IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0 YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGFibGVz OyBpKyspCiAJewogCQlUYWJsZUluZm8gICp0YmluZm8gPSAmdGJsaW5mb1tpXTsKKwkJaW50 CQkJbmR1bXBhYmxlY2hlY2tzOwkvKiBudW1iZXIgb2YgQ0hFQ0sgY29uc3RyYWludHMgdGhh dCBkbworCQkJCQkJCQkJCSAgIG5vdCBiZWxvbmcgdG8gYSBwZXJpb2QgKi8KIAogCQkvKiBE b24ndCBib3RoZXIgdG8gY29sbGVjdCBpbmZvIGZvciBzZXF1ZW5jZXMgKi8KIAkJaWYgKHRi aW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFKQpAQCAtODQ1MCw3ICs4NDYzLDgg QEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGlu dCBudW1UYWJsZXMpCiAJCQlhcHBlbmRQUUV4cEJ1ZmZlckNoYXIodGJsb2lkcywgJywnKTsK IAkJYXBwZW5kUFFFeHBCdWZmZXIodGJsb2lkcywgIiV1IiwgdGJpbmZvLT5kb2JqLmNhdElk Lm9pZCk7CiAKLQkJaWYgKHRiaW5mby0+bmNoZWNrID4gMCkKKwkJbmR1bXBhYmxlY2hlY2tz ID0gdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7CisJCWlmIChuZHVtcGFibGVj aGVja3MgPiAwKQogCQl7CiAJCQkvKiBBbHNvIG1ha2UgYSBsaXN0IG9mIHRoZSBvbmVzIHdp dGggY2hlY2sgY29uc3RyYWludHMgKi8KIAkJCWlmIChjaGVja29pZHMtPmxlbiA+IDEpIC8q IGRvIHdlIGhhdmUgbW9yZSB0aGFuIHRoZSAneyc/ICovCkBAIC04OTg2LDE1ICs5MDAwLDM2 IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBp bnQgbnVtVGFibGVzKQogCQlwZ19sb2dfaW5mbygiZmluZGluZyB0YWJsZSBjaGVjayBjb25z dHJhaW50cyIpOwogCiAJCXJlc2V0UFFFeHBCdWZmZXIocSk7Ci0JCWFwcGVuZFBRRXhwQnVm ZmVyKHEsCi0JCQkJCQkgICJTRUxFQ1QgYy50YWJsZW9pZCwgYy5vaWQsIGNvbnJlbGlkLCBj b25uYW1lLCAiCi0JCQkJCQkgICJwZ19jYXRhbG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKGMu b2lkKSBBUyBjb25zcmMsICIKLQkJCQkJCSAgImNvbmlzbG9jYWwsIGNvbnZhbGlkYXRlZCAi Ci0JCQkJCQkgICJGUk9NIHVubmVzdCgnJXMnOjpwZ19jYXRhbG9nLm9pZFtdKSBBUyBzcmMo dGJsb2lkKVxuIgotCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgYyBP TiAoc3JjLnRibG9pZCA9IGMuY29ucmVsaWQpXG4iCi0JCQkJCQkgICJXSEVSRSBjb250eXBl ID0gJ2MnICIKLQkJCQkJCSAgIk9SREVSIEJZIGMuY29ucmVsaWQsIGMuY29ubmFtZSIsCi0J CQkJCQkgIGNoZWNrb2lkcy0+ZGF0YSk7CisJCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49 IDE2MDAwMCkKKwkJeworCQkJLyoKKwkJCSAqIFBFUklPRHMgd2VyZSBhZGRlZCBpbiB2MTcg YW5kIHdlIGRvbid0IGR1bXAgQ0hFQ0sKKwkJCSAqIGNvbnN0cmFpbnRzIGZvciB0aGVtLgor CQkJICovCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLAorCQkJCQkJCSAgIlNFTEVDVCBjLnRh Ymxlb2lkLCBjLm9pZCwgY29ucmVsaWQsIGNvbm5hbWUsICIKKwkJCQkJCQkgICJwZ19jYXRh bG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKGMub2lkKSBBUyBjb25zcmMsICIKKwkJCQkJCQkg ICJjb25pc2xvY2FsLCBjb252YWxpZGF0ZWQgIgorCQkJCQkJCSAgIkZST00gdW5uZXN0KCcl cyc6OnBnX2NhdGFsb2cub2lkW10pIEFTIHNyYyh0YmxvaWQpXG4iCisJCQkJCQkJICAiSk9J TiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgYyBPTiAoc3JjLnRibG9pZCA9IGMuY29ucmVs aWQpXG4iCisJCQkJCQkJICAiV0hFUkUgY29udHlwZSA9ICdjJyAiCisJCQkJCQkJICAiICAg QU5EIE5PVCBFWElTVFMgKFNFTEVDVCBGUk9NIHBnX3BlcmlvZCAiCisJCQkJCQkJICAiICAg ICAgICAgICAgICAgICAgIFdIRVJFIChwZXJyZWxpZCwgcGVyY29uc3RyYWludCkgPSAoY29u cmVsaWQsIGMub2lkKSkgIgorCQkJCQkJCSAgIk9SREVSIEJZIGMuY29ucmVsaWQsIGMuY29u bmFtZSIsCisJCQkJCQkJICBjaGVja29pZHMtPmRhdGEpOworCQl9CisJCWVsc2UKKwkJewor CQkJYXBwZW5kUFFFeHBCdWZmZXIocSwKKwkJCQkJCQkgICJTRUxFQ1QgYy50YWJsZW9pZCwg Yy5vaWQsIGNvbnJlbGlkLCBjb25uYW1lLCAiCisJCQkJCQkJICAicGdfY2F0YWxvZy5wZ19n ZXRfY29uc3RyYWludGRlZihjLm9pZCkgQVMgY29uc3JjLCAiCisJCQkJCQkJICAiY29uaXNs b2NhbCwgY29udmFsaWRhdGVkICIKKwkJCQkJCQkgICJGUk9NIHVubmVzdCgnJXMnOjpwZ19j YXRhbG9nLm9pZFtdKSBBUyBzcmModGJsb2lkKVxuIgorCQkJCQkJCSAgIkpPSU4gcGdfY2F0 YWxvZy5wZ19jb25zdHJhaW50IGMgT04gKHNyYy50YmxvaWQgPSBjLmNvbnJlbGlkKVxuIgor CQkJCQkJCSAgIldIRVJFIGNvbnR5cGUgPSAnYycgIgorCQkJCQkJCSAgIk9SREVSIEJZIGMu Y29ucmVsaWQsIGMuY29ubmFtZSIsCisJCQkJCQkJICBjaGVja29pZHMtPmRhdGEpOworCQl9 CiAKIAkJcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHEtPmRhdGEsIFBHUkVTX1RVUExF U19PSyk7CiAKQEAgLTkwMTYsNiArOTA1MSw3IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAq Zm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJT2lkCQkJY29u cmVsaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGosIGlfY29ucmVsaWQpKTsKIAkJCVRh YmxlSW5mbyAgKnRiaW5mbyA9IE5VTEw7CiAJCQlpbnQJCQludW1jb25zOworCQkJaW50CQkJ bmR1bXBhYmxlY2hlY2tzOwogCiAJCQkvKiBDb3VudCByb3dzIGZvciB0aGlzIHRhYmxlICov CiAJCQlmb3IgKG51bWNvbnMgPSAxOyBudW1jb25zIDwgbnVtQ29uc3RycyAtIGo7IG51bWNv bnMrKykKQEAgLTkwMzUsMTIgKzkwNzEsMTMgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpm b3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCQlpZiAoY3VydGJs aW5keCA+PSBudW1UYWJsZXMpCiAJCQkJcGdfZmF0YWwoInVucmVjb2duaXplZCB0YWJsZSBP SUQgJXUiLCBjb25yZWxpZCk7CiAKLQkJCWlmIChudW1jb25zICE9IHRiaW5mby0+bmNoZWNr KQorCQkJbmR1bXBhYmxlY2hlY2tzID0gdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJp b2Q7CisJCQlpZiAobnVtY29ucyAhPSBuZHVtcGFibGVjaGVja3MpCiAJCQl7CiAJCQkJcGdf bG9nX2Vycm9yKG5nZXR0ZXh0KCJleHBlY3RlZCAlZCBjaGVjayBjb25zdHJhaW50IG9uIHRh YmxlIFwiJXNcIiBidXQgZm91bmQgJWQiLAogCQkJCQkJCQkJICAiZXhwZWN0ZWQgJWQgY2hl Y2sgY29uc3RyYWludHMgb24gdGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZCIsCi0JCQkJCQkJ CQkgIHRiaW5mby0+bmNoZWNrKSwKLQkJCQkJCQkgdGJpbmZvLT5uY2hlY2ssIHRiaW5mby0+ ZG9iai5uYW1lLCBudW1jb25zKTsKKwkJCQkJCQkJCSAgbmR1bXBhYmxlY2hlY2tzKSwKKwkJ CQkJCQkgbmR1bXBhYmxlY2hlY2tzLCB0YmluZm8tPmRvYmoubmFtZSwgbnVtY29ucyk7CiAJ CQkJcGdfbG9nX2Vycm9yX2hpbnQoIlRoZSBzeXN0ZW0gY2F0YWxvZ3MgbWlnaHQgYmUgY29y cnVwdGVkLiIpOwogCQkJCWV4aXRfbmljZWx5KDEpOwogCQkJfQpAQCAtOTA5OSw2ICs5MTM2 LDc5IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZv LCBpbnQgbnVtVGFibGVzKQogCQlQUWNsZWFyKHJlcyk7CiAJfQogCisJZm9yIChpbnQgaSA9 IDA7IGkgPCBudW1UYWJsZXM7IGkrKykKKwl7CisJCVRhYmxlSW5mbyAgKnRiaW5mbyA9ICZ0 YmxpbmZvW2ldOworCisJCS8qCisJCSAqIEdldCBpbmZvIGFib3V0IFBFUklPRCBkZWZpbml0 aW9ucworCQkgKi8KKwkJaWYgKHRiaW5mby0+bnBlcmlvZCA+IDApCisJCXsKKwkJCVBlcmlv ZEluZm8gKnBlcmlvZHM7CisJCQlpbnQJCQludW1QZXJpb2RzOworCQkJaW50CQkJajsKKwor CQkJLyogV2Ugc2hvdWxkbid0IGhhdmUgYW55IHBlcmlvZHMgYmVmb3JlIHYxNyAqLworCQkJ QXNzZXJ0KGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTYwMDAwKTsKKworCQkJcGdfbG9nX2lu Zm8oImZpbmRpbmcgcGVyaW9kcyBmb3IgdGFibGUgXCIlcy4lc1wiIiwKKwkJCQkJCXRiaW5m by0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJCXRiaW5mby0+ZG9iai5uYW1l KTsKKworCQkJcmVzZXRQUUV4cEJ1ZmZlcihxKTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHEs CisJCQkJIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wZXJuYW1lLCAiCisJCQkJIiAg ICAgICBzYS5hdHRuYW1lIEFTIHBlcnN0YXJ0LCBlYS5hdHRuYW1lIEFTIHBlcmVuZCwgIgor CQkJCSIgICAgICAgci50eXBuYW1lIEFTIHJuZ3R5cGUsICIKKwkJCQkiICAgICAgIGMuY29u bmFtZSBBUyBjb25uYW1lICIKKwkJCQkiRlJPTSBwZ19jYXRhbG9nLnBnX3BlcmlvZCBBUyBw ICIKKwkJCQkiSk9JTiBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBBUyBzYSBPTiAoc2EuYXR0 cmVsaWQsIHNhLmF0dG51bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJzdGFydCkgIgorCQkJCSJK T0lOIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIEFTIGVhIE9OIChlYS5hdHRyZWxpZCwgZWEu YXR0bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcmVuZCkgIgorCQkJCSJKT0lOIHBnX2NhdGFs b2cucGdfdHlwZSBBUyByIE9OIHIub2lkID0gcC5wZXJybmd0eXBlICIKKwkJCQkiSk9JTiBw Z19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgQVMgYyBPTiBjLm9pZCA9IHAucGVyY29uc3RyYWlu dCAiCisJCQkJIldIRVJFIHAucGVycmVsaWQgPSAnJXUnOjpwZ19jYXRhbG9nLm9pZCAiCisJ CQkJIk9SREVSIEJZIHAucGVybmFtZSIsCisJCQkJdGJpbmZvLT5kb2JqLmNhdElkLm9pZCk7 CisKKwkJCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxLT5kYXRhLCBQR1JFU19UVVBM RVNfT0spOworCisJCQkvKgorCQkJICogSWYgd2UgZGlkbid0IGdldCB0aGUgbnVtYmVyIG9m IHJvd3Mgd2UgdGhvdWdodCB3ZSB3ZXJlIGdvaW5nIHRvLAorCQkJICogdGhlbiB0aG9zZSBK T0lOcyBkaWRuJ3Qgd29yay4KKwkJCSAqLworCQkJbnVtUGVyaW9kcyA9IFBRbnR1cGxlcyhy ZXMpOworCQkJaWYgKG51bVBlcmlvZHMgIT0gdGJpbmZvLT5ucGVyaW9kKQorCQkJeworCQkJ CXBnX2xvZ19pbmZvKG5nZXR0ZXh0KCJleHBlY3RlZCAlZCBwZXJpb2Qgb24gdGFibGUgXCIl c1wiIGJ1dCBmb3VuZCAlZCIsCisJCQkJCQkJCQkgImV4cGVjdGVkICVkIHBlcmlvZHMgb24g dGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZCIsCisJCQkJCQkJCQkgdGJpbmZvLT5ucGVyaW9k KSwKKwkJCQkJCQl0YmluZm8tPm5wZXJpb2QsIHRiaW5mby0+ZG9iai5uYW1lLCBudW1QZXJp b2RzKTsKKwkJCQlwZ19sb2dfaW5mbygiKFRoZSBzeXN0ZW0gY2F0YWxvZ3MgbWlnaHQgYmUg Y29ycnVwdGVkLikiKTsKKwkJCQlleGl0X25pY2VseSgxKTsKKwkJCX0KKworCQkJcGVyaW9k cyA9IChQZXJpb2RJbmZvICopIHBnX21hbGxvYyhudW1QZXJpb2RzICogc2l6ZW9mKFBlcmlv ZEluZm8pKTsKKwkJCXRiaW5mby0+cGVyaW9kcyA9IHBlcmlvZHM7CisKKwkJCWZvciAoaiA9 IDA7IGogPCBudW1QZXJpb2RzOyBqKyspCisJCQl7CisJCQkJcGVyaW9kc1tqXS5kb2JqLm9i alR5cGUgPSBET19QRVJJT0Q7CisJCQkJcGVyaW9kc1tqXS5kb2JqLmNhdElkLnRhYmxlb2lk ID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBqLCAwKSk7CisJCQkJcGVyaW9kc1tqXS5kb2Jq LmNhdElkLm9pZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaiwgMSkpOworCQkJCUFzc2ln bkR1bXBJZCgmcGVyaW9kc1tqXS5kb2JqKTsKKwkJCQlwZXJpb2RzW2pdLmRvYmoubmFtZSA9 IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaiwgMikpOworCQkJCXBlcmlvZHNbal0uZG9i ai5uYW1lc3BhY2UgPSB0YmluZm8tPmRvYmoubmFtZXNwYWNlOworCQkJCXBlcmlvZHNbal0u cGVydGFibGUgPSB0YmluZm87CisJCQkJcGVyaW9kc1tqXS5wZXJzdGFydCA9IHBnX3N0cmR1 cChQUWdldHZhbHVlKHJlcywgaiwgMykpOworCQkJCXBlcmlvZHNbal0ucGVyZW5kID0gcGdf c3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBqLCA0KSk7CisJCQkJcGVyaW9kc1tqXS5ybmd0eXBl ID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBqLCA1KSk7CisJCQkJcGVyaW9kc1tqXS5j b25uYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBqLCA2KSk7CisJCQl9CisJCQlQ UWNsZWFyKHJlcyk7CisJCX0KKwl9CisKIAlkZXN0cm95UFFFeHBCdWZmZXIocSk7CiAJZGVz dHJveVBRRXhwQnVmZmVyKHRibG9pZHMpOwogCWRlc3Ryb3lQUUV4cEJ1ZmZlcihjaGVja29p ZHMpOwpAQCAtMTAzNjksNiArMTA0NzksOCBAQCBkdW1wRHVtcGFibGVPYmplY3QoQXJjaGl2 ZSAqZm91dCwgRHVtcGFibGVPYmplY3QgKmRvYmopCiAJCWNhc2UgRE9fRktfQ09OU1RSQUlO VDoKIAkJCWR1bXBDb25zdHJhaW50KGZvdXQsIChjb25zdCBDb25zdHJhaW50SW5mbyAqKSBk b2JqKTsKIAkJCWJyZWFrOworCQljYXNlIERPX1BFUklPRDoKKwkJCWJyZWFrOwogCQljYXNl IERPX1BST0NMQU5HOgogCQkJZHVtcFByb2NMYW5nKGZvdXQsIChjb25zdCBQcm9jTGFuZ0lu Zm8gKikgZG9iaik7CiAJCQlicmVhazsKQEAgLTE1OTA0LDYgKzE2MDE2LDMyIEBAIGR1bXBU YWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBjb25zdCBUYWJsZUluZm8gKnRiaW5mbykKIAkJ CQl9CiAJCQl9CiAKKwkJCS8qCisJCQkgKiBBZGQgbm9uLWluaGVyaXRlZCBQRVJJT0QgZGVm aW5pdGlvbnMsIGlmIGFueS4KKwkJCSAqLworCQkJZm9yIChqID0gMDsgaiA8IHRiaW5mby0+ bnBlcmlvZDsgaisrKQorCQkJeworCQkJCVBlcmlvZEluZm8gKnBlcmlvZCA9ICYodGJpbmZv LT5wZXJpb2RzW2pdKTsKKworCQkJCWNoYXIJICAgKm5hbWUgPSBwZ19zdHJkdXAoZm10SWQo cGVyaW9kLT5kb2JqLm5hbWUpKTsKKwkJCQljaGFyCSAgICpzdGFydCA9IHBnX3N0cmR1cChm bXRJZChwZXJpb2QtPnBlcnN0YXJ0KSk7CisJCQkJY2hhcgkgICAqZW5kID0gcGdfc3RyZHVw KGZtdElkKHBlcmlvZC0+cGVyZW5kKSk7CisJCQkJY2hhcgkgICAqcm5ndHlwZSA9IHBnX3N0 cmR1cChmbXRJZChwZXJpb2QtPnJuZ3R5cGUpKTsKKwkJCQljaGFyCSAgICpjb25uYW1lID0g cGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+Y29ubmFtZSkpOworCisJCQkJaWYgKGFjdHVhbF9h dHRzID09IDApCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIgKFxuICAgICIpOwor CQkJCWVsc2UKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIixcbiAgICAiKTsKKwor CQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICJQRVJJT0QgRk9SICVzICglcywgJXMpICIKKwkJ CQkJCSJXSVRIIChyYW5nZXR5cGUgPSAlcywgY2hlY2tfY29uc3RyYWludF9uYW1lID0gJXMp IiwKKwkJCQkJCQkJICBuYW1lLCBzdGFydCwgZW5kLAorCQkJCQkJCQkgIHJuZ3R5cGUsIGNv bm5hbWUpOworCisJCQkJYWN0dWFsX2F0dHMrKzsKKwkJCX0KKwogCQkJLyoKIAkJCSAqIEFk ZCBub24taW5oZXJpdGVkIENIRUNLIGNvbnN0cmFpbnRzLCBpZiBhbnkuCiAJCQkgKgpAQCAt MTU5MTIsNyArMTYwNTAsNyBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29u c3QgVGFibGVJbmZvICp0YmluZm8pCiAJCQkgKiBQQVJUSVRJT04gdGhhdCB3ZSdsbCBlbWl0 IGxhdGVyIGV4cGVjdHMgdGhlIGNvbnN0cmFpbnQgdG8gYmUKIAkJCSAqIHRoZXJlLiAgKE5v IG5lZWQgdG8gZml4IGNvbmlzbG9jYWw6IEFUVEFDSCBQQVJUSVRJT04gZG9lcyB0aGF0KQog CQkJICovCi0JCQlmb3IgKGogPSAwOyBqIDwgdGJpbmZvLT5uY2hlY2s7IGorKykKKwkJCWZv ciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVjayAtIHRiaW5mby0+bnBlcmlvZDsgaisrKQog CQkJewogCQkJCUNvbnN0cmFpbnRJbmZvICpjb25zdHIgPSAmKHRiaW5mby0+Y2hlY2tleHBy c1tqXSk7CiAKQEAgLTE2MTMwLDcgKzE2MjY4LDcgQEAgZHVtcFRhYmxlU2NoZW1hKEFyY2hp dmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJICogRm9yIHBhcnRpdGlv bnMsIHRoZXkgd2VyZSBhbHJlYWR5IGR1bXBlZCwgYW5kIGNvbmlzbG9jYWwKIAkJCSAqIGRv ZXNuJ3QgbmVlZCBmaXhpbmcuCiAJCQkgKi8KLQkJCWZvciAoayA9IDA7IGsgPCB0YmluZm8t Pm5jaGVjazsgaysrKQorCQkJZm9yIChrID0gMDsgayA8IHRiaW5mby0+bmNoZWNrIC0gdGJp bmZvLT5ucGVyaW9kOyBrKyspCiAJCQl7CiAJCQkJQ29uc3RyYWludEluZm8gKmNvbnN0ciA9 ICYodGJpbmZvLT5jaGVja2V4cHJzW2tdKTsKIApAQCAtMTY0MzIsNyArMTY1NzAsNyBAQCBk dW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8p CiAJCWR1bXBUYWJsZVNlY0xhYmVsKGZvdXQsIHRiaW5mbywgcmVsdHlwZW5hbWUpOwogCiAJ LyogRHVtcCBjb21tZW50cyBvbiBpbmxpbmVkIHRhYmxlIGNvbnN0cmFpbnRzICovCi0JZm9y IChqID0gMDsgaiA8IHRiaW5mby0+bmNoZWNrOyBqKyspCisJZm9yIChqID0gMDsgaiA8IHRi aW5mby0+bmNoZWNrIC0gdGJpbmZvLT5ucGVyaW9kOyBqKyspCiAJewogCQlDb25zdHJhaW50 SW5mbyAqY29uc3RyID0gJih0YmluZm8tPmNoZWNrZXhwcnNbal0pOwogCkBAIC0xODUxNyw2 ICsxODY1NSw3IEBAIGFkZEJvdW5kYXJ5RGVwZW5kZW5jaWVzKER1bXBhYmxlT2JqZWN0ICoq ZG9ianMsIGludCBudW1PYmpzLAogCQkJY2FzZSBET19UUklHR0VSOgogCQkJY2FzZSBET19F VkVOVF9UUklHR0VSOgogCQkJY2FzZSBET19ERUZBVUxUX0FDTDoKKwkJCWNhc2UgRE9fUEVS SU9EOgogCQkJY2FzZSBET19QT0xJQ1k6CiAJCQljYXNlIERPX1BVQkxJQ0FUSU9OOgogCQkJ Y2FzZSBET19QVUJMSUNBVElPTl9SRUw6CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCBjYmY0YjVlMTc5 Li5iMTM3MTAyYzdlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTU5LDYgKzU5LDcgQEAgdHlwZWRl ZiBlbnVtCiAJRE9fVFJJR0dFUiwKIAlET19DT05TVFJBSU5ULAogCURPX0ZLX0NPTlNUUkFJ TlQsCQkJLyogc2VlIG5vdGUgZm9yIENvbnN0cmFpbnRJbmZvICovCisJRE9fUEVSSU9ELAog CURPX1BST0NMQU5HLAogCURPX0NBU1QsCiAJRE9fVEFCTEVfREFUQSwKQEAgLTI5OSwxMiAr MzAwLDE0IEBAIHR5cGVkZWYgc3RydWN0IF90YWJsZUluZm8KIAlib29sCQlyb3dzZWM7CQkJ LyogaXMgcm93IHNlY3VyaXR5IGVuYWJsZWQ/ICovCiAJYm9vbAkJZm9yY2Vyb3dzZWM7CS8q IGlzIHJvdyBzZWN1cml0eSBmb3JjZWQ/ICovCiAJYm9vbAkJaGFzb2lkczsJCS8qIGRvZXMg aXQgaGF2ZSBPSURzPyAqLworCWJvb2wJCWhhc3BlcmlvZHM7CQkvKiBkb2VzIGl0IGhhdmUg YW55IHBlcmlvZHM/ICovCiAJdWludDMyCQlmcm96ZW54aWQ7CQkvKiB0YWJsZSdzIHJlbGZy b3plbnhpZCAqLwogCXVpbnQzMgkJbWlubXhpZDsJCS8qIHRhYmxlJ3MgcmVsbWlubXhpZCAq LwogCU9pZAkJCXRvYXN0X29pZDsJCS8qIHRvYXN0IHRhYmxlJ3MgT0lELCBvciAwIGlmIG5v bmUgKi8KIAl1aW50MzIJCXRvYXN0X2Zyb3plbnhpZDsJLyogdG9hc3QgdGFibGUncyByZWxm cm96ZW54aWQsIGlmIGFueSAqLwogCXVpbnQzMgkJdG9hc3RfbWlubXhpZDsJLyogdG9hc3Qg dGFibGUncyByZWxtaW5teGlkICovCiAJaW50CQkJbmNoZWNrOwkJCS8qICMgb2YgQ0hFQ0sg ZXhwcmVzc2lvbnMgKi8KKwlpbnQJCQlucGVyaW9kOwkJLyogIyBvZiBQRVJJT0QgZGVmaW5p dGlvbnMgKi8KIAlPaWQJCQlyZWx0eXBlOwkJLyogT0lEIG9mIHRhYmxlJ3MgY29tcG9zaXRl IHR5cGUsIGlmIGFueSAqLwogCU9pZAkJCXJlbG9mdHlwZTsJCS8qIHVuZGVybHlpbmcgdHlw ZSBmb3IgdHlwZWQgdGFibGUgKi8KIAlPaWQJCQlmb3JlaWduX3NlcnZlcjsgLyogZm9yZWln biBzZXJ2ZXIgb2lkLCBpZiBhcHBsaWNhYmxlICovCkBAIC0zNTQsNiArMzU3LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgX3RhYmxlSW5mbwogCWJvb2wJICAgKm5vdG51bGxfaW5oOwkvKiB0cnVl IGlmIE5PVCBOVUxMIGhhcyBubyBsb2NhbCBkZWZpbml0aW9uICovCiAJc3RydWN0IF9hdHRy RGVmSW5mbyAqKmF0dHJkZWZzOyAvKiBERUZBVUxUIGV4cHJlc3Npb25zICovCiAJc3RydWN0 IF9jb25zdHJhaW50SW5mbyAqY2hlY2tleHByczsgLyogQ0hFQ0sgY29uc3RyYWludHMgKi8K KwlzdHJ1Y3QgX3BlcmlvZEluZm8gKnBlcmlvZHM7CS8qIFBFUklPRCBkZWZpbml0aW9ucyAq LwogCWJvb2wJCW5lZWRzX292ZXJyaWRlOyAvKiBoYXMgR0VORVJBVEVEIEFMV0FZUyBBUyBJ REVOVElUWSAqLwogCWNoYXIJICAgKmFtbmFtZTsJCQkvKiByZWxhdGlvbiBhY2Nlc3MgbWV0 aG9kICovCiAKQEAgLTQ5Miw2ICs0OTYsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgX2NvbnN0cmFp bnRJbmZvCiAJYm9vbAkJc2VwYXJhdGU7CQkvKiB0cnVlIGlmIG11c3QgZHVtcCBhcyBzZXBh cmF0ZSBpdGVtICovCiB9IENvbnN0cmFpbnRJbmZvOwogCit0eXBlZGVmIHN0cnVjdCBfcGVy aW9kSW5mbworeworCUR1bXBhYmxlT2JqZWN0IGRvYmo7CisJVGFibGVJbmZvICAqcGVydGFi bGU7CisJY2hhcgkgICAqcGVyc3RhcnQ7CQkvKiB0aGUgbmFtZSBvZiB0aGUgc3RhcnQgY29s dW1uICovCisJY2hhcgkgICAqcGVyZW5kOwkJCS8qIHRoZSBuYW1lIG9mIHRoZSBlbmQgY29s dW1uICovCisJY2hhcgkgICAqcm5ndHlwZTsJCS8qIHRoZSBuYW1lIG9mIHRoZSByYW5nZSB0 eXBlICovCisJY2hhcgkgICAqY29ubmFtZTsJCS8qIHRoZSBuYW1lIG9mIHRoZSBDSEVDSyBj b25zdHJhaW50ICovCit9IFBlcmlvZEluZm87CisKIHR5cGVkZWYgc3RydWN0IF9wcm9jTGFu Z0luZm8KIHsKIAlEdW1wYWJsZU9iamVjdCBkb2JqOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXBfc29ydC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5j CmluZGV4IGFiZmVhMTVjMDkuLjgzMjRmNTAyZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wX3NvcnQuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0 LmMKQEAgLTg1LDYgKzg1LDcgQEAgZW51bSBkYk9iamVjdFR5cGVQcmlvcml0aWVzCiAJUFJJ T19DT05TVFJBSU5ULAogCVBSSU9fSU5ERVgsCiAJUFJJT19JTkRFWF9BVFRBQ0gsCisJUFJJ T19QRVJJT0QsCiAJUFJJT19TVEFUU0VYVCwKIAlQUklPX1JVTEUsCiAJUFJJT19UUklHR0VS LApAQCAtMTE5LDYgKzEyMCw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZGJPYmplY3RUeXBlUHJp b3JpdHlbXSA9CiAJUFJJT19BVFRSREVGLAkJCQkvKiBET19BVFRSREVGICovCiAJUFJJT19J TkRFWCwJCQkJCS8qIERPX0lOREVYICovCiAJUFJJT19JTkRFWF9BVFRBQ0gsCQkJLyogRE9f SU5ERVhfQVRUQUNIICovCisJUFJJT19QRVJJT0QsCQkJCS8qIERPX1BFUklPRCAqLwogCVBS SU9fU1RBVFNFWFQsCQkJCS8qIERPX1NUQVRTRVhUICovCiAJUFJJT19SVUxFLAkJCQkJLyog RE9fUlVMRSAqLwogCVBSSU9fVFJJR0dFUiwJCQkJLyogRE9fVFJJR0dFUiAqLwpAQCAtMTM2 OCw2ICsxMzcwLDExIEBAIGRlc2NyaWJlRHVtcGFibGVPYmplY3QoRHVtcGFibGVPYmplY3Qg Km9iaiwgY2hhciAqYnVmLCBpbnQgYnVmc2l6ZSkKIAkJCQkJICJGSyBDT05TVFJBSU5UICVz ICAoSUQgJWQgT0lEICV1KSIsCiAJCQkJCSBvYmotPm5hbWUsIG9iai0+ZHVtcElkLCBvYmot PmNhdElkLm9pZCk7CiAJCQlyZXR1cm47CisJCWNhc2UgRE9fUEVSSU9EOgorCQkJc25wcmlu dGYoYnVmLCBidWZzaXplLAorCQkJCQkgIlBFUklPRCAlcyAgKElEICVkIE9JRCAldSkiLAor CQkJCQkgb2JqLT5uYW1lLCBvYmotPmR1bXBJZCwgb2JqLT5jYXRJZC5vaWQpOworCQkJcmV0 dXJuOwogCQljYXNlIERPX1BST0NMQU5HOgogCQkJc25wcmludGYoYnVmLCBidWZzaXplLAog CQkJCQkgIlBST0NFRFVSQUwgTEFOR1VBR0UgJXMgIChJRCAlZCBPSUQgJXUpIiwKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMKaW5kZXggNjFkNjQ1MmI1My4uM2JhMTZkNjdmZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTE5NDMs NiArMTk0Myw4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVt YW5hbWUsCiAKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiXG5GUk9NIHBnX2NhdGFs b2cucGdfYXR0cmlidXRlIGEiKTsKIAlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiXG5XSEVS RSBhLmF0dHJlbGlkID0gJyVzJyBBTkQgYS5hdHRudW0gPiAwIEFORCBOT1QgYS5hdHRpc2Ry b3BwZWQiLCBvaWQpOworCWlmIChwc2V0LnN2ZXJzaW9uID49IDE3MDAwMCkKKwkJYXBwZW5k UFFFeHBCdWZmZXIoJmJ1ZiwgIlxuQU5EIE5PVCBFWElTVFMgKFNFTEVDVCAxIEZST00gcGdf Y2F0YWxvZy5wZ19wZXJpb2QgcCBXSEVSRSBwLnBlcnJlbGlkID0gYS5hdHRyZWxpZCBBTkQg cC5wZXJyYW5nZSA9IGEuYXR0bnVtKSIpOwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYs ICJcbk9SREVSIEJZIGEuYXR0bnVtOyIpOwogCiAJcmVzID0gUFNRTGV4ZWMoYnVmLmRhdGEp OwpAQCAtMjM2NSw2ICsyMzY3LDQwIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0 IGNoYXIgKnNjaGVtYW5hbWUsCiAJCVBHcmVzdWx0ICAgKnJlc3VsdCA9IE5VTEw7CiAJCWlu dAkJCXR1cGxlcyA9IDA7CiAKKwkJLyogcHJpbnQgcGVyaW9kcyAqLworCQlpZiAocHNldC5z dmVyc2lvbiA+PSAxNzAwMDApCisJCXsKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJ CQkJCQkJICAiU0VMRUNUIHF1b3RlX2lkZW50KHAucGVybmFtZSksIHF1b3RlX2lkZW50KHMu YXR0bmFtZSkgQVMgc3RhcnRhdHQsIHF1b3RlX2lkZW50KGUuYXR0bmFtZSkgQVMgZW5kYXR0 XG4iCisJCQkJCQkJICAiRlJPTSBwZ19wZXJpb2QgQVMgcFxuIgorCQkJCQkJCSAgIkpPSU4g cGdfYXR0cmlidXRlIEFTIHMgT04gKHMuYXR0cmVsaWQsIHMuYXR0bnVtKSA9IChwLnBlcnJl bGlkLCBwLnBlcnN0YXJ0KVxuIgorCQkJCQkJCSAgIkpPSU4gcGdfYXR0cmlidXRlIEFTIGUg T04gKGUuYXR0cmVsaWQsIGUuYXR0bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcmVuZClcbiIK KwkJCQkJCQkgICJXSEVSRSBwLnBlcnJlbGlkID0gJyVzJ1xuIgorCQkJCQkJCSAgIk9SREVS IEJZIDE7IiwKKwkJCQkJCQkgIG9pZCk7CisJCQlyZXN1bHQgPSBQU1FMZXhlYyhidWYuZGF0 YSk7CisJCQlpZiAoIXJlc3VsdCkKKwkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCWVsc2UK KwkJCQl0dXBsZXMgPSBQUW50dXBsZXMocmVzdWx0KTsKKworCQkJaWYgKHR1cGxlcyA+IDAp CisJCQl7CisJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwgXygiUGVyaW9kczoiKSk7 CisJCQkJZm9yIChpID0gMDsgaSA8IHR1cGxlczsgaSsrKQorCQkJCXsKKwkJCQkJLyogdW50 cmFuc2xhdGVkIGNvbnN0cmFpbnQgbmFtZSBhbmQgZGVmICovCisJCQkJCXByaW50ZlBRRXhw QnVmZmVyKCZidWYsICIgICAgJXMgKCVzLCAlcykiLAorCQkJCQkJCQkJICBQUWdldHZhbHVl KHJlc3VsdCwgaSwgMCksCisJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAxKSwK KwkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDIpKTsKKworCQkJCQlwcmludFRh YmxlQWRkRm9vdGVyKCZjb250LCBidWYuZGF0YSk7CisJCQkJfQorCQkJfQorCQkJUFFjbGVh cihyZXN1bHQpOworCQl9CisKIAkJLyogcHJpbnQgaW5kZXhlcyAqLwogCQlpZiAodGFibGVp bmZvLmhhc2luZGV4KQogCQl7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2Rl cGVuZGVuY3kuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCmluZGV4IGFi YWMwZjZkYTUuLmRhZWNmNDQ2NzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv ZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCkBA IC05Myw2ICs5Myw3IEBAIHR5cGVkZWYgZW51bSBPYmplY3RDbGFzcwogCU9DTEFTU19DQVNU LAkJCQkvKiBwZ19jYXN0ICovCiAJT0NMQVNTX0NPTExBVElPTiwJCQkvKiBwZ19jb2xsYXRp b24gKi8KIAlPQ0xBU1NfQ09OU1RSQUlOVCwJCQkvKiBwZ19jb25zdHJhaW50ICovCisJT0NM QVNTX1BFUklPRCwJCQkJLyogcGdfcGVyaW9kICovCiAJT0NMQVNTX0NPTlZFUlNJT04sCQkJ LyogcGdfY29udmVyc2lvbiAqLwogCU9DTEFTU19ERUZBVUxULAkJCQkvKiBwZ19hdHRyZGVm ICovCiAJT0NMQVNTX0xBTkdVQUdFLAkJCS8qIHBnX2xhbmd1YWdlICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVh cC5oCmluZGV4IDUxZjdiMTJhYTMuLjFmNjQ2ZjNkM2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvaGVhcC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oCkBA IC0xMjEsNiArMTIxLDEwIEBAIGV4dGVybiBMaXN0ICpBZGRSZWxhdGlvbk5vdE51bGxDb25z dHJhaW50cyhSZWxhdGlvbiByZWwsCiBleHRlcm4gdm9pZCBSZWxhdGlvbkNsZWFyTWlzc2lu ZyhSZWxhdGlvbiByZWwpOwogZXh0ZXJuIHZvaWQgU2V0QXR0ck1pc3NpbmcoT2lkIHJlbGlk LCBjaGFyICphdHRuYW1lLCBjaGFyICp2YWx1ZSk7CiAKK2V4dGVybiBPaWQgU3RvcmVQZXJp b2QoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpwZXJpb2QsCisJCQkJCSAgIEF0dHJOdW1i ZXIgc3RhcnRudW0sIEF0dHJOdW1iZXIgZW5kbnVtLAorCQkJCQkgICBBdHRyTnVtYmVyIHJh bmdlbnVtLCBPaWQgY29ub2lkKTsKKwogZXh0ZXJuIE5vZGUgKmNvb2tEZWZhdWx0KFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSBOb2RlICpyYXdfZGVmYXVsdCwKIAkJCQkJCSBPaWQg YXR0dHlwaWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxk IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWlsZAppbmRleCBkY2IzYzVmNzY2Li4x OTQzNzI5MWE0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxk CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQKQEAgLTYxLDYgKzYxLDcg QEAgY2F0YWxvZ19oZWFkZXJzID0gWwogICAncGdfY29sbGF0aW9uLmgnLAogICAncGdfcGFy YW1ldGVyX2FjbC5oJywKICAgJ3BnX3BhcnRpdGlvbmVkX3RhYmxlLmgnLAorICAncGdfcGVy aW9kLmgnLAogICAncGdfcmFuZ2UuaCcsCiAgICdwZ190cmFuc2Zvcm0uaCcsCiAgICdwZ19z ZXF1ZW5jZS5oJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXgu aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaAppbmRleCAzMjkzMDQxMWI2Li5h NGUwMmRkY2E3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmgK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5oCkBAIC00OCw3ICs0OCw2IEBA IENBVEFMT0cocGdfaW5kZXgsMjYxMCxJbmRleFJlbGF0aW9uSWQpIEJLSV9TQ0hFTUFfTUFD Uk8KIAkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUsIGJ1dCB3ZSBhbGxv dyBkaXJlY3QgYWNjZXNzIHRvIGluZGtleSAqLwogCWludDJ2ZWN0b3IJaW5ka2V5IEJLSV9G T1JDRV9OT1RfTlVMTDsJLyogY29sdW1uIG51bWJlcnMgb2YgaW5kZXhlZCBjb2xzLAogCQkJ CQkJCQkJCQkgKiBvciAwICovCi0KICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgogCW9pZHZlY3Rv cglpbmRjb2xsYXRpb24gQktJX0xPT0tVUF9PUFQocGdfY29sbGF0aW9uKSBCS0lfRk9SQ0Vf Tk9UX05VTEw7CS8qIGNvbGxhdGlvbiBpZGVudGlmaWVycyAqLwogCW9pZHZlY3RvcglpbmRj bGFzcyBCS0lfTE9PS1VQKHBnX29wY2xhc3MpIEJLSV9GT1JDRV9OT1RfTlVMTDsgLyogb3Bj bGFzcyBpZGVudGlmaWVycyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wZXJpb2QuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZDJjZmZhMDdiYwotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKQEAgLTAsMCArMSw1NCBA QAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfcGVyaW9kLmgKKyAqCSAgZGVm aW5pdGlvbiBvZiB0aGUgInBlcmlvZCIgc3lzdGVtIGNhdGFsb2cgKHBnX3BlcmlvZCkKKyAq CisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wZXJpb2QuaAorICoKKyAqIE5PVEVTCisgKgkgIFRoZSBDYXRhbG9nLnBtIG1vZHVsZSBy ZWFkcyB0aGlzIGZpbGUgYW5kIGRlcml2ZXMgc2NoZW1hCisgKgkgIGluZm9ybWF0aW9uLgor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBHX1BFUklPRF9ICisj ZGVmaW5lIFBHX1BFUklPRF9ICisKKyNpbmNsdWRlICJjYXRhbG9nL2dlbmJraS5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kX2QuaCIKKworLyogLS0tLS0tLS0tLS0tLS0tLQor ICoJCXBnX3BlcmlvZCBkZWZpbml0aW9uLiAgY3BwIHR1cm5zIHRoaXMgaW50bworICoJCXR5 cGVkZWYgc3RydWN0IEZvcm1EYXRhX3BnX3BlcmlvZAorICogLS0tLS0tLS0tLS0tLS0tLQor ICovCitDQVRBTE9HKHBnX3BlcmlvZCw4MDAwLFBlcmlvZFJlbGF0aW9uSWQpCit7CisJT2lk CQkJb2lkOwkJCS8qIE9JRCBvZiB0aGUgcGVyaW9kICovCisJTmFtZURhdGEJcGVybmFtZTsJ CS8qIG5hbWUgb2YgcGVyaW9kICovCisJT2lkCQkJcGVycmVsaWQ7CQkvKiBPSUQgb2YgcmVs YXRpb24gY29udGFpbmluZyB0aGlzIHBlcmlvZCAqLworCWludDE2CQlwZXJzdGFydDsJCS8q IGNvbHVtbiBmb3Igc3RhcnQgdmFsdWUgKi8KKwlpbnQxNgkJcGVyZW5kOwkJCS8qIGNvbHVt biBmb3IgZW5kIHZhbHVlICovCisJaW50MTYJCXBlcnJhbmdlOwkJLyogY29sdW1uIGZvciBy YW5nZSB2YWx1ZSAqLworCU9pZAkJCXBlcmNvbnN0cmFpbnQ7CS8qIE9JRCBvZiAoc3RhcnQg PCBlbmQpIGNvbnN0cmFpbnQgKi8KK30gRm9ybURhdGFfcGdfcGVyaW9kOworCisvKiAtLS0t LS0tLS0tLS0tLS0tCisgKgkJRm9ybV9wZ19wZXJpb2QgY29ycmVzcG9uZHMgdG8gYSBwb2lu dGVyIHRvIGEgdHVwbGUgd2l0aAorICoJCXRoZSBmb3JtYXQgb2YgcGdfcGVyaW9kIHJlbGF0 aW9uLgorICogLS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVmIEZvcm1EYXRhX3BnX3Bl cmlvZCAqRm9ybV9wZ19wZXJpb2Q7CisKK0RFQ0xBUkVfVU5JUVVFX0lOREVYX1BLRVkocGdf cGVyaW9kX29pZF9pbmRleCwgODAwMSwgUGVyaW9kT2JqZWN0SW5kZXhJZCwgcGdfcGVyaW9k LCBidHJlZShvaWQgb2lkX29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfcGVyaW9k X3BlcnJlbGlkX3Blcm5hbWVfaW5kZXgsIDgwMDIsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQs IHBnX3BlcmlvZCwgYnRyZWUocGVycmVsaWQgb2lkX29wcywgcGVybmFtZSBuYW1lX29wcykp OworCitleHRlcm4gdm9pZCBSZW1vdmVQZXJpb2RCeUlkKE9pZCBwZXJpb2RJZCk7CisKK2V4 dGVybiBPaWQgZ2V0X3JlbGF0aW9uX3BlcmlvZF9vaWQoT2lkIHJlbGlkLCBjb25zdCBjaGFy ICpwZXJuYW1lLCBib29sIG1pc3Npbmdfb2spOworZXh0ZXJuIEJpdG1hcHNldCAqZ2V0X3Bl cmlvZF9hdHRub3MoT2lkIHJlbGlkKTsKKworI2VuZGlmCQkJCQkJCS8qIFBHX1BFUklPRF9I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmggYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmgKaW5kZXggMTI0N2ZhN2M3Ny4uN2VkMDE0Yjcx ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcmFuZ2UuaApAQCAtNTksNiArNTksNyBAQCB0eXBlZGVm IEZvcm1EYXRhX3BnX3JhbmdlICpGb3JtX3BnX3JhbmdlOwogCiBERUNMQVJFX1VOSVFVRV9J TkRFWF9QS0VZKHBnX3JhbmdlX3JuZ3R5cGlkX2luZGV4LCAzNTQyLCBSYW5nZVR5cGlkSW5k ZXhJZCwgcGdfcmFuZ2UsIGJ0cmVlKHJuZ3R5cGlkIG9pZF9vcHMpKTsKIERFQ0xBUkVfVU5J UVVFX0lOREVYKHBnX3JhbmdlX3JuZ211bHRpdHlwaWRfaW5kZXgsIDIyMjgsIFJhbmdlTXVs dGlyYW5nZVR5cGlkSW5kZXhJZCwgcGdfcmFuZ2UsIGJ0cmVlKHJuZ211bHRpdHlwaWQgb2lk X29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfcmFuZ2Vfcm5nc3VidHlwZV9ybmd0 eXBpZF9pbmRleCwgODAwMywgUmFuZ2VTdWJUeXBpZFR5cGlkSW5kZXhJZCwgcGdfcmFuZ2Us IGJ0cmVlKHJuZ3N1YnR5cGUgb2lkX29wcywgcm5ndHlwaWQgb2lkX29wcykpOwogCiAvKgog ICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIHBnX3JhbmdlLmMKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdGFibGVjbWRzLmgKaW5kZXggYTljNjgyNTYwMS4uNzMyODQwY2U2YyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKKysrIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvdGFibGVjbWRzLmgKQEAgLTQwLDcgKzQwLDggQEAgZXh0ZXJuIExPQ0tNT0RF IEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcyk7CiAKIGV4dGVybiB2b2lkIEFU RXhlY0NoYW5nZU93bmVyKE9pZCByZWxhdGlvbk9pZCwgT2lkIG5ld093bmVySWQsIGJvb2wg cmVjdXJzaW5nLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiAKLWV4dGVybiB2b2lkIEFsdGVyVGFi bGVJbnRlcm5hbChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSk7CitleHRl cm4gdm9pZCBBbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBMaXN0ICpjbWRzLCBib29s IHJlY3Vyc2UsCisJCQkJCQkJICAgc3RydWN0IEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAq Y29udGV4dCk7CiAKIGV4dGVybiBPaWQJQWx0ZXJUYWJsZU1vdmVBbGwoQWx0ZXJUYWJsZU1v dmVBbGxTdG10ICpzdG10KTsKIApAQCAtMTA1LDUgKzEwNiw2IEBAIGV4dGVybiB2b2lkIFJh bmdlVmFyQ2FsbGJhY2tPd25zUmVsYXRpb24oY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLAog CQkJCQkJCQkJCSBPaWQgcmVsSWQsIE9pZCBvbGRSZWxJZCwgdm9pZCAqYXJnKTsKIGV4dGVy biBib29sIFBhcnRDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChSZWxhdGlvbiBz Y2FucmVsLAogCQkJCQkJCQkJCQkJIExpc3QgKnBhcnRDb25zdHJhaW50KTsKK2V4dGVybiBP aWQgY2hvb3NlX3JhbmdldHlwZV9mb3JfcGVyaW9kKFBlcmlvZERlZiAqcGVyaW9kKTsKIAog I2VuZGlmCQkJCQkJCS8qIFRBQkxFQ01EU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK aW5kZXggZDQ2MmNjY2Y1Ni4uNzhiM2I4NmVmZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aApAQCAtMjEzOSw2ICsyMTM5LDcgQEAgdHlwZWRlZiBlbnVtIE9iamVjdFR5cGUKIAlPQkpF Q1RfT1BFUkFUT1IsCiAJT0JKRUNUX09QRkFNSUxZLAogCU9CSkVDVF9QQVJBTUVURVJfQUNM LAorCU9CSkVDVF9QRVJJT0QsCiAJT0JKRUNUX1BPTElDWSwKIAlPQkpFQ1RfUFJPQ0VEVVJF LAogCU9CSkVDVF9QVUJMSUNBVElPTiwKQEAgLTIyMjYsNiArMjIyNyw4IEBAIHR5cGVkZWYg ZW51bSBBbHRlclRhYmxlVHlwZQogCUFUX1ZhbGlkYXRlQ29uc3RyYWludCwJCS8qIHZhbGlk YXRlIGNvbnN0cmFpbnQgKi8KIAlBVF9BZGRJbmRleENvbnN0cmFpbnQsCQkvKiBhZGQgY29u c3RyYWludCB1c2luZyBleGlzdGluZyBpbmRleCAqLwogCUFUX0Ryb3BDb25zdHJhaW50LAkJ CS8qIGRyb3AgY29uc3RyYWludCAqLworCUFUX0FkZFBlcmlvZCwJCQkJLyogQUREIFBFUklP RCAqLworCUFUX0Ryb3BQZXJpb2QsCQkJCS8qIERST1AgUEVSSU9EICovCiAJQVRfUmVBZGRD b21tZW50LAkJCS8qIGludGVybmFsIHRvIGNvbW1hbmRzL3RhYmxlY21kcy5jICovCiAJQVRf QWx0ZXJDb2x1bW5UeXBlLAkJCS8qIGFsdGVyIGNvbHVtbiB0eXBlICovCiAJQVRfQWx0ZXJD b2x1bW5HZW5lcmljT3B0aW9ucywJLyogYWx0ZXIgY29sdW1uIE9QVElPTlMgKC4uLikgKi8K QEAgLTI0OTIsMTEgKzI0OTUsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFyaWFibGVTaG93U3Rt dAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUNyZWF0ZSBUYWJsZSBTdGF0ZW1l bnQKICAqCi0gKiBOT1RFOiBpbiB0aGUgcmF3IGdyYW0ueSBvdXRwdXQsIENvbHVtbkRlZiBh bmQgQ29uc3RyYWludCBub2RlcyBhcmUKLSAqIGludGVybWl4ZWQgaW4gdGFibGVFbHRzLCBh bmQgY29uc3RyYWludHMgYW5kIG5uY29uc3RyYWludHMgYXJlIE5JTC4gIEFmdGVyCi0gKiBw YXJzZSBhbmFseXNpcywgdGFibGVFbHRzIGNvbnRhaW5zIGp1c3QgQ29sdW1uRGVmcywgbm5j b25zdHJhaW50cyBjb250YWlucwotICogQ29uc3RyYWludCBub2RlcyBvZiBDT05TVFJfTk9U TlVMTCB0eXBlIGZyb20gdmFyaW91cyBzb3VyY2VzLCBhbmQKLSAqIGNvbnN0cmFpbnRzIGNv bnRhaW5zIGp1c3QgQ09OU1RSX0NIRUNLIENvbnN0cmFpbnQgbm9kZXMuCisgKiBOT1RFOiBp biB0aGUgcmF3IGdyYW0ueSBvdXRwdXQsIENvbHVtbkRlZiwgUGVyaW9kRGVmLCBhbmQgQ29u c3RyYWludCBub2RlcyBhcmUKKyAqIGludGVybWl4ZWQgaW4gdGFibGVFbHRzOyBwZXJpb2Rz LCBjb25zdHJhaW50cywgYW5kIG5uY29uc3RyYWludHMgYXJlIE5JTC4gIEFmdGVyCisgKiBw YXJzZSBhbmFseXNpcywgdGFibGVFbHRzIGNvbnRhaW5zIGp1c3QgQ29sdW1uRGVmcywgcGVy aW9kcyBjb250YWlucyBqdXN0IFBlcmlvZERlZnMsCisgKiBubmNvbnN0cmFpbnRzIGNvbnRh aW5zIENvbnN0cmFpbnQgbm9kZXMgb2YgQ09OU1RSX05PVE5VTEwgdHlwZSBmcm9tIHZhcmlv dXMgc291cmNlcywKKyAqIGFuZCBjb25zdHJhaW50cyBjb250YWlucyBqdXN0IENPTlNUUl9D SEVDSyBDb25zdHJhaW50IG5vZGVzLgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICov CiAKQEAgLTI1MDUsNiArMjUwOCw3IEBAIHR5cGVkZWYgc3RydWN0IENyZWF0ZVN0bXQKIAlO b2RlVGFnCQl0eXBlOwogCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8g Y3JlYXRlICovCiAJTGlzdAkgICAqdGFibGVFbHRzOwkJLyogY29sdW1uIGRlZmluaXRpb25z IChsaXN0IG9mIENvbHVtbkRlZikgKi8KKwlMaXN0CSAgICpwZXJpb2RzOwkJLyogcGVyaW9k cyAobGlzdCBvZiBQZXJpb2REZWYgbm9kZXMpICovCiAJTGlzdAkgICAqaW5oUmVsYXRpb25z OwkvKiByZWxhdGlvbnMgdG8gaW5oZXJpdCBmcm9tIChsaXN0IG9mCiAJCQkJCQkJCSAqIFJh bmdlVmFyKSAqLwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqcGFydGJvdW5kOwkvKiBGT1IgVkFM VUVTIGNsYXVzZSAqLwpAQCAtMjUxOSw2ICsyNTIzLDMwIEBAIHR5cGVkZWYgc3RydWN0IENy ZWF0ZVN0bXQKIAlib29sCQlpZl9ub3RfZXhpc3RzOwkvKiBqdXN0IGRvIG5vdGhpbmcgaWYg aXQgYWxyZWFkeSBleGlzdHM/ICovCiB9IENyZWF0ZVN0bXQ7CiAKKworLyogLS0tLS0tLS0t LQorICogRGVmaW5pdGlvbnMgZm9yIHBlcmlvZHMgaW4gQ3JlYXRlU3RtdAorICogLS0tLS0t LS0tLQorICovCisKK3R5cGVkZWYgc3RydWN0IFBlcmlvZERlZgoreworCU5vZGVUYWcJCXR5 cGU7CisJT2lkCQkJb2lkOwkJCS8qIHBlcmlvZCBvaWQsIG9uY2UgaXQncyB0cmFuc2Zvcm1l ZCAqLworCWNoYXIJICAgKnBlcmlvZG5hbWU7CQkvKiBwZXJpb2QgbmFtZSAqLworCWNoYXIJ ICAgKnN0YXJ0Y29sbmFtZTsJLyogbmFtZSBvZiBzdGFydCBjb2x1bW4gKi8KKwljaGFyCSAg ICplbmRjb2xuYW1lOwkJLyogbmFtZSBvZiBlbmQgY29sdW1uICovCisJQXR0ck51bWJlcglz dGFydGF0dG51bTsJLyogYXR0bnVtIG9mIHRoZSBzdGFydCBjb2x1bW4gKi8KKwlBdHRyTnVt YmVyCWVuZGF0dG51bTsJCS8qIGF0dG51bSBvZiB0aGUgZW5kIGNvbHVtbiAqLworCUF0dHJO dW1iZXIJcm5nYXR0bnVtOwkJLyogYXR0bnVtIG9mIHRoZSBHRU5FUkFURUQgcmFuZ2UgY29s dW1uICovCisJTGlzdAkgICAqb3B0aW9uczsJCS8qIG9wdGlvbnMgZnJvbSBXSVRIIGNsYXVz ZSAqLworCWNoYXIJICAgKmNvbnN0cmFpbnRuYW1lOwkvKiBuYW1lIG9mIHRoZSBDSEVDSyBj b25zdHJhaW50ICovCisJY2hhcgkgICAqcmFuZ2V0eXBlbmFtZTsJLyogbmFtZSBvZiB0aGUg cmFuZ2UgdHlwZSAqLworCU9pZAkJCWNvbHR5cGlkOwkJLyogdGhlIHN0YXJ0L2VuZCBjb2wg dHlwZSAqLworCU9pZAkJCXJuZ3R5cGlkOwkJLyogdGhlIHJhbmdlIHR5cGUgdG8gdXNlICov CisJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93 biAqLworfSBQZXJpb2REZWY7CisKIC8qIC0tLS0tLS0tLS0KICAqIERlZmluaXRpb25zIGZv ciBjb25zdHJhaW50cyBpbiBDcmVhdGVTdG10CiAgKgpAQCAtMzIyNiw2ICszMjU0LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgSW5kZXhTdG10CiAJTGlzdAkgICAqaW5kZXhQYXJhbXM7CS8qIGNv bHVtbnMgdG8gaW5kZXg6IGEgbGlzdCBvZiBJbmRleEVsZW0gKi8KIAlMaXN0CSAgICppbmRl eEluY2x1ZGluZ1BhcmFtczsJLyogYWRkaXRpb25hbCBjb2x1bW5zIHRvIGluZGV4OiBhIGxp c3QKIAkJCQkJCQkJCQkgKiBvZiBJbmRleEVsZW0gKi8KKwlQZXJpb2REZWYgICpwZXJpb2Q7 CQkJLyogVGhlIHBlcmlvZCBpbmNsdWRlZCBpbiB0aGUgaW5kZXggKi8KIAlMaXN0CSAgICpv cHRpb25zOwkJLyogV0lUSCBjbGF1c2Ugb3B0aW9uczogYSBsaXN0IG9mIERlZkVsZW0gKi8K IAlOb2RlCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbiAocGFydGlhbC1pbmRl eCBwcmVkaWNhdGUpICovCiAJTGlzdAkgICAqZXhjbHVkZU9wTmFtZXM7IC8qIGV4Y2x1c2lv biBvcGVyYXRvciBuYW1lcywgb3IgTklMIGlmIG5vbmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2VfdXRpbGNtZC5oCmluZGV4IDJiNDBhMGI1YjEuLmZlYjZjMjYwMDcgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmgKKysrIGIvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX3V0aWxjbWQuaApAQCAtNDAsNSArNDAsNiBAQCBleHRlcm4gSW5kZXhT dG10ICpnZW5lcmF0ZUNsb25lZEluZGV4U3RtdChSYW5nZVZhciAqaGVhcFJlbCwKIAkJCQkJ CQkJCQkgIFJlbGF0aW9uIHNvdXJjZV9pZHgsCiAJCQkJCQkJCQkJICBjb25zdCBzdHJ1Y3Qg QXR0ck1hcCAqYXR0bWFwLAogCQkJCQkJCQkJCSAgT2lkICpjb25zdHJhaW50T2lkKTsKK2V4 dGVybiB2b2lkIHRyYW5zZm9ybVBlcmlvZE9wdGlvbnMoUGVyaW9kRGVmICpwZXJpb2QpOwog CiAjZW5kaWYJCQkJCQkJLyogUEFSU0VfVVRJTENNRF9IICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNo ZS5oCmluZGV4IDg4ZTQ5ZGIzZDguLjFlMzI4NzYxODggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL2xzeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNo ZS5oCkBAIC05Niw2ICs5Niw4IEBAIGV4dGVybiBPaWQJZ2V0X2F0dHR5cGUoT2lkIHJlbGlk LCBBdHRyTnVtYmVyIGF0dG51bSk7CiBleHRlcm4gdm9pZCBnZXRfYXR0dHlwZXR5cG1vZGNv bGwoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkJCQkJCQkJICBPaWQgKnR5cGlk LCBpbnQzMiAqdHlwbW9kLCBPaWQgKmNvbGxpZCk7CiBleHRlcm4gRGF0dW0gZ2V0X2F0dG9w dGlvbnMoT2lkIHJlbGlkLCBpbnQxNiBhdHRudW0pOworZXh0ZXJuIGNoYXIgKmdldF9wZXJp b2RuYW1lKE9pZCBwZXJpb2RpZCwgYm9vbCBtaXNzaW5nX29rKTsKK2V4dGVybiBPaWQJZ2V0 X3BlcmlvZF9vaWQoT2lkIHJlbGlkLCBjb25zdCBjaGFyICpwZXJpb2RuYW1lLCBib29sIG1p c3Npbmdfb2spOwogZXh0ZXJuIE9pZAlnZXRfY2FzdF9vaWQoT2lkIHNvdXJjZXR5cGVpZCwg T2lkIHRhcmdldHR5cGVpZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBjaGFyICpnZXRf Y29sbGF0aW9uX25hbWUoT2lkIGNvbGxvaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X2NvbGxhdGlv bl9pc2RldGVybWluaXN0aWMoT2lkIGNvbGxvaWQpOwpAQCAtMTk3LDYgKzE5OSw3IEBAIGV4 dGVybiBPaWQJZ2V0X3JhbmdlX3N1YnR5cGUoT2lkIHJhbmdlT2lkKTsKIGV4dGVybiBPaWQJ Z2V0X3JhbmdlX2NvbGxhdGlvbihPaWQgcmFuZ2VPaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmFu Z2VfbXVsdGlyYW5nZShPaWQgcmFuZ2VPaWQpOwogZXh0ZXJuIE9pZAlnZXRfbXVsdGlyYW5n ZV9yYW5nZShPaWQgbXVsdGlyYW5nZU9pZCk7CitleHRlcm4gT2lkCWdldF9zdWJ0eXBlX3Jh bmdlKE9pZCBzdWJ0eXBlT2lkKTsKIGV4dGVybiBPaWQJZ2V0X2luZGV4X2NvbHVtbl9vcGNs YXNzKE9pZCBpbmRleF9vaWQsIGludCBhdHRubyk7CiBleHRlcm4gYm9vbCBnZXRfaW5kZXhf aXNyZXBsaWRlbnQoT2lkIGluZGV4X29pZCk7CiBleHRlcm4gYm9vbCBnZXRfaW5kZXhfaXN2 YWxpZChPaWQgaW5kZXhfb2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3N5 c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oCmluZGV4IDVkNDdhNjUy Y2MuLmRjODY0NmY1ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hl LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaApAQCAtNzUsNiArNzUsOCBA QCBlbnVtIFN5c0NhY2hlSWRlbnRpZmllcgogCVBBUkFNRVRFUkFDTE5BTUUsCiAJUEFSQU1F VEVSQUNMT0lELAogCVBBUlRSRUxJRCwKKwlQRVJJT0ROQU1FLAorCVBFUklPRE9JRCwKIAlQ Uk9DTkFNRUFSR1NOU1AsCiAJUFJPQ09JRCwKIAlQVUJMSUNBVElPTk5BTUUsCkBAIC04NCw2 ICs4Niw3IEBAIGVudW0gU3lzQ2FjaGVJZGVudGlmaWVyCiAJUFVCTElDQVRJT05SRUwsCiAJ UFVCTElDQVRJT05SRUxNQVAsCiAJUkFOR0VNVUxUSVJBTkdFLAorCVJBTkdFU1VCVFlQRSwK IAlSQU5HRVRZUEUsCiAJUkVMTkFNRU5TUCwKIAlSRUxPSUQsCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwppbmRl eCAwMzAyZjc5YmI3Li4wNWY5NzgwZWNmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKQEAgLTE4MCw2ICsx ODAsMTIgQEAgZ2V0X2FsdGVydGFibGVfc3ViY21kaW5mbyhQR19GVU5DVElPTl9BUkdTKQog CQkJY2FzZSBBVF9Ecm9wQ29uc3RyYWludDoKIAkJCQlzdHJ0eXBlID0gIkRST1AgQ09OU1RS QUlOVCI7CiAJCQkJYnJlYWs7CisJCQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJCQlzdHJ0eXBl ID0gIkFERCBQRVJJT0QiOworCQkJCWJyZWFrOworCQkJY2FzZSBBVF9Ecm9wUGVyaW9kOgor CQkJCXN0cnR5cGUgPSAiRFJPUCBQRVJJT0QiOworCQkJCWJyZWFrOwogCQkJY2FzZSBBVF9S ZUFkZENvbW1lbnQ6CiAJCQkJc3RydHlwZSA9ICIocmUpIEFERCBDT01NRU5UIjsKIAkJCQli cmVhazsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVyaW9kcy5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BlcmlvZHMub3V0Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjY0ODFjOWIzMDUKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BlcmlvZHMub3V0CkBAIC0wLDAgKzEs MTc3IEBACisvKiBTeXN0ZW0gcGVyaW9kcyBhcmUgbm90IGltcGxlbWVudGVkICovCitjcmVh dGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3Ig c3lzdGVtX3RpbWUgKGRzLCBkZSkpOworRVJST1I6ICBQRVJJT0QgRk9SIFNZU1RFTV9USU1F IGlzIG5vdCBzdXBwb3J0ZWQKK0xJTkUgMjogY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2Vy LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHN5Li4uCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLyogUGVyaW9kcyBt dXN0IHNwZWNpZnkgYWN0dWFsIGNvbHVtbnMgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50 ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChib2d1cywgZGUpKTsKK0VS Uk9SOiAgY29sdW1uICJib2d1cyIgb2YgcmVsYXRpb24gInB0IiBkb2VzIG5vdCBleGlzdAor Y3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2Qg Zm9yIHAgKGRzLCBib2d1cykpOworRVJST1I6ICBjb2x1bW4gImJvZ3VzIiBvZiByZWxhdGlv biAicHQiIGRvZXMgbm90IGV4aXN0CisvKiBEYXRhIHR5cGVzIG11c3QgbWF0Y2ggZXhhY3Rs eSAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSB0aW1lc3Rh bXAsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitFUlJPUjogIHN0YXJ0IGFuZCBlbmQgY29s dW1ucyBvZiBwZXJpb2QgbXVzdCBiZSBvZiBzYW1lIHR5cGUKK2NyZWF0ZSB0YWJsZSBwdCAo aWQgaW50ZWdlciwgZHMgdGV4dCBjb2xsYXRlICJDIiwgZGUgdGV4dCBjb2xsYXRlICJQT1NJ WCIsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitFUlJPUjogIHN0YXJ0IGFuZCBlbmQgY29s dW1ucyBvZiBwZXJpb2QgbXVzdCBoYXZlIHNhbWUgY29sbGF0aW9uCisvKiBQZXJpb2RzIG11 c3QgaGF2ZSBhIGRlZmF1bHQgQlRyZWUgb3BlcmF0b3IgY2xhc3MgKi8KK2NyZWF0ZSB0YWJs ZSBwdCAoaWQgaW50ZWdlciwgZHMgeG1sLCBkZSB4bWwsIHBlcmlvZCBmb3IgcCAoZHMsIGRl KSk7CitFUlJPUjogIG5vIHJhbmdlIHR5cGUgZm9yIHhtbCBmb3VuZCBmb3IgcGVyaW9kIHAK K0hJTlQ6ICBZb3UgY2FuIGRlZmluZSBhIGN1c3RvbSByYW5nZSB0eXBlIHdpdGggQ1JFQVRF IFRZUEUKKy8qIFBlcmlvZCBhbmQgY29sdW1uIG5hbWVzIGFyZSBpbiB0aGUgc2FtZSBuYW1l c3BhY2UgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0 ZSwgcGVyaW9kIGZvciBjdGlkIChkcywgZGUpKTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgImN0 aWQiIGNvbmZsaWN0cyB3aXRoIGEgc3lzdGVtIGNvbHVtbiBuYW1lCitjcmVhdGUgdGFibGUg cHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgaWQgKGRzLCBk ZSkpOworRVJST1I6ICBwZXJpb2QgbmFtZSAiaWQiIGNvbmZsaWN0cyB3aXRoIGEgY29sdW1u IG5hbWUKKy8qIFBlcmlvZCBuYW1lIGNhbid0IGJlIGdpdmVuIG1vcmUgdGhhbiBvbmNlICov CitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlv ZCBmb3IgcCAoZHMsIGRlKSwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK0VSUk9SOiAgcGVy aW9kIG5hbWUgInAiIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZQorLyogTm93IG1ha2Ugb25l IHRoYXQgd29ya3MgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwg ZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKKy8qIFNFTEVDVCAqIGV4Y2x1ZGVz IHRoZSBQRVJJT0QgKi8KK2luc2VydCBpbnRvIHB0IHZhbHVlcyAoMSwgJzIwMDAtMDEtMDEn LCAnMjAwMS0wMS0wMScpOworc2VsZWN0ICogZnJvbSBwdDsKKyBpZCB8ICAgICBkcyAgICAg fCAgICAgZGUgICAgIAorLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgIDEgfCAw MS0wMS0yMDAwIHwgMDEtMDEtMjAwMQorKDEgcm93KQorCisvKiBZb3UgY2FuIGdldCBpdCBp ZiB5b3Ugd2FudCAqLworc2VsZWN0ICosIHAgZnJvbSBwdDsKKyBpZCB8ICAgICBkcyAgICAg fCAgICAgZGUgICAgIHwgICAgICAgICAgICBwICAgICAgICAgICAgCistLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAxIHwgMDEt MDEtMjAwMCB8IDAxLTAxLTIwMDEgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDAxKQorKDEgcm93 KQorCisvKiBUd28gYXJlIG9rYXkgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIs IGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcDEgKGRzLCBkZSksIHBlcmlvZCBmb3Ig cDIgKGRzLCBkZSkpOworZHJvcCB0YWJsZSBwdDI7CisvKgorICogQUxURVIgVEFCTEUgdGVz dHMKKyAqLworYWx0ZXIgdGFibGUgcHQgZHJvcCBwZXJpb2QgZm9yIHA7CithbHRlciB0YWJs ZSBwdCBhZGQgcGVyaW9kIGZvciBzeXN0ZW1fdGltZSAoZHMsIGRlKTsKK0VSUk9SOiAgUEVS SU9EIEZPUiBTWVNURU1fVElNRSBpcyBub3Qgc3VwcG9ydGVkCithbHRlciB0YWJsZSBwdCBh ZGQgcGVyaW9kIGZvciBwIChkcywgZGUpOworLyogQWRkaW5nIGEgc2Vjb25kIG9uZSAqLwor Y3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9k IGZvciBwMSAoZHMsIGRlKSk7CithbHRlciB0YWJsZSBwdDIgYWRkIHBlcmlvZCBmb3IgcDIg KGRzLCBkZSk7Citkcm9wIHRhYmxlIHB0MjsKKy8qIENhbid0IGRyb3AgaXRzIGNvbHVtbnMg Ki8KK2FsdGVyIHRhYmxlIHB0IGRyb3AgY29sdW1uIGRzOworRVJST1I6ICBjYW5ub3QgZHJv cCBjb2x1bW4gZHMgb2YgdGFibGUgcHQgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVuZCBv biBpdAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFibGUgcHQgZGVwZW5kcyBvbiBjb2x1bW4g ZHMgb2YgdGFibGUgcHQKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRo ZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCithbHRlciB0YWJsZSBwdCBkcm9wIGNvbHVtbiBk ZTsKK0VSUk9SOiAgY2Fubm90IGRyb3AgY29sdW1uIGRlIG9mIHRhYmxlIHB0IGJlY2F1c2Ug b3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxl IHB0IGRlcGVuZHMgb24gY29sdW1uIGRlIG9mIHRhYmxlIHB0CitISU5UOiAgVXNlIERST1Ag Li4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorLyogQ2Fu J3QgY2hhbmdlIHRoZSBkYXRhIHR5cGVzICovCithbHRlciB0YWJsZSBwdCBhbHRlciBjb2x1 bW4gZHMgdHlwZSB0aW1lc3RhbXA7CitFUlJPUjogIGNhbm5vdCBhbHRlciB0eXBlIG9mIGEg Y29sdW1uIHVzZWQgYnkgYSBwZXJpb2QKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxlIHB0 IGRlcGVuZHMgb24gY29sdW1uICJkcyIKK2FsdGVyIHRhYmxlIHB0IGFsdGVyIGNvbHVtbiBk cyB0eXBlIHRpbWVzdGFtcDsKK0VSUk9SOiAgY2Fubm90IGFsdGVyIHR5cGUgb2YgYSBjb2x1 bW4gdXNlZCBieSBhIHBlcmlvZAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFibGUgcHQgZGVw ZW5kcyBvbiBjb2x1bW4gImRzIgorLyogY29sdW1uL3BlcmlvZCBuYW1lc3BhY2UgY29uZmxp Y3RzICovCithbHRlciB0YWJsZSBwdCBhZGQgY29sdW1uIHAgaW50ZWdlcjsKK0VSUk9SOiAg Y29sdW1uIG5hbWUgInAiIGNvbmZsaWN0cyB3aXRoIGEgcGVyaW9kIG5hbWUKK2FsdGVyIHRh YmxlIHB0IHJlbmFtZSBjb2x1bW4gaWQgdG8gcDsKK0VSUk9SOiAgY29sdW1uIG5hbWUgInAi IGNvbmZsaWN0cyB3aXRoIGEgcGVyaW9kIG5hbWUKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJp b2QgZm9yIHRhYmxlb2lkIChkcywgZGUpOworRVJST1I6ICBwZXJpb2QgbmFtZSAidGFibGVv aWQiIGNvbmZsaWN0cyB3aXRoIGEgc3lzdGVtIGNvbHVtbiBuYW1lCithbHRlciB0YWJsZSBw dCBhZGQgcGVyaW9kIGZvciAiLi4uLi4uLi5wZy5kcm9wcGVkLjQuLi4uLi4uLiIgKGRzLCBk ZSk7CitFUlJPUjogIHBlcmlvZCBuYW1lICIuLi4uLi4uLnBnLmRyb3BwZWQuNC4uLi4uLi4u IiBjb25mbGljdHMgd2l0aCBhIGNvbHVtbiBuYW1lCisvKiBhZGRpbmcgY29sdW1ucyBhbmQg dGhlIHBlcmlvZCBhdCB0aGUgc2FtZSB0aW1lICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBp bnRlZ2VyKTsKK2FsdGVyIHRhYmxlIHB0MiBhZGQgY29sdW1uIGRzIGRhdGUsIGFkZCBjb2x1 bW4gZGUgZGF0ZSwgYWRkIHBlcmlvZCBmb3IgcCAoZHMsIGRlKTsKK2Ryb3AgdGFibGUgcHQy OworLyogQW1iaWd1b3VzIHJhbmdlIHR5cGVzIHJhaXNlIGFuIGVycm9yICovCitjcmVhdGUg dHlwZSBteWRhdGVyYW5nZSBhcyByYW5nZShzdWJ0eXBlPWRhdGUpOworY3JlYXRlIHRhYmxl IHB0MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkp OworRVJST1I6ICBhbWJpZ3VvdXMgcmFuZ2UgZm9yIHR5cGUgZGF0ZQorLyogWW91IGNhbiBn aXZlIGFuIGV4cGxpY2l0IHJhbmdlIHR5cGUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGlu dCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdl dHlwZSA9ICdteWRhdGVyYW5nZScpKTsKK2Ryb3AgdHlwZSBteWRhdGVyYW5nZTsKK0VSUk9S OiAgY2Fubm90IGRyb3AgdHlwZSBteWRhdGVyYW5nZSBiZWNhdXNlIG90aGVyIG9iamVjdHMg ZGVwZW5kIG9uIGl0CitERVRBSUw6ICBwZXJpb2QgcCBvbiB0YWJsZSBwdDIgZGVwZW5kcyBv biB0eXBlIG15ZGF0ZXJhbmdlCitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJv cCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorZHJvcCB0eXBlIG15ZGF0ZXJhbmdlIGNh c2NhZGU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIHBlcmlvZCBwIG9uIHRhYmxlIHB0 MgorZHJvcCB0YWJsZSBwdDI7CitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRzIGRhdGUs IGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAnZGF0 ZXJhbmdlJykpOworLyogUmFuZ2UgdHlwZSBpcyBub3QgZm91bmQgKi8KK2NyZWF0ZSB0YWJs ZSBwdDMgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUp IHdpdGggKHJhbmdldHlwZSA9ICdub3RhcmFuZ2UnKSk7CitFUlJPUjogIFJhbmdlIHR5cGUg bm90YXJhbmdlIG5vdCBmb3VuZAorLyogUmFuZ2UgdHlwZSBpcyB0aGUgd3JvbmcgdHlwZSAq LworY3JlYXRlIHRhYmxlIHB0MyAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2Qg Zm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ3RzdHpyYW5nZScpKTsKK0VSUk9S OiAgUmFuZ2UgdHlwZSB0c3R6cmFuZ2UgZG9lcyBub3QgbWF0Y2ggY29sdW1uIHR5cGUgZGF0 ZQorZHJvcCB0YWJsZSBwdDI7CisvKiBDUkVBVEUgVEFCTEUgKExJS0UgLi4uKSAqLworLyog UGVyaW9kcyBhcmUgbm90IGNvcGllZCBieSBMSUtFLCBzbyB0aGVpciBjb2x1bW5zIGFyZW4n dCBlaXRoZXIgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQpOworXGQgcHQyCisgICAg ICAgICAgICAgICAgVGFibGUgInB1YmxpYy5wdDIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICB8IGludGVnZXIgfCAgICAg ICAgICAgfCAgICAgICAgICB8IAorIGRzICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAg ICAgICAgICB8IAorIGRlICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8 IAorCitkcm9wIHRhYmxlIHB0MjsKKy8qIENhbiBhZGQgYSBwZXJpb2QgcmVmZXJyaW5nIHRv IExJS0UnZCBjb2x1bW5zICovCitjcmVhdGUgdGFibGUgbm90X3AgKGlkIGludGVnZXIsIGRz IGRhdGUsIGRlIGRhdGUpOworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBub3RfcCwgcGVyaW9k IGZvciBwIChkcywgZGUpKTsKK1xkIHB0MgorICAgICAgICAgICAgICAgIFRhYmxlICJwdWJs aWMucHQyIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERl ZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0KKyBpZCAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBk cyAgICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkZSAgICAgfCBk YXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK1BlcmlvZHM6CisgICAgcCAoZHMs IGRlKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInB0Ml9wX2NoZWNrIiBDSEVDSyAoZHMg PCBkZSkKKworZHJvcCB0YWJsZSBwdDI7CisvKiBDYW4gYWRkIGEgcGVyaW9kIHdpdGggdGhl IHNhbWUgbmFtZSAqLworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBwdCwgcGVyaW9kIGZvciBw IChkcywgZGUpKTsKK1xkIHB0MgorICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMucHQy IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQg CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0K KyBpZCAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkcyAgICAg fCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkZSAgICAgfCBkYXRlICAg IHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK1BlcmlvZHM6CisgICAgcCAoZHMsIGRlKQor Q2hlY2sgY29uc3RyYWludHM6CisgICAgInB0Ml9wX2NoZWNrIiBDSEVDSyAoZHMgPCBkZSkK KworZHJvcCB0YWJsZSBwdDI7CisvKiBDYW4gYWRkIGEgcGVyaW9kIHdpdGggYSBkaWZmZXJl bnQgbmFtZSAqLworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBwdCwgcGVyaW9kIGZvciBwMiAo ZHMsIGRlKSk7CitcZCBwdDIKKyAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnB0MiIK KyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAor LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisg aWQgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgZHMgICAgIHwg ZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgZGUgICAgIHwgZGF0ZSAgICB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQZXJpb2RzOgorICAgIHAyIChkcywgZGUpCitD aGVjayBjb25zdHJhaW50czoKKyAgICAicHQyX3AyX2NoZWNrIiBDSEVDSyAoZHMgPCBkZSkK KworZHJvcCB0YWJsZSBwdDI7CisvKiBDYW4ndCBhZGQgYSBwZXJpb2Qgd2hvc2UgbmFtZSBj b25mbGljdHMgd2l0aCBhIExJS0UnZCBjb2x1bW4gKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxp a2UgcHQsIHBlcmlvZCBmb3IgaWQgKGRzLCBkZSkpOworRVJST1I6ICBwZXJpb2QgbmFtZSAi aWQiIGNvbmZsaWN0cyB3aXRoIGEgY29sdW1uIG5hbWUKKy8qIENSRUFURSBUQUxCRSBJTkhF UklUUyAqLworLyogQ2FuJ3QgaW5oZXJpdCBmcm9tIGEgdGFibGUgd2l0aCBhIHBlcmlvZCAq LworY3JlYXRlIHRhYmxlIHB0MiAobmFtZSB0ZXh0KSBpbmhlcml0cyAocHQpOworRVJST1I6 ICBJbmhlcml0aW5nIGZyb20gYSB0YWJsZSB3aXRoIGEgUEVSSU9EIGlzIG5vdCBzdXBwb3J0 ZWQKKy8qIENhbid0IGluaGVyaXQgd2l0aCBhIHBlcmlvZCAqLworY3JlYXRlIHRhYmxlIHB0 MiAoZDJzIGRhdGUsIGQyZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGQycywgZDJlKSkgaW5oZXJp dHMgKG5vdF9wKTsKK0VSUk9SOiAgSW5oZXJpdGluZyBpcyBub3Qgc3VwcG9ydGVkIHdoZW4g YSB0YWJsZSBoYXMgYSBQRVJJT0QKK2Ryb3AgdGFibGUgbm90X3A7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9w YXJhbGxlbF9zY2hlZHVsZQppbmRleCBjYzJmNmI0NmUwLi5kNmI4Yjk2ZDg4IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTQzLDcgKzQzLDcgQEAgdGVzdDogY29w eSBjb3B5c2VsZWN0IGNvcHlkbWwgaW5zZXJ0IGluc2VydF9jb25mbGljdAogIyBOb3RlOiBt YW55IG9mIHRoZSB0ZXN0cyBpbiBsYXRlciBncm91cHMgZGVwZW5kIG9uIGNyZWF0ZV9pbmRl eAogIyAtLS0tLS0tLS0tCiB0ZXN0OiBjcmVhdGVfZnVuY3Rpb25fYyBjcmVhdGVfbWlzYyBj cmVhdGVfb3BlcmF0b3IgY3JlYXRlX3Byb2NlZHVyZSBjcmVhdGVfdGFibGUgY3JlYXRlX3R5 cGUgY3JlYXRlX3NjaGVtYQotdGVzdDogY3JlYXRlX2luZGV4IGNyZWF0ZV9pbmRleF9zcGdp c3QgY3JlYXRlX3ZpZXcgaW5kZXhfaW5jbHVkaW5nIGluZGV4X2luY2x1ZGluZ19naXN0Cit0 ZXN0OiBjcmVhdGVfaW5kZXggY3JlYXRlX2luZGV4X3NwZ2lzdCBjcmVhdGVfdmlldyBpbmRl eF9pbmNsdWRpbmcgaW5kZXhfaW5jbHVkaW5nX2dpc3QgcGVyaW9kcwogCiAjIC0tLS0tLS0t LS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcGVyaW9kcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w ZXJpb2RzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mMGJl ODkwMjE3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGVyaW9k cy5zcWwKQEAgLTAsMCArMSwxMTkgQEAKKy8qIFN5c3RlbSBwZXJpb2RzIGFyZSBub3QgaW1w bGVtZW50ZWQgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUg ZGF0ZSwgcGVyaW9kIGZvciBzeXN0ZW1fdGltZSAoZHMsIGRlKSk7CisKKy8qIFBlcmlvZHMg bXVzdCBzcGVjaWZ5IGFjdHVhbCBjb2x1bW5zICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGlu dGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoYm9ndXMsIGRlKSk7Citj cmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBm b3IgcCAoZHMsIGJvZ3VzKSk7CisKKy8qIERhdGEgdHlwZXMgbXVzdCBtYXRjaCBleGFjdGx5 ICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIHRpbWVzdGFt cCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdl ciwgZHMgdGV4dCBjb2xsYXRlICJDIiwgZGUgdGV4dCBjb2xsYXRlICJQT1NJWCIsIHBlcmlv ZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIFBlcmlvZHMgbXVzdCBoYXZlIGEgZGVmYXVsdCBC VHJlZSBvcGVyYXRvciBjbGFzcyAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBk cyB4bWwsIGRlIHhtbCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKKworLyogUGVyaW9kIGFu ZCBjb2x1bW4gbmFtZXMgYXJlIGluIHRoZSBzYW1lIG5hbWVzcGFjZSAqLworY3JlYXRlIHRh YmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIGN0aWQg KGRzLCBkZSkpOworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBk YXRlLCBwZXJpb2QgZm9yIGlkIChkcywgZGUpKTsKKworLyogUGVyaW9kIG5hbWUgY2FuJ3Qg YmUgZ2l2ZW4gbW9yZSB0aGFuIG9uY2UgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdl ciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpLCBwZXJpb2QgZm9y IHAgKGRzLCBkZSkpOworCisvKiBOb3cgbWFrZSBvbmUgdGhhdCB3b3JrcyAqLworY3JlYXRl IHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAg KGRzLCBkZSkpOworCisvKiBTRUxFQ1QgKiBleGNsdWRlcyB0aGUgUEVSSU9EICovCitpbnNl cnQgaW50byBwdCB2YWx1ZXMgKDEsICcyMDAwLTAxLTAxJywgJzIwMDEtMDEtMDEnKTsKK3Nl bGVjdCAqIGZyb20gcHQ7CisKKy8qIFlvdSBjYW4gZ2V0IGl0IGlmIHlvdSB3YW50ICovCitz ZWxlY3QgKiwgcCBmcm9tIHB0OworCisvKiBUd28gYXJlIG9rYXkgKi8KK2NyZWF0ZSB0YWJs ZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcDEgKGRz LCBkZSksIHBlcmlvZCBmb3IgcDIgKGRzLCBkZSkpOworZHJvcCB0YWJsZSBwdDI7CisKKy8q CisgKiBBTFRFUiBUQUJMRSB0ZXN0cworICovCithbHRlciB0YWJsZSBwdCBkcm9wIHBlcmlv ZCBmb3IgcDsKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yIHN5c3RlbV90aW1lIChk cywgZGUpOworYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgcCAoZHMsIGRlKTsKKwor LyogQWRkaW5nIGEgc2Vjb25kIG9uZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdl ciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwMSAoZHMsIGRlKSk7CithbHRlciB0 YWJsZSBwdDIgYWRkIHBlcmlvZCBmb3IgcDIgKGRzLCBkZSk7Citkcm9wIHRhYmxlIHB0MjsK KworLyogQ2FuJ3QgZHJvcCBpdHMgY29sdW1ucyAqLworYWx0ZXIgdGFibGUgcHQgZHJvcCBj b2x1bW4gZHM7CithbHRlciB0YWJsZSBwdCBkcm9wIGNvbHVtbiBkZTsKKworLyogQ2FuJ3Qg Y2hhbmdlIHRoZSBkYXRhIHR5cGVzICovCithbHRlciB0YWJsZSBwdCBhbHRlciBjb2x1bW4g ZHMgdHlwZSB0aW1lc3RhbXA7CithbHRlciB0YWJsZSBwdCBhbHRlciBjb2x1bW4gZHMgdHlw ZSB0aW1lc3RhbXA7CisKKy8qIGNvbHVtbi9wZXJpb2QgbmFtZXNwYWNlIGNvbmZsaWN0cyAq LworYWx0ZXIgdGFibGUgcHQgYWRkIGNvbHVtbiBwIGludGVnZXI7CithbHRlciB0YWJsZSBw dCByZW5hbWUgY29sdW1uIGlkIHRvIHA7CithbHRlciB0YWJsZSBwdCBhZGQgcGVyaW9kIGZv ciB0YWJsZW9pZCAoZHMsIGRlKTsKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yICIu Li4uLi4uLnBnLmRyb3BwZWQuNC4uLi4uLi4uIiAoZHMsIGRlKTsKKworLyogYWRkaW5nIGNv bHVtbnMgYW5kIHRoZSBwZXJpb2QgYXQgdGhlIHNhbWUgdGltZSAqLworY3JlYXRlIHRhYmxl IHB0MiAoaWQgaW50ZWdlcik7CithbHRlciB0YWJsZSBwdDIgYWRkIGNvbHVtbiBkcyBkYXRl LCBhZGQgY29sdW1uIGRlIGRhdGUsIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSk7Citkcm9w IHRhYmxlIHB0MjsKKworLyogQW1iaWd1b3VzIHJhbmdlIHR5cGVzIHJhaXNlIGFuIGVycm9y ICovCitjcmVhdGUgdHlwZSBteWRhdGVyYW5nZSBhcyByYW5nZShzdWJ0eXBlPWRhdGUpOwor Y3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9y IHAgKGRzLCBkZSkpOworCisvKiBZb3UgY2FuIGdpdmUgYW4gZXhwbGljaXQgcmFuZ2UgdHlw ZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJp b2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ215ZGF0ZXJhbmdlJykpOwor ZHJvcCB0eXBlIG15ZGF0ZXJhbmdlOworZHJvcCB0eXBlIG15ZGF0ZXJhbmdlIGNhc2NhZGU7 Citkcm9wIHRhYmxlIHB0MjsKK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwg ZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdkYXRl cmFuZ2UnKSk7CisKKy8qIFJhbmdlIHR5cGUgaXMgbm90IGZvdW5kICovCitjcmVhdGUgdGFi bGUgcHQzIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRl KSB3aXRoIChyYW5nZXR5cGUgPSAnbm90YXJhbmdlJykpOworCisvKiBSYW5nZSB0eXBlIGlz IHRoZSB3cm9uZyB0eXBlICovCitjcmVhdGUgdGFibGUgcHQzIChpZCBpbnQsIGRzIGRhdGUs IGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAndHN0 enJhbmdlJykpOworZHJvcCB0YWJsZSBwdDI7CisKKy8qIENSRUFURSBUQUJMRSAoTElLRSAu Li4pICovCisKKy8qIFBlcmlvZHMgYXJlIG5vdCBjb3BpZWQgYnkgTElLRSwgc28gdGhlaXIg Y29sdW1ucyBhcmVuJ3QgZWl0aGVyICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0KTsK K1xkIHB0MgorZHJvcCB0YWJsZSBwdDI7CisKKy8qIENhbiBhZGQgYSBwZXJpb2QgcmVmZXJy aW5nIHRvIExJS0UnZCBjb2x1bW5zICovCitjcmVhdGUgdGFibGUgbm90X3AgKGlkIGludGVn ZXIsIGRzIGRhdGUsIGRlIGRhdGUpOworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBub3RfcCwg cGVyaW9kIGZvciBwIChkcywgZGUpKTsKK1xkIHB0MgorZHJvcCB0YWJsZSBwdDI7CisKKy8q IENhbiBhZGQgYSBwZXJpb2Qgd2l0aCB0aGUgc2FtZSBuYW1lICovCitjcmVhdGUgdGFibGUg cHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworXGQgcHQyCitkcm9wIHRh YmxlIHB0MjsKKworLyogQ2FuIGFkZCBhIHBlcmlvZCB3aXRoIGEgZGlmZmVyZW50IG5hbWUg Ki8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgcDIgKGRzLCBkZSkp OworXGQgcHQyCitkcm9wIHRhYmxlIHB0MjsKKworLyogQ2FuJ3QgYWRkIGEgcGVyaW9kIHdo b3NlIG5hbWUgY29uZmxpY3RzIHdpdGggYSBMSUtFJ2QgY29sdW1uICovCitjcmVhdGUgdGFi bGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIGlkIChkcywgZGUpKTsKKworLyogQ1JFQVRF IFRBTEJFIElOSEVSSVRTICovCisKKy8qIENhbid0IGluaGVyaXQgZnJvbSBhIHRhYmxlIHdp dGggYSBwZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKG5hbWUgdGV4dCkgaW5oZXJpdHMg KHB0KTsKKworLyogQ2FuJ3QgaW5oZXJpdCB3aXRoIGEgcGVyaW9kICovCitjcmVhdGUgdGFi bGUgcHQyIChkMnMgZGF0ZSwgZDJlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZDJzLCBkMmUpKSBp bmhlcml0cyAobm90X3ApOworCitkcm9wIHRhYmxlIG5vdF9wOwotLSAKMi40Mi4wCgo= --------------jwdNqnl5yO2Lo4Yc0EOjsS0s--