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 1rPi4P-00DYmC-N9 for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Jan 2024 11:57:30 +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 1rPi4O-003K1X-RK for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Jan 2024 11:57:28 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rPi4O-003K1P-5E for pgsql-hackers@lists.postgresql.org; Tue, 16 Jan 2024 11:57:28 +0000 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rPi4G-0026rO-Ju for pgsql-hackers@postgresql.org; Tue, 16 Jan 2024 11:57:27 +0000 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-40e779f0273so18104085e9.2 for ; Tue, 16 Jan 2024 03:57:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705406238; x=1706011038; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=E/N/I1qg9/JIzfCRJxaYIoLvpExavQCP/qzDuWmc6+A=; b=m/J/amksPAUG8+hMk8eNsY8yN2lxVPMG4397/XyPIemLpffTZDJOU/xjDghQTqp+WF 6x5uMXOtql/YSyEKkFY0jRTxmyG6zMz9Qgz/6SaArPcmQIkomN48y4IibmV9GPhIbgpK RpRcQZp+dQ1Y73wxmLNNZcPQ9sabEVNBTJ4xD9NwU8wX1R5s5H+Ur0eQS1XCdp7dnQdO mC1v52haX+gi5CI/w6TLVgKyWj2A3nhP3x947EFFQfBmLHCrWzanAeSKnfcl3z02HoD3 Onf5w/2SqHveIc2BYW2d7k4Ejj6EWTQ7q0XrSn6m4AVm1vug+F4C2TWD0lrL6pm9dKxH 3ttA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705406238; x=1706011038; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=E/N/I1qg9/JIzfCRJxaYIoLvpExavQCP/qzDuWmc6+A=; b=dCeP+v3qZVvNOIyD92VGRSz5CX0oSAvmeSZKECRgnnlLS3Tkn+poaNCB+5jPCQuVMs eWsiUVEV0ITfOf4pe5qXDpyxFXZLbkn9LTJA9+0KmpIevmTCgplCsG03pZxUf6T6MFRb CmZkMjj6n5Xj2TbKsnO0VvzjpNzGYuwPU7jRrNnVbrnlwvJ6ipFh+PRCZ+550REpu9iB 0/DPdkqiAp7IrjoAq95xG0LERP+IbC0PASR8MXQunonzW+R2if2+pgHZ7obp6mbcrVfD lpZBF6rtwLkEOM+yr0YjgxyTcIIu8RZafeZszHUrNk6F70thDnCkxa+BIVEFOphdVhjs im/g== X-Gm-Message-State: AOJu0Yx3tOoGHVR5yfMrzOEttMZjsFD9ZWEnakExoj3JYnxCtTbJW6lk NpZkEgYTtdtwRL2uK+V8HBROWuL+zcjFWPH4TLw= X-Google-Smtp-Source: AGHT+IGbTW84ku6C/ZnChdrLOU9J+4zCDEizVirRdYdAgdqzX2g0w7S37jyiryq5FXQv4Khe0duoy5lWIKyhRDOgypY= X-Received: by 2002:a05:600c:2205:b0:40e:6247:5f7 with SMTP id z5-20020a05600c220500b0040e624705f7mr3534789wml.45.1705406238100; Tue, 16 Jan 2024 03:57:18 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: shveta malik Date: Tue, 16 Jan 2024 17:27:05 +0530 Message-ID: Subject: Re: Synchronizing slots from primary to standby To: Masahiko Sawada , Amit Kapila Cc: "Zhijie Hou (Fujitsu)" , Dilip Kumar , Bertrand Drouvot , Peter Smith , Nisha Moond , "Hayato Kuroda (Fujitsu)" , Bharath Rupireddy , Peter Eisentraut , Bruce Momjian , Ashutosh Sharma , Andres Freund , pgsql-hackers , Ajin Cherian , Alvaro Herrera , shveta malik Content-Type: multipart/mixed; boundary="00000000000006ae0b060f0ed540" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000006ae0b060f0ed540 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Jan 16, 2024 at 3:10=E2=80=AFPM shveta malik wrote: > > On Tue, Jan 16, 2024 at 12:59=E2=80=AFPM Masahiko Sawada wrote: > > > > On Tue, Jan 16, 2024 at 1:07=E2=80=AFPM Amit Kapila wrote: > > > > > > On Tue, Jan 16, 2024 at 9:03=E2=80=AFAM shveta malik wrote: > > > > > > > > On Sat, Jan 13, 2024 at 12:54=E2=80=AFPM Amit Kapila wrote: > > > > > > > > > > On Fri, Jan 12, 2024 at 5:50=E2=80=AFPM shveta malik wrote: > > > > > > > > > > > > There are multiple approaches discussed and tried when it comes= to > > > > > > starting a slot-sync worker. I am summarizing all here: > > > > > > > > > > > > 1) Make slotsync worker as an Auxiliary Process (like checkpoi= nter, > > > > > > walwriter, walreceiver etc). The benefit this approach provides= is, it > > > > > > can control begin and stop in a more flexible way as each auxil= iary > > > > > > process could have different checks before starting and can hav= e > > > > > > different stop conditions. But it needs code duplication for pr= ocess > > > > > > management(start, stop, crash handling, signals etc) and curren= tly it > > > > > > does not support db-connection smoothly (none of the auxiliary = process > > > > > > has one so far) > > > > > > > > > > > > > > > > As slotsync worker needs to perform transactions and access sysca= che, > > > > > we can't make it an auxiliary process as that doesn't initialize = the > > > > > required stuff like syscache. Also, see the comment "Auxiliary > > > > > processes don't run transactions ..." in AuxiliaryProcessMain() w= hich > > > > > means this is not an option. > > > > > > > > > > > > > > > > > 2) Make slotsync worker as a 'special' process like AutoVacLaun= cher > > > > > > which is neither an Auxiliary process nor a bgworker one. It al= lows > > > > > > db-connection and also provides flexibility to have start and s= top > > > > > > conditions for a process. > > > > > > > > > > > > > > > > Yeah, due to these reasons, I think this option is worth consider= ing > > > > > and another plus point is that this allows us to make enable_sync= slot > > > > > a PGC_SIGHUP GUC rather than a PGC_POSTMASTER. > > > > > > > > > > > > > > > > > 3) Make slotysnc worker a bgworker. Here we just need to regist= er our > > > > > > process as a bgworker (RegisterBackgroundWorker()) by providing= a > > > > > > relevant start_time and restart_time and then the process manag= ement > > > > > > is well taken care of. It does not need any code-duplication an= d > > > > > > allows db-connection smoothly in registered process. The only t= hing it > > > > > > lacks is that it does not provide flexibility of having > > > > > > start-condition which then makes us to have 'enable_syncslot' a= s > > > > > > PGC_POSTMASTER parameter rather than PGC_SIGHUP. Having said th= is, I > > > > > > feel enable_syncslot is something which will not be changed fre= quently > > > > > > and with the benefits provided by bgworker infra, it seems a > > > > > > reasonably good option to choose this approach. > > > > > > > > > > > > > > > > I agree but it may be better to make it a PGC_SIGHUP parameter. > > > > > > > > > > > 4) Another option is to have Logical Replication Launcher(or a = new > > > > > > process) to launch slot-sync worker. But going by the current d= esign > > > > > > where we have only 1 slotsync worker, it may be an overhead to = have an > > > > > > additional manager process maintained. > > > > > > > > > > > > > > > > I don't see any good reason to have an additional launcher proces= s here. > > > > > > > > > > > > > > > > > Thus weighing pros and cons of all these options, we have curre= ntly > > > > > > implemented the bgworker approach (approach 3). Any feedback i= s > > > > > > welcome. > > > > > > > > > > > > > > > > I vote to go for (2) unless we face difficulties in doing so but = (3) > > > > > is also okay especially if others also think so. > > > > > > > > I am not against any of the approaches but I still feel that when w= e > > > > have a standard way of doing things (bgworker) we should not keep > > > > adding code to do things in a special way unless there is a strong > > > > reason to do so. Now we need to decide if 'enable_syncslot' being > > > > PGC_POSTMASTER is a strong reason to go the non-standard way? > > > > > > > > > > Agreed and as said earlier I think it is better to make it a > > > PGC_SIGHUP. Also, not sure we can say it is a non-standard way as > > > already autovacuum launcher is handled in the same way. One more mino= r > > > thing is it will save us for having a new bgworker state > > > BgWorkerStart_ConsistentState_HotStandby as introduced by this patch. > > > > Why do we need to add a new BgWorkerStart_ConsistentState_HotStandby > > for the slotsync worker? Isn't it sufficient that the slotsync worker > > exits if not in hot standby mode? > > It is doable, but that will mean starting slot-sync worker even on > primary on every server restart which does not seem like a good idea. > We wanted to have a way where-in it does not start itself in > non-standby mode. > > > Is there any technical difficulty or obstacle to make the slotsync > > worker start using bgworker after reloading the config file? > > When we register slotsync worker as bgworker, we can only register the > bgworker before initializing shared memory, we cannot register > dynamically in the cycle of ServerLoop and thus we do not have > flexibility of registering/deregistering the bgworker (or controlling > the bgworker start) based on config parameters each time they change. > We can always start slot-sync worker and let it check if > enable_syncslot is ON. If not, exit and retry the next time when > postmaster will restart it after restart_time(60sec). The downside of > this approach is, even if any user does not want slot-sync > functionality and thus has permanently disabled 'enable_syncslot', it > will keep on restarting and exiting there. PFA v62. Details: v62-001: No change. v62-002: 1) Addressed slotsync.c related comments by Peter in [1]. 2) Addressed CFBot failure where there was a crash in 32 bit env while accessing DatumGetLSN 3) Addressed another CFBot failure where the test for '050_standby_failover_slots_sync.pl' was hanging. Thanks Hou-San for this fix. v62-003: It is a new patch which attempts to implement slot-sync worker as a special process which is neither a bgworker nor an Auxiliary process. Here we get the benefit of converting enable_syncslot to a PGC_SIGHUP Guc rather than PGC_POSTMASTER. We launch the slot-sync worker only if it is hot-standby and 'enable_syncslot' is ON. v62-004: Small change in document. v62-005: No change v62-006: Separated the failover-ready validation steps into this separate doc-patch (which were earlier present in v61-002 and v61-003). Also addressed some of the doc comments by Peter in [1]. Thanks Hou-San for providing this patch. [1]: https://www.postgresql.org/message-id/CAHut%2BPteZVNx1jQ6Hs3mEdoC%3DDN= ALVpJJ2mZDYim7sU-04tiaw%40mail.gmail.com thanks Shveta --00000000000006ae0b060f0ed540 Content-Type: application/octet-stream; name="v62-0004-Allow-logical-walsenders-to-wait-for-the-physica.patch" Content-Disposition: attachment; filename="v62-0004-Allow-logical-walsenders-to-wait-for-the-physica.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrgap7im3 RnJvbSAxOTBjYjY2NDE0Y2JiYThhOGI5MjI4MDdlODU3MDgyOTJjYjg1YjI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTYgSmFuIDIwMjQgMTY6MDg6MDcgKzA1MzAKU3ViamVjdDogW1BBVENIIHY2 MiA0LzZdIEFsbG93IGxvZ2ljYWwgd2Fsc2VuZGVycyB0byB3YWl0IGZvciB0aGUgcGh5c2ljYWwK IHN0YW5kYnlzCgpUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBtZWNoYW5pc20gdG8gZW5zdXJlIHRo YXQgcGh5c2ljYWwgc3RhbmRieSBzZXJ2ZXJzLAp3aGljaCBhcmUgcG90ZW50aWFsIGZhaWxvdmVy IGNhbmRpZGF0ZXMsIGhhdmUgcmVjZWl2ZWQgYW5kIGZsdXNoZWQgY2hhbmdlcwpiZWZvcmUgbWFr aW5nIHRoZW0gdmlzaWJsZSB0byBzdWJzY3JpYmVycy4gQnkgZG9pbmcgc28sIGl0IGd1YXJhbnRl ZXMgdGhhdAp0aGUgcHJvbW90ZWQgc3RhbmRieSBzZXJ2ZXIgaXMgbm90IGxhZ2dpbmcgYmVoaW5k IHRoZSBzdWJzY3JpYmVycyB3aGVuIGEKZmFpbG92ZXIgaXMgbmVjZXNzYXJ5LgoKQSBuZXcgcGFy YW1ldGVyIG5hbWVkIHN0YW5kYnlfc2xvdF9uYW1lcyBpcyBpbnRyb2R1Y2VkLiBUaGUgbG9naWNh bAp3YWxzZW5kZXIgbm93IGd1YXJhbnRlZXMgdGhhdCBhbGwgbG9jYWwgY2hhbmdlcyBhcmUgc2Vu dCBhbmQgZmx1c2hlZCB0bwp0aGUgc3RhbmRieSBzZXJ2ZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhl IHJlcGxpY2F0aW9uIHNsb3RzIHNwZWNpZmllZCBpbgpzdGFuZGJ5X3Nsb3RfbmFtZXMgYmVmb3Jl IHNlbmRpbmcgdGhvc2UgY2hhbmdlcyB0byB0aGUgc3Vic2NyaWJlci4KCkFkZGl0aW9uYWxseSwg VGhlIFNRTCBmdW5jdGlvbnMgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzIGFuZApwZ19yZXBs aWNhdGlvbl9zbG90X2FkdmFuY2UgYXJlIG1vZGlmaWVkIHRvIHdhaXQgZm9yIHRoZSByZXBsaWNh dGlvbiBzbG90cwptZW50aW9uZWQgaW4gc3RhbmRieV9zbG90X25hbWVzIHRvIGNhdGNoIHVwIGJl Zm9yZSByZXR1cm5pbmcgdGhlIGNoYW5nZXMKdG8gdGhlIHVzZXIuCi0tLQogZG9jL3NyYy9zZ21s L2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgIDI0ICsrCiBkb2Mvc3JjL3NnbWwv bG9naWNhbGRlY29kaW5nLnNnbWwgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9yZXBsaWNhdGlv bi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jICAgICAgICB8ICAxMyArCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgfCAzNDIgKysrKysrKysrKysrKysrKystCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYyAgICAgICAgICAgfCAgIDkgKwogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgICAgIHwgMTExICsrKysrLQog Li4uL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0ICAgICAgIHwgICAxICsKIHNy Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAxNCArCiBzcmMv YmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDIgKwogc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oICAgICAgICAgICAgICAgIHwgICA3ICsKIHNyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oICAgfCAgIDcgKwogc3JjL2luY2x1ZGUv dXRpbHMvZ3VjX2hvb2tzLmggICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L3JlY292 ZXJ5L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWNvdmVy eS90LzAwNl9sb2dpY2FsX2RlY29kaW5nLnBsICAgfCAgIDMgKy0KIC4uLi90LzA1MF9zdGFuZGJ5 X2ZhaWxvdmVyX3Nsb3RzX3N5bmMucGwgICAgICB8IDIzMiArKysrKysrKysrLS0KIDE2IGZpbGVz IGNoYW5nZWQsIDczMyBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5k ZXggYmQyZDJmODcxZS4uNzYzNDVlNDMzYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZp Zy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNDQyMCw2ICs0NDIwLDMw IEBAIHJlc3RvcmVfY29tbWFuZCA9ICdjb3B5ICJDOlxcc2VydmVyXFxhcmNoaXZlZGlyXFwlZiIg IiVwIicgICMgV2luZG93cwogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+ CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXN0YW5kYnktc2xvdC1uYW1lcyIgeHJlZmxh YmVsPSJzdGFuZGJ5X3Nsb3RfbmFtZXMiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+c3RhbmRieV9z bG90X25hbWVzPC92YXJuYW1lPiAoPHR5cGU+c3RyaW5nPC90eXBlPikKKyAgICAgIDxpbmRleHRl cm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+c3RhbmRieV9zbG90X25hbWVzPC92YXJuYW1l PiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgor ICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBM aXN0IG9mIHBoeXNpY2FsIHNsb3RzIGd1YXJhbnRlZXMgdGhhdCBsb2dpY2FsIHJlcGxpY2F0aW9u IHNsb3RzIHdpdGgKKyAgICAgICAgZmFpbG92ZXIgZW5hYmxlZCBkbyBub3QgY29uc3VtZSBjaGFu Z2VzIHVudGlsIHRob3NlIGNoYW5nZXMgYXJlIHJlY2VpdmVkCisgICAgICAgIGFuZCBmbHVzaGVk IHRvIGNvcnJlc3BvbmRpbmcgcGh5c2ljYWwgc3RhbmRieXMuIElmIGEgbG9naWNhbCByZXBsaWNh dGlvbgorICAgICAgICBjb25uZWN0aW9uIGlzIG1lYW50IHRvIHN3aXRjaCB0byBhIHBoeXNpY2Fs IHN0YW5kYnkgYWZ0ZXIgdGhlIHN0YW5kYnkgaXMKKyAgICAgICAgcHJvbW90ZWQsIHRoZSBwaHlz aWNhbCByZXBsaWNhdGlvbiBzbG90IGZvciB0aGUgc3RhbmRieSBzaG91bGQgYmUgbGlzdGVkCisg ICAgICAgIGhlcmUuCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUg c3RhbmRieXMgY29ycmVzcG9uZGluZyB0byB0aGUgcGh5c2ljYWwgcmVwbGljYXRpb24gc2xvdHMg aW4KKyAgICAgICAgPHZhcm5hbWU+c3RhbmRieV9zbG90X25hbWVzPC92YXJuYW1lPiBtdXN0IGNv bmZpZ3VyZQorICAgICAgICA8bGl0ZXJhbD5lbmFibGVfc3luY3Nsb3QgPSB0cnVlPC9saXRlcmFs PiBzbyB0aGV5IGNhbiByZWNlaXZlCisgICAgICAgIGZhaWxvdmVyIGxvZ2ljYWwgc2xvdHMgY2hh bmdlcyBmcm9tIHRoZSBwcmltYXJ5LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+ CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2Vj dDI+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAppbmRleCA2NzIxZDg5NTFkLi5lZGI1MTFj MDY1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29kaW5nLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sCkBAIC0zNTUsNyArMzU1LDkgQEAgcG9z dGdyZXM9IyBzZWxlY3QgKiBmcm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVz c2lvbl9zbG90JywgTlVMTCwgTlUKICAgICAgYmUgZW5hYmxlZCBvbiB0aGUgc3RhbmRieS4gSXQn cyBhbHNvIGhpZ2hseSByZWNvbW1lbmRlZCB0aGF0IHRoZSBzYWlkCiAgICAgIHBoeXNpY2FsIHJl cGxpY2F0aW9uIHNsb3QgaXMgbmFtZWQgaW4gPHZhcm5hbWU+c3RhbmRieV9zbG90X25hbWVzPC92 YXJuYW1lPgogICAgICBsaXN0IG9uIHRoZSBwcmltYXJ5LCB0byBwcmV2ZW50IHRoZSBzdWJzY3Jp YmVyIGZyb20gY29uc3VtaW5nIGNoYW5nZXMKLSAgICAgZmFzdGVyIHRoYW4gdGhlIGhvdCBzdGFu ZGJ5LgorICAgICBmYXN0ZXIgdGhhbiB0aGUgaG90IHN0YW5kYnkuIEJ1dCBvbmNlIHdlIGNvbmZp Z3VyZSBpdCwgdGhlbiBjZXJ0YWluIGxhdGVuY3kKKyAgICAgaXMgZXhwZWN0ZWQgaW4gc2VuZGlu ZyBjaGFuZ2VzIHRvIGxvZ2ljYWwgc3Vic2NyaWJlcnMgZHVlIHRvIHdhaXQgb24KKyAgICAgcGh5 c2ljYWwgcmVwbGljYXRpb24gc2xvdHMgaW4gPHZhcm5hbWU+c3RhbmRieV9zbG90X25hbWVzPC92 YXJuYW1lPgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKaW5kZXggYjAwODFkM2NlNS4uNWZmNzYxZGQ2 NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5j CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vZGVjb2RlLmgiCiAjaW5j bHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL21lc3Nh Z2UuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9y YWdlL2ZkLmgiCiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9idWls dGlucy5oIgpAQCAtMTA5LDYgKzExMCw3IEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlc19n dXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJvb2wgYmluCiAJTWVt b3J5Q29udGV4dCBwZXJfcXVlcnlfY3R4OwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKIAlY TG9nUmVjUHRyCWVuZF9vZl93YWw7CisJWExvZ1JlY1B0cgl3YWl0X2Zvcl93YWxfbHNuOwogCUxv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eDsKIAlSZXNvdXJjZU93bmVyIG9sZF9yZXNvd25lciA9 IEN1cnJlbnRSZXNvdXJjZU93bmVyOwogCUFycmF5VHlwZSAgKmFycjsKQEAgLTIyOCw2ICsyMzAs MTcgQEAgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzX2d1dHMoRnVuY3Rpb25DYWxsSW5mbyBm Y2luZm8sIGJvb2wgY29uZmlybSwgYm9vbCBiaW4KIAkJCQkJCQlOYW1lU3RyKE15UmVwbGljYXRp b25TbG90LT5kYXRhLnBsdWdpbiksCiAJCQkJCQkJZm9ybWF0X3Byb2NlZHVyZShmY2luZm8tPmZs aW5mby0+Zm5fb2lkKSkpKTsKIAorCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZCh1cHRvX2xzbikp CisJCQl3YWl0X2Zvcl93YWxfbHNuID0gZW5kX29mX3dhbDsKKwkJZWxzZQorCQkJd2FpdF9mb3Jf d2FsX2xzbiA9IE1pbih1cHRvX2xzbiwgZW5kX29mX3dhbCk7CisKKwkJLyoKKwkJICogV2FpdCBm b3Igc3BlY2lmaWVkIHN0cmVhbWluZyByZXBsaWNhdGlvbiBzdGFuZGJ5IHNlcnZlcnMgKGlmIGFu eSkKKwkJICogdG8gY29uZmlybSByZWNlaXB0IG9mIFdBTCB1cCB0byB3YWl0X2Zvcl93YWxfbHNu LgorCQkgKi8KKwkJV2FpdEZvclN0YW5kYnlDb25maXJtYXRpb24od2FpdF9mb3Jfd2FsX2xzbik7 CisKIAkJY3R4LT5vdXRwdXRfd3JpdGVyX3ByaXZhdGUgPSBwOwogCiAJCS8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9zbG90LmMKaW5kZXggMzNmOTU3YjAyZi4uZDA1MDlmYjVhNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3QuYwpAQCAtNDYsMTMgKzQ2LDE4IEBACiAjaW5jbHVkZSAiY29tbW9uL3N0cmluZy5oIgogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInBvc3Rt YXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNl bmRlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxz L2d1Y19ob29rcy5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRp bHMvdmFybGVuYS5oIgogCiAvKgogICogUmVwbGljYXRpb24gc2xvdCBvbi1kaXNrIGRhdGEgc3Ry dWN0dXJlLgpAQCAtOTksMTAgKzEwNCwxOSBAQCBSZXBsaWNhdGlvblNsb3RDdGxEYXRhICpSZXBs aWNhdGlvblNsb3RDdGwgPSBOVUxMOwogLyogTXkgYmFja2VuZCdzIHJlcGxpY2F0aW9uIHNsb3Qg aW4gdGhlIHNoYXJlZCBtZW1vcnkgYXJyYXkgKi8KIFJlcGxpY2F0aW9uU2xvdCAqTXlSZXBsaWNh dGlvblNsb3QgPSBOVUxMOwogCi0vKiBHVUMgdmFyaWFibGUgKi8KKy8qIEdVQyB2YXJpYWJsZXMg Ki8KIGludAkJCW1heF9yZXBsaWNhdGlvbl9zbG90cyA9IDEwOyAvKiB0aGUgbWF4aW11bSBudW1i ZXIgb2YgcmVwbGljYXRpb24KIAkJCQkJCQkJCQkgKiBzbG90cyAqLwogCisvKgorICogVGhpcyBH VUMgbGlzdHMgc3RyZWFtaW5nIHJlcGxpY2F0aW9uIHN0YW5kYnkgc2VydmVyIHNsb3QgbmFtZXMg dGhhdAorICogbG9naWNhbCBXQUwgc2VuZGVyIHByb2Nlc3NlcyB3aWxsIHdhaXQgZm9yLgorICov CitjaGFyCSAgICpzdGFuZGJ5X3Nsb3RfbmFtZXM7CisKKy8qIFRoaXMgaXMgcGFyc2VkIGFuZCBj YWNoZWQgbGlzdCBmb3IgcmF3IHN0YW5kYnlfc2xvdF9uYW1lcy4gKi8KK3N0YXRpYyBMaXN0ICpz dGFuZGJ5X3Nsb3RfbmFtZXNfbGlzdCA9IE5JTDsKKwogc3RhdGljIHZvaWQgUmVwbGljYXRpb25T bG90U2htZW1FeGl0KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgUmVwbGljYXRp b25TbG90RHJvcFB0cihSZXBsaWNhdGlvblNsb3QgKnNsb3QpOwogCkBAIC0yMjEwLDMgKzIyMjQs MzI5IEBAIFJlc3RvcmVTbG90RnJvbURpc2soY29uc3QgY2hhciAqbmFtZSkKIAkJCQkoZXJybXNn KCJ0b28gbWFueSByZXBsaWNhdGlvbiBzbG90cyBhY3RpdmUgYmVmb3JlIHNodXRkb3duIiksCiAJ CQkJIGVycmhpbnQoIkluY3JlYXNlIG1heF9yZXBsaWNhdGlvbl9zbG90cyBhbmQgdHJ5IGFnYWlu LiIpKSk7CiB9CisKKy8qCisgKiBBIGhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBzbG90cyBz cGVjaWZpZWQgaW4gR1VDIHN0YW5kYnlfc2xvdF9uYW1lcy4KKyAqLworc3RhdGljIGJvb2wKK3Zh bGlkYXRlX3N0YW5kYnlfc2xvdHMoY2hhciAqKm5ld3ZhbCkKK3sKKwljaGFyCSAgICpyYXduYW1l OworCUxpc3QJICAgKmVsZW1saXN0OworCUxpc3RDZWxsICAgKmxjOworCWJvb2wJCW9rOworCisJ LyogTmVlZCBhIG1vZGlmaWFibGUgY29weSBvZiBzdHJpbmcgKi8KKwlyYXduYW1lID0gcHN0cmR1 cCgqbmV3dmFsKTsKKworCS8qIFZlcmlmeSBzeW50YXggYW5kIHBhcnNlIHN0cmluZyBpbnRvIGEg bGlzdCBvZiBpZGVudGlmaWVycyAqLworCW9rID0gU3BsaXRJZGVudGlmaWVyU3RyaW5nKHJhd25h bWUsICcsJywgJmVsZW1saXN0KTsKKworCWlmICghb2spCisJCUdVQ19jaGVja19lcnJkZXRhaWwo Ikxpc3Qgc3ludGF4IGlzIGludmFsaWQuIik7CisKKwkvKgorCSAqIElmIHRoZXJlIGlzIGEgc3lu dGF4IGVycm9yIGluIHRoZSBuYW1lIG9yIGlmIHRoZSByZXBsaWNhdGlvbiBzbG90cycKKwkgKiBk YXRhIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQgKGkuZS4sIHdlIGFyZSBpbiB0aGUgc3RhcnR1cCBw cm9jZXNzKSwgc2tpcAorCSAqIHRoZSBzbG90IHZlcmlmaWNhdGlvbi4KKwkgKi8KKwlpZiAoIW9r IHx8ICFSZXBsaWNhdGlvblNsb3RDdGwpCisJeworCQlwZnJlZShyYXduYW1lKTsKKwkJbGlzdF9m cmVlKGVsZW1saXN0KTsKKwkJcmV0dXJuIG9rOworCX0KKworCWZvcmVhY2gobGMsIGVsZW1saXN0 KQorCXsKKwkJY2hhcgkgICAqbmFtZSA9IGxmaXJzdChsYyk7CisJCVJlcGxpY2F0aW9uU2xvdCAq c2xvdDsKKworCQlzbG90ID0gU2VhcmNoTmFtZWRSZXBsaWNhdGlvblNsb3QobmFtZSwgdHJ1ZSk7 CisKKwkJaWYgKCFzbG90KQorCQl7CisJCQlHVUNfY2hlY2tfZXJyZGV0YWlsKCJyZXBsaWNhdGlv biBzbG90IFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJCW5hbWUpOworCQkJb2sgPSBm YWxzZTsKKwkJCWJyZWFrOworCQl9CisKKwkJaWYgKCFTbG90SXNQaHlzaWNhbChzbG90KSkKKwkJ eworCQkJR1VDX2NoZWNrX2VycmRldGFpbCgiXCIlc1wiIGlzIG5vdCBhIHBoeXNpY2FsIHJlcGxp Y2F0aW9uIHNsb3QiLAorCQkJCQkJCQluYW1lKTsKKwkJCW9rID0gZmFsc2U7CisJCQlicmVhazsK KwkJfQorCX0KKworCXBmcmVlKHJhd25hbWUpOworCWxpc3RfZnJlZShlbGVtbGlzdCk7CisJcmV0 dXJuIG9rOworfQorCisvKgorICogR1VDIGNoZWNrX2hvb2sgZm9yIHN0YW5kYnlfc2xvdF9uYW1l cworICovCitib29sCitjaGVja19zdGFuZGJ5X3Nsb3RfbmFtZXMoY2hhciAqKm5ld3ZhbCwgdm9p ZCAqKmV4dHJhLCBHdWNTb3VyY2Ugc291cmNlKQoreworCWlmIChzdHJjbXAoKm5ld3ZhbCwgIiIp ID09IDApCisJCXJldHVybiB0cnVlOworCisJLyoKKwkgKiAiKiIgaXMgbm90IGFjY2VwdGVkIGFz IGluIHRoYXQgY2FzZSBwcmltYXJ5IHdpbGwgbm90IGJlIGFibGUgdG8ga25vdworCSAqIGZvciB3 aGljaCBhbGwgc3RhbmRieXMgdG8gd2FpdCBmb3IuIEV2ZW4gaWYgd2UgaGF2ZSBwaHlzaWNhbC1z bG90cworCSAqIGluZm8sIHRoZXJlIGlzIG5vIHdheSB0byBjb25maXJtIHdoZXRoZXIgdGhlcmUg aXMgYW55IHN0YW5kYnkKKwkgKiBjb25maWd1cmVkIGZvciB0aGUga25vd24gcGh5c2ljYWwgc2xv dHMuCisJICovCisJaWYgKHN0cmNtcCgqbmV3dmFsLCAiKiIpID09IDApCisJeworCQlHVUNfY2hl Y2tfZXJyZGV0YWlsKCJcIiVzXCIgaXMgbm90IGFjY2VwdGVkIGZvciBzdGFuZGJ5X3Nsb3RfbmFt ZXMiLAorCQkJCQkJCSpuZXd2YWwpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyogTm93IHZl cmlmeSBpZiB0aGUgc3BlY2lmaWVkIHNsb3RzIHJlYWxseSBleGlzdCBhbmQgaGF2ZSBjb3JyZWN0 IHR5cGUgKi8KKwlpZiAoIXZhbGlkYXRlX3N0YW5kYnlfc2xvdHMobmV3dmFsKSkKKwkJcmV0dXJu IGZhbHNlOworCisJKmV4dHJhID0gZ3VjX3N0cmR1cChFUlJPUiwgKm5ld3ZhbCk7CisKKwlyZXR1 cm4gdHJ1ZTsKK30KKworLyoKKyAqIEdVQyBhc3NpZ25faG9vayBmb3Igc3RhbmRieV9zbG90X25h bWVzCisgKi8KK3ZvaWQKK2Fzc2lnbl9zdGFuZGJ5X3Nsb3RfbmFtZXMoY29uc3QgY2hhciAqbmV3 dmFsLCB2b2lkICpleHRyYSkKK3sKKwlMaXN0CSAgICpzdGFuZGJ5X3Nsb3RzOworCU1lbW9yeUNv bnRleHQgb2xkY3h0OworCWNoYXIJICAgKnN0YW5kYnlfc2xvdF9uYW1lc19jcHkgPSBleHRyYTsK KworCWxpc3RfZnJlZShzdGFuZGJ5X3Nsb3RfbmFtZXNfbGlzdCk7CisJc3RhbmRieV9zbG90X25h bWVzX2xpc3QgPSBOSUw7CisKKwkvKiBObyB2YWx1ZSBpcyBzcGVjaWZpZWQgZm9yIHN0YW5kYnlf c2xvdF9uYW1lcy4gKi8KKwlpZiAoc3RhbmRieV9zbG90X25hbWVzX2NweSA9PSBOVUxMKQorCQly ZXR1cm47CisKKwlpZiAoIVNwbGl0SWRlbnRpZmllclN0cmluZyhzdGFuZGJ5X3Nsb3RfbmFtZXNf Y3B5LCAnLCcsICZzdGFuZGJ5X3Nsb3RzKSkKKwl7CisJCS8qIFRoaXMgc2hvdWxkIG5vdCBoYXBw ZW4gaWYgR1VDIGNoZWNrZWQgY2hlY2tfc3RhbmRieV9zbG90X25hbWVzLiAqLworCQllbG9nKEVS Uk9SLCAiaW52YWxpZCBsaXN0IHN5bnRheCIpOworCX0KKworCS8qCisJICogU3dpdGNoIHRvIHRo ZSBzYW1lIG1lbW9yeSBjb250ZXh0IHVuZGVyIHdoaWNoIEdVQyB2YXJpYWJsZXMgYXJlCisJICog YWxsb2NhdGVkIChHVUNNZW1vcnlDb250ZXh0KS4KKwkgKi8KKwlvbGRjeHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8oR2V0TWVtb3J5Q2h1bmtDb250ZXh0KHN0YW5kYnlfc2xvdF9uYW1lc19jcHkp KTsKKwlzdGFuZGJ5X3Nsb3RfbmFtZXNfbGlzdCA9IGxpc3RfY29weShzdGFuZGJ5X3Nsb3RzKTsK KwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKK30KKworLyoKKyAqIFJldHVybiBhIGNv cHkgb2Ygc3RhbmRieV9zbG90X25hbWVzX2xpc3QgaWYgdGhlIGNvcHkgZmxhZyBpcyBzZXQgdG8g dHJ1ZSwKKyAqIG90aGVyd2lzZSByZXR1cm4gdGhlIG9yaWdpbmFsIGxpc3QuCisgKi8KK0xpc3Qg KgorR2V0U3RhbmRieVNsb3RMaXN0KGJvb2wgY29weSkKK3sKKwkvKgorCSAqIFNpbmNlIHdlIGRv IG5vdCBzdXBwb3J0IHN5bmNpbmcgc2xvdHMgdG8gY2FzY2FkaW5nIHN0YW5kYnlzLCB3ZSByZXR1 cm4KKwkgKiBOSUwgaGVyZSBpZiB3ZSBhcmUgcnVubmluZyBpbiBhIHN0YW5kYnkgdG8gaW5kaWNh dGUgdGhhdCBubyBzdGFuZGJ5CisJICogc2xvdHMgbmVlZCB0byBiZSB3YWl0ZWQgZm9yLgorCSAq LworCWlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwkJcmV0dXJuIE5JTDsKKworCWlmIChjb3B5 KQorCQlyZXR1cm4gbGlzdF9jb3B5KHN0YW5kYnlfc2xvdF9uYW1lc19saXN0KTsKKwllbHNlCisJ CXJldHVybiBzdGFuZGJ5X3Nsb3RfbmFtZXNfbGlzdDsKK30KKworLyoKKyAqIFJlbG9hZCB0aGUg Y29uZmlnIGZpbGUgYW5kIHJlaW5pdGlhbGl6ZSB0aGUgc3RhbmRieSBzbG90IGxpc3QgaWYgdGhl IEdVQworICogc3RhbmRieV9zbG90X25hbWVzIGhhcyBjaGFuZ2VkLgorICovCit2b2lkCitSZXJl YWRDb25maWdBbmRSZUluaXRTbG90TGlzdChMaXN0ICoqc3RhbmRieV9zbG90cykKK3sKKwljaGFy CSAgICpwcmVfc3RhbmRieV9zbG90X25hbWVzOworCisJLyoKKwkgKiBJZiB3ZSBhcmUgcnVubmlu ZyBvbiBhIHN0YW5kYnksIHRoZXJlIGlzIG5vIG5lZWQgdG8gcmVsb2FkCisJICogc3RhbmRieV9z bG90X25hbWVzIHNpbmNlIHdlIGRvIG5vdCBzdXBwb3J0IHN5bmNpbmcgc2xvdHMgdG8gY2FzY2Fk aW5nCisJICogc3RhbmRieXMuCisJICovCisJaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCXsK KwkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJCXJldHVybjsKKwl9CisKKwlwcmVf c3RhbmRieV9zbG90X25hbWVzID0gcHN0cmR1cChzdGFuZGJ5X3Nsb3RfbmFtZXMpOworCisJUHJv Y2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisKKwlpZiAoc3RyY21wKHByZV9zdGFuZGJ5X3Ns b3RfbmFtZXMsIHN0YW5kYnlfc2xvdF9uYW1lcykgIT0gMCkKKwl7CisJCWxpc3RfZnJlZSgqc3Rh bmRieV9zbG90cyk7CisJCSpzdGFuZGJ5X3Nsb3RzID0gR2V0U3RhbmRieVNsb3RMaXN0KHRydWUp OworCX0KKworCXBmcmVlKHByZV9zdGFuZGJ5X3Nsb3RfbmFtZXMpOworfQorCisvKgorICogRmls dGVyIHRoZSBzdGFuZGJ5IHNsb3RzIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgbG9nIHNlcXVlbmNl IG51bWJlcgorICogKHdhaXRfZm9yX2xzbikuCisgKgorICogVGhpcyBmdW5jdGlvbiB1cGRhdGVz IHRoZSBwYXNzZWQgc3RhbmRieV9zbG90cyBsaXN0LCByZW1vdmluZyBhbnkgc2xvdHMgdGhhdAor ICogaGF2ZSBhbHJlYWR5IGNhdWdodCB1cCB0byBvciBzdXJwYXNzZWQgdGhlIGdpdmVuIHdhaXRf Zm9yX2xzbi4gQWRkaXRpb25hbGx5LAorICogaXQgcmVtb3ZlcyBzbG90cyB0aGF0IGhhdmUgYmVl biBpbnZhbGlkYXRlZCwgZHJvcHBlZCwgb3IgY29udmVydGVkIHRvCisgKiBsb2dpY2FsIHNsb3Rz LgorICovCit2b2lkCitGaWx0ZXJTdGFuZGJ5U2xvdHMoWExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24s IExpc3QgKipzdGFuZGJ5X3Nsb3RzKQoreworCUxpc3RDZWxsICAgKmxjOworCUxpc3QJICAgKnN0 YW5kYnlfc2xvdHNfY3B5ID0gKnN0YW5kYnlfc2xvdHM7CisKKwlmb3JlYWNoKGxjLCBzdGFuZGJ5 X3Nsb3RzX2NweSkKKwl7CisJCWNoYXIJICAgKm5hbWUgPSBsZmlyc3QobGMpOworCQljaGFyCSAg ICp3YXJuaW5nZm10ID0gTlVMTDsKKwkJUmVwbGljYXRpb25TbG90ICpzbG90OworCisJCXNsb3Qg PSBTZWFyY2hOYW1lZFJlcGxpY2F0aW9uU2xvdChuYW1lLCB0cnVlKTsKKworCQlpZiAoIXNsb3Qp CisJCXsKKwkJCS8qCisJCQkgKiBJdCBtYXkgaGFwcGVuIHRoYXQgdGhlIHNsb3Qgc3BlY2lmaWVk IGluIHN0YW5kYnlfc2xvdF9uYW1lcyBHVUMKKwkJCSAqIHZhbHVlIGlzIGRyb3BwZWQsIHNvIGxl dCdzIHNraXAgb3ZlciBpdC4KKwkJCSAqLworCQkJd2FybmluZ2ZtdCA9IF8oInJlcGxpY2F0aW9u IHNsb3QgXCIlc1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCIlc1wiIGRvZXMgbm90IGV4aXN0 LCBpZ25vcmluZyIpOworCQl9CisJCWVsc2UgaWYgKFNsb3RJc0xvZ2ljYWwoc2xvdCkpCisJCXsK KwkJCS8qCisJCQkgKiBJZiBhIGxvZ2ljYWwgc2xvdCBuYW1lIGlzIHByb3ZpZGVkIGluIHN0YW5k Ynlfc2xvdF9uYW1lcywgaXNzdWUKKwkJCSAqIGEgV0FSTklORyBhbmQgc2tpcCBpdC4gQWx0aG91 Z2ggbG9naWNhbCBzbG90cyBhcmUgZGlzYWxsb3dlZCBpbgorCQkJICogdGhlIEdVQyBjaGVja19o b29rKHZhbGlkYXRlX3N0YW5kYnlfc2xvdHMpLCBpdCBpcyBzdGlsbAorCQkJICogcG9zc2libGUg Zm9yIGEgdXNlciB0byBkcm9wIGFuIGV4aXN0aW5nIHBoeXNpY2FsIHNsb3QgYW5kCisJCQkgKiBy ZWNyZWF0ZSBhIGxvZ2ljYWwgc2xvdCB3aXRoIHRoZSBzYW1lIG5hbWUuIFNpbmNlIGl0IGlzCisJ CQkgKiBoYXJtbGVzcywgYSBXQVJOSU5HIHNob3VsZCBiZSBlbm91Z2gsIG5vIG5lZWQgdG8gZXJy b3Itb3V0LgorCQkJICovCisJCQl3YXJuaW5nZm10ID0gXygiY2Fubm90IGhhdmUgbG9naWNhbCBy ZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBpbiBwYXJhbWV0ZXIgXCIlc1wiLCBpZ25vcmluZyIpOwor CQl9CisJCWVsc2UKKwkJeworCQkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7CisKKwkJ CWlmIChzbG90LT5kYXRhLmludmFsaWRhdGVkICE9IFJTX0lOVkFMX05PTkUpCisJCQl7CisJCQkJ LyoKKwkJCQkgKiBTcGVjaWZpZWQgcGh5c2ljYWwgc2xvdCBoYXZlIGJlZW4gaW52YWxpZGF0ZWQs IHNvIG5vIHBvaW50CisJCQkJICogaW4gd2FpdGluZyBmb3IgaXQuCisJCQkJICovCisJCQkJd2Fy bmluZ2ZtdCA9IF8oInBoeXNpY2FsIHNsb3QgXCIlc1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIg XCIlc1wiIGhhcyBiZWVuIGludmFsaWRhdGVkLCBpZ25vcmluZyIpOworCQkJfQorCQkJZWxzZSBp ZiAoWExvZ1JlY1B0cklzSW52YWxpZChzbG90LT5kYXRhLnJlc3RhcnRfbHNuKSB8fAorCQkJCQkg c2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA8IHdhaXRfZm9yX2xzbikKKwkJCXsKKwkJCQlib29sCWlu YWN0aXZlID0gKHNsb3QtPmFjdGl2ZV9waWQgPT0gMCk7CisKKwkJCQlTcGluTG9ja1JlbGVhc2Uo JnNsb3QtPm11dGV4KTsKKworCQkJCS8qIExvZyB3YXJuaW5nIGlmIG5vIGFjdGl2ZV9waWQgZm9y IHRoaXMgcGh5c2ljYWwgc2xvdCAqLworCQkJCWlmIChpbmFjdGl2ZSkKKwkJCQkJZXJlcG9ydChX QVJOSU5HLAorCQkJCQkJCWVycm1zZygicmVwbGljYXRpb24gc2xvdCBcIiVzXCIgc3BlY2lmaWVk IGluIHBhcmFtZXRlciBcIiVzXCIgZG9lcyBub3QgaGF2ZSBhY3RpdmVfcGlkIiwKKwkJCQkJCQkJ ICAgbmFtZSwgInN0YW5kYnlfc2xvdF9uYW1lcyIpLAorCQkJCQkJCWVycmRldGFpbCgiTG9naWNh bCByZXBsaWNhdGlvbiBpcyB3YWl0aW5nIG9uIHRoZSAiCisJCQkJCQkJCQkgICJzdGFuZGJ5IGFz c29jaWF0ZWQgd2l0aCBcIiVzXCIuIiwgbmFtZSksCisJCQkJCQkJZXJyaGludCgiQ29uc2lkZXIg c3RhcnRpbmcgc3RhbmRieSBhc3NvY2lhdGVkIHdpdGggIgorCQkJCQkJCQkJIlwiJXNcIiBvciBh bWVuZCBzdGFuZGJ5X3Nsb3RfbmFtZXMuIiwgbmFtZSkpOworCisJCQkJLyogQ29udGludWUgaWYg dGhlIGN1cnJlbnQgc2xvdCBoYXNuJ3QgY2F1Z2h0IHVwLiAqLworCQkJCWNvbnRpbnVlOworCQkJ fQorCQkJZWxzZQorCQkJeworCQkJCUFzc2VydChzbG90LT5kYXRhLnJlc3RhcnRfbHNuID49IHdh aXRfZm9yX2xzbik7CisJCQl9CisKKwkJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwor CQl9CisKKwkJLyoKKwkJICogUmVhY2hpbmcgaGVyZSBpbmRpY2F0ZXMgdGhhdCBlaXRoZXIgdGhl IHNsb3QgaGFzIHBhc3NlZCB0aGUKKwkJICogd2FpdF9mb3JfbHNuIG9yIHRoZXJlIGlzIGFuIGlz c3VlIHdpdGggdGhlIHNsb3QgdGhhdCByZXF1aXJlcyBhCisJCSAqIHdhcm5pbmcgdG8gYmUgcmVw b3J0ZWQuCisJCSAqLworCQlpZiAod2FybmluZ2ZtdCkKKwkJCWVyZXBvcnQoV0FSTklORywgZXJy bXNnKHdhcm5pbmdmbXQsIG5hbWUsICJzdGFuZGJ5X3Nsb3RfbmFtZXMiKSk7CisKKwkJc3RhbmRi eV9zbG90c19jcHkgPSBmb3JlYWNoX2RlbGV0ZV9jdXJyZW50KHN0YW5kYnlfc2xvdHNfY3B5LCBs Yyk7CisJfQorCisJKnN0YW5kYnlfc2xvdHMgPSBzdGFuZGJ5X3Nsb3RzX2NweTsKK30KKworLyoK KyAqIFdhaXQgZm9yIHBoeXNpY2FsIHN0YW5kYnkgdG8gY29uZmlybSByZWNlaXZpbmcgdGhlIGdp dmVuIGxzbi4KKyAqCisgKiBVc2VkIGJ5IGxvZ2ljYWwgZGVjb2RpbmcgU1FMIGZ1bmN0aW9ucyB0 aGF0IGFjcXVpcmVkIHNsb3Qgd2l0aCBmYWlsb3ZlcgorICogZW5hYmxlZC4gSXQgd2FpdHMgZm9y IHBoeXNpY2FsIHN0YW5kYnlzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBoeXNpY2FsIHNsb3RzCisg KiBzcGVjaWZpZWQgaW4gdGhlIHN0YW5kYnlfc2xvdF9uYW1lcyBHVUMuCisgKi8KK3ZvaWQKK1dh aXRGb3JTdGFuZGJ5Q29uZmlybWF0aW9uKFhMb2dSZWNQdHIgd2FpdF9mb3JfbHNuKQoreworCUxp c3QJICAgKnN0YW5kYnlfc2xvdHM7CisKKwlpZiAoIU15UmVwbGljYXRpb25TbG90LT5kYXRhLmZh aWxvdmVyKQorCQlyZXR1cm47CisKKwlzdGFuZGJ5X3Nsb3RzID0gR2V0U3RhbmRieVNsb3RMaXN0 KHRydWUpOworCisJaWYgKHN0YW5kYnlfc2xvdHMgPT0gTklMKQorCQlyZXR1cm47CisKKwlDb25k aXRpb25WYXJpYWJsZVByZXBhcmVUb1NsZWVwKCZXYWxTbmRDdGwtPndhbF9jb25maXJtX3Jjdl9j dik7CisKKwlmb3IgKDs7KQorCXsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQlpZiAo Q29uZmlnUmVsb2FkUGVuZGluZykKKwkJeworCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNl OworCQkJUmVyZWFkQ29uZmlnQW5kUmVJbml0U2xvdExpc3QoJnN0YW5kYnlfc2xvdHMpOworCQl9 CisKKwkJRmlsdGVyU3RhbmRieVNsb3RzKHdhaXRfZm9yX2xzbiwgJnN0YW5kYnlfc2xvdHMpOwor CisJCS8qIEV4aXQgaWYgZG9uZSB3YWl0aW5nIGZvciBldmVyeSBzbG90LiAqLworCQlpZiAoc3Rh bmRieV9zbG90cyA9PSBOSUwpCisJCQlicmVhazsKKworCQkvKgorCQkgKiBXZSB3YWl0IGZvciB0 aGUgc2xvdHMgaW4gdGhlIHN0YW5kYnlfc2xvdF9uYW1lcyB0byBjYXRjaCB1cCwgYnV0IHdlCisJ CSAqIHVzZSBhIHRpbWVvdXQgc28gd2UgY2FuIGFsc28gY2hlY2sgdGhlIGlmIHRoZSBzdGFuZGJ5 X3Nsb3RfbmFtZXMgaGFzCisJCSAqIGJlZW4gY2hhbmdlZC4KKwkJICovCisJCUNvbmRpdGlvblZh cmlhYmxlVGltZWRTbGVlcCgmV2FsU25kQ3RsLT53YWxfY29uZmlybV9yY3ZfY3YsIDEwMDAsCisJ CQkJCQkJCQlXQUlUX0VWRU5UX1dBSVRfRk9SX1NUQU5EQllfQ09ORklSTUFUSU9OKTsKKwl9CisK KwlDb25kaXRpb25WYXJpYWJsZUNhbmNlbFNsZWVwKCk7CisJbGlzdF9mcmVlKHN0YW5kYnlfc2xv dHMpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwppbmRleCA4NDNhZThjZDY4Li4w YTA5YjZjNTA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3Mu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwpAQCAtMjEsNiArMjEs NyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RlY29kZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL2xvZ2ljYWwuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCisjaW5jbHVkZSAi cmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNp bmNsdWRlICJ1dGlscy9pbnZhbC5oIgogI2luY2x1ZGUgInV0aWxzL3BnX2xzbi5oIgpAQCAtNDc0 LDYgKzQ3NSw4IEBAIHBnX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3RfYWR2YW5jZShYTG9nUmVj UHRyIG1vdmV0bykKIAkJICogY3Jhc2gsIGJ1dCB0aGlzIG1ha2VzIHRoZSBkYXRhIGNvbnNpc3Rl bnQgYWZ0ZXIgYSBjbGVhbiBzaHV0ZG93bi4KIAkJICovCiAJCVJlcGxpY2F0aW9uU2xvdE1hcmtE aXJ0eSgpOworCisJCVBoeXNpY2FsV2FrZXVwTG9naWNhbFdhbFNuZCgpOwogCX0KIAogCXJldHVy biByZXRsc247CkBAIC01MTQsNiArNTE3LDEyIEBAIHBnX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xv dF9hZHZhbmNlKFhMb2dSZWNQdHIgbW92ZXRvKQogCQkJCQkJCQkJCQkgICAuc2VnbWVudF9jbG9z ZSA9IHdhbF9zZWdtZW50X2Nsb3NlKSwKIAkJCQkJCQkJCU5VTEwsIE5VTEwsIE5VTEwpOwogCisJ CS8qCisJCSAqIFdhaXQgZm9yIHNwZWNpZmllZCBzdHJlYW1pbmcgcmVwbGljYXRpb24gc3RhbmRi eSBzZXJ2ZXJzIChpZiBhbnkpCisJCSAqIHRvIGNvbmZpcm0gcmVjZWlwdCBvZiBXQUwgdXAgdG8g bW92ZXRvIGxzbi4KKwkJICovCisJCVdhaXRGb3JTdGFuZGJ5Q29uZmlybWF0aW9uKG1vdmV0byk7 CisKIAkJLyoKIAkJICogU3RhcnQgcmVhZGluZyBhdCB0aGUgc2xvdCdzIHJlc3RhcnRfbHNuLCB3 aGljaCB3ZSBrbm93IHRvIHBvaW50IHRvCiAJCSAqIGEgdmFsaWQgcmVjb3JkLgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCBjODFhN2E4MzQ0Li5hY2Y1NjJmZTkzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpAQCAtMTIxOSw3ICsxMjE5LDYgQEAgQ3JlYXRlUmVw bGljYXRpb25TbG90KENyZWF0ZVJlcGxpY2F0aW9uU2xvdENtZCAqY21kKQogCiAJcGFyc2VDcmVh dGVSZXBsU2xvdE9wdGlvbnMoY21kLCAmcmVzZXJ2ZV93YWwsICZzbmFwc2hvdF9hY3Rpb24sICZ0 d29fcGhhc2UsCiAJCQkJCQkJICAgJmZhaWxvdmVyKTsKLQogCWlmIChjbWQtPmtpbmQgPT0gUkVQ TElDQVRJT05fS0lORF9QSFlTSUNBTCkKIAl7CiAJCVJlcGxpY2F0aW9uU2xvdENyZWF0ZShjbWQt PnNsb3RuYW1lLCBmYWxzZSwKQEAgLTE3MjgsMjcgKzE3MjcsNzggQEAgV2FsU25kVXBkYXRlUHJv Z3Jlc3MoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjUHRyIGxzbiwgVHJhbnNh Y3Rpb25JZAogCQlQcm9jZXNzUGVuZGluZ1dyaXRlcygpOwogfQogCisvKgorICogV2FrZSB1cCB0 aGUgbG9naWNhbCB3YWxzZW5kZXIgcHJvY2Vzc2VzIHdpdGggZmFpbG92ZXItZW5hYmxlZCBzbG90 cyBpZiB0aGUKKyAqIGN1cnJlbnRseSBhY3F1aXJlZCBwaHlzaWNhbCBzbG90IGlzIHNwZWNpZmll ZCBpbiBzdGFuZGJ5X3Nsb3RfbmFtZXMKKyAqIEdVQy4KKyAqLwordm9pZAorUGh5c2ljYWxXYWtl dXBMb2dpY2FsV2FsU25kKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisJTGlzdAkgICAqc3Rh bmRieV9zbG90czsKKworCUFzc2VydChNeVJlcGxpY2F0aW9uU2xvdCAmJiBTbG90SXNQaHlzaWNh bChNeVJlcGxpY2F0aW9uU2xvdCkpOworCisJc3RhbmRieV9zbG90cyA9IEdldFN0YW5kYnlTbG90 TGlzdChmYWxzZSk7CisKKwlmb3JlYWNoKGxjLCBzdGFuZGJ5X3Nsb3RzKQorCXsKKwkJY2hhcgkg ICAqbmFtZSA9IGxmaXJzdChsYyk7CisKKwkJaWYgKHN0cmNtcChuYW1lLCBOYW1lU3RyKE15UmVw bGljYXRpb25TbG90LT5kYXRhLm5hbWUpKSA9PSAwKQorCQl7CisJCQlDb25kaXRpb25WYXJpYWJs ZUJyb2FkY2FzdCgmV2FsU25kQ3RsLT53YWxfY29uZmlybV9yY3ZfY3YpOworCQkJcmV0dXJuOwor CQl9CisJfQorfQorCiAvKgogICogV2FpdCB0aWxsIFdBTCA8IGxvYyBpcyBmbHVzaGVkIHRvIGRp c2sgc28gaXQgY2FuIGJlIHNhZmVseSBzZW50IHRvIGNsaWVudC4KICAqCi0gKiBSZXR1cm5zIGVu ZCBMU04gb2YgZmx1c2hlZCBXQUwuICBOb3JtYWxseSB0aGlzIHdpbGwgYmUgPj0gbG9jLCBidXQK LSAqIGlmIHdlIGRldGVjdCBhIHNodXRkb3duIHJlcXVlc3QgKGVpdGhlciBmcm9tIHBvc3RtYXN0 ZXIgb3IgY2xpZW50KQotICogd2Ugd2lsbCByZXR1cm4gZWFybHksIHNvIGNhbGxlciBtdXN0IGFs d2F5cyBjaGVjay4KKyAqIElmIHRoZSB3YWxzZW5kZXIgaG9sZHMgYSBsb2dpY2FsIHNsb3QgdGhh dCBoYXMgZW5hYmxlZCBmYWlsb3Zlciwgd2UgYWxzbworICogd2FpdCBmb3IgYWxsIHRoZSBzcGVj aWZpZWQgc3RyZWFtaW5nIHJlcGxpY2F0aW9uIHN0YW5kYnkgc2VydmVycyB0bworICogY29uZmly bSByZWNlaXB0IG9mIFdBTCB1cCB0byBSZWNlbnRGbHVzaFB0ci4KKyAqCisgKiBSZXR1cm5zIGVu ZCBMU04gb2YgZmx1c2hlZCBXQUwuICBOb3JtYWxseSB0aGlzIHdpbGwgYmUgPj0gbG9jLCBidXQg aWYgd2UKKyAqIGRldGVjdCBhIHNodXRkb3duIHJlcXVlc3QgKGVpdGhlciBmcm9tIHBvc3RtYXN0 ZXIgb3IgY2xpZW50KSB3ZSB3aWxsIHJldHVybgorICogZWFybHksIHNvIGNhbGxlciBtdXN0IGFs d2F5cyBjaGVjay4KICAqLwogc3RhdGljIFhMb2dSZWNQdHIKIFdhbFNuZFdhaXRGb3JXYWwoWExv Z1JlY1B0ciBsb2MpCiB7CiAJaW50CQkJd2FrZUV2ZW50czsKKwlib29sCQl3YWl0X2Zvcl9zdGFu ZGJ5ID0gZmFsc2U7CisJdWludDMyCQl3YWl0X2V2ZW50OworCUxpc3QJICAgKnN0YW5kYnlfc2xv dHMgPSBOSUw7CiAJc3RhdGljIFhMb2dSZWNQdHIgUmVjZW50Rmx1c2hQdHIgPSBJbnZhbGlkWExv Z1JlY1B0cjsKIAorCWlmIChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5mYWlsb3ZlcikKKwkJc3Rh bmRieV9zbG90cyA9IEdldFN0YW5kYnlTbG90TGlzdCh0cnVlKTsKKwogCS8qCi0JICogRmFzdCBw YXRoIHRvIGF2b2lkIGFjcXVpcmluZyB0aGUgc3BpbmxvY2sgaW4gY2FzZSB3ZSBhbHJlYWR5IGtu b3cgd2UKLQkgKiBoYXZlIGVub3VnaCBXQUwgYXZhaWxhYmxlLiBUaGlzIGlzIHBhcnRpY3VsYXJs eSBpbnRlcmVzdGluZyBpZiB3ZSdyZQotCSAqIGZhciBiZWhpbmQuCisJICogQ2hlY2sgaWYgYWxs IHRoZSBzdGFuZGJ5IHNlcnZlcnMgaGF2ZSBjb25maXJtZWQgcmVjZWlwdCBvZiBXQUwgdXAgdG8K KwkgKiBSZWNlbnRGbHVzaFB0ciBldmVuIHdoZW4gd2UgYWxyZWFkeSBrbm93IHdlIGhhdmUgZW5v dWdoIFdBTCBhdmFpbGFibGUuCisJICoKKwkgKiBOb3RlIHRoYXQgd2UgY2Fubm90IGRpcmVjdGx5 IHJldHVybiB3aXRob3V0IGNoZWNraW5nIHRoZSBzdGF0dXMgb2YKKwkgKiBzdGFuZGJ5IHNlcnZl cnMgYmVjYXVzZSB0aGUgc3RhbmRieV9zbG90X25hbWVzIG1heSBoYXZlIGNoYW5nZWQsIHdoaWNo CisJICogbWVhbnMgdGhlcmUgY291bGQgYmUgbmV3IHN0YW5kYnkgc2xvdHMgaW4gdGhlIGxpc3Qg dGhhdCBoYXZlIG5vdCB5ZXQKKwkgKiBjYXVnaHQgdXAgdG8gdGhlIFJlY2VudEZsdXNoUHRyLgog CSAqLwotCWlmIChSZWNlbnRGbHVzaFB0ciAhPSBJbnZhbGlkWExvZ1JlY1B0ciAmJgotCQlsb2Mg PD0gUmVjZW50Rmx1c2hQdHIpCi0JCXJldHVybiBSZWNlbnRGbHVzaFB0cjsKKwlpZiAoIVhMb2dS ZWNQdHJJc0ludmFsaWQoUmVjZW50Rmx1c2hQdHIpICYmIGxvYyA8PSBSZWNlbnRGbHVzaFB0cikK Kwl7CisJCUZpbHRlclN0YW5kYnlTbG90cyhSZWNlbnRGbHVzaFB0ciwgJnN0YW5kYnlfc2xvdHMp OworCisJCS8qCisJCSAqIEZhc3QgcGF0aCB0byBhdm9pZCBhY3F1aXJpbmcgdGhlIHNwaW5sb2Nr IGluIGNhc2Ugd2UgYWxyZWFkeSBrbm93CisJCSAqIHdlIGhhdmUgZW5vdWdoIFdBTCBhdmFpbGFi bGUgYW5kIGFsbCB0aGUgc3RhbmRieSBzZXJ2ZXJzIGhhdmUKKwkJICogY29uZmlybWVkIHJlY2Vp cHQgb2YgV0FMIHVwIHRvIFJlY2VudEZsdXNoUHRyLiBUaGlzIGlzIHBhcnRpY3VsYXJseQorCQkg KiBpbnRlcmVzdGluZyBpZiB3ZSdyZSBmYXIgYmVoaW5kLgorCQkgKi8KKwkJaWYgKHN0YW5kYnlf c2xvdHMgPT0gTklMKQorCQkJcmV0dXJuIFJlY2VudEZsdXNoUHRyOworCX0KIAogCS8qIEdldCBh IG1vcmUgcmVjZW50IGZsdXNoIHBvaW50ZXIuICovCiAJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3Mo KSkKQEAgLTE3NjksNyArMTgxOSw3IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2Mp CiAJCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQogCQl7CiAJCQlDb25maWdSZWxvYWRQZW5kaW5n ID0gZmFsc2U7Ci0JCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKKwkJCVJlcmVhZENv bmZpZ0FuZFJlSW5pdFNsb3RMaXN0KCZzdGFuZGJ5X3Nsb3RzKTsKIAkJCVN5bmNSZXBJbml0Q29u ZmlnKCk7CiAJCX0KIApAQCAtMTc4NCw4ICsxODM0LDE4IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExv Z1JlY1B0ciBsb2MpCiAJCWlmIChnb3RfU1RPUFBJTkcpCiAJCQlYTG9nQmFja2dyb3VuZEZsdXNo KCk7CiAKKwkJLyoKKwkJICogVXBkYXRlIHRoZSBzdGFuZGJ5IHNsb3RzIHRoYXQgaGF2ZSBub3Qg eWV0IGNhdWdodCB1cCB0byB0aGUgZmx1c2hlZAorCQkgKiBwb3NpdGlvbi4gSXQgaXMgZ29vZCB0 byB3YWl0IHVwIHRvIFJlY2VudEZsdXNoUHRyIGFuZCB0aGVuIGxldCBpdAorCQkgKiBzZW5kIHRo ZSBjaGFuZ2VzIHRvIGxvZ2ljYWwgc3Vic2NyaWJlcnMgb25lIGJ5IG9uZSB3aGljaCBhcmUKKwkJ ICogYWxyZWFkeSBjb3ZlcmVkIGluIFJlY2VudEZsdXNoUHRyIHdpdGhvdXQgbmVlZGluZyB0byB3 YWl0IG9uIGV2ZXJ5CisJCSAqIGNoYW5nZSBmb3Igc3RhbmRieSBjb25maXJtYXRpb24uCisJCSAq LworCQlpZiAod2FpdF9mb3Jfc3RhbmRieSkKKwkJCUZpbHRlclN0YW5kYnlTbG90cyhSZWNlbnRG bHVzaFB0ciwgJnN0YW5kYnlfc2xvdHMpOworCiAJCS8qIFVwZGF0ZSBvdXIgaWRlYSBvZiB0aGUg Y3VycmVudGx5IGZsdXNoZWQgcG9zaXRpb24uICovCi0JCWlmICghUmVjb3ZlcnlJblByb2dyZXNz KCkpCisJCWVsc2UgaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKIAkJCVJlY2VudEZsdXNoUHRy ID0gR2V0Rmx1c2hSZWNQdHIoTlVMTCk7CiAJCWVsc2UKIAkJCVJlY2VudEZsdXNoUHRyID0gR2V0 WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKQEAgLTE4MTMsOSArMTg3MywxOCBAQCBXYWxTbmRXYWl0 Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCQkJIXdhaXRpbmdfZm9yX3BpbmdfcmVzcG9uc2UpCiAJ CQlXYWxTbmRLZWVwYWxpdmUoZmFsc2UsIEludmFsaWRYTG9nUmVjUHRyKTsKIAotCQkvKiBjaGVj ayB3aGV0aGVyIHdlJ3JlIGRvbmUgKi8KLQkJaWYgKGxvYyA8PSBSZWNlbnRGbHVzaFB0cikKKwkJ aWYgKGxvYyA+IFJlY2VudEZsdXNoUHRyKQorCQkJd2FpdF9ldmVudCA9IFdBSVRfRVZFTlRfV0FM X1NFTkRFUl9XQUlUX0ZPUl9XQUw7CisJCWVsc2UgaWYgKHN0YW5kYnlfc2xvdHMpCisJCXsKKwkJ CXdhaXRfZXZlbnQgPSBXQUlUX0VWRU5UX1dBSVRfRk9SX1NUQU5EQllfQ09ORklSTUFUSU9OOwor CQkJd2FpdF9mb3Jfc3RhbmRieSA9IHRydWU7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBBbHJl YWR5IGNhdWdodCB1cCBhbmQgZG9lc24ndCBuZWVkIHRvIHdhaXQgZm9yIHN0YW5kYnlfc2xvdHMu ICovCiAJCQlicmVhazsKKwkJfQogCiAJCS8qIFdhaXRpbmcgZm9yIG5ldyBXQUwuIFNpbmNlIHdl IG5lZWQgdG8gd2FpdCwgd2UncmUgbm93IGNhdWdodCB1cC4gKi8KIAkJV2FsU25kQ2F1Z2h0VXAg PSB0cnVlOwpAQCAtMTg1NSw5ICsxOTI0LDExIEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0 ciBsb2MpCiAJCWlmIChwcV9pc19zZW5kX3BlbmRpbmcoKSkKIAkJCXdha2VFdmVudHMgfD0gV0xf U09DS0VUX1dSSVRFQUJMRTsKIAotCQlXYWxTbmRXYWl0KHdha2VFdmVudHMsIHNsZWVwdGltZSwg V0FJVF9FVkVOVF9XQUxfU0VOREVSX1dBSVRfRk9SX1dBTCk7CisJCVdhbFNuZFdhaXQod2FrZUV2 ZW50cywgc2xlZXB0aW1lLCB3YWl0X2V2ZW50KTsKIAl9CiAKKwlsaXN0X2ZyZWUoc3RhbmRieV9z bG90cyk7CisKIAkvKiByZWFjdGl2YXRlIGxhdGNoIHNvIFdhbFNuZExvb3Aga25vd3MgdG8gY29u dGludWUgKi8KIAlTZXRMYXRjaChNeUxhdGNoKTsKIAlyZXR1cm4gUmVjZW50Rmx1c2hQdHI7CkBA IC0yMjY1LDYgKzIzMzYsNyBAQCBQaHlzaWNhbENvbmZpcm1SZWNlaXZlZExvY2F0aW9uKFhMb2dS ZWNQdHIgbHNuKQogCXsKIAkJUmVwbGljYXRpb25TbG90TWFya0RpcnR5KCk7CiAJCVJlcGxpY2F0 aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRMU04oKTsKKwkJUGh5c2ljYWxXYWtldXBMb2dpY2FsV2Fs U25kKCk7CiAJfQogCiAJLyoKQEAgLTM1MjcsNiArMzU5OSw3IEBAIFdhbFNuZFNobWVtSW5pdCh2 b2lkKQogCiAJCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmV2FsU25kQ3RsLT53YWxfZmx1c2hfY3Yp OwogCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJldhbFNuZEN0bC0+d2FsX3JlcGxheV9jdik7CisJ CUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmV2FsU25kQ3RsLT53YWxfY29uZmlybV9yY3ZfY3YpOwog CX0KIH0KIApAQCAtMzU5Niw4ICszNjY5LDE0IEBAIFdhbFNuZFdhaXQodWludDMyIHNvY2tldF9l dmVudHMsIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnQpCiAJICoKIAkgKiBBbmQsIHdl IHVzZSBzZXBhcmF0ZSBzaGFyZWQgbWVtb3J5IENWcyBmb3IgcGh5c2ljYWwgYW5kIGxvZ2ljYWwK IAkgKiB3YWxzZW5kZXJzIGZvciBzZWxlY3RpdmUgd2FrZSB1cHMsIHNlZSBXYWxTbmRXYWtldXAo KSBmb3IgbW9yZSBkZXRhaWxzLgorCSAqCisJICogSWYgdGhlIHdhaXQgZXZlbnQgaXMgV0FJVF9G T1JfU1RBTkRCWV9DT05GSVJNQVRJT04sIHdhaXQgb24gYW5vdGhlciBDVgorCSAqIHVudGlsIGF3 YWtlbmVkIGJ5IHBoeXNpY2FsIHdhbHNlbmRlcnMgYWZ0ZXIgdGhlIHdhbHJlY2VpdmVyIGNvbmZp cm1zIHRoZQorCSAqIHJlY2VpcHQgb2YgdGhlIExTTi4KIAkgKi8KLQlpZiAoTXlXYWxTbmQtPmtp bmQgPT0gUkVQTElDQVRJT05fS0lORF9QSFlTSUNBTCkKKwlpZiAod2FpdF9ldmVudCA9PSBXQUlU X0VWRU5UX1dBSVRfRk9SX1NUQU5EQllfQ09ORklSTUFUSU9OKQorCQlDb25kaXRpb25WYXJpYWJs ZVByZXBhcmVUb1NsZWVwKCZXYWxTbmRDdGwtPndhbF9jb25maXJtX3Jjdl9jdik7CisJZWxzZSBp ZiAoTXlXYWxTbmQtPmtpbmQgPT0gUkVQTElDQVRJT05fS0lORF9QSFlTSUNBTCkKIAkJQ29uZGl0 aW9uVmFyaWFibGVQcmVwYXJlVG9TbGVlcCgmV2FsU25kQ3RsLT53YWxfZmx1c2hfY3YpOwogCWVs c2UgaWYgKE15V2FsU25kLT5raW5kID09IFJFUExJQ0FUSU9OX0tJTkRfTE9HSUNBTCkKIAkJQ29u ZGl0aW9uVmFyaWFibGVQcmVwYXJlVG9TbGVlcCgmV2FsU25kQ3RsLT53YWxfcmVwbGF5X2N2KTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMu dHh0IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQKaW5k ZXggMDg3OWJhYjU3ZS4uZmVhZDMxNzQ4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQKQEAgLTc4LDYgKzc4LDcgQEAgR1NTX09QRU5fU0VS VkVSCSJXYWl0aW5nIHRvIHJlYWQgZGF0YSBmcm9tIHRoZSBjbGllbnQgd2hpbGUgZXN0YWJsaXNo aW5nIGEgR1NTQVAKIExJQlBRV0FMUkVDRUlWRVJfQ09OTkVDVAkiV2FpdGluZyBpbiBXQUwgcmVj ZWl2ZXIgdG8gZXN0YWJsaXNoIGNvbm5lY3Rpb24gdG8gcmVtb3RlIHNlcnZlci4iCiBMSUJQUVdB TFJFQ0VJVkVSX1JFQ0VJVkUJIldhaXRpbmcgaW4gV0FMIHJlY2VpdmVyIHRvIHJlY2VpdmUgZGF0 YSBmcm9tIHJlbW90ZSBzZXJ2ZXIuIgogU1NMX09QRU5fU0VSVkVSCSJXYWl0aW5nIGZvciBTU0wg d2hpbGUgYXR0ZW1wdGluZyBjb25uZWN0aW9uLiIKK1dBSVRfRk9SX1NUQU5EQllfQ09ORklSTUFU SU9OCSJXYWl0aW5nIGZvciB0aGUgV0FMIHRvIGJlIHJlY2VpdmVkIGJ5IHBoeXNpY2FsIHN0YW5k YnkuIgogV0FMX1NFTkRFUl9XQUlUX0ZPUl9XQUwJIldhaXRpbmcgZm9yIFdBTCB0byBiZSBmbHVz aGVkIGluIFdBTCBzZW5kZXIgcHJvY2Vzcy4iCiBXQUxfU0VOREVSX1dSSVRFX0RBVEEJIldhaXRp bmcgZm9yIGFueSBhY3Rpdml0eSB3aGVuIHByb2Nlc3NpbmcgcmVwbGllcyBmcm9tIFdBTCByZWNl aXZlciBpbiBXQUwgc2VuZGVyIHByb2Nlc3MuIgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxl cy5jCmluZGV4IDU3NjM0NTQzMzYuLjA4ZGI0YzM3YmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3RhYmxlcy5jCkBAIC00NjE4LDYgKzQ2MTgsMjAgQEAgc3RydWN0IGNvbmZpZ19zdHJpbmcgQ29u ZmlndXJlTmFtZXNTdHJpbmdbXSA9CiAJCWNoZWNrX2RlYnVnX2lvX2RpcmVjdCwgYXNzaWduX2Rl YnVnX2lvX2RpcmVjdCwgTlVMTAogCX0sCiAKKwl7CisJCXsic3RhbmRieV9zbG90X25hbWVzIiwg UEdDX1NJR0hVUCwgUkVQTElDQVRJT05fUFJJTUFSWSwKKwkJCWdldHRleHRfbm9vcCgiTGlzdHMg c3RyZWFtaW5nIHJlcGxpY2F0aW9uIHN0YW5kYnkgc2VydmVyIHNsb3QgIgorCQkJCQkJICJuYW1l cyB0aGF0IGxvZ2ljYWwgV0FMIHNlbmRlciBwcm9jZXNzZXMgd2lsbCB3YWl0IGZvci4iKSwKKwkJ CWdldHRleHRfbm9vcCgiRGVjb2RlZCBjaGFuZ2VzIGFyZSBzZW50IG91dCB0byBwbHVnaW5zIGJ5 IGxvZ2ljYWwgIgorCQkJCQkJICJXQUwgc2VuZGVyIHByb2Nlc3NlcyBvbmx5IGFmdGVyIHNwZWNp ZmllZCAiCisJCQkJCQkgInJlcGxpY2F0aW9uIHNsb3RzIGNvbmZpcm0gcmVjZWl2aW5nIFdBTC4i KSwKKwkJCUdVQ19MSVNUX0lOUFVUIHwgR1VDX0xJU1RfUVVPVEUKKwkJfSwKKwkJJnN0YW5kYnlf c2xvdF9uYW1lcywKKwkJIiIsCisJCWNoZWNrX3N0YW5kYnlfc2xvdF9uYW1lcywgYXNzaWduX3N0 YW5kYnlfc2xvdF9uYW1lcywgTlVMTAorCX0sCisKIAkvKiBFbmQtb2YtbGlzdCBtYXJrZXIgKi8K IAl7CiAJCXtOVUxMLCAwLCAwLCBOVUxMLCBOVUxMfSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYu c2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmlu ZGV4IDY4MzBmN2QxNmIuLjBjN2I2MTE3ZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTMzNCw2ICszMzQsOCBAQAogCQkJCSMgbWV0aG9k IHRvIGNob29zZSBzeW5jIHN0YW5kYnlzLCBudW1iZXIgb2Ygc3luYyBzdGFuZGJ5cywKIAkJCQkj IGFuZCBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhcHBsaWNhdGlvbl9uYW1lCiAJCQkJIyBmcm9t IHN0YW5kYnkocyk7ICcqJyA9IGFsbAorI3N0YW5kYnlfc2xvdF9uYW1lcyA9ICcnICMgc3RyZWFt aW5nIHJlcGxpY2F0aW9uIHN0YW5kYnkgc2VydmVyIHNsb3QgbmFtZXMgdGhhdAorCQkJCSMgbG9n aWNhbCB3YWxzZW5kZXIgcHJvY2Vzc2VzIHdpbGwgd2FpdCBmb3IKIAogIyAtIFN0YW5kYnkgU2Vy dmVycyAtCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRleCBmODFiZWY5ZTQyLi5lZWY5ZjI1YzQ1 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKKysrIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBAIC0yMjksNiArMjI5LDcgQEAgZXh0ZXJuIFBHRExM SU1QT1JUIFJlcGxpY2F0aW9uU2xvdCAqTXlSZXBsaWNhdGlvblNsb3Q7CiAKIC8qIEdVQ3MgKi8K IGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzOworZXh0ZXJuIFBH RExMSU1QT1JUIGNoYXIgKnN0YW5kYnlfc2xvdF9uYW1lczsKIAogLyogc2htZW0gaW5pdGlhbGl6 YXRpb24gZnVuY3Rpb25zICovCiBleHRlcm4gU2l6ZSBSZXBsaWNhdGlvblNsb3RzU2htZW1TaXpl KHZvaWQpOwpAQCAtMjc1LDQgKzI3NiwxMCBAQCBleHRlcm4gdm9pZCBDaGVja1BvaW50UmVwbGlj YXRpb25TbG90cyhib29sIGlzX3NodXRkb3duKTsKIGV4dGVybiB2b2lkIENoZWNrU2xvdFJlcXVp cmVtZW50cyh2b2lkKTsKIGV4dGVybiB2b2lkIENoZWNrU2xvdFBlcm1pc3Npb25zKHZvaWQpOwog CitleHRlcm4gTGlzdCAqR2V0U3RhbmRieVNsb3RMaXN0KGJvb2wgY29weSk7CitleHRlcm4gdm9p ZCBXYWl0Rm9yU3RhbmRieUNvbmZpcm1hdGlvbihYTG9nUmVjUHRyIHdhaXRfZm9yX2xzbik7Citl eHRlcm4gdm9pZCBGaWx0ZXJTdGFuZGJ5U2xvdHMoWExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24sCisJ CQkJCQkJCQkgTGlzdCAqKnN0YW5kYnlfc2xvdHMpOworZXh0ZXJuIHZvaWQgUmVyZWFkQ29uZmln QW5kUmVJbml0U2xvdExpc3QoTGlzdCAqKnN0YW5kYnlfc2xvdHMpOworCiAjZW5kaWYJCQkJCQkJ LyogU0xPVF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5k ZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oCmluZGV4IDFiNThkNTBi M2IuLjlhNDJiMDFmOWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNl bmRlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oCkBAIC00NSw2 ICs0NSw3IEBAIGV4dGVybiB2b2lkIFdhbFNuZEluaXRTdG9wcGluZyh2b2lkKTsKIGV4dGVybiB2 b2lkIFdhbFNuZFdhaXRTdG9wcGluZyh2b2lkKTsKIGV4dGVybiB2b2lkIEhhbmRsZVdhbFNuZElu aXRTdG9wcGluZyh2b2lkKTsKIGV4dGVybiB2b2lkIFdhbFNuZFJxc3RGaWxlUmVsb2FkKHZvaWQp OworZXh0ZXJuIHZvaWQgUGh5c2ljYWxXYWtldXBMb2dpY2FsV2FsU25kKHZvaWQpOwogCiAvKgog ICogUmVtZW1iZXIgdGhhdCB3ZSB3YW50IHRvIHdha2V1cCB3YWxzZW5kZXJzIGxhdGVyCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyX3ByaXZhdGUuaAppbmRleCAzMTEzZTllYTQ3 Li4wZjk2MmIwYzcyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5k ZXJfcHJpdmF0ZS5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlcl9wcml2 YXRlLmgKQEAgLTExMyw2ICsxMTMsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlDb25kaXRpb25WYXJp YWJsZSB3YWxfZmx1c2hfY3Y7CiAJQ29uZGl0aW9uVmFyaWFibGUgd2FsX3JlcGxheV9jdjsKIAor CS8qCisJICogVXNlZCBieSBwaHlzaWNhbCB3YWxzZW5kZXJzIGhvbGRpbmcgc2xvdHMgc3BlY2lm aWVkIGluCisJICogc3RhbmRieV9zbG90X25hbWVzIHRvIHdha2UgdXAgbG9naWNhbCB3YWxzZW5k ZXJzIGhvbGRpbmcKKwkgKiBmYWlsb3Zlci1lbmFibGVkIHNsb3RzIHdoZW4gYSB3YWxyZWNlaXZl ciBjb25maXJtcyB0aGUgcmVjZWlwdCBvZiBMU04uCisJICovCisJQ29uZGl0aW9uVmFyaWFibGUg d2FsX2NvbmZpcm1fcmN2X2N2OworCiAJV2FsU25kCQl3YWxzbmRzW0ZMRVhJQkxFX0FSUkFZX01F TUJFUl07CiB9IFdhbFNuZEN0bERhdGE7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L2d1Y19ob29rcy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjX2hvb2tzLmgKaW5kZXggNTMwMGM0 NGYzYi4uNDY0OTk2YjRmMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjX2hvb2tz LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjX2hvb2tzLmgKQEAgLTE2Miw1ICsxNjIsOCBA QCBleHRlcm4gYm9vbCBjaGVja193YWxfY29uc2lzdGVuY3lfY2hlY2tpbmcoY2hhciAqKm5ld3Zh bCwgdm9pZCAqKmV4dHJhLAogZXh0ZXJuIHZvaWQgYXNzaWduX3dhbF9jb25zaXN0ZW5jeV9jaGVj a2luZyhjb25zdCBjaGFyICpuZXd2YWwsIHZvaWQgKmV4dHJhKTsKIGV4dGVybiBib29sIGNoZWNr X3dhbF9zZWdtZW50X3NpemUoaW50ICpuZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNv dXJjZSk7CiBleHRlcm4gdm9pZCBhc3NpZ25fd2FsX3N5bmNfbWV0aG9kKGludCBuZXdfd2FsX3N5 bmNfbWV0aG9kLCB2b2lkICpleHRyYSk7CitleHRlcm4gYm9vbCBjaGVja19zdGFuZGJ5X3Nsb3Rf bmFtZXMoY2hhciAqKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLAorCQkJCQkJCQkJIEd1Y1NvdXJjZSBz b3VyY2UpOworZXh0ZXJuIHZvaWQgYXNzaWduX3N0YW5kYnlfc2xvdF9uYW1lcyhjb25zdCBjaGFy ICpuZXd2YWwsIHZvaWQgKmV4dHJhKTsKIAogI2VuZGlmCQkJCQkJCS8qIEdVQ19IT09LU19IICov CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3Jl Y292ZXJ5L21lc29uLmJ1aWxkCmluZGV4IDg4ZmIwMzA2ZjUuLjQxNTJjMDczMTggMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5 L21lc29uLmJ1aWxkCkBAIC00NSw2ICs0NSw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAzN19p bnZhbGlkX2RhdGFiYXNlLnBsJywKICAgICAgICd0LzAzOF9zYXZlX2xvZ2ljYWxfc2xvdHNfc2h1 dGRvd24ucGwnLAogICAgICAgJ3QvMDM5X2VuZF9vZl93YWwucGwnLAorICAgICAgJ3QvMDUwX3N0 YW5kYnlfZmFpbG92ZXJfc2xvdHNfc3luYy5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDA2X2xvZ2ljYWxfZGVjb2RpbmcucGwgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzAwNl9sb2dpY2FsX2RlY29kaW5nLnBsCmluZGV4IDVjN2I0Y2E1ZTMuLjg1 ZjAxOTc3NGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDA2X2xvZ2ljYWxfZGVj b2RpbmcucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMDZfbG9naWNhbF9kZWNvZGluZy5w bApAQCAtMTcyLDkgKzE3MiwxMCBAQCBpcygkbm9kZV9wcmltYXJ5LT5zbG90KCdvdGhlcmRiX3Ns b3QnKS0+eydzbG90X25hbWUnfSwKIAl1bmRlZiwgJ2xvZ2ljYWwgc2xvdCB3YXMgYWN0dWFsbHkg ZHJvcHBlZCB3aXRoIERCJyk7CiAKICMgVGVzdCBsb2dpY2FsIHNsb3QgYWR2YW5jaW5nIGFuZCBp dHMgZHVyYWJpbGl0eS4KKyMgUGFzcyBmYWlsb3Zlcj10cnVlIChsYXN0LWFyZyksIGl0IHNob3Vs ZCBub3QgaGF2ZSBhbnkgaW1wYWN0IG9uIGFkdmFuY2luZy4KIG15ICRsb2dpY2FsX3Nsb3QgPSAn bG9naWNhbF9zbG90JzsKICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgcGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgnJGxvZ2ljYWxfc2xvdCcs ICd0ZXN0X2RlY29kaW5nJywgZmFsc2UpOyIKKwkiU0VMRUNUIHBnX2NyZWF0ZV9sb2dpY2FsX3Jl cGxpY2F0aW9uX3Nsb3QoJyRsb2dpY2FsX3Nsb3QnLCAndGVzdF9kZWNvZGluZycsIGZhbHNlLCBm YWxzZSwgdHJ1ZSk7IgogKTsKICRub2RlX3ByaW1hcnktPnBzcWwoCiAJJ3Bvc3RncmVzJywgIgpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTBfc3RhbmRieV9mYWlsb3Zlcl9zbG90 c19zeW5jLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTBfc3RhbmRieV9mYWlsb3Zlcl9zbG90 c19zeW5jLnBsCmluZGV4IGMxN2FiZmI0MGIuLmQ1MGJiYjNhZTcgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlY292ZXJ5L3QvMDUwX3N0YW5kYnlfZmFpbG92ZXJfc2xvdHNfc3luYy5wbAorKysgYi9z cmMvdGVzdC9yZWNvdmVyeS90LzA1MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5bmMucGwKQEAg LTg3LDE3ICs4NywzMCBAQCBpcyggJHB1Ymxpc2hlci0+c2FmZV9wc3FsKAogJHN1YnNjcmliZXIx LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX215c3Vi MSBFTkFCTEUiKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKLSMgVGVzdCBsb2dpY2FsIGZhaWxvdmVyIHNsb3RzIG9uIHRoZSBzdGFuZGJ5Ci0j IENvbmZpZ3VyZSBzdGFuZGJ5MSB0byByZXBsaWNhdGUgYW5kIHN5bmNocm9uaXplIGxvZ2ljYWwg c2xvdHMgY29uZmlndXJlZAotIyBmb3IgZmFpbG92ZXIgb24gdGhlIHByaW1hcnkKKyMgVGVzdCBw cmltYXJ5IGRpc2FsbG93aW5nIHNwZWNpZmllZCBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3RzIGdl dHRpbmcgYWhlYWQgb2YKKyMgc3BlY2lmaWVkIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3RzLiBJ dCB1c2VzIHRoZSBmb2xsb3dpbmcgc2V0IHVwOgogIwotIyAgICAgICAgICAgICAgZmFpbG92ZXIg c2xvdCBsc3ViMV9zbG90LT58IC0tLS0+IHN1YnNjcmliZXIxIChjb25uZWN0ZWQgdmlhIGxvZ2lj YWwgcmVwbGljYXRpb24pCi0jIHByaW1hcnkgLS0tPiAgICAgICAgICAgICAgICAgICAgICAgICAg IHwKLSMgICAgICAgICAgICAgIHBoeXNpY2FsIHNsb3Qgc2IxX3Nsb3QtLS0+fCAtLS0tPiBzdGFu ZGJ5MSAoY29ubmVjdGVkIHZpYSBzdHJlYW1pbmcgcmVwbGljYXRpb24pCi0jICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIGxzdWIxX3Nsb3Qo c3luY2VkX3Nsb3QpCisjCQkJCXwgLS0tLT4gc3RhbmRieTEgKHByaW1hcnlfc2xvdF9uYW1lID0g c2IxX3Nsb3QpCisjCQkJCXwgLS0tLT4gc3RhbmRieTIgKHByaW1hcnlfc2xvdF9uYW1lID0gc2Iy X3Nsb3QpCisjIHByaW1hcnkgLS0tLS0JfAorIwkJCQl8IC0tLS0+IHN1YnNjcmliZXIxIChmYWls b3ZlciA9IHRydWUpCisjCQkJCXwgLS0tLT4gc3Vic2NyaWJlcjIgKGZhaWxvdmVyID0gZmFsc2Up CisjCisjIHN0YW5kYnlfc2xvdF9uYW1lcyA9ICdzYjFfc2xvdCcKKyMKKyMgU2V0IHVwIGlzIGNv bmZpZ3VyZWQgaW4gc3VjaCBhIHdheSB0aGF0IHRoZSBsb2dpY2FsIHNsb3Qgb2Ygc3Vic2NyaWJl cjEgaXMKKyMgZW5hYmxlZCBmYWlsb3ZlciwgdGh1cyBpdCB3aWxsIHdhaXQgZm9yIHRoZSBwaHlz aWNhbCBzbG90IG9mCisjIHN0YW5kYnkxKHNiMV9zbG90KSB0byBjYXRjaCB1cCBiZWZvcmUgc2Vu ZGluZyBkZWNvZGVkIGNoYW5nZXMgdG8gc3Vic2NyaWJlcjEuCiAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCisjIENyZWF0ZSBwcmltYXJ5CiBteSAk cHJpbWFyeSA9ICRwdWJsaXNoZXI7CisKKyRwcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCisJcXtT RUxFQ1QgcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3NiMV9zbG90Jyk7fSk7 CiskcHJpbWFyeS0+cHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNUIHBnX2NyZWF0ZV9waHlzaWNh bF9yZXBsaWNhdGlvbl9zbG90KCdzYjJfc2xvdCcpO30pOworCiBteSAkYmFja3VwX25hbWUgPSAn YmFja3VwJzsKICRwcmltYXJ5LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKIApAQCAtMTA3LDIxICsx MjAsMjAxIEBAICRzdGFuZGJ5MS0+aW5pdF9mcm9tX2JhY2t1cCgKIAkkcHJpbWFyeSwgJGJhY2t1 cF9uYW1lLAogCWhhc19zdHJlYW1pbmcgPT4gMSwKIAloYXNfcmVzdG9yaW5nID0+IDEpOworJHN0 YW5kYnkxLT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCitwcmltYXJ5X3Ns b3RfbmFtZSA9ICdzYjFfc2xvdCcKKykpOworJHN0YW5kYnkxLT5zdGFydDsKKyRwcmltYXJ5LT53 YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTEpOworCisjIENyZWF0ZSBhbm90aGVyIHN0 YW5kYnkKK215ICRzdGFuZGJ5MiA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Rh bmRieTInKTsKKyRzdGFuZGJ5Mi0+aW5pdF9mcm9tX2JhY2t1cCgKKwkkcHJpbWFyeSwgJGJhY2t1 cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSwKKwloYXNfcmVzdG9yaW5nID0+IDEpOworJHN0 YW5kYnkyLT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCitwcmltYXJ5X3Ns b3RfbmFtZSA9ICdzYjJfc2xvdCcKKykpOworJHN0YW5kYnkyLT5zdGFydDsKKyRwcmltYXJ5LT53 YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTIpOworCisjIENvbmZpZ3VyZSBwcmltYXJ5 IHRvIGRpc2FsbG93IGFueSBsb2dpY2FsIHNsb3RzIHRoYXQgZW5hYmxlZCBmYWlsb3ZlciBmcm9t CisjIGdldHRpbmcgYWhlYWQgb2Ygc3BlY2lmaWVkIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3Qg KHNiMV9zbG90KS4KKyRwcmltYXJ5LT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywg cXEoCitzdGFuZGJ5X3Nsb3RfbmFtZXMgPSAnc2IxX3Nsb3QnCispKTsKKyRwcmltYXJ5LT5yZWxv YWQ7CisKKyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0YWJf aW50IChhIGludCBQUklNQVJZIEtFWSk7Iik7CisKKyMgQ3JlYXRlIGEgdGFibGUgYW5kIHJlZnJl c2ggdGhlIHB1YmxpY2F0aW9uCiskc3Vic2NyaWJlcjEtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCBxcVsKKwlDUkVBVEUgVEFCTEUgdGFiX2ludCAoYSBpbnQgUFJJTUFSWSBLRVkpOworCUFMVEVS IFNVQlNDUklQVElPTiByZWdyZXNzX215c3ViMSBSRUZSRVNIIFBVQkxJQ0FUSU9OIFdJVEggKGNv cHlfZGF0YSA9IGZhbHNlKTsKK10pOworCisjIENyZWF0ZSBhbm90aGVyIHN1YnNjcmliZXIgbm9k ZSB3aXRob3V0IGVuYWJsaW5nIGZhaWxvdmVyLCB3YWl0IGZvciBzeW5jIHRvCisjIGNvbXBsZXRl CitteSAkc3Vic2NyaWJlcjIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNj cmliZXIyJyk7Ciskc3Vic2NyaWJlcjItPmluaXQ7Ciskc3Vic2NyaWJlcjItPnN0YXJ0OworJHN1 YnNjcmliZXIyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisJQ1JFQVRFIFRBQkxFIHRh Yl9pbnQgKGEgaW50IFBSSU1BUlkgS0VZKTsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf bXlzdWIyIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gcmVncmVz c19teXB1YiBXSVRIIChzbG90X25hbWUgPSBsc3ViMl9zbG90LCBjb3B5X2RhdGEgPSBmYWxzZSk7 CitdKTsKIAorIyBTdG9wIHRoZSBzdGFuZGJ5IGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVk IHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3Qgc28KKyMgdGhhdCB0aGUgbG9naWNhbCByZXBsaWNh dGlvbiBzbG90IHdvbid0IHJlY2VpdmUgY2hhbmdlcyB1bnRpbCB0aGUgc3RhbmRieQorIyBjb21l cyB1cC4KKyRzdGFuZGJ5MS0+c3RvcDsKKworIyBDcmVhdGUgc29tZSBkYXRhIG9uIHRoZSBwcmlt YXJ5CitteSAkcHJpbWFyeV9yb3dfY291bnQgPSAxMDsKKyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX2ludCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEs ICRwcmltYXJ5X3Jvd19jb3VudCk7Iik7CisKKyMgV2FpdCBmb3IgdGhlIHN0YW5kYnkgdGhhdCdz IHVwIGFuZCBydW5uaW5nIGdldHMgdGhlIGRhdGEgZnJvbSBwcmltYXJ5CiskcHJpbWFyeS0+d2Fp dF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkyKTsKK215ICRyZXN1bHQgPSAkc3RhbmRieTIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgPSAkcHJpbWFyeV9yb3df Y291bnQgRlJPTSB0YWJfaW50OyIpOworaXMoJHJlc3VsdCwgJ3QnLCAic3RhbmRieTIgZ2V0cyBk YXRhIGZyb20gcHJpbWFyeSIpOworCisjIFdhaXQgZm9yIHRoZSBzdWJzY3JpcHRpb24gdGhhdCdz IHVwIGFuZCBydW5uaW5nIGFuZCBpcyBub3QgZW5hYmxlZCBmb3IgZmFpbG92ZXIuCisjIEl0IGdl dHMgdGhlIGRhdGEgZnJvbSBwcmltYXJ5IHdpdGhvdXQgd2FpdGluZyBmb3IgYW55IHN0YW5kYnlz LgorJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgncmVncmVzc19teXN1YjInKTsKKyRyZXN1 bHQgPSAkc3Vic2NyaWJlcjItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQo KikgPSAkcHJpbWFyeV9yb3dfY291bnQgRlJPTSB0YWJfaW50OyIpOworaXMoJHJlc3VsdCwgJ3Qn LCAic3Vic2NyaWJlcjIgZ2V0cyBkYXRhIGZyb20gcHJpbWFyeSIpOworCisjIFRoZSBzdWJzY3Jp cHRpb24gdGhhdCdzIHVwIGFuZCBydW5uaW5nIGFuZCBpcyBlbmFibGVkIGZvciBmYWlsb3Zlcgor IyBkb2Vzbid0IGdldCB0aGUgZGF0YSBmcm9tIHByaW1hcnkgYW5kIGtlZXBzIHdhaXRpbmcgZm9y IHRoZQorIyBzdGFuZGJ5IHNwZWNpZmllZCBpbiBzdGFuZGJ5X3Nsb3RfbmFtZXMuCiskcmVzdWx0 ID0KKyAgJHN1YnNjcmliZXIxLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSA9IDAgRlJPTSB0YWJfaW50OyIpOworaXMoJHJlc3VsdCwgJ3QnLAorCSJzdWJzY3JpYmVyMSBk b2Vzbid0IGdldCBkYXRhIGZyb20gcHJpbWFyeSB1bnRpbCBzdGFuZGJ5MSBhY2tub3dsZWRnZXMg Y2hhbmdlcyIKKyk7CisKKyMgU3RhcnQgdGhlIHN0YW5kYnkgc3BlY2lmaWVkIGluIHN0YW5kYnlf c2xvdF9uYW1lcyBhbmQgd2FpdCBmb3IgaXQgdG8gY2F0Y2gKKyMgdXAgd2l0aCB0aGUgcHJpbWFy eS4KKyRzdGFuZGJ5MS0+c3RhcnQ7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAo JHN0YW5kYnkxKTsKKyRyZXN1bHQgPSAkc3RhbmRieTEtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgY291bnQoKikgPSAkcHJpbWFyeV9yb3dfY291bnQgRlJPTSB0YWJfaW50OyIpOwor aXMoJHJlc3VsdCwgJ3QnLCAic3RhbmRieTEgZ2V0cyBkYXRhIGZyb20gcHJpbWFyeSIpOworCisj IE5vdyB0aGF0IHRoZSBzdGFuZGJ5IHNwZWNpZmllZCBpbiBzdGFuZGJ5X3Nsb3RfbmFtZXMgaXMg dXAgYW5kIHJ1bm5pbmcsCisjIHByaW1hcnkgbXVzdCBzZW5kIHRoZSBkZWNvZGVkIGNoYW5nZXMg dG8gc3Vic2NyaXB0aW9uIGVuYWJsZWQgZm9yIGZhaWxvdmVyCisjIFdoaWxlIHRoZSBzdGFuZGJ5 IHdhcyBkb3duLCB0aGlzIHN1YnNjcmliZXIgZGlkbid0IHJlY2VpdmUgYW55IGRhdGEgZnJvbQor IyBwcmltYXJ5IGkuZS4gdGhlIHByaW1hcnkgZGlkbid0IGFsbG93IGl0IHRvIGdvIGFoZWFkIG9m IHN0YW5kYnkuCiskcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdyZWdyZXNzX215c3ViMScp OworJHJlc3VsdCA9ICRzdWJzY3JpYmVyMS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBjb3VudCgqKSA9ICRwcmltYXJ5X3Jvd19jb3VudCBGUk9NIHRhYl9pbnQ7Iik7CitpcygkcmVz dWx0LCAndCcsCisJInN1YnNjcmliZXIxIGdldHMgZGF0YSBmcm9tIHByaW1hcnkgYWZ0ZXIgc3Rh bmRieTEgYWNrbm93bGVkZ2VzIGNoYW5nZXMiKTsKKworIyBTdG9wIHRoZSBzdGFuZGJ5IGFzc29j aWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3Qgc28KKyMg dGhhdCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IHdvbid0IHJlY2VpdmUgY2hhbmdlcyB1 bnRpbCB0aGUgc3RhbmRieQorIyBzbG90J3MgcmVzdGFydF9sc24gaXMgYWR2YW5jZWQgb3IgdGhl IHNsb3QgaXMgcmVtb3ZlZCBmcm9tIHRoZQorIyBzdGFuZGJ5X3Nsb3RfbmFtZXMgbGlzdC4KKyRw dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgdGFiX2ludDsiKTsKKyRw dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3JlZ3Jlc3NfbXlzdWIxJyk7Ciskc3RhbmRieTEt PnN0b3A7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisjIFZlcmlmeSB0aGF0IHdoZW4gdXNpbmcgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2Vz IHRvIGNvbnN1bWUgY2hhbmdlcyBmcm9tIGEKKyMgbG9naWNhbCBzbG90IHdpdGggZmFpbG92ZXIg ZW5hYmxlZCwgaXQgd2lsbCBhbHNvIHdhaXQgZm9yIHRoZSBzbG90cyBzcGVjaWZpZWQKKyMgaW4g c3RhbmRieV9zbG90X25hbWVzIHRvIGNhdGNoIHVwLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBDcmVhdGUgYSBsb2dpY2FsICd0ZXN0X2Rl Y29kaW5nJyByZXBsaWNhdGlvbiBzbG90IHdpdGggZmFpbG92ZXIgZW5hYmxlZAorJHB1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19jcmVhdGVfbG9naWNhbF9yZXBs aWNhdGlvbl9zbG90KCd0ZXN0X3Nsb3QnLCAndGVzdF9kZWNvZGluZycsIGZhbHNlLCBmYWxzZSwg dHJ1ZSk7IgorKTsKKworbXkgJGJhY2tfcSA9ICRwcmltYXJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bv c3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKK215ICRwaWQgPSAkYmFja19xLT5xdWVyeSgn U0VMRUNUIHBnX2JhY2tlbmRfcGlkKCknKTsKKworIyBUcnkgYW5kIGdldCBjaGFuZ2VzIGZyb20g dGhlIGxvZ2ljYWwgc2xvdCB3aXRoIGZhaWxvdmVyIGVuYWJsZWQuCitteSAkb2Zmc2V0ID0gLXMg JHByaW1hcnktPmxvZ2ZpbGU7CiskYmFja19xLT5xdWVyeV91bnRpbChxci8vLAorCSJTRUxFQ1Qg cGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCd0ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMKTtcbiIp OworCisjIFdhaXQgdW50aWwgdGhlIHByaW1hcnkgc2VydmVyIGxvZ3MgYSB3YXJuaW5nIGluZGlj YXRpbmcgdGhhdCBpdCBpcyB3YWl0aW5nCisjIGZvciB0aGUgc2IxX3Nsb3QgdG8gY2F0Y2ggdXAu CiskcHJpbWFyeS0+d2FpdF9mb3JfbG9nKAorCXFyL1dBUk5JTkc6ICggW0EtWjAtOV0rOik/IHJl cGxpY2F0aW9uIHNsb3QgXCJzYjFfc2xvdFwiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCJzdGFu ZGJ5X3Nsb3RfbmFtZXNcIiBkb2VzIG5vdCBoYXZlIGFjdGl2ZV9waWQvLAorCSRvZmZzZXQpOwor CitvaygkcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY2FuY2VsX2Jh Y2tlbmQoJHBpZCkiKSwKKwkiY2FuY2VsbGluZyBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMg Y29tbWFuZCIpOworCiskYmFja19xLT5xdWl0OworCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgndGVzdF9zbG90Jyk7 IgorKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMgVGVzdCB0aGF0IGxvZ2ljYWwgcmVwbGljYXRpb24gd2lsbCB3YWl0IGZvciB0aGUgdXNl ci1jcmVhdGVkIGluYWN0aXZlCisjIHBoeXNpY2FsIHNsb3QgdG8gY2F0Y2ggdXAgdW50aWwgd2Ug cmVtb3ZlIHRoZSBzbG90IGZyb20gc3RhbmRieV9zbG90X25hbWVzLgorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBDcmVhdGUgc29tZSBkYXRh IG9uIHRoZSBwcmltYXJ5CiskcHJpbWFyeV9yb3dfY291bnQgPSAxMDsKKyRwcmltYXJ5LT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX2ludCBTRUxFQ1QgZ2VuZXJhdGVf c2VyaWVzKDEsICRwcmltYXJ5X3Jvd19jb3VudCk7Iik7CisKKyRyZXN1bHQgPQorICAkc3Vic2Ny aWJlcjEtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopID0gMCBGUk9NIHRh Yl9pbnQ7Iik7CitpcygkcmVzdWx0LCAndCcsCisJInN1YnNjcmliZXIxIGRvZXNuJ3QgZ2V0IGRh dGEgYXMgdGhlIHNiMV9zbG90IGRvZXNuJ3QgY2F0Y2ggdXAiKTsKKworIyBSZW1vdmUgdGhlIHN0 YW5kYnkgZnJvbSB0aGUgc3RhbmRieV9zbG90X25hbWVzIGxpc3QgYW5kIHJlbG9hZCB0aGUKKyMg Y29uZmlndXJhdGlvbi4KKyRwcmltYXJ5LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywg J3N0YW5kYnlfc2xvdF9uYW1lcycsICInJyIpOworJHByaW1hcnktPnJlbG9hZDsKKworIyBTaW5j ZSB0aGVyZSBhcmUgbm8gc2xvdHMgaW4gc3RhbmRieV9zbG90X25hbWVzLCB0aGUgcHJpbWFyeSBz ZXJ2ZXIgc2hvdWxkIG5vdworIyBzZW5kIHRoZSBkZWNvZGVkIGNoYW5nZXMgdG8gdGhlIHN1YnNj cmlwdGlvbi4KKyRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3JlZ3Jlc3NfbXlzdWIxJyk7 CiskcmVzdWx0ID0gJHN1YnNjcmliZXIxLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IGNvdW50KCopID0gJHByaW1hcnlfcm93X2NvdW50IEZST00gdGFiX2ludDsiKTsKK2lzKCRyZXN1 bHQsICd0JywKKwkic3Vic2NyaWJlcjEgZ2V0cyBkYXRhIGZyb20gcHJpbWFyeSBhZnRlciBzdGFu ZGJ5MSBpcyByZW1vdmVkIGZyb20gdGhlIHN0YW5kYnlfc2xvdF9uYW1lcyBsaXN0IgorKTsKKwor IyBQdXQgdGhlIHN0YW5kYnkgYmFjayBvbiB0aGUgcHJpbWFyeV9zbG90X25hbWUgZm9yIHRoZSBy ZXN0IG9mIHRoZSB0ZXN0cworJHByaW1hcnktPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LCAnc3RhbmRieV9zbG90X25hbWVzJywgJ3NiMV9zbG90Jyk7CiskcHJpbWFyeS0+cmVsb2FkOwor CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBU ZXN0IGxvZ2ljYWwgZmFpbG92ZXIgc2xvdHMgb24gdGhlIHN0YW5kYnkKKyMgQ29uZmlndXJlIHN0 YW5kYnkxIHRvIHJlcGxpY2F0ZSBhbmQgc3luY2hyb25pemUgbG9naWNhbCBzbG90cyBjb25maWd1 cmVkCisjIGZvciBmYWlsb3ZlciBvbiB0aGUgcHJpbWFyeQorIworIyAgICAgICAgICAgICAgZmFp bG92ZXIgc2xvdCBsc3ViMV9zbG90LT58IC0tLS0+IHN1YnNjcmliZXIxIChjb25uZWN0ZWQgdmlh IGxvZ2ljYWwgcmVwbGljYXRpb24pCisjIHByaW1hcnkgLS0tPiAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwKKyMgICAgICAgICAgICAgIHBoeXNpY2FsIHNsb3Qgc2IxX3Nsb3QtLS0+fCAtLS0t PiBzdGFuZGJ5MSAoY29ubmVjdGVkIHZpYSBzdHJlYW1pbmcgcmVwbGljYXRpb24pCisjICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIGxzdWIx X3Nsb3Qoc3luY2VkX3Nsb3QpCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisjIENyZWF0ZSBhIHN0YW5kYnkKIG15ICRjb25uc3RyXzEgPSAkcHJp bWFyeS0+Y29ubnN0cjsKICRzdGFuZGJ5MS0+YXBwZW5kX2NvbmYoCiAJJ3Bvc3RncmVzcWwuY29u ZicsIHFxKAogZW5hYmxlX3N5bmNzbG90ID0gdHJ1ZQogaG90X3N0YW5kYnlfZmVlZGJhY2sgPSBv bgotcHJpbWFyeV9zbG90X25hbWUgPSAnc2IxX3Nsb3QnCiBwcmltYXJ5X2Nvbm5pbmZvID0gJyRj b25uc3RyXzEgZGJuYW1lPXBvc3RncmVzJwogKSk7CiAKLSRwcmltYXJ5LT5wc3FsKCdwb3N0Z3Jl cycsCi0JcXtTRUxFQ1QgcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3NiMV9z bG90Jyk7fSk7Ci0KIG15ICRzdGFuZGJ5MV9jb25uaW5mbyA9ICRzdGFuZGJ5MS0+Y29ubnN0ciAu ICcgZGJuYW1lPXBvc3RncmVzJzsKLW15ICRvZmZzZXQgPSAtcyAkc3RhbmRieTEtPmxvZ2ZpbGU7 Ciskb2Zmc2V0ID0gLXMgJHN0YW5kYnkxLT5sb2dmaWxlOwogCiAjIFN0YXJ0IHRoZSBzdGFuZGJ5 IHNvIHRoYXQgc2xvdCBzeW5jaW5nIGNhbiBiZWdpbgogJHN0YW5kYnkxLT5zdGFydDsKQEAgLTE1 MCwxOCArMzQzLDExIEBAIGlzKCRzdGFuZGJ5MS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIElu c2VydCBkYXRhIG9uIHRoZSBwcmltYXJ5CiAkcHJpbWFyeS0+c2FmZV9wc3FsKAogCSdwb3N0Z3Jl cycsIHFxWwotCUNSRUFURSBUQUJMRSB0YWJfaW50IChhIGludCBQUklNQVJZIEtFWSk7CisJVFJV TkNBVEUgVEFCTEUgdGFiX2ludDsKIAlJTlNFUlQgSU5UTyB0YWJfaW50IFNFTEVDVCBnZW5lcmF0 ZV9zZXJpZXMoMSwgMTApOwogXSk7CiAKLSMgU3Vic2NyaWJlIHRvIHRoZSBuZXcgdGFibGUgZGF0 YSBhbmQgd2FpdCBmb3IgaXQgdG8gYXJyaXZlCi0kc3Vic2NyaWJlcjEtPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxcVsKLQlDUkVBVEUgVEFCTEUgdGFiX2ludCAoYSBpbnQgUFJJTUFSWSBLRVkp OwotCUFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX215c3ViMSBSRUZSRVNIIFBVQkxJQ0FUSU9O OwotXSk7Ci0KLSRzdWJzY3JpYmVyMS0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmM7CiskcHJp bWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgncmVncmVzc19teXN1YjEnKTsKIAogIyBEbyBub3QgYWxs b3cgYW55IGZ1cnRoZXIgYWR2YW5jZW1lbnQgb2YgdGhlIHJlc3RhcnRfbHNuIGFuZAogIyBjb25m aXJtZWRfZmx1c2hfbHNuIGZvciB0aGUgbHN1YjFfc2xvdC4KQEAgLTE5OSw3ICszODUsOSBAQCAk c3RhbmRieTEtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQUxURVIgU1lTVEVNIFNFVCBob3Rfc3Rh bmRieV9mZWVkYmFjayA9IG9mZjsnKQogJHN0YW5kYnkxLT5yZXN0YXJ0OwogCiAjIEF0dGVtcHRp bmcgdG8gcGVyZm9ybSBsb2dpY2FsIGRlY29kaW5nIG9uIGEgc3luY2VkIHNsb3Qgc2hvdWxkIHJl c3VsdCBpbiBhbiBlcnJvcgotbXkgKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJHN0YW5k YnkxLT5wc3FsKCdwb3N0Z3JlcycsCitteSAoJHN0ZG91dCwgJHN0ZGVycik7CisKKygkcmVzdWx0 LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRzdGFuZGJ5MS0+cHNxbCgncG9zdGdyZXMnLAogCSJzZWxl Y3QgKiBmcm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnbHN1YjFfc2xvdCcsTlVMTCxO VUxMKTsiKTsKIG9rKCRzdGRlcnIgPX4gL0VSUk9SOiAgY2Fubm90IHVzZSByZXBsaWNhdGlvbiBz bG90ICJsc3ViMV9zbG90IiBmb3IgbG9naWNhbCBkZWNvZGluZy8sCiAJImxvZ2ljYWwgZGVjb2Rp bmcgaXMgbm90IGFsbG93ZWQgb24gc3luY2VkIHNsb3QiKTsKLS0gCjIuMzQuMQoK --00000000000006ae0b060f0ed540 Content-Type: application/octet-stream; name="v62-0005-Non-replication-connection-and-app_name-change.patch" Content-Disposition: attachment; filename="v62-0005-Non-replication-connection-and-app_name-change.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrgap7in4 RnJvbSA5OTZjMGMxOWMzMDZkNjJmMTc3YzE0OGU4MTRlODk1OTRjN2MyNzYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTYgSmFuIDIwMjQgMTY6MjI6MDUgKzA1MzAKU3ViamVjdDogW1BBVENIIHY2 MiA1LzZdIE5vbiByZXBsaWNhdGlvbiBjb25uZWN0aW9uIGFuZCBhcHBfbmFtZSBjaGFuZ2UuCgpD aGFuZ2VzIGluIHRoaXMgcGF0Y2g6CjEpIENvbnZlcnQgcmVwbGljYXRpb24gY29ubmVjdGlvbiB0 byBub24tcmVwbGljYXRpb24gb25lIGluIHNsb3RzeW5jIHdvcmtlci4KMikgVXNlIGFwcF9uYW1l IGFzIHtjbHVzdGVyX25hbWV9X3Nsb3RzeW5jd29ya2VyIGluIHRoZSBzbG90c3luYyB3b3JrZXIK Y29ubmVjdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMg ICAgICAgfCAxMiArKystLQogLi4uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5j ICAgICAgIHwgNDQgKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9zbG90c3luYy5jICAgIHwgMTQgKysrKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3RhYmxlc3luYy5jICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHJlY2VpdmVyLmMgICAgICAgICB8ICAzICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxy ZWNlaXZlci5oICAgICAgICAgfCAgNSArKy0KIDcgZmlsZXMgY2hhbmdlZCwgNjAgaW5zZXJ0aW9u cygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv c3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21k cy5jCmluZGV4IGY1MGJlMjlkOTkuLjEzZGE2YjE0NjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmMKQEAgLTc1Myw3ICs3NTMsOCBAQCBDcmVhdGVTdWJzY3JpcHRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCiAJCS8q IFRyeSB0byBjb25uZWN0IHRvIHRoZSBwdWJsaXNoZXIuICovCiAJCW11c3RfdXNlX3Bhc3N3b3Jk ID0gIXN1cGVydXNlcl9hcmcob3duZXIpICYmIG9wdHMucGFzc3dvcmRyZXF1aXJlZDsKLQkJd3Jj b25uID0gd2FscmN2X2Nvbm5lY3QoY29ubmluZm8sIHRydWUsIG11c3RfdXNlX3Bhc3N3b3JkLAor CQl3cmNvbm4gPSB3YWxyY3ZfY29ubmVjdChjb25uaW5mbywgdHJ1ZSAvKiByZXBsaWNhdGlvbiAq LyAsCisJCQkJCQkJCXRydWUsIG11c3RfdXNlX3Bhc3N3b3JkLAogCQkJCQkJCQlzdG10LT5zdWJu YW1lLCAmZXJyKTsKIAkJaWYgKCF3cmNvbm4pCiAJCQllcmVwb3J0KEVSUk9SLApAQCAtOTA0LDcg KzkwNSw4IEBAIEFsdGVyU3Vic2NyaXB0aW9uX3JlZnJlc2goU3Vic2NyaXB0aW9uICpzdWIsIGJv b2wgY29weV9kYXRhLAogCiAJLyogVHJ5IHRvIGNvbm5lY3QgdG8gdGhlIHB1Ymxpc2hlci4gKi8K IAltdXN0X3VzZV9wYXNzd29yZCA9IHN1Yi0+cGFzc3dvcmRyZXF1aXJlZCAmJiAhc3ViLT5vd25l cnN1cGVydXNlcjsKLQl3cmNvbm4gPSB3YWxyY3ZfY29ubmVjdChzdWItPmNvbm5pbmZvLCB0cnVl LCBtdXN0X3VzZV9wYXNzd29yZCwKKwl3cmNvbm4gPSB3YWxyY3ZfY29ubmVjdChzdWItPmNvbm5p bmZvLCB0cnVlIC8qIHJlcGxpY2F0aW9uICovICwKKwkJCQkJCQl0cnVlLCBtdXN0X3VzZV9wYXNz d29yZCwKIAkJCQkJCQlzdWItPm5hbWUsICZlcnIpOwogCWlmICghd3Jjb25uKQogCQllcmVwb3J0 KEVSUk9SLApAQCAtMTUzMCw3ICsxNTMyLDggQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0 ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAKIAkJLyogVHJ5IHRvIGNv bm5lY3QgdG8gdGhlIHB1Ymxpc2hlci4gKi8KIAkJbXVzdF91c2VfcGFzc3dvcmQgPSBzdWItPnBh c3N3b3JkcmVxdWlyZWQgJiYgIXN1Yi0+b3duZXJzdXBlcnVzZXI7Ci0JCXdyY29ubiA9IHdhbHJj dl9jb25uZWN0KHN1Yi0+Y29ubmluZm8sIHRydWUsIG11c3RfdXNlX3Bhc3N3b3JkLAorCQl3cmNv bm4gPSB3YWxyY3ZfY29ubmVjdChzdWItPmNvbm5pbmZvLCB0cnVlIC8qIHJlcGxpY2F0aW9uICov ICwKKwkJCQkJCQkJdHJ1ZSwgbXVzdF91c2VfcGFzc3dvcmQsCiAJCQkJCQkJCXN1Yi0+bmFtZSwg JmVycik7CiAJCWlmICghd3Jjb25uKQogCQkJZXJlcG9ydChFUlJPUiwKQEAgLTE3ODEsNyArMTc4 NCw4IEBAIERyb3BTdWJzY3JpcHRpb24oRHJvcFN1YnNjcmlwdGlvblN0bXQgKnN0bXQsIGJvb2wg aXNUb3BMZXZlbCkKIAkgKi8KIAlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7 CiAKLQl3cmNvbm4gPSB3YWxyY3ZfY29ubmVjdChjb25uaW5mbywgdHJ1ZSwgbXVzdF91c2VfcGFz c3dvcmQsCisJd3Jjb25uID0gd2FscmN2X2Nvbm5lY3QoY29ubmluZm8sIHRydWUgLyogcmVwbGlj YXRpb24gKi8gLAorCQkJCQkJCXRydWUsIG11c3RfdXNlX3Bhc3N3b3JkLAogCQkJCQkJCXN1Ym5h bWUsICZlcnIpOwogCWlmICh3cmNvbm4gPT0gTlVMTCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5j CmluZGV4IDkzNGMxYTNhYjAuLmQ2ZjBjYWUwYTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCkBA IC02LDYgKzYsOSBAQAogICogbG9hZGVkIGFzIGEgZHluYW1pYyBtb2R1bGUgdG8gYXZvaWQgbGlu a2luZyB0aGUgbWFpbiBzZXJ2ZXIgYmluYXJ5IHdpdGgKICAqIGxpYnBxLgogICoKKyAqIEFwYXJ0 IGZyb20gd2FscmVjZWl2ZXIsIHRoZSBsaWJwcS1zcGVjaWZpYyByb3V0aW5lcyBoZXJlIGFyZSBu b3cgYmVpbmcgdXNlZAorICogYnkgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzIGFuZCBzbG90 c3luYyB3b3JrZXIgYXMgd2VsbC4KKwogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwLTIw MjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAgKgogICoKQEAgLTUwLDcg KzUzLDggQEAgc3RydWN0IFdhbFJlY2VpdmVyQ29ubgogCiAvKiBQcm90b3R5cGVzIGZvciBpbnRl cmZhY2UgZnVuY3Rpb25zICovCiBzdGF0aWMgV2FsUmVjZWl2ZXJDb25uICpsaWJwcXJjdl9jb25u ZWN0KGNvbnN0IGNoYXIgKmNvbm5pbmZvLAotCQkJCQkJCQkJCSBib29sIGxvZ2ljYWwsIGJvb2wg bXVzdF91c2VfcGFzc3dvcmQsCisJCQkJCQkJCQkJIGJvb2wgcmVwbGljYXRpb24sIGJvb2wgbG9n aWNhbCwKKwkJCQkJCQkJCQkgYm9vbCBtdXN0X3VzZV9wYXNzd29yZCwKIAkJCQkJCQkJCQkgY29u c3QgY2hhciAqYXBwbmFtZSwgY2hhciAqKmVycik7CiBzdGF0aWMgdm9pZCBsaWJwcXJjdl9jaGVj a19jb25uaW5mbyhjb25zdCBjaGFyICpjb25uaW5mbywKIAkJCQkJCQkJCWJvb2wgbXVzdF91c2Vf cGFzc3dvcmQpOwpAQCAtMTI1LDcgKzEyOSwxMiBAQCBfUEdfaW5pdCh2b2lkKQogfQogCiAvKgot ICogRXN0YWJsaXNoIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBwcmltYXJ5IHNlcnZlciBmb3IgWExP RyBzdHJlYW1pbmcKKyAqIEVzdGFibGlzaCB0aGUgY29ubmVjdGlvbiB0byB0aGUgcHJpbWFyeSBz ZXJ2ZXIuCisgKgorICogVGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQgY291bGQgYmUgZWl0aGVy IGEgcmVwbGljYXRpb24gb25lIG9yCisgKiBhIG5vbi1yZXBsaWNhdGlvbiBvbmUgYmFzZWQgb24g aW5wdXQgYXJndW1lbnQgJ3JlcGxpY2F0aW9uJy4gQW5kIGZ1cnRoZXIKKyAqIGlmIGl0IGlzIGEg cmVwbGljYXRpb24gY29ubmVjdGlvbiwgaXQgY291bGQgYmUgZWl0aGVyIGxvZ2ljYWwgb3IgcGh5 c2ljYWwKKyAqIGJhc2VkIG9uIGlucHV0IGFyZ3VtZW50ICdsb2dpY2FsJy4KICAqCiAgKiBJZiBh biBlcnJvciBvY2N1cnMsIHRoaXMgZnVuY3Rpb24gd2lsbCBub3JtYWxseSByZXR1cm4gTlVMTCBh bmQgc2V0ICplcnIKICAqIHRvIGEgcGFsbG9jJ2VkIGVycm9yIG1lc3NhZ2UuIEhvd2V2ZXIsIGlm IG11c3RfdXNlX3Bhc3N3b3JkIGlzIHRydWUgYW5kCkBAIC0xMzYsOCArMTQ1LDggQEAgX1BHX2lu aXQodm9pZCkKICAqIGNhc2UuCiAgKi8KIHN0YXRpYyBXYWxSZWNlaXZlckNvbm4gKgotbGlicHFy Y3ZfY29ubmVjdChjb25zdCBjaGFyICpjb25uaW5mbywgYm9vbCBsb2dpY2FsLCBib29sIG11c3Rf dXNlX3Bhc3N3b3JkLAotCQkJCSBjb25zdCBjaGFyICphcHBuYW1lLCBjaGFyICoqZXJyKQorbGli cHFyY3ZfY29ubmVjdChjb25zdCBjaGFyICpjb25uaW5mbywgYm9vbCByZXBsaWNhdGlvbiwgYm9v bCBsb2dpY2FsLAorCQkJCSBib29sIG11c3RfdXNlX3Bhc3N3b3JkLCBjb25zdCBjaGFyICphcHBu YW1lLCBjaGFyICoqZXJyKQogewogCVdhbFJlY2VpdmVyQ29ubiAqY29ubjsKIAljb25zdCBjaGFy ICprZXlzWzZdOwpAQCAtMTU5LDE3ICsxNjgsMjYgQEAgbGlicHFyY3ZfY29ubmVjdChjb25zdCBj aGFyICpjb25uaW5mbywgYm9vbCBsb2dpY2FsLCBib29sIG11c3RfdXNlX3Bhc3N3b3JkLAogCSAq LwogCWtleXNbaV0gPSAiZGJuYW1lIjsKIAl2YWxzW2ldID0gY29ubmluZm87Ci0Ja2V5c1srK2ld ID0gInJlcGxpY2F0aW9uIjsKLQl2YWxzW2ldID0gbG9naWNhbCA/ICJkYXRhYmFzZSIgOiAidHJ1 ZSI7Ci0JaWYgKCFsb2dpY2FsKQorCisJLyogV2UgY2FuIG5vdCBoYXZlIGxvZ2ljYWwgd2l0aG91 dCByZXBsaWNhdGlvbiAqLworCWlmICghcmVwbGljYXRpb24pCisJCUFzc2VydCghbG9naWNhbCk7 CisJZWxzZQogCXsKLQkJLyoKLQkJICogVGhlIGRhdGFiYXNlIG5hbWUgaXMgaWdub3JlZCBieSB0 aGUgc2VydmVyIGluIHJlcGxpY2F0aW9uIG1vZGUsIGJ1dAotCQkgKiBzcGVjaWZ5ICJyZXBsaWNh dGlvbiIgZm9yIC5wZ3Bhc3MgbG9va3VwLgotCQkgKi8KLQkJa2V5c1srK2ldID0gImRibmFtZSI7 Ci0JCXZhbHNbaV0gPSAicmVwbGljYXRpb24iOworCQlrZXlzWysraV0gPSAicmVwbGljYXRpb24i OworCQl2YWxzW2ldID0gbG9naWNhbCA/ICJkYXRhYmFzZSIgOiAidHJ1ZSI7CisKKwkJaWYgKCFs b2dpY2FsKQorCQl7CisJCQkvKgorCQkJICogVGhlIGRhdGFiYXNlIG5hbWUgaXMgaWdub3JlZCBi eSB0aGUgc2VydmVyIGluIHJlcGxpY2F0aW9uIG1vZGUsCisJCQkgKiBidXQgc3BlY2lmeSAicmVw bGljYXRpb24iIGZvciAucGdwYXNzIGxvb2t1cC4KKwkJCSAqLworCQkJa2V5c1srK2ldID0gImRi bmFtZSI7CisJCQl2YWxzW2ldID0gInJlcGxpY2F0aW9uIjsKKwkJfQogCX0KKwogCWtleXNbKytp XSA9ICJmYWxsYmFja19hcHBsaWNhdGlvbl9uYW1lIjsKIAl2YWxzW2ldID0gYXBwbmFtZTsKIAlp ZiAobG9naWNhbCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv c2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpp bmRleCA1ZGJiOGFiNGRlLi44ZDliMWNjNGNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9zbG90c3luYy5jCkBAIC0xMDQ5LDYgKzEwNDksNyBAQCBSZXBsU2xvdFN5bmNXb3Jr ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJYm9vbAkJcHJpbWFyeV9zbG90X2ludmFs aWQ7CiAJY2hhcgkgICAqZXJyOwogCXNpZ2ptcF9idWYJbG9jYWxfc2lnam1wX2J1ZjsKKwlTdHJp bmdJbmZvRGF0YSBhcHBfbmFtZTsKIAogCWFtX3Nsb3RzeW5jX3dvcmtlciA9IHRydWU7CiAKQEAg LTExNTAsMTMgKzExNTEsMjIgQEAgUmVwbFNsb3RTeW5jV29ya2VyTWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQogCiAJU2V0UHJvY2Vzc2luZ01vZGUoTm9ybWFsUHJvY2Vzc2luZyk7CiAKKwlp bml0U3RyaW5nSW5mbygmYXBwX25hbWUpOworCWlmIChjbHVzdGVyX25hbWVbMF0pCisJCWFwcGVu ZFN0cmluZ0luZm8oJmFwcF9uYW1lLCAiJXNfJXMiLCBjbHVzdGVyX25hbWUsICJzbG90c3luY3dv cmtlciIpOworCWVsc2UKKwkJYXBwZW5kU3RyaW5nSW5mbygmYXBwX25hbWUsICIlcyIsICJzbG90 c3luY3dvcmtlciIpOworCiAJLyoKIAkgKiBFc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24gdG8gdGhl IHByaW1hcnkgc2VydmVyIGZvciBzbG90cwogCSAqIHN5bmNocm9uaXphdGlvbi4KIAkgKi8KLQl3 cmNvbm4gPSB3YWxyY3ZfY29ubmVjdChQcmltYXJ5Q29ubkluZm8sIHRydWUsIGZhbHNlLAotCQkJ CQkJCWNsdXN0ZXJfbmFtZVswXSA/IGNsdXN0ZXJfbmFtZSA6ICJzbG90c3luY3dvcmtlciIsCisJ d3Jjb25uID0gd2FscmN2X2Nvbm5lY3QoUHJpbWFyeUNvbm5JbmZvLCBmYWxzZSAvKiByZXBsaWNh dGlvbiAqLywKKwkJCQkJCQlmYWxzZSwgZmFsc2UsCisJCQkJCQkJYXBwX25hbWUuZGF0YSwKIAkJ CQkJCQkmZXJyKTsKKwlwZnJlZShhcHBfbmFtZS5kYXRhKTsKKwogCWlmICghd3Jjb25uKQogCQll cmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJSQ09ERV9DT05ORUNUSU9OX0ZBSUxVUkUpLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggNWFjYWIz ZjNlMi4uYzVjNmFjNGJhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Rh Ymxlc3luYy5jCkBAIC0xMzI5LDcgKzEzMjksNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3RhcnQo WExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCSAqIHNvIHRoYXQgc3luY2hyb25vdXMgcmVw bGljYXRpb24gY2FuIGRpc3Rpbmd1aXNoIHRoZW0uCiAJICovCiAJTG9nUmVwV29ya2VyV2FsUmN2 Q29ubiA9Ci0JCXdhbHJjdl9jb25uZWN0KE15U3Vic2NyaXB0aW9uLT5jb25uaW5mbywgdHJ1ZSwK KwkJd2FscmN2X2Nvbm5lY3QoTXlTdWJzY3JpcHRpb24tPmNvbm5pbmZvLCB0cnVlIC8qIHJlcGxp Y2F0aW9uICovICwgdHJ1ZSwKIAkJCQkJICAgbXVzdF91c2VfcGFzc3dvcmQsCiAJCQkJCSAgIHNs b3RuYW1lLCAmZXJyKTsKIAlpZiAoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiA9PSBOVUxMKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggM2RlYTEwZjliMy4uOTVl NzMyNGM4ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC00 NTE4LDcgKzQ1MTgsOSBAQCBydW5fYXBwbHlfd29ya2VyKCkKIAltdXN0X3VzZV9wYXNzd29yZCA9 IE15U3Vic2NyaXB0aW9uLT5wYXNzd29yZHJlcXVpcmVkICYmCiAJCSFNeVN1YnNjcmlwdGlvbi0+ b3duZXJzdXBlcnVzZXI7CiAKLQlMb2dSZXBXb3JrZXJXYWxSY3ZDb25uID0gd2FscmN2X2Nvbm5l Y3QoTXlTdWJzY3JpcHRpb24tPmNvbm5pbmZvLCB0cnVlLAorCUxvZ1JlcFdvcmtlcldhbFJjdkNv bm4gPSB3YWxyY3ZfY29ubmVjdChNeVN1YnNjcmlwdGlvbi0+Y29ubmluZm8sCisJCQkJCQkJCQkJ CXRydWUgLyogcmVwbGljYXRpb24gKi8gLAorCQkJCQkJCQkJCQl0cnVlLAogCQkJCQkJCQkJCQlt dXN0X3VzZV9wYXNzd29yZCwKIAkJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsICZlcnIp OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwppbmRleCBmZmFjZDU1ZTVjLi5j ZmU2NDdlYzU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKQEAgLTI5Niw3 ICsyOTYsOCBAQCBXYWxSZWNlaXZlck1haW4odm9pZCkKIAlzaWdwcm9jbWFzayhTSUdfU0VUTUFT SywgJlVuQmxvY2tTaWcsIE5VTEwpOwogCiAJLyogRXN0YWJsaXNoIHRoZSBjb25uZWN0aW9uIHRv IHRoZSBwcmltYXJ5IGZvciBYTE9HIHN0cmVhbWluZyAqLwotCXdyY29ubiA9IHdhbHJjdl9jb25u ZWN0KGNvbm5pbmZvLCBmYWxzZSwgZmFsc2UsCisJd3Jjb25uID0gd2FscmN2X2Nvbm5lY3QoY29u bmluZm8sIHRydWUgLyogcmVwbGljYXRpb24gKi8gLAorCQkJCQkJCWZhbHNlLCBmYWxzZSwKIAkJ CQkJCQljbHVzdGVyX25hbWVbMF0gPyBjbHVzdGVyX25hbWUgOiAid2FscmVjZWl2ZXIiLAogCQkJ CQkJCSZlcnIpOwogCWlmICghd3Jjb25uKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd2FscmVjZWl2ZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVy LmgKaW5kZXggNWU5NDJjYjRmYy4uNjhhYzA3NDI3NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 YWxyZWNlaXZlci5oCkBAIC0yMzcsNiArMjM3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV2FsUmN2RXhl Y1Jlc3VsdAogICogcmV0dXJuZWQgd2l0aCAnZXJyJyBpbmNsdWRpbmcgdGhlIGVycm9yIGdlbmVy YXRlZC4KICAqLwogdHlwZWRlZiBXYWxSZWNlaXZlckNvbm4gKigqd2FscmN2X2Nvbm5lY3RfZm4p IChjb25zdCBjaGFyICpjb25uaW5mbywKKwkJCQkJCQkJCQkJICAgYm9vbCByZXBsaWNhdGlvbiwK IAkJCQkJCQkJCQkJICAgYm9vbCBsb2dpY2FsLAogCQkJCQkJCQkJCQkgICBib29sIG11c3RfdXNl X3Bhc3N3b3JkLAogCQkJCQkJCQkJCQkgICBjb25zdCBjaGFyICphcHBuYW1lLApAQCAtNDM0LDgg KzQzNSw4IEBAIHR5cGVkZWYgc3RydWN0IFdhbFJlY2VpdmVyRnVuY3Rpb25zVHlwZQogCiBleHRl cm4gUEdETExJTVBPUlQgV2FsUmVjZWl2ZXJGdW5jdGlvbnNUeXBlICpXYWxSZWNlaXZlckZ1bmN0 aW9uczsKIAotI2RlZmluZSB3YWxyY3ZfY29ubmVjdChjb25uaW5mbywgbG9naWNhbCwgbXVzdF91 c2VfcGFzc3dvcmQsIGFwcG5hbWUsIGVycikgXAotCVdhbFJlY2VpdmVyRnVuY3Rpb25zLT53YWxy Y3ZfY29ubmVjdChjb25uaW5mbywgbG9naWNhbCwgbXVzdF91c2VfcGFzc3dvcmQsIGFwcG5hbWUs IGVycikKKyNkZWZpbmUgd2FscmN2X2Nvbm5lY3QoY29ubmluZm8sIHJlcGxpY2F0aW9uLCBsb2dp Y2FsLCBtdXN0X3VzZV9wYXNzd29yZCwgYXBwbmFtZSwgZXJyKSBcCisJV2FsUmVjZWl2ZXJGdW5j dGlvbnMtPndhbHJjdl9jb25uZWN0KGNvbm5pbmZvLCByZXBsaWNhdGlvbiwgbG9naWNhbCwgbXVz dF91c2VfcGFzc3dvcmQsIGFwcG5hbWUsIGVycikKICNkZWZpbmUgd2FscmN2X2NoZWNrX2Nvbm5p bmZvKGNvbm5pbmZvLCBtdXN0X3VzZV9wYXNzd29yZCkgXAogCVdhbFJlY2VpdmVyRnVuY3Rpb25z LT53YWxyY3ZfY2hlY2tfY29ubmluZm8oY29ubmluZm8sIG11c3RfdXNlX3Bhc3N3b3JkKQogI2Rl ZmluZSB3YWxyY3ZfZ2V0X2Nvbm5pbmZvKGNvbm4pIFwKLS0gCjIuMzQuMQoK --00000000000006ae0b060f0ed540 Content-Type: application/octet-stream; name="v62-0002-Add-logical-slot-sync-capability-to-the-physical.patch" Content-Disposition: attachment; filename="v62-0002-Add-logical-slot-sync-capability-to-the-physical.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrgap7ik1 RnJvbSA0YjI5MWFjOTYxMWZmYTU5OTNiYzE1ZjdjZWI4MmE0YjZmOTFkNjlmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxzaGVybG9ja2NwcEBmb3htYWlsLmNvbT4K RGF0ZTogRnJpLCAxMiBKYW4gMjAyNCAyMDo0MToxOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjYy IDIvNl0gQWRkIGxvZ2ljYWwgc2xvdCBzeW5jIGNhcGFiaWxpdHkgdG8gdGhlIHBoeXNpY2FsCiBz dGFuZGJ5CgpUaGlzIHBhdGNoIGltcGxlbWVudHMgc3luY2hyb25pemF0aW9uIG9mIGxvZ2ljYWwg cmVwbGljYXRpb24gc2xvdHMKZnJvbSB0aGUgcHJpbWFyeSBzZXJ2ZXIgdG8gdGhlIHBoeXNpY2Fs IHN0YW5kYnkgc28gdGhhdCBsb2dpY2FsCnJlcGxpY2F0aW9uIGNhbiBiZSByZXN1bWVkIGFmdGVy IGZhaWxvdmVyLgoKR1VDICdlbmFibGVfc3luY3Nsb3QnIGVuYWJsZXMgYSBwaHlzaWNhbCBzdGFu ZGJ5IHRvIHN5bmNocm9uaXplIGZhaWxvdmVyCmxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdHMgZnJv bSB0aGUgcHJpbWFyeSBzZXJ2ZXIuCgpUaGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90cyBvbiB0 aGUgcHJpbWFyeSBjYW4gYmUgc3luY2hyb25pemVkIHRvIHRoZSBob3QKc3RhbmRieSBieSBlbmFi bGluZyB0aGUgZmFpbG92ZXIgb3B0aW9uIGR1cmluZyBzbG90IGNyZWF0aW9uIGFuZCBzZXR0aW5n CidlbmFibGVfc3luY3Nsb3QnIG9uIHRoZSBzdGFuZGJ5LiBGb3IgdGhlIHN5bmNocm9uaXphdGlv biB0byB3b3JrLCBpdCBpcwptYW5kYXRvcnkgdG8gaGF2ZSBhIHBoeXNpY2FsIHJlcGxpY2F0aW9u IHNsb3QgYmV0d2VlbiB0aGUgcHJpbWFyeSBhbmQgdGhlCnN0YW5kYnksIGFuZCBob3Rfc3RhbmRi eV9mZWVkYmFjayBtdXN0IGJlIGVuYWJsZWQgb24gdGhlIHN0YW5kYnkuCgpBbGwgdGhlIGZhaWxv dmVyIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdHMgb24gdGhlIHByaW1hcnkgKGFzc3VtaW5nCmNv bmZpZ3VyYXRpb25zIGFyZSBhcHByb3ByaWF0ZSkgYXJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBv biB0aGUgcGh5c2ljYWwKc3RhbmRieXMgYW5kIGFyZSBzeW5jZWQgcGVyaW9kaWNhbGx5LiBTbG90 LXN5bmMgd29ya2VyIG9uIHRoZSBzdGFuZGJ5IHNlcnZlcgpwaW5nIHRoZSBwcmltYXJ5IHNlcnZl ciBhdCByZWd1bGFyIGludGVydmFscyB0byBnZXQgdGhlIG5lY2Vzc2FyeQpmYWlsb3ZlciBsb2dp Y2FsIHNsb3RzIGluZm9ybWF0aW9uIGFuZCBjcmVhdGUvdXBkYXRlIHRoZSBzbG90cyBsb2NhbGx5 LgoKVGhlIG5hcCB0aW1lIG9mIHRoZSB3b3JrZXIgaXMgdHVuZWQgYWNjb3JkaW5nIHRvIHRoZSBh Y3Rpdml0eSBvbiB0aGUgcHJpbWFyeS4KVGhlIHdvcmtlciB3YWl0cyBmb3IgYSBwZXJpb2Qgb2Yg dGltZSBiZWZvcmUgdGhlIG5leHQgc3luY2hyb25pemF0aW9uLCB3aXRoIHRoZQpkdXJhdGlvbiB2 YXJ5aW5nIGJhc2VkIG9uIHdoZXRoZXIgYW55IHNsb3RzIHdlcmUgdXBkYXRlZCBkdXJpbmcgdGhl IGxhc3QKY3ljbGUuCgpUaGUgbG9naWNhbCBzbG90cyBjcmVhdGVkIGJ5IHNsb3Qtc3luYyB3b3Jr ZXIgb24gcGh5c2ljYWwgc3RhbmRieXMgYXJlIG5vdAphbGxvd2VkIHRvIGJlIGRyb3BwZWQgb3Ig Y29uc3VtZWQuIEFueSBhdHRlbXB0IHRvIHBlcmZvcm0gbG9naWNhbCBkZWNvZGluZyBvbgpzdWNo IHNsb3RzIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLgoKSWYgYSBsb2dpY2FsIHNsb3QgaXMgaW52 YWxpZGF0ZWQgb24gdGhlIHByaW1hcnksIHRoZW4gdGhhdCBzbG90IG9uIHRoZSBzdGFuZGJ5Cmlz IGFsc28gaW52YWxpZGF0ZWQuCgpJZiBhIGxvZ2ljYWwgc2xvdCBvbiB0aGUgcHJpbWFyeSBpcyB2 YWxpZCBidXQgaXMgaW52YWxpZGF0ZWQgb24gdGhlIHN0YW5kYnksCnRoZW4gdGhhdCBzbG90IGlz IGRyb3BwZWQgYW5kIHJlY3JlYXRlZCBvbiB0aGUgc3RhbmRieSBpbiBuZXh0IHN5bmMtY3ljbGUK cHJvdmlkZWQgdGhlIHNsb3Qgc3RpbGwgZXhpc3RzIG9uIHRoZSBwcmltYXJ5IHNlcnZlci4gSXQg aXMgb2theSB0byByZWNyZWF0ZQpzdWNoIHNsb3RzIGFzIGxvbmcgYXMgdGhlc2UgYXJlIG5vdCBj b25zdW1hYmxlIG9uIHRoZSBzdGFuZGJ5ICh3aGljaCBpcyB0aGUKY2FzZSBjdXJyZW50bHkpLiBU aGlzIHNpdHVhdGlvbiBtYXkgb2NjdXIgZHVlIHRvIHRoZSBmb2xsb3dpbmcgcmVhc29uczoKLSBU aGUgbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZSBvbiB0aGUgc3RhbmRieSBpcyBpbnN1ZmZpY2llbnQg dG8gcmV0YWluIFdBTAogIHJlY29yZHMgZnJvbSB0aGUgcmVzdGFydF9sc24gb2YgdGhlIHNsb3Qu Ci0gcHJpbWFyeV9zbG90X25hbWUgaXMgdGVtcG9yYXJpbHkgcmVzZXQgdG8gbnVsbCBhbmQgdGhl IHBoeXNpY2FsIHNsb3QgaXMKICByZW1vdmVkLgotIFRoZSBwcmltYXJ5IGNoYW5nZXMgd2FsX2xl dmVsIHRvIGEgbGV2ZWwgbG93ZXIgdGhhbiBsb2dpY2FsLgoKVGhlIHNsb3RzIHN5bmNocm9uaXph dGlvbiBzdGF0dXMgb24gdGhlIHN0YW5kYnkgY2FuIGJlIG1vbml0b3JlZCB1c2luZwonc3luY2Vk JyBjb2x1bW4gb2YgcGdfcmVwbGljYXRpb25fc2xvdHMgdmlldy4KLS0tCiBkb2Mvc3JjL3NnbWwv Ymd3b3JrZXIuc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgIDY1ICstCiBkb2Mvc3JjL3NnbWwv Y29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgIDI3ICstCiBkb2Mvc3JjL3NnbWwv bG9naWNhbGRlY29kaW5nLnNnbWwgICAgICAgICAgICAgfCAgIDMzICsKIGRvYy9zcmMvc2dtbC9z eXN0ZW0tdmlld3Muc2dtbCAgICAgICAgICAgICAgICB8ICAgMTYgKwogc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZy5jICAgICAgICAgICAgIHwgICAgNSArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgICAgIHwgICAxNSArCiBzcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgICAzICstCiBzcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2Jnd29ya2VyLmMgICAgICAgICAgICAgfCAgICA0ICsKIHNyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvcG9zdG1hc3Rlci5jICAgICAgICAgICB8ICAgMTAgKwogLi4uL2xpYnBxd2FscmVjZWl2 ZXIvbGlicHF3YWxyZWNlaXZlci5jICAgICAgIHwgICA0MSArCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL01ha2VmaWxlICAgICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbG9naWNhbC5jICAgICB8ICAgMTIgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9tZXNvbi5idWlsZCAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Nsb3RzeW5jLmMgICAgfCAxMTU4ICsrKysrKysrKysrKysrKysrCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgfCAgIDMyICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYyAgICAgICAgICAgfCAgIDE0ICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMgICAgfCAgIDE2ICsKIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgICAgICB8ICAgIDQgKy0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAgICAgICAgICAgICAgICB8ICAgIDIgKwogc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwgICAxMSArCiAuLi4vdXRpbHMv YWN0aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQgICAgICAgfCAgICAyICsKIHNyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAgMTAgKwogc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAgMSArCiBzcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgICA2ICstCiBzcmMvaW5jbHVkZS9w b3N0bWFzdGVyL2Jnd29ya2VyLmggICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vc2xvdC5oICAgICAgICAgICAgICAgIHwgICAxNyArLQogc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd2FscmVjZWl2ZXIuaCAgICAgICAgIHwgICAxOSArCiBzcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgIDEwICsKIC4uLi90LzA1MF9zdGFuZGJ5 X2ZhaWxvdmVyX3Nsb3RzX3N5bmMucGwgICAgICB8ICAxNjYgKystCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3J1bGVzLm91dCAgICAgICAgICAgfCAgICA1ICstCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N5c3ZpZXdzLm91dCAgICAgICAgfCAgICAzICstCiBzcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgICAyICsKIDMzIGZpbGVzIGNoYW5nZWQs IDE2NzYgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwgYi9kb2Mvc3JjL3NnbWwvYmd3b3JrZXIuc2dtbApp bmRleCAyYzM5MzM4NWE5Li5hN2NmZTZjNThjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvYmd3 b3JrZXIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvYmd3b3JrZXIuc2dtbApAQCAtMTE0LDE4ICsx MTQsNTkgQEAgdHlwZWRlZiBzdHJ1Y3QgQmFja2dyb3VuZFdvcmtlcgogCiAgIDxwYXJhPgogICAg PHN0cnVjdGZpZWxkPmJnd19zdGFydF90aW1lPC9zdHJ1Y3RmaWVsZD4gaXMgdGhlIHNlcnZlciBz dGF0ZSBkdXJpbmcgd2hpY2gKLSAgIDxjb21tYW5kPnBvc3RncmVzPC9jb21tYW5kPiBzaG91bGQg c3RhcnQgdGhlIHByb2Nlc3M7IGl0IGNhbiBiZSBvbmUgb2YKLSAgIDxsaXRlcmFsPkJnV29ya2Vy U3RhcnRfUG9zdG1hc3RlclN0YXJ0PC9saXRlcmFsPiAoc3RhcnQgYXMgc29vbiBhcwotICAgPGNv bW1hbmQ+cG9zdGdyZXM8L2NvbW1hbmQ+IGl0c2VsZiBoYXMgZmluaXNoZWQgaXRzIG93biBpbml0 aWFsaXphdGlvbjsgcHJvY2Vzc2VzCi0gICByZXF1ZXN0aW5nIHRoaXMgYXJlIG5vdCBlbGlnaWJs ZSBmb3IgZGF0YWJhc2UgY29ubmVjdGlvbnMpLAotICAgPGxpdGVyYWw+QmdXb3JrZXJTdGFydF9D b25zaXN0ZW50U3RhdGU8L2xpdGVyYWw+IChzdGFydCBhcyBzb29uIGFzIGEgY29uc2lzdGVudCBz dGF0ZQotICAgaGFzIGJlZW4gcmVhY2hlZCBpbiBhIGhvdCBzdGFuZGJ5LCBhbGxvd2luZyBwcm9j ZXNzZXMgdG8gY29ubmVjdCB0bwotICAgZGF0YWJhc2VzIGFuZCBydW4gcmVhZC1vbmx5IHF1ZXJp ZXMpLCBhbmQKLSAgIDxsaXRlcmFsPkJnV29ya2VyU3RhcnRfUmVjb3ZlcnlGaW5pc2hlZDwvbGl0 ZXJhbD4gKHN0YXJ0IGFzIHNvb24gYXMgdGhlIHN5c3RlbSBoYXMKLSAgIGVudGVyZWQgbm9ybWFs IHJlYWQtd3JpdGUgc3RhdGUpLiAgTm90ZSB0aGUgbGFzdCB0d28gdmFsdWVzIGFyZSBlcXVpdmFs ZW50Ci0gICBpbiBhIHNlcnZlciB0aGF0J3Mgbm90IGEgaG90IHN0YW5kYnkuICBOb3RlIHRoYXQg dGhpcyBzZXR0aW5nIG9ubHkgaW5kaWNhdGVzCi0gICB3aGVuIHRoZSBwcm9jZXNzZXMgYXJlIHRv IGJlIHN0YXJ0ZWQ7IHRoZXkgZG8gbm90IHN0b3Agd2hlbiBhIGRpZmZlcmVudCBzdGF0ZQotICAg aXMgcmVhY2hlZC4KKyAgIDxjb21tYW5kPnBvc3RncmVzPC9jb21tYW5kPiBzaG91bGQgc3RhcnQg dGhlIHByb2Nlc3MuIE5vdGUgdGhhdCB0aGlzIHNldHRpbmcKKyAgIG9ubHkgaW5kaWNhdGVzIHdo ZW4gdGhlIHByb2Nlc3NlcyBhcmUgdG8gYmUgc3RhcnRlZDsgdGhleSBkbyBub3Qgc3RvcCB3aGVu CisgICBhIGRpZmZlcmVudCBzdGF0ZSBpcyByZWFjaGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOgor CisgICA8dmFyaWFibGVsaXN0PgorICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJtPjxsaXRl cmFsPkJnV29ya2VyU3RhcnRfUG9zdG1hc3RlclN0YXJ0PC9saXRlcmFsPjwvdGVybT4KKyAgICAg PGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgPGluZGV4dGVybT48cHJpbWFyeT5CZ1dv cmtlclN0YXJ0X1Bvc3RtYXN0ZXJTdGFydDwvcHJpbWFyeT48L2luZGV4dGVybT4KKyAgICAgICBT dGFydCBhcyBzb29uIGFzIHBvc3RncmVzIGl0c2VsZiBoYXMgZmluaXNoZWQgaXRzIG93biBpbml0 aWFsaXphdGlvbjsKKyAgICAgICBwcm9jZXNzZXMgcmVxdWVzdGluZyB0aGlzIGFyZSBub3QgZWxp Z2libGUgZm9yIGRhdGFiYXNlIGNvbm5lY3Rpb25zLgorICAgICAgPC9wYXJhPgorICAgICA8L2xp c3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAg PHRlcm0+PGxpdGVyYWw+QmdXb3JrZXJTdGFydF9Db25zaXN0ZW50U3RhdGU8L2xpdGVyYWw+PC90 ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICA8aW5kZXh0ZXJtPjxw cmltYXJ5PkJnV29ya2VyU3RhcnRfQ29uc2lzdGVudFN0YXRlPC9wcmltYXJ5PjwvaW5kZXh0ZXJt PgorICAgICAgIFN0YXJ0IGFzIHNvb24gYXMgYSBjb25zaXN0ZW50IHN0YXRlIGhhcyBiZWVuIHJl YWNoZWQgaW4gYSBob3Qtc3RhbmRieSwKKyAgICAgICBhbGxvd2luZyBwcm9jZXNzZXMgdG8gY29u bmVjdCB0byBkYXRhYmFzZXMgYW5kIHJ1biByZWFkLW9ubHkgcXVlcmllcy4KKyAgICAgIDwvcGFy YT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgIDx2YXJsaXN0 ZW50cnk+CisgICAgIDx0ZXJtPjxsaXRlcmFsPkJnV29ya2VyU3RhcnRfQ29uc2lzdGVudFN0YXRl X0hvdFN0YW5kYnk8L2xpdGVyYWw+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFy YT4KKyAgICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5PkJnV29ya2VyU3RhcnRfQ29uc2lzdGVudFN0 YXRlX0hvdFN0YW5kYnk8L3ByaW1hcnk+PC9pbmRleHRlcm0+CisgICAgICAgU2FtZSBtZWFuaW5n IGFzIDxsaXRlcmFsPkJnV29ya2VyU3RhcnRfQ29uc2lzdGVudFN0YXRlPC9saXRlcmFsPiBidXQK KyAgICAgICBpdCBpcyBtb3JlIHN0cmljdCBpbiB0ZXJtcyBvZiB0aGUgc2VydmVyIGkuZS4gc3Rh cnQgdGhlIHdvcmtlciBvbmx5CisgICAgICAgaWYgaXQgaXMgaG90LXN0YW5kYnkuCisgICAgICA8 L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFy bGlzdGVudHJ5PgorICAgICA8dGVybT48bGl0ZXJhbD5CZ1dvcmtlclN0YXJ0X1JlY292ZXJ5Rmlu aXNoZWQ8L2xpdGVyYWw+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAg ICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5PkJnV29ya2VyU3RhcnRfUmVjb3ZlcnlGaW5pc2hlZDwv cHJpbWFyeT48L2luZGV4dGVybT4KKyAgICAgICBTdGFydCBhcyBzb29uIGFzIHRoZSBzeXN0ZW0g aGFzIGVudGVyZWQgbm9ybWFsIHJlYWQtd3JpdGUgc3RhdGUuIE5vdGUKKyAgICAgICB0aGF0IHRo ZSA8bGl0ZXJhbD5CZ1dvcmtlclN0YXJ0X0NvbnNpc3RlbnRTdGF0ZTwvbGl0ZXJhbD4gYW5kCisg ICAgICA8bGl0ZXJhbD5CZ1dvcmtlclN0YXJ0X1JlY292ZXJ5RmluaXNoZWQ8L2xpdGVyYWw+IGFy ZSBlcXVpdmFsZW50CisgICAgICAgaW4gYSBzZXJ2ZXIgdGhhdCdzIG5vdCBhIGhvdCBzdGFuZGJ5 LgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5Pgor CisgICA8L3ZhcmlhYmxlbGlzdD4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4 IDYxMDM4NDcyYzUuLmJkMmQyZjg3MWUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTQ2MTIsOCArNDYxMiwxMyBA QCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJs ZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgICAgIDx2YXJuYW1lPnByaW1hcnlfY29u bmluZm88L3Zhcm5hbWU+IHN0cmluZywgb3IgaW4gYSBzZXBhcmF0ZQogICAgICAgICAgIDxmaWxl bmFtZT5+Ly5wZ3Bhc3M8L2ZpbGVuYW1lPiBmaWxlIG9uIHRoZSBzdGFuZGJ5IHNlcnZlciAodXNl CiAgICAgICAgICAgPGxpdGVyYWw+cmVwbGljYXRpb248L2xpdGVyYWw+IGFzIHRoZSBkYXRhYmFz ZSBuYW1lKS4KLSAgICAgICAgICBEbyBub3Qgc3BlY2lmeSBhIGRhdGFiYXNlIG5hbWUgaW4gdGhl Ci0gICAgICAgICAgPHZhcm5hbWU+cHJpbWFyeV9jb25uaW5mbzwvdmFybmFtZT4gc3RyaW5nLgor ICAgICAgICAgPC9wYXJhPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgc2xvdCBzeW5j aHJvbml6YXRpb24gaXMgZW5hYmxlZCAoc2VlCisgICAgICAgICAgPHhyZWYgbGlua2VuZD0iZ3Vj LWVuYWJsZS1zeW5jc2xvdCIvPikgdGhlbiBpdCBpcyBhbHNvCisgICAgICAgICAgbmVjZXNzYXJ5 IHRvIHNwZWNpZnkgPGxpdGVyYWw+ZGJuYW1lPC9saXRlcmFsPiBpbiB0aGUKKyAgICAgICAgICA8 dmFybmFtZT5wcmltYXJ5X2Nvbm5pbmZvPC92YXJuYW1lPiBzdHJpbmcuIFRoaXMgd2lsbCBvbmx5 IGJlIHVzZWQgZm9yCisgICAgICAgICAgc2xvdCBzeW5jaHJvbml6YXRpb24uIEl0IGlzIGlnbm9y ZWQgZm9yIHN0cmVhbWluZy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAg ICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0aGUgPGZpbGVuYW1lPnBv c3RncmVzcWwuY29uZjwvZmlsZW5hbWU+CkBAIC00OTM4LDYgKzQ5NDMsMjQgQEAgQU5ZIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxh Y2VhYmxlIGNsYXNzPSIKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5Pgog CisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1lbmFibGUtc3luY3Nsb3QiIHhyZWZsYWJlbD0i ZW5hYmxlX3N5bmNzbG90Ij4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPmVuYWJsZV9zeW5jc2xvdDwv dmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAg ICA8cHJpbWFyeT48dmFybmFtZT5lbmFibGVfc3luY3Nsb3Q8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRp b24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+ CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIEl0IGVuYWJsZXMgYSBw aHlzaWNhbCBzdGFuZGJ5IHRvIHN5bmNocm9uaXplIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdHMKKyAg ICAgICAgZnJvbSB0aGUgcHJpbWFyeSBzZXJ2ZXIgc28gdGhhdCBsb2dpY2FsIHN1YnNjcmliZXJz IGFyZSBub3QgYmxvY2tlZAorICAgICAgICBhZnRlciBmYWlsb3Zlci4KKyAgICAgICA8L3BhcmE+ CisgICAgICAgPHBhcmE+CisgICAgICAgIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIFRoaXMg cGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnBvc3Rn cmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Igb24gdGhlIHNlcnZlciBjb21tYW5kIGxpbmUu CisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+ CiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rp bmcuc2dtbAppbmRleCBjZDE1MmQ0Y2VkLi42NzIxZDg5NTFkIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvbG9naWNhbGRlY29kaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNv ZGluZy5zZ21sCkBAIC0zNDYsNiArMzQ2LDM5IEBAIHBvc3RncmVzPSMgc2VsZWN0ICogZnJvbSBw Z19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VCiAg ICAgIDxmdW5jdGlvbj5wZ19sb2dfc3RhbmRieV9zbmFwc2hvdDwvZnVuY3Rpb24+IGZ1bmN0aW9u IG9uIHRoZSBwcmltYXJ5LgogICAgIDwvcGFyYT4KIAorICAgIDxwYXJhPgorICAgICBBIGxvZ2lj YWwgcmVwbGljYXRpb24gc2xvdCBvbiB0aGUgcHJpbWFyeSBjYW4gYmUgc3luY2hyb25pemVkIHRv IHRoZSBob3QKKyAgICAgc3RhbmRieSBieSBlbmFibGluZyB0aGUgZmFpbG92ZXIgb3B0aW9uIGR1 cmluZyBzbG90IGNyZWF0aW9uIGFuZCBzZXR0aW5nCisgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1l bmFibGUtc3luY3Nsb3QiLz4gb24gdGhlIHN0YW5kYnkuIEZvciB0aGUgc3luY2hyb25pemF0aW9u CisgICAgIHRvIHdvcmssIGl0IGlzIG1hbmRhdG9yeSB0byBoYXZlIGEgcGh5c2ljYWwgcmVwbGlj YXRpb24gc2xvdCBiZXR3ZWVuIHRoZQorICAgICBwcmltYXJ5IGFuZCB0aGUgc3RhbmRieSwgYW5k IDx2YXJuYW1lPmhvdF9zdGFuZGJ5X2ZlZWRiYWNrPC92YXJuYW1lPiBtdXN0CisgICAgIGJlIGVu YWJsZWQgb24gdGhlIHN0YW5kYnkuIEl0J3MgYWxzbyBoaWdobHkgcmVjb21tZW5kZWQgdGhhdCB0 aGUgc2FpZAorICAgICBwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90IGlzIG5hbWVkIGluIDx2YXJu YW1lPnN0YW5kYnlfc2xvdF9uYW1lczwvdmFybmFtZT4KKyAgICAgbGlzdCBvbiB0aGUgcHJpbWFy eSwgdG8gcHJldmVudCB0aGUgc3Vic2NyaWJlciBmcm9tIGNvbnN1bWluZyBjaGFuZ2VzCisgICAg IGZhc3RlciB0aGFuIHRoZSBob3Qgc3RhbmRieS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4K KyAgICAgVGhlIGFiaWxpdHkgdG8gcmVzdW1lIGxvZ2ljYWwgcmVwbGljYXRpb24gYWZ0ZXIgZmFp bG92ZXIgZGVwZW5kcyB1cG9uIHRoZQorICAgICA8bGluayBsaW5rZW5kPSJ2aWV3LXBnLXJlcGxp Y2F0aW9uLXNsb3RzIj5wZ19yZXBsaWNhdGlvbl9zbG90czwvbGluaz4uPHN0cnVjdGZpZWxkPnN5 bmNlZDwvc3RydWN0ZmllbGQ+CisgICAgIHZhbHVlIGZvciB0aGUgc3luY2hyb25pemVkIHNsb3Rz IG9uIHRoZSBzdGFuZGJ5IGF0IHRoZSB0aW1lIG9mIGZhaWxvdmVyLgorICAgICBPbmx5IHBlcnNp c3RlbnQgc2xvdHMgdGhhdCBoYXZlIGF0dGFpbmVkIHN5bmNlZCBzdGF0ZSBhcyB0cnVlIG9uIHRo ZSBzdGFuZGJ5CisgICAgIGJlZm9yZSBmYWlsb3ZlciBjYW4gYmUgdXNlZCBmb3IgbG9naWNhbCBy ZXBsaWNhdGlvbiBhZnRlciBmYWlsb3Zlci4KKyAgICAgVGVtcG9yYXJ5IHNsb3RzIHdpbGwgYmUg ZHJvcHBlZCwgdGhlcmVmb3JlIGxvZ2ljYWwgcmVwbGljYXRpb24gZm9yIHRob3NlCisgICAgIHNs b3RzIGNhbm5vdCBiZSByZXN1bWVkLiBGb3IgZXhhbXBsZSwgaWYgdGhlIHN5bmNocm9uaXplZCBz bG90IGNvdWxkIG5vdAorICAgICBiZWNvbWUgcGVyc2lzdGVudCBvbiB0aGUgc3RhbmRieSBkdWUg dG8gYSBkaXNhYmxlZCBzdWJzY3JpcHRpb24sIHRoZW4gdGhlCisgICAgIHN1YnNjcmlwdGlvbiBj YW5ub3QgYmUgcmVzdW1lZCBhZnRlciBmYWlsb3ZlciBldmVuIHdoZW4gaXQgaXMgZW5hYmxlZC4K KyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVG8gcmVzdW1lIGxvZ2ljYWwgcmVwbGlj YXRpb24gYWZ0ZXIgZmFpbG92ZXIgZnJvbSB0aGUgc3luY2VkIGxvZ2ljYWwKKyAgICAgc2xvdHMs IHRoZSBzdWJzY3JpcHRpb24ncyAnY29ubmluZm8nIG11c3QgYmUgYWx0ZXJlZCB0byBwb2ludCB0 byB0aGUKKyAgICAgbmV3IHByaW1hcnkgc2VydmVyLiBUaGlzIGlzIGRvbmUgdXNpbmcKKyAgICAg PGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uLXBhcmFtcy1jb25uZWN0aW9uIj48 Y29tbWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIENPTk5FQ1RJT048L2NvbW1hbmQ+PC9saW5r Pi4KKyAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBzdWJzY3JpcHRpb25zIGFyZSBmaXJzdCBk aXNhYmxlZCBiZWZvcmUgcHJvbW90aW5nCisgICAgIHRoZSBzdGFuZGJ5IGFuZCBhcmUgZW5hYmxl ZCBiYWNrIGFmdGVyIGFsdGVyaW5nIHRoZSBjb25uZWN0aW9uIHN0cmluZy4KKyAgICA8L3BhcmE+ CisKICAgICA8Y2F1dGlvbj4KICAgICAgPHBhcmE+CiAgICAgICBSZXBsaWNhdGlvbiBzbG90cyBw ZXJzaXN0IGFjcm9zcyBjcmFzaGVzIGFuZCBrbm93IG5vdGhpbmcgYWJvdXQgdGhlIHN0YXRlCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgYi9kb2Mvc3JjL3NnbWwv c3lzdGVtLXZpZXdzLnNnbWwKaW5kZXggMTg2OGI5NTgzNi4uNGYzNmEyZjczMiAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zeXN0 ZW0tdmlld3Muc2dtbApAQCAtMjU2Niw2ICsyNTY2LDIyIEBAIFNFTEVDVCAqIEZST00gcGdfbG9j a3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBhcmVkX3hhY3RzIHBweAogICAgICAgIGFmdGVyIGZhaWxv dmVyLiBBbHdheXMgZmFsc2UgZm9yIHBoeXNpY2FsIHNsb3RzLgogICAgICAgPC9wYXJhPjwvZW50 cnk+CiAgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxz dHJ1Y3RmaWVsZD5zeW5jZWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAg PC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICBUcnVlIGlmIHRoaXMgaXMgYSBsb2dpY2FsIHNs b3QgdGhhdCB3YXMgc3luY2VkIGZyb20gYSBwcmltYXJ5IHNlcnZlci4KKyAgICAgIDwvcGFyYT4K KyAgICAgIDxwYXJhPgorICAgICAgIE9uIGEgaG90IHN0YW5kYnksIHRoZSBzbG90cyB3aXRoIHRo ZSBzeW5jZWQgY29sdW1uIG1hcmtlZCBhcyB0cnVlIGNhbgorICAgICAgIG5laXRoZXIgYmUgdXNl ZCBmb3IgbG9naWNhbCBkZWNvZGluZyBub3IgZHJvcHBlZCBieSB0aGUgdXNlci4gVGhlIHZhbHVl CisgICAgICAgb2YgdGhpcyBjb2x1bW4gaGFzIG5vIG1lYW5pbmcgb24gdGhlIHByaW1hcnkgc2Vy dmVyOyB0aGUgY29sdW1uIHZhbHVlIG9uCisgICAgICAgdGhlIHByaW1hcnkgaXMgZGVmYXVsdCBm YWxzZSBmb3IgYWxsIHNsb3RzIGJ1dCBtYXkgKGlmIGxlZnRvdmVyIGZyb20gYQorICAgICAgIHBy b21vdGVkIHN0YW5kYnkpIGFsc28gYmUgdHJ1ZS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICA8L3Jvdz4KICAgICA8L3Rib2R5PgogICAgPC90Z3JvdXA+CiAgIDwvdGFibGU+CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nLmMKaW5kZXggNDc4Mzc3YzRhMi4uMmQ2NmQwZDg0YiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtMzU5Niw2ICszNTk2LDkgQEAgWExvZ0dldExhc3RSZW1v dmVkU2Vnbm8odm9pZCkKIC8qCiAgKiBSZXR1cm4gdGhlIG9sZGVzdCBXQUwgc2VnbWVudCBvbiB0 aGUgZ2l2ZW4gVExJIHRoYXQgc3RpbGwgZXhpc3RzIGluCiAgKiBYTE9HRElSLCBvciAwIGlmIG5v bmUuCisgKgorICogSWYgdGhlIGdpdmVuIFRMSSBpcyAwLCByZXR1cm4gdGhlIG9sZGVzdCBXQUwg c2VnbWVudCBhbW9uZyBhbGwgdGhlIGN1cnJlbnRseQorICogZXhpc3RpbmcgV0FMIHNlZ21lbnRz LgogICovCiBYTG9nU2VnTm8KIFhMb2dHZXRPbGRlc3RTZWdubyhUaW1lTGluZUlEIHRsaSkKQEAg LTM2MTksNyArMzYyMiw3IEBAIFhMb2dHZXRPbGRlc3RTZWdubyhUaW1lTGluZUlEIHRsaSkKIAkJ CQkJCSB3YWxfc2VnbWVudF9zaXplKTsKIAogCQkvKiBJZ25vcmUgYW55dGhpbmcgdGhhdCdzIG5v dCBmcm9tIHRoZSBUTEkgb2YgaW50ZXJlc3QuICovCi0JCWlmICh0bGkgIT0gZmlsZV90bGkpCisJ CWlmICh0bGkgIT0gMCAmJiB0bGkgIT0gZmlsZV90bGkpCiAJCQljb250aW51ZTsKIAogCQkvKiBJ ZiBpdCdzIHRoZSBvbGRlc3Qgc28gZmFyLCB1cGRhdGUgb2xkZXN0X3NlZ25vLiAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCAxYjQ4ZDcxNzFhLi5lMzhh OTU4N2UyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3Zl cnkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwpAQCAt NTAsNiArNTAsNyBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvc3RhcnR1cC5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5o IgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv bGF0Y2guaCIKQEAgLTE0NDEsNiArMTQ0MiwyMCBAQCBGaW5pc2hXYWxSZWNvdmVyeSh2b2lkKQog CSAqLwogCVhMb2dTaHV0ZG93bldhbFJjdigpOwogCisJLyoKKwkgKiBTaHV0ZG93biB0aGUgc2xv dCBzeW5jIHdvcmtlcnMgdG8gcHJldmVudCBwb3RlbnRpYWwgY29uZmxpY3RzIGJldHdlZW4KKwkg KiB1c2VyIHByb2Nlc3NlcyBhbmQgc2xvdHN5bmMgd29ya2VycyBhZnRlciBhIHByb21vdGlvbi4K KwkgKgorCSAqIFdlIGRvIG5vdCB1cGRhdGUgdGhlICdzeW5jZWQnIGNvbHVtbiBmcm9tIHRydWUg dG8gZmFsc2UgaGVyZSwgYXMgYW55CisJICogZmFpbGVkIHVwZGF0ZSBjb3VsZCBsZWF2ZSAnc3lu Y2VkJyBjb2x1bW4gZmFsc2UgZm9yIHNvbWUgc2xvdHMuIFRoaXMKKwkgKiBjb3VsZCBjYXVzZSBp c3N1ZXMgZHVyaW5nIHNsb3Qgc3luYyBhZnRlciByZXN0YXJ0aW5nIHRoZSBzZXJ2ZXIgYXMgYQor CSAqIHN0YW5kYnkuIFdoaWxlIHVwZGF0aW5nIGFmdGVyIHN3aXRjaGluZyB0byB0aGUgbmV3IHRp bWVsaW5lIGlzIGFuCisJICogb3B0aW9uLCBpdCBkb2VzIG5vdCBzaW1wbGlmeSB0aGUgaGFuZGxp bmcgZm9yICdzeW5jZWQnIGNvbHVtbi4KKwkgKiBUaGVyZWZvcmUsIHdlIHJldGFpbiB0aGUgJ3N5 bmNlZCcgY29sdW1uIGFzIHRydWUgYWZ0ZXIgcHJvbW90aW9uIGFzIGl0CisJICogbWF5IHByb3Zp ZGUgdXNlZnVsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzbG90IG9yaWdpbi4KKwkgKi8KKwlTaHV0 RG93blNsb3RTeW5jKCk7CisKIAkvKgogCSAqIFdlIGFyZSBub3cgZG9uZSByZWFkaW5nIHRoZSB4 bG9nIGZyb20gc3RyZWFtLiBUdXJuIG9mZiBzdHJlYW1pbmcKIAkgKiByZWNvdmVyeSB0byBmb3Jj ZSBmZXRjaGluZyB0aGUgZmlsZXMgKHdoaWNoIHdvdWxkIGJlIHJlcXVpcmVkIGF0IGVuZCBvZgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IGU0M2E5MzczOWQuLmFkNTdiYWRl MDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEwMjQsNyArMTAyNCw4 IEBAIENSRUFURSBWSUVXIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIEFTCiAgICAgICAgICAgICBMLnNh ZmVfd2FsX3NpemUsCiAgICAgICAgICAgICBMLnR3b19waGFzZSwKICAgICAgICAgICAgIEwuY29u ZmxpY3RfcmVhc29uLAotICAgICAgICAgICAgTC5mYWlsb3ZlcgorICAgICAgICAgICAgTC5mYWls b3ZlciwKKyAgICAgICAgICAgIEwuc3luY2VkCiAgICAgRlJPTSBwZ19nZXRfcmVwbGljYXRpb25f c2xvdHMoKSBBUyBMCiAgICAgICAgICAgICBMRUZUIEpPSU4gcGdfZGF0YWJhc2UgRCBPTiAoTC5k YXRvaWQgPSBELm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3 b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwppbmRleCA2N2Y5MmMy NGRiLi40NjgyOGI4YTg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29y a2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCkBAIC0yMSw2ICsy MSw3IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCiAjaW5jbHVkZSAicmVw bGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNh bHdvcmtlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvZHNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2xhdGNoLmgiCkBAIC0xMjksNiArMTMwLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVj dAogCXsKIAkJIkFwcGx5V29ya2VyTWFpbiIsIEFwcGx5V29ya2VyTWFpbgogCX0sCisJeworCQki UmVwbFNsb3RTeW5jV29ya2VyTWFpbiIsIFJlcGxTbG90U3luY1dvcmtlck1haW4KKwl9LAogCXsK IAkJIlBhcmFsbGVsQXBwbHlXb3JrZXJNYWluIiwgUGFyYWxsZWxBcHBseVdvcmtlck1haW4KIAl9 LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwppbmRleCBmZWI0NzFkZDFkLi5kOTBkNWQx NTc2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYworKysg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAtMTE2LDYgKzExNiw3IEBA CiAjaW5jbHVkZSAicG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVy LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wZ19zaG1lbS5oIgpAQCAtMTAxMCw2ICsxMDExLDEyIEBAIFBvc3RtYXN0ZXJNYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJICovCiAJQXBwbHlMYXVuY2hlclJlZ2lzdGVyKCk7CiAKKwkv KgorCSAqIFJlZ2lzdGVyIHRoZSBzbG90IHN5bmMgd29ya2VyIGhlcmUgdG8ga2ljayBzdGFydCBz bG90LXN5bmMgb3BlcmF0aW9uCisJICogc29vbmVyIG9uIHRoZSBwaHlzaWNhbCBzdGFuZGJ5Lgor CSAqLworCVNsb3RTeW5jV29ya2VyUmVnaXN0ZXIoKTsKKwogCS8qCiAJICogcHJvY2VzcyBhbnkg bGlicmFyaWVzIHRoYXQgc2hvdWxkIGJlIHByZWxvYWRlZCBhdCBwb3N0bWFzdGVyIHN0YXJ0CiAJ ICovCkBAIC01Nzk5LDYgKzU4MDYsOSBAQCBiZ3dvcmtlcl9zaG91bGRfc3RhcnRfbm93KEJnV29y a2VyU3RhcnRUaW1lIHN0YXJ0X3RpbWUpCiAJCWNhc2UgUE1fSE9UX1NUQU5EQlk6CiAJCQlpZiAo c3RhcnRfdGltZSA9PSBCZ1dvcmtlclN0YXJ0X0NvbnNpc3RlbnRTdGF0ZSkKIAkJCQlyZXR1cm4g dHJ1ZTsKKwkJCWlmIChzdGFydF90aW1lID09IEJnV29ya2VyU3RhcnRfQ29uc2lzdGVudFN0YXRl X0hvdFN0YW5kYnkgJiYKKwkJCQkJIHBtU3RhdGUgIT0gUE1fUlVOKQorCQkJCXJldHVybiB0cnVl OwogCQkJLyogZmFsbCB0aHJvdWdoICovCiAKIAkJY2FzZSBQTV9SRUNPVkVSWToKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNl aXZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdh bHJlY2VpdmVyLmMKaW5kZXggYzUyMzJjZWUyZi4uOTM0YzFhM2FiMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJl Y2VpdmVyLmMKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog I2luY2x1ZGUgInV0aWxzL3BnX2xzbi5oIgogI2luY2x1ZGUgInV0aWxzL3R1cGxlc3RvcmUuaCIK KyNpbmNsdWRlICJ1dGlscy92YXJsZW5hLmgiCiAKIFBHX01PRFVMRV9NQUdJQzsKIApAQCAtNTgs NiArNTksNyBAQCBzdGF0aWMgdm9pZCBsaWJwcXJjdl9nZXRfc2VuZGVyaW5mbyhXYWxSZWNlaXZl ckNvbm4gKmNvbm4sCiAJCQkJCQkJCQljaGFyICoqc2VuZGVyX2hvc3QsIGludCAqc2VuZGVyX3Bv cnQpOwogc3RhdGljIGNoYXIgKmxpYnBxcmN2X2lkZW50aWZ5X3N5c3RlbShXYWxSZWNlaXZlckNv bm4gKmNvbm4sCiAJCQkJCQkJCQkgIFRpbWVMaW5lSUQgKnByaW1hcnlfdGxpKTsKK3N0YXRpYyBj aGFyICpsaWJwcXJjdl9nZXRfZGJuYW1lX2Zyb21fY29ubmluZm8oY29uc3QgY2hhciAqY29ubmlu Zm8pOwogc3RhdGljIGludAlsaWJwcXJjdl9zZXJ2ZXJfdmVyc2lvbihXYWxSZWNlaXZlckNvbm4g KmNvbm4pOwogc3RhdGljIHZvaWQgbGlicHFyY3ZfcmVhZHRpbWVsaW5laGlzdG9yeWZpbGUoV2Fs UmVjZWl2ZXJDb25uICpjb25uLAogCQkJCQkJCQkJCQkgVGltZUxpbmVJRCB0bGksIGNoYXIgKipm aWxlbmFtZSwKQEAgLTEwMCw2ICsxMDIsNyBAQCBzdGF0aWMgV2FsUmVjZWl2ZXJGdW5jdGlvbnNU eXBlIFBRV2FsUmVjZWl2ZXJGdW5jdGlvbnMgPSB7CiAJLndhbHJjdl9zZW5kID0gbGlicHFyY3Zf c2VuZCwKIAkud2FscmN2X2NyZWF0ZV9zbG90ID0gbGlicHFyY3ZfY3JlYXRlX3Nsb3QsCiAJLndh bHJjdl9hbHRlcl9zbG90ID0gbGlicHFyY3ZfYWx0ZXJfc2xvdCwKKwkud2FscmN2X2dldF9kYm5h bWVfZnJvbV9jb25uaW5mbyA9IGxpYnBxcmN2X2dldF9kYm5hbWVfZnJvbV9jb25uaW5mbywKIAku d2FscmN2X2dldF9iYWNrZW5kX3BpZCA9IGxpYnBxcmN2X2dldF9iYWNrZW5kX3BpZCwKIAkud2Fs cmN2X2V4ZWMgPSBsaWJwcXJjdl9leGVjLAogCS53YWxyY3ZfZGlzY29ubmVjdCA9IGxpYnBxcmN2 X2Rpc2Nvbm5lY3QKQEAgLTQzMiw2ICs0MzUsNDQgQEAgbGlicHFyY3Zfc2VydmVyX3ZlcnNpb24o V2FsUmVjZWl2ZXJDb25uICpjb25uKQogCXJldHVybiBQUXNlcnZlclZlcnNpb24oY29ubi0+c3Ry ZWFtQ29ubik7CiB9CiAKKy8qCisgKiBHZXQgZGF0YWJhc2UgbmFtZSBmcm9tIHRoZSBwcmltYXJ5 IHNlcnZlcidzIGNvbm5pbmZvLgorICoKKyAqIElmIGRibmFtZSBpcyBub3QgZm91bmQgaW4gY29u bkluZm8sIHJldHVybiBOVUxMIHZhbHVlLgorICovCitzdGF0aWMgY2hhciAqCitsaWJwcXJjdl9n ZXRfZGJuYW1lX2Zyb21fY29ubmluZm8oY29uc3QgY2hhciAqY29ubkluZm8pCit7CisJUFFjb25u aW5mb09wdGlvbiAqb3B0czsKKwljaGFyCSAgICpkYm5hbWUgPSBOVUxMOworCWNoYXIJICAgKmVy ciA9IE5VTEw7CisKKwlvcHRzID0gUFFjb25uaW5mb1BhcnNlKGNvbm5JbmZvLCAmZXJyKTsKKwlp ZiAob3B0cyA9PSBOVUxMKQorCXsKKwkJLyogVGhlIGVycm9yIHN0cmluZyBpcyBtYWxsb2MnZCwg c28gd2UgbXVzdCBmcmVlIGl0IGV4cGxpY2l0bHkgKi8KKwkJY2hhcgkgICAqZXJyY29weSA9IGVy ciA/IHBzdHJkdXAoZXJyKSA6ICJvdXQgb2YgbWVtb3J5IjsKKworCQlQUWZyZWVtZW0oZXJyKTsK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJ CQkJIGVycm1zZygiaW52YWxpZCBjb25uZWN0aW9uIHN0cmluZyBzeW50YXg6ICVzIiwgZXJyY29w eSkpKTsKKwl9CisKKwlmb3IgKFBRY29ubmluZm9PcHRpb24gKm9wdCA9IG9wdHM7IG9wdC0+a2V5 d29yZCAhPSBOVUxMOyArK29wdCkKKwl7CisJCS8qCisJCSAqIElmIG11bHRpcGxlIGRibmFtZXMg YXJlIHNwZWNpZmllZCwgdGhlbiB0aGUgbGFzdCBvbmUgd2lsbCBiZQorCQkgKiByZXR1cm5lZAor CQkgKi8KKwkJaWYgKHN0cmNtcChvcHQtPmtleXdvcmQsICJkYm5hbWUiKSA9PSAwICYmIG9wdC0+ dmFsICYmCisJCQlvcHQtPnZhbFswXSAhPSAnXDAnKQorCQkJZGJuYW1lID0gcHN0cmR1cChvcHQt PnZhbCk7CisJfQorCisJcmV0dXJuIGRibmFtZTsKK30KKwogLyoKICAqIFN0YXJ0IHN0cmVhbWlu ZyBXQUwgZGF0YSBmcm9tIGdpdmVuIHN0cmVhbWluZyBvcHRpb25zLgogICoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCmluZGV4IDJkYzI1ZTM3YmIuLmJhMDNlZWZmMWMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQpAQCAtMjUsNiArMjUs NyBAQCBPQkpTID0gXAogCXByb3RvLm8gXAogCXJlbGF0aW9uLm8gXAogCXJlb3JkZXJidWZmZXIu byBcCisJc2xvdHN5bmMubyBcCiAJc25hcGJ1aWxkLm8gXAogCXRhYmxlc3luYy5vIFwKIAl3b3Jr ZXIubwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2Fs LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwppbmRleCBjYTA5 YzY4M2YxLi41YWVmYjEwZWNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xvZ2ljYWwuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xv Z2ljYWwuYwpAQCAtNTI0LDYgKzUyNCwxOCBAQCBDcmVhdGVEZWNvZGluZ0NvbnRleHQoWExvZ1Jl Y1B0ciBzdGFydF9sc24sCiAJCQkJIGVycm1zZygicmVwbGljYXRpb24gc2xvdCBcIiVzXCIgd2Fz IG5vdCBjcmVhdGVkIGluIHRoaXMgZGF0YWJhc2UiLAogCQkJCQkJTmFtZVN0cihzbG90LT5kYXRh Lm5hbWUpKSkpOwogCisJLyoKKwkgKiBEbyBub3QgYWxsb3cgY29uc3VtcHRpb24gb2YgYSAic3lu Y2hyb25pemVkIiBzbG90IHVudGlsIHRoZSBzdGFuZGJ5CisJICogZ2V0cyBwcm9tb3RlZC4KKwkg Ki8KKwlpZiAoUmVjb3ZlcnlJblByb2dyZXNzKCkgJiYgc2xvdC0+ZGF0YS5zeW5jZWQpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlT SVRFX1NUQVRFKSwKKwkJCQllcnJtc2coImNhbm5vdCB1c2UgcmVwbGljYXRpb24gc2xvdCBcIiVz XCIgZm9yIGxvZ2ljYWwiCisJCQkJCSAgICIgZGVjb2RpbmciLCBOYW1lU3RyKHNsb3QtPmRhdGEu bmFtZSkpLAorCQkJCWVycmRldGFpbCgiVGhpcyBzbG90IGlzIGJlaW5nIHN5bmNlZCBmcm9tIHRo ZSBwcmltYXJ5IHNlcnZlci4iKSwKKwkJCQllcnJoaW50KCJTcGVjaWZ5IGFub3RoZXIgcmVwbGlj YXRpb24gc2xvdC4iKSk7CisKIAkvKgogCSAqIENoZWNrIGlmIHNsb3QgaGFzIGJlZW4gaW52YWxp ZGF0ZWQgZHVlIHRvIG1heF9zbG90X3dhbF9rZWVwX3NpemUuIEF2b2lkCiAJICogImNhbm5vdCBn ZXQgY2hhbmdlcyIgd29yZGluZyBpbiB0aGlzIGVycm1zZyBiZWNhdXNlIHRoYXQnZCBiZQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZCBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKaW5kZXggMTA1MGViMmMw OS4uM2RlYzM2YTZkZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29u LmJ1aWxkCkBAIC0xMSw2ICsxMSw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ3By b3RvLmMnLAogICAncmVsYXRpb24uYycsCiAgICdyZW9yZGVyYnVmZmVyLmMnLAorICAnc2xvdHN5 bmMuYycsCiAgICdzbmFwYnVpbGQuYycsCiAgICd0YWJsZXN5bmMuYycsCiAgICd3b3JrZXIuYycs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uODdkNGY1ZThiMQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAtMCwwICsxLDEx NTggQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogc2xvdHN5bmMuYworICoJICAgUG9zdGdyZVNR TCB3b3JrZXIgZm9yIHN5bmNocm9uaXppbmcgc2xvdHMgdG8gYSBzdGFuZGJ5IHNlcnZlciBmcm9t IHRoZQorICogICAgICAgICBwcmltYXJ5IHNlcnZlci4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIw MjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklD QVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCisg KgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBjb2RlIGZvciBzbG90IHN5bmMgd29ya2VyIG9u IGEgcGh5c2ljYWwgc3RhbmRieQorICogdG8gZmV0Y2ggbG9naWNhbCBmYWlsb3ZlciBzbG90cyBp bmZvcm1hdGlvbiBmcm9tIHRoZSBwcmltYXJ5IHNlcnZlciwKKyAqIGNyZWF0ZSB0aGUgc2xvdHMg b24gdGhlIHN0YW5kYnkgYW5kIHN5bmNocm9uaXplIHRoZW0gcGVyaW9kaWNhbGx5LgorICoKKyAq IFdoaWxlIGNyZWF0aW5nIHRoZSBzbG90IG9uIHBoeXNpY2FsIHN0YW5kYnksIGlmIHRoZSBsb2Nh bCByZXN0YXJ0X2xzbiBhbmQvb3IKKyAqIGxvY2FsIGNhdGFsb2dfeG1pbiBpcyBhaGVhZCBvZiB0 aG9zZSBvbiB0aGUgcmVtb3RlIHRoZW4gdGhlIHdvcmtlciBjYW5ub3QKKyAqIGNyZWF0ZSB0aGUg bG9jYWwgc2xvdCBpbiBzeW5jIHdpdGggdGhlIHByaW1hcnkgc2VydmVyIGJlY2F1c2UgdGhhdCB3 b3VsZAorICogbWVhbiBtb3ZpbmcgdGhlIGxvY2FsIHNsb3QgYmFja3dhcmRzIGFuZCB0aGUgc3Rh bmRieSBtaWdodCBub3QgaGF2ZSBXQUxzCisgKiByZXRhaW5lZCBmb3Igb2xkIExTTi4gSW4gdGhp cyBjYXNlLCB0aGUgd29ya2VyIHdpbGwgbWFyayB0aGUgc2xvdCBhcworICogUlNfVEVNUE9SQVJZ LiBPbmNlIHRoZSBwcmltYXJ5IHNlcnZlciBjYXRjaGVzIHVwLCB0aGUgd29ya2VyIHdpbGwgbWFy ayB0aGUKKyAqIHNsb3QgYXMgUlNfUEVSU0lTVEVOVCAod2hpY2ggbWVhbnMgc3luYy1yZWFkeSkg YW5kIHdpbGwgcGVyZm9ybSB0aGUgc3luYworICogcGVyaW9kaWNhbGx5LgorICoKKyAqIFRoZSB3 b3JrZXIgYWxzbyB0YWtlcyBjYXJlIG9mIGRyb3BwaW5nIHRoZSBzbG90cyB3aGljaCB3ZXJlIGNy ZWF0ZWQgYnkgaXQKKyAqIGFuZCBhcmUgY3VycmVudGx5IG5vdCBuZWVkZWQgdG8gYmUgc3luY2hy b25pemVkLgorICoKKyAqIEl0IHdhaXRzIGZvciBhIHBlcmlvZCBvZiB0aW1lIGJlZm9yZSB0aGUg bmV4dCBzeW5jaHJvbml6YXRpb24sIHdpdGggdGhlCisgKiBkdXJhdGlvbiB2YXJ5aW5nIGJhc2Vk IG9uIHdoZXRoZXIgYW55IHNsb3RzIHdlcmUgdXBkYXRlZCBkdXJpbmcgdGhlIGxhc3QKKyAqIGN5 Y2xlLiBSZWZlciB0byB0aGUgY29tbWVudHMgYWJvdmUgd2FpdF9mb3Jfc2xvdF9hY3Rpdml0eSgp IGZvciBtb3JlIGRldGFpbHMuCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRl ICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCisjaW5jbHVkZSAiYWNj ZXNzL3RhYmxlLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCIKKyNpbmNsdWRl ICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRhYmFzZS5o IgorI2luY2x1ZGUgImNvbW1hbmRzL2RiY29tbWFuZHMuaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIK KyNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9p bnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCisjaW5jbHVkZSAi cmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9n aWNhbHdvcmtlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCisjaW5j bHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9p cGMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgorI2luY2x1ZGUgInRjb3AvdGNv cHByb3QuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2Zt Z3JvaWRzLmgiCisjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCisjaW5jbHVkZSAidXRpbHMv cGdfbHNuLmgiCisjaW5jbHVkZSAidXRpbHMvdmFybGVuYS5oIgorCisvKgorICogU3RydWN0dXJl IHRvIGhvbGQgaW5mb3JtYXRpb24gZmV0Y2hlZCBmcm9tIHRoZSBwcmltYXJ5IHNlcnZlciBhYm91 dCBhIGxvZ2ljYWwKKyAqIHJlcGxpY2F0aW9uIHNsb3QuCisgKi8KK3R5cGVkZWYgc3RydWN0IFJl bW90ZVNsb3QKK3sKKwljaGFyCSAgICpuYW1lOworCWNoYXIJICAgKnBsdWdpbjsKKwljaGFyCSAg ICpkYXRhYmFzZTsKKwlib29sCQl0d29fcGhhc2U7CisJYm9vbAkJZmFpbG92ZXI7CisJWExvZ1Jl Y1B0cglyZXN0YXJ0X2xzbjsKKwlYTG9nUmVjUHRyCWNvbmZpcm1lZF9sc247CisJVHJhbnNhY3Rp b25JZCBjYXRhbG9nX3htaW47CisKKwkvKiBSU19JTlZBTF9OT05FIGlmIHZhbGlkLCBvciB0aGUg cmVhc29uIG9mIGludmFsaWRhdGlvbiAqLworCVJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNh dXNlIGludmFsaWRhdGVkOworfSBSZW1vdGVTbG90OworCisvKgorICogU3RydWN0IGZvciBzaGFy aW5nIGluZm9ybWF0aW9uIGJldHdlZW4gc3RhcnR1cCBwcm9jZXNzIGFuZCBzbG90CisgKiBzeW5j IHdvcmtlci4KKyAqCisgKiBTbG90IHN5bmMgd29ya2VyJ3MgcGlkIGlzIG5lZWRlZCBieSBzdGFy dHVwIHByb2Nlc3MgaW4gb3JkZXIgdG8KKyAqIHNodXQgaXQgZG93biBkdXJpbmcgcHJvbW90aW9u LgorICovCit0eXBlZGVmIHN0cnVjdCBTbG90U3luY1dvcmtlckN0eFN0cnVjdAoreworCXBpZF90 CQlwaWQ7CisJc2xvY2tfdAkJbXV0ZXg7Cit9IFNsb3RTeW5jV29ya2VyQ3R4U3RydWN0OworCitT bG90U3luY1dvcmtlckN0eFN0cnVjdCAqU2xvdFN5bmNXb3JrZXIgPSBOVUxMOworCisvKiBHVUMg dmFyaWFibGUgKi8KK2Jvb2wJCWVuYWJsZV9zeW5jc2xvdCA9IGZhbHNlOworCisvKgorICogU2xl ZXAgdGltZSBpbiBtcyBiZXR3ZWVuIHNsb3Qtc3luYyBjeWNsZXMuCisgKiBTZWUgd2FpdF9mb3Jf c2xvdF9hY3Rpdml0eSgpIGZvciBob3cgd2UgYWRqdXN0IHRoaXMKKyAqLworc3RhdGljIGxvbmcg c2xlZXBfbXM7CisKK3N0YXRpYyB2b2lkIFByb2Nlc3NTbG90U3luY0ludGVycnVwdHMoV2FsUmVj ZWl2ZXJDb25uICp3cmNvbm4pOworCisvKgorICogSWYgbmVjZXNzYXJ5LCB1cGRhdGUgbG9jYWwg c2xvdCBtZXRhZGF0YSBiYXNlZCBvbiB0aGUgZGF0YSBmcm9tIHRoZSByZW1vdGUKKyAqIHNsb3Qu CisgKgorICogSWYgbm8gdXBkYXRlIHdhcyBuZWVkZWQgKHRoZSBkYXRhIG9mIHRoZSByZW1vdGUg c2xvdCBpcyB0aGUgc2FtZSBhcyB0aGUKKyAqIGxvY2FsIHNsb3QpIHJldHVybiBmYWxzZSwgb3Ro ZXJ3aXNlIHRydWUuCisgKi8KK3N0YXRpYyBib29sCitsb2NhbF9zbG90X3VwZGF0ZShSZW1vdGVT bG90ICpyZW1vdGVfc2xvdCkKK3sKKwlPaWQJCQlkYmlkOworCVJlcGxpY2F0aW9uU2xvdCAqc2xv dCA9IE15UmVwbGljYXRpb25TbG90OworCisJQXNzZXJ0KHNsb3QtPmRhdGEuaW52YWxpZGF0ZWQg PT0gUlNfSU5WQUxfTk9ORSk7CisKKwlkYmlkID0gZ2V0X2RhdGFiYXNlX29pZChyZW1vdGVfc2xv dC0+ZGF0YWJhc2UsIGZhbHNlKTsKKworCWlmIChuYW1lc3RyY21wKCZzbG90LT5kYXRhLnBsdWdp biwgcmVtb3RlX3Nsb3QtPnBsdWdpbikgPT0gMCAmJgorCQlzbG90LT5kYXRhLmRhdGFiYXNlID09 IGRiaWQgJiYKKwkJcmVtb3RlX3Nsb3QtPnJlc3RhcnRfbHNuID09IHNsb3QtPmRhdGEucmVzdGFy dF9sc24gJiYKKwkJcmVtb3RlX3Nsb3QtPmNhdGFsb2dfeG1pbiA9PSBzbG90LT5kYXRhLmNhdGFs b2dfeG1pbiAmJgorCQlyZW1vdGVfc2xvdC0+dHdvX3BoYXNlID09IHNsb3QtPmRhdGEudHdvX3Bo YXNlICYmCisJCXJlbW90ZV9zbG90LT5mYWlsb3ZlciA9PSBzbG90LT5kYXRhLmZhaWxvdmVyICYm CisJCXJlbW90ZV9zbG90LT5jb25maXJtZWRfbHNuID09IHNsb3QtPmRhdGEuY29uZmlybWVkX2Zs dXNoKQorCQlyZXR1cm4gZmFsc2U7CisKKwlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsK KwluYW1lc3RyY3B5KCZzbG90LT5kYXRhLnBsdWdpbiwgcmVtb3RlX3Nsb3QtPnBsdWdpbik7CisJ c2xvdC0+ZGF0YS5kYXRhYmFzZSA9IGRiaWQ7CisJc2xvdC0+ZGF0YS50d29fcGhhc2UgPSByZW1v dGVfc2xvdC0+dHdvX3BoYXNlOworCXNsb3QtPmRhdGEuZmFpbG92ZXIgPSByZW1vdGVfc2xvdC0+ ZmFpbG92ZXI7CisJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlbW90ZV9zbG90LT5yZXN0YXJ0 X2xzbjsKKwlzbG90LT5kYXRhLmNvbmZpcm1lZF9mbHVzaCA9IHJlbW90ZV9zbG90LT5jb25maXJt ZWRfbHNuOworCXNsb3QtPmRhdGEuY2F0YWxvZ194bWluID0gcmVtb3RlX3Nsb3QtPmNhdGFsb2df eG1pbjsKKwlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKKworCWlmIChyZW1vdGVfc2xv dC0+Y2F0YWxvZ194bWluICE9IHNsb3QtPmRhdGEuY2F0YWxvZ194bWluKQorCQlSZXBsaWNhdGlv blNsb3RzQ29tcHV0ZVJlcXVpcmVkWG1pbihmYWxzZSk7CisKKwlpZiAocmVtb3RlX3Nsb3QtPnJl c3RhcnRfbHNuICE9IHNsb3QtPmRhdGEucmVzdGFydF9sc24pCisJCVJlcGxpY2F0aW9uU2xvdHND b21wdXRlUmVxdWlyZWRMU04oKTsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICogR2V0IGxp c3Qgb2YgbG9jYWwgbG9naWNhbCBzbG90cyB3aGljaCBhcmUgc3luY2hyb25pemVkIGZyb20KKyAq IHRoZSBwcmltYXJ5IHNlcnZlci4KKyAqLworc3RhdGljIExpc3QgKgorZ2V0X2xvY2FsX3N5bmNl ZF9zbG90cyh2b2lkKQoreworCUxpc3QJICAgKmxvY2FsX3Nsb3RzID0gTklMOworCisJTFdMb2Nr QWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVEKTsKKworCWZvciAo aW50IGkgPSAwOyBpIDwgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzOyBpKyspCisJeworCQlSZXBsaWNh dGlvblNsb3QgKnMgPSAmUmVwbGljYXRpb25TbG90Q3RsLT5yZXBsaWNhdGlvbl9zbG90c1tpXTsK KworCQkvKiBDaGVjayBpZiBpdCBpcyBhIHN5bmNocm9uaXplZCBzbG90ICovCisJCWlmIChzLT5p bl91c2UgJiYgcy0+ZGF0YS5zeW5jZWQpCisJCXsKKwkJCUFzc2VydChTbG90SXNMb2dpY2FsKHMp KTsKKwkJCWxvY2FsX3Nsb3RzID0gbGFwcGVuZChsb2NhbF9zbG90cywgcyk7CisJCX0KKwl9CisK KwlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKKworCXJldHVybiBs b2NhbF9zbG90czsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB0byBjaGVjayBpZiBsb2Nh bF9zbG90IGlzIHByZXNlbnQgaW4gcmVtb3RlX3Nsb3RzIGxpc3QuCisgKgorICogSXQgYWxzbyBj aGVja3MgaWYgdGhlIHNsb3Qgb24gdGhlIHN0YW5kYnkgc2VydmVyIHdhcyBpbnZhbGlkYXRlZCB3 aGlsZSB0aGUKKyAqIGNvcnJlc3BvbmRpbmcgcmVtb3RlIHNsb3QgaW4gdGhlIGxpc3QgcmVtYWlu ZWQgdmFsaWQuIElmIGZvdW5kIHNvLCBpdCBzZXRzCisgKiB0aGUgbG9jYWxseV9pbnZhbGlkYXRl ZCBmbGFnIHRvIHRydWUuCisgKi8KK3N0YXRpYyBib29sCitjaGVja19zeW5jX3Nsb3Rfb25fcmVt b3RlKFJlcGxpY2F0aW9uU2xvdCAqbG9jYWxfc2xvdCwgTGlzdCAqcmVtb3RlX3Nsb3RzLAorCQkJ CQkJICBib29sICpsb2NhbGx5X2ludmFsaWRhdGVkKQoreworCWZvcmVhY2hfcHRyKFJlbW90ZVNs b3QsIHJlbW90ZV9zbG90LCByZW1vdGVfc2xvdHMpCisJeworCQlpZiAoc3RyY21wKHJlbW90ZV9z bG90LT5uYW1lLCBOYW1lU3RyKGxvY2FsX3Nsb3QtPmRhdGEubmFtZSkpID09IDApCisJCXsKKwkJ CS8qCisJCQkgKiBJZiByZW1vdGUgc2xvdCBpcyBub3QgaW52YWxpZGF0ZWQgYnV0IGxvY2FsIHNs b3QgaXMgbWFya2VkIGFzCisJCQkgKiBpbnZhbGlkYXRlZCwgdGhlbiBzZXQgdGhlIGJvb2wuCisJ CQkgKi8KKwkJCVNwaW5Mb2NrQWNxdWlyZSgmbG9jYWxfc2xvdC0+bXV0ZXgpOworCQkJKmxvY2Fs bHlfaW52YWxpZGF0ZWQgPQorCQkJCShyZW1vdGVfc2xvdC0+aW52YWxpZGF0ZWQgPT0gUlNfSU5W QUxfTk9ORSkgJiYKKwkJCQkobG9jYWxfc2xvdC0+ZGF0YS5pbnZhbGlkYXRlZCAhPSBSU19JTlZB TF9OT05FKTsKKwkJCVNwaW5Mb2NrUmVsZWFzZSgmbG9jYWxfc2xvdC0+bXV0ZXgpOworCisJCQly ZXR1cm4gdHJ1ZTsKKwkJfQorCX0KKworCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIERyb3Ag b2Jzb2xldGUgc2xvdHMKKyAqCisgKiBEcm9wIHRoZSBzbG90cyB0aGF0IG5vIGxvbmdlciBuZWVk IHRvIGJlIHN5bmNlZCBpLmUuIHRoZXNlIGVpdGhlciBkbyBub3QKKyAqIGV4aXN0IG9uIHRoZSBw cmltYXJ5IG9yIGFyZSBubyBsb25nZXIgZW5hYmxlZCBmb3IgZmFpbG92ZXIuCisgKgorICogQWRk aXRpb25hbGx5LCBpdCBkcm9wcyBzbG90cyB0aGF0IGFyZSB2YWxpZCBvbiB0aGUgcHJpbWFyeSBi dXQgZ290CisgKiBpbnZhbGlkYXRlZCBvbiB0aGUgc3RhbmRieS4gVGhpcyBzaXR1YXRpb24gbWF5 IG9jY3VyIGR1ZSB0byB0aGUgZm9sbG93aW5nCisgKiByZWFzb25zOgorICogLSBUaGUgbWF4X3Ns b3Rfd2FsX2tlZXBfc2l6ZSBvbiB0aGUgc3RhbmRieSBpcyBpbnN1ZmZpY2llbnQgdG8gcmV0YWlu IFdBTAorICogICByZWNvcmRzIGZyb20gdGhlIHJlc3RhcnRfbHNuIG9mIHRoZSBzbG90LgorICog LSBwcmltYXJ5X3Nsb3RfbmFtZSBpcyB0ZW1wb3JhcmlseSByZXNldCB0byBudWxsIGFuZCB0aGUg cGh5c2ljYWwgc2xvdCBpcworICogICByZW1vdmVkLgorICogLSBUaGUgcHJpbWFyeSBjaGFuZ2Vz IHdhbF9sZXZlbCB0byBhIGxldmVsIGxvd2VyIHRoYW4gbG9naWNhbC4KKyAqCisgKiBUaGUgYXNz dW1wdGlvbiBpcyB0aGF0IHRoZXNlIGRyb3BwZWQgc2xvdHMgd2lsbCBnZXQgcmVjcmVhdGVkIGlu IG5leHQKKyAqIHN5bmMtY3ljbGUgYW5kIGl0IGlzIG9rYXkgdG8gZHJvcCBhbmQgcmVjcmVhdGUg c3VjaCBzbG90cyBhcyBsb25nIGFzIHRoZXNlCisgKiBhcmUgbm90IGNvbnN1bWFibGUgb24gdGhl IHN0YW5kYnkgKHdoaWNoIGlzIHRoZSBjYXNlIGN1cnJlbnRseSkuCisgKi8KK3N0YXRpYyB2b2lk Citkcm9wX29ic29sZXRlX3Nsb3RzKExpc3QgKnJlbW90ZV9zbG90X2xpc3QpCit7CisJTGlzdAkg ICAqbG9jYWxfc2xvdHMgPSBnZXRfbG9jYWxfc3luY2VkX3Nsb3RzKCk7CisKKwlmb3JlYWNoX3B0 cihSZXBsaWNhdGlvblNsb3QsIGxvY2FsX3Nsb3QsIGxvY2FsX3Nsb3RzKQorCXsKKwkJYm9vbAkJ cmVtb3RlX2V4aXN0cyA9IGZhbHNlOworCQlib29sCQlsb2NhbGx5X2ludmFsaWRhdGVkID0gZmFs c2U7CisKKwkJcmVtb3RlX2V4aXN0cyA9IGNoZWNrX3N5bmNfc2xvdF9vbl9yZW1vdGUobG9jYWxf c2xvdCwgcmVtb3RlX3Nsb3RfbGlzdCwKKwkJCQkJCQkJCQkJCSAgJmxvY2FsbHlfaW52YWxpZGF0 ZWQpOworCisJCS8qCisJCSAqIERyb3AgdGhlIGxvY2FsIHNsb3QgZWl0aGVyIGlmIGl0IGlzIG5v dCBpbiB0aGUgcmVtb3RlIHNsb3RzIGxpc3Qgb3IKKwkJICogaXMgaW52YWxpZGF0ZWQgd2hpbGUg cmVtb3RlIHNsb3QgaXMgc3RpbGwgdmFsaWQuCisJCSAqLworCQlpZiAoIXJlbW90ZV9leGlzdHMg fHwgbG9jYWxseV9pbnZhbGlkYXRlZCkKKwkJeworCQkJUmVwbGljYXRpb25TbG90QWNxdWlyZShO YW1lU3RyKGxvY2FsX3Nsb3QtPmRhdGEubmFtZSksIHRydWUpOworCQkJQXNzZXJ0KE15UmVwbGlj YXRpb25TbG90LT5kYXRhLnN5bmNlZCk7CisJCQlSZXBsaWNhdGlvblNsb3REcm9wQWNxdWlyZWQo KTsKKworCQkJZXJlcG9ydChMT0csCisJCQkJCWVycm1zZygiZHJvcHBlZCByZXBsaWNhdGlvbiBz bG90IFwiJXNcIiBvZiBkYmlkICVkIiwKKwkJCQkJCSAgIE5hbWVTdHIobG9jYWxfc2xvdC0+ZGF0 YS5uYW1lKSwKKwkJCQkJCSAgIGxvY2FsX3Nsb3QtPmRhdGEuZGF0YWJhc2UpKTsKKwkJfQorCX0K K30KKworLyoKKyAqIFJlc2VydmUgV0FMIGZvciB0aGUgY3VycmVudGx5IGFjdGl2ZSBzbG90IHVz aW5nIHRoZSBzcGVjaWZpZWQgV0FMIGxvY2F0aW9uCisgKiAocmVzdGFydF9sc24pLgorICoKKyAq IElmIHRoZSBnaXZlbiBXQUwgbG9jYXRpb24gaGFzIGJlZW4gcmVtb3ZlZCwgcmVzZXJ2ZSBXQUwg dXNpbmcgdGhlIG9sZGVzdAorICogZXhpc3RpbmcgV0FMIHNlZ21lbnQuCisgKi8KK3N0YXRpYyB2 b2lkCityZXNlcnZlX3dhbF9mb3Jfc2xvdChYTG9nUmVjUHRyIHJlc3RhcnRfbHNuKQoreworCVhM b2dTZWdObwlvbGRlc3Rfc2Vnbm87CisJWExvZ1NlZ05vCXNlZ25vOworCVJlcGxpY2F0aW9uU2xv dCAqc2xvdCA9IE15UmVwbGljYXRpb25TbG90OworCisJQXNzZXJ0KHNsb3QgIT0gTlVMTCk7CisJ QXNzZXJ0KFhMb2dSZWNQdHJJc0ludmFsaWQoc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikpOworCisJ d2hpbGUgKHRydWUpCisJeworCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKKwkJc2xv dC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOworCQlTcGluTG9ja1JlbGVhc2UoJnNs b3QtPm11dGV4KTsKKworCQkvKiBQcmV2ZW50IFdBTCByZW1vdmFsIGFzIGZhc3QgYXMgcG9zc2li bGUgKi8KKwkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOworCisJCVhMQnl0 ZVRvU2VnKHNsb3QtPmRhdGEucmVzdGFydF9sc24sIHNlZ25vLCB3YWxfc2VnbWVudF9zaXplKTsK KworCQkvKgorCQkgKiBGaW5kIHRoZSBvbGRlc3QgZXhpc3RpbmcgV0FMIHNlZ21lbnQgZmlsZS4K KwkJICoKKwkJICogTm9ybWFsbHksIHdlIGNhbiBkZXRlcm1pbmUgaXQgYnkgdXNpbmcgdGhlIGxh c3QgcmVtb3ZlZCBzZWdtZW50CisJCSAqIG51bWJlci4gSG93ZXZlciwgaWYgbm8gV0FMIHNlZ21l bnQgZmlsZXMgaGF2ZSBiZWVuIHJlbW92ZWQgYnkgYQorCQkgKiBjaGVja3BvaW50IHNpbmNlIHN0 YXJ0dXAsIHdlIG5lZWQgdG8gc2VhcmNoIGZvciB0aGUgb2xkZXN0IHNlZ21lbnQKKwkJICogZmls ZSBjdXJyZW50bHkgZXhpc3RpbmcgaW4gWExPR0RJUi4KKwkJICovCisJCW9sZGVzdF9zZWdubyA9 IFhMb2dHZXRMYXN0UmVtb3ZlZFNlZ25vKCkgKyAxOworCisJCWlmIChvbGRlc3Rfc2Vnbm8gPT0g MSkKKwkJCW9sZGVzdF9zZWdubyA9IFhMb2dHZXRPbGRlc3RTZWdubygwKTsKKworCQkvKgorCQkg KiBJZiBhbGwgcmVxdWlyZWQgV0FMIGlzIHN0aWxsIHRoZXJlLCBncmVhdCwgb3RoZXJ3aXNlIHJl dHJ5LiBUaGUKKwkJICogc2xvdCBzaG91bGQgcHJldmVudCBmdXJ0aGVyIHJlbW92YWwgb2YgV0FM LCB1bmxlc3MgdGhlcmUncyBhCisJCSAqIGNvbmN1cnJlbnQgUmVwbGljYXRpb25TbG90c0NvbXB1 dGVSZXF1aXJlZExTTigpIGFmdGVyIHdlJ3ZlIHdyaXR0ZW4KKwkJICogdGhlIG5ldyByZXN0YXJ0 X2xzbiBhYm92ZSwgc28gbm9ybWFsbHkgd2Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gbG9vcAorCQkg KiBtb3JlIHRoYW4gdHdpY2UuCisJCSAqLworCQlpZiAoc2Vnbm8gPj0gb2xkZXN0X3NlZ25vKQor CQkJYnJlYWs7CisKKwkJLyogUmV0cnkgdXNpbmcgdGhlIGxvY2F0aW9uIG9mIHRoZSBvbGRlc3Qg d2FsIHNlZ21lbnQgKi8KKwkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIob2xkZXN0X3NlZ25vLCAw LCB3YWxfc2VnbWVudF9zaXplLCByZXN0YXJ0X2xzbik7CisJfQorfQorCisvKgorICogVXBkYXRl IHRoZSBMU05zIGFuZCBwZXJzaXN0IHRoZSBzbG90IGZvciBmdXJ0aGVyIHN5bmNzIGlmIHRoZSBy ZW1vdGUKKyAqIHJlc3RhcnRfbHNuIGFuZCBjYXRhbG9nX3htaW4gaGF2ZSBjYXVnaHQgdXAgd2l0 aCB0aGUgbG9jYWwgb25lcywgb3RoZXJ3aXNlCisgKiBkbyBub3RoaW5nLgorICoKKyAqIFJldHVy biB0cnVlIGVpdGhlciBpZiB0aGUgc2xvdCBpcyBtYXJrZWQgYXMgUlNfUEVSU0lTVEVOVCAoc3lu Yy1yZWFkeSkgb3IKKyAqIGlzIHN5bmNlZCBwZXJpb2RpY2FsbHkgKGlmIGl0IHdhcyBhbHJlYWR5 IHN5bmMtcmVhZHkpLiBSZXR1cm4gZmFsc2UKKyAqIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJv b2wKK3VwZGF0ZV9hbmRfcGVyc2lzdF9zbG90KFJlbW90ZVNsb3QgKnJlbW90ZV9zbG90KQorewor CVJlcGxpY2F0aW9uU2xvdCAqc2xvdCA9IE15UmVwbGljYXRpb25TbG90OworCisJLyoKKwkgKiBD aGVjayBpZiB0aGUgcHJpbWFyeSBzZXJ2ZXIgaGFzIGNhdWdodCB1cC4gUmVmZXIgdG8gdGhlIGNv bW1lbnQgYXRvcAorCSAqIHRoZSBmaWxlIGZvciBkZXRhaWxzIG9uIHRoaXMgY2hlY2suCisJICoK KwkgKiBXZSBhbHNvIG5lZWQgdG8gY2hlY2sgaWYgcmVtb3RlX3Nsb3QncyBjb25maXJtZWRfbHNu IGJlY29tZXMgdmFsaWQuIEl0CisJICogaXMgcG9zc2libGUgdG8gZ2V0IG51bGwgdmFsdWVzIGZv ciBjb25maXJtZWRfbHNuIGFuZCBjYXRhbG9nX3htaW4gaWYgb24KKwkgKiB0aGUgcHJpbWFyeSBz ZXJ2ZXIgdGhlIHNsb3QgaXMganVzdCBjcmVhdGVkIHdpdGggYSB2YWxpZCByZXN0YXJ0X2xzbgor CSAqIGFuZCBzbG90LXN5bmMgd29ya2VyIGhhcyBmZXRjaGVkIHRoZSBzbG90IGJlZm9yZSB0aGUg cHJpbWFyeSBzZXJ2ZXIKKwkgKiBjb3VsZCBzZXQgdmFsaWQgY29uZmlybWVkX2xzbiBhbmQgY2F0 YWxvZ194bWluLgorCSAqLworCWlmIChyZW1vdGVfc2xvdC0+cmVzdGFydF9sc24gPCBzbG90LT5k YXRhLnJlc3RhcnRfbHNuIHx8CisJCVhMb2dSZWNQdHJJc0ludmFsaWQocmVtb3RlX3Nsb3QtPmNv bmZpcm1lZF9sc24pIHx8CisJCVRyYW5zYWN0aW9uSWRQcmVjZWRlcyhyZW1vdGVfc2xvdC0+Y2F0 YWxvZ194bWluLAorCQkJCQkJCSAgc2xvdC0+ZGF0YS5jYXRhbG9nX3htaW4pKQorCXsKKwkJLyoK KwkJICogVGhlIHJlbW90ZSBzbG90IGRpZG4ndCBjYXRjaCB1cCB0byBsb2NhbGx5IHJlc2VydmVk IHBvc2l0aW9uLgorCQkgKgorCQkgKiBXZSBkbyBub3QgZHJvcCB0aGUgc2xvdCBiZWNhdXNlIHRo ZSByZXN0YXJ0X2xzbiBjYW4gYmUgYWhlYWQgb2YgdGhlCisJCSAqIGN1cnJlbnQgbG9jYXRpb24g d2hlbiByZWNyZWF0aW5nIHRoZSBzbG90IGluIHRoZSBuZXh0IGN5Y2xlLiBJdCBtYXkKKwkJICog dGFrZSBtb3JlIHRpbWUgdG8gY3JlYXRlIHN1Y2ggYSBzbG90LiBUaGVyZWZvcmUsIHdlIGtlZXAg dGhpcyBzbG90CisJCSAqIGFuZCBhdHRlbXB0IHRoZSB3YWl0IGFuZCBzeW5jaHJvbml6YXRpb24g aW4gdGhlIG5leHQgY3ljbGUuCisJCSAqLworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJKHZvaWQp IGxvY2FsX3Nsb3RfdXBkYXRlKHJlbW90ZV9zbG90KTsKKwlSZXBsaWNhdGlvblNsb3RQZXJzaXN0 KCk7CisKKwllcmVwb3J0KExPRywKKwkJCWVycm1zZygibmV3bHkgbG9jYWxseSBjcmVhdGVkIHNs b3QgXCIlc1wiIGlzIHN5bmMtcmVhZHkgbm93IiwKKwkJCQkgICByZW1vdGVfc2xvdC0+bmFtZSkp OworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBTeW5jaHJvbml6ZSBzaW5nbGUgc2xvdCB0 byBnaXZlbiBwb3NpdGlvbi4KKyAqCisgKiBUaGlzIGNyZWF0ZXMgYSBuZXcgc2xvdCBpZiB0aGVy ZSBpcyBubyBleGlzdGluZyBvbmUgYW5kIHVwZGF0ZXMgdGhlCisgKiBtZXRhZGF0YSBvZiB0aGUg c2xvdCBhcyBwZXIgdGhlIGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgcHJpbWFyeSBzZXJ2ZXIuCisg KgorICogVGhlIHNsb3QgaXMgY3JlYXRlZCBhcyBhIHRlbXBvcmFyeSBzbG90IGFuZCBzdGF5cyBp biB0aGUgc2FtZSBzdGF0ZSB1bnRpbCB0aGUKKyAqIHRoZSByZW1vdGVfc2xvdCBjYXRjaGVzIHVw IHdpdGggbG9jYWxseSByZXNlcnZlZCBwb3NpdGlvbiBhbmQgbG9jYWwgc2xvdCBpcworICogdXBk YXRlZC4gVGhlIHNsb3QgaXMgdGhlbiBwZXJzaXN0ZWQgYW5kIGlzIGNvbnNpZGVyZWQgYXMgc3lu Yy1yZWFkeSBmb3IKKyAqIHBlcmlvZGljIHN5bmNzLgorICoKKyAqIFJldHVybnMgVFJVRSBpZiB0 aGUgbG9jYWwgc2xvdCBpcyB1cGRhdGVkLgorICovCitzdGF0aWMgYm9vbAorc3luY2hyb25pemVf b25lX3Nsb3QoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4sIFJlbW90ZVNsb3QgKnJlbW90ZV9zbG90 KQoreworCVJlcGxpY2F0aW9uU2xvdCAqc2xvdDsKKwlib29sCQlzbG90X3VwZGF0ZWQgPSBmYWxz ZTsKKwlYTG9nUmVjUHRyCWxhdGVzdFdhbEVuZDsKKworCS8qCisJICogU2FuaXR5IGNoZWNrOiBN YWtlIHN1cmUgdGhhdCBjb25jZXJuZWQgV0FMIGlzIHJlY2VpdmVkIGJlZm9yZSBzeW5jaW5nCisJ ICogc2xvdCB0byB0YXJnZXQgbHNuIHJlY2VpdmVkIGZyb20gdGhlIHByaW1hcnkgc2VydmVyLgor CSAqCisJICogVGhpcyBjaGVjayBzaG91bGQgbmV2ZXIgcGFzcyBhcyBvbiB0aGUgcHJpbWFyeSBz ZXJ2ZXIsIHdlIGhhdmUgd2FpdGVkCisJICogZm9yIHRoZSBzdGFuZGJ5J3MgY29uZmlybWF0aW9u IGJlZm9yZSB1cGRhdGluZyB0aGUgbG9naWNhbCBzbG90LgorCSAqLworCWxhdGVzdFdhbEVuZCA9 IEdldFdhbFJjdkxhdGVzdFdhbEVuZCgpOworCWlmIChyZW1vdGVfc2xvdC0+Y29uZmlybWVkX2xz biA+IGxhdGVzdFdhbEVuZCkKKwl7CisJCWVsb2coRVJST1IsICJleGl0aW5nIGZyb20gc2xvdCBz eW5jaHJvbml6YXRpb24gYXMgdGhlIHJlY2VpdmVkIHNsb3Qgc3luYyIKKwkJCSAiIExTTiAlWC8l WCBmb3Igc2xvdCBcIiVzXCIgaXMgYWhlYWQgb2YgdGhlIHN0YW5kYnkgcG9zaXRpb24gJVgvJVgi LAorCQkJIExTTl9GT1JNQVRfQVJHUyhyZW1vdGVfc2xvdC0+Y29uZmlybWVkX2xzbiksCisJCQkg cmVtb3RlX3Nsb3QtPm5hbWUsCisJCQkgTFNOX0ZPUk1BVF9BUkdTKGxhdGVzdFdhbEVuZCkpOwor CX0KKworCS8qIFNlYXJjaCBmb3IgdGhlIG5hbWVkIHNsb3QgKi8KKwlpZiAoKHNsb3QgPSBTZWFy Y2hOYW1lZFJlcGxpY2F0aW9uU2xvdChyZW1vdGVfc2xvdC0+bmFtZSwgdHJ1ZSkpKQorCXsKKwkJ Ym9vbAkJc3luY2VkOworCisJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOworCQlzeW5j ZWQgPSBzbG90LT5kYXRhLnN5bmNlZDsKKwkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7 CisKKwkJLyogVXNlciBjcmVhdGVkIHNsb3Qgd2l0aCB0aGUgc2FtZSBuYW1lIGV4aXN0cywgcmFp c2UgRVJST1IuICovCisJCWlmICghc3luY2VkKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJy Y29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJZXJy bXNnKCJleGl0aW5nIGZyb20gc2xvdCBzeW5jaHJvbml6YXRpb24gb24gcmVjZWl2aW5nIgorCQkJ CQkJICAgIiB0aGUgZmFpbG92ZXIgc2xvdCBcIiVzXCIgZnJvbSB0aGUgcHJpbWFyeSBzZXJ2ZXIi LAorCQkJCQkJICAgcmVtb3RlX3Nsb3QtPm5hbWUpLAorCQkJCQllcnJkZXRhaWwoIkEgdXNlci1j cmVhdGVkIHNsb3Qgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkiCisJCQkJCQkJICAiIGV4aXN0 cyBvbiB0aGUgc3RhbmRieS4iKSk7CisKKwkJLyoKKwkJICogU2xvdCBjcmVhdGVkIGJ5IHRoZSBz bG90IHN5bmMgd29ya2VyIGV4aXN0cywgc3luYyBpdC4KKwkJICoKKwkJICogSXQgaXMgaW1wb3J0 YW50IHRvIGFjcXVpcmUgdGhlIHNsb3QgaGVyZSBiZWZvcmUgY2hlY2tpbmcKKwkJICogaW52YWxp ZGF0aW9uLiBJZiB3ZSBkb24ndCBhY3F1aXJlIHRoZSBzbG90IGZpcnN0LCB0aGVyZSBjb3VsZCBi ZSBhCisJCSAqIHJhY2UgY29uZGl0aW9uIHRoYXQgdGhlIGxvY2FsIHNsb3QgY291bGQgYmUgaW52 YWxpZGF0ZWQganVzdCBhZnRlcgorCQkgKiBjaGVja2luZyB0aGUgJ2ludmFsaWRhdGVkJyBmbGFn IGhlcmUgYW5kIHdlIGNvdWxkIGVuZCB1cAorCQkgKiBvdmVyd3JpdGluZyAnaW52YWxpZGF0ZWQn IGZsYWcgdG8gcmVtb3RlX3Nsb3QncyB2YWx1ZS4gU2VlCisJCSAqIEludmFsaWRhdGVQb3NzaWJs eU9ic29sZXRlU2xvdCgpIHdoZXJlIGl0IGludmFsaWRhdGVzIHNsb3QgZGlyZWN0bHkKKwkJICog aWYgdGhlIHNsb3QgaXMgbm90IGFjcXVpcmVkIGJ5IG90aGVyIHByb2Nlc3Nlcy4KKwkJICovCisJ CVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUocmVtb3RlX3Nsb3QtPm5hbWUsIHRydWUpOworCisJCUFz c2VydChzbG90ID09IE15UmVwbGljYXRpb25TbG90KTsKKworCQkvKgorCQkgKiBDb3B5IHRoZSBp bnZhbGlkYXRpb24gY2F1c2UgZnJvbSByZW1vdGUgb25seSBpZiBsb2NhbCBzbG90IGlzIG5vdAor CQkgKiBpbnZhbGlkYXRlZCBsb2NhbGx5LCB3ZSBkb24ndCB3YW50IHRvIG92ZXJ3cml0ZSBleGlz dGluZyBvbmUuCisJCSAqLworCQlpZiAoc2xvdC0+ZGF0YS5pbnZhbGlkYXRlZCA9PSBSU19JTlZB TF9OT05FKQorCQl7CisJCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKKwkJCXNsb3Qt PmRhdGEuaW52YWxpZGF0ZWQgPSByZW1vdGVfc2xvdC0+aW52YWxpZGF0ZWQ7CisJCQlTcGluTG9j a1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKKworCQkJLyogTWFrZSBzdXJlIHRoZSBpbnZhbGlkYXRl ZCBzdGF0ZSBwZXJzaXN0cyBhY3Jvc3Mgc2VydmVyIHJlc3RhcnQgKi8KKwkJCVJlcGxpY2F0aW9u U2xvdE1hcmtEaXJ0eSgpOworCQkJUmVwbGljYXRpb25TbG90U2F2ZSgpOworCQkJc2xvdF91cGRh dGVkID0gdHJ1ZTsKKwkJfQorCisJCS8qIFNraXAgdGhlIHN5bmMgb2YgYW4gaW52YWxpZGF0ZWQg c2xvdCAqLworCQlpZiAoc2xvdC0+ZGF0YS5pbnZhbGlkYXRlZCAhPSBSU19JTlZBTF9OT05FKQor CQl7CisJCQlSZXBsaWNhdGlvblNsb3RSZWxlYXNlKCk7CisJCQlyZXR1cm4gc2xvdF91cGRhdGVk OworCQl9CisKKwkJLyogU2xvdCBub3QgcmVhZHkgeWV0LCBsZXQncyBhdHRlbXB0IHRvIG1ha2Ug aXQgc3luYy1yZWFkeSBub3cuICovCisJCWlmIChzbG90LT5kYXRhLnBlcnNpc3RlbmN5ID09IFJT X1RFTVBPUkFSWSkKKwkJeworCQkJc2xvdF91cGRhdGVkID0gdXBkYXRlX2FuZF9wZXJzaXN0X3Ns b3QocmVtb3RlX3Nsb3QpOworCQl9CisKKwkJLyogU2xvdCByZWFkeSBmb3Igc3luYywgc28gc3lu YyBpdC4gKi8KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogU2FuaXR5IGNoZWNrOiBBcyBsb25n IGFzIHRoZSBpbnZhbGlkYXRpb25zIGFyZSBoYW5kbGVkCisJCQkgKiBhcHByb3ByaWF0ZWx5IGFz IGFib3ZlLCB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW4uCisJCQkgKi8KKwkJCWlmIChyZW1vdGVf c2xvdC0+cmVzdGFydF9sc24gPCBzbG90LT5kYXRhLnJlc3RhcnRfbHNuKQorCQkJCWVsb2coRVJS T1IsCisJCQkJCSAiY2Fubm90IHN5bmNocm9uaXplIGxvY2FsIHNsb3QgXCIlc1wiIExTTiglWC8l WCkiCisJCQkJCSAiIHRvIHJlbW90ZSBzbG90J3MgTFNOKCVYLyVYKSBhcyBzeW5jaHJvbml6YXRp b24iCisJCQkJCSAiIHdvdWxkIG1vdmUgaXQgYmFja3dhcmRzIiwgcmVtb3RlX3Nsb3QtPm5hbWUs CisJCQkJCSBMU05fRk9STUFUX0FSR1Moc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiksCisJCQkJCSBM U05fRk9STUFUX0FSR1MocmVtb3RlX3Nsb3QtPnJlc3RhcnRfbHNuKSk7CisKKwkJCS8qIE1ha2Ug c3VyZSB0aGUgc2xvdCBjaGFuZ2VzIHBlcnNpc3QgYWNyb3NzIHNlcnZlciByZXN0YXJ0ICovCisJ CQlpZiAobG9jYWxfc2xvdF91cGRhdGUocmVtb3RlX3Nsb3QpKQorCQkJeworCQkJCXNsb3RfdXBk YXRlZCA9IHRydWU7CisJCQkJUmVwbGljYXRpb25TbG90TWFya0RpcnR5KCk7CisJCQkJUmVwbGlj YXRpb25TbG90U2F2ZSgpOworCQkJfQorCQl9CisJfQorCS8qIE90aGVyd2lzZSBjcmVhdGUgdGhl IHNsb3QgZmlyc3QuICovCisJZWxzZQorCXsKKwkJVHJhbnNhY3Rpb25JZCB4bWluX2hvcml6b24g PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKworCQkvKiBTa2lwIGNyZWF0aW5nIHRoZSBsb2NhbCBz bG90IGlmIHJlbW90ZV9zbG90IGlzIGludmFsaWRhdGVkIGFscmVhZHkgKi8KKwkJaWYgKHJlbW90 ZV9zbG90LT5pbnZhbGlkYXRlZCAhPSBSU19JTlZBTF9OT05FKQorCQkJcmV0dXJuIGZhbHNlOwor CisJCS8qIEVuc3VyZSB0aGF0IHdlIGhhdmUgdHJhbnNhY3Rpb24gZW52IG5lZWRlZCBieSBnZXRf ZGF0YWJhc2Vfb2lkKCkgKi8KKwkJQXNzZXJ0KElzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKKworCQlS ZXBsaWNhdGlvblNsb3RDcmVhdGUocmVtb3RlX3Nsb3QtPm5hbWUsIHRydWUsIFJTX1RFTVBPUkFS WSwKKwkJCQkJCQkgIHJlbW90ZV9zbG90LT50d29fcGhhc2UsCisJCQkJCQkJICByZW1vdGVfc2xv dC0+ZmFpbG92ZXIsCisJCQkJCQkJICB0cnVlIC8qIHN5bmNlZCAqLyApOworCisJCS8qIEZvciBz aG9ydGVyIGxpbmVzLiAqLworCQlzbG90ID0gTXlSZXBsaWNhdGlvblNsb3Q7CisKKwkJU3Bpbkxv Y2tBY3F1aXJlKCZzbG90LT5tdXRleCk7CisJCXNsb3QtPmRhdGEuZGF0YWJhc2UgPSBnZXRfZGF0 YWJhc2Vfb2lkKHJlbW90ZV9zbG90LT5kYXRhYmFzZSwgZmFsc2UpOworCQluYW1lc3RyY3B5KCZz bG90LT5kYXRhLnBsdWdpbiwgcmVtb3RlX3Nsb3QtPnBsdWdpbik7CisJCVNwaW5Mb2NrUmVsZWFz ZSgmc2xvdC0+bXV0ZXgpOworCisJCXJlc2VydmVfd2FsX2Zvcl9zbG90KHJlbW90ZV9zbG90LT5y ZXN0YXJ0X2xzbik7CisKKwkJTFdMb2NrQWNxdWlyZShQcm9jQXJyYXlMb2NrLCBMV19FWENMVVNJ VkUpOworCQl4bWluX2hvcml6b24gPSBHZXRPbGRlc3RTYWZlRGVjb2RpbmdUcmFuc2FjdGlvbklk KHRydWUpOworCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKKwkJc2xvdC0+ZGF0YS5j YXRhbG9nX3htaW4gPSB4bWluX2hvcml6b247CisJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0 ZXgpOworCQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkWG1pbih0cnVlKTsKKwkJTFdM b2NrUmVsZWFzZShQcm9jQXJyYXlMb2NrKTsKKworCQkodm9pZCkgdXBkYXRlX2FuZF9wZXJzaXN0 X3Nsb3QocmVtb3RlX3Nsb3QpOworCQlzbG90X3VwZGF0ZWQgPSB0cnVlOworCX0KKworCVJlcGxp Y2F0aW9uU2xvdFJlbGVhc2UoKTsKKworCXJldHVybiBzbG90X3VwZGF0ZWQ7Cit9CisKKy8qCisg KiBNYXBzIHRoZSBwZ19yZXBsaWNhdGlvbl9zbG90cy5jb25mbGljdF9yZWFzb24gdGV4dCB2YWx1 ZSB0bworICogUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgZW51bSB2YWx1ZQorICov CitzdGF0aWMgUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UKK2dldF9zbG90X2ludmFs aWRhdGlvbl9jYXVzZShjaGFyICpjb25mbGljdF9yZWFzb24pCit7CisJQXNzZXJ0KGNvbmZsaWN0 X3JlYXNvbik7CisKKwlpZiAoc3RyY21wKGNvbmZsaWN0X3JlYXNvbiwgU0xPVF9JTlZBTF9XQUxf UkVNT1ZFRF9URVhUKSA9PSAwKQorCQlyZXR1cm4gUlNfSU5WQUxfV0FMX1JFTU9WRUQ7CisJZWxz ZSBpZiAoc3RyY21wKGNvbmZsaWN0X3JlYXNvbiwgU0xPVF9JTlZBTF9IT1JJWk9OX1RFWFQpID09 IDApCisJCXJldHVybiBSU19JTlZBTF9IT1JJWk9OOworCWVsc2UgaWYgKHN0cmNtcChjb25mbGlj dF9yZWFzb24sIFNMT1RfSU5WQUxfV0FMX0xFVkVMX1RFWFQpID09IDApCisJCXJldHVybiBSU19J TlZBTF9XQUxfTEVWRUw7CisJZWxzZQorCQlBc3NlcnQoMCk7CisKKwkvKiBLZWVwIGNvbXBpbGVy IHF1aWV0ICovCisJcmV0dXJuIFJTX0lOVkFMX05PTkU7Cit9CisKKy8qCisgKiBTeW5jaHJvbml6 ZSBzbG90cy4KKyAqCisgKiBHZXRzIHRoZSBmYWlsb3ZlciBsb2dpY2FsIHNsb3RzIGluZm8gZnJv bSB0aGUgcHJpbWFyeSBzZXJ2ZXIgYW5kIHVwZGF0ZXMKKyAqIHRoZSBzbG90cyBsb2NhbGx5LiBD cmVhdGVzIHRoZSBzbG90cyBpZiBub3QgcHJlc2VudCBvbiB0aGUgc3RhbmRieS4KKyAqCisgKiBS ZXR1cm5zIFRSVUUgaWYgYW55IG9mIHRoZSBzbG90cyBnZXRzIHVwZGF0ZWQgaW4gdGhpcyBzeW5j LWN5Y2xlLgorICovCitzdGF0aWMgYm9vbAorc3luY2hyb25pemVfc2xvdHMoV2FsUmVjZWl2ZXJD b25uICp3cmNvbm4pCit7CisjZGVmaW5lIFNMT1RTWU5DX0NPTFVNTl9DT1VOVCA5CisJT2lkCQkJ c2xvdFJvd1tTTE9UU1lOQ19DT0xVTU5fQ09VTlRdID0ge1RFWFRPSUQsIFRFWFRPSUQsIExTTk9J RCwKKwlMU05PSUQsIFhJRE9JRCwgQk9PTE9JRCwgQk9PTE9JRCwgVEVYVE9JRCwgVEVYVE9JRH07 CisKKwlXYWxSY3ZFeGVjUmVzdWx0ICpyZXM7CisJVHVwbGVUYWJsZVNsb3QgKnR1cHNsb3Q7CisJ U3RyaW5nSW5mb0RhdGEgczsKKwlMaXN0CSAgICpyZW1vdGVfc2xvdF9saXN0ID0gTklMOworCWJv b2wJCXNvbWVfc2xvdF91cGRhdGVkID0gZmFsc2U7CisJWExvZ1JlY1B0cglsYXRlc3RXYWxFbmQ7 CisKKwkvKgorCSAqIFRoZSBwcmltYXJ5X3Nsb3RfbmFtZSBpcyBub3Qgc2V0IHlldCBvciBXQUxz IG5vdCByZWNlaXZlZCB5ZXQuCisJICogU3luY2hyb25pemF0aW9uIGlzIG5vdCBwb3NzaWJsZSBp ZiB0aGUgd2FscmVjZWl2ZXIgaXMgbm90IHN0YXJ0ZWQuCisJICovCisJbGF0ZXN0V2FsRW5kID0g R2V0V2FsUmN2TGF0ZXN0V2FsRW5kKCk7CisJU3BpbkxvY2tBY3F1aXJlKCZXYWxSY3YtPm11dGV4 KTsKKwlpZiAoKFdhbFJjdi0+c2xvdG5hbWVbMF0gPT0gJ1wwJykgfHwKKwkJWExvZ1JlY1B0cklz SW52YWxpZChsYXRlc3RXYWxFbmQpKQorCXsKKwkJU3BpbkxvY2tSZWxlYXNlKCZXYWxSY3YtPm11 dGV4KTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwlTcGluTG9ja1JlbGVhc2UoJldhbFJjdi0+bXV0 ZXgpOworCisJLyogVGhlIHN5c2NhY2hlIGFjY2VzcyBpbiB3YWxyY3ZfZXhlYygpIG5lZWRzIGEg dHJhbnNhY3Rpb24gZW52LiAqLworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwlpbml0 U3RyaW5nSW5mbygmcyk7CisKKwkvKiBDb25zdHJ1Y3QgcXVlcnkgdG8gZmV0Y2ggc2xvdHMgd2l0 aCBmYWlsb3ZlciBlbmFibGVkLiAqLworCWFwcGVuZFN0cmluZ0luZm8oJnMsCisJCQkJCSAiU0VM RUNUIHNsb3RfbmFtZSwgcGx1Z2luLCBjb25maXJtZWRfZmx1c2hfbHNuLCIKKwkJCQkJICIgcmVz dGFydF9sc24sIGNhdGFsb2dfeG1pbiwgdHdvX3BoYXNlLCBmYWlsb3ZlciwiCisJCQkJCSAiIGRh dGFiYXNlLCBjb25mbGljdF9yZWFzb24iCisJCQkJCSAiIEZST00gcGdfY2F0YWxvZy5wZ19yZXBs aWNhdGlvbl9zbG90cyIKKwkJCQkJICIgV0hFUkUgZmFpbG92ZXIgYW5kIE5PVCB0ZW1wb3Jhcnki KTsKKworCS8qIEV4ZWN1dGUgdGhlIHF1ZXJ5ICovCisJcmVzID0gd2FscmN2X2V4ZWMod3Jjb25u LCBzLmRhdGEsIFNMT1RTWU5DX0NPTFVNTl9DT1VOVCwgc2xvdFJvdyk7CisJcGZyZWUocy5kYXRh KTsKKworCWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tfVFVQTEVTKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCWVycm1zZygiY291bGQgbm90IGZldGNoIGZhaWxvdmVyIGxvZ2ljYWwgc2xvdHMg aW5mbyIKKwkJCQkJICAgIiBmcm9tIHRoZSBwcmltYXJ5IHNlcnZlcjogJXMiLCByZXMtPmVycikp OworCisJLyogQ29uc3RydWN0IHRoZSByZW1vdGVfc2xvdCB0dXBsZSBhbmQgc3luY2hyb25pemUg ZWFjaCBzbG90IGxvY2FsbHkgKi8KKwl0dXBzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90 KHJlcy0+dHVwbGVkZXNjLCAmVFRTT3BzTWluaW1hbFR1cGxlKTsKKwl3aGlsZSAodHVwbGVzdG9y ZV9nZXR0dXBsZXNsb3QocmVzLT50dXBsZXN0b3JlLCB0cnVlLCBmYWxzZSwgdHVwc2xvdCkpCisJ eworCQlib29sCQlpc251bGw7CisJCVJlbW90ZVNsb3QgKnJlbW90ZV9zbG90ID0gcGFsbG9jMChz aXplb2YoUmVtb3RlU2xvdCkpOworCQlEYXR1bQkJZDsKKworCQlyZW1vdGVfc2xvdC0+bmFtZSA9 IFRleHREYXR1bUdldENTdHJpbmcoc2xvdF9nZXRhdHRyKHR1cHNsb3QsIDEsICZpc251bGwpKTsK KwkJQXNzZXJ0KCFpc251bGwpOworCisJCXJlbW90ZV9zbG90LT5wbHVnaW4gPSBUZXh0RGF0dW1H ZXRDU3RyaW5nKHNsb3RfZ2V0YXR0cih0dXBzbG90LCAyLCAmaXNudWxsKSk7CisJCUFzc2VydCgh aXNudWxsKTsKKworCQkvKgorCQkgKiBJdCBpcyBwb3NzaWJsZSB0byBnZXQgbnVsbCB2YWx1ZXMg Zm9yIExTTiBhbmQgWG1pbiBpZiBzbG90IGlzCisJCSAqIGludmFsaWRhdGVkIG9uIHRoZSBwcmlt YXJ5IHNlcnZlciwgc28gaGFuZGxlIGFjY29yZGluZ2x5LgorCQkgKi8KKwkJZCA9IHNsb3RfZ2V0 YXR0cih0dXBzbG90LCAzLCAmaXNudWxsKTsKKwkJcmVtb3RlX3Nsb3QtPmNvbmZpcm1lZF9sc24g PSBpc251bGwgPyBJbnZhbGlkWExvZ1JlY1B0ciA6CisJCQlEYXR1bUdldExTTihkKTsKKworCQlk ID0gc2xvdF9nZXRhdHRyKHR1cHNsb3QsIDQsICZpc251bGwpOworCQlyZW1vdGVfc2xvdC0+cmVz dGFydF9sc24gPSBpc251bGwgPyBJbnZhbGlkWExvZ1JlY1B0ciA6IERhdHVtR2V0TFNOKGQpOwor CisJCWQgPSBzbG90X2dldGF0dHIodHVwc2xvdCwgNSwgJmlzbnVsbCk7CisJCXJlbW90ZV9zbG90 LT5jYXRhbG9nX3htaW4gPSBpc251bGwgPyBJbnZhbGlkVHJhbnNhY3Rpb25JZCA6CisJCQlEYXR1 bUdldFRyYW5zYWN0aW9uSWQoZCk7CisKKwkJcmVtb3RlX3Nsb3QtPnR3b19waGFzZSA9IERhdHVt R2V0Qm9vbChzbG90X2dldGF0dHIodHVwc2xvdCwgNiwgJmlzbnVsbCkpOworCQlBc3NlcnQoIWlz bnVsbCk7CisKKwkJcmVtb3RlX3Nsb3QtPmZhaWxvdmVyID0gRGF0dW1HZXRCb29sKHNsb3RfZ2V0 YXR0cih0dXBzbG90LCA3LCAmaXNudWxsKSk7CisJCUFzc2VydCghaXNudWxsKTsKKworCQlyZW1v dGVfc2xvdC0+ZGF0YWJhc2UgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHNsb3RfZ2V0YXR0cih0dXBz bG90LAorCQkJCQkJCQkJCQkJCQkJCSA4LCAmaXNudWxsKSk7CisJCUFzc2VydCghaXNudWxsKTsK KworCQlkID0gc2xvdF9nZXRhdHRyKHR1cHNsb3QsIDksICZpc251bGwpOworCQlyZW1vdGVfc2xv dC0+aW52YWxpZGF0ZWQgPSBpc251bGwgPyBSU19JTlZBTF9OT05FIDoKKwkJCWdldF9zbG90X2lu dmFsaWRhdGlvbl9jYXVzZShUZXh0RGF0dW1HZXRDU3RyaW5nKGQpKTsKKworCQkvKiBDcmVhdGUg bGlzdCBvZiByZW1vdGUgc2xvdHMgKi8KKwkJcmVtb3RlX3Nsb3RfbGlzdCA9IGxhcHBlbmQocmVt b3RlX3Nsb3RfbGlzdCwgcmVtb3RlX3Nsb3QpOworCisJCUV4ZWNDbGVhclR1cGxlKHR1cHNsb3Qp OworCX0KKworCS8qIERyb3AgbG9jYWwgc2xvdHMgdGhhdCBubyBsb25nZXIgbmVlZCB0byBiZSBz eW5jZWQuICovCisJZHJvcF9vYnNvbGV0ZV9zbG90cyhyZW1vdGVfc2xvdF9saXN0KTsKKworCS8q IE5vdyBzeW5jIHRoZSBzbG90cyBsb2NhbGx5ICovCisJZm9yZWFjaF9wdHIoUmVtb3RlU2xvdCwg cmVtb3RlX3Nsb3QsIHJlbW90ZV9zbG90X2xpc3QpCisJCXNvbWVfc2xvdF91cGRhdGVkIHw9IHN5 bmNocm9uaXplX29uZV9zbG90KHdyY29ubiwgcmVtb3RlX3Nsb3QpOworCisJLyogV2UgYXJlIGRv bmUsIGZyZWUgcmVtb3RlX3Nsb3RfbGlzdCBlbGVtZW50cyAqLworCWxpc3RfZnJlZV9kZWVwKHJl bW90ZV9zbG90X2xpc3QpOworCisJd2FscmN2X2NsZWFyX3Jlc3VsdChyZXMpOworCisJQ29tbWl0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwlyZXR1cm4gc29tZV9zbG90X3VwZGF0ZWQ7Cit9CisK Ky8qCisgKiBDaGVja3MgdGhlIHByaW1hcnkgc2VydmVyIGluZm8uCisgKgorICogVXNpbmcgdGhl IHNwZWNpZmllZCBwcmltYXJ5IHNlcnZlciBjb25uZWN0aW9uLCBjaGVjayB3aGV0aGVyIHdlIGFy ZSBhCisgKiBjYXNjYWRpbmcgc3RhbmRieS4gSXQgYWxzbyB2YWxpZGF0ZXMgcHJpbWFyeV9zbG90 X25hbWUgZm9yIG5vbi1jYXNjYWRpbmcKKyAqIHN0YW5kYnlzLgorICovCitzdGF0aWMgdm9pZAor Y2hlY2tfcHJpbWFyeV9pbmZvKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBib29sICphbV9jYXNj YWRpbmdfc3RhbmRieSkKK3sKKyNkZWZpbmUgUFJJTUFSWV9JTkZPX09VVFBVVF9DT0xfQ09VTlQg MgorCVdhbFJjdkV4ZWNSZXN1bHQgKnJlczsKKwlPaWQJCQlzbG90Um93W1BSSU1BUllfSU5GT19P VVRQVVRfQ09MX0NPVU5UXSA9IHtCT09MT0lELCBCT09MT0lEfTsKKwlTdHJpbmdJbmZvRGF0YSBj bWQ7CisJYm9vbAkJaXNudWxsOworCVR1cGxlVGFibGVTbG90ICp0dXBzbG90OworCWJvb2wJCXZh bGlkOworCWJvb2wJCXJlbW90ZV9pbl9yZWNvdmVyeTsKKworCS8qIFRoZSBzeXNjYWNoZSBhY2Nl c3MgaW4gd2FscmN2X2V4ZWMoKSBuZWVkcyBhIHRyYW5zYWN0aW9uIGVudi4gKi8KKwlTdGFydFRy YW5zYWN0aW9uQ29tbWFuZCgpOworCisJQXNzZXJ0KGFtX2Nhc2NhZGluZ19zdGFuZGJ5ICE9IE5V TEwpOworCisJKmFtX2Nhc2NhZGluZ19zdGFuZGJ5ID0gZmFsc2U7CS8qIG92ZXJ3cml0dGVuIGxh dGVyIGlmIGNhc2NhZGluZyAqLworCisJaW5pdFN0cmluZ0luZm8oJmNtZCk7CisJYXBwZW5kU3Ry aW5nSW5mbygmY21kLAorCQkJCQkgIlNFTEVDVCBwZ19pc19pbl9yZWNvdmVyeSgpLCBjb3VudCgq KSA9IDEiCisJCQkJCSAiIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMiCisJCQkJCSAiIFdIRVJF IHNsb3RfdHlwZT0ncGh5c2ljYWwnIEFORCBzbG90X25hbWU9JXMiLAorCQkJCQkgcXVvdGVfbGl0 ZXJhbF9jc3RyKFByaW1hcnlTbG90TmFtZSkpOworCisJcmVzID0gd2FscmN2X2V4ZWMod3Jjb25u LCBjbWQuZGF0YSwgUFJJTUFSWV9JTkZPX09VVFBVVF9DT0xfQ09VTlQsIHNsb3RSb3cpOworCXBm cmVlKGNtZC5kYXRhKTsKKworCWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tfVFVQTEVTKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCWVycm1zZygiY291bGQgbm90IGZldGNoIHByaW1hcnlfc2xv dF9uYW1lIFwiJXNcIiBpbmZvIGZyb20gdGhlIgorCQkJCQkgICAiIHByaW1hcnkgc2VydmVyOiAl cyIsIFByaW1hcnlTbG90TmFtZSwgcmVzLT5lcnIpKTsKKworCXR1cHNsb3QgPSBNYWtlU2luZ2xl VHVwbGVUYWJsZVNsb3QocmVzLT50dXBsZWRlc2MsICZUVFNPcHNNaW5pbWFsVHVwbGUpOworCSh2 b2lkKSB0dXBsZXN0b3JlX2dldHR1cGxlc2xvdChyZXMtPnR1cGxlc3RvcmUsIHRydWUsIGZhbHNl LCB0dXBzbG90KTsKKworCS8qIEl0IG11c3QgcmV0dXJuIG9uZSB0dXBsZSAqLworCUFzc2VydCh0 dXBsZXN0b3JlX3R1cGxlX2NvdW50KHJlcy0+dHVwbGVzdG9yZSkgPT0gMSk7CisKKwlyZW1vdGVf aW5fcmVjb3ZlcnkgPSBEYXR1bUdldEJvb2woc2xvdF9nZXRhdHRyKHR1cHNsb3QsIDEsICZpc251 bGwpKTsKKwlBc3NlcnQoIWlzbnVsbCk7CisKKwlpZiAocmVtb3RlX2luX3JlY292ZXJ5KQorCXsK KwkJLyogTm8gbmVlZCB0byBjaGVjayBmdXJ0aGVyLCBqdXN0IHNldCBhbV9jYXNjYWRpbmdfc3Rh bmRieSB0byB0cnVlICovCisJCSphbV9jYXNjYWRpbmdfc3RhbmRieSA9IHRydWU7CisJfQorCWVs c2UKKwl7CisJCS8qIFdlIGFyZSBhIG5vcm1hbCBzdGFuZGJ5ICovCisJCXZhbGlkID0gRGF0dW1H ZXRCb29sKHNsb3RfZ2V0YXR0cih0dXBzbG90LCAyLCAmaXNudWxsKSk7CisJCUFzc2VydCghaXNu dWxsKTsKKworCQlpZiAoIXZhbGlkKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShF UlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJZXJybXNnKCJleGl0aW5nIGZy b20gc2xvdCBzeW5jaHJvbml6YXRpb24gZHVlIHRvIGJhZCBjb25maWd1cmF0aW9uIiksCisJCQkv KiB0cmFuc2xhdG9yOiBzZWNvbmQgJXMgaXMgYSBHVUMgdmFyaWFibGUgbmFtZSAqLworCQkJCQll cnJkZXRhaWwoIlRoZSBwcmltYXJ5IHNlcnZlciBzbG90IFwiJXNcIiBzcGVjaWZpZWQgYnkgJXMg aXMgbm90IHZhbGlkLiIsCisJCQkJCQkJICBQcmltYXJ5U2xvdE5hbWUsICJwcmltYXJ5X3Nsb3Rf bmFtZSIpKTsKKwl9CisKKwlFeGVjQ2xlYXJUdXBsZSh0dXBzbG90KTsKKwl3YWxyY3ZfY2xlYXJf cmVzdWx0KHJlcyk7CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Cit9CisKKy8qCisgKiBD aGVjayB0aGF0IGFsbCBuZWNlc3NhcnkgR1VDcyBmb3Igc2xvdCBzeW5jaHJvbml6YXRpb24gYXJl IHNldAorICogYXBwcm9wcmlhdGVseS4gSWYgbm90LCByYWlzZSBhbiBFUlJPUi4KKyAqCisgKiBJ ZiBhbGwgY2hlY2tzIHBhc3MsIGV4dHJhY3RzIHRoZSBkYm5hbWUgZnJvbSB0aGUgcHJpbWFyeV9j b25uaW5mbyBHVUMgYW5kCisgKiByZXR1cm5zIGl0LgorICovCitzdGF0aWMgY2hhciAqCit2YWxp ZGF0ZV9wYXJhbWV0ZXJzX2FuZF9nZXRfZGJuYW1lKHZvaWQpCit7CisJY2hhcgkgICAqZGJuYW1l OworCisJLyogU2FuaXR5IGNoZWNrLiAqLworCUFzc2VydChlbmFibGVfc3luY3Nsb3QpOworCisJ LyoKKwkgKiBBIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3QocHJpbWFyeV9zbG90X25hbWUpIGlz IHJlcXVpcmVkIG9uIHRoZQorCSAqIHByaW1hcnkgdG8gZW5zdXJlIHRoYXQgdGhlIHJvd3MgbmVl ZGVkIGJ5IHRoZSBzdGFuZGJ5IGFyZSBub3QgcmVtb3ZlZAorCSAqIGFmdGVyIHJlc3RhcnRpbmcs IHNvIHRoYXQgdGhlIHN5bmNocm9uaXplZCBzbG90IG9uIHRoZSBzdGFuZGJ5IHdpbGwgbm90CisJ ICogYmUgaW52YWxpZGF0ZWQuCisJICovCisJaWYgKFByaW1hcnlTbG90TmFtZSA9PSBOVUxMIHx8 IHN0cmNtcChQcmltYXJ5U2xvdE5hbWUsICIiKSA9PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkv KiB0cmFuc2xhdG9yOiAlcyBpcyBhIEdVQyB2YXJpYWJsZSBuYW1lICovCisJCQkJZXJybXNnKCJl eGl0aW5nIGZyb20gc2xvdCBzeW5jaHJvbml6YXRpb24gZHVlIHRvIGJhZCBjb25maWd1cmF0aW9u IiksCisJCQkJZXJyaGludCgiJXMgbXVzdCBiZSBkZWZpbmVkLiIsICJwcmltYXJ5X3Nsb3RfbmFt ZSIpKTsKKworCS8qCisJICogaG90X3N0YW5kYnlfZmVlZGJhY2sgbXVzdCBiZSBlbmFibGVkIHRv IGNvb3BlcmF0ZSB3aXRoIHRoZSBwaHlzaWNhbAorCSAqIHJlcGxpY2F0aW9uIHNsb3QsIHdoaWNo IGFsbG93cyBpbmZvcm1pbmcgdGhlIHByaW1hcnkgYWJvdXQgdGhlIHhtaW4gYW5kCisJICogY2F0 YWxvZ194bWluIHZhbHVlcyBvbiB0aGUgc3RhbmRieS4KKwkgKi8KKwlpZiAoIWhvdF9zdGFuZGJ5 X2ZlZWRiYWNrKQorCQllcmVwb3J0KEVSUk9SLAorCQkvKiB0cmFuc2xhdG9yOiAlcyBpcyBhIEdV QyB2YXJpYWJsZSBuYW1lICovCisJCQkJZXJybXNnKCJleGl0aW5nIGZyb20gc2xvdCBzeW5jaHJv bml6YXRpb24gZHVlIHRvIGJhZCBjb25maWd1cmF0aW9uIiksCisJCQkJZXJyaGludCgiJXMgbXVz dCBiZSBlbmFibGVkLiIsICJob3Rfc3RhbmRieV9mZWVkYmFjayIpKTsKKworCS8qCisJICogTG9n aWNhbCBkZWNvZGluZyByZXF1aXJlcyB3YWxfbGV2ZWwgPj0gbG9naWNhbCBhbmQgd2UgY3VycmVu dGx5IG9ubHkKKwkgKiBzeW5jaHJvbml6ZSBsb2dpY2FsIHNsb3RzLgorCSAqLworCWlmICh3YWxf bGV2ZWwgPCBXQUxfTEVWRUxfTE9HSUNBTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJLyogdHJhbnNs YXRvcjogJXMgaXMgYSBHVUMgdmFyaWFibGUgbmFtZSAqLworCQkJCWVycm1zZygiZXhpdGluZyBm cm9tIHNsb3Qgc3luY2hyb25pemF0aW9uIGR1ZSB0byBiYWQgY29uZmlndXJhdGlvbiIpLAorCQkJ CWVycmhpbnQoIndhbF9sZXZlbCBtdXN0IGJlID49IGxvZ2ljYWwuIikpOworCisJLyoKKwkgKiBU aGUgcHJpbWFyeV9jb25uaW5mbyBpcyByZXF1aXJlZCB0byBtYWtlIGNvbm5lY3Rpb24gdG8gcHJp bWFyeSBmb3IKKwkgKiBnZXR0aW5nIHNsb3RzIGluZm9ybWF0aW9uLgorCSAqLworCWlmIChQcmlt YXJ5Q29ubkluZm8gPT0gTlVMTCB8fCBzdHJjbXAoUHJpbWFyeUNvbm5JbmZvLCAiIikgPT0gMCkK KwkJZXJlcG9ydChFUlJPUiwKKwkJLyogdHJhbnNsYXRvcjogJXMgaXMgYSBHVUMgdmFyaWFibGUg bmFtZSAqLworCQkJCWVycm1zZygiZXhpdGluZyBmcm9tIHNsb3Qgc3luY2hyb25pemF0aW9uIGR1 ZSB0byBiYWQgY29uZmlndXJhdGlvbiIpLAorCQkJCWVycmhpbnQoIiVzIG11c3QgYmUgZGVmaW5l ZC4iLCAicHJpbWFyeV9jb25uaW5mbyIpKTsKKworCS8qCisJICogVGhlIHNsb3Qgc3luYyB3b3Jr ZXIgbmVlZHMgYSBkYXRhYmFzZSBjb25uZWN0aW9uIGZvciB3YWxyY3ZfZXhlYyB0bworCSAqIHdv cmsuCisJICovCisJZGJuYW1lID0gd2FscmN2X2dldF9kYm5hbWVfZnJvbV9jb25uaW5mbyhQcmlt YXJ5Q29ubkluZm8pOworCWlmIChkYm5hbWUgPT0gTlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKwor CQkvKgorCQkgKiB0cmFuc2xhdG9yOiAnZGJuYW1lJyBpcyBhIHNwZWNpZmljIG9wdGlvbjsgJXMg aXMgYSBHVUMgdmFyaWFibGUKKwkJICogbmFtZQorCQkgKi8KKwkJCQllcnJtc2coImV4aXRpbmcg ZnJvbSBzbG90IHN5bmNocm9uaXphdGlvbiBkdWUgdG8gYmFkIGNvbmZpZ3VyYXRpb24iKSwKKwkJ CQllcnJoaW50KCInZGJuYW1lJyBtdXN0IGJlIHNwZWNpZmllZCBpbiAlcy4iLCAicHJpbWFyeV9j b25uaW5mbyIpKTsKKworCXJldHVybiBkYm5hbWU7Cit9CisKKy8qCisgKiBSZS1yZWFkIHRoZSBj b25maWcgZmlsZS4KKyAqCisgKiBJZiBhbnkgb2YgdGhlIHNsb3Qgc3luYyBHVUNzIGhhdmUgY2hh bmdlZCwgZXhpdCB0aGUgd29ya2VyIGFuZAorICogbGV0IGl0IGdldCByZXN0YXJ0ZWQgYnkgdGhl IHBvc3RtYXN0ZXIuCisgKi8KK3N0YXRpYyB2b2lkCitzbG90c3luY19yZXJlYWRfY29uZmlnKHZv aWQpCit7CisJY2hhcgkgICAqb2xkX3ByaW1hcnlfY29ubmluZm8gPSBwc3RyZHVwKFByaW1hcnlD b25uSW5mbyk7CisJY2hhcgkgICAqb2xkX3ByaW1hcnlfc2xvdG5hbWUgPSBwc3RyZHVwKFByaW1h cnlTbG90TmFtZSk7CisJYm9vbAkJb2xkX2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gaG90X3N0YW5k YnlfZmVlZGJhY2s7CisJYm9vbAkJY29ubmluZm9fY2hhbmdlZDsKKwlib29sCQlwcmltYXJ5X3Ns b3RuYW1lX2NoYW5nZWQ7CisKKwlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJUHJvY2Vz c0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisKKwljb25uaW5mb19jaGFuZ2VkID0gc3RyY21wKG9s ZF9wcmltYXJ5X2Nvbm5pbmZvLCBQcmltYXJ5Q29ubkluZm8pICE9IDA7CisJcHJpbWFyeV9zbG90 bmFtZV9jaGFuZ2VkID0gc3RyY21wKG9sZF9wcmltYXJ5X3Nsb3RuYW1lLCBQcmltYXJ5U2xvdE5h bWUpICE9IDA7CisKKwlpZiAoY29ubmluZm9fY2hhbmdlZCB8fAorCQlwcmltYXJ5X3Nsb3RuYW1l X2NoYW5nZWQgfHwKKwkJKG9sZF9ob3Rfc3RhbmRieV9mZWVkYmFjayAhPSBob3Rfc3RhbmRieV9m ZWVkYmFjaykpCisJeworCQllcmVwb3J0KExPRywKKwkJCQllcnJtc2coInNsb3Qgc3luYyB3b3Jr ZXIgd2lsbCByZXN0YXJ0IGJlY2F1c2Ugb2YiCisJCQkJCSAgICIgYSBwYXJhbWV0ZXIgY2hhbmdl IikpOworCQkvKiBUaGUgZXhpdCBjb2RlIDEgd2lsbCBtYWtlIHBvc3RtYXN0ZXIgcmVzdGFydCB0 aGlzIHdvcmtlciAqLworCQlwcm9jX2V4aXQoMSk7CisJfQorCisJcGZyZWUob2xkX3ByaW1hcnlf Y29ubmluZm8pOworCXBmcmVlKG9sZF9wcmltYXJ5X3Nsb3RuYW1lKTsKK30KKworLyoKKyAqIElu dGVycnVwdCBoYW5kbGVyIGZvciBtYWluIGxvb3Agb2Ygc2xvdCBzeW5jIHdvcmtlci4KKyAqLwor c3RhdGljIHZvaWQKK1Byb2Nlc3NTbG90U3luY0ludGVycnVwdHMoV2FsUmVjZWl2ZXJDb25uICp3 cmNvbm4pCit7CisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCWlmIChTaHV0ZG93blJlcXVl c3RQZW5kaW5nKQorCXsKKwkJd2FscmN2X2Rpc2Nvbm5lY3Qod3Jjb25uKTsKKwkJZXJlcG9ydChM T0csCisJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IHN5bmMgd29ya2VyIGlzIHNodXR0aW5n IGRvd24iCisJCQkJCSAgICIgb24gcmVjZWl2aW5nIFNJR0lOVCIpKTsKKwkJcHJvY19leGl0KDAp OworCX0KKworCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQorCQlzbG90c3luY19yZXJlYWRfY29u ZmlnKCk7Cit9CisKKy8qCisgKiBDbGVhbnVwIGZ1bmN0aW9uIGZvciBsb2dpY2FsIHJlcGxpY2F0 aW9uIGxhdW5jaGVyLgorICoKKyAqIENhbGxlZCBvbiBsb2dpY2FsIHJlcGxpY2F0aW9uIGxhdW5j aGVyIGV4aXQuCisgKi8KK3N0YXRpYyB2b2lkCitzbG90c3luY193b3JrZXJfb25leGl0KGludCBj b2RlLCBEYXR1bSBhcmcpCit7CisJU3BpbkxvY2tBY3F1aXJlKCZTbG90U3luY1dvcmtlci0+bXV0 ZXgpOworCVNsb3RTeW5jV29ya2VyLT5waWQgPSBJbnZhbGlkUGlkOworCVNwaW5Mb2NrUmVsZWFz ZSgmU2xvdFN5bmNXb3JrZXItPm11dGV4KTsKK30KKworLyoKKyAqIFNsZWVwIGZvciBsb25nIGVu b3VnaCB0aGF0IHdlIGJlbGlldmUgaXQncyBsaWtlbHkgdGhhdCB0aGUgc2xvdHMgb24gcHJpbWFy eQorICogZ2V0IHVwZGF0ZWQuCisgKgorICogSWYgdGhlcmUgaXMgbm8gc2xvdCBhY3Rpdml0eSB0 aGUgd2FpdCB0aW1lIGJldHdlZW4gc3luYy1jeWNsZXMgd2lsbCBkb3VibGUKKyAqICh0byBhIG1h eGltdW0gb2YgMzBzKS4gSWYgdGhlcmUgaXMgc29tZSBzbG90IGFjdGl2aXR5IHRoZSB3YWl0IHRp bWUgYmV0d2VlbgorICogc3luYy1jeWNsZXMgaXMgcmVzZXQgdG8gdGhlIG1pbmltdW0gKDIwMG1z KS4KKyAqLworc3RhdGljIHZvaWQKK3dhaXRfZm9yX3Nsb3RfYWN0aXZpdHkoYm9vbCBzb21lX3Ns b3RfdXBkYXRlZCwgYm9vbCBhbV9jYXNjYWRpbmdfc3RhbmRieSkKK3sKKyNkZWZpbmUgTUlOX1dP UktFUl9OQVBUSU1FX01TICAyMDAKKyNkZWZpbmUgTUFYX1dPUktFUl9OQVBUSU1FX01TICAzMDAw MAkvKiAzMHMgKi8KKworCWludAkJCXJjOworCisJaWYgKGFtX2Nhc2NhZGluZ19zdGFuZGJ5KQor CXsKKwkJLyoKKwkJICogU2xvdCBzeW5jaHJvbml6YXRpb24gaXMgY3VycmVudGx5IG5vdCBzdXBw b3J0ZWQgb24gY2FzY2FkaW5nCisJCSAqIHN0YW5kYnkuIFNvIGlmIHdlIGFyZSBvbiB0aGUgY2Fz Y2FkaW5nIHN0YW5kYnksIHdlIHdpbGwgc2tpcCB0aGUKKwkJICogc3luYyBhbmQgdGFrZSBhIGxv bmdlciBuYXAgYmVmb3JlIHdlIGNoZWNrIGFnYWluIHdoZXRoZXIgd2UgYXJlCisJCSAqIHN0aWxs IGNhc2NhZGluZyBzdGFuZGJ5IG9yIG5vdC4KKwkJICovCisJCXNsZWVwX21zID0gTUFYX1dPUktF Ul9OQVBUSU1FX01TOworCX0KKwllbHNlIGlmICghc29tZV9zbG90X3VwZGF0ZWQpCisJeworCQkv KgorCQkgKiBObyBzbG90cyB3ZXJlIHVwZGF0ZWQsIHNvIGRvdWJsZSB0aGUgc2xlZXAgdGltZSwg YnV0IG5vdCBiZXlvbmQgdGhlCisJCSAqIG1heGltdW0gYWxsb3dhYmxlIHZhbHVlLgorCQkgKi8K KwkJc2xlZXBfbXMgPSBNaW4oc2xlZXBfbXMgKiAyLCBNQVhfV09SS0VSX05BUFRJTUVfTVMpOwor CX0KKwllbHNlCisJeworCQkvKgorCQkgKiBTb21lIHNsb3RzIHdlcmUgdXBkYXRlZCBzaW5jZSB0 aGUgbGFzdCBzbGVlcCwgc28gcmVzZXQgdGhlIHNsZWVwCisJCSAqIHRpbWUuCisJCSAqLworCQlz bGVlcF9tcyA9IE1JTl9XT1JLRVJfTkFQVElNRV9NUzsKKwl9CisKKwlyYyA9IFdhaXRMYXRjaChN eUxhdGNoLAorCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BN X0RFQVRILAorCQkJCSAgIHNsZWVwX21zLAorCQkJCSAgIFdBSVRfRVZFTlRfUkVQTF9TTE9UU1lO Q19NQUlOKTsKKworCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJUmVzZXRMYXRjaChNeUxhdGNo KTsKK30KKworLyoKKyAqIFRoZSBtYWluIGxvb3Agb2Ygb3VyIHdvcmtlciBwcm9jZXNzLgorICoK KyAqIEl0IGNvbm5lY3RzIHRvIHRoZSBwcmltYXJ5IHNlcnZlciwgZmV0Y2hlcyBsb2dpY2FsIGZh aWxvdmVyIHNsb3RzCisgKiBpbmZvcm1hdGlvbiBwZXJpb2RpY2FsbHkgaW4gb3JkZXIgdG8gY3Jl YXRlIGFuZCBzeW5jIHRoZSBzbG90cy4KKyAqLwordm9pZAorUmVwbFNsb3RTeW5jV29ya2VyTWFp bihEYXR1bSBtYWluX2FyZykKK3sKKwlXYWxSZWNlaXZlckNvbm4gKndyY29ubiA9IE5VTEw7CisJ Y2hhcgkgICAqZGJuYW1lOworCWJvb2wJCWFtX2Nhc2NhZGluZ19zdGFuZGJ5OworCWNoYXIJICAg KmVycjsKKworCWVyZXBvcnQoTE9HLCBlcnJtc2coInJlcGxpY2F0aW9uIHNsb3Qgc3luYyB3b3Jr ZXIgc3RhcnRlZCIpKTsKKworCW9uX3NobWVtX2V4aXQoc2xvdHN5bmNfd29ya2VyX29uZXhpdCwg KERhdHVtKSAwKTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmU2xvdFN5bmNXb3JrZXItPm11dGV4KTsK KworCUFzc2VydChTbG90U3luY1dvcmtlci0+cGlkID09IEludmFsaWRQaWQpOworCisJLyogQWR2 ZXJ0aXNlIG91ciBQSUQgc28gdGhhdCB0aGUgc3RhcnR1cCBwcm9jZXNzIGNhbiBraWxsIHVzIG9u IHByb21vdGlvbiAqLworCVNsb3RTeW5jV29ya2VyLT5waWQgPSBNeVByb2NQaWQ7CisKKwlTcGlu TG9ja1JlbGVhc2UoJlNsb3RTeW5jV29ya2VyLT5tdXRleCk7CisKKwkvKiBTZXR1cCBzaWduYWwg aGFuZGxpbmcgKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxv YWQpOworCXBxc2lnbmFsKFNJR0lOVCwgU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVzdCk7 CisJcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKKwlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25h bHMoKTsKKworCS8qIExvYWQgdGhlIGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9ucyAqLworCWxvYWRf ZmlsZSgibGlicHF3YWxyZWNlaXZlciIsIGZhbHNlKTsKKworCWRibmFtZSA9IHZhbGlkYXRlX3Bh cmFtZXRlcnNfYW5kX2dldF9kYm5hbWUoKTsKKworCS8qCisJICogQ29ubmVjdCB0byB0aGUgZGF0 YWJhc2Ugc3BlY2lmaWVkIGJ5IHVzZXIgaW4gcHJpbWFyeV9jb25uaW5mby4gV2UgbmVlZAorCSAq IGEgZGF0YWJhc2UgY29ubmVjdGlvbiBmb3Igd2FscmN2X2V4ZWMgdG8gd29yay4gUGxlYXNlIHNl ZSBjb21tZW50cyBhdG9wCisJICogbGlicHFyY3ZfZXhlYy4KKwkgKi8KKwlCYWNrZ3JvdW5kV29y a2VySW5pdGlhbGl6ZUNvbm5lY3Rpb24oZGJuYW1lLCBOVUxMLCAwKTsKKworCS8qCisJICogRXN0 YWJsaXNoIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBwcmltYXJ5IHNlcnZlciBmb3Igc2xvdHMKKwkg KiBzeW5jaHJvbml6YXRpb24uCisJICovCisJd3Jjb25uID0gd2FscmN2X2Nvbm5lY3QoUHJpbWFy eUNvbm5JbmZvLCB0cnVlLCBmYWxzZSwKKwkJCQkJCQljbHVzdGVyX25hbWVbMF0gPyBjbHVzdGVy X25hbWUgOiAic2xvdHN5bmN3b3JrZXIiLAorCQkJCQkJCSZlcnIpOworCWlmICghd3Jjb25uKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9DT05ORUNUSU9OX0ZBSUxVUkUp LAorCQkJCWVycm1zZygiY291bGQgbm90IGNvbm5lY3QgdG8gdGhlIHByaW1hcnkgc2VydmVyOiAl cyIsIGVycikpOworCisJLyoKKwkgKiBVc2luZyB0aGUgc3BlY2lmaWVkIHByaW1hcnkgc2VydmVy IGNvbm5lY3Rpb24sIGNoZWNrIHdoZXRoZXIgd2UgYXJlCisJICogY2FzY2FkaW5nIHN0YW5kYnkg YW5kIHZhbGlkYXRlcyBwcmltYXJ5X3Nsb3RfbmFtZSBmb3IKKwkgKiBub24tY2FzY2FkaW5nLXN0 YW5kYnlzLgorCSAqLworCWNoZWNrX3ByaW1hcnlfaW5mbyh3cmNvbm4sICZhbV9jYXNjYWRpbmdf c3RhbmRieSk7CisKKwkvKiBNYWluIHdhaXQgbG9vcCAqLworCWZvciAoOzspCisJeworCQlib29s CQlzb21lX3Nsb3RfdXBkYXRlZCA9IGZhbHNlOworCisJCVByb2Nlc3NTbG90U3luY0ludGVycnVw dHMod3Jjb25uKTsKKworCQlpZiAoIWFtX2Nhc2NhZGluZ19zdGFuZGJ5KQorCQkJc29tZV9zbG90 X3VwZGF0ZWQgPSBzeW5jaHJvbml6ZV9zbG90cyh3cmNvbm4pOworCisJCXdhaXRfZm9yX3Nsb3Rf YWN0aXZpdHkoc29tZV9zbG90X3VwZGF0ZWQsIGFtX2Nhc2NhZGluZ19zdGFuZGJ5KTsKKworCQkv KgorCQkgKiBJZiB0aGUgc3RhbmRieSB3YXMgcHJvbW90ZWQgdGhlbiB3aGF0IHdhcyBwcmV2aW91 c2x5IGEgY2FzY2FkaW5nCisJCSAqIHN0YW5kYnkgbWlnaHQgbm8gbG9uZ2VyIGJlIG9uZSwgc28g cmVjaGVjayBlYWNoIHRpbWUuCisJCSAqLworCQlpZiAoYW1fY2FzY2FkaW5nX3N0YW5kYnkpCisJ CQljaGVja19wcmltYXJ5X2luZm8od3Jjb25uLCAmYW1fY2FzY2FkaW5nX3N0YW5kYnkpOworCX0K KworCS8qCisJICogVGhlIHNsb3Qgc3luYyB3b3JrZXIgY2FuIG5vdCBnZXQgaGVyZSBiZWNhdXNl IGl0IHdpbGwgb25seSBzdG9wIHdoZW4gaXQKKwkgKiByZWNlaXZlcyBhIFNJR0lOVCBmcm9tIHRo ZSBsb2dpY2FsIHJlcGxpY2F0aW9uIGxhdW5jaGVyLCBvciB3aGVuIHRoZXJlCisJICogaXMgYW4g ZXJyb3IuCisJICovCisJQXNzZXJ0KGZhbHNlKTsKK30KKworLyoKKyAqIElzIGN1cnJlbnQgcHJv Y2VzcyB0aGUgc2xvdCBzeW5jIHdvcmtlcj8KKyAqLworYm9vbAorSXNMb2dpY2FsU2xvdFN5bmNX b3JrZXIodm9pZCkKK3sKKwlyZXR1cm4gU2xvdFN5bmNXb3JrZXItPnBpZCA9PSBNeVByb2NQaWQ7 Cit9CisKKy8qCisgKiBTaHV0IGRvd24gdGhlIHNsb3Qgc3luYyB3b3JrZXIuCisgKi8KK3ZvaWQK K1NodXREb3duU2xvdFN5bmModm9pZCkKK3sKKwlTcGluTG9ja0FjcXVpcmUoJlNsb3RTeW5jV29y a2VyLT5tdXRleCk7CisJaWYgKFNsb3RTeW5jV29ya2VyLT5waWQgPT0gSW52YWxpZFBpZCkKKwl7 CisJCVNwaW5Mb2NrUmVsZWFzZSgmU2xvdFN5bmNXb3JrZXItPm11dGV4KTsKKwkJcmV0dXJuOwor CX0KKworCWtpbGwoU2xvdFN5bmNXb3JrZXItPnBpZCwgU0lHSU5UKTsKKworCVNwaW5Mb2NrUmVs ZWFzZSgmU2xvdFN5bmNXb3JrZXItPm11dGV4KTsKKworCS8qIFdhaXQgZm9yIGl0IHRvIGRpZSAq LworCWZvciAoOzspCisJeworCQlpbnQJCQlyYzsKKworCQkvKiBXYWl0IGEgYml0LCB3ZSBkb24n dCBleHBlY3QgdG8gaGF2ZSB0byB3YWl0IGxvbmcgKi8KKwkJcmMgPSBXYWl0TGF0Y2goTXlMYXRj aCwKKwkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsCisJCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9CR1dPUktFUl9TSFVURE9XTik7CisKKwkJaWYg KHJjICYgV0xfTEFUQ0hfU0VUKQorCQl7CisJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJfQorCisJCVNwaW5Mb2NrQWNxdWlyZSgmU2xvdFN5bmNX b3JrZXItPm11dGV4KTsKKworCQkvKiBJcyBpdCBnb25lPyAqLworCQlpZiAoU2xvdFN5bmNXb3Jr ZXItPnBpZCA9PSBJbnZhbGlkUGlkKQorCQkJYnJlYWs7CisKKwkJU3BpbkxvY2tSZWxlYXNlKCZT bG90U3luY1dvcmtlci0+bXV0ZXgpOworCX0KKworCVNwaW5Mb2NrUmVsZWFzZSgmU2xvdFN5bmNX b3JrZXItPm11dGV4KTsKK30KKworLyoKKyAqIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHNsb3Qg c3luYyB3b3JrZXIgc2hhcmVkIG1lbW9yeQorICovCit2b2lkCitTbG90U3luY1dvcmtlclNobWVt SW5pdCh2b2lkKQoreworCVNpemUJCXNpemU7CisJYm9vbAkJZm91bmQ7CisKKwlzaXplID0gc2l6 ZW9mKFNsb3RTeW5jV29ya2VyQ3R4U3RydWN0KTsKKwlzaXplID0gTUFYQUxJR04oc2l6ZSk7CisK KwlTbG90U3luY1dvcmtlciA9IChTbG90U3luY1dvcmtlckN0eFN0cnVjdCAqKQorCQlTaG1lbUlu aXRTdHJ1Y3QoIlNsb3QgU3luYyBXb3JrZXIgRGF0YSIsIHNpemUsICZmb3VuZCk7CisKKwlpZiAo IWZvdW5kKQorCXsKKwkJbWVtc2V0KFNsb3RTeW5jV29ya2VyLCAwLCBzaXplKTsKKwkJU2xvdFN5 bmNXb3JrZXItPnBpZCA9IEludmFsaWRQaWQ7CisJCVNwaW5Mb2NrSW5pdCgmU2xvdFN5bmNXb3Jr ZXItPm11dGV4KTsKKwl9Cit9CisKKy8qCisgKiBSZWdpc3RlciB0aGUgYmFja2dyb3VuZCB3b3Jr ZXIgZm9yIHNsb3RzIHN5bmNocm9uaXphdGlvbiBwcm92aWRlZAorICogZW5hYmxlX3N5bmNzbG90 IGlzIE9OLgorICovCit2b2lkCitTbG90U3luY1dvcmtlclJlZ2lzdGVyKHZvaWQpCit7CisJQmFj a2dyb3VuZFdvcmtlciBiZ3c7CisKKwlpZiAoIWVuYWJsZV9zeW5jc2xvdCkKKwl7CisJCWVyZXBv cnQoTE9HLAorCQkJCWVycm1zZygic2tpcHBpbmcgc2xvdCBzeW5jaHJvbml6YXRpb24iKSwKKwkJ CQllcnJkZXRhaWwoImVuYWJsZV9zeW5jc2xvdCBpcyBkaXNhYmxlZC4iKSk7CisJCXJldHVybjsK Kwl9CisKKwltZW1zZXQoJmJndywgMCwgc2l6ZW9mKGJndykpOworCisJLyogV2UgbmVlZCBkYXRh YmFzZSBjb25uZWN0aW9uIHdoaWNoIG5lZWRzIHNoYXJlZC1tZW1vcnkgYWNjZXNzIGFzIHdlbGwg Ki8KKwliZ3cuYmd3X2ZsYWdzID0gQkdXT1JLRVJfU0hNRU1fQUNDRVNTIHwKKwkJQkdXT1JLRVJf QkFDS0VORF9EQVRBQkFTRV9DT05ORUNUSU9OOworCisJLyogU3RhcnQgYXMgc29vbiBhcyBhIGNv bnNpc3RlbnQgc3RhdGUgaGFzIGJlZW4gcmVhY2hlZCBpbiBhIGhvdCBzdGFuZGJ5ICovCisJYmd3 LmJnd19zdGFydF90aW1lID0gQmdXb3JrZXJTdGFydF9Db25zaXN0ZW50U3RhdGVfSG90U3RhbmRi eTsKKworCXNucHJpbnRmKGJndy5iZ3dfbGlicmFyeV9uYW1lLCBNQVhQR1BBVEgsICJwb3N0Z3Jl cyIpOworCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIlJlcGxT bG90U3luY1dvcmtlck1haW4iKTsKKwlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19NQVhMRU4s CisJCQkgInJlcGxpY2F0aW9uIHNsb3Qgc3luYyB3b3JrZXIiKTsKKwlzbnByaW50ZihiZ3cuYmd3 X3R5cGUsIEJHV19NQVhMRU4sCisJCQkgInNsb3Qgc3luYyB3b3JrZXIiKTsKKworCWJndy5iZ3df cmVzdGFydF90aW1lID0gQkdXX0RFRkFVTFRfUkVTVEFSVF9JTlRFUlZBTDsKKwliZ3cuYmd3X25v dGlmeV9waWQgPSAwOworCWJndy5iZ3dfbWFpbl9hcmcgPSAoRGF0dW0pIDA7CisKKwlSZWdpc3Rl ckJhY2tncm91bmRXb3JrZXIoJmJndyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKaW5kZXggNjk2 Mzc2NDAwZS4uMzNmOTU3YjAyZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtNDcsNiArNDcs NyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIu aCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAgLTEwMyw3ICsxMDQsNiBAQCBpbnQJCQltYXhfcmVw bGljYXRpb25fc2xvdHMgPSAxMDsgLyogdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlcGxpY2F0aW9u CiAJCQkJCQkJCQkJICogc2xvdHMgKi8KIAogc3RhdGljIHZvaWQgUmVwbGljYXRpb25TbG90U2ht ZW1FeGl0KGludCBjb2RlLCBEYXR1bSBhcmcpOwotc3RhdGljIHZvaWQgUmVwbGljYXRpb25TbG90 RHJvcEFjcXVpcmVkKHZvaWQpOwogc3RhdGljIHZvaWQgUmVwbGljYXRpb25TbG90RHJvcFB0cihS ZXBsaWNhdGlvblNsb3QgKnNsb3QpOwogCiAvKiBpbnRlcm5hbCBwZXJzaXN0ZW5jeSBmdW5jdGlv bnMgKi8KQEAgLTI1MCwxMSArMjUwLDEyIEBAIFJlcGxpY2F0aW9uU2xvdFZhbGlkYXRlTmFtZShj b25zdCBjaGFyICpuYW1lLCBpbnQgZWxldmVsKQogICogICAgIHVzZXIgd2lsbCBvbmx5IGdldCBj b21taXQgcHJlcGFyZWQuCiAgKiBmYWlsb3ZlcjogSWYgZW5hYmxlZCwgYWxsb3dzIHRoZSBzbG90 IHRvIGJlIHN5bmNlZCB0byBwaHlzaWNhbCBzdGFuZGJ5cyBzbwogICogICAgIHRoYXQgbG9naWNh bCByZXBsaWNhdGlvbiBjYW4gYmUgcmVzdW1lZCBhZnRlciBmYWlsb3Zlci4KKyAqIHN5bmNlZDog VHJ1ZSBpZiB0aGUgc2xvdCBpcyBjcmVhdGVkIGJ5IGEgc2xvdHN5bmMgd29ya2VyLgogICovCiB2 b2lkCiBSZXBsaWNhdGlvblNsb3RDcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBkYl9zcGVj aWZpYywKIAkJCQkJICBSZXBsaWNhdGlvblNsb3RQZXJzaXN0ZW5jeSBwZXJzaXN0ZW5jeSwKLQkJ CQkJICBib29sIHR3b19waGFzZSwgYm9vbCBmYWlsb3ZlcikKKwkJCQkJICBib29sIHR3b19waGFz ZSwgYm9vbCBmYWlsb3ZlciwgYm9vbCBzeW5jZWQpCiB7CiAJUmVwbGljYXRpb25TbG90ICpzbG90 ID0gTlVMTDsKIAlpbnQJCQlpOwpAQCAtMzE1LDYgKzMxNiw3IEBAIFJlcGxpY2F0aW9uU2xvdENy ZWF0ZShjb25zdCBjaGFyICpuYW1lLCBib29sIGRiX3NwZWNpZmljLAogCXNsb3QtPmRhdGEudHdv X3BoYXNlID0gdHdvX3BoYXNlOwogCXNsb3QtPmRhdGEudHdvX3BoYXNlX2F0ID0gSW52YWxpZFhM b2dSZWNQdHI7CiAJc2xvdC0+ZGF0YS5mYWlsb3ZlciA9IGZhaWxvdmVyOworCXNsb3QtPmRhdGEu c3luY2VkID0gc3luY2VkOwogCiAJLyogYW5kIHRoZW4gZGF0YSBvbmx5IHByZXNlbnQgaW4gc2hh cmVkIG1lbW9yeSAqLwogCXNsb3QtPmp1c3RfZGlydGllZCA9IGZhbHNlOwpAQCAtNjgwLDYgKzY4 MiwxNiBAQCBSZXBsaWNhdGlvblNsb3REcm9wKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbm93YWl0 KQogCiAJUmVwbGljYXRpb25TbG90QWNxdWlyZShuYW1lLCBub3dhaXQpOwogCisJLyoKKwkgKiBE byBub3QgYWxsb3cgdXNlcnMgdG8gZHJvcCB0aGUgc2xvdHMgd2hpY2ggYXJlIGN1cnJlbnRseSBi ZWluZyBzeW5jZWQKKwkgKiBmcm9tIHRoZSBwcmltYXJ5IHRvIHRoZSBzdGFuZGJ5LgorCSAqLwor CWlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSAmJiBNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5zeW5j ZWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5f UFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQllcnJtc2coImNhbm5vdCBkcm9wIHJlcGxpY2F0aW9u IHNsb3QgXCIlc1wiIiwgbmFtZSksCisJCQkJZXJyZGV0YWlsKCJUaGlzIHNsb3QgaXMgYmVpbmcg c3luY2VkIGZyb20gdGhlIHByaW1hcnkgc2VydmVyLiIpKTsKKwogCVJlcGxpY2F0aW9uU2xvdERy b3BBY3F1aXJlZCgpOwogfQogCkBAIC02OTksNiArNzExLDE2IEBAIFJlcGxpY2F0aW9uU2xvdEFs dGVyKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgZmFpbG92ZXIpCiAJCQkJZXJybXNnKCJjYW5ub3Qg dXNlICVzIHdpdGggYSBwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90IiwKIAkJCQkJICAgIkFMVEVS X1JFUExJQ0FUSU9OX1NMT1QiKSk7CiAKKwkvKgorCSAqIERvIG5vdCBhbGxvdyB1c2VycyB0byBh bHRlciB0aGUgc2xvdHMgd2hpY2ggYXJlIGN1cnJlbnRseSBiZWluZyBzeW5jZWQKKwkgKiBmcm9t IHRoZSBwcmltYXJ5IHRvIHRoZSBzdGFuZGJ5LgorCSAqLworCWlmIChSZWNvdmVyeUluUHJvZ3Jl c3MoKSAmJiBNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5zeW5jZWQpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwK KwkJCQllcnJtc2coImNhbm5vdCBhbHRlciByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsIG5hbWUp LAorCQkJCWVycmRldGFpbCgiVGhpcyBzbG90IGlzIGJlaW5nIHN5bmNlZCBmcm9tIHRoZSBwcmlt YXJ5IHNlcnZlci4iKSk7CisKIAlTcGluTG9ja0FjcXVpcmUoJk15UmVwbGljYXRpb25TbG90LT5t dXRleCk7CiAJTXlSZXBsaWNhdGlvblNsb3QtPmRhdGEuZmFpbG92ZXIgPSBmYWlsb3ZlcjsKIAlT cGluTG9ja1JlbGVhc2UoJk15UmVwbGljYXRpb25TbG90LT5tdXRleCk7CkBAIC03MTEsNyArNzMz LDcgQEAgUmVwbGljYXRpb25TbG90QWx0ZXIoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBmYWlsb3Zl cikKIC8qCiAgKiBQZXJtYW5lbnRseSBkcm9wIHRoZSBjdXJyZW50bHkgYWNxdWlyZWQgcmVwbGlj YXRpb24gc2xvdC4KICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIFJlcGxpY2F0aW9uU2xvdERyb3BB Y3F1aXJlZCh2b2lkKQogewogCVJlcGxpY2F0aW9uU2xvdCAqc2xvdCA9IE15UmVwbGljYXRpb25T bG90OwpAQCAtODY3LDggKzg4OSw4IEBAIFJlcGxpY2F0aW9uU2xvdE1hcmtEaXJ0eSh2b2lkKQog fQogCiAvKgotICogQ29udmVydCBhIHNsb3QgdGhhdCdzIG1hcmtlZCBhcyBSU19FUEhFTUVSQUwg dG8gYSBSU19QRVJTSVNURU5UIHNsb3QsCi0gKiBndWFyYW50ZWVpbmcgaXQgd2lsbCBiZSB0aGVy ZSBhZnRlciBhbiBldmVudHVhbCBjcmFzaC4KKyAqIENvbnZlcnQgYSBzbG90IHRoYXQncyBtYXJr ZWQgYXMgUlNfRVBIRU1FUkFMIG9yIFJTX1RFTVBPUkFSWSB0byBhCisgKiBSU19QRVJTSVNURU5U IHNsb3QsIGd1YXJhbnRlZWluZyBpdCB3aWxsIGJlIHRoZXJlIGFmdGVyIGFuIGV2ZW50dWFsIGNy YXNoLgogICovCiB2b2lkCiBSZXBsaWNhdGlvblNsb3RQZXJzaXN0KHZvaWQpCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Nsb3RmdW5jcy5jCmluZGV4IGM5M2RiYTg1NWIuLjg0M2FlOGNkNjggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCkBAIC00Myw3ICs0Myw3IEBAIGNyZWF0ZV9waHlzaWNh bF9yZXBsaWNhdGlvbl9zbG90KGNoYXIgKm5hbWUsIGJvb2wgaW1tZWRpYXRlbHlfcmVzZXJ2ZSwK IAkvKiBhY3F1aXJlIHJlcGxpY2F0aW9uIHNsb3QsIHRoaXMgd2lsbCBjaGVjayBmb3IgY29uZmxp Y3RpbmcgbmFtZXMgKi8KIAlSZXBsaWNhdGlvblNsb3RDcmVhdGUobmFtZSwgZmFsc2UsCiAJCQkJ CQkgIHRlbXBvcmFyeSA/IFJTX1RFTVBPUkFSWSA6IFJTX1BFUlNJU1RFTlQsIGZhbHNlLAotCQkJ CQkJICBmYWxzZSk7CisJCQkJCQkgIGZhbHNlLCBmYWxzZSAvKiBzeW5jZWQgKi8gKTsKIAogCWlm IChpbW1lZGlhdGVseV9yZXNlcnZlKQogCXsKQEAgLTEzNiw3ICsxMzYsNyBAQCBjcmVhdGVfbG9n aWNhbF9yZXBsaWNhdGlvbl9zbG90KGNoYXIgKm5hbWUsIGNoYXIgKnBsdWdpbiwKIAkgKi8KIAlS ZXBsaWNhdGlvblNsb3RDcmVhdGUobmFtZSwgdHJ1ZSwKIAkJCQkJCSAgdGVtcG9yYXJ5ID8gUlNf VEVNUE9SQVJZIDogUlNfRVBIRU1FUkFMLCB0d29fcGhhc2UsCi0JCQkJCQkgIGZhaWxvdmVyKTsK KwkJCQkJCSAgZmFpbG92ZXIsIGZhbHNlIC8qIHN5bmNlZCAqLyApOwogCiAJLyoKIAkgKiBDcmVh dGUgbG9naWNhbCBkZWNvZGluZyBjb250ZXh0IHRvIGZpbmQgc3RhcnQgcG9pbnQgb3IsIGlmIHdl IGRvbid0CkBAIC0yMzcsNyArMjM3LDcgQEAgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KFBHX0ZV TkNUSU9OX0FSR1MpCiBEYXR1bQogcGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKFBHX0ZVTkNUSU9O X0FSR1MpCiB7Ci0jZGVmaW5lIFBHX0dFVF9SRVBMSUNBVElPTl9TTE9UU19DT0xTIDE2CisjZGVm aW5lIFBHX0dFVF9SRVBMSUNBVElPTl9TTE9UU19DT0xTIDE3CiAJUmV0dXJuU2V0SW5mbyAqcnNp bmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOwogCVhMb2dSZWNQdHIJ Y3VycmxzbjsKIAlpbnQJCQlzbG90bm87CkBAIC00MTgsMjEgKzQxOCwyMyBAQCBwZ19nZXRfcmVw bGljYXRpb25fc2xvdHMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJYnJlYWs7CiAKIAkJCQljYXNl IFJTX0lOVkFMX1dBTF9SRU1PVkVEOgotCQkJCQl2YWx1ZXNbaSsrXSA9IENTdHJpbmdHZXRUZXh0 RGF0dW0oIndhbF9yZW1vdmVkIik7CisJCQkJCXZhbHVlc1tpKytdID0gQ1N0cmluZ0dldFRleHRE YXR1bShTTE9UX0lOVkFMX1dBTF9SRU1PVkVEX1RFWFQpOwogCQkJCQlicmVhazsKIAogCQkJCWNh c2UgUlNfSU5WQUxfSE9SSVpPTjoKLQkJCQkJdmFsdWVzW2krK10gPSBDU3RyaW5nR2V0VGV4dERh dHVtKCJyb3dzX3JlbW92ZWQiKTsKKwkJCQkJdmFsdWVzW2krK10gPSBDU3RyaW5nR2V0VGV4dERh dHVtKFNMT1RfSU5WQUxfSE9SSVpPTl9URVhUKTsKIAkJCQkJYnJlYWs7CiAKIAkJCQljYXNlIFJT X0lOVkFMX1dBTF9MRVZFTDoKLQkJCQkJdmFsdWVzW2krK10gPSBDU3RyaW5nR2V0VGV4dERhdHVt KCJ3YWxfbGV2ZWxfaW5zdWZmaWNpZW50Iik7CisJCQkJCXZhbHVlc1tpKytdID0gQ1N0cmluZ0dl dFRleHREYXR1bShTTE9UX0lOVkFMX1dBTF9MRVZFTF9URVhUKTsKIAkJCQkJYnJlYWs7CiAJCQl9 CiAJCX0KIAogCQl2YWx1ZXNbaSsrXSA9IEJvb2xHZXREYXR1bShzbG90X2NvbnRlbnRzLmRhdGEu ZmFpbG92ZXIpOwogCisJCXZhbHVlc1tpKytdID0gQm9vbEdldERhdHVtKHNsb3RfY29udGVudHMu ZGF0YS5zeW5jZWQpOworCiAJCUFzc2VydChpID09IFBHX0dFVF9SRVBMSUNBVElPTl9TTE9UU19D T0xTKTsKIAogCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZv LT5zZXREZXNjLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2 ZXJmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jCmlu ZGV4IDczYTdkOGY5NmMuLmQ0MjBhODMzY2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxyZWNlaXZlcmZ1bmNzLmMKQEAgLTM0NSw2ICszNDUsMjIgQEAgR2V0V2FsUmN2Rmx1c2hSZWNQ dHIoWExvZ1JlY1B0ciAqbGF0ZXN0Q2h1bmtTdGFydCwgVGltZUxpbmVJRCAqcmVjZWl2ZVRMSSkK IAlyZXR1cm4gcmVjcHRyOwogfQogCisvKgorICogUmV0dXJucyB0aGUgbGF0ZXN0IHJlcG9ydGVk IGVuZCBvZiBXQUwgb24gdGhlIHNlbmRlcgorICovCitYTG9nUmVjUHRyCitHZXRXYWxSY3ZMYXRl c3RXYWxFbmQoKQoreworCVdhbFJjdkRhdGEgKndhbHJjdiA9IFdhbFJjdjsKKwlYTG9nUmVjUHRy CXJlY3B0cjsKKworCVNwaW5Mb2NrQWNxdWlyZSgmd2FscmN2LT5tdXRleCk7CisJcmVjcHRyID0g d2FscmN2LT5sYXRlc3RXYWxFbmQ7CisJU3BpbkxvY2tSZWxlYXNlKCZ3YWxyY3YtPm11dGV4KTsK KworCXJldHVybiByZWNwdHI7Cit9CisKIC8qCiAgKiBSZXR1cm5zIHRoZSBsYXN0KzEgYnl0ZSBw b3NpdGlvbiB0aGF0IHdhbHJlY2VpdmVyIGhhcyB3cml0dGVuLgogICogVGhpcyByZXR1cm5zIGEg cmVjZW50bHkgd3JpdHRlbiB2YWx1ZSB3aXRob3V0IHRha2luZyBhIGxvY2suCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHNlbmRlci5jCmluZGV4IDc3YzhiYWEzMmEuLmM4MWE3YTgzNDQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC0xMjI0LDcgKzEyMjQsNyBAQCBDcmVhdGVSZXBs aWNhdGlvblNsb3QoQ3JlYXRlUmVwbGljYXRpb25TbG90Q21kICpjbWQpCiAJewogCQlSZXBsaWNh dGlvblNsb3RDcmVhdGUoY21kLT5zbG90bmFtZSwgZmFsc2UsCiAJCQkJCQkJICBjbWQtPnRlbXBv cmFyeSA/IFJTX1RFTVBPUkFSWSA6IFJTX1BFUlNJU1RFTlQsCi0JCQkJCQkJICBmYWxzZSwgZmFs c2UpOworCQkJCQkJCSAgZmFsc2UsIGZhbHNlLCBmYWxzZSAvKiBzeW5jZWQgKi8gKTsKIAogCQlp ZiAocmVzZXJ2ZV93YWwpCiAJCXsKQEAgLTEyNTUsNyArMTI1NSw3IEBAIENyZWF0ZVJlcGxpY2F0 aW9uU2xvdChDcmVhdGVSZXBsaWNhdGlvblNsb3RDbWQgKmNtZCkKIAkJICovCiAJCVJlcGxpY2F0 aW9uU2xvdENyZWF0ZShjbWQtPnNsb3RuYW1lLCB0cnVlLAogCQkJCQkJCSAgY21kLT50ZW1wb3Jh cnkgPyBSU19URU1QT1JBUlkgOiBSU19FUEhFTUVSQUwsCi0JCQkJCQkJICB0d29fcGhhc2UsIGZh aWxvdmVyKTsKKwkJCQkJCQkgIHR3b19waGFzZSwgZmFpbG92ZXIsIGZhbHNlIC8qIHN5bmNlZCAq LyApOwogCiAJCS8qCiAJCSAqIERvIG9wdGlvbnMgY2hlY2sgZWFybHkgc28gdGhhdCB3ZSBjYW4g YmFpbCBiZWZvcmUgY2FsbGluZyB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwppbmRleCBlNTExOWVk NTVkLi4wNGZlZDEwMDdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNp LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCkBAIC0zOCw2ICszOCw3IEBA CiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dh bHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCisjaW5jbHVk ZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZt Z3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2RzbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgi CkBAIC0zNDIsNiArMzQzLDcgQEAgQ3JlYXRlT3JBdHRhY2hTaG1lbVN0cnVjdHModm9pZCkKIAlX YWxTdW1tYXJpemVyU2htZW1Jbml0KCk7CiAJUGdBcmNoU2htZW1Jbml0KCk7CiAJQXBwbHlMYXVu Y2hlclNobWVtSW5pdCgpOworCVNsb3RTeW5jV29ya2VyU2htZW1Jbml0KCk7CiAKIAkvKgogCSAq IFNldCB1cCBvdGhlciBtb2R1bGVzIHRoYXQgbmVlZCBzb21lIHNoYXJlZCBtZW1vcnkgc3BhY2UK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYwppbmRleCAxZWFhZjNjNmM1Li4xOWIwOGMxYjVmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jCkBAIC0zMjg2LDYgKzMyODYsMTcgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAkJCSAq LwogCQkJcHJvY19leGl0KDEpOwogCQl9CisJCWVsc2UgaWYgKElzTG9naWNhbFNsb3RTeW5jV29y a2VyKCkpCisJCXsKKwkJCWVsb2coREVCVUcxLAorCQkJCSAicmVwbGljYXRpb24gc2xvdCBzeW5j IHdvcmtlciBpcyBzaHV0dGluZyBkb3duIGR1ZSB0byBhZG1pbmlzdHJhdG9yIGNvbW1hbmQiKTsK KworCQkJLyoKKwkJCSAqIFNsb3Qgc3luYyB3b3JrZXIgY2FuIGJlIHN0b3BwZWQgYXQgYW55IHRp bWUuIFVzZSBleGl0IHN0YXR1cyAxCisJCQkgKiBzbyB0aGUgYmFja2dyb3VuZCB3b3JrZXIgaXMg cmVzdGFydGVkLgorCQkJICovCisJCQlwcm9jX2V4aXQoMSk7CisJCX0KIAkJZWxzZSBpZiAoSXNC YWNrZ3JvdW5kV29ya2VyKQogCQkJZXJlcG9ydChGQVRBTCwKIAkJCQkJKGVycmNvZGUoRVJSQ09E RV9BRE1JTl9TSFVURE9XTiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS93YWl0X2V2ZW50X25hbWVzLnR4dCBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRf ZXZlbnRfbmFtZXMudHh0CmluZGV4IGY2MjU0NzNhZDQuLjA4NzliYWI1N2UgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CkBAIC01Myw2ICs1 Myw4IEBAIExPR0lDQUxfQVBQTFlfTUFJTgkiV2FpdGluZyBpbiBtYWluIGxvb3Agb2YgbG9naWNh bCByZXBsaWNhdGlvbiBhcHBseSBwcm9jZXNzLiIKIExPR0lDQUxfTEFVTkNIRVJfTUFJTgkiV2Fp dGluZyBpbiBtYWluIGxvb3Agb2YgbG9naWNhbCByZXBsaWNhdGlvbiBsYXVuY2hlciBwcm9jZXNz LiIKIExPR0lDQUxfUEFSQUxMRUxfQVBQTFlfTUFJTgkiV2FpdGluZyBpbiBtYWluIGxvb3Agb2Yg bG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSBwcm9jZXNzLiIKIFJFQ09WRVJZX1dB TF9TVFJFQU0JIldhaXRpbmcgaW4gbWFpbiBsb29wIG9mIHN0YXJ0dXAgcHJvY2VzcyBmb3IgV0FM IHRvIGFycml2ZSwgZHVyaW5nIHN0cmVhbWluZyByZWNvdmVyeS4iCitSRVBMX1NMT1RTWU5DX01B SU4JIldhaXRpbmcgaW4gbWFpbiBsb29wIG9mIHNsb3Qgc3luYyB3b3JrZXIuIgorUkVQTF9TTE9U U1lOQ19QUklNQVJZX0NBVENIVVAJIldhaXRpbmcgZm9yIHRoZSBwcmltYXJ5IHRvIGNhdGNoLXVw LCBpbiBzbG90IHN5bmMgd29ya2VyLiIKIFNZU0xPR0dFUl9NQUlOCSJXYWl0aW5nIGluIG1haW4g bG9vcCBvZiBzeXNsb2dnZXIgcHJvY2Vzcy4iCiBXQUxfUkVDRUlWRVJfTUFJTgkiV2FpdGluZyBp biBtYWluIGxvb3Agb2YgV0FMIHJlY2VpdmVyIHByb2Nlc3MuIgogV0FMX1NFTkRFUl9NQUlOCSJX YWl0aW5nIGluIG1haW4gbG9vcCBvZiBXQUwgc2VuZGVyIHByb2Nlc3MuIgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYwppbmRleCBlNTNlYmM2ZGMyLi4wZjVlYzYzZGUxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtNjgsNiArNjgsNyBAQAogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIK ICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zeW5jcmVwLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2xhcmdlX29iamVjdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIK QEAgLTIwNDQsNiArMjA0NSwxNSBAQCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNC b29sW10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJlbmFibGVfc3luY3Ns b3QiLCBQR0NfUE9TVE1BU1RFUiwgUkVQTElDQVRJT05fU1RBTkRCWSwKKwkJCWdldHRleHRfbm9v cCgiRW5hYmxlcyBhIHBoeXNpY2FsIHN0YW5kYnkgdG8gc3luY2hyb25pemUgbG9naWNhbCBmYWls b3ZlciBzbG90cyBmcm9tIHRoZSBwcmltYXJ5IHNlcnZlci4iKSwKKwkJfSwKKwkJJmVuYWJsZV9z eW5jc2xvdCwKKwkJZmFsc2UsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJLyogRW5kLW9m LWxpc3QgbWFya2VyICovCiAJewogCQl7TlVMTCwgMCwgMCwgTlVMTCwgTlVMTH0sIE5VTEwsIGZh bHNlLCBOVUxMLCBOVUxMLCBOVUxMCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNj L3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUKaW5kZXggODM1YjBlOWJhOC4uNjgzMGY3ZDE2YiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMzYxLDYgKzM2MSw3 IEBACiAjd2FsX3JldHJpZXZlX3JldHJ5X2ludGVydmFsID0gNXMJIyB0aW1lIHRvIHdhaXQgYmVm b3JlIHJldHJ5aW5nIHRvCiAJCQkJCSMgcmV0cmlldmUgV0FMIGFmdGVyIGEgZmFpbGVkIGF0dGVt cHQKICNyZWNvdmVyeV9taW5fYXBwbHlfZGVsYXkgPSAwCQkjIG1pbmltdW0gZGVsYXkgZm9yIGFw cGx5aW5nIGNoYW5nZXMgZHVyaW5nIHJlY292ZXJ5CisjZW5hYmxlX3N5bmNzbG90ID0gb2ZmCQkJ IyBlbmFibGVzIHNsb3Qgc3luY2hyb25pemF0aW9uIG9uIHRoZSBwaHlzaWNhbCBzdGFuZGJ5IGZy b20gdGhlIHByaW1hcnkKIAogIyAtIFN1YnNjcmliZXJzIC0KIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKaW5kZXggYjllNzQ3ZDcyZi4uNmRjMjM0ZjlmNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CkBAIC0xMTExNSw5ICsxMTExNSw5IEBACiAgIHByb25hbWUgPT4gJ3BnX2dldF9yZXBsaWNhdGlv bl9zbG90cycsIHByb3Jvd3MgPT4gJzEwJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAogICBwcm9yZXRz ZXQgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsCiAg IHByb2FyZ3R5cGVzID0+ICcnLAotICBwcm9hbGxhcmd0eXBlcyA9PiAne25hbWUsbmFtZSx0ZXh0 LG9pZCxib29sLGJvb2wsaW50NCx4aWQseGlkLHBnX2xzbixwZ19sc24sdGV4dCxpbnQ4LGJvb2ws dGV4dCxib29sfScsCi0gIHByb2FyZ21vZGVzID0+ICd7byxvLG8sbyxvLG8sbyxvLG8sbyxvLG8s byxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne3Nsb3RfbmFtZSxwbHVnaW4sc2xvdF90eXBl LGRhdG9pZCx0ZW1wb3JhcnksYWN0aXZlLGFjdGl2ZV9waWQseG1pbixjYXRhbG9nX3htaW4scmVz dGFydF9sc24sY29uZmlybWVkX2ZsdXNoX2xzbix3YWxfc3RhdHVzLHNhZmVfd2FsX3NpemUsdHdv X3BoYXNlLGNvbmZsaWN0X3JlYXNvbixmYWlsb3Zlcn0nLAorICBwcm9hbGxhcmd0eXBlcyA9PiAn e25hbWUsbmFtZSx0ZXh0LG9pZCxib29sLGJvb2wsaW50NCx4aWQseGlkLHBnX2xzbixwZ19sc24s dGV4dCxpbnQ4LGJvb2wsdGV4dCxib29sLGJvb2x9JywKKyAgcHJvYXJnbW9kZXMgPT4gJ3tvLG8s byxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tzbG90 X25hbWUscGx1Z2luLHNsb3RfdHlwZSxkYXRvaWQsdGVtcG9yYXJ5LGFjdGl2ZSxhY3RpdmVfcGlk LHhtaW4sY2F0YWxvZ194bWluLHJlc3RhcnRfbHNuLGNvbmZpcm1lZF9mbHVzaF9sc24sd2FsX3N0 YXR1cyxzYWZlX3dhbF9zaXplLHR3b19waGFzZSxjb25mbGljdF9yZWFzb24sZmFpbG92ZXIsc3lu Y2VkfScsCiAgIHByb3NyYyA9PiAncGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzJyB9LAogeyBvaWQg PT4gJzM3ODYnLCBkZXNjciA9PiAnc2V0IHVwIGEgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90JywK ICAgcHJvbmFtZSA9PiAncGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCcsIHByb3Zv bGF0aWxlID0+ICd2JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3Jr ZXIuaCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuaAppbmRleCAyMmZjNDllYzI3 Li43MDkyZmM3MmM2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2Vy LmgKKysrIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlci5oCkBAIC03OSw2ICs3OSw3 IEBAIHR5cGVkZWYgZW51bQogCUJnV29ya2VyU3RhcnRfUG9zdG1hc3RlclN0YXJ0LAogCUJnV29y a2VyU3RhcnRfQ29uc2lzdGVudFN0YXRlLAogCUJnV29ya2VyU3RhcnRfUmVjb3ZlcnlGaW5pc2hl ZCwKKwlCZ1dvcmtlclN0YXJ0X0NvbnNpc3RlbnRTdGF0ZV9Ib3RTdGFuZGJ5LAogfSBCZ1dvcmtl clN0YXJ0VGltZTsKIAogI2RlZmluZSBCR1dfREVGQVVMVF9SRVNUQVJUX0lOVEVSVkFMCTYwCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKaW5kZXggYTE4ZDc5ZDFiMi4uYmJl MDQyMjZkYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtl ci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaApAQCAtMjIs NiArMjIsNyBAQCBleHRlcm4gdm9pZCBUYWJsZXN5bmNXb3JrZXJNYWluKERhdHVtIG1haW5fYXJn KTsKIAogZXh0ZXJuIGJvb2wgSXNMb2dpY2FsV29ya2VyKHZvaWQpOwogZXh0ZXJuIGJvb2wgSXNM b2dpY2FsUGFyYWxsZWxBcHBseVdvcmtlcih2b2lkKTsKK2V4dGVybiBib29sIElzTG9naWNhbFNs b3RTeW5jV29ya2VyKHZvaWQpOwogCiBleHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbEFwcGx5TWVz c2FnZUludGVycnVwdCh2b2lkKTsKIGV4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNz YWdlcyh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRleCA1ODVjY2JiNTA0Li5mODFiZWY5 ZTQyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKKysrIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBAIC01Miw2ICs1MiwxNCBAQCB0eXBlZGVmIGVu dW0gUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UKIAlSU19JTlZBTF9XQUxfTEVWRUws CiB9IFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlOwogCisvKgorICogVGhlIHBvc3Np YmxlIHZhbHVlcyBmb3IgJ2NvbmZsaWN0X3JlYXNvbicgcmV0dXJuZWQgaW4KKyAqIHBnX2dldF9y ZXBsaWNhdGlvbl9zbG90cy4KKyAqLworI2RlZmluZSBTTE9UX0lOVkFMX1dBTF9SRU1PVkVEX1RF WFQgIndhbF9yZW1vdmVkIgorI2RlZmluZSBTTE9UX0lOVkFMX0hPUklaT05fVEVYVCAgICAgInJv d3NfcmVtb3ZlZCIKKyNkZWZpbmUgU0xPVF9JTlZBTF9XQUxfTEVWRUxfVEVYVCAgICJ3YWxfbGV2 ZWxfaW5zdWZmaWNpZW50IgorCiAvKgogICogT24tRGlzayBkYXRhIG9mIGEgcmVwbGljYXRpb24g c2xvdCwgcHJlc2VydmVkIGFjcm9zcyByZXN0YXJ0cy4KICAqLwpAQCAtMTEyLDYgKzEyMCwxMSBA QCB0eXBlZGVmIHN0cnVjdCBSZXBsaWNhdGlvblNsb3RQZXJzaXN0ZW50RGF0YQogCS8qIHBsdWdp biBuYW1lICovCiAJTmFtZURhdGEJcGx1Z2luOwogCisJLyoKKwkgKiBXYXMgdGhpcyBzbG90IHN5 bmNocm9uaXplZCBmcm9tIHRoZSBwcmltYXJ5IHNlcnZlcj8KKwkgKi8KKwljaGFyCQlzeW5jZWQ7 CisKIAkvKgogCSAqIElzIHRoaXMgYSBmYWlsb3ZlciBzbG90IChzeW5jIGNhbmRpZGF0ZSBmb3Ig cGh5c2ljYWwgc3RhbmRieXMpPyBPbmx5CiAJICogcmVsZXZhbnQgZm9yIGxvZ2ljYWwgc2xvdHMg b24gdGhlIHByaW1hcnkgc2VydmVyLgpAQCAtMjI0LDkgKzIzNywxMSBAQCBleHRlcm4gdm9pZCBS ZXBsaWNhdGlvblNsb3RzU2htZW1Jbml0KHZvaWQpOwogLyogbWFuYWdlbWVudCBvZiBpbmRpdmlk dWFsIHNsb3RzICovCiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RDcmVhdGUoY29uc3QgY2hh ciAqbmFtZSwgYm9vbCBkYl9zcGVjaWZpYywKIAkJCQkJCQkJICBSZXBsaWNhdGlvblNsb3RQZXJz aXN0ZW5jeSBwZXJzaXN0ZW5jeSwKLQkJCQkJCQkJICBib29sIHR3b19waGFzZSwgYm9vbCBmYWls b3Zlcik7CisJCQkJCQkJCSAgYm9vbCB0d29fcGhhc2UsIGJvb2wgZmFpbG92ZXIsCisJCQkJCQkJ CSAgYm9vbCBzeW5jZWQpOwogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90UGVyc2lzdCh2b2lk KTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdERyb3AoY29uc3QgY2hhciAqbmFtZSwgYm9v bCBub3dhaXQpOworZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90RHJvcEFjcXVpcmVkKHZvaWQp OwogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90QWx0ZXIoY29uc3QgY2hhciAqbmFtZSwgYm9v bCBmYWlsb3Zlcik7CiAKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoY29uc3Qg Y2hhciAqbmFtZSwgYm9vbCBub3dhaXQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd2FscmVjZWl2ZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVy LmgKaW5kZXggZjU2NmE5OWJhMS4uNWU5NDJjYjRmYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 YWxyZWNlaXZlci5oCkBAIC0yNzksNiArMjc5LDIxIEBAIHR5cGVkZWYgdm9pZCAoKndhbHJjdl9n ZXRfc2VuZGVyaW5mb19mbikgKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwKIHR5cGVkZWYgY2hhciAq KCp3YWxyY3ZfaWRlbnRpZnlfc3lzdGVtX2ZuKSAoV2FsUmVjZWl2ZXJDb25uICpjb25uLAogCQkJ CQkJCQkJCQlUaW1lTGluZUlEICpwcmltYXJ5X3RsaSk7CiAKKy8qCisgKiB3YWxyY3ZfZ2V0X2Ri aW5mb19mb3JfZmFpbG92ZXJfc2xvdHNfZm4KKyAqCisgKiBSdW4gTElTVF9EQklEX0ZPUl9GQUlM T1ZFUl9TTE9UUyBvbiBwcmltYXJ5IHNlcnZlciB0byBnZXQgdGhlCisgKiBsaXN0IG9mIHVuaXF1 ZSBEQklEcyBmb3IgZmFpbG92ZXIgbG9naWNhbCBzbG90cworICovCit0eXBlZGVmIExpc3QgKigq d2FscmN2X2dldF9kYmluZm9fZm9yX2ZhaWxvdmVyX3Nsb3RzX2ZuKSAoV2FsUmVjZWl2ZXJDb25u ICpjb25uKTsKKworLyoKKyAqIHdhbHJjdl9nZXRfZGJuYW1lX2Zyb21fY29ubmluZm9fZm4KKyAq CisgKiBSZXR1cm5zIHRoZSBkYmlkIGZyb20gdGhlIHByaW1hcnlfY29ubmluZm8KKyAqLwordHlw ZWRlZiBjaGFyICooKndhbHJjdl9nZXRfZGJuYW1lX2Zyb21fY29ubmluZm9fZm4pIChjb25zdCBj aGFyICpjb25uaW5mbyk7CisKIC8qCiAgKiB3YWxyY3Zfc2VydmVyX3ZlcnNpb25fZm4KICAqCkBA IC00MDMsNiArNDE4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV2FsUmVjZWl2ZXJGdW5jdGlvbnNUeXBl CiAJd2FscmN2X2dldF9jb25uaW5mb19mbiB3YWxyY3ZfZ2V0X2Nvbm5pbmZvOwogCXdhbHJjdl9n ZXRfc2VuZGVyaW5mb19mbiB3YWxyY3ZfZ2V0X3NlbmRlcmluZm87CiAJd2FscmN2X2lkZW50aWZ5 X3N5c3RlbV9mbiB3YWxyY3ZfaWRlbnRpZnlfc3lzdGVtOworCXdhbHJjdl9nZXRfZGJuYW1lX2Zy b21fY29ubmluZm9fZm4gd2FscmN2X2dldF9kYm5hbWVfZnJvbV9jb25uaW5mbzsKIAl3YWxyY3Zf c2VydmVyX3ZlcnNpb25fZm4gd2FscmN2X3NlcnZlcl92ZXJzaW9uOwogCXdhbHJjdl9yZWFkdGlt ZWxpbmVoaXN0b3J5ZmlsZV9mbiB3YWxyY3ZfcmVhZHRpbWVsaW5laGlzdG9yeWZpbGU7CiAJd2Fs cmN2X3N0YXJ0c3RyZWFtaW5nX2ZuIHdhbHJjdl9zdGFydHN0cmVhbWluZzsKQEAgLTQyOCw2ICs0 NDQsOCBAQCBleHRlcm4gUEdETExJTVBPUlQgV2FsUmVjZWl2ZXJGdW5jdGlvbnNUeXBlICpXYWxS ZWNlaXZlckZ1bmN0aW9uczsKIAlXYWxSZWNlaXZlckZ1bmN0aW9ucy0+d2FscmN2X2dldF9zZW5k ZXJpbmZvKGNvbm4sIHNlbmRlcl9ob3N0LCBzZW5kZXJfcG9ydCkKICNkZWZpbmUgd2FscmN2X2lk ZW50aWZ5X3N5c3RlbShjb25uLCBwcmltYXJ5X3RsaSkgXAogCVdhbFJlY2VpdmVyRnVuY3Rpb25z LT53YWxyY3ZfaWRlbnRpZnlfc3lzdGVtKGNvbm4sIHByaW1hcnlfdGxpKQorI2RlZmluZSB3YWxy Y3ZfZ2V0X2RibmFtZV9mcm9tX2Nvbm5pbmZvKGNvbm5pbmZvKSBcCisJV2FsUmVjZWl2ZXJGdW5j dGlvbnMtPndhbHJjdl9nZXRfZGJuYW1lX2Zyb21fY29ubmluZm8oY29ubmluZm8pCiAjZGVmaW5l IHdhbHJjdl9zZXJ2ZXJfdmVyc2lvbihjb25uKSBcCiAJV2FsUmVjZWl2ZXJGdW5jdGlvbnMtPndh bHJjdl9zZXJ2ZXJfdmVyc2lvbihjb25uKQogI2RlZmluZSB3YWxyY3ZfcmVhZHRpbWVsaW5laGlz dG9yeWZpbGUoY29ubiwgdGxpLCBmaWxlbmFtZSwgY29udGVudCwgc2l6ZSkgXApAQCAtNDg1LDYg KzUwMyw3IEBAIGV4dGVybiB2b2lkIFJlcXVlc3RYTG9nU3RyZWFtaW5nKFRpbWVMaW5lSUQgdGxp LCBYTG9nUmVjUHRyIHJlY3B0ciwKIAkJCQkJCQkJIGJvb2wgY3JlYXRlX3RlbXBfc2xvdCk7CiBl eHRlcm4gWExvZ1JlY1B0ciBHZXRXYWxSY3ZGbHVzaFJlY1B0cihYTG9nUmVjUHRyICpsYXRlc3RD aHVua1N0YXJ0LCBUaW1lTGluZUlEICpyZWNlaXZlVExJKTsKIGV4dGVybiBYTG9nUmVjUHRyIEdl dFdhbFJjdldyaXRlUmVjUHRyKHZvaWQpOworZXh0ZXJuIFhMb2dSZWNQdHIgR2V0V2FsUmN2TGF0 ZXN0V2FsRW5kKHZvaWQpOwogZXh0ZXJuIGludAlHZXRSZXBsaWNhdGlvbkFwcGx5RGVsYXkodm9p ZCk7CiBleHRlcm4gaW50CUdldFJlcGxpY2F0aW9uVHJhbnNmZXJMYXRlbmN5KHZvaWQpOwogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDUxNWFlZmQ1MTku LjIxNjc3MjA5NzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5o CkBAIC0yMzcsNiArMjM3LDExIEBAIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGluX3JlbW90ZV90 cmFuc2FjdGlvbjsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgSW5pdGlhbGl6aW5nQXBwbHlX b3JrZXI7CiAKKy8qIFNsb3Qgc3luYyB3b3JrZXIgb2JqZWN0cyAqLworZXh0ZXJuIFBHRExMSU1Q T1JUIGNoYXIgKlByaW1hcnlDb25uSW5mbzsKK2V4dGVybiBQR0RMTElNUE9SVCBjaGFyICpQcmlt YXJ5U2xvdE5hbWU7CitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBlbmFibGVfc3luY3Nsb3Q7CisK IGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCk7CiBleHRlcm4g TG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCBy ZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25seV9ydW5uaW5nKTsKQEAgLTMyNSw2ICszMzAsMTEg QEAgZXh0ZXJuIHZvaWQgcGFfZGVjcl9hbmRfd2FpdF9zdHJlYW1fYmxvY2sodm9pZCk7CiBleHRl cm4gdm9pZCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCiAJ CQkJCQkgICBYTG9nUmVjUHRyIHJlbW90ZV9sc24pOwogCitleHRlcm4gdm9pZCBSZXBsU2xvdFN5 bmNXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKK2V4dGVybiB2b2lkIFNsb3RTeW5jV29ya2Vy UmVnaXN0ZXIodm9pZCk7CitleHRlcm4gdm9pZCBTaHV0RG93blNsb3RTeW5jKHZvaWQpOworZXh0 ZXJuIHZvaWQgU2xvdFN5bmNXb3JrZXJTaG1lbUluaXQodm9pZCk7CisKICNkZWZpbmUgaXNQYXJh bGxlbEFwcGx5V29ya2VyKHdvcmtlcikgKCh3b3JrZXIpLT5pbl91c2UgJiYgXAogCQkJCQkJCQkJ ICAgKHdvcmtlciktPnR5cGUgPT0gV09SS0VSVFlQRV9QQVJBTExFTF9BUFBMWSkKICNkZWZpbmUg aXNUYWJsZXN5bmNXb3JrZXIod29ya2VyKSAoKHdvcmtlciktPmluX3VzZSAmJiBcCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5bmMu cGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5bmMu cGwKaW5kZXggNjQ2MjkzYzM5ZS4uYzE3YWJmYjQwYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVj b3ZlcnkvdC8wNTBfc3RhbmRieV9mYWlsb3Zlcl9zbG90c19zeW5jLnBsCisrKyBiL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDUwX3N0YW5kYnlfZmFpbG92ZXJfc2xvdHNfc3luYy5wbApAQCAtODQsNiAr ODQsMTcwIEBAIGlzKCAkcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJInQiLAogCSdsb2dpY2FsIHNs b3QgaGFzIGZhaWxvdmVyIHRydWUgb24gdGhlIHB1Ymxpc2hlcicpOwogCi0kc3Vic2NyaWJlcjEt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc19teXN1YjEi KTsKKyRzdWJzY3JpYmVyMS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc19teXN1YjEgRU5BQkxFIik7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgbG9naWNhbCBmYWlsb3ZlciBzbG90cyBv biB0aGUgc3RhbmRieQorIyBDb25maWd1cmUgc3RhbmRieTEgdG8gcmVwbGljYXRlIGFuZCBzeW5j aHJvbml6ZSBsb2dpY2FsIHNsb3RzIGNvbmZpZ3VyZWQKKyMgZm9yIGZhaWxvdmVyIG9uIHRoZSBw cmltYXJ5CisjCisjICAgICAgICAgICAgICBmYWlsb3ZlciBzbG90IGxzdWIxX3Nsb3QtPnwgLS0t LT4gc3Vic2NyaWJlcjEgKGNvbm5lY3RlZCB2aWEgbG9naWNhbCByZXBsaWNhdGlvbikKKyMgcHJp bWFyeSAtLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorIyAgICAgICAgICAgICAgcGh5 c2ljYWwgc2xvdCBzYjFfc2xvdC0tLT58IC0tLS0+IHN0YW5kYnkxIChjb25uZWN0ZWQgdmlhIHN0 cmVhbWluZyByZXBsaWNhdGlvbikKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgbHN1YjFfc2xvdChzeW5jZWRfc2xvdCkKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK215ICRwcmltYXJ5 ID0gJHB1Ymxpc2hlcjsKK215ICRiYWNrdXBfbmFtZSA9ICdiYWNrdXAnOworJHByaW1hcnktPmJh Y2t1cCgkYmFja3VwX25hbWUpOworCisjIENyZWF0ZSBhIHN0YW5kYnkKK215ICRzdGFuZGJ5MSA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieTEnKTsKKyRzdGFuZGJ5MS0+ aW5pdF9mcm9tX2JhY2t1cCgKKwkkcHJpbWFyeSwgJGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1p bmcgPT4gMSwKKwloYXNfcmVzdG9yaW5nID0+IDEpOworCitteSAkY29ubnN0cl8xID0gJHByaW1h cnktPmNvbm5zdHI7Ciskc3RhbmRieTEtPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYn LCBxcSgKK2VuYWJsZV9zeW5jc2xvdCA9IHRydWUKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24K K3ByaW1hcnlfc2xvdF9uYW1lID0gJ3NiMV9zbG90JworcHJpbWFyeV9jb25uaW5mbyA9ICckY29u bnN0cl8xIGRibmFtZT1wb3N0Z3JlcycKKykpOworCiskcHJpbWFyeS0+cHNxbCgncG9zdGdyZXMn LAorCXF7U0VMRUNUIHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBsaWNhdGlvbl9zbG90KCdzYjFfc2xv dCcpO30pOworCitteSAkc3RhbmRieTFfY29ubmluZm8gPSAkc3RhbmRieTEtPmNvbm5zdHIgLiAn IGRibmFtZT1wb3N0Z3Jlcyc7CitteSAkb2Zmc2V0ID0gLXMgJHN0YW5kYnkxLT5sb2dmaWxlOwor CisjIFN0YXJ0IHRoZSBzdGFuZGJ5IHNvIHRoYXQgc2xvdCBzeW5jaW5nIGNhbiBiZWdpbgorJHN0 YW5kYnkxLT5zdGFydDsKKworIyBHZW5lcmF0ZSBhIGxvZyB0byB0cmlnZ2VyIHRoZSB3YWxzZW5k ZXIgdG8gc2VuZCBtZXNzYWdlcyB0byB0aGUgd2FscmVjZWl2ZXIKKyMgd2hpY2ggd2lsbCB1cGRh dGUgV2FsUmN2LT5sYXRlc3RXYWxFbmQgdG8gYSB2YWxpZCBudW1iZXIuCiskcHJpbWFyeS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfbG9nX3N0YW5kYnlfc25hcHNob3QoKTsiKTsK KworIyBXYWl0IGZvciB0aGUgc3RhbmRieSB0byBmaW5pc2ggc3luYworJHN0YW5kYnkxLT53YWl0 X2Zvcl9sb2coCisJcXIvTE9HOiAoIFtBLVowLTldKzopPyBuZXdseSBsb2NhbGx5IGNyZWF0ZWQg c2xvdCBcImxzdWIxX3Nsb3RcIiBpcyBzeW5jLXJlYWR5IG5vdy8sCisJJG9mZnNldCk7CisKKyMg Q29uZmlybSB0aGF0IHRoZSBsb2dpY2FsIGZhaWxvdmVyIHNsb3QgaXMgY3JlYXRlZCBvbiB0aGUg c3RhbmRieSBhbmQgaXMKKyMgZmxhZ2dlZCBhcyAnc3luY2VkJworaXMoJHN0YW5kYnkxLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBmYWlsb3Zlciwgc3luY2VkIEZST00gcGdfcmVw bGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ2xzdWIxX3Nsb3QnO30pLAorCSJ0fHQi LAorCSdsb2dpY2FsIHNsb3QgaGFzIGZhaWxvdmVyIGFzIHRydWUgYW5kIHN5bmNlZCBhcyB0cnVl IG9uIHN0YW5kYnknKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyMgVGVzdCB0byBjb25maXJtIHRoYXQgcmVzdGFydF9sc24gYW5kIGNvbmZp cm1lZF9mbHVzaF9sc24gb2YgdGhlIGxvZ2ljYWwgc2xvdAorIyBvbiB0aGUgcHJpbWFyeSBpcyBz eW5jZWQgdG8gdGhlIHN0YW5kYnkKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisKKyMgSW5zZXJ0IGRhdGEgb24gdGhlIHByaW1hcnkKKyRwcmltYXJ5 LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisJQ1JFQVRFIFRBQkxFIHRhYl9pbnQgKGEg aW50IFBSSU1BUlkgS0VZKTsKKwlJTlNFUlQgSU5UTyB0YWJfaW50IFNFTEVDVCBnZW5lcmF0ZV9z ZXJpZXMoMSwgMTApOworXSk7CisKKyMgU3Vic2NyaWJlIHRvIHRoZSBuZXcgdGFibGUgZGF0YSBh bmQgd2FpdCBmb3IgaXQgdG8gYXJyaXZlCiskc3Vic2NyaWJlcjEtPnNhZmVfcHNxbCgKKwkncG9z dGdyZXMnLCBxcVsKKwlDUkVBVEUgVEFCTEUgdGFiX2ludCAoYSBpbnQgUFJJTUFSWSBLRVkpOwor CUFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX215c3ViMSBSRUZSRVNIIFBVQkxJQ0FUSU9OOwor XSk7CisKKyRzdWJzY3JpYmVyMS0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmM7CisKKyMgRG8g bm90IGFsbG93IGFueSBmdXJ0aGVyIGFkdmFuY2VtZW50IG9mIHRoZSByZXN0YXJ0X2xzbiBhbmQK KyMgY29uZmlybWVkX2ZsdXNoX2xzbiBmb3IgdGhlIGxzdWIxX3Nsb3QuCiskc3Vic2NyaWJlcjEt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfbXlzdWIx IERJU0FCTEUiKTsKKworIyBXYWl0IGZvciB0aGUgcmVwbGljYXRpb24gc2xvdCB0byBiZWNvbWUg aW5hY3RpdmUgb24gdGhlIHB1Ymxpc2hlcgorJHByaW1hcnktPnBvbGxfcXVlcnlfdW50aWwoCisJ J3Bvc3RncmVzJywKKwkiU0VMRUNUIENPVU5UKCopIEZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNh dGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnbHN1YjFfc2xvdCcgQU5EIGFjdGl2ZT0nZici LAorCTEpOworCisjIEdldCB0aGUgcmVzdGFydF9sc24gZm9yIHRoZSBsb2dpY2FsIHNsb3QgbHN1 YjFfc2xvdCBvbiB0aGUgcHJpbWFyeQorbXkgJHByaW1hcnlfcmVzdGFydF9sc24gPSAkcHJpbWFy eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCByZXN0YXJ0X2xzbiBmcm9tIHBnX3Jl cGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdsc3ViMV9zbG90JzsiKTsKKworIyBH ZXQgdGhlIGNvbmZpcm1lZF9mbHVzaF9sc24gZm9yIHRoZSBsb2dpY2FsIHNsb3QgbHN1YjFfc2xv dCBvbiB0aGUgcHJpbWFyeQorbXkgJHByaW1hcnlfZmx1c2hfbHNuID0gJHByaW1hcnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY29uZmlybWVkX2ZsdXNoX2xzbiBmcm9tIHBnX3Jl cGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdsc3ViMV9zbG90JzsiKTsKKworIyBD b25maXJtIHRoYXQgcmVzdGFydF9sc24gYW5kIG9mIGNvbmZpcm1lZF9mbHVzaF9sc24gbHN1YjFf c2xvdCBzbG90IGFyZSBzeW5jZWQKKyMgdG8gdGhlIHN0YW5kYnkKK29rKCAkc3RhbmRieTEtPnBv bGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgJyRwcmltYXJ5X3Jlc3Rh cnRfbHNuJyA9IHJlc3RhcnRfbHNuIEFORCAnJHByaW1hcnlfZmx1c2hfbHNuJyA9IGNvbmZpcm1l ZF9mbHVzaF9sc24gZnJvbSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAn bHN1YjFfc2xvdCc7IiksCisJJ3Jlc3RhcnRfbHNuIGFuZCBjb25maXJtZWRfZmx1c2hfbHNuIG9m IHNsb3QgbHN1YjFfc2xvdCBzeW5jZWQgdG8gc3RhbmRieScpOworCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHRoYXQgYSBzeW5jaHJv bml6ZWQgc2xvdCBjYW4gbm90IGJlIGRlY29kZWQsIGFsdGVyZWQgb3IgZHJvcHBlZCBieSB0aGUg dXNlcgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KworIyBEaXNhYmxlIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHRlbXBvcmFyaWx5IHRvIHN0b3Agc2xv dCBzeW5jIHdvcmtlciBvdGhlcndpc2UKKyMgdGhlIGNvbmNlcm5lZCB0ZXN0aW5nIHNjZW5hcmlv cyBoZXJlIG1heSBiZSBpbnRlcnJ1cHRlZCBieSBkaWZmZXJlbnQgZXJyb3I6CisjICdFUlJPUjog IHJlcGxpY2F0aW9uIHNsb3QgaXMgYWN0aXZlIGZvciBQSUQgLi4nCiskc3RhbmRieTEtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAnQUxURVIgU1lTVEVNIFNFVCBob3Rfc3RhbmRieV9mZWVkYmFjayA9 IG9mZjsnKTsKKyRzdGFuZGJ5MS0+cmVzdGFydDsKKworIyBBdHRlbXB0aW5nIHRvIHBlcmZvcm0g bG9naWNhbCBkZWNvZGluZyBvbiBhIHN5bmNlZCBzbG90IHNob3VsZCByZXN1bHQgaW4gYW4gZXJy b3IKK215ICgkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRzdGFuZGJ5MS0+cHNxbCgncG9z dGdyZXMnLAorCSJzZWxlY3QgKiBmcm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnbHN1 YjFfc2xvdCcsTlVMTCxOVUxMKTsiKTsKK29rKCRzdGRlcnIgPX4gL0VSUk9SOiAgY2Fubm90IHVz ZSByZXBsaWNhdGlvbiBzbG90ICJsc3ViMV9zbG90IiBmb3IgbG9naWNhbCBkZWNvZGluZy8sCisJ ImxvZ2ljYWwgZGVjb2RpbmcgaXMgbm90IGFsbG93ZWQgb24gc3luY2VkIHNsb3QiKTsKKworIyBB dHRlbXB0aW5nIHRvIGFsdGVyIGEgc3luY2VkIHNsb3Qgc2hvdWxkIHJlc3VsdCBpbiBhbiBlcnJv cgorKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJHN0YW5kYnkxLT5wc3FsKAorICAgICdw b3N0Z3JlcycsCisgICAgcXFbQUxURVJfUkVQTElDQVRJT05fU0xPVCBsc3ViMV9zbG90IChmYWls b3Zlcik7XSwKKyAgICByZXBsaWNhdGlvbiA9PiAnZGF0YWJhc2UnKTsKK29rKCRzdGRlcnIgPX4g L0VSUk9SOiAgY2Fubm90IGFsdGVyIHJlcGxpY2F0aW9uIHNsb3QgImxzdWIxX3Nsb3QiLywKKwki c3luY2VkIHNsb3Qgb24gc3RhbmRieSBjYW5ub3QgYmUgYWx0ZXJlZCIpOworCisjIEF0dGVtcHRp bmcgdG8gZHJvcCBhIHN5bmNlZCBzbG90IHNob3VsZCByZXN1bHQgaW4gYW4gZXJyb3IKKygkcmVz dWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRzdGFuZGJ5MS0+cHNxbCgncG9zdGdyZXMnLAorCSJT RUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdsc3ViMV9zbG90Jyk7Iik7Citvaygkc3Rk ZXJyID1+IC9FUlJPUjogIGNhbm5vdCBkcm9wIHJlcGxpY2F0aW9uIHNsb3QgImxzdWIxX3Nsb3Qi LywKKwkic3luY2VkIHNsb3Qgb24gc3RhbmRieSBjYW5ub3QgYmUgZHJvcHBlZCIpOworCisjIEVu YWJsZSBob3Rfc3RhbmRieV9mZWVkYmFjayBhbmQgcmVzdGFydCBzdGFuZGJ5Ciskc3RhbmRieTEt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQUxURVIgU1lTVEVNIFNFVCBob3Rfc3RhbmRieV9mZWVk YmFjayA9IG9uOycpOworJHN0YW5kYnkxLT5yZXN0YXJ0OworCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBQcm9tb3RlIHRoZSBzdGFuZGJ5MSB0 byBwcmltYXJ5LiBDb25maXJtIHRoYXQ6CisjIGEpIHRoZSBzbG90ICdsc3ViMV9zbG90JyBpcyBy ZXRhaW5lZCBvbiB0aGUgbmV3IHByaW1hcnkKKyMgYikgbG9naWNhbCByZXBsaWNhdGlvbiBmb3Ig cmVncmVzc19teXN1YjEgaXMgcmVzdW1lZCBzdWNjZXNzZnVsbHkgYWZ0ZXIgZmFpbG92ZXIKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiskc3RhbmRi eTEtPnByb21vdGU7CisKKyMgVXBkYXRlIHN1YnNjcmlwdGlvbiB3aXRoIHRoZSBuZXcgcHJpbWFy eSdzIGNvbm5lY3Rpb24gaW5mbworJHN1YnNjcmliZXIxLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfbXlzdWIxIENPTk5FQ1RJT04gJyRzdGFuZGJ5 MV9jb25uaW5mbyc7CisJIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX215c3ViMSBFTkFCTEU7 ICIpOworCisjIENvbmZpcm0gdGhlIHN5bmNlZCBzbG90ICdsc3ViMV9zbG90JyBpcyByZXRhaW5l ZCBvbiB0aGUgbmV3IHByaW1hcnkKK2lzKCRzdGFuZGJ5MS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJcXtTRUxFQ1Qgc2xvdF9uYW1lIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xv dF9uYW1lID0gJ2xzdWIxX3Nsb3QnO30pLAorCSdsc3ViMV9zbG90JywKKwknc3luY2VkIHNsb3Qg cmV0YWluZWQgb24gdGhlIG5ldyBwcmltYXJ5Jyk7CisKKyMgSW5zZXJ0IGRhdGEgb24gdGhlIG5l dyBwcmltYXJ5Ciskc3RhbmRieTEtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5U TyB0YWJfaW50IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMTEsIDIwKTsiKTsKKyRzdGFuZGJ5MS0+ d2FpdF9mb3JfY2F0Y2h1cCgncmVncmVzc19teXN1YjEnKTsKKworIyBDb25maXJtIHRoYXQgZGF0 YSBpbiB0YWJfaW50IHJlcGxpY2F0ZWQgb24gdGhlIHN1YnNjcmliZXIKK2lzKCAkc3Vic2NyaWJl cjEtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHRhYl9pbnQ7 fSksCisJIjIwIiwKKwknZGF0YSByZXBsaWNhdGVkIGZyb20gdGhlIG5ldyBwcmltYXJ5Jyk7CiAK IGRvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9y dWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCA1Nzg4 NGQzZmVjLi5jYjQzYmExYzNmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAt MTQ3NCw4ICsxNDc0LDkgQEAgcGdfcmVwbGljYXRpb25fc2xvdHN8IFNFTEVDVCBsLnNsb3RfbmFt ZSwKICAgICBsLnNhZmVfd2FsX3NpemUsCiAgICAgbC50d29fcGhhc2UsCiAgICAgbC5jb25mbGlj dF9yZWFzb24sCi0gICAgbC5mYWlsb3ZlcgotICAgRlJPTSAocGdfZ2V0X3JlcGxpY2F0aW9uX3Ns b3RzKCkgbChzbG90X25hbWUsIHBsdWdpbiwgc2xvdF90eXBlLCBkYXRvaWQsIHRlbXBvcmFyeSwg YWN0aXZlLCBhY3RpdmVfcGlkLCB4bWluLCBjYXRhbG9nX3htaW4sIHJlc3RhcnRfbHNuLCBjb25m aXJtZWRfZmx1c2hfbHNuLCB3YWxfc3RhdHVzLCBzYWZlX3dhbF9zaXplLCB0d29fcGhhc2UsIGNv bmZsaWN0X3JlYXNvbiwgZmFpbG92ZXIpCisgICAgbC5mYWlsb3ZlciwKKyAgICBsLnN5bmNlZAor ICAgRlJPTSAocGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKCkgbChzbG90X25hbWUsIHBsdWdpbiwg c2xvdF90eXBlLCBkYXRvaWQsIHRlbXBvcmFyeSwgYWN0aXZlLCBhY3RpdmVfcGlkLCB4bWluLCBj YXRhbG9nX3htaW4sIHJlc3RhcnRfbHNuLCBjb25maXJtZWRfZmx1c2hfbHNuLCB3YWxfc3RhdHVz LCBzYWZlX3dhbF9zaXplLCB0d29fcGhhc2UsIGNvbmZsaWN0X3JlYXNvbiwgZmFpbG92ZXIsIHN5 bmNlZCkKICAgICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNlIGQgT04gKChsLmRhdG9pZCA9IGQub2lk KSkpOwogcGdfcm9sZXN8IFNFTEVDVCBwZ19hdXRoaWQucm9sbmFtZSwKICAgICBwZ19hdXRoaWQu cm9sc3VwZXIsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdz Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CmluZGV4IDI3MTMx M2ViZjguLmFhYzgzNzU1ZGUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c3lzdmlld3Mub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0 CkBAIC0xMzIsOCArMTMyLDkgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5n cyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9zZWxmX2pvaW5fcmVtb3ZhbCAg ICAgICB8IG9uCiAgZW5hYmxlX3NlcXNjYW4gICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVf c29ydCAgICAgICAgICAgICAgICAgICAgfCBvbgorIGVuYWJsZV9zeW5jc2xvdCAgICAgICAgICAg ICAgICB8IG9mZgogIGVuYWJsZV90aWRzY2FuICAgICAgICAgICAgICAgICB8IG9uCi0oMjIgcm93 cykKKygyMyByb3dzKQogCiAtLSBUaGVyZSBhcmUgYWx3YXlzIHdhaXQgZXZlbnQgZGVzY3JpcHRp b25zIGZvciB2YXJpb3VzIHR5cGVzLgogc2VsZWN0IHR5cGUsIGNvdW50KCopID4gMCBhcyBvayBG Uk9NIHBnX3dhaXRfZXZlbnRzCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDNkMjU1OWZl Y2EuLjljODNjMzIwYzggMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yMzIxLDYgKzIz MjEsNyBAQCBSZWxvY2F0aW9uQnVmZmVySW5mbwogUmVscHRyRnJlZVBhZ2VCdHJlZQogUmVscHRy RnJlZVBhZ2VNYW5hZ2VyCiBSZWxwdHJGcmVlUGFnZVNwYW5MZWFkZXIKK1JlbW90ZVNsb3QKIFJl bmFtZVN0bXQKIFJlb3BlblB0clR5cGUKIFJlb3JkZXJCdWZmZXIKQEAgLTI1ODEsNiArMjU4Miw3 IEBAIFNsYWJCbG9jawogU2xhYkNvbnRleHQKIFNsYWJTbG90CiBTbG90TnVtYmVyCitTbG90U3lu Y1dvcmtlckN0eFN0cnVjdAogU2xydUN0bAogU2xydUN0bERhdGEKIFNscnVFcnJvckNhdXNlCi0t IAoyLjM0LjEKCg== --00000000000006ae0b060f0ed540 Content-Type: application/octet-stream; name="v62-0001-Enable-setting-failover-property-for-a-slot-thro.patch" Content-Disposition: attachment; filename="v62-0001-Enable-setting-failover-property-for-a-slot-thro.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrgap7ia0 RnJvbSA3ZjRiZjM1M2U3YjY4N2UxZDI0MDczYjIyMDFiYjAxY2FjNmIxMDViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFRodSwgNCBKYW4gMjAyNCAwOToxNToyNiArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjYy IDEvNl0gRW5hYmxlIHNldHRpbmcgZmFpbG92ZXIgcHJvcGVydHkgZm9yIGEgc2xvdCB0aHJvdWdo CiBTUUwgQVBJIGFuZCBzdWJzY3JpcHRpb24gY29tbWFuZHMKClRoaXMgY29tbWl0IGFkZHMgdGhl IGZhaWxvdmVyIHByb3BlcnR5IHRvIHRoZSByZXBsaWNhdGlvbiBzbG90LiBUaGUKZmFpbG92ZXIg cHJvcGVydHkgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHNsb3Qgd2lsbCBiZSBzeW5jZWQgdG8gdGhl IHN0YW5kYnkKc2VydmVycywgZW5hYmxpbmcgdGhlIHJlc3VtcHRpb24gb2YgY29ycmVzcG9uZGlu ZyBsb2dpY2FsIHJlcGxpY2F0aW9uCmFmdGVyIGZhaWxvdmVyLiBCdXQgbm90ZSB0aGF0IHRoaXMg Y29tbWl0IGRvZXMgbm90IHlldCBpbmNsdWRlIHRoZQpjYXBhYmlsaXR5IHRvIGFjdHVhbGx5IHN5 bmMgdGhlIHJlcGxpY2F0aW9uIHNsb3Q7IHRoZSBuZXh0IHBhdGNoIHdpbGwKYWRkcmVzcyB0aGF0 LgoKSW4gYWRkaXRpb24sIGEgbmV3IHJlcGxpY2F0aW9uIGNvbW1hbmQgbmFtZWQgQUxURVJfUkVQ TElDQVRJT05fU0xPVCBhbmQgYQpjb3JyZXNwb25kaW5nIHdhbHJlY2VpdmVyIEFQSSBmdW5jdGlv biBuYW1lZCB3YWxyY3ZfYWx0ZXJfc2xvdCBoYXZlIGJlZW4KaW1wbGVtZW50ZWQuIFRoZXNlIGFk ZGl0aW9ucyBwcm92aWRlIHN1YnNjcmliZXJzIG9yIHVzZXJzIHRoZSBhYmlsaXR5IHRvCm1vZGlm eSB0aGUgZmFpbG92ZXIgcHJvcGVydHkgb2YgYSByZXBsaWNhdGlvbiBzbG90IG9uIHRoZSBwdWJs aXNoZXIuCgpNb3Jlb3ZlciwgYSBuZXcgc3Vic2NyaXB0aW9uIG9wdGlvbiBjYWxsZWQgJ2ZhaWxv dmVyJyBoYXMgYmVlbiBhZGRlZCwKYWxsb3dpbmcgdXNlcnMgdG8gc2V0IGl0IHdoZW4gY3JlYXRp bmcgb3IgYWx0ZXJpbmcgYSBzdWJzY3JpcHRpb24uIEFsc28sCmEgbmV3IHBhcmFtZXRlciAnZmFp bG92ZXInIGlzIGFkZGVkIHRvIHRoZQpwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90 IGZ1bmN0aW9uLgoKVGhlIHZhbHVlIG9mIHRoZSAnZmFpbG92ZXInIGZsYWcgaXMgZGlzcGxheWVk IGFzIHBhcnQgb2YKcGdfcmVwbGljYXRpb25fc2xvdHMgdmlldy4KLS0tCiBjb250cmliL3Rlc3Rf ZGVjb2RpbmcvZXhwZWN0ZWQvc2xvdC5vdXQgICAgICAgfCAgNTggKysrKysrCiBjb250cmliL3Rl c3RfZGVjb2Rpbmcvc3FsL3Nsb3Quc3FsICAgICAgICAgICAgfCAgMTMgKysKIGRvYy9zcmMvc2dt bC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAxMSArKwogZG9jL3NyYy9zZ21s L2Z1bmMuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDExICstCiBkb2Mvc3JjL3NnbWwv cHJvdG9jb2wuc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgNTIgKysrKysrCiBkb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sICAgICAgfCAgMTYgKy0KIGRvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8ICAxMiArKwogZG9jL3NyYy9zZ21s L3N5c3RlbS12aWV3cy5zZ21sICAgICAgICAgICAgICAgIHwgIDExICsrCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbCAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFs b2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgIHwgMTA1ICsrKysrKysrKystCiAuLi4vbGlicHF3 YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgICAgICAgfCAgMzggKysrLQogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgIHwgICAxICsKIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8ICAgNyArCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9yZXBsX2dyYW0ueSAgICAgICAgICAgfCAgMjAgKystCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9yZXBsX3NjYW5uZXIubCAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vc2xvdC5jICAgICAgICAgICAgICAgIHwgIDMzICsrKy0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Nsb3RmdW5jcy5jICAgICAgICAgICB8ICAyMiArKy0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgICAgIHwgIDY0ICsrKysrKy0KIHNyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICAxOCArLQogc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcGdfdXBn cmFkZS9pbmZvLmMgICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2Jpbi9wZ191cGdy YWRlL3BnX3VwZ3JhZGUuYyAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmluL3BnX3VwZ3Jh ZGUvcGdfdXBncmFkZS5oICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2Jpbi9wZ191cGdyYWRl L3QvMDAzX2xvZ2ljYWxfc2xvdHMucGwgICAgIHwgICA2ICstCiBzcmMvYmluL3BzcWwvZGVzY3Jp YmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iaW4vcHNxbC90YWItY29t cGxldGUuYyAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgIDE0ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5oICAgICAgICAgfCAgMTEgKysKIHNyYy9pbmNsdWRlL25vZGVzL3JlcGxu b2Rlcy5oICAgICAgICAgICAgICAgICB8ICAxMiArKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v c2xvdC5oICAgICAgICAgICAgICAgIHwgICA5ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 YWxyZWNlaXZlci5oICAgICAgICAgfCAgMTggKy0KIC4uLi90LzA1MF9zdGFuZGJ5X2ZhaWxvdmVy X3Nsb3RzX3N5bmMucGwgICAgICB8ICA4OSArKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3J1bGVzLm91dCAgICAgICAgICAgfCAgIDUgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3Vic2NyaXB0aW9uLm91dCAgICB8IDE2NSArKysrKysrKysrLS0tLS0tLS0KIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwgICAgICAgICB8ICAgOCArCiBzcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDIgKwogMzkgZmlsZXMg Y2hhbmdlZCwgNzQ1IGluc2VydGlvbnMoKyksIDEyNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5 bmMucGwKCmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvc2xvdC5v dXQgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvc2xvdC5vdXQKaW5kZXggNjNhOTk0 MGY3My4uMjYxZDg4ODZkMyAxMDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVj dGVkL3Nsb3Qub3V0CisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9zbG90Lm91 dApAQCAtNDA2LDMgKzQwNiw2MSBAQCBTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdj b3BpZWRfc2xvdDJfbm90ZW1wJyk7CiAgCiAoMSByb3cpCiAKKy0tIFRlc3QgZmFpbG92ZXIgb3B0 aW9uIG9mIHNsb3RzLgorU0VMRUNUICdpbml0JyBGUk9NIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxp Y2F0aW9uX3Nsb3QoJ2ZhaWxvdmVyX3RydWVfc2xvdCcsICd0ZXN0X2RlY29kaW5nJywgZmFsc2Us IGZhbHNlLCB0cnVlKTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBpbml0CisoMSByb3cpCisK K1NFTEVDVCAnaW5pdCcgRlJPTSBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdm YWlsb3Zlcl9mYWxzZV9zbG90JywgJ3Rlc3RfZGVjb2RpbmcnLCBmYWxzZSwgZmFsc2UsIGZhbHNl KTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBpbml0CisoMSByb3cpCisKK1NFTEVDVCAnaW5p dCcgRlJPTSBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdmYWlsb3Zlcl9kZWZh dWx0X3Nsb3QnLCAndGVzdF9kZWNvZGluZycsIGZhbHNlLCBmYWxzZSk7CisgP2NvbHVtbj8gCist LS0tLS0tLS0tCisgaW5pdAorKDEgcm93KQorCitTRUxFQ1QgJ2luaXQnIEZST00gcGdfY3JlYXRl X3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3BoeXNpY2FsX3Nsb3QnKTsKKyA/Y29sdW1uPyAK Ky0tLS0tLS0tLS0KKyBpbml0CisoMSByb3cpCisKK1NFTEVDVCBzbG90X25hbWUsIHNsb3RfdHlw ZSwgZmFpbG92ZXIgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90czsKKyAgICAgICBzbG90X25hbWUg ICAgICAgfCBzbG90X3R5cGUgfCBmYWlsb3ZlciAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBmYWlsb3Zlcl90cnVlX3Nsb3QgICAgfCBsb2dpY2FsICAg fCB0CisgZmFpbG92ZXJfZmFsc2Vfc2xvdCAgIHwgbG9naWNhbCAgIHwgZgorIGZhaWxvdmVyX2Rl ZmF1bHRfc2xvdCB8IGxvZ2ljYWwgICB8IGYKKyBwaHlzaWNhbF9zbG90ICAgICAgICAgfCBwaHlz aWNhbCAgfCBmCisoNCByb3dzKQorCitTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdm YWlsb3Zlcl90cnVlX3Nsb3QnKTsKKyBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgcGdfZHJvcF9yZXBsaWNh dGlvbl9zbG90KCdmYWlsb3Zlcl9mYWxzZV9zbG90Jyk7CisgcGdfZHJvcF9yZXBsaWNhdGlvbl9z bG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHBn X2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnZmFpbG92ZXJfZGVmYXVsdF9zbG90Jyk7CisgcGdfZHJv cF9yZXBsaWNhdGlvbl9zbG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgncGh5c2ljYWxfc2xvdCcpOwor IHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvc2xvdC5z cWwgYi9jb250cmliL3Rlc3RfZGVjb2Rpbmcvc3FsL3Nsb3Quc3FsCmluZGV4IDFhYTI3YzU2Njcu LjQ1YWVhZTdmZDUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvc2xvdC5z cWwKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9zbG90LnNxbApAQCAtMTc2LDMgKzE3 NiwxNiBAQCBPUkRFUiBCWSBvLnNsb3RfbmFtZSwgYy5zbG90X25hbWU7CiBTRUxFQ1QgcGdfZHJv cF9yZXBsaWNhdGlvbl9zbG90KCdvcmlnX3Nsb3QyJyk7CiBTRUxFQ1QgcGdfZHJvcF9yZXBsaWNh dGlvbl9zbG90KCdjb3BpZWRfc2xvdDJfbm9fY2hhbmdlJyk7CiBTRUxFQ1QgcGdfZHJvcF9yZXBs aWNhdGlvbl9zbG90KCdjb3BpZWRfc2xvdDJfbm90ZW1wJyk7CisKKy0tIFRlc3QgZmFpbG92ZXIg b3B0aW9uIG9mIHNsb3RzLgorU0VMRUNUICdpbml0JyBGUk9NIHBnX2NyZWF0ZV9sb2dpY2FsX3Jl cGxpY2F0aW9uX3Nsb3QoJ2ZhaWxvdmVyX3RydWVfc2xvdCcsICd0ZXN0X2RlY29kaW5nJywgZmFs c2UsIGZhbHNlLCB0cnVlKTsKK1NFTEVDVCAnaW5pdCcgRlJPTSBwZ19jcmVhdGVfbG9naWNhbF9y ZXBsaWNhdGlvbl9zbG90KCdmYWlsb3Zlcl9mYWxzZV9zbG90JywgJ3Rlc3RfZGVjb2RpbmcnLCBm YWxzZSwgZmFsc2UsIGZhbHNlKTsKK1NFTEVDVCAnaW5pdCcgRlJPTSBwZ19jcmVhdGVfbG9naWNh bF9yZXBsaWNhdGlvbl9zbG90KCdmYWlsb3Zlcl9kZWZhdWx0X3Nsb3QnLCAndGVzdF9kZWNvZGlu ZycsIGZhbHNlLCBmYWxzZSk7CitTRUxFQ1QgJ2luaXQnIEZST00gcGdfY3JlYXRlX3BoeXNpY2Fs X3JlcGxpY2F0aW9uX3Nsb3QoJ3BoeXNpY2FsX3Nsb3QnKTsKKworU0VMRUNUIHNsb3RfbmFtZSwg c2xvdF90eXBlLCBmYWlsb3ZlciBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzOworCitTRUxFQ1Qg cGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdmYWlsb3Zlcl90cnVlX3Nsb3QnKTsKK1NFTEVDVCBw Z19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ2ZhaWxvdmVyX2ZhbHNlX3Nsb3QnKTsKK1NFTEVDVCBw Z19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ2ZhaWxvdmVyX2RlZmF1bHRfc2xvdCcpOworU0VMRUNU IHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgncGh5c2ljYWxfc2xvdCcpOwpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApp bmRleCBjMTVkODYxZTgyLi5mMjI0MzI3YzAwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNzk5MCw2ICs3 OTkwLDE3IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQm Z3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICA8L3BhcmE+PC9lbnRyeT4K ICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPnN1YmZhaWxvdmVyPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAg IDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIElmIHRydWUsIHRoZSBhc3NvY2lhdGVkIHJl cGxpY2F0aW9uIHNsb3RzIChpLmUuIHRoZSBtYWluIHNsb3QgYW5kIHRoZQorICAgICAgIHRhYmxl IHN5bmMgc2xvdHMpIGluIHRoZSB1cHN0cmVhbSBkYXRhYmFzZSBhcmUgZW5hYmxlZCB0byBiZQor ICAgICAgIHN5bmNocm9uaXplZCB0byB0aGUgcGh5c2ljYWwgc3RhbmRieXMKKyAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9 ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAg ICAgICA8c3RydWN0ZmllbGQ+c3ViY29ubmluZm88L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90 eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9m dW5jLnNnbWwKaW5kZXggMjEwYzdjMGIwMi4uMTU0YzQyNmRmNyAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2Z1bmMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0yNzY1NSw3 ICsyNzY1NSw3IEBAIHBvc3RncmVzPSMgU0VMRUNUICcwLzAnOjpwZ19sc24gKyBwZC5zZWdtZW50 X251bWJlciAqIHBzLnNldHRpbmc6OmludCArIDpvZmZzZXQKICAgICAgICAgPGluZGV4dGVybT4K ICAgICAgICAgIDxwcmltYXJ5PnBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3Q8L3By aW1hcnk+CiAgICAgICAgIDwvaW5kZXh0ZXJtPgotICAgICAgICA8ZnVuY3Rpb24+cGdfY3JlYXRl X2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdDwvZnVuY3Rpb24+ICggPHBhcmFtZXRlcj5zbG90X25h bWU8L3BhcmFtZXRlcj4gPHR5cGU+bmFtZTwvdHlwZT4sIDxwYXJhbWV0ZXI+cGx1Z2luPC9wYXJh bWV0ZXI+IDx0eXBlPm5hbWU8L3R5cGU+IDxvcHRpb25hbD4sIDxwYXJhbWV0ZXI+dGVtcG9yYXJ5 PC9wYXJhbWV0ZXI+IDx0eXBlPmJvb2xlYW48L3R5cGU+LCA8cGFyYW1ldGVyPnR3b3BoYXNlPC9w YXJhbWV0ZXI+IDx0eXBlPmJvb2xlYW48L3R5cGU+IDwvb3B0aW9uYWw+ICkKKyAgICAgICAgPGZ1 bmN0aW9uPnBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3Q8L2Z1bmN0aW9uPiAoIDxw YXJhbWV0ZXI+c2xvdF9uYW1lPC9wYXJhbWV0ZXI+IDx0eXBlPm5hbWU8L3R5cGU+LCA8cGFyYW1l dGVyPnBsdWdpbjwvcGFyYW1ldGVyPiA8dHlwZT5uYW1lPC90eXBlPiA8b3B0aW9uYWw+LCA8cGFy YW1ldGVyPnRlbXBvcmFyeTwvcGFyYW1ldGVyPiA8dHlwZT5ib29sZWFuPC90eXBlPiwgPHBhcmFt ZXRlcj50d29waGFzZTwvcGFyYW1ldGVyPiA8dHlwZT5ib29sZWFuPC90eXBlPiwgPHBhcmFtZXRl cj5mYWlsb3ZlcjwvcGFyYW1ldGVyPiA8dHlwZT5ib29sZWFuPC90eXBlPiA8L29wdGlvbmFsPiAp CiAgICAgICAgIDxyZXR1cm52YWx1ZT5yZWNvcmQ8L3JldHVybnZhbHVlPgogICAgICAgICAoIDxw YXJhbWV0ZXI+c2xvdF9uYW1lPC9wYXJhbWV0ZXI+IDx0eXBlPm5hbWU8L3R5cGU+LAogICAgICAg ICA8cGFyYW1ldGVyPmxzbjwvcGFyYW1ldGVyPiA8dHlwZT5wZ19sc248L3R5cGU+ICkKQEAgLTI3 NjcwLDggKzI3NjcwLDEzIEBAIHBvc3RncmVzPSMgU0VMRUNUICcwLzAnOjpwZ19sc24gKyBwZC5z ZWdtZW50X251bWJlciAqIHBzLnNldHRpbmc6OmludCArIDpvZmZzZXQKICAgICAgICAgcmVsZWFz ZWQgdXBvbiBhbnkgZXJyb3IuIFRoZSBvcHRpb25hbCBmb3VydGggcGFyYW1ldGVyLAogICAgICAg ICA8cGFyYW1ldGVyPnR3b3BoYXNlPC9wYXJhbWV0ZXI+LCB3aGVuIHNldCB0byB0cnVlLCBzcGVj aWZpZXMKICAgICAgICAgdGhhdCB0aGUgZGVjb2Rpbmcgb2YgcHJlcGFyZWQgdHJhbnNhY3Rpb25z IGlzIGVuYWJsZWQgZm9yIHRoaXMKLSAgICAgICAgc2xvdC4gQSBjYWxsIHRvIHRoaXMgZnVuY3Rp b24gaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgcmVwbGljYXRpb24KLSAgICAgICAgcHJvdG9j b2wgY29tbWFuZCA8bGl0ZXJhbD5DUkVBVEVfUkVQTElDQVRJT05fU0xPVCAuLi4gTE9HSUNBTDwv bGl0ZXJhbD4uCisgICAgICAgIHNsb3QuIFRoZSBvcHRpb25hbCBmaWZ0aCBwYXJhbWV0ZXIsCisg ICAgICAgIDxwYXJhbWV0ZXI+ZmFpbG92ZXI8L3BhcmFtZXRlcj4sIHdoZW4gc2V0IHRvIHRydWUs CisgICAgICAgIHNwZWNpZmllcyB0aGF0IHRoaXMgc2xvdCBpcyBlbmFibGVkIHRvIGJlIHN5bmNl ZCB0byB0aGUKKyAgICAgICAgcGh5c2ljYWwgc3RhbmRieXMgc28gdGhhdCBsb2dpY2FsIHJlcGxp Y2F0aW9uIGNhbiBiZSByZXN1bWVkCisgICAgICAgIGFmdGVyIGZhaWxvdmVyLiBBIGNhbGwgdG8g dGhpcyBmdW5jdGlvbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzCisgICAgICAgIHRoZSByZXBsaWNh dGlvbiBwcm90b2NvbCBjb21tYW5kCisgICAgICAgIDxsaXRlcmFsPkNSRUFURV9SRVBMSUNBVElP Tl9TTE9UIC4uLiBMT0dJQ0FMPC9saXRlcmFsPi4KICAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCmluZGV4IDZjM2U4YTYzMWQuLmFmOTk3ZWZkMmIgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9w cm90b2NvbC5zZ21sCkBAIC0yMDYwLDYgKzIwNjAsMTcgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVz IHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgICAgIDwv cGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAg ICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPkZBSUxPVkVSIFsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiBdPC9saXRl cmFsPjwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAg ICAgSWYgdHJ1ZSwgdGhlIHNsb3QgaXMgZW5hYmxlZCB0byBiZSBzeW5jZWQgdG8gdGhlIHBoeXNp Y2FsCisgICAgICAgICAgc3RhbmRieXMgc28gdGhhdCBsb2dpY2FsIHJlcGxpY2F0aW9uIGNhbiBi ZSByZXN1bWVkIGFmdGVyIGZhaWxvdmVyLgorICAgICAgICAgIFRoZSBkZWZhdWx0IGlzIGZhbHNl LgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDwvdmFybGlz dGVudHJ5PgogICAgICAgPC92YXJpYWJsZWxpc3Q+CiAKICAgICAgIDxwYXJhPgpAQCAtMjEyNCw2 ICsyMTM1LDQ3IEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIg LWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50 cnk+CiAKKyAgICA8dmFybGlzdGVudHJ5IGlkPSJwcm90b2NvbC1yZXBsaWNhdGlvbi1hbHRlci1y ZXBsaWNhdGlvbi1zbG90IiB4cmVmbGFiZWw9IkFMVEVSX1JFUExJQ0FUSU9OX1NMT1QiPgorICAg ICA8dGVybT48bGl0ZXJhbD5BTFRFUl9SRVBMSUNBVElPTl9TTE9UPC9saXRlcmFsPiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2xvdF9uYW1lPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApCisg ICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5PkFMVEVSX1JFUExJQ0FUSU9OX1NMT1Q8L3ByaW1hcnk+ PC9pbmRleHRlcm0+CisgICAgIDwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+ CisgICAgICAgQ2hhbmdlIHRoZSBkZWZpbml0aW9uIG9mIGEgcmVwbGljYXRpb24gc2xvdC4KKyAg ICAgICBTZWUgPHhyZWYgbGlua2VuZD0ic3RyZWFtaW5nLXJlcGxpY2F0aW9uLXNsb3RzIi8+IGZv ciBtb3JlIGFib3V0CisgICAgICAgcmVwbGljYXRpb24gc2xvdHMuIFRoaXMgY29tbWFuZCBpcyBj dXJyZW50bHkgb25seSBzdXBwb3J0ZWQgZm9yIGxvZ2ljYWwKKyAgICAgICByZXBsaWNhdGlvbiBz bG90cy4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgICA8dmFy bGlzdGVudHJ5PgorICAgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ c2xvdF9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBzbG90IHRvIGFsdGVyLiBNdXN0 IGJlIGEgdmFsaWQgcmVwbGljYXRpb24gc2xvdAorICAgICAgICAgIG5hbWUgKHNlZSA8eHJlZiBs aW5rZW5kPSJzdHJlYW1pbmctcmVwbGljYXRpb24tc2xvdHMtbWFuaXB1bGF0aW9uIi8+KS4KKyAg ICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8L3Zhcmxpc3RlbnRy eT4KKyAgICAgIDwvdmFyaWFibGVsaXN0PgorCisgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIG9w dGlvbnMgYXJlIHN1cHBvcnRlZDo8L3BhcmE+CisKKyAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAg ICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+RkFJTE9WRVIgWyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF08L2xpdGVy YWw+PC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAg ICBJZiB0cnVlLCB0aGUgc2xvdCBpcyBlbmFibGVkIHRvIGJlIHN5bmNlZCB0byB0aGUgcGh5c2lj YWwKKyAgICAgICAgICBzdGFuZGJ5cyBzbyB0aGF0IGxvZ2ljYWwgcmVwbGljYXRpb24gY2FuIGJl IHJlc3VtZWQgYWZ0ZXIgZmFpbG92ZXIuCisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlz dGl0ZW0+CisgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8L3ZhcmlhYmxlbGlzdD4KKwor ICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgPHZhcmxpc3RlbnRy eSBpZD0icHJvdG9jb2wtcmVwbGljYXRpb24tcmVhZC1yZXBsaWNhdGlvbi1zbG90Ij4KICAgICAg PHRlcm0+PGxpdGVyYWw+UkVBRF9SRVBMSUNBVElPTl9TTE9UPC9saXRlcmFsPiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+c2xvdF9uYW1lPC9yZXBsYWNlYWJsZT4KICAgICAgIDxpbmRl eHRlcm0+PHByaW1hcnk+UkVBRF9SRVBMSUNBVElPTl9TTE9UPC9wcmltYXJ5PjwvaW5kZXh0ZXJt PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggNmQzNmZmMGRj OS4uYjNlNzc5ZGY3MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3Jp cHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21s CkBAIC0yMjYsMTAgKzIyNiwyMiBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPAogICAgICAgPGxp bmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1zdHJlYW1pbmci PjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD48L2xpbms+LAogICAgICAgPGxpbmsgbGlua2Vu ZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1kaXNhYmxlLW9uLWVycm9yIj48 bGl0ZXJhbD5kaXNhYmxlX29uX2Vycm9yPC9saXRlcmFsPjwvbGluaz4sCiAgICAgICA8bGluayBs aW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLXBhc3N3b3JkLXJlcXVp cmVkIj48bGl0ZXJhbD5wYXNzd29yZF9yZXF1aXJlZDwvbGl0ZXJhbD48L2xpbms+LAotICAgICAg PGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1ydW4tYXMt b3duZXIiPjxsaXRlcmFsPnJ1bl9hc19vd25lcjwvbGl0ZXJhbD48L2xpbms+LCBhbmQKLSAgICAg IDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtb3JpZ2lu Ij48bGl0ZXJhbD5vcmlnaW48L2xpdGVyYWw+PC9saW5rPi4KKyAgICAgIDxsaW5rIGxpbmtlbmQ9 InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtcnVuLWFzLW93bmVyIj48bGl0ZXJh bD5ydW5fYXNfb3duZXI8L2xpdGVyYWw+PC9saW5rPiwKKyAgICAgIDxsaW5rIGxpbmtlbmQ9InNx bC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtb3JpZ2luIj48bGl0ZXJhbD5vcmlnaW48 L2xpdGVyYWw+PC9saW5rPiwgYW5kCisgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vi c2NyaXB0aW9uLXBhcmFtcy13aXRoLWZhaWxvdmVyIj48bGl0ZXJhbD5mYWlsb3ZlcjwvbGl0ZXJh bD48L2xpbms+LgogICAgICAgT25seSBhIHN1cGVydXNlciBjYW4gc2V0IDxsaXRlcmFsPnBhc3N3 b3JkX3JlcXVpcmVkID0gZmFsc2U8L2xpdGVyYWw+LgogICAgICA8L3BhcmE+CisKKyAgICAgPHBh cmE+CisgICAgICBXaGVuIGFsdGVyaW5nIHRoZQorICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNy ZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1zbG90LW5hbWUiPjxsaXRlcmFsPnNsb3RfbmFt ZTwvbGl0ZXJhbD48L2xpbms+LAorICAgICAgdGhlIDxsaXRlcmFsPmZhaWxvdmVyPC9saXRlcmFs PiBwcm9wZXJ0eSB2YWx1ZSBvZiB0aGUgbmFtZWQgc2xvdCBtYXkgZGlmZmVyIGZyb20gdGhlCisg ICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLWZh aWxvdmVyIj48bGl0ZXJhbD5mYWlsb3ZlcjwvbGl0ZXJhbD48L2xpbms+CisgICAgICBwYXJhbWV0 ZXIgc3BlY2lmaWVkIGluIHRoZSBzdWJzY3JpcHRpb24uIFdoZW4gY3JlYXRpbmcgdGhlIHNsb3Qs CisgICAgICBlbnN1cmUgdGhlIHNsb3QgPGxpdGVyYWw+ZmFpbG92ZXI8L2xpdGVyYWw+IHByb3Bl cnR5IG1hdGNoZXMgdGhlCisgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0 aW9uLXBhcmFtcy13aXRoLWZhaWxvdmVyIj48bGl0ZXJhbD5mYWlsb3ZlcjwvbGl0ZXJhbD48L2xp bms+CisgICAgICBwYXJhbWV0ZXIgdmFsdWUgb2YgdGhlIHN1YnNjcmlwdGlvbi4KKyAgICAgPC9w YXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIApkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCBjN2FjZTkyMmY5Li5jZTM4NmE0NmE3 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtNDAwLDYg KzQwMCwxOCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgICAgPC9wYXJhPgogICAg ICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICAgPHZhcmxp c3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1mYWlsb3ZlciI+ CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmZhaWxvdmVyPC9saXRlcmFsPiAoPHR5cGU+Ym9vbGVh bjwvdHlwZT4pPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAg ICAgICAgICBTcGVjaWZpZXMgd2hldGhlciB0aGUgcmVwbGljYXRpb24gc2xvdHMgYXNzb2NpYXRl ZCB3aXRoIHRoZSBzdWJzY3JpcHRpb24KKyAgICAgICAgICBhcmUgZW5hYmxlZCB0byBiZSBzeW5j ZWQgdG8gdGhlIHBoeXNpY2FsIHN0YW5kYnlzIHNvIHRoYXQgbG9naWNhbAorICAgICAgICAgIHJl cGxpY2F0aW9uIGNhbiBiZSByZXN1bWVkIGZyb20gdGhlIG5ldyBwcmltYXJ5IGFmdGVyIGZhaWxv dmVyLgorICAgICAgICAgIFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPi4K KyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8L3Zhcmxpc3Rl bnRyeT4KICAgICAgIDwvdmFyaWFibGVsaXN0PjwvcGFyYT4KIAogICAgIDwvbGlzdGl0ZW0+CmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgYi9kb2Mvc3JjL3NnbWwv c3lzdGVtLXZpZXdzLnNnbWwKaW5kZXggNzJkMDFmYzYyNC4uMTg2OGI5NTgzNiAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zeXN0 ZW0tdmlld3Muc2dtbApAQCAtMjU1NSw2ICsyNTU1LDE3IEBAIFNFTEVDVCAqIEZST00gcGdfbG9j a3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBhcmVkX3hhY3RzIHBweAogICAgICAgIDwvaXRlbWl6ZWRs aXN0PgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5mYWlsb3Zlcjwvc3RydWN0ZmllbGQ+ IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBU cnVlIGlmIHRoaXMgaXMgYSBsb2dpY2FsIHNsb3QgZW5hYmxlZCB0byBiZSBzeW5jZWQgdG8gdGhl IHBoeXNpY2FsCisgICAgICAgc3RhbmRieXMgc28gdGhhdCBsb2dpY2FsIHJlcGxpY2F0aW9uIGNh biBiZSByZXN1bWVkIGZyb20gdGhlIG5ldyBwcmltYXJ5CisgICAgICAgYWZ0ZXIgZmFpbG92ZXIu IEFsd2F5cyBmYWxzZSBmb3IgcGh5c2ljYWwgc2xvdHMuCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKaW5kZXggYzUxNmMyNWFjNy4uNDA2YTNjMmRk MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYworKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCkBAIC03Myw2ICs3Myw3IEBA IEdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vaykKIAlzdWItPmRpc2Fi bGVvbmVyciA9IHN1YmZvcm0tPnN1YmRpc2FibGVvbmVycjsKIAlzdWItPnBhc3N3b3JkcmVxdWly ZWQgPSBzdWJmb3JtLT5zdWJwYXNzd29yZHJlcXVpcmVkOwogCXN1Yi0+cnVuYXNvd25lciA9IHN1 YmZvcm0tPnN1YnJ1bmFzb3duZXI7CisJc3ViLT5mYWlsb3ZlciA9IHN1YmZvcm0tPnN1YmZhaWxv dmVyOwogCiAJLyogR2V0IGNvbm5pbmZvICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3RO dWxsKFNVQlNDUklQVElPTk9JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX2Z1bmN0aW9ucy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMu c3FsCmluZGV4IGYzMTVmZWNmMTguLjM0NmNmYjk4YTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fZnVuY3Rpb25zLnNxbApAQCAtNDc5LDYgKzQ3OSw3IEBAIENSRUFURSBPUiBSRVBMQUNF IEZVTkNUSU9OIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoCiAgICAgSU4gc2xv dF9uYW1lIG5hbWUsIElOIHBsdWdpbiBuYW1lLAogICAgIElOIHRlbXBvcmFyeSBib29sZWFuIERF RkFVTFQgZmFsc2UsCiAgICAgSU4gdHdvcGhhc2UgYm9vbGVhbiBERUZBVUxUIGZhbHNlLAorICAg IElOIGZhaWxvdmVyIGJvb2xlYW4gREVGQVVMVCBmYWxzZSwKICAgICBPVVQgc2xvdF9uYW1lIG5h bWUsIE9VVCBsc24gcGdfbHNuKQogUkVUVVJOUyBSRUNPUkQKIExBTkdVQUdFIElOVEVSTkFMCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggZTQzZTM2ZjVhYy4uZTQzYTkzNzM5 ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTAyMyw3ICsxMDIzLDgg QEAgQ1JFQVRFIFZJRVcgcGdfcmVwbGljYXRpb25fc2xvdHMgQVMKICAgICAgICAgICAgIEwud2Fs X3N0YXR1cywKICAgICAgICAgICAgIEwuc2FmZV93YWxfc2l6ZSwKICAgICAgICAgICAgIEwudHdv X3BoYXNlLAotICAgICAgICAgICAgTC5jb25mbGljdF9yZWFzb24KKyAgICAgICAgICAgIEwuY29u ZmxpY3RfcmVhc29uLAorICAgICAgICAgICAgTC5mYWlsb3ZlcgogICAgIEZST00gcGdfZ2V0X3Jl cGxpY2F0aW9uX3Nsb3RzKCkgQVMgTAogICAgICAgICAgICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNl IEQgT04gKEwuZGF0b2lkID0gRC5vaWQpOwogCkBAIC0xMzU3LDcgKzEzNTgsOCBAQCBSRVZPS0Ug QUxMIE9OIHBnX3N1YnNjcmlwdGlvbiBGUk9NIHB1YmxpYzsKIEdSQU5UIFNFTEVDVCAob2lkLCBz dWJkYmlkLCBzdWJza2lwbHNuLCBzdWJuYW1lLCBzdWJvd25lciwgc3ViZW5hYmxlZCwKICAgICAg ICAgICAgICAgc3ViYmluYXJ5LCBzdWJzdHJlYW0sIHN1YnR3b3BoYXNlc3RhdGUsIHN1YmRpc2Fi bGVvbmVyciwKIAkJCSAgc3VicGFzc3dvcmRyZXF1aXJlZCwgc3VicnVuYXNvd25lciwKLSAgICAg ICAgICAgICAgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vi b3JpZ2luKQorICAgICAgICAgICAgICBzdWJzbG90bmFtZSwgc3Vic3luY2NvbW1pdCwgc3VicHVi bGljYXRpb25zLCBzdWJvcmlnaW4sCisgICAgICAgICAgICAgIHN1YmZhaWxvdmVyKQogICAgIE9O IHBnX3N1YnNjcmlwdGlvbiBUTyBwdWJsaWM7CiAKIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2Ny aXB0aW9uX3N0YXRzIEFTCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3Jp cHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5k ZXggNzVlNmNkOGFlMy4uZjUwYmUyOWQ5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlw dGlvbmNtZHMuYwpAQCAtNzEsNiArNzEsNyBAQAogI2RlZmluZSBTVUJPUFRfUlVOX0FTX09XTkVS CQkJMHgwMDAwMTAwMAogI2RlZmluZSBTVUJPUFRfTFNOCQkJCQkweDAwMDAyMDAwCiAjZGVmaW5l IFNVQk9QVF9PUklHSU4JCQkJMHgwMDAwNDAwMAorI2RlZmluZSBTVUJPUFRfRkFJTE9WRVIJCQkJ MHgwMDAwODAwMAogCiAvKiBjaGVjayBpZiB0aGUgJ3ZhbCcgaGFzICdiaXRzJyBzZXQgKi8KICNk ZWZpbmUgSXNTZXQodmFsLCBiaXRzKSAgKCgodmFsKSAmIChiaXRzKSkgPT0gKGJpdHMpKQpAQCAt OTYsNiArOTcsNyBAQCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiAJYm9vbAkJcGFzc3dvcmRyZXF1 aXJlZDsKIAlib29sCQlydW5hc293bmVyOwogCWNoYXIJICAgKm9yaWdpbjsKKwlib29sCQlmYWls b3ZlcjsKIAlYTG9nUmVjUHRyCWxzbjsKIH0gU3ViT3B0czsKIApAQCAtMTU3LDYgKzE1OSw4IEBA IHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3Rt dF9vcHRpb25zLAogCQlvcHRzLT5ydW5hc293bmVyID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBv cnRlZF9vcHRzLCBTVUJPUFRfT1JJR0lOKSkKIAkJb3B0cy0+b3JpZ2luID0gcHN0cmR1cChMT0dJ Q0FMUkVQX09SSUdJTl9BTlkpOworCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0ZB SUxPVkVSKSkKKwkJb3B0cy0+ZmFpbG92ZXIgPSBmYWxzZTsKIAogCS8qIFBhcnNlIG9wdGlvbnMg Ki8KIAlmb3JlYWNoKGxjLCBzdG10X29wdGlvbnMpCkBAIC0zMjYsNiArMzMwLDE1IEBAIHBhcnNl X3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRp b25zLAogCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJ CQkJCWVycm1zZygidW5yZWNvZ25pemVkIG9yaWdpbiB2YWx1ZTogXCIlc1wiIiwgb3B0cy0+b3Jp Z2luKSk7CiAJCX0KKwkJZWxzZSBpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9GQUlM T1ZFUikgJiYKKwkJCQkgc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAiZmFpbG92ZXIiKSA9PSAwKQor CQl7CisJCQlpZiAoSXNTZXQob3B0cy0+c3BlY2lmaWVkX29wdHMsIFNVQk9QVF9GQUlMT1ZFUikp CisJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CisKKwkJCW9wdHMt PnNwZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9GQUlMT1ZFUjsKKwkJCW9wdHMtPmZhaWxvdmVyID0g ZGVmR2V0Qm9vbGVhbihkZWZlbCk7CisJCX0KIAkJZWxzZSBpZiAoSXNTZXQoc3VwcG9ydGVkX29w dHMsIFNVQk9QVF9MU04pICYmCiAJCQkJIHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImxzbiIpID09 IDApCiAJCXsKQEAgLTU5MSw3ICs2MDQsOCBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0 ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCQkgIFNVQk9QVF9T WU5DSFJPTk9VU19DT01NSVQgfCBTVUJPUFRfQklOQVJZIHwKIAkJCQkJICBTVUJPUFRfU1RSRUFN SU5HIHwgU1VCT1BUX1RXT1BIQVNFX0NPTU1JVCB8CiAJCQkJCSAgU1VCT1BUX0RJU0FCTEVfT05f RVJSIHwgU1VCT1BUX1BBU1NXT1JEX1JFUVVJUkVEIHwKLQkJCQkJICBTVUJPUFRfUlVOX0FTX09X TkVSIHwgU1VCT1BUX09SSUdJTik7CisJCQkJCSAgU1VCT1BUX1JVTl9BU19PV05FUiB8IFNVQk9Q VF9PUklHSU4gfAorCQkJCQkgIFNVQk9QVF9GQUlMT1ZFUik7CiAJcGFyc2Vfc3Vic2NyaXB0aW9u X29wdGlvbnMocHN0YXRlLCBzdG10LT5vcHRpb25zLCBzdXBwb3J0ZWRfb3B0cywgJm9wdHMpOwog CiAJLyoKQEAgLTcxMCw2ICs3MjQsOCBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAq cHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQlwdWJsaWNhdGlvbkxpc3RU b0FycmF5KHB1YmxpY2F0aW9ucyk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1Ym9y aWdpbiAtIDFdID0KIAkJQ1N0cmluZ0dldFRleHREYXR1bShvcHRzLm9yaWdpbik7CisJdmFsdWVz W0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmZhaWxvdmVyIC0gMV0gPQorCQlCb29sR2V0RGF0dW0o b3B0cy5mYWlsb3Zlcik7CiAKIAl0dXAgPSBoZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNj cihyZWwpLCB2YWx1ZXMsIG51bGxzKTsKIApAQCAtODA3LDcgKzgyMyw3IEBAIENyZWF0ZVN1YnNj cmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQs CiAJCQkJCXR3b3BoYXNlX2VuYWJsZWQgPSB0cnVlOwogCiAJCQkJd2FscmN2X2NyZWF0ZV9zbG90 KHdyY29ubiwgb3B0cy5zbG90X25hbWUsIGZhbHNlLCB0d29waGFzZV9lbmFibGVkLAotCQkJCQkJ CQkgICBDUlNfTk9FWFBPUlRfU05BUFNIT1QsIE5VTEwpOworCQkJCQkJCQkgICBvcHRzLmZhaWxv dmVyLCBDUlNfTk9FWFBPUlRfU05BUFNIT1QsIE5VTEwpOwogCiAJCQkJaWYgKHR3b3BoYXNlX2Vu YWJsZWQpCiAJCQkJCVVwZGF0ZVR3b1BoYXNlU3RhdGUoc3ViaWQsIExPR0lDQUxSRVBfVFdPUEhB U0VfU1RBVEVfRU5BQkxFRCk7CkBAIC04MTYsNiArODMyLDI0IEBAIENyZWF0ZVN1YnNjcmlwdGlv bihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJ CQkoZXJybXNnKCJjcmVhdGVkIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIG9uIHB1Ymxpc2hlciIs CiAJCQkJCQkJCW9wdHMuc2xvdF9uYW1lKSkpOwogCQkJfQorCisJCQkvKgorCQkJICogSWYgdGhl IHNsb3RfbmFtZSBpcyBzcGVjaWZpZWQgd2l0aG91dCB0aGUgY3JlYXRlX3Nsb3Qgb3B0aW9uLAor CQkJICogaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgdXNlciBpbnRlbmRzIHRvIHVzZSBhbiBleGlz dGluZyBzbG90IG9uCisJCQkgKiB0aGUgcHVibGlzaGVyLCBzbyBoZXJlIHdlIGFsdGVyIHRoZSBm YWlsb3ZlciBwcm9wZXJ0eSBvZiB0aGUKKwkJCSAqIHNsb3QgdG8gbWF0Y2ggdGhlIGZhaWxvdmVy IHZhbHVlIGluIHN1YnNjcmlwdGlvbi4KKwkJCSAqCisJCQkgKiBXZSBkbyBub3QgbmVlZCB0byBj aGFuZ2UgdGhlIGZhaWxvdmVyIHRvIGZhbHNlIGlmIHRoZSBzZXJ2ZXIKKwkJCSAqIGRvZXMgbm90 IHN1cHBvcnQgZmFpbG92ZXIgKGUuZy4gcHJlLVBHMTcpLgorCQkJICovCisJCQllbHNlIGlmIChv cHRzLnNsb3RfbmFtZSAmJgorCQkJCQkgKG9wdHMuZmFpbG92ZXIgfHwgd2FscmN2X3NlcnZlcl92 ZXJzaW9uKHdyY29ubikgPj0gMTcwMDAwKSkKKwkJCXsKKwkJCQl3YWxyY3ZfYWx0ZXJfc2xvdCh3 cmNvbm4sIG9wdHMuc2xvdF9uYW1lLCBvcHRzLmZhaWxvdmVyKTsKKwkJCQllcmVwb3J0KE5PVElD RSwKKwkJCQkJCShlcnJtc2coImNoYW5nZWQgdGhlIGZhaWxvdmVyIHN0YXRlIG9mIHJlcGxpY2F0 aW9uIHNsb3QgXCIlc1wiIG9uIHB1Ymxpc2hlciB0byAlcyIsCisJCQkJCQkJCW9wdHMuc2xvdF9u YW1lLCBvcHRzLmZhaWxvdmVyID8gInRydWUiIDogImZhbHNlIikpKTsKKwkJCX0KIAkJfQogCQlQ R19GSU5BTExZKCk7CiAJCXsKQEAgLTExMzIsNyArMTE2Niw4IEBAIEFsdGVyU3Vic2NyaXB0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCQkJ CQkgIFNVQk9QVF9TWU5DSFJPTk9VU19DT01NSVQgfCBTVUJPUFRfQklOQVJZIHwKIAkJCQkJCQkJ ICBTVUJPUFRfU1RSRUFNSU5HIHwgU1VCT1BUX0RJU0FCTEVfT05fRVJSIHwKIAkJCQkJCQkJICBT VUJPUFRfUEFTU1dPUkRfUkVRVUlSRUQgfAotCQkJCQkJCQkgIFNVQk9QVF9SVU5fQVNfT1dORVIg fCBTVUJPUFRfT1JJR0lOKTsKKwkJCQkJCQkJICBTVUJPUFRfUlVOX0FTX09XTkVSIHwgU1VCT1BU X09SSUdJTiB8CisJCQkJCQkJCSAgU1VCT1BUX0ZBSUxPVkVSKTsKIAogCQkJCXBhcnNlX3N1YnNj cmlwdGlvbl9vcHRpb25zKHBzdGF0ZSwgc3RtdC0+b3B0aW9ucywKIAkJCQkJCQkJCQkgICBzdXBw b3J0ZWRfb3B0cywgJm9wdHMpOwpAQCAtMTIxOCw2ICsxMjUzLDMwIEBAIEFsdGVyU3Vic2NyaXB0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJ CQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJvcmlnaW4gLSAxXSA9IHRydWU7CiAJ CQkJfQogCisJCQkJaWYgKElzU2V0KG9wdHMuc3BlY2lmaWVkX29wdHMsIFNVQk9QVF9GQUlMT1ZF UikpCisJCQkJeworCQkJCQlpZiAoIXN1Yi0+c2xvdG5hbWUpCisJCQkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NU QVRFKSwKKwkJCQkJCQkJIGVycm1zZygiY2Fubm90IHNldCBmYWlsb3ZlciBmb3IgYSBzdWJzY3Jp cHRpb24gdGhhdCBkb2VzIG5vdCBoYXZlIGEgc2xvdCBuYW1lIikpKTsKKworCQkJCQkvKgorCQkJ CQkgKiBEbyBub3QgYWxsb3cgY2hhbmdpbmcgdGhlIGZhaWxvdmVyIHN0YXRlIGlmIHRoZQorCQkJ CQkgKiBzdWJzY3JpcHRpb24gaXMgZW5hYmxlZC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBmYWlsb3Zl cgorCQkJCQkgKiBzdGF0ZSBvZiB0aGUgc2xvdCBvbiB0aGUgcHVibGlzaGVyIGNhbm5vdCBiZSBt b2RpZmllZCBpZgorCQkJCQkgKiB0aGUgc2xvdCBpcyBjdXJyZW50bHkgYWNxdWlyZWQgYnkgdGhl IGFwcGx5IHdvcmtlci4KKwkJCQkJICovCisJCQkJCWlmIChzdWItPmVuYWJsZWQpCisJCQkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJF UkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCQkJIGVycm1zZygiY2Fubm90IHNldCAlcyBmb3IgZW5h YmxlZCBzdWJzY3JpcHRpb24iLAorCQkJCQkJCQkJCSJmYWlsb3ZlciIpKSk7CisKKwkJCQkJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmZhaWxvdmVyIC0gMV0gPQorCQkJCQkJQm9vbEdl dERhdHVtKG9wdHMuZmFpbG92ZXIpOworCQkJCQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlv bl9zdWJmYWlsb3ZlciAtIDFdID0gdHJ1ZTsKKwkJCQl9CisKIAkJCQl1cGRhdGVfdHVwbGUgPSB0 cnVlOwogCQkJCWJyZWFrOwogCQkJfQpAQCAtMTQ1Myw2ICsxNTEyLDQ2IEBAIEFsdGVyU3Vic2Ny aXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10LAog CQloZWFwX2ZyZWV0dXBsZSh0dXApOwogCX0KIAorCS8qCisJICogVHJ5IHRvIGFjcXVpcmUgdGhl IGNvbm5lY3Rpb24gbmVjZXNzYXJ5IGZvciBhbHRlcmluZyBzbG90LgorCSAqCisJICogVGhpcyBo YXMgdG8gYmUgYXQgdGhlIGVuZCBiZWNhdXNlIG90aGVyd2lzZSBpZiB0aGVyZSBpcyBhbiBlcnJv cgorCSAqIHdoaWxlIGRvaW5nIHRoZSBkYXRhYmFzZSBvcGVyYXRpb25zIHdlIHdvbid0IGJlIGFi bGUgdG8gcm9sbGJhY2sKKwkgKiBhbHRlcmVkIHNsb3QuCisJICovCisJaWYgKHJlcGxhY2VzW0Fu dW1fcGdfc3Vic2NyaXB0aW9uX3N1YmZhaWxvdmVyIC0gMV0pCisJeworCQlib29sCQltdXN0X3Vz ZV9wYXNzd29yZDsKKwkJY2hhcgkgICAqZXJyOworCQlXYWxSZWNlaXZlckNvbm4gKndyY29ubjsK KworCQkvKiBMb2FkIHRoZSBsaWJyYXJ5IHByb3ZpZGluZyB1cyBsaWJwcSBjYWxscy4gKi8KKwkJ bG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOworCisJCS8qIFRyeSB0byBjb25u ZWN0IHRvIHRoZSBwdWJsaXNoZXIuICovCisJCW11c3RfdXNlX3Bhc3N3b3JkID0gc3ViLT5wYXNz d29yZHJlcXVpcmVkICYmICFzdWItPm93bmVyc3VwZXJ1c2VyOworCQl3cmNvbm4gPSB3YWxyY3Zf Y29ubmVjdChzdWItPmNvbm5pbmZvLCB0cnVlLCBtdXN0X3VzZV9wYXNzd29yZCwKKwkJCQkJCQkJ c3ViLT5uYW1lLCAmZXJyKTsKKwkJaWYgKCF3cmNvbm4pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0NPTk5FQ1RJT05fRkFJTFVSRSksCisJCQkJCSBlcnJtc2coImNv dWxkIG5vdCBjb25uZWN0IHRvIHRoZSBwdWJsaXNoZXI6ICVzIiwgZXJyKSkpOworCisJCVBHX1RS WSgpOworCQl7CisJCQl3YWxyY3ZfYWx0ZXJfc2xvdCh3cmNvbm4sIHN1Yi0+c2xvdG5hbWUsIG9w dHMuZmFpbG92ZXIpOworCisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJKGVycm1zZygiY2hhbmdl ZCB0aGUgZmFpbG92ZXIgc3RhdGUgb2YgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgb24gcHVibGlz aGVyIHRvICVzIiwKKwkJCQkJCQlzdWItPnNsb3RuYW1lLCAiZmFsc2UiKSkpOworCQl9CisJCVBH X0ZJTkFMTFkoKTsKKwkJeworCQkJd2FscmN2X2Rpc2Nvbm5lY3Qod3Jjb25uKTsKKwkJfQorCQlQ R19FTkRfVFJZKCk7CisJfQorCiAJdGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsK IAogCU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBzdWJp ZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVy L2xpYnBxd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVj ZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCmluZGV4IDIwMWMzNmNiMjIuLmM1MjMyY2VlMmYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3 YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2 ZXIvbGlicHF3YWxyZWNlaXZlci5jCkBAIC03NCw4ICs3NCwxMSBAQCBzdGF0aWMgY2hhciAqbGli cHFyY3ZfY3JlYXRlX3Nsb3QoV2FsUmVjZWl2ZXJDb25uICpjb25uLAogCQkJCQkJCQkgIGNvbnN0 IGNoYXIgKnNsb3RuYW1lLAogCQkJCQkJCQkgIGJvb2wgdGVtcG9yYXJ5LAogCQkJCQkJCQkgIGJv b2wgdHdvX3BoYXNlLAorCQkJCQkJCQkgIGJvb2wgZmFpbG92ZXIsCiAJCQkJCQkJCSAgQ1JTU25h cHNob3RBY3Rpb24gc25hcHNob3RfYWN0aW9uLAogCQkJCQkJCQkgIFhMb2dSZWNQdHIgKmxzbik7 CitzdGF0aWMgdm9pZCBsaWJwcXJjdl9hbHRlcl9zbG90KFdhbFJlY2VpdmVyQ29ubiAqY29ubiwg Y29uc3QgY2hhciAqc2xvdG5hbWUsCisJCQkJCQkJCWJvb2wgZmFpbG92ZXIpOwogc3RhdGljIHBp ZF90IGxpYnBxcmN2X2dldF9iYWNrZW5kX3BpZChXYWxSZWNlaXZlckNvbm4gKmNvbm4pOwogc3Rh dGljIFdhbFJjdkV4ZWNSZXN1bHQgKmxpYnBxcmN2X2V4ZWMoV2FsUmVjZWl2ZXJDb25uICpjb25u LAogCQkJCQkJCQkJICAgY29uc3QgY2hhciAqcXVlcnksCkBAIC05Niw2ICs5OSw3IEBAIHN0YXRp YyBXYWxSZWNlaXZlckZ1bmN0aW9uc1R5cGUgUFFXYWxSZWNlaXZlckZ1bmN0aW9ucyA9IHsKIAku d2FscmN2X3JlY2VpdmUgPSBsaWJwcXJjdl9yZWNlaXZlLAogCS53YWxyY3Zfc2VuZCA9IGxpYnBx cmN2X3NlbmQsCiAJLndhbHJjdl9jcmVhdGVfc2xvdCA9IGxpYnBxcmN2X2NyZWF0ZV9zbG90LAor CS53YWxyY3ZfYWx0ZXJfc2xvdCA9IGxpYnBxcmN2X2FsdGVyX3Nsb3QsCiAJLndhbHJjdl9nZXRf YmFja2VuZF9waWQgPSBsaWJwcXJjdl9nZXRfYmFja2VuZF9waWQsCiAJLndhbHJjdl9leGVjID0g bGlicHFyY3ZfZXhlYywKIAkud2FscmN2X2Rpc2Nvbm5lY3QgPSBsaWJwcXJjdl9kaXNjb25uZWN0 CkBAIC04OTksOCArOTAzLDggQEAgbGlicHFyY3Zfc2VuZChXYWxSZWNlaXZlckNvbm4gKmNvbm4s IGNvbnN0IGNoYXIgKmJ1ZmZlciwgaW50IG5ieXRlcykKICAqLwogc3RhdGljIGNoYXIgKgogbGli cHFyY3ZfY3JlYXRlX3Nsb3QoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBjb25zdCBjaGFyICpzbG90 bmFtZSwKLQkJCQkJIGJvb2wgdGVtcG9yYXJ5LCBib29sIHR3b19waGFzZSwgQ1JTU25hcHNob3RB Y3Rpb24gc25hcHNob3RfYWN0aW9uLAotCQkJCQkgWExvZ1JlY1B0ciAqbHNuKQorCQkJCQkgYm9v bCB0ZW1wb3JhcnksIGJvb2wgdHdvX3BoYXNlLCBib29sIGZhaWxvdmVyLAorCQkJCQkgQ1JTU25h cHNob3RBY3Rpb24gc25hcHNob3RfYWN0aW9uLCBYTG9nUmVjUHRyICpsc24pCiB7CiAJUEdyZXN1 bHQgICAqcmVzOwogCVN0cmluZ0luZm9EYXRhIGNtZDsKQEAgLTkyOSw3ICs5MzMsOCBAQCBsaWJw cXJjdl9jcmVhdGVfc2xvdChXYWxSZWNlaXZlckNvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnNsb3Ru YW1lLAogCQkJZWxzZQogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZjbWQsICcgJyk7CiAJCX0K LQorCQlpZiAoZmFpbG92ZXIpCisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICJGQUlM T1ZFUiwgIik7CiAJCWlmICh1c2VfbmV3X29wdGlvbnNfc3ludGF4KQogCQl7CiAJCQlzd2l0Y2gg KHNuYXBzaG90X2FjdGlvbikKQEAgLTk5OCw2ICsxMDAzLDMzIEBAIGxpYnBxcmN2X2NyZWF0ZV9z bG90KFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgY29uc3QgY2hhciAqc2xvdG5hbWUsCiAJcmV0dXJu IHNuYXBzaG90OwogfQogCisvKgorICogQ2hhbmdlIHRoZSBkZWZpbml0aW9uIG9mIHRoZSByZXBs aWNhdGlvbiBzbG90LgorICovCitzdGF0aWMgdm9pZAorbGlicHFyY3ZfYWx0ZXJfc2xvdChXYWxS ZWNlaXZlckNvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnNsb3RuYW1lLAorCQkJCQlib29sIGZhaWxv dmVyKQoreworCVN0cmluZ0luZm9EYXRhIGNtZDsKKwlQR3Jlc3VsdCAgICpyZXM7CisKKwlpbml0 U3RyaW5nSW5mbygmY21kKTsKKwlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJBTFRFUl9SRVBMSUNB VElPTl9TTE9UICVzICggRkFJTE9WRVIgJXMgKSIsCisJCQkJCSBxdW90ZV9pZGVudGlmaWVyKHNs b3RuYW1lKSwKKwkJCQkJIGZhaWxvdmVyID8gInRydWUiIDogImZhbHNlIik7CisKKwlyZXMgPSBs aWJwcXJjdl9QUWV4ZWMoY29ubi0+c3RyZWFtQ29ubiwgY21kLmRhdGEpOworCXBmcmVlKGNtZC5k YXRhKTsKKworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04p LAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBhbHRlciByZXBsaWNhdGlvbiBzbG90IFwiJXNcIjog JXMiLAorCQkJCQkJc2xvdG5hbWUsIHBjaG9tcChQUWVycm9yTWVzc2FnZShjb25uLT5zdHJlYW1D b25uKSkpKSk7CisKKwlQUWNsZWFyKHJlcyk7Cit9CisKIC8qCiAgKiBSZXR1cm4gUElEIG9mIHJl bW90ZSBiYWNrZW5kIHByb2Nlc3MuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3RhYmxlc3luYy5jCmluZGV4IDA2ZDViM2RmMzMuLjVhY2FiM2YzZTIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtMTQzMCw2ICsxNDMwLDcg QEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykK IAkgKi8KIAl3YWxyY3ZfY3JlYXRlX3Nsb3QoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwKIAkJCQkJ ICAgc2xvdG5hbWUsIGZhbHNlIC8qIHBlcm1hbmVudCAqLyAsIGZhbHNlIC8qIHR3b19waGFzZSAq LyAsCisJCQkJCSAgIE15U3Vic2NyaXB0aW9uLT5mYWlsb3ZlciwKIAkJCQkJICAgQ1JTX1VTRV9T TkFQU0hPVCwgb3JpZ2luX3N0YXJ0cG9zKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYwppbmRleCA5MTE4MzVjNWNiLi4zZGVhMTBmOWIzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTEzMiw2ICsxMzIsMTMgQEAKICAq IGF2b2lkIHN1Y2ggZGVhZGxvY2tzLCB3ZSBnZW5lcmF0ZSBhIHVuaXF1ZSBHSUQgKGNvbnNpc3Rp bmcgb2YgdGhlCiAgKiBzdWJzY3JpcHRpb24gb2lkIGFuZCB0aGUgeGlkIG9mIHRoZSBwcmVwYXJl ZCB0cmFuc2FjdGlvbikgZm9yIGVhY2ggcHJlcGFyZQogICogdHJhbnNhY3Rpb24gb24gdGhlIHN1 YnNjcmliZXIuCisgKgorICogRkFJTE9WRVIKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq IFRoZSBsb2dpY2FsIHNsb3Qgb24gdGhlIHByaW1hcnkgY2FuIGJlIHN5bmNlZCB0byB0aGUgc3Rh bmRieSBieSBzcGVjaWZ5aW5nCisgKiBmYWlsb3ZlciA9IHRydWUgd2hlbiBjcmVhdGluZyB0aGUg c3Vic2NyaXB0aW9uLiBFbmFibGluZyBmYWlsb3ZlciBhbGxvd3MgdXMKKyAqIHRvIHNtb290aGx5 IHRyYW5zaXRpb24gdG8gdGhlIHByb21vdGVkIHN0YW5kYnksIGVuc3VyaW5nIHRoYXQgd2UgY2Fu CisgKiBzdWJzY3JpYmUgdG8gdGhlIG5ldyBwcmltYXJ5IHdpdGhvdXQgbG9zaW5nIGFueSBkYXRh LgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vcmVwbF9ncmFtLnkgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9yZXBsX2dyYW0u eQppbmRleCA5NWUxMjZlYjRkLi5mZjM4MDllMDJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9yZXBsX2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9yZXBs X2dyYW0ueQpAQCAtNjQsNiArNjQsNyBAQCBOb2RlICpyZXBsaWNhdGlvbl9wYXJzZV9yZXN1bHQ7 CiAldG9rZW4gS19TVEFSVF9SRVBMSUNBVElPTgogJXRva2VuIEtfQ1JFQVRFX1JFUExJQ0FUSU9O X1NMT1QKICV0b2tlbiBLX0RST1BfUkVQTElDQVRJT05fU0xPVAorJXRva2VuIEtfQUxURVJfUkVQ TElDQVRJT05fU0xPVAogJXRva2VuIEtfVElNRUxJTkVfSElTVE9SWQogJXRva2VuIEtfV0FJVAog JXRva2VuIEtfVElNRUxJTkUKQEAgLTgwLDggKzgxLDkgQEAgTm9kZSAqcmVwbGljYXRpb25fcGFy c2VfcmVzdWx0OwogCiAldHlwZSA8bm9kZT4JY29tbWFuZAogJXR5cGUgPG5vZGU+CWJhc2VfYmFj a3VwIHN0YXJ0X3JlcGxpY2F0aW9uIHN0YXJ0X2xvZ2ljYWxfcmVwbGljYXRpb24KLQkJCQljcmVh dGVfcmVwbGljYXRpb25fc2xvdCBkcm9wX3JlcGxpY2F0aW9uX3Nsb3QgaWRlbnRpZnlfc3lzdGVt Ci0JCQkJcmVhZF9yZXBsaWNhdGlvbl9zbG90IHRpbWVsaW5lX2hpc3Rvcnkgc2hvdyB1cGxvYWRf bWFuaWZlc3QKKwkJCQljcmVhdGVfcmVwbGljYXRpb25fc2xvdCBkcm9wX3JlcGxpY2F0aW9uX3Ns b3QKKwkJCQlhbHRlcl9yZXBsaWNhdGlvbl9zbG90IGlkZW50aWZ5X3N5c3RlbSByZWFkX3JlcGxp Y2F0aW9uX3Nsb3QKKwkJCQl0aW1lbGluZV9oaXN0b3J5IHNob3cgdXBsb2FkX21hbmlmZXN0CiAl dHlwZSA8bGlzdD4JZ2VuZXJpY19vcHRpb25fbGlzdAogJXR5cGUgPGRlZmVsdD4JZ2VuZXJpY19v cHRpb24KICV0eXBlIDx1aW50dmFsPglvcHRfdGltZWxpbmUKQEAgLTExMiw2ICsxMTQsNyBAQCBj b21tYW5kOgogCQkJfCBzdGFydF9sb2dpY2FsX3JlcGxpY2F0aW9uCiAJCQl8IGNyZWF0ZV9yZXBs aWNhdGlvbl9zbG90CiAJCQl8IGRyb3BfcmVwbGljYXRpb25fc2xvdAorCQkJfCBhbHRlcl9yZXBs aWNhdGlvbl9zbG90CiAJCQl8IHJlYWRfcmVwbGljYXRpb25fc2xvdAogCQkJfCB0aW1lbGluZV9o aXN0b3J5CiAJCQl8IHNob3cKQEAgLTI1OSw2ICsyNjIsMTggQEAgZHJvcF9yZXBsaWNhdGlvbl9z bG90OgogCQkJCX0KIAkJCTsKIAorLyogQUxURVJfUkVQTElDQVRJT05fU0xPVCBzbG90ICovCith bHRlcl9yZXBsaWNhdGlvbl9zbG90OgorCQkJS19BTFRFUl9SRVBMSUNBVElPTl9TTE9UIElERU5U ICcoJyBnZW5lcmljX29wdGlvbl9saXN0ICcpJworCQkJCXsKKwkJCQkJQWx0ZXJSZXBsaWNhdGlv blNsb3RDbWQgKmNtZDsKKwkJCQkJY21kID0gbWFrZU5vZGUoQWx0ZXJSZXBsaWNhdGlvblNsb3RD bWQpOworCQkJCQljbWQtPnNsb3RuYW1lID0gJDI7CisJCQkJCWNtZC0+b3B0aW9ucyA9ICQ0Owor CQkJCQkkJCA9IChOb2RlICopIGNtZDsKKwkJCQl9CisJCQk7CisKIC8qCiAgKiBTVEFSVF9SRVBM SUNBVElPTiBbU0xPVCBzbG90XSBbUEhZU0lDQUxdICVYLyVYIFtUSU1FTElORSAlZF0KICAqLwpA QCAtNDEwLDYgKzQyNSw3IEBAIGlkZW50X29yX2tleXdvcmQ6CiAJCQl8IEtfU1RBUlRfUkVQTElD QVRJT04JCQl7ICQkID0gInN0YXJ0X3JlcGxpY2F0aW9uIjsgfQogCQkJfCBLX0NSRUFURV9SRVBM SUNBVElPTl9TTE9UCXsgJCQgPSAiY3JlYXRlX3JlcGxpY2F0aW9uX3Nsb3QiOyB9CiAJCQl8IEtf RFJPUF9SRVBMSUNBVElPTl9TTE9UCQl7ICQkID0gImRyb3BfcmVwbGljYXRpb25fc2xvdCI7IH0K KwkJCXwgS19BTFRFUl9SRVBMSUNBVElPTl9TTE9UCQl7ICQkID0gImFsdGVyX3JlcGxpY2F0aW9u X3Nsb3QiOyB9CiAJCQl8IEtfVElNRUxJTkVfSElTVE9SWQkJCXsgJCQgPSAidGltZWxpbmVfaGlz dG9yeSI7IH0KIAkJCXwgS19XQUlUCQkJCQkJeyAkJCA9ICJ3YWl0IjsgfQogCQkJfCBLX1RJTUVM SU5FCQkJCQl7ICQkID0gInRpbWVsaW5lIjsgfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vcmVwbF9zY2FubmVyLmwgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9yZXBsX3Nj YW5uZXIubAppbmRleCA2ZmE2MjU2MTdiLi5lN2RlZjgwMDY1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9yZXBsX3NjYW5uZXIubAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9yZXBsX3NjYW5uZXIubApAQCAtMTI1LDYgKzEyNSw3IEBAIFRJTUVMSU5FCQkJeyByZXR1 cm4gS19USU1FTElORTsgfQogU1RBUlRfUkVQTElDQVRJT04JeyByZXR1cm4gS19TVEFSVF9SRVBM SUNBVElPTjsgfQogQ1JFQVRFX1JFUExJQ0FUSU9OX1NMT1QJCXsgcmV0dXJuIEtfQ1JFQVRFX1JF UExJQ0FUSU9OX1NMT1Q7IH0KIERST1BfUkVQTElDQVRJT05fU0xPVAkJeyByZXR1cm4gS19EUk9Q X1JFUExJQ0FUSU9OX1NMT1Q7IH0KK0FMVEVSX1JFUExJQ0FUSU9OX1NMT1QJCXsgcmV0dXJuIEtf QUxURVJfUkVQTElDQVRJT05fU0xPVDsgfQogVElNRUxJTkVfSElTVE9SWQl7IHJldHVybiBLX1RJ TUVMSU5FX0hJU1RPUlk7IH0KIFBIWVNJQ0FMCQkJeyByZXR1cm4gS19QSFlTSUNBTDsgfQogUkVT RVJWRV9XQUwJCQl7IHJldHVybiBLX1JFU0VSVkVfV0FMOyB9CkBAIC0zMDIsNiArMzAzLDcgQEAg cmVwbGljYXRpb25fc2Nhbm5lcl9pc19yZXBsaWNhdGlvbl9jb21tYW5kKHZvaWQpCiAJCWNhc2Ug S19TVEFSVF9SRVBMSUNBVElPTjoKIAkJY2FzZSBLX0NSRUFURV9SRVBMSUNBVElPTl9TTE9UOgog CQljYXNlIEtfRFJPUF9SRVBMSUNBVElPTl9TTE9UOgorCQljYXNlIEtfQUxURVJfUkVQTElDQVRJ T05fU0xPVDoKIAkJY2FzZSBLX1JFQURfUkVQTElDQVRJT05fU0xPVDoKIAkJY2FzZSBLX1RJTUVM SU5FX0hJU1RPUlk6CiAJCWNhc2UgS19VUExPQURfTUFOSUZFU1Q6CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 LmMKaW5kZXggNTJkYTY5NGM3OS4uNjk2Mzc2NDAwZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpA QCAtOTAsNyArOTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZXBsaWNhdGlvblNsb3RPbkRpc2sKIAlz aXplb2YoUmVwbGljYXRpb25TbG90T25EaXNrKSAtIFJlcGxpY2F0aW9uU2xvdE9uRGlza0NvbnN0 YW50U2l6ZQogCiAjZGVmaW5lIFNMT1RfTUFHSUMJCTB4MTA1MUNBMQkvKiBmb3JtYXQgaWRlbnRp ZmllciAqLwotI2RlZmluZSBTTE9UX1ZFUlNJT04JMwkJLyogdmVyc2lvbiBmb3IgbmV3IGZpbGVz ICovCisjZGVmaW5lIFNMT1RfVkVSU0lPTgk0CQkvKiB2ZXJzaW9uIGZvciBuZXcgZmlsZXMgKi8K IAogLyogQ29udHJvbCBhcnJheSBmb3IgcmVwbGljYXRpb24gc2xvdCBtYW5hZ2VtZW50ICovCiBS ZXBsaWNhdGlvblNsb3RDdGxEYXRhICpSZXBsaWNhdGlvblNsb3RDdGwgPSBOVUxMOwpAQCAtMjQ4 LDEwICsyNDgsMTMgQEAgUmVwbGljYXRpb25TbG90VmFsaWRhdGVOYW1lKGNvbnN0IGNoYXIgKm5h bWUsIGludCBlbGV2ZWwpCiAgKiAgICAgZHVyaW5nIGdldHRpbmcgY2hhbmdlcywgaWYgdGhlIHR3 b19waGFzZSBvcHRpb24gaXMgZW5hYmxlZCBpdCBjYW4gc2tpcAogICogICAgIHByZXBhcmUgYmVj YXVzZSBieSB0aGF0IHRpbWUgc3RhcnQgZGVjb2RpbmcgcG9pbnQgaGFzIGJlZW4gbW92ZWQuIFNv IHRoZQogICogICAgIHVzZXIgd2lsbCBvbmx5IGdldCBjb21taXQgcHJlcGFyZWQuCisgKiBmYWls b3ZlcjogSWYgZW5hYmxlZCwgYWxsb3dzIHRoZSBzbG90IHRvIGJlIHN5bmNlZCB0byBwaHlzaWNh bCBzdGFuZGJ5cyBzbworICogICAgIHRoYXQgbG9naWNhbCByZXBsaWNhdGlvbiBjYW4gYmUgcmVz dW1lZCBhZnRlciBmYWlsb3Zlci4KICAqLwogdm9pZAogUmVwbGljYXRpb25TbG90Q3JlYXRlKGNv bnN0IGNoYXIgKm5hbWUsIGJvb2wgZGJfc3BlY2lmaWMsCi0JCQkJCSAgUmVwbGljYXRpb25TbG90 UGVyc2lzdGVuY3kgcGVyc2lzdGVuY3ksIGJvb2wgdHdvX3BoYXNlKQorCQkJCQkgIFJlcGxpY2F0 aW9uU2xvdFBlcnNpc3RlbmN5IHBlcnNpc3RlbmN5LAorCQkJCQkgIGJvb2wgdHdvX3BoYXNlLCBi b29sIGZhaWxvdmVyKQogewogCVJlcGxpY2F0aW9uU2xvdCAqc2xvdCA9IE5VTEw7CiAJaW50CQkJ aTsKQEAgLTMxMSw2ICszMTQsNyBAQCBSZXBsaWNhdGlvblNsb3RDcmVhdGUoY29uc3QgY2hhciAq bmFtZSwgYm9vbCBkYl9zcGVjaWZpYywKIAlzbG90LT5kYXRhLnBlcnNpc3RlbmN5ID0gcGVyc2lz dGVuY3k7CiAJc2xvdC0+ZGF0YS50d29fcGhhc2UgPSB0d29fcGhhc2U7CiAJc2xvdC0+ZGF0YS50 d29fcGhhc2VfYXQgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwlzbG90LT5kYXRhLmZhaWxvdmVyID0g ZmFpbG92ZXI7CiAKIAkvKiBhbmQgdGhlbiBkYXRhIG9ubHkgcHJlc2VudCBpbiBzaGFyZWQgbWVt b3J5ICovCiAJc2xvdC0+anVzdF9kaXJ0aWVkID0gZmFsc2U7CkBAIC02NzksNiArNjgzLDMxIEBA IFJlcGxpY2F0aW9uU2xvdERyb3AoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBub3dhaXQpCiAJUmVw bGljYXRpb25TbG90RHJvcEFjcXVpcmVkKCk7CiB9CiAKKy8qCisgKiBDaGFuZ2UgdGhlIGRlZmlu aXRpb24gb2YgdGhlIHNsb3QgaWRlbnRpZmllZCBieSB0aGUgc3BlY2lmaWVkIG5hbWUuCisgKi8K K3ZvaWQKK1JlcGxpY2F0aW9uU2xvdEFsdGVyKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgZmFpbG92 ZXIpCit7CisJQXNzZXJ0KE15UmVwbGljYXRpb25TbG90ID09IE5VTEwpOworCisJUmVwbGljYXRp b25TbG90QWNxdWlyZShuYW1lLCB0cnVlKTsKKworCWlmIChTbG90SXNQaHlzaWNhbChNeVJlcGxp Y2F0aW9uU2xvdCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCisJCQkJZXJybXNnKCJjYW5ub3QgdXNlICVzIHdpdGggYSBwaHlz aWNhbCByZXBsaWNhdGlvbiBzbG90IiwKKwkJCQkJICAgIkFMVEVSX1JFUExJQ0FUSU9OX1NMT1Qi KSk7CisKKwlTcGluTG9ja0FjcXVpcmUoJk15UmVwbGljYXRpb25TbG90LT5tdXRleCk7CisJTXlS ZXBsaWNhdGlvblNsb3QtPmRhdGEuZmFpbG92ZXIgPSBmYWlsb3ZlcjsKKwlTcGluTG9ja1JlbGVh c2UoJk15UmVwbGljYXRpb25TbG90LT5tdXRleCk7CisKKwlSZXBsaWNhdGlvblNsb3RNYXJrRGly dHkoKTsKKwlSZXBsaWNhdGlvblNsb3RTYXZlKCk7CisJUmVwbGljYXRpb25TbG90UmVsZWFzZSgp OworfQorCiAvKgogICogUGVybWFuZW50bHkgZHJvcCB0aGUgY3VycmVudGx5IGFjcXVpcmVkIHJl cGxpY2F0aW9uIHNsb3QuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3RmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKaW5kZXgg Y2FkMzVkY2U3Zi4uYzkzZGJhODU1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMK QEAgLTQyLDcgKzQyLDggQEAgY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoY2hhciAq bmFtZSwgYm9vbCBpbW1lZGlhdGVseV9yZXNlcnZlLAogCiAJLyogYWNxdWlyZSByZXBsaWNhdGlv biBzbG90LCB0aGlzIHdpbGwgY2hlY2sgZm9yIGNvbmZsaWN0aW5nIG5hbWVzICovCiAJUmVwbGlj YXRpb25TbG90Q3JlYXRlKG5hbWUsIGZhbHNlLAotCQkJCQkJICB0ZW1wb3JhcnkgPyBSU19URU1Q T1JBUlkgOiBSU19QRVJTSVNURU5ULCBmYWxzZSk7CisJCQkJCQkgIHRlbXBvcmFyeSA/IFJTX1RF TVBPUkFSWSA6IFJTX1BFUlNJU1RFTlQsIGZhbHNlLAorCQkJCQkJICBmYWxzZSk7CiAKIAlpZiAo aW1tZWRpYXRlbHlfcmVzZXJ2ZSkKIAl7CkBAIC0xMTcsNiArMTE4LDcgQEAgcGdfY3JlYXRlX3Bo eXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoUEdfRlVOQ1RJT05fQVJHUykKIHN0YXRpYyB2b2lkCiBj cmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KGNoYXIgKm5hbWUsIGNoYXIgKnBsdWdpbiwK IAkJCQkJCQkJYm9vbCB0ZW1wb3JhcnksIGJvb2wgdHdvX3BoYXNlLAorCQkJCQkJCQlib29sIGZh aWxvdmVyLAogCQkJCQkJCQlYTG9nUmVjUHRyIHJlc3RhcnRfbHNuLAogCQkJCQkJCQlib29sIGZp bmRfc3RhcnRwb2ludCkKIHsKQEAgLTEzMyw3ICsxMzUsOCBAQCBjcmVhdGVfbG9naWNhbF9yZXBs aWNhdGlvbl9zbG90KGNoYXIgKm5hbWUsIGNoYXIgKnBsdWdpbiwKIAkgKiBlcnJvciBhcyB3ZWxs LgogCSAqLwogCVJlcGxpY2F0aW9uU2xvdENyZWF0ZShuYW1lLCB0cnVlLAotCQkJCQkJICB0ZW1w b3JhcnkgPyBSU19URU1QT1JBUlkgOiBSU19FUEhFTUVSQUwsIHR3b19waGFzZSk7CisJCQkJCQkg IHRlbXBvcmFyeSA/IFJTX1RFTVBPUkFSWSA6IFJTX0VQSEVNRVJBTCwgdHdvX3BoYXNlLAorCQkJ CQkJICBmYWlsb3Zlcik7CiAKIAkvKgogCSAqIENyZWF0ZSBsb2dpY2FsIGRlY29kaW5nIGNvbnRl eHQgdG8gZmluZCBzdGFydCBwb2ludCBvciwgaWYgd2UgZG9uJ3QKQEAgLTE3MSw2ICsxNzQsNyBA QCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KFBHX0ZVTkNUSU9OX0FSR1MpCiAJ TmFtZQkJcGx1Z2luID0gUEdfR0VUQVJHX05BTUUoMSk7CiAJYm9vbAkJdGVtcG9yYXJ5ID0gUEdf R0VUQVJHX0JPT0woMik7CiAJYm9vbAkJdHdvX3BoYXNlID0gUEdfR0VUQVJHX0JPT0woMyk7CisJ Ym9vbAkJZmFpbG92ZXIgPSBQR19HRVRBUkdfQk9PTCg0KTsKIAlEYXR1bQkJcmVzdWx0OwogCVR1 cGxlRGVzYwl0dXBkZXNjOwogCUhlYXBUdXBsZQl0dXBsZTsKQEAgLTE4OCw2ICsxOTIsNyBAQCBw Z19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJ CQkJCQlOYW1lU3RyKCpwbHVnaW4pLAogCQkJCQkJCQkJdGVtcG9yYXJ5LAogCQkJCQkJCQkJdHdv X3BoYXNlLAorCQkJCQkJCQkJZmFpbG92ZXIsCiAJCQkJCQkJCQlJbnZhbGlkWExvZ1JlY1B0ciwK IAkJCQkJCQkJCXRydWUpOwogCkBAIC0yMzIsNyArMjM3LDcgQEAgcGdfZHJvcF9yZXBsaWNhdGlv bl9zbG90KFBHX0ZVTkNUSU9OX0FSR1MpCiBEYXR1bQogcGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3Rz KFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0jZGVmaW5lIFBHX0dFVF9SRVBMSUNBVElPTl9TTE9UU19D T0xTIDE1CisjZGVmaW5lIFBHX0dFVF9SRVBMSUNBVElPTl9TTE9UU19DT0xTIDE2CiAJUmV0dXJu U2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOwog CVhMb2dSZWNQdHIJY3VycmxzbjsKIAlpbnQJCQlzbG90bm87CkBAIC00MjYsNiArNDMxLDggQEAg cGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQl9CiAJCX0KIAor CQl2YWx1ZXNbaSsrXSA9IEJvb2xHZXREYXR1bShzbG90X2NvbnRlbnRzLmRhdGEuZmFpbG92ZXIp OworCiAJCUFzc2VydChpID09IFBHX0dFVF9SRVBMSUNBVElPTl9TTE9UU19DT0xTKTsKIAogCQl0 dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLApA QCAtNzgyLDExICs3ODksMjAgQEAgY29weV9yZXBsaWNhdGlvbl9zbG90KEZ1bmN0aW9uQ2FsbElu Zm8gZmNpbmZvLCBib29sIGxvZ2ljYWxfc2xvdCkKIAkJICogV2UgbXVzdCBub3QgdHJ5IHRvIHJl YWQgV0FMLCBzaW5jZSB3ZSBoYXZlbid0IHJlc2VydmVkIGl0IHlldCAtLQogCQkgKiBoZW5jZSBw YXNzIGZpbmRfc3RhcnRwb2ludCBmYWxzZS4gIGNvbmZpcm1lZF9mbHVzaCB3aWxsIGJlIHNldAog CQkgKiBiZWxvdywgYnkgY29weWluZyBmcm9tIHRoZSBzb3VyY2Ugc2xvdC4KKwkJICoKKwkJICog VG8gYXZvaWQgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSBzbG90c3luYyB3b3JrZXIgd2hlbiB0 aGUKKwkJICogcmVzdGFydF9sc24gb2YgYSByZXBsaWNhdGlvbiBzbG90IGdvZXMgYmFja3dhcmRz LCB3ZSBzZXQgdGhlCisJCSAqIGZhaWxvdmVyIG9wdGlvbiB0byBmYWxzZSBoZXJlLiBUaGlzIHNp dHVhdGlvbiBvY2N1cnMgd2hlbiBhIHNsb3Qgb24KKwkJICogdGhlIHByaW1hcnkgc2VydmVyIGlz IGRyb3BwZWQgYW5kIGltbWVkaWF0ZWx5IHJlcGxhY2VkIHdpdGggYSBuZXcKKwkJICogc2xvdCBv ZiB0aGUgc2FtZSBuYW1lLCBjcmVhdGVkIGJ5IGNvcHlpbmcgZnJvbSBhbm90aGVyIGV4aXN0aW5n CisJCSAqIHNsb3QuIEhvd2V2ZXIsIHRoZSBzbG90c3luYyB3b3JrZXIgd2lsbCBvbmx5IG9ic2Vy dmUgdGhlIHJlc3RhcnRfbHNuCisJCSAqIG9mIHRoZSBzYW1lIHNsb3QgZ29pbmcgYmFja3dhcmRz LgogCQkgKi8KIAkJY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdChOYW1lU3RyKCpkc3Rf bmFtZSksCiAJCQkJCQkJCQkJcGx1Z2luLAogCQkJCQkJCQkJCXRlbXBvcmFyeSwKIAkJCQkJCQkJ CQlmYWxzZSwKKwkJCQkJCQkJCQlmYWxzZSwKIAkJCQkJCQkJCQlzcmNfcmVzdGFydF9sc24sCiAJ CQkJCQkJCQkJZmFsc2UpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCmlu ZGV4IGUwMDM5NWZmMmIuLmZmYWNkNTVlNWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVj ZWl2ZXIuYwpAQCAtMzg3LDcgKzM4Nyw3IEBAIFdhbFJlY2VpdmVyTWFpbih2b2lkKQogCQkJCQkg InBnX3dhbHJlY2VpdmVyXyVsbGQiLAogCQkJCQkgKGxvbmcgbG9uZyBpbnQpIHdhbHJjdl9nZXRf YmFja2VuZF9waWQod3Jjb25uKSk7CiAKLQkJCXdhbHJjdl9jcmVhdGVfc2xvdCh3cmNvbm4sIHNs b3RuYW1lLCB0cnVlLCBmYWxzZSwgMCwgTlVMTCk7CisJCQl3YWxyY3ZfY3JlYXRlX3Nsb3Qod3Jj b25uLCBzbG90bmFtZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAwLCBOVUxMKTsKIAogCQkJU3Bpbkxv Y2tBY3F1aXJlKCZ3YWxyY3YtPm11dGV4KTsKIAkJCXN0cmxjcHkod2FscmN2LT5zbG90bmFtZSwg c2xvdG5hbWUsIE5BTUVEQVRBTEVOKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5k ZXggMDg3MDMxZTlkYy4uNzdjOGJhYTMyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmMKQEAgLTExMjYsMTIgKzExMjYsMTMgQEAgc3RhdGljIHZvaWQKIHBhcnNlQ3JlYXRlUmVwbFNs b3RPcHRpb25zKENyZWF0ZVJlcGxpY2F0aW9uU2xvdENtZCAqY21kLAogCQkJCQkJICAgYm9vbCAq cmVzZXJ2ZV93YWwsCiAJCQkJCQkgICBDUlNTbmFwc2hvdEFjdGlvbiAqc25hcHNob3RfYWN0aW9u LAotCQkJCQkJICAgYm9vbCAqdHdvX3BoYXNlKQorCQkJCQkJICAgYm9vbCAqdHdvX3BoYXNlLCBi b29sICpmYWlsb3ZlcikKIHsKIAlMaXN0Q2VsbCAgICpsYzsKIAlib29sCQlzbmFwc2hvdF9hY3Rp b25fZ2l2ZW4gPSBmYWxzZTsKIAlib29sCQlyZXNlcnZlX3dhbF9naXZlbiA9IGZhbHNlOwogCWJv b2wJCXR3b19waGFzZV9naXZlbiA9IGZhbHNlOworCWJvb2wJCWZhaWxvdmVyX2dpdmVuID0gZmFs c2U7CiAKIAkvKiBQYXJzZSBvcHRpb25zICovCiAJZm9yZWFjaChsYywgY21kLT5vcHRpb25zKQpA QCAtMTE4MSw2ICsxMTgyLDE1IEBAIHBhcnNlQ3JlYXRlUmVwbFNsb3RPcHRpb25zKENyZWF0ZVJl cGxpY2F0aW9uU2xvdENtZCAqY21kLAogCQkJdHdvX3BoYXNlX2dpdmVuID0gdHJ1ZTsKIAkJCSp0 d29fcGhhc2UgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKIAkJfQorCQllbHNlIGlmIChzdHJjbXAo ZGVmZWwtPmRlZm5hbWUsICJmYWlsb3ZlciIpID09IDApCisJCXsKKwkJCWlmIChmYWlsb3Zlcl9n aXZlbiB8fCBjbWQtPmtpbmQgIT0gUkVQTElDQVRJT05fS0lORF9MT0dJQ0FMKQorCQkJCWVyZXBv cnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkg ZXJybXNnKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucyIpKSk7CisJCQlmYWlsb3Zl cl9naXZlbiA9IHRydWU7CisJCQkqZmFpbG92ZXIgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJ fQogCQllbHNlCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9wdGlvbjogJXMiLCBkZWZl bC0+ZGVmbmFtZSk7CiAJfQpAQCAtMTE5Nyw2ICsxMjA3LDcgQEAgQ3JlYXRlUmVwbGljYXRpb25T bG90KENyZWF0ZVJlcGxpY2F0aW9uU2xvdENtZCAqY21kKQogCWNoYXIJICAgKnNsb3RfbmFtZTsK IAlib29sCQlyZXNlcnZlX3dhbCA9IGZhbHNlOwogCWJvb2wJCXR3b19waGFzZSA9IGZhbHNlOwor CWJvb2wJCWZhaWxvdmVyID0gZmFsc2U7CiAJQ1JTU25hcHNob3RBY3Rpb24gc25hcHNob3RfYWN0 aW9uID0gQ1JTX0VYUE9SVF9TTkFQU0hPVDsKIAlEZXN0UmVjZWl2ZXIgKmRlc3Q7CiAJVHVwT3V0 cHV0U3RhdGUgKnRzdGF0ZTsKQEAgLTEyMDYsMTMgKzEyMTcsMTQgQEAgQ3JlYXRlUmVwbGljYXRp b25TbG90KENyZWF0ZVJlcGxpY2F0aW9uU2xvdENtZCAqY21kKQogCiAJQXNzZXJ0KCFNeVJlcGxp Y2F0aW9uU2xvdCk7CiAKLQlwYXJzZUNyZWF0ZVJlcGxTbG90T3B0aW9ucyhjbWQsICZyZXNlcnZl X3dhbCwgJnNuYXBzaG90X2FjdGlvbiwgJnR3b19waGFzZSk7CisJcGFyc2VDcmVhdGVSZXBsU2xv dE9wdGlvbnMoY21kLCAmcmVzZXJ2ZV93YWwsICZzbmFwc2hvdF9hY3Rpb24sICZ0d29fcGhhc2Us CisJCQkJCQkJICAgJmZhaWxvdmVyKTsKIAogCWlmIChjbWQtPmtpbmQgPT0gUkVQTElDQVRJT05f S0lORF9QSFlTSUNBTCkKIAl7CiAJCVJlcGxpY2F0aW9uU2xvdENyZWF0ZShjbWQtPnNsb3RuYW1l LCBmYWxzZSwKIAkJCQkJCQkgIGNtZC0+dGVtcG9yYXJ5ID8gUlNfVEVNUE9SQVJZIDogUlNfUEVS U0lTVEVOVCwKLQkJCQkJCQkgIGZhbHNlKTsKKwkJCQkJCQkgIGZhbHNlLCBmYWxzZSk7CiAKIAkJ aWYgKHJlc2VydmVfd2FsKQogCQl7CkBAIC0xMjQzLDcgKzEyNTUsNyBAQCBDcmVhdGVSZXBsaWNh dGlvblNsb3QoQ3JlYXRlUmVwbGljYXRpb25TbG90Q21kICpjbWQpCiAJCSAqLwogCQlSZXBsaWNh dGlvblNsb3RDcmVhdGUoY21kLT5zbG90bmFtZSwgdHJ1ZSwKIAkJCQkJCQkgIGNtZC0+dGVtcG9y YXJ5ID8gUlNfVEVNUE9SQVJZIDogUlNfRVBIRU1FUkFMLAotCQkJCQkJCSAgdHdvX3BoYXNlKTsK KwkJCQkJCQkgIHR3b19waGFzZSwgZmFpbG92ZXIpOwogCiAJCS8qCiAJCSAqIERvIG9wdGlvbnMg Y2hlY2sgZWFybHkgc28gdGhhdCB3ZSBjYW4gYmFpbCBiZWZvcmUgY2FsbGluZyB0aGUKQEAgLTEz OTgsNiArMTQxMCw0MyBAQCBEcm9wUmVwbGljYXRpb25TbG90KERyb3BSZXBsaWNhdGlvblNsb3RD bWQgKmNtZCkKIAlSZXBsaWNhdGlvblNsb3REcm9wKGNtZC0+c2xvdG5hbWUsICFjbWQtPndhaXQp OwogfQogCisvKgorICogUHJvY2VzcyBleHRyYSBvcHRpb25zIGdpdmVuIHRvIEFMVEVSX1JFUExJ Q0FUSU9OX1NMT1QuCisgKi8KK3N0YXRpYyB2b2lkCitQYXJzZUFsdGVyUmVwbFNsb3RPcHRpb25z KEFsdGVyUmVwbGljYXRpb25TbG90Q21kICpjbWQsIGJvb2wgKmZhaWxvdmVyKQoreworCWJvb2wJ CWZhaWxvdmVyX2dpdmVuID0gZmFsc2U7CisKKwkvKiBQYXJzZSBvcHRpb25zICovCisJZm9yZWFj aF9wdHIoRGVmRWxlbSwgZGVmZWwsIGNtZC0+b3B0aW9ucykKKwl7CisJCWlmIChzdHJjbXAoZGVm ZWwtPmRlZm5hbWUsICJmYWlsb3ZlciIpID09IDApCisJCXsKKwkJCWlmIChmYWlsb3Zlcl9naXZl bikKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJS T1IpLAorCQkJCQkJIGVycm1zZygiY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMiKSkp OworCQkJZmFpbG92ZXJfZ2l2ZW4gPSB0cnVlOworCQkJKmZhaWxvdmVyID0gZGVmR2V0Qm9vbGVh bihkZWZlbCk7CisJCX0KKwkJZWxzZQorCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBvcHRp b246ICVzIiwgZGVmZWwtPmRlZm5hbWUpOworCX0KK30KKworLyoKKyAqIENoYW5nZSB0aGUgZGVm aW5pdGlvbiBvZiBhIHJlcGxpY2F0aW9uIHNsb3QuCisgKi8KK3N0YXRpYyB2b2lkCitBbHRlclJl cGxpY2F0aW9uU2xvdChBbHRlclJlcGxpY2F0aW9uU2xvdENtZCAqY21kKQoreworCWJvb2wJCWZh aWxvdmVyID0gZmFsc2U7CisKKwlQYXJzZUFsdGVyUmVwbFNsb3RPcHRpb25zKGNtZCwgJmZhaWxv dmVyKTsKKwlSZXBsaWNhdGlvblNsb3RBbHRlcihjbWQtPnNsb3RuYW1lLCBmYWlsb3Zlcik7Cit9 CisKIC8qCiAgKiBMb2FkIHByZXZpb3VzbHkgaW5pdGlhdGVkIGxvZ2ljYWwgc2xvdCBhbmQgcHJl cGFyZSBmb3Igc2VuZGluZyBkYXRhICh2aWEKICAqIFdhbFNuZExvb3ApLgpAQCAtMTk3MSw2ICsy MDIwLDEzIEBAIGV4ZWNfcmVwbGljYXRpb25fY29tbWFuZChjb25zdCBjaGFyICpjbWRfc3RyaW5n KQogCQkJRW5kUmVwbGljYXRpb25Db21tYW5kKGNtZHRhZyk7CiAJCQlicmVhazsKIAorCQljYXNl IFRfQWx0ZXJSZXBsaWNhdGlvblNsb3RDbWQ6CisJCQljbWR0YWcgPSAiQUxURVJfUkVQTElDQVRJ T05fU0xPVCI7CisJCQlzZXRfcHNfZGlzcGxheShjbWR0YWcpOworCQkJQWx0ZXJSZXBsaWNhdGlv blNsb3QoKEFsdGVyUmVwbGljYXRpb25TbG90Q21kICopIGNtZF9ub2RlKTsKKwkJCUVuZFJlcGxp Y2F0aW9uQ29tbWFuZChjbWR0YWcpOworCQkJYnJlYWs7CisKIAkJY2FzZSBUX1N0YXJ0UmVwbGlj YXRpb25DbWQ6CiAJCQl7CiAJCQkJU3RhcnRSZXBsaWNhdGlvbkNtZCAqY21kID0gKFN0YXJ0UmVw bGljYXRpb25DbWQgKikgY21kX25vZGU7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBiYzIwYTAyNWNlLi4zMzlm MjBlNWU2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ2NDEsNiArNDY0MSw3IEBAIGdldFN1YnNjcmlwdGlv bnMoQXJjaGl2ZSAqZm91dCkKIAlpbnQJCQlpX3N1Ym9yaWdpbjsKIAlpbnQJCQlpX3N1Ym9yaWdp bnJlbW90ZWxzbjsKIAlpbnQJCQlpX3N1YmVuYWJsZWQ7CisJaW50CQkJaV9zdWJmYWlsb3ZlcjsK IAlpbnQJCQlpLAogCQkJCW50dXBzOwogCkBAIC00NzA2LDEwICs0NzA3LDE3IEBAIGdldFN1YnNj cmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAogCWlmIChkb3B0LT5iaW5hcnlfdXBncmFkZSAmJiBm b3V0LT5yZW1vdGVWZXJzaW9uID49IDE3MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIgby5yZW1vdGVfbHNuIEFTIHN1Ym9yaWdpbnJlbW90ZWxzbixcbiIKLQkJCQkJCQkgIiBz LnN1YmVuYWJsZWRcbiIpOworCQkJCQkJCSAiIHMuc3ViZW5hYmxlZCxcbiIpOwogCWVsc2UKIAkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgTlVMTCBBUyBzdWJvcmlnaW5yZW1vdGVsc24s XG4iCi0JCQkJCQkJICIgZmFsc2UgQVMgc3ViZW5hYmxlZFxuIik7CisJCQkJCQkJICIgZmFsc2Ug QVMgc3ViZW5hYmxlZCxcbiIpOworCisJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTcwMDAw KQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIiBzLnN1YmZhaWxvdmVy XG4iKTsKKwllbHNlCisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LAorCQkJCQkJICAiIGZhbHNl IEFTIHN1YmZhaWxvdmVyXG4iKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJ CQkJICJGUk9NIHBnX3N1YnNjcmlwdGlvbiBzXG4iKTsKQEAgLTQ3NDgsNiArNDc1Niw3IEBAIGdl dFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpX3N1Ym9yaWdpbiA9IFBRZm51bWJlcihy ZXMsICJzdWJvcmlnaW4iKTsKIAlpX3N1Ym9yaWdpbnJlbW90ZWxzbiA9IFBRZm51bWJlcihyZXMs ICJzdWJvcmlnaW5yZW1vdGVsc24iKTsKIAlpX3N1YmVuYWJsZWQgPSBQUWZudW1iZXIocmVzLCAi c3ViZW5hYmxlZCIpOworCWlfc3ViZmFpbG92ZXIgPSBQUWZudW1iZXIocmVzLCAic3ViZmFpbG92 ZXIiKTsKIAogCXN1YmluZm8gPSBwZ19tYWxsb2MobnR1cHMgKiBzaXplb2YoU3Vic2NyaXB0aW9u SW5mbykpOwogCkBAIC00NzkyLDYgKzQ4MDEsOCBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUg KmZvdXQpCiAJCQkJcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1Ym9yaWdpbnJlbW90 ZWxzbikpOwogCQlzdWJpbmZvW2ldLnN1YmVuYWJsZWQgPQogCQkJcGdfc3RyZHVwKFBRZ2V0dmFs dWUocmVzLCBpLCBpX3N1YmVuYWJsZWQpKTsKKwkJc3ViaW5mb1tpXS5zdWJmYWlsb3ZlciA9CisJ CQlwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfc3ViZmFpbG92ZXIpKTsKIAogCQkvKiBE ZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1bXAgaXQgKi8KIAkJc2VsZWN0RHVtcGFibGVPYmpl Y3QoJihzdWJpbmZvW2ldLmRvYmopLCBmb3V0KTsKQEAgLTUwMjAsNiArNTAzMSw5IEBAIGR1bXBT dWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5m bykKIAlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnR3b3BoYXNlc3RhdGUsIHR3b19waGFzZV9kaXNh YmxlZCkgIT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHR3b19waGFzZSA9 IG9uIik7CiAKKwlpZiAoc3RyY21wKHN1YmluZm8tPnN1YmZhaWxvdmVyLCAidCIpID09IDApCisJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBmYWlsb3ZlciA9IHRydWUiKTsKKwogCWlm IChzdHJjbXAoc3ViaW5mby0+c3ViZGlzYWJsZW9uZXJyLCAidCIpID09IDApCiAJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBkaXNhYmxlX29uX2Vycm9yID0gdHJ1ZSIpOwogCmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuaAppbmRleCBmMDc3MmQyMTU3Li4yNGUxNjQzNzk0IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTY2NSw2 ICs2NjUsNyBAQCB0eXBlZGVmIHN0cnVjdCBfU3Vic2NyaXB0aW9uSW5mbwogCWNoYXIJICAgKnN1 YnB1YmxpY2F0aW9uczsKIAljaGFyCSAgICpzdWJvcmlnaW47CiAJY2hhcgkgICAqc3Vib3JpZ2lu cmVtb3RlbHNuOworCWNoYXIJICAgKnN1YmZhaWxvdmVyOwogfSBTdWJzY3JpcHRpb25JbmZvOwog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL2luZm8uYyBiL3NyYy9iaW4vcGdf dXBncmFkZS9pbmZvLmMKaW5kZXggNzRlMDJiM2Y4Mi4uMTgzYzJmODRlYiAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ191cGdyYWRlL2luZm8uYworKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvaW5mby5j CkBAIC02NjYsNyArNjY2LDcgQEAgZ2V0X29sZF9jbHVzdGVyX2xvZ2ljYWxfc2xvdF9pbmZvcyhE YkluZm8gKmRiaW5mbywgYm9vbCBsaXZlX2NoZWNrKQogCSAqIHN0YXJ0ZWQgYW5kIHN0b3BwZWQg c2V2ZXJhbCB0aW1lcyBjYXVzaW5nIGFueSB0ZW1wb3Jhcnkgc2xvdHMgdG8gYmUKIAkgKiByZW1v dmVkLgogCSAqLwotCXJlcyA9IGV4ZWN1dGVRdWVyeU9yRGllKGNvbm4sICJTRUxFQ1Qgc2xvdF9u YW1lLCBwbHVnaW4sIHR3b19waGFzZSwgIgorCXJlcyA9IGV4ZWN1dGVRdWVyeU9yRGllKGNvbm4s ICJTRUxFQ1Qgc2xvdF9uYW1lLCBwbHVnaW4sIHR3b19waGFzZSwgZmFpbG92ZXIsICIKIAkJCQkJ CQkiJXMgYXMgY2F1Z2h0X3VwLCBjb25mbGljdF9yZWFzb24gSVMgTk9UIE5VTEwgYXMgaW52YWxp ZCAiCiAJCQkJCQkJIkZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90cyAiCiAJCQkJ CQkJIldIRVJFIHNsb3RfdHlwZSA9ICdsb2dpY2FsJyBBTkQgIgpAQCAtNjg0LDYgKzY4NCw3IEBA IGdldF9vbGRfY2x1c3Rlcl9sb2dpY2FsX3Nsb3RfaW5mb3MoRGJJbmZvICpkYmluZm8sIGJvb2wg bGl2ZV9jaGVjaykKIAkJaW50CQkJaV9zbG90bmFtZTsKIAkJaW50CQkJaV9wbHVnaW47CiAJCWlu dAkJCWlfdHdvcGhhc2U7CisJCWludAkJCWlfZmFpbG92ZXI7CiAJCWludAkJCWlfY2F1Z2h0X3Vw OwogCQlpbnQJCQlpX2ludmFsaWQ7CiAKQEAgLTY5Miw2ICs2OTMsNyBAQCBnZXRfb2xkX2NsdXN0 ZXJfbG9naWNhbF9zbG90X2luZm9zKERiSW5mbyAqZGJpbmZvLCBib29sIGxpdmVfY2hlY2spCiAJ CWlfc2xvdG5hbWUgPSBQUWZudW1iZXIocmVzLCAic2xvdF9uYW1lIik7CiAJCWlfcGx1Z2luID0g UFFmbnVtYmVyKHJlcywgInBsdWdpbiIpOwogCQlpX3R3b3BoYXNlID0gUFFmbnVtYmVyKHJlcywg InR3b19waGFzZSIpOworCQlpX2ZhaWxvdmVyID0gUFFmbnVtYmVyKHJlcywgImZhaWxvdmVyIik7 CiAJCWlfY2F1Z2h0X3VwID0gUFFmbnVtYmVyKHJlcywgImNhdWdodF91cCIpOwogCQlpX2ludmFs aWQgPSBQUWZudW1iZXIocmVzLCAiaW52YWxpZCIpOwogCkBAIC03MDIsNiArNzA0LDcgQEAgZ2V0 X29sZF9jbHVzdGVyX2xvZ2ljYWxfc2xvdF9pbmZvcyhEYkluZm8gKmRiaW5mbywgYm9vbCBsaXZl X2NoZWNrKQogCQkJY3Vyci0+c2xvdG5hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIHNs b3RudW0sIGlfc2xvdG5hbWUpKTsKIAkJCWN1cnItPnBsdWdpbiA9IHBnX3N0cmR1cChQUWdldHZh bHVlKHJlcywgc2xvdG51bSwgaV9wbHVnaW4pKTsKIAkJCWN1cnItPnR3b19waGFzZSA9IChzdHJj bXAoUFFnZXR2YWx1ZShyZXMsIHNsb3RudW0sIGlfdHdvcGhhc2UpLCAidCIpID09IDApOworCQkJ Y3Vyci0+ZmFpbG92ZXIgPSAoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBzbG90bnVtLCBpX2ZhaWxv dmVyKSwgInQiKSA9PSAwKTsKIAkJCWN1cnItPmNhdWdodF91cCA9IChzdHJjbXAoUFFnZXR2YWx1 ZShyZXMsIHNsb3RudW0sIGlfY2F1Z2h0X3VwKSwgInQiKSA9PSAwKTsKIAkJCWN1cnItPmludmFs aWQgPSAoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBzbG90bnVtLCBpX2ludmFsaWQpLCAidCIpID09 IDApOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jIGIv c3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYwppbmRleCAxNGEzNmYwNTAzLi4xMGM5NGE2 YzFmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jCisrKyBiL3Ny Yy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMKQEAgLTkxNiw4ICs5MTYsMTAgQEAgY3JlYXRl X2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdHModm9pZCkKIAkJCWFwcGVuZFN0cmluZ0xpdGVyYWxD b25uKHF1ZXJ5LCBzbG90X2luZm8tPnNsb3RuYW1lLCBjb25uKTsKIAkJCWFwcGVuZFBRRXhwQnVm ZmVyKHF1ZXJ5LCAiLCAiKTsKIAkJCWFwcGVuZFN0cmluZ0xpdGVyYWxDb25uKHF1ZXJ5LCBzbG90 X2luZm8tPnBsdWdpbiwgY29ubik7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiwgZmFs c2UsICVzKTsiLAotCQkJCQkJCSAgc2xvdF9pbmZvLT50d29fcGhhc2UgPyAidHJ1ZSIgOiAiZmFs c2UiKTsKKworCQkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIsIGZhbHNlLCAlcywgJXMpOyIs CisJCQkJCQkJICBzbG90X2luZm8tPnR3b19waGFzZSA/ICJ0cnVlIiA6ICJmYWxzZSIsCisJCQkJ CQkJICBzbG90X2luZm8tPmZhaWxvdmVyID8gInRydWUiIDogImZhbHNlIik7CiAKIAkJCVBRY2xl YXIoZXhlY3V0ZVF1ZXJ5T3JEaWUoY29ubiwgIiVzIiwgcXVlcnktPmRhdGEpKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaCBiL3NyYy9iaW4vcGdfdXBncmFk ZS9wZ191cGdyYWRlLmgKaW5kZXggYTFkMDhjM2RhYi4uZDlhODQ4Y2JmZCAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUv cGdfdXBncmFkZS5oCkBAIC0xNjAsNiArMTYwLDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAlib29sCQl0 d29fcGhhc2U7CQkvKiBjYW4gdGhlIHNsb3QgZGVjb2RlIDJQQz8gKi8KIAlib29sCQljYXVnaHRf dXA7CQkvKiBoYXMgdGhlIHNsb3QgY2F1Z2h0IHVwIHRvIGxhdGVzdCBjaGFuZ2VzPyAqLwogCWJv b2wJCWludmFsaWQ7CQkvKiBpZiB0cnVlLCB0aGUgc2xvdCBpcyB1bnVzYWJsZSAqLworCWJvb2wJ CWZhaWxvdmVyOwkJLyogaXMgdGhlIHNsb3QgZGVzaWduYXRlZCB0byBiZSBzeW5jZWQgdG8gdGhl CisJCQkJCQkJCSAqIHBoeXNpY2FsIHN0YW5kYnk/ICovCiB9IExvZ2ljYWxTbG90SW5mbzsKIAog dHlwZWRlZiBzdHJ1Y3QKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwM19sb2dp Y2FsX3Nsb3RzLnBsIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDAzX2xvZ2ljYWxfc2xvdHMucGwK aW5kZXggMGFiMzY4MjQ3Yi4uODNkNzFjMzA4NCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdy YWRlL3QvMDAzX2xvZ2ljYWxfc2xvdHMucGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDAz X2xvZ2ljYWxfc2xvdHMucGwKQEAgLTE3Miw3ICsxNzIsNyBAQCAkc3ViLT5zdGFydDsKICRzdWIt PnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcVsKIAlDUkVBVEUgVEFCTEUgdGJsIChhIGludCk7 Ci0JQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3N1YiBDT05ORUNUSU9OICckb2xkX2Nvbm5z dHInIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViIFdJVEggKHR3b19waGFzZSA9ICd0cnVlJykKKwlD UkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nfc3ViIENPTk5FQ1RJT04gJyRvbGRfY29ubnN0cicg UFVCTElDQVRJT04gcmVncmVzc19wdWIgV0lUSCAodHdvX3BoYXNlID0gJ3RydWUnLCBmYWlsb3Zl ciA9ICd0cnVlJykKIF0pOwogJHN1Yi0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG9sZHB1 YiwgJ3JlZ3Jlc3Nfc3ViJyk7CiAKQEAgLTE5Miw4ICsxOTIsOCBAQCBjb21tYW5kX29rKFtAcGdf dXBncmFkZV9jbWRdLCAncnVuIG9mIHBnX3VwZ3JhZGUgb2Ygb2xkIGNsdXN0ZXInKTsKICMgQ2hl Y2sgdGhhdCB0aGUgc2xvdCAncmVncmVzc19zdWInIGhhcyBtaWdyYXRlZCB0byB0aGUgbmV3IGNs dXN0ZXIKICRuZXdwdWItPnN0YXJ0OwogbXkgJHJlc3VsdCA9ICRuZXdwdWItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJTRUxFQ1Qgc2xvdF9uYW1lLCB0d29fcGhhc2UgRlJPTSBwZ19yZXBsaWNh dGlvbl9zbG90cyIpOwotaXMoJHJlc3VsdCwgcXEocmVncmVzc19zdWJ8dCksICdjaGVjayB0aGUg c2xvdCBleGlzdHMgb24gbmV3IGNsdXN0ZXInKTsKKwkiU0VMRUNUIHNsb3RfbmFtZSwgdHdvX3Bo YXNlLCBmYWlsb3ZlciBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIik7CitpcygkcmVzdWx0LCBx cShyZWdyZXNzX3N1Ynx0fHQpLCAnY2hlY2sgdGhlIHNsb3QgZXhpc3RzIG9uIG5ldyBjbHVzdGVy Jyk7CiAKICMgVXBkYXRlIHRoZSBjb25uZWN0aW9uCiBteSAkbmV3X2Nvbm5zdHIgPSAkbmV3cHVi LT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCAzN2Y5NTE2MzIwLi42 ZDlhZDVkNzRlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMv YmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtNjU2Myw3ICs2NTYzLDggQEAgZGVzY3JpYmVTdWJzY3Jp cHRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAlQR3Jlc3VsdCAgICpy ZXM7CiAJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKIAlzdGF0aWMgY29uc3QgYm9v bCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAotCWZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs c2UsIGZhbHNlfTsKKwkJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2V9OwogCiAJaWYgKHBzZXQuc3ZlcnNp b24gPCAxMDAwMDApCiAJewpAQCAtNjYyNyw2ICs2NjI4LDExIEBAIGRlc2NyaWJlU3Vic2NyaXB0 aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJCQkJCQkJICBnZXR0ZXh0 X25vb3AoIlBhc3N3b3JkIHJlcXVpcmVkIiksCiAJCQkJCQkJICBnZXR0ZXh0X25vb3AoIlJ1biBh cyBvd25lcj8iKSk7CiAKKwkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTcwMDAwKQorCQkJYXBwZW5k UFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkgICIsIHN1YmZhaWxvdmVyIEFTIFwiJXNcIlxuIiwK KwkJCQkJCQkgIGdldHRleHRfbm9vcCgiRmFpbG92ZXIiKSk7CisKIAkJYXBwZW5kUFFFeHBCdWZm ZXIoJmJ1ZiwKIAkJCQkJCSAgIiwgIHN1YnN5bmNjb21taXQgQVMgXCIlc1wiXG4iCiAJCQkJCQkg ICIsICBzdWJjb25uaW5mbyBBUyBcIiVzXCJcbiIsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKaW5kZXggMDk5MTQx NjVlNC4uNmI5YWEyMDhjMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5j CisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwpAQCAtMTk0Myw3ICsxOTQzLDcgQEAg cHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJ Q09NUExFVEVfV0lUSCgiKCIsICJQVUJMSUNBVElPTiIpOwogCS8qIEFMVEVSIFNVQlNDUklQVElP TiA8bmFtZT4gU0VUICggKi8KIAllbHNlIGlmIChIZWFkTWF0Y2hlcygiQUxURVIiLCAiU1VCU0NS SVBUSU9OIiwgTWF0Y2hBbnkpICYmIFRhaWxNYXRjaGVzKCJTRVQiLCAiKCIpKQotCQlDT01QTEVU RV9XSVRIKCJiaW5hcnkiLCAiZGlzYWJsZV9vbl9lcnJvciIsICJvcmlnaW4iLAorCQlDT01QTEVU RV9XSVRIKCJiaW5hcnkiLCAiZGlzYWJsZV9vbl9lcnJvciIsICJmYWlsb3ZlciIsICJvcmlnaW4i LAogCQkJCQkgICJwYXNzd29yZF9yZXF1aXJlZCIsICJydW5fYXNfb3duZXIiLCAic2xvdF9uYW1l IiwKIAkJCQkJICAic3RyZWFtaW5nIiwgInN5bmNocm9ub3VzX2NvbW1pdCIpOwogCS8qIEFMVEVS IFNVQlNDUklQVElPTiA8bmFtZT4gU0tJUCAoICovCkBAIC0zMzM1LDcgKzMzMzUsNyBAQCBwc3Fs X2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCS8qIENv bXBsZXRlICJDUkVBVEUgU1VCU0NSSVBUSU9OIDxuYW1lPiAuLi4gIFdJVEggKCA8b3B0PiIgKi8K IAllbHNlIGlmIChIZWFkTWF0Y2hlcygiQ1JFQVRFIiwgIlNVQlNDUklQVElPTiIpICYmIFRhaWxN YXRjaGVzKCJXSVRIIiwgIigiKSkKIAkJQ09NUExFVEVfV0lUSCgiYmluYXJ5IiwgImNvbm5lY3Qi LCAiY29weV9kYXRhIiwgImNyZWF0ZV9zbG90IiwKLQkJCQkJICAiZGlzYWJsZV9vbl9lcnJvciIs ICJlbmFibGVkIiwgIm9yaWdpbiIsCisJCQkJCSAgImRpc2FibGVfb25fZXJyb3IiLCAiZW5hYmxl ZCIsICJmYWlsb3ZlciIsICJvcmlnaW4iLAogCQkJCQkgICJwYXNzd29yZF9yZXF1aXJlZCIsICJy dW5fYXNfb3duZXIiLCAic2xvdF9uYW1lIiwKIAkJCQkJICAic3RyZWFtaW5nIiwgInN5bmNocm9u b3VzX2NvbW1pdCIsICJ0d29fcGhhc2UiKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXgg NTg4MTFhNjUzMC4uYjllNzQ3ZDcyZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMTEx NSwxNyArMTExMTUsMTcgQEAKICAgcHJvbmFtZSA9PiAncGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3Rz JywgcHJvcm93cyA9PiAnMTAnLCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3JldHNldCA9PiAn dCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywKICAgcHJvYXJn dHlwZXMgPT4gJycsCi0gIHByb2FsbGFyZ3R5cGVzID0+ICd7bmFtZSxuYW1lLHRleHQsb2lkLGJv b2wsYm9vbCxpbnQ0LHhpZCx4aWQscGdfbHNuLHBnX2xzbix0ZXh0LGludDgsYm9vbCx0ZXh0fScs Ci0gIHByb2FyZ21vZGVzID0+ICd7byxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG99JywKLSAg cHJvYXJnbmFtZXMgPT4gJ3tzbG90X25hbWUscGx1Z2luLHNsb3RfdHlwZSxkYXRvaWQsdGVtcG9y YXJ5LGFjdGl2ZSxhY3RpdmVfcGlkLHhtaW4sY2F0YWxvZ194bWluLHJlc3RhcnRfbHNuLGNvbmZp cm1lZF9mbHVzaF9sc24sd2FsX3N0YXR1cyxzYWZlX3dhbF9zaXplLHR3b19waGFzZSxjb25mbGlj dF9yZWFzb259JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tuYW1lLG5hbWUsdGV4dCxvaWQsYm9v bCxib29sLGludDQseGlkLHhpZCxwZ19sc24scGdfbHNuLHRleHQsaW50OCxib29sLHRleHQsYm9v bH0nLAorICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG99 JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tzbG90X25hbWUscGx1Z2luLHNsb3RfdHlwZSxkYXRvaWQs dGVtcG9yYXJ5LGFjdGl2ZSxhY3RpdmVfcGlkLHhtaW4sY2F0YWxvZ194bWluLHJlc3RhcnRfbHNu LGNvbmZpcm1lZF9mbHVzaF9sc24sd2FsX3N0YXR1cyxzYWZlX3dhbF9zaXplLHR3b19waGFzZSxj b25mbGljdF9yZWFzb24sZmFpbG92ZXJ9JywKICAgcHJvc3JjID0+ICdwZ19nZXRfcmVwbGljYXRp b25fc2xvdHMnIH0sCiB7IG9pZCA9PiAnMzc4NicsIGRlc2NyID0+ICdzZXQgdXAgYSBsb2dpY2Fs IHJlcGxpY2F0aW9uIHNsb3QnLAogICBwcm9uYW1lID0+ICdwZ19jcmVhdGVfbG9naWNhbF9yZXBs aWNhdGlvbl9zbG90JywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9wYXJhbGxlbCA9PiAndScs IHByb3JldHR5cGUgPT4gJ3JlY29yZCcsCi0gIHByb2FyZ3R5cGVzID0+ICduYW1lIG5hbWUgYm9v bCBib29sJywKLSAgcHJvYWxsYXJndHlwZXMgPT4gJ3tuYW1lLG5hbWUsYm9vbCxib29sLG5hbWUs cGdfbHNufScsCi0gIHByb2FyZ21vZGVzID0+ICd7aSxpLGksaSxvLG99JywKLSAgcHJvYXJnbmFt ZXMgPT4gJ3tzbG90X25hbWUscGx1Z2luLHRlbXBvcmFyeSx0d29waGFzZSxzbG90X25hbWUsbHNu fScsCisgIHByb2FyZ3R5cGVzID0+ICduYW1lIG5hbWUgYm9vbCBib29sIGJvb2wnLAorICBwcm9h bGxhcmd0eXBlcyA9PiAne25hbWUsbmFtZSxib29sLGJvb2wsYm9vbCxuYW1lLHBnX2xzbn0nLAor ICBwcm9hcmdtb2RlcyA9PiAne2ksaSxpLGksaSxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tz bG90X25hbWUscGx1Z2luLHRlbXBvcmFyeSx0d29waGFzZSxmYWlsb3ZlcixzbG90X25hbWUsbHNu fScsCiAgIHByb3NyYyA9PiAncGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCcgfSwK IHsgb2lkID0+ICc0MjIyJywKICAgZGVzY3IgPT4gJ2NvcHkgYSBsb2dpY2FsIHJlcGxpY2F0aW9u IHNsb3QsIGNoYW5naW5nIHRlbXBvcmFsaXR5IGFuZCBwbHVnaW4nLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggY2EzMjYyNTU4NS4uYzkyYTgxZTZiNyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC05Myw2ICs5MywxMiBAQCBDQVRBTE9HKHBn X3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVM QVRJT04gQktJX1JPVwogCWJvb2wJCXN1YnJ1bmFzb3duZXI7CS8qIFRydWUgaWYgcmVwbGljYXRp b24gc2hvdWxkIGV4ZWN1dGUgYXMgdGhlCiAJCQkJCQkJCSAqIHN1YnNjcmlwdGlvbiBvd25lciAq LwogCisJYm9vbAkJc3ViZmFpbG92ZXI7CS8qIFRydWUgaWYgdGhlIGFzc29jaWF0ZWQgcmVwbGlj YXRpb24gc2xvdHMKKwkJCQkJCQkJICogKGkuZS4gdGhlIG1haW4gc2xvdCBhbmQgdGhlIHRhYmxl IHN5bmMKKwkJCQkJCQkJICogc2xvdHMpIGluIHRoZSB1cHN0cmVhbSBkYXRhYmFzZSBhcmUgZW5h YmxlZAorCQkJCQkJCQkgKiB0byBiZSBzeW5jaHJvbml6ZWQgdG8gdGhlIHBoeXNpY2FsCisJCQkJ CQkJCSAqIHN0YW5kYnlzLiAqLworCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJs ZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0 aGUgcHVibGlzaGVyICovCiAJdGV4dAkJc3ViY29ubmluZm8gQktJX0ZPUkNFX05PVF9OVUxMOwpA QCAtMTQ1LDYgKzE1MSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlMaXN0CSAg ICpwdWJsaWNhdGlvbnM7CS8qIExpc3Qgb2YgcHVibGljYXRpb24gbmFtZXMgdG8gc3Vic2NyaWJl IHRvICovCiAJY2hhcgkgICAqb3JpZ2luOwkJCS8qIE9ubHkgcHVibGlzaCBkYXRhIG9yaWdpbmF0 aW5nIGZyb20gdGhlCiAJCQkJCQkJCSAqIHNwZWNpZmllZCBvcmlnaW4gKi8KKwlib29sCQlmYWls b3ZlcjsJCS8qIFRydWUgaWYgdGhlIGFzc29jaWF0ZWQgcmVwbGljYXRpb24gc2xvdHMKKwkJCQkJ CQkJICogKGkuZS4gdGhlIG1haW4gc2xvdCBhbmQgdGhlIHRhYmxlIHN5bmMKKwkJCQkJCQkJICog c2xvdHMpIGluIHRoZSB1cHN0cmVhbSBkYXRhYmFzZSBhcmUgZW5hYmxlZAorCQkJCQkJCQkgKiB0 byBiZSBzeW5jaHJvbml6ZWQgdG8gdGhlIHBoeXNpY2FsCisJCQkJCQkJCSAqIHN0YW5kYnlzLiAq LwogfSBTdWJzY3JpcHRpb247CiAKIC8qIERpc2FsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0 cmFuc2FjdGlvbnMuICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9yZXBsbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3JlcGxub2Rlcy5oCmluZGV4IGFmMGEzMzNmMWEuLmVkMjMz MzNlOTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3JlcGxub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3JlcGxub2Rlcy5oCkBAIC03Miw2ICs3MiwxOCBAQCB0eXBlZGVmIHN0 cnVjdCBEcm9wUmVwbGljYXRpb25TbG90Q21kCiB9IERyb3BSZXBsaWNhdGlvblNsb3RDbWQ7CiAK IAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUFMVEVSX1JFUExJQ0FUSU9OX1NMT1Qg Y29tbWFuZAorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVmIHN0cnVjdCBB bHRlclJlcGxpY2F0aW9uU2xvdENtZAoreworCU5vZGVUYWcJCXR5cGU7CisJY2hhcgkgICAqc2xv dG5hbWU7CisJTGlzdAkgICAqb3B0aW9uczsKK30gQWx0ZXJSZXBsaWNhdGlvblNsb3RDbWQ7CisK KwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCVNUQVJUX1JFUExJQ0FUSU9OIGNvbW1h bmQKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Nsb3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRleCA5 ZTM5YWFmMzAzLi41ODVjY2JiNTA0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9zbG90LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBAIC0xMTEsNiAr MTExLDEyIEBAIHR5cGVkZWYgc3RydWN0IFJlcGxpY2F0aW9uU2xvdFBlcnNpc3RlbnREYXRhCiAK IAkvKiBwbHVnaW4gbmFtZSAqLwogCU5hbWVEYXRhCXBsdWdpbjsKKworCS8qCisJICogSXMgdGhp cyBhIGZhaWxvdmVyIHNsb3QgKHN5bmMgY2FuZGlkYXRlIGZvciBwaHlzaWNhbCBzdGFuZGJ5cyk/ IE9ubHkKKwkgKiByZWxldmFudCBmb3IgbG9naWNhbCBzbG90cyBvbiB0aGUgcHJpbWFyeSBzZXJ2 ZXIuCisJICovCisJYm9vbAkJZmFpbG92ZXI7CiB9IFJlcGxpY2F0aW9uU2xvdFBlcnNpc3RlbnRE YXRhOwogCiAvKgpAQCAtMjE4LDkgKzIyNCwxMCBAQCBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNs b3RzU2htZW1Jbml0KHZvaWQpOwogLyogbWFuYWdlbWVudCBvZiBpbmRpdmlkdWFsIHNsb3RzICov CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RDcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgYm9v bCBkYl9zcGVjaWZpYywKIAkJCQkJCQkJICBSZXBsaWNhdGlvblNsb3RQZXJzaXN0ZW5jeSBwZXJz aXN0ZW5jeSwKLQkJCQkJCQkJICBib29sIHR3b19waGFzZSk7CisJCQkJCQkJCSAgYm9vbCB0d29f cGhhc2UsIGJvb2wgZmFpbG92ZXIpOwogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90UGVyc2lz dCh2b2lkKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdERyb3AoY29uc3QgY2hhciAqbmFt ZSwgYm9vbCBub3dhaXQpOworZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90QWx0ZXIoY29uc3Qg Y2hhciAqbmFtZSwgYm9vbCBmYWlsb3Zlcik7CiAKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xv dEFjcXVpcmUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBub3dhaXQpOwogZXh0ZXJuIHZvaWQgUmVw bGljYXRpb25TbG90UmVsZWFzZSh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZl ci5oCmluZGV4IDA4OTk4OTFjZGIuLmY1NjZhOTliYTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d2FscmVjZWl2ZXIuaApAQCAtMzU1LDkgKzM1NSwyMCBAQCB0eXBlZGVmIGNoYXIgKigqd2FscmN2 X2NyZWF0ZV9zbG90X2ZuKSAoV2FsUmVjZWl2ZXJDb25uICpjb25uLAogCQkJCQkJCQkJCWNvbnN0 IGNoYXIgKnNsb3RuYW1lLAogCQkJCQkJCQkJCWJvb2wgdGVtcG9yYXJ5LAogCQkJCQkJCQkJCWJv b2wgdHdvX3BoYXNlLAorCQkJCQkJCQkJCWJvb2wgZmFpbG92ZXIsCiAJCQkJCQkJCQkJQ1JTU25h cHNob3RBY3Rpb24gc25hcHNob3RfYWN0aW9uLAogCQkJCQkJCQkJCVhMb2dSZWNQdHIgKmxzbik7 CiAKKy8qCisgKiB3YWxyY3ZfYWx0ZXJfc2xvdF9mbgorICoKKyAqIENoYW5nZSB0aGUgZGVmaW5p dGlvbiBvZiBhIHJlcGxpY2F0aW9uIHNsb3QuIEN1cnJlbnRseSwgaXQgb25seSBzdXBwb3J0cwor ICogY2hhbmdpbmcgdGhlIGZhaWxvdmVyIHByb3BlcnR5IG9mIHRoZSBzbG90LgorICovCit0eXBl ZGVmIHZvaWQgKCp3YWxyY3ZfYWx0ZXJfc2xvdF9mbikgKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwK KwkJCQkJCQkJCSAgY29uc3QgY2hhciAqc2xvdG5hbWUsCisJCQkJCQkJCQkgIGJvb2wgZmFpbG92 ZXIpOworCiAvKgogICogd2FscmN2X2dldF9iYWNrZW5kX3BpZF9mbgogICoKQEAgLTM5OSw2ICs0 MTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBXYWxSZWNlaXZlckZ1bmN0aW9uc1R5cGUKIAl3YWxyY3Zf cmVjZWl2ZV9mbiB3YWxyY3ZfcmVjZWl2ZTsKIAl3YWxyY3Zfc2VuZF9mbiB3YWxyY3Zfc2VuZDsK IAl3YWxyY3ZfY3JlYXRlX3Nsb3RfZm4gd2FscmN2X2NyZWF0ZV9zbG90OworCXdhbHJjdl9hbHRl cl9zbG90X2ZuIHdhbHJjdl9hbHRlcl9zbG90OwogCXdhbHJjdl9nZXRfYmFja2VuZF9waWRfZm4g d2FscmN2X2dldF9iYWNrZW5kX3BpZDsKIAl3YWxyY3ZfZXhlY19mbiB3YWxyY3ZfZXhlYzsKIAl3 YWxyY3ZfZGlzY29ubmVjdF9mbiB3YWxyY3ZfZGlzY29ubmVjdDsKQEAgLTQyOCw4ICs0NDAsMTAg QEAgZXh0ZXJuIFBHRExMSU1QT1JUIFdhbFJlY2VpdmVyRnVuY3Rpb25zVHlwZSAqV2FsUmVjZWl2 ZXJGdW5jdGlvbnM7CiAJV2FsUmVjZWl2ZXJGdW5jdGlvbnMtPndhbHJjdl9yZWNlaXZlKGNvbm4s IGJ1ZmZlciwgd2FpdF9mZCkKICNkZWZpbmUgd2FscmN2X3NlbmQoY29ubiwgYnVmZmVyLCBuYnl0 ZXMpIFwKIAlXYWxSZWNlaXZlckZ1bmN0aW9ucy0+d2FscmN2X3NlbmQoY29ubiwgYnVmZmVyLCBu Ynl0ZXMpCi0jZGVmaW5lIHdhbHJjdl9jcmVhdGVfc2xvdChjb25uLCBzbG90bmFtZSwgdGVtcG9y YXJ5LCB0d29fcGhhc2UsIHNuYXBzaG90X2FjdGlvbiwgbHNuKSBcCi0JV2FsUmVjZWl2ZXJGdW5j dGlvbnMtPndhbHJjdl9jcmVhdGVfc2xvdChjb25uLCBzbG90bmFtZSwgdGVtcG9yYXJ5LCB0d29f cGhhc2UsIHNuYXBzaG90X2FjdGlvbiwgbHNuKQorI2RlZmluZSB3YWxyY3ZfY3JlYXRlX3Nsb3Qo Y29ubiwgc2xvdG5hbWUsIHRlbXBvcmFyeSwgdHdvX3BoYXNlLCBmYWlsb3Zlciwgc25hcHNob3Rf YWN0aW9uLCBsc24pIFwKKwlXYWxSZWNlaXZlckZ1bmN0aW9ucy0+d2FscmN2X2NyZWF0ZV9zbG90 KGNvbm4sIHNsb3RuYW1lLCB0ZW1wb3JhcnksIHR3b19waGFzZSwgZmFpbG92ZXIsIHNuYXBzaG90 X2FjdGlvbiwgbHNuKQorI2RlZmluZSB3YWxyY3ZfYWx0ZXJfc2xvdChjb25uLCBzbG90bmFtZSwg ZmFpbG92ZXIpIFwKKwlXYWxSZWNlaXZlckZ1bmN0aW9ucy0+d2FscmN2X2FsdGVyX3Nsb3QoY29u biwgc2xvdG5hbWUsIGZhaWxvdmVyKQogI2RlZmluZSB3YWxyY3ZfZ2V0X2JhY2tlbmRfcGlkKGNv bm4pIFwKIAlXYWxSZWNlaXZlckZ1bmN0aW9ucy0+d2FscmN2X2dldF9iYWNrZW5kX3BpZChjb25u KQogI2RlZmluZSB3YWxyY3ZfZXhlYyhjb25uLCBleGVjLCBuUmV0VHlwZXMsIHJldFR5cGVzKSBc CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9zdGFuZGJ5X2ZhaWxvdmVyX3Ns b3RzX3N5bmMucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9zdGFuZGJ5X2ZhaWxvdmVyX3Ns b3RzX3N5bmMucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNjQ2Mjkz YzM5ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUwX3N0YW5kYnlf ZmFpbG92ZXJfc2xvdHNfc3luYy5wbApAQCAtMCwwICsxLDg5IEBACisKKyMgQ29weXJpZ2h0IChj KSAyMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCit1c2Ugc3RyaWN0 OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB0aGF0IHdoZW4gYSBz dWJzY3JpcHRpb24gd2l0aCBmYWlsb3ZlciBlbmFibGVkIGlzIGNyZWF0ZWQsIGl0IHdpbGwgYWx0 ZXIKKyMgdGhlIGZhaWxvdmVyIHByb3BlcnR5IG9mIHRoZSBjb3JyZXNwb25kaW5nIHNsb3Qgb24g dGhlIHB1Ymxpc2hlci4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKyMgQ3JlYXRlIHB1Ymxpc2hlcgorbXkgJHB1Ymxpc2hlciA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiskcHVibGlzaGVyLT5pbml0KGFs bG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRwdWJsaXNoZXItPnN0YXJ0OworCiskcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jl c3NfbXlwdWIgRk9SIEFMTCBUQUJMRVM7IgorKTsKKworbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0g JHB1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKworIyBDcmVhdGUgYSBz dWJzY3JpYmVyIG5vZGUsIHdhaXQgZm9yIHN5bmMgdG8gY29tcGxldGUKK215ICRzdWJzY3JpYmVy MSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcjEnKTsKKyRzdWJz Y3JpYmVyMS0+aW5pdDsKKyRzdWJzY3JpYmVyMS0+c3RhcnQ7CisKKyMgQ3JlYXRlIGEgc2xvdCBv biB0aGUgcHVibGlzaGVyIHdpdGggZmFpbG92ZXIgZGlzYWJsZWQKKyRwdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgJ2luaXQnIEZST00gcGdfY3JlYXRlX2xvZ2ljYWxf cmVwbGljYXRpb25fc2xvdCgnbHN1YjFfc2xvdCcsICdwZ291dHB1dCcsIGZhbHNlLCBmYWxzZSwg ZmFsc2UpOyIKKyk7CisKKyMgQ29uZmlybSB0aGF0IHRoZSBmYWlsb3ZlciBmbGFnIG9uIHRoZSBz bG90IGlzIHR1cm5lZCBvZmYKK2lzKCAkcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsCisJCXF7U0VMRUNUIGZhaWxvdmVyIGZyb20gcGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUg c2xvdF9uYW1lID0gJ2xzdWIxX3Nsb3QnO30KKwkpLAorCSJmIiwKKwknbG9naWNhbCBzbG90IGhh cyBmYWlsb3ZlciBmYWxzZSBvbiB0aGUgcHVibGlzaGVyJyk7CisKKyMgQ3JlYXRlIGEgc3Vic2Ny aXB0aW9uICh1c2luZyB0aGUgc2FtZSBzbG90IGNyZWF0ZWQgYWJvdmUpIHRoYXQgZW5hYmxlcwor IyBmYWlsb3Zlci4KKyRzdWJzY3JpYmVyMS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFU RSBTVUJTQ1JJUFRJT04gcmVncmVzc19teXN1YjEgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25u c3RyJyBQVUJMSUNBVElPTiByZWdyZXNzX215cHViIFdJVEggKHNsb3RfbmFtZSA9IGxzdWIxX3Ns b3QsIGNvcHlfZGF0YT1mYWxzZSwgZmFpbG92ZXIgPSB0cnVlLCBjcmVhdGVfc2xvdCA9IGZhbHNl LCBlbmFibGVkID0gZmFsc2UpOyIKKyk7CisKKyMgQ29uZmlybSB0aGF0IHRoZSBmYWlsb3ZlciBm bGFnIG9uIHRoZSBzbG90IGhhcyBub3cgYmVlbiB0dXJuZWQgb24KK2lzKCAkcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIGZhaWxvdmVyIGZyb20gcGdfcmVw bGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ2xzdWIxX3Nsb3QnO30KKwkpLAorCSJ0 IiwKKwknbG9naWNhbCBzbG90IGhhcyBmYWlsb3ZlciB0cnVlIG9uIHRoZSBwdWJsaXNoZXInKTsK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VGVzdCB0aGF0IGNoYW5naW5nIHRoZSBmYWlsb3ZlciBwcm9wZXJ0eSBvZiBhIHN1YnNjcmlwdGlv biB1cGRhdGVzIHRoZQorIyBjb3JyZXNwb25kaW5nIGZhaWxvdmVyIHByb3BlcnR5IG9mIHRoZSBz bG90LgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KworIyBEaXNhYmxlIGZhaWxvdmVyCiskc3Vic2NyaWJlcjEtPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19teXN1YjEgU0VUIChmYWlsb3ZlciA9IGZh bHNlKSIpOworCisjIENvbmZpcm0gdGhhdCB0aGUgZmFpbG92ZXIgZmxhZyBvbiB0aGUgc2xvdCBo YXMgbm93IGJlZW4gdHVybmVkIG9mZgoraXMoICRwdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bv c3RncmVzJywKKwkJcXtTRUxFQ1QgZmFpbG92ZXIgZnJvbSBwZ19yZXBsaWNhdGlvbl9zbG90cyBX SEVSRSBzbG90X25hbWUgPSAnbHN1YjFfc2xvdCc7fQorCSksCisJImYiLAorCSdsb2dpY2FsIHNs b3QgaGFzIGZhaWxvdmVyIGZhbHNlIG9uIHRoZSBwdWJsaXNoZXInKTsKKworIyBFbmFibGUgZmFp bG92ZXIKKyRzdWJzY3JpYmVyMS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlND UklQVElPTiByZWdyZXNzX215c3ViMSBTRVQgKGZhaWxvdmVyID0gdHJ1ZSkiKTsKKworIyBDb25m aXJtIHRoYXQgdGhlIGZhaWxvdmVyIGZsYWcgb24gdGhlIHNsb3QgaGFzIG5vdyBiZWVuIHR1cm5l ZCBvbgoraXMoICRwdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywKKwkJcXtTRUxF Q1QgZmFpbG92ZXIgZnJvbSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAn bHN1YjFfc2xvdCc7fQorCSksCisJInQiLAorCSdsb2dpY2FsIHNsb3QgaGFzIGZhaWxvdmVyIHRy dWUgb24gdGhlIHB1Ymxpc2hlcicpOworCiskc3Vic2NyaWJlcjEtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc19teXN1YjEiKTsKKworZG9uZV90ZXN0aW5n KCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IDU1ZjJlOTUzNTIuLjU3ODg0 ZDNmZWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0xNDczLDggKzE0NzMs OSBAQCBwZ19yZXBsaWNhdGlvbl9zbG90c3wgU0VMRUNUIGwuc2xvdF9uYW1lLAogICAgIGwud2Fs X3N0YXR1cywKICAgICBsLnNhZmVfd2FsX3NpemUsCiAgICAgbC50d29fcGhhc2UsCi0gICAgbC5j b25mbGljdF9yZWFzb24KLSAgIEZST00gKHBnX2dldF9yZXBsaWNhdGlvbl9zbG90cygpIGwoc2xv dF9uYW1lLCBwbHVnaW4sIHNsb3RfdHlwZSwgZGF0b2lkLCB0ZW1wb3JhcnksIGFjdGl2ZSwgYWN0 aXZlX3BpZCwgeG1pbiwgY2F0YWxvZ194bWluLCByZXN0YXJ0X2xzbiwgY29uZmlybWVkX2ZsdXNo X2xzbiwgd2FsX3N0YXR1cywgc2FmZV93YWxfc2l6ZSwgdHdvX3BoYXNlLCBjb25mbGljdF9yZWFz b24pCisgICAgbC5jb25mbGljdF9yZWFzb24sCisgICAgbC5mYWlsb3ZlcgorICAgRlJPTSAocGdf Z2V0X3JlcGxpY2F0aW9uX3Nsb3RzKCkgbChzbG90X25hbWUsIHBsdWdpbiwgc2xvdF90eXBlLCBk YXRvaWQsIHRlbXBvcmFyeSwgYWN0aXZlLCBhY3RpdmVfcGlkLCB4bWluLCBjYXRhbG9nX3htaW4s IHJlc3RhcnRfbHNuLCBjb25maXJtZWRfZmx1c2hfbHNuLCB3YWxfc3RhdHVzLCBzYWZlX3dhbF9z aXplLCB0d29fcGhhc2UsIGNvbmZsaWN0X3JlYXNvbiwgZmFpbG92ZXIpCiAgICAgIExFRlQgSk9J TiBwZ19kYXRhYmFzZSBkIE9OICgobC5kYXRvaWQgPSBkLm9pZCkpKTsKIHBnX3JvbGVzfCBTRUxF Q1QgcGdfYXV0aGlkLnJvbG5hbWUsCiAgICAgcGdfYXV0aGlkLnJvbHN1cGVyLApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CmluZGV4IGIxNWVkZGJmZjMuLjVmYTIz MGE4OTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9u Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKQEAg LTExNiwxOCArMTE2LDE4IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNCBD T05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVCiBXQVJOSU5HOiAgc3Vi c2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGlu aXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0 aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgcmVmcmVzaCB0aGUgc3Vic2Ny aXB0aW9uLgogXGRScysgcmVncmVzc190ZXN0c3ViNAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNh dGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9u IGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g Ci0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBub25lICAgfCB0ICAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g CistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAg fCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG5vbmUgICB8IHQgICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0IFNFVCAob3JpZ2luID0gYW55KTsKIFxkUnMrIHJl Z3Jlc3NfdGVzdHN1YjQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICAgTmFtZSAgICAgICB8ICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBT dHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8 IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwg VHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCBy ZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAg ICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCBmICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIzOwpAQCAtMTQ1LDEwICsxNDUsMTAgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfdGVzdHN1YiBDT05ORUNUSU9OICdmb29iYXInOwogRVJST1I6ICBpbnZhbGlkIGNvbm5lY3Rp b24gc3RyaW5nIHN5bnRheDogbWlzc2luZyAiPSIgYWZ0ZXIgImZvb2JhciIgaW4gY29ubmVjdGlv biBpbmZvIHN0cmluZwogCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAw LzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29y ZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFN5bmNocm9ub3VzIGNvbW1p dCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgIHwgZiAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfdGVzdHN1YiBTRVQgUFVCTElDQVRJT04gdGVzdHB1YjIsIHRlc3RwdWIzIFdJVEggKHJlZnJl c2ggPSBmYWxzZSk7CkBAIC0xNTcsMTAgKzE1NywxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gJ25ld25hbWUnKTsKIEFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChwYXNzd29yZF9yZXF1aXJlZCA9IGZhbHNlKTsKIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChydW5fYXNfb3duZXIgPSB0cnVl KTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IFN5bmNocm9ub3VzIGNv bW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IGYgICAgICAgICAgICAg ICAgIHwgdCAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdDIgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFt ZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1Ymxp Y2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNh YmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/ IHwgRmFpbG92ZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi Mix0ZXN0cHViM30gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IGYgICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAg ICB8IGYgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0MiB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIFNFVCAocGFzc3dvcmRfcmVxdWlyZWQgPSB0cnVlKTsKQEAgLTE3NiwxMCArMTc2LDEwIEBA IEVSUk9SOiAgdW5yZWNvZ25pemVkIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXI6ICJjcmVhdGVfc2xv dCIKIC0tIG9rCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNLSVAgKGxzbiA9 ICcwLzEyMzQ1Jyk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24g ICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24g ZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5j aHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g Ci0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAg ICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8xMjM0NQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJs ZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8 IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8xMjM0NQogKDEgcm93KQogCiAtLSBvayAtIHdpdGgg bHNuID0gTk9ORQpAQCAtMTg4LDEwICsxODgsMTAgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfdGVzdHN1YiBTS0lQIChsc24gPSBOT05FKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgU0tJUCAobHNuID0gJzAvMCcpOwogRVJST1I6ICBpbnZhbGlkIFdBTCBsb2NhdGlv biAoTFNOKTogMC8wCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24g ICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24g ZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5j aHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g Ci0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAg ICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMK KyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8 ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29t bWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVu IGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAg fCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCBmICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdDIgfCAwLzAKICgxIHJvdykKIAogQkVHSU47CkBAIC0yMjMsMTAgKzIy MywxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViX2ZvbyBTRVQgKHN5bmNo cm9ub3VzX2NvbW1pdCA9IGZvb2Jhcik7CiBFUlJPUjogIGludmFsaWQgdmFsdWUgZm9yIHBhcmFt ZXRlciAic3luY2hyb25vdXNfY29tbWl0IjogImZvb2JhciIKIEhJTlQ6ICBBdmFpbGFibGUgdmFs dWVzOiBsb2NhbCwgcmVtb3RlX3dyaXRlLCByZW1vdGVfYXBwbHksIG9uLCBvZmYuCiBcZFJzKwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgICAgTmFtZSAgICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBvZmYgICAgICAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IGxvY2FsICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdDIgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAg ICAgIE5hbWUgICAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg ICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21t aXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4g YXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29u bmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgcmVncmVzc190ZXN0c3ViX2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCBsb2NhbCAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCiAoMSByb3cpCiAKIC0tIHJlbmFtZSBiYWNr IHRvIGtlZXAgdGhlIHJlc3Qgc2ltcGxlCkBAIC0yNTUsMTkgKzI1NSwxOSBAQCBDUkVBVEUgU1VC U0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QnIFBVQgogV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlz IG5vdCBjb25uZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3Qg bWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlw dGlvbiwgYW5kIHJlZnJlc2ggdGhlIHN1YnNjcmlwdGlvbi4KIFxkUnMrCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9u cwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVk IHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwg RGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93 bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCB0ICAgICAgfCBvZmYgICAgICAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24g fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVy IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tp cCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgb2ZmICAg ICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRF UiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoYmluYXJ5ID0gZmFsc2UpOwogQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwog XGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQg cmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21t aXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4g YXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25u aW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf dGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAg ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKQEAgLTI3 OSwyNyArMjc5LDI3IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5F Q1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJOSU5HOiAgc3Vic2Ny aXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGluaXRp YXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9u IHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgcmVmcmVzaCB0aGUgc3Vic2NyaXB0 aW9uLgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFz c3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAg ICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190 ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0g ICB8IGYgICAgICB8IG9uICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFz ZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQg fCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8 IGYgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg U0VUIChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAg IE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1Ymxp Y2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExT TiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5 IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmln aW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFN5bmNo cm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IGZhbHNlKTsKIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIFxkUnMr Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28t cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVp cmVkIHwgUnVuIGFzIG93bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9u cworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVk IHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwg RGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93 bmVyPyB8IEZhaWxvdmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8g ICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAog KDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRpb24gYWxyZWFkeSBleGlzdHMKQEAgLTMxNCwx MCArMzE0LDEwIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQUREIFBVQkxJ Q0FUSU9OIHRlc3RwdWIxLCB0ZXN0cHViMiBXSVRIIChyZWZyCiBBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIEFERCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAo cmVmcmVzaCA9IGZhbHNlKTsKIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWIxIiBpcyBhbHJl YWR5IGluIHN1YnNjcmlwdGlvbiAicmVncmVzc190ZXN0c3ViIgogXGRScysKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8ICAgICAgICAgUHVibGljYXRpb24gICAgICAgICB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFz c3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAg ICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAg ICAgICBQdWJsaWNhdGlvbiAgICAgICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8 IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg IENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAg ICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiAtLSBm YWlsIC0gcHVibGljYXRpb24gdXNlZCBtb3JlIHRoYW4gb25jZQpAQCAtMzMyLDEwICszMzIsMTAg QEAgRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1YjMiIGlzIG5vdCBpbiBzdWJzY3JpcHRpb24g InJlZ3Jlc3NfdGVzdHN1YiIKIC0tIG9rIC0gZGVsZXRlIHB1YmxpY2F0aW9ucwogQUxURVIgU1VC U0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0 cHViMiBXSVRIIChyZWZyZXNoID0gZmFsc2UpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAg ICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJs aWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwg U3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBM U04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFy eSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3Jp Z2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTeW5j aHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAK Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIERST1AgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKQEAgLTM3MSwxMCArMzcxLDEwIEBAIENSRUFURSBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCcgUFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMg bm90IGNvbm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBt YW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0 aW9uLCBhbmQgcmVmcmVzaCB0aGUgc3Vic2NyaXB0aW9uLgogXGRScysKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z Ci0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3du ZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwg U2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IHAg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAg ICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIg fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lw IExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAg ICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIC0tZmFp bCAtIGFsdGVyIG9mIHR3b19waGFzZSBvcHRpb24gbm90IHN1cHBvcnRlZC4KQEAgLTM4MywxMCAr MzgzLDEwIEBAIEVSUk9SOiAgdW5yZWNvZ25pemVkIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXI6ICJ0 d29fcGhhc2UiCiAtLSBidXQgY2FuIGFsdGVyIHN0cmVhbWluZyB3aGVuIHR3b19waGFzZSBlbmFi bGVkCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0g dHJ1ZSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQ YXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi fSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBvZmYg ICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9m IHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBo YXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAg ICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgZiAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpAQCAtMzk2LDEwICszOTYsMTAgQEAgQ1JFQVRFIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBp cyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0 IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3Jp cHRpb24sIGFuZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCiBcZFJzKwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlv bnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxl ZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8 IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBv d25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwg cCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9u IHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJy b3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3Zl ciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNr aXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAg ICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpA QCAtNDEyLDE4ICs0MTIsMzEgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg Q09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBz dWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8g aW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGlj YXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCByZWZyZXNoIHRoZSBzdWJz Y3JpcHRpb24uCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1 aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAg ICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAg fCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgIHwgZiAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3IgPSB0cnVlKTsKIFxkUnMrCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9u cwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVk IHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwg RGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93 bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBk ICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24g fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVy IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tp cCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAg ICAgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorKDEgcm93KQorCitBTFRF UiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CitE Uk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7CistLSB0ZXN0IGZhaWxvdmVyIG9wdGlv bgorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3Qg PSBmYWxzZSwgZmFpbG92ZXIgPSB0cnVlKTsKK1dBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNy ZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCitISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRp b24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxl IHRoZSBzdWJzY3JpcHRpb24sIGFuZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCitcZFJzKwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBU d28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJl cXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgfCB0ICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0 aW9uLnNxbAppbmRleCA0NDRlNTYzZmYzLi5lNDYwMTE1OGIzIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3N1YnNjcmlwdGlvbi5zcWwKQEAgLTI5MCw2ICsyOTAsMTQgQEAgQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3IgPSB0cnVlKTsKIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIERST1Ag U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKIAorLS0gdGVzdCBmYWlsb3ZlciBvcHRpb24K K0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0g ZmFsc2UsIGZhaWxvdmVyID0gdHJ1ZSk7CisKK1xkUnMrCisKK0FMVEVSIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKK0RST1AgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YjsKKwogLS0gbGV0J3MgZG8gc29tZSB0ZXN0cyB3aXRoIHBnX2NyZWF0 ZV9zdWJzY3JpcHRpb24gcmF0aGVyIHRoYW4gc3VwZXJ1c2VyCiBTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIzOwogCmRpZmYgLS1naXQgYS9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CmluZGV4IGY1ODJlYjU5ZTcuLjNkMjU1OWZlY2EgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CkBAIC04NSw2ICs4NSw3IEBAIEFsdGVyT3duZXJTdG10CiBBbHRlclBvbGljeVN0bXQKIEFs dGVyUHVibGljYXRpb25BY3Rpb24KIEFsdGVyUHVibGljYXRpb25TdG10CitBbHRlclJlcGxpY2F0 aW9uU2xvdENtZAogQWx0ZXJSb2xlU2V0U3RtdAogQWx0ZXJSb2xlU3RtdAogQWx0ZXJTZXFTdG10 CkBAIC0zODc0LDYgKzM4NzUsNyBAQCB2YXJhdHRyaWJfMWJfZQogdmFyYXR0cmliXzRiCiB2Yml0 cwogdmVyaWZpZXJfY29udGV4dAord2FscmN2X2FsdGVyX3Nsb3RfZm4KIHdhbHJjdl9jaGVja19j b25uaW5mb19mbgogd2FscmN2X2Nvbm5lY3RfZm4KIHdhbHJjdl9jcmVhdGVfc2xvdF9mbgotLSAK Mi4zNC4xCgo= --00000000000006ae0b060f0ed540 Content-Type: application/octet-stream; name="v62-0003-Slot-sync-worker-as-a-special-process.patch" Content-Disposition: attachment; filename="v62-0003-Slot-sync-worker-as-a-special-process.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrgap7il2 RnJvbSBlMjlmZmNmOWJhYzc0ZjUyMTJlYmM5OWI3NmEwZmFkZGFkODdiM2Y3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTYgSmFuIDIwMjQgMTU6Mjg6MzcgKzA1MzAKU3ViamVjdDogW1BBVENIIHY2 MiAzLzZdIFNsb3Qtc3luYyB3b3JrZXIgYXMgYSBzcGVjaWFsIHByb2Nlc3MKClRoaXMgcGF0Y2gg YXR0ZW1wdHMgdG8gc3RhcnQgc2xvdC1zeW5jIHdvcmtlciBhcyBhIHNwZWNpYWwgcHJvY2Vzcwp3 aGljaCBpcyBuZWl0aGVyIGEgYmd3b3JrZXIgbm9yIGFuIEF1eGlsaWFyeSBwcm9jZXNzLiBUaGUg YmVuZWZpdAp3ZSBnZXQgaGVyZSBpcyB3ZSBjYW4gY29udHJvbCB0aGUgc3RhcnQtY29uZGl0aW9u cyBvZiB0aGUgd29ya2VyIHdoaWNoCmZ1cnRoZXIgYWxsb3dzIHVzIHRvICdlbmFibGVfc3luY3Ns b3QnIGFzIFBHQ19TSUdIVVAgd2hpY2ggd2FzIG90aGVyd2lzZQphIFBHQ19QT1NUTUFTVEVSIEdV QyB3aGVuIHNsb3RzeW5jIHdvcmtlciB3YXMgcmVnaXN0ZXJlZCBhcyBiZ3dvcmtlci4KLS0tCiBk b2Mvc3JjL3NnbWwvYmd3b3JrZXIuc2dtbCAgICAgICAgICAgICAgICAgfCAgNjUgKy0tLQogc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAgICAgIHwgICAzIC0KIHNyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jICAgICAgICB8ICA4NSArKysrLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyB8IDMyOSArKysrKysrKysrKysrKysr LS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgICAgICAgICAgICB8ICAgOSAr LQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgIHwgIDExIC0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jICAgICB8ICAgMSArCiBzcmMvYmFj a2VuZC91dGlscy9pbml0L21pc2Npbml0LmMgICAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2luaXQvcG9zdGluaXQuYyAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9taXNjYWRt aW4uaCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9i Z3dvcmtlci5oICAgICAgICAgIHwgICAxIC0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtl cl9pbnRlcm5hbC5oICB8ICAgNyArLQogMTMgZmlsZXMgY2hhbmdlZCwgMzU0IGluc2VydGlvbnMo KyksIDE3NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvYmd3b3JrZXIu c2dtbCBiL2RvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sCmluZGV4IGE3Y2ZlNmM1OGMuLjJjMzkz Mzg1YTkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9iZ3dvcmtlci5zZ21sCkBAIC0xMTQsNTkgKzExNCwxOCBAQCB0eXBlZGVmIHN0cnVj dCBCYWNrZ3JvdW5kV29ya2VyCiAKICAgPHBhcmE+CiAgICA8c3RydWN0ZmllbGQ+Ymd3X3N0YXJ0 X3RpbWU8L3N0cnVjdGZpZWxkPiBpcyB0aGUgc2VydmVyIHN0YXRlIGR1cmluZyB3aGljaAotICAg PGNvbW1hbmQ+cG9zdGdyZXM8L2NvbW1hbmQ+IHNob3VsZCBzdGFydCB0aGUgcHJvY2Vzcy4gTm90 ZSB0aGF0IHRoaXMgc2V0dGluZwotICAgb25seSBpbmRpY2F0ZXMgd2hlbiB0aGUgcHJvY2Vzc2Vz IGFyZSB0byBiZSBzdGFydGVkOyB0aGV5IGRvIG5vdCBzdG9wIHdoZW4KLSAgIGEgZGlmZmVyZW50 IHN0YXRlIGlzIHJlYWNoZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6Ci0KLSAgIDx2YXJpYWJsZWxp c3Q+Ci0gICAgPHZhcmxpc3RlbnRyeT4KLSAgICAgPHRlcm0+PGxpdGVyYWw+QmdXb3JrZXJTdGFy dF9Qb3N0bWFzdGVyU3RhcnQ8L2xpdGVyYWw+PC90ZXJtPgotICAgICA8bGlzdGl0ZW0+Ci0gICAg ICA8cGFyYT4KLSAgICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5PkJnV29ya2VyU3RhcnRfUG9zdG1h c3RlclN0YXJ0PC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgotICAgICAgIFN0YXJ0IGFzIHNvb24gYXMg cG9zdGdyZXMgaXRzZWxmIGhhcyBmaW5pc2hlZCBpdHMgb3duIGluaXRpYWxpemF0aW9uOwotICAg ICAgIHByb2Nlc3NlcyByZXF1ZXN0aW5nIHRoaXMgYXJlIG5vdCBlbGlnaWJsZSBmb3IgZGF0YWJh c2UgY29ubmVjdGlvbnMuCi0gICAgICA8L3BhcmE+Ci0gICAgIDwvbGlzdGl0ZW0+Ci0gICAgPC92 YXJsaXN0ZW50cnk+Ci0KLSAgICA8dmFybGlzdGVudHJ5PgotICAgICA8dGVybT48bGl0ZXJhbD5C Z1dvcmtlclN0YXJ0X0NvbnNpc3RlbnRTdGF0ZTwvbGl0ZXJhbD48L3Rlcm0+Ci0gICAgIDxsaXN0 aXRlbT4KLSAgICAgIDxwYXJhPgotICAgICAgIDxpbmRleHRlcm0+PHByaW1hcnk+QmdXb3JrZXJT dGFydF9Db25zaXN0ZW50U3RhdGU8L3ByaW1hcnk+PC9pbmRleHRlcm0+Ci0gICAgICAgU3RhcnQg YXMgc29vbiBhcyBhIGNvbnNpc3RlbnQgc3RhdGUgaGFzIGJlZW4gcmVhY2hlZCBpbiBhIGhvdC1z dGFuZGJ5LAotICAgICAgIGFsbG93aW5nIHByb2Nlc3NlcyB0byBjb25uZWN0IHRvIGRhdGFiYXNl cyBhbmQgcnVuIHJlYWQtb25seSBxdWVyaWVzLgotICAgICAgPC9wYXJhPgotICAgICA8L2xpc3Rp dGVtPgotICAgIDwvdmFybGlzdGVudHJ5PgotCi0gICAgPHZhcmxpc3RlbnRyeT4KLSAgICAgPHRl cm0+PGxpdGVyYWw+QmdXb3JrZXJTdGFydF9Db25zaXN0ZW50U3RhdGVfSG90U3RhbmRieTwvbGl0 ZXJhbD48L3Rlcm0+Ci0gICAgIDxsaXN0aXRlbT4KLSAgICAgIDxwYXJhPgotICAgICAgIDxpbmRl eHRlcm0+PHByaW1hcnk+QmdXb3JrZXJTdGFydF9Db25zaXN0ZW50U3RhdGVfSG90U3RhbmRieTwv cHJpbWFyeT48L2luZGV4dGVybT4KLSAgICAgICBTYW1lIG1lYW5pbmcgYXMgPGxpdGVyYWw+QmdX b3JrZXJTdGFydF9Db25zaXN0ZW50U3RhdGU8L2xpdGVyYWw+IGJ1dAotICAgICAgIGl0IGlzIG1v cmUgc3RyaWN0IGluIHRlcm1zIG9mIHRoZSBzZXJ2ZXIgaS5lLiBzdGFydCB0aGUgd29ya2VyIG9u bHkKLSAgICAgICBpZiBpdCBpcyBob3Qtc3RhbmRieS4KLSAgICAgIDwvcGFyYT4KLSAgICAgPC9s aXN0aXRlbT4KLSAgICA8L3Zhcmxpc3RlbnRyeT4KLQotICAgIDx2YXJsaXN0ZW50cnk+Ci0gICAg IDx0ZXJtPjxsaXRlcmFsPkJnV29ya2VyU3RhcnRfUmVjb3ZlcnlGaW5pc2hlZDwvbGl0ZXJhbD48 L3Rlcm0+Ci0gICAgIDxsaXN0aXRlbT4KLSAgICAgIDxwYXJhPgotICAgICAgIDxpbmRleHRlcm0+ PHByaW1hcnk+QmdXb3JrZXJTdGFydF9SZWNvdmVyeUZpbmlzaGVkPC9wcmltYXJ5PjwvaW5kZXh0 ZXJtPgotICAgICAgIFN0YXJ0IGFzIHNvb24gYXMgdGhlIHN5c3RlbSBoYXMgZW50ZXJlZCBub3Jt YWwgcmVhZC13cml0ZSBzdGF0ZS4gTm90ZQotICAgICAgIHRoYXQgdGhlIDxsaXRlcmFsPkJnV29y a2VyU3RhcnRfQ29uc2lzdGVudFN0YXRlPC9saXRlcmFsPiBhbmQKLSAgICAgIDxsaXRlcmFsPkJn V29ya2VyU3RhcnRfUmVjb3ZlcnlGaW5pc2hlZDwvbGl0ZXJhbD4gYXJlIGVxdWl2YWxlbnQKLSAg ICAgICBpbiBhIHNlcnZlciB0aGF0J3Mgbm90IGEgaG90IHN0YW5kYnkuCi0gICAgICA8L3BhcmE+ Ci0gICAgIDwvbGlzdGl0ZW0+Ci0gICAgPC92YXJsaXN0ZW50cnk+Ci0KLSAgIDwvdmFyaWFibGVs aXN0PgorICAgPGNvbW1hbmQ+cG9zdGdyZXM8L2NvbW1hbmQ+IHNob3VsZCBzdGFydCB0aGUgcHJv Y2VzczsgaXQgY2FuIGJlIG9uZSBvZgorICAgPGxpdGVyYWw+QmdXb3JrZXJTdGFydF9Qb3N0bWFz dGVyU3RhcnQ8L2xpdGVyYWw+IChzdGFydCBhcyBzb29uIGFzCisgICA8Y29tbWFuZD5wb3N0Z3Jl czwvY29tbWFuZD4gaXRzZWxmIGhhcyBmaW5pc2hlZCBpdHMgb3duIGluaXRpYWxpemF0aW9uOyBw cm9jZXNzZXMKKyAgIHJlcXVlc3RpbmcgdGhpcyBhcmUgbm90IGVsaWdpYmxlIGZvciBkYXRhYmFz ZSBjb25uZWN0aW9ucyksCisgICA8bGl0ZXJhbD5CZ1dvcmtlclN0YXJ0X0NvbnNpc3RlbnRTdGF0 ZTwvbGl0ZXJhbD4gKHN0YXJ0IGFzIHNvb24gYXMgYSBjb25zaXN0ZW50IHN0YXRlCisgICBoYXMg YmVlbiByZWFjaGVkIGluIGEgaG90IHN0YW5kYnksIGFsbG93aW5nIHByb2Nlc3NlcyB0byBjb25u ZWN0IHRvCisgICBkYXRhYmFzZXMgYW5kIHJ1biByZWFkLW9ubHkgcXVlcmllcyksIGFuZAorICAg PGxpdGVyYWw+QmdXb3JrZXJTdGFydF9SZWNvdmVyeUZpbmlzaGVkPC9saXRlcmFsPiAoc3RhcnQg YXMgc29vbiBhcyB0aGUgc3lzdGVtIGhhcworICAgZW50ZXJlZCBub3JtYWwgcmVhZC13cml0ZSBz dGF0ZSkuICBOb3RlIHRoZSBsYXN0IHR3byB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQKKyAgIGluIGEg c2VydmVyIHRoYXQncyBub3QgYSBob3Qgc3RhbmRieS4gIE5vdGUgdGhhdCB0aGlzIHNldHRpbmcg b25seSBpbmRpY2F0ZXMKKyAgIHdoZW4gdGhlIHByb2Nlc3NlcyBhcmUgdG8gYmUgc3RhcnRlZDsg dGhleSBkbyBub3Qgc3RvcCB3aGVuIGEgZGlmZmVyZW50IHN0YXRlCisgICBpcyByZWFjaGVkLgog ICA8L3BhcmE+CiAKICAgPHBhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2Jnd29ya2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXggNDY4 MjhiOGE4OS4uMWFkZDQ0OWY3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9i Z3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMTMw LDkgKzEzMCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QKIAl7CiAJCSJBcHBseVdvcmtlck1haW4i LCBBcHBseVdvcmtlck1haW4KIAl9LAotCXsKLQkJIlJlcGxTbG90U3luY1dvcmtlck1haW4iLCBS ZXBsU2xvdFN5bmNXb3JrZXJNYWluCi0JfSwKIAl7CiAJCSJQYXJhbGxlbEFwcGx5V29ya2VyTWFp biIsIFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluCiAJfSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFz dGVyLmMKaW5kZXggZDkwZDVkMTU3Ni4uMmZjOTc5YjFiOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9w b3N0bWFzdGVyLmMKQEAgLTE2OCwxMSArMTY4LDExIEBACiAgKiB0aGV5IHdpbGwgbmV2ZXIgYmVj b21lIGxpdmUgYmFja2VuZHMuICBkZWFkX2VuZCBjaGlsZHJlbiBhcmUgbm90IGFzc2lnbmVkIGEK ICAqIFBNQ2hpbGRTbG90LiAgZGVhZF9lbmQgY2hpbGRyZW4gaGF2ZSBia2VuZF90eXBlIE5PUk1B TC4KICAqCi0gKiAiU3BlY2lhbCIgY2hpbGRyZW4gc3VjaCBhcyB0aGUgc3RhcnR1cCwgYmd3cml0 ZXIgYW5kIGF1dG92YWN1dW0gbGF1bmNoZXIKLSAqIHRhc2tzIGFyZSBub3QgaW4gdGhpcyBsaXN0 LiAgVGhleSBhcmUgdHJhY2tlZCB2aWEgU3RhcnR1cFBJRCBhbmQgb3RoZXIKLSAqIHBpZF90IHZh cmlhYmxlcyBiZWxvdy4gIChUaHVzLCB0aGVyZSBjYW4ndCBiZSBtb3JlIHRoYW4gb25lIG9mIGFu eSBnaXZlbgotICogInNwZWNpYWwiIGNoaWxkIHByb2Nlc3MgdHlwZS4gIFdlIHVzZSBCYWNrZW5k TGlzdCBlbnRyaWVzIGZvciBhbnkgY2hpbGQKLSAqIHByb2Nlc3MgdGhlcmUgY2FuIGJlIG1vcmUg dGhhbiBvbmUgb2YuKQorICogIlNwZWNpYWwiIGNoaWxkcmVuIHN1Y2ggYXMgdGhlIHN0YXJ0dXAs IGJnd3JpdGVyLCBhdXRvdmFjdXVtIGxhdW5jaGVyIGFuZAorICogc2xvdCBzeW5jIHdvcmtlciB0 YXNrcyBhcmUgbm90IGluIHRoaXMgbGlzdC4gIFRoZXkgYXJlIHRyYWNrZWQgdmlhIFN0YXJ0dXBQ SUQKKyAqIGFuZCBvdGhlciBwaWRfdCB2YXJpYWJsZXMgYmVsb3cuICAoVGh1cywgdGhlcmUgY2Fu J3QgYmUgbW9yZSB0aGFuIG9uZSBvZiBhbnkKKyAqIGdpdmVuICJzcGVjaWFsIiBjaGlsZCBwcm9j ZXNzIHR5cGUuICBXZSB1c2UgQmFja2VuZExpc3QgZW50cmllcyBmb3IgYW55CisgKiBjaGlsZCBw cm9jZXNzIHRoZXJlIGNhbiBiZSBtb3JlIHRoYW4gb25lIG9mLikKICAqLwogdHlwZWRlZiBzdHJ1 Y3QgYmtlbmQKIHsKQEAgLTI1NSw3ICsyNTUsOCBAQCBzdGF0aWMgcGlkX3QgU3RhcnR1cFBJRCA9 IDAsCiAJCQlXYWxTdW1tYXJpemVyUElEID0gMCwKIAkJCUF1dG9WYWNQSUQgPSAwLAogCQkJUGdB cmNoUElEID0gMCwKLQkJCVN5c0xvZ2dlclBJRCA9IDA7CisJCQlTeXNMb2dnZXJQSUQgPSAwLAor CQkJU2xvdFN5bmNXb3JrZXJQSUQgPSAwOwogCiAvKiBTdGFydHVwIHByb2Nlc3MncyBzdGF0dXMg Ki8KIHR5cGVkZWYgZW51bQpAQCAtNDU5LDYgKzQ2MCw5IEBAIHN0YXRpYyB2b2lkIEluaXRQb3N0 bWFzdGVyRGVhdGhXYXRjaEhhbmRsZSh2b2lkKTsKIAkgICAocG1TdGF0ZSA9PSBQTV9SRUNPVkVS WSB8fCBwbVN0YXRlID09IFBNX0hPVF9TVEFOREJZKSkpICYmIFwKIAkgUGdBcmNoQ2FuUmVzdGFy dCgpKQogCisjZGVmaW5lIFNsb3RTeW5jV29ya2VyQWxsb3dlZCgpCVwKKwkoZW5hYmxlX3N5bmNz bG90ICYmIHBtU3RhdGUgPT0gUE1fSE9UX1NUQU5EQlkpCisKICNpZmRlZiBFWEVDX0JBQ0tFTkQK IAogI2lmZGVmIFdJTjMyCkBAIC0xMDExLDEyICsxMDE1LDYgQEAgUG9zdG1hc3Rlck1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkgKi8KIAlBcHBseUxhdW5jaGVyUmVnaXN0ZXIoKTsKIAot CS8qCi0JICogUmVnaXN0ZXIgdGhlIHNsb3Qgc3luYyB3b3JrZXIgaGVyZSB0byBraWNrIHN0YXJ0 IHNsb3Qtc3luYyBvcGVyYXRpb24KLQkgKiBzb29uZXIgb24gdGhlIHBoeXNpY2FsIHN0YW5kYnku Ci0JICovCi0JU2xvdFN5bmNXb3JrZXJSZWdpc3RlcigpOwotCiAJLyoKIAkgKiBwcm9jZXNzIGFu eSBsaWJyYXJpZXMgdGhhdCBzaG91bGQgYmUgcHJlbG9hZGVkIGF0IHBvc3RtYXN0ZXIgc3RhcnQK IAkgKi8KQEAgLTE4MzcsNiArMTgzNSwxMCBAQCBTZXJ2ZXJMb29wKHZvaWQpCiAJCWlmIChQZ0Fy Y2hQSUQgPT0gMCAmJiBQZ0FyY2hTdGFydHVwQWxsb3dlZCgpKQogCQkJUGdBcmNoUElEID0gU3Rh cnRBcmNoaXZlcigpOwogCisJCS8qIElmIHdlIG5lZWQgdG8gc3RhcnQgYSBzbG90IHN5bmMgd29y a2VyLCB0cnkgdG8gZG8gdGhhdCBub3cgKi8KKwkJaWYgKFNsb3RTeW5jV29ya2VyUElEID09IDAg JiYgU2xvdFN5bmNXb3JrZXJBbGxvd2VkKCkpCisJCQlTbG90U3luY1dvcmtlclBJRCA9IFN0YXJ0 U2xvdFN5bmNXb3JrZXIoKTsKKwogCQkvKiBJZiB3ZSBuZWVkIHRvIHNpZ25hbCB0aGUgYXV0b3Zh Y3V1bSBsYXVuY2hlciwgZG8gc28gbm93ICovCiAJCWlmIChhdmxhdW5jaGVyX25lZWRzX3NpZ25h bCkKIAkJewpAQCAtMjY4NCw2ICsyNjg2LDggQEAgcHJvY2Vzc19wbV9yZWxvYWRfcmVxdWVzdCh2 b2lkKQogCQkJc2lnbmFsX2NoaWxkKFBnQXJjaFBJRCwgU0lHSFVQKTsKIAkJaWYgKFN5c0xvZ2dl clBJRCAhPSAwKQogCQkJc2lnbmFsX2NoaWxkKFN5c0xvZ2dlclBJRCwgU0lHSFVQKTsKKwkJaWYg KFNsb3RTeW5jV29ya2VyUElEICE9IDApCisJCQlzaWduYWxfY2hpbGQoU2xvdFN5bmNXb3JrZXJQ SUQsIFNJR0hVUCk7CiAKIAkJLyogUmVsb2FkIGF1dGhlbnRpY2F0aW9uIGNvbmZpZyBmaWxlcyB0 b28gKi8KIAkJaWYgKCFsb2FkX2hiYSgpKQpAQCAtMzA0MSw2ICszMDQ1LDggQEAgcHJvY2Vzc19w bV9jaGlsZF9leGl0KHZvaWQpCiAJCQkJQXV0b1ZhY1BJRCA9IFN0YXJ0QXV0b1ZhY0xhdW5jaGVy KCk7CiAJCQlpZiAoUGdBcmNoU3RhcnR1cEFsbG93ZWQoKSAmJiBQZ0FyY2hQSUQgPT0gMCkKIAkJ CQlQZ0FyY2hQSUQgPSBTdGFydEFyY2hpdmVyKCk7CisJCQlpZiAoU2xvdFN5bmNXb3JrZXJBbGxv d2VkKCkgJiYgU2xvdFN5bmNXb3JrZXJQSUQgPT0gMCkKKwkJCQlTbG90U3luY1dvcmtlclBJRCA9 IFN0YXJ0U2xvdFN5bmNXb3JrZXIoKTsKIAogCQkJLyogd29ya2VycyBtYXkgYmUgc2NoZWR1bGVk IHRvIHN0YXJ0IG5vdyAqLwogCQkJbWF5YmVfc3RhcnRfYmd3b3JrZXJzKCk7CkBAIC0zMjExLDYg KzMyMTcsMjIgQEAgcHJvY2Vzc19wbV9jaGlsZF9leGl0KHZvaWQpCiAJCQljb250aW51ZTsKIAkJ fQogCisJCS8qCisJCSAqIFdhcyBpdCB0aGUgc2xvdCBzeWNuIHdvcmtlcj8gTm9ybWFsIGV4aXQg b3IgRkFUQUwgZXhpdCAoRkFUQUwgY2FuCisJCSAqIGJlIGNhdXNlZCBieSBsaWJwcXdhbHJlY2Vp dmVyIG9uIHJlY2VpdmluZyBzaHV0ZG93biByZXF1ZXN0IGJ5IHRoZQorCQkgKiBzdGFydHVwIHBy b2Nlc3MgZHVyaW5nIHByb21vdGlvbikgY2FuIGJlIGlnbm9yZWQ7IHdlJ2xsIHN0YXJ0IGEgbmV3 CisJCSAqIG9uZSBhdCB0aGUgbmV4dCBpdGVyYXRpb24gb2YgdGhlIHBvc3RtYXN0ZXIncyBtYWlu IGxvb3AsIGlmCisJCSAqIG5lY2Vzc2FyeS4gQW55IG90aGVyIGV4aXQgY29uZGl0aW9uIGlzIHRy ZWF0ZWQgYXMgYSBjcmFzaC4KKwkJICovCisJCWlmIChwaWQgPT0gU2xvdFN5bmNXb3JrZXJQSUQp CisJCXsKKwkJCVNsb3RTeW5jV29ya2VyUElEID0gMDsKKwkJCWlmICghRVhJVF9TVEFUVVNfMChl eGl0c3RhdHVzKSAmJiAhRVhJVF9TVEFUVVNfMShleGl0c3RhdHVzKSkKKwkJCQlIYW5kbGVDaGls ZENyYXNoKHBpZCwgZXhpdHN0YXR1cywKKwkJCQkJCQkJIF8oIlNsb3RzeW5jIHdvcmtlciBwcm9j ZXNzIikpOworCQkJY29udGludWU7CisJCX0KKwogCQkvKiBXYXMgaXQgb25lIG9mIG91ciBiYWNr Z3JvdW5kIHdvcmtlcnM/ICovCiAJCWlmIChDbGVhbnVwQmFja2dyb3VuZFdvcmtlcihwaWQsIGV4 aXRzdGF0dXMpKQogCQl7CkBAIC0zNTc3LDYgKzM1OTksMTIgQEAgSGFuZGxlQ2hpbGRDcmFzaChp bnQgcGlkLCBpbnQgZXhpdHN0YXR1cywgY29uc3QgY2hhciAqcHJvY25hbWUpCiAJZWxzZSBpZiAo UGdBcmNoUElEICE9IDAgJiYgdGFrZV9hY3Rpb24pCiAJCXNpZ3F1aXRfY2hpbGQoUGdBcmNoUElE KTsKIAorCS8qIFRha2UgY2FyZSBvZiB0aGUgc2xvdCBzeW5jIHdvcmtlciB0b28gKi8KKwlpZiAo cGlkID09IFNsb3RTeW5jV29ya2VyUElEKQorCQlTbG90U3luY1dvcmtlclBJRCA9IDA7CisJZWxz ZSBpZiAoU2xvdFN5bmNXb3JrZXJQSUQgIT0gMCAmJiB0YWtlX2FjdGlvbikKKwkJc2lncXVpdF9j aGlsZChTbG90U3luY1dvcmtlclBJRCk7CisKIAkvKiBXZSBkbyBOT1QgcmVzdGFydCB0aGUgc3lz bG9nZ2VyICovCiAKIAlpZiAoU2h1dGRvd24gIT0gSW1tZWRpYXRlU2h1dGRvd24pCkBAIC0zNzE3 LDYgKzM3NDUsOCBAQCBQb3N0bWFzdGVyU3RhdGVNYWNoaW5lKHZvaWQpCiAJCQlzaWduYWxfY2hp bGQoV2FsUmVjZWl2ZXJQSUQsIFNJR1RFUk0pOwogCQlpZiAoV2FsU3VtbWFyaXplclBJRCAhPSAw KQogCQkJc2lnbmFsX2NoaWxkKFdhbFN1bW1hcml6ZXJQSUQsIFNJR1RFUk0pOworCQlpZiAoU2xv dFN5bmNXb3JrZXJQSUQgIT0gMCkKKwkJCXNpZ25hbF9jaGlsZChTbG90U3luY1dvcmtlclBJRCwg U0lHVEVSTSk7CiAJCS8qIGNoZWNrcG9pbnRlciwgYXJjaGl2ZXIsIHN0YXRzLCBhbmQgc3lzbG9n Z2VyIG1heSBjb250aW51ZSBmb3Igbm93ICovCiAKIAkJLyogTm93IHRyYW5zaXRpb24gdG8gUE1f V0FJVF9CQUNLRU5EUyBzdGF0ZSB0byB3YWl0IGZvciB0aGVtIHRvIGRpZSAqLwpAQCAtMzczMiwx MyArMzc2MiwxMyBAQCBQb3N0bWFzdGVyU3RhdGVNYWNoaW5lKHZvaWQpCiAJCS8qCiAJCSAqIFBN X1dBSVRfQkFDS0VORFMgc3RhdGUgZW5kcyB3aGVuIHdlIGhhdmUgbm8gcmVndWxhciBiYWNrZW5k cwogCQkgKiAoaW5jbHVkaW5nIGF1dG92YWMgd29ya2VycyksIG5vIGJnd29ya2VycyAoaW5jbHVk aW5nIHVuY29ubmVjdGVkCi0JCSAqIG9uZXMpLCBhbmQgbm8gd2Fsd3JpdGVyLCBhdXRvdmFjIGxh dW5jaGVyIG9yIGJnd3JpdGVyLiAgSWYgd2UgYXJlCi0JCSAqIGRvaW5nIGNyYXNoIHJlY292ZXJ5 IG9yIGFuIGltbWVkaWF0ZSBzaHV0ZG93biB0aGVuIHdlIGV4cGVjdCB0aGUKLQkJICogY2hlY2tw b2ludGVyIHRvIGV4aXQgYXMgd2VsbCwgb3RoZXJ3aXNlIG5vdC4gVGhlIHN0YXRzIGFuZAotCQkg KiBzeXNsb2dnZXIgcHJvY2Vzc2VzIGFyZSBkaXNyZWdhcmRlZCBzaW5jZSB0aGV5IGFyZSBub3Qg Y29ubmVjdGVkIHRvCi0JCSAqIHNoYXJlZCBtZW1vcnk7IHdlIGFsc28gZGlzcmVnYXJkIGRlYWRf ZW5kIGNoaWxkcmVuIGhlcmUuIFdhbHNlbmRlcnMKLQkJICogYW5kIGFyY2hpdmVyIGFyZSBhbHNv IGRpc3JlZ2FyZGVkLCB0aGV5IHdpbGwgYmUgdGVybWluYXRlZCBsYXRlcgotCQkgKiBhZnRlciB3 cml0aW5nIHRoZSBjaGVja3BvaW50IHJlY29yZC4KKwkJICogb25lcyksIGFuZCBubyB3YWx3cml0 ZXIsIGF1dG92YWMgbGF1bmNoZXIgb3IgYmd3cml0ZXIgb3Igc2xvdCBzeW5jCisJCSAqIHdvcmtl ci4gIElmIHdlIGFyZSBkb2luZyBjcmFzaCByZWNvdmVyeSBvciBhbiBpbW1lZGlhdGUgc2h1dGRv d24KKwkJICogdGhlbiB3ZSBleHBlY3QgdGhlIGNoZWNrcG9pbnRlciB0byBleGl0IGFzIHdlbGws IG90aGVyd2lzZSBub3QuIFRoZQorCQkgKiBzdGF0cyBhbmQgc3lzbG9nZ2VyIHByb2Nlc3NlcyBh cmUgZGlzcmVnYXJkZWQgc2luY2UgdGhleSBhcmUgbm90CisJCSAqIGNvbm5lY3RlZCB0byBzaGFy ZWQgbWVtb3J5OyB3ZSBhbHNvIGRpc3JlZ2FyZCBkZWFkX2VuZCBjaGlsZHJlbgorCQkgKiBoZXJl LiBXYWxzZW5kZXJzIGFuZCBhcmNoaXZlciBhcmUgYWxzbyBkaXNyZWdhcmRlZCwgdGhleSB3aWxs IGJlCisJCSAqIHRlcm1pbmF0ZWQgbGF0ZXIgYWZ0ZXIgd3JpdGluZyB0aGUgY2hlY2twb2ludCBy ZWNvcmQuCiAJCSAqLwogCQlpZiAoQ291bnRDaGlsZHJlbihCQUNLRU5EX1RZUEVfQUxMIC0gQkFD S0VORF9UWVBFX1dBTFNORCkgPT0gMCAmJgogCQkJU3RhcnR1cFBJRCA9PSAwICYmCkBAIC0zNzQ4 LDcgKzM3NzgsOCBAQCBQb3N0bWFzdGVyU3RhdGVNYWNoaW5lKHZvaWQpCiAJCQkoQ2hlY2twb2lu dGVyUElEID09IDAgfHwKIAkJCSAoIUZhdGFsRXJyb3IgJiYgU2h1dGRvd24gPCBJbW1lZGlhdGVT aHV0ZG93bikpICYmCiAJCQlXYWxXcml0ZXJQSUQgPT0gMCAmJgotCQkJQXV0b1ZhY1BJRCA9PSAw KQorCQkJQXV0b1ZhY1BJRCA9PSAwICYmCisJCQlTbG90U3luY1dvcmtlclBJRCA9PSAwKQogCQl7 CiAJCQlpZiAoU2h1dGRvd24gPj0gSW1tZWRpYXRlU2h1dGRvd24gfHwgRmF0YWxFcnJvcikKIAkJ CXsKQEAgLTM4NDYsNiArMzg3Nyw3IEBAIFBvc3RtYXN0ZXJTdGF0ZU1hY2hpbmUodm9pZCkKIAkJ CUFzc2VydChDaGVja3BvaW50ZXJQSUQgPT0gMCk7CiAJCQlBc3NlcnQoV2FsV3JpdGVyUElEID09 IDApOwogCQkJQXNzZXJ0KEF1dG9WYWNQSUQgPT0gMCk7CisJCQlBc3NlcnQoU2xvdFN5bmNXb3Jr ZXJQSUQgPT0gMCk7CiAJCQkvKiBzeXNsb2dnZXIgaXMgbm90IGNvbnNpZGVyZWQgaGVyZSAqLwog CQkJcG1TdGF0ZSA9IFBNX05PX0NISUxEUkVOOwogCQl9CkBAIC00MDY5LDYgKzQxMDEsOCBAQCBU ZXJtaW5hdGVDaGlsZHJlbihpbnQgc2lnbmFsKQogCQlzaWduYWxfY2hpbGQoQXV0b1ZhY1BJRCwg c2lnbmFsKTsKIAlpZiAoUGdBcmNoUElEICE9IDApCiAJCXNpZ25hbF9jaGlsZChQZ0FyY2hQSUQs IHNpZ25hbCk7CisJaWYgKFNsb3RTeW5jV29ya2VyUElEICE9IDApCisJCXNpZ25hbF9jaGlsZChT bG90U3luY1dvcmtlclBJRCwgc2lnbmFsKTsKIH0KIAogLyoKQEAgLTQ4ODEsNiArNDkxNSw3IEBA IFN1YlBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICovCiAJaWYgKHN0 cmNtcChhcmd2WzFdLCAiLS1mb3JrYmFja2VuZCIpID09IDAgfHwKIAkJc3RyY21wKGFyZ3ZbMV0s ICItLWZvcmthdmxhdW5jaGVyIikgPT0gMCB8fAorCQlzdHJjbXAoYXJndlsxXSwgIi0tZm9ya3Nz d29ya2VyIikgPT0gMCB8fAogCQlzdHJjbXAoYXJndlsxXSwgIi0tZm9ya2F2d29ya2VyIikgPT0g MCB8fAogCQlzdHJjbXAoYXJndlsxXSwgIi0tZm9ya2F1eCIpID09IDAgfHwKIAkJc3RyY21wKGFy Z3ZbMV0sICItLWZvcmtiZ3dvcmtlciIpID09IDApCkBAIC00OTg0LDYgKzUwMTksMTMgQEAgU3Vi UG9zdG1hc3Rlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCQlBdXRvVmFjV29ya2Vy TWFpbihhcmdjIC0gMiwgYXJndiArIDIpOwkvKiBkb2VzIG5vdCByZXR1cm4gKi8KIAl9CisJaWYg KHN0cmNtcChhcmd2WzFdLCAiLS1mb3Jrc3N3b3JrZXIiKSA9PSAwKQorCXsKKwkJLyogUmVzdG9y ZSBiYXNpYyBzaGFyZWQgbWVtb3J5IHBvaW50ZXJzICovCisJCUluaXRTaG1lbUFjY2VzcyhVc2Vk U2htZW1TZWdBZGRyKTsKKworCQlSZXBsU2xvdFN5bmNXb3JrZXJNYWluKGFyZ2MgLSAyLCBhcmd2 ICsgMik7IC8qIGRvZXMgbm90IHJldHVybiAqLworCX0KIAlpZiAoc3RyY21wKGFyZ3ZbMV0sICIt LWZvcmtiZ3dvcmtlciIpID09IDApCiAJewogCQkvKiBkbyB0aGlzIGFzIGVhcmx5IGFzIHBvc3Np YmxlOyBpbiBwYXJ0aWN1bGFyLCBiZWZvcmUgSW5pdFByb2Nlc3MoKSAqLwpAQCAtNTgwNiw5ICs1 ODQ4LDYgQEAgYmd3b3JrZXJfc2hvdWxkX3N0YXJ0X25vdyhCZ1dvcmtlclN0YXJ0VGltZSBzdGFy dF90aW1lKQogCQljYXNlIFBNX0hPVF9TVEFOREJZOgogCQkJaWYgKHN0YXJ0X3RpbWUgPT0gQmdX b3JrZXJTdGFydF9Db25zaXN0ZW50U3RhdGUpCiAJCQkJcmV0dXJuIHRydWU7Ci0JCQlpZiAoc3Rh cnRfdGltZSA9PSBCZ1dvcmtlclN0YXJ0X0NvbnNpc3RlbnRTdGF0ZV9Ib3RTdGFuZGJ5ICYmCi0J CQkJCSBwbVN0YXRlICE9IFBNX1JVTikKLQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCS8qIGZhbGwgdGhy b3VnaCAqLwogCiAJCWNhc2UgUE1fUkVDT1ZFUlk6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Nsb3RzeW5jLmMKaW5kZXggODdkNGY1ZThiMS4uNWRiYjhhYjRkZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAtMjcsNiArMjcsOCBAQAog ICogSXQgd2FpdHMgZm9yIGEgcGVyaW9kIG9mIHRpbWUgYmVmb3JlIHRoZSBuZXh0IHN5bmNocm9u aXphdGlvbiwgd2l0aCB0aGUKICAqIGR1cmF0aW9uIHZhcnlpbmcgYmFzZWQgb24gd2hldGhlciBh bnkgc2xvdHMgd2VyZSB1cGRhdGVkIGR1cmluZyB0aGUgbGFzdAogICogY3ljbGUuIFJlZmVyIHRv IHRoZSBjb21tZW50cyBhYm92ZSB3YWl0X2Zvcl9zbG90X2FjdGl2aXR5KCkgZm9yIG1vcmUgZGV0 YWlscy4KKyAqCisgKiBTbG90IHN5bmNocm9uaXphdGlvbiBpcyBjdXJyZW50bHkgbm90IHN1cHBv cnRlZCBvbiB0aGUgY2FzY2FkaW5nIHN0YW5kYnkuCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICov CiAKQEAgLTQwLDcgKzQyLDkgQEAKICNpbmNsdWRlICJjb21tYW5kcy9kYmNvbW1hbmRzLmgiCiAj aW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgorI2lu Y2x1ZGUgInBvc3RtYXN0ZXIvZm9ya19wcm9jZXNzLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9p bnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxh dW5jaGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgpAQCAtNTMs NiArNTcsOCBAQAogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMv Z3VjX2hvb2tzLmgiCiAjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCisjaW5jbHVkZSAidXRpbHMv cHNfc3RhdHVzLmgiCisjaW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1ZGUgInV0aWxz L3ZhcmxlbmEuaCIKIAogLyoKQEAgLTc4LDEyICs4NCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBSZW1v dGVTbG90CiAgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gYmV0d2VlbiBzdGFydHVw IHByb2Nlc3MgYW5kIHNsb3QKICAqIHN5bmMgd29ya2VyLgogICoKLSAqIFNsb3Qgc3luYyB3b3Jr ZXIncyBwaWQgaXMgbmVlZGVkIGJ5IHN0YXJ0dXAgcHJvY2VzcyBpbiBvcmRlciB0bwotICogc2h1 dCBpdCBkb3duIGR1cmluZyBwcm9tb3Rpb24uCisgKiBTbG90IHN5bmMgd29ya2VyJ3MgcGlkIGlz IG5lZWRlZCBieSB0aGUgc3RhcnR1cCBwcm9jZXNzIGluIG9yZGVyIHRvCisgKiBzaHV0IGl0IGRv d24gZHVyaW5nIHByb21vdGlvbi4gU3RhcnR1cCBwcm9jZXNzIHNodXRzIGRvd24gdGhlIHNsb3QK KyAqIHN5bmMgd29ya2VyIGFuZCBhbHNvIHNldHMgc3RvcFNpZ25hbGVkPXRydWUgdG8gaGFuZGxl IHRoZSByYWNlIGNvbmRpdGlvbgorICogd2hlbiBwb3N0bWFzdGVyIGhhcyBub3Qgbm90aWNlZCB0 aGUgcHJvbW90aW9uIHlldCBhbmQgdGh1cyBtYXkgZW5kIHVwCisgKiByZXN0YXJ0aW5nIHNsb3Qg c2x5YyB3b3JrZXIuIElmIHN0b3BTaWduYWxlZCBpcyBzZXQsIHRoZSB3b3JrZXIgd2lsbAorICog ZXhpdCBpbiBzdWNoIGEgY2FzZS4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgU2xvdFN5bmNXb3JrZXJD dHhTdHJ1Y3QKIHsKIAlwaWRfdAkJcGlkOworCWJvb2wJCXN0b3BTaWduYWxlZDsKIAlzbG9ja190 CQltdXRleDsKIH0gU2xvdFN5bmNXb3JrZXJDdHhTdHJ1Y3Q7CiAKQEAgLTkyLDEzICsxMDMsMjUg QEAgU2xvdFN5bmNXb3JrZXJDdHhTdHJ1Y3QgKlNsb3RTeW5jV29ya2VyID0gTlVMTDsKIC8qIEdV QyB2YXJpYWJsZSAqLwogYm9vbAkJZW5hYmxlX3N5bmNzbG90ID0gZmFsc2U7CiAKKy8qIEZsYWcg dG8gdGVsbCBpZiB3ZSBhcmUgaW4gYW4gc2xvdCBzeW5jIHdvcmtlciBwcm9jZXNzICovCitzdGF0 aWMgYm9vbCBhbV9zbG90c3luY193b3JrZXIgPSBmYWxzZTsKKwogLyoKICAqIFNsZWVwIHRpbWUg aW4gbXMgYmV0d2VlbiBzbG90LXN5bmMgY3ljbGVzLgogICogU2VlIHdhaXRfZm9yX3Nsb3RfYWN0 aXZpdHkoKSBmb3IgaG93IHdlIGFkanVzdCB0aGlzCiAgKi8KIHN0YXRpYyBsb25nIHNsZWVwX21z OwogCisvKiBNaW4gYW5kIE1heCBzbGVlcCB0aW1lIGZvciBzbG90IHN5bmMgd29ya2VyICovCisj ZGVmaW5lIE1JTl9XT1JLRVJfTkFQVElNRV9NUyAgMjAwCisjZGVmaW5lIE1BWF9XT1JLRVJfTkFQ VElNRV9NUyAgMzAwMDAJLyogMzBzICovCisKIHN0YXRpYyB2b2lkIFByb2Nlc3NTbG90U3luY0lu dGVycnVwdHMoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4pOworI2lmZGVmIEVYRUNfQkFDS0VORAor c3RhdGljIHBpZF90IHNsb3RzeW5jd29ya2VyX2ZvcmtleGVjKHZvaWQpOworI2VuZGlmCitOT05f RVhFQ19TVEFUSUMgdm9pZCBSZXBsU2xvdFN5bmNXb3JrZXJNYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pIHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOworCiAKIC8qCiAgKiBJZiBuZWNlc3Nhcnks IHVwZGF0ZSBsb2NhbCBzbG90IG1ldGFkYXRhIGJhc2VkIG9uIHRoZSBkYXRhIGZyb20gdGhlIHJl bW90ZQpAQCAtNjgzLDcgKzcwNiw4IEBAIHN5bmNocm9uaXplX3Nsb3RzKFdhbFJlY2VpdmVyQ29u biAqd3Jjb25uKQogICogc3RhbmRieXMuCiAgKi8KIHN0YXRpYyB2b2lkCi1jaGVja19wcmltYXJ5 X2luZm8oV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4sIGJvb2wgKmFtX2Nhc2NhZGluZ19zdGFuZGJ5 KQorY2hlY2tfcHJpbWFyeV9pbmZvKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBib29sICphbV9j YXNjYWRpbmdfc3RhbmRieSwKKwkJCQkgICBib29sICpwcmltYXJ5X3Nsb3RfaW52YWxpZCkKIHsK ICNkZWZpbmUgUFJJTUFSWV9JTkZPX09VVFBVVF9DT0xfQ09VTlQgMgogCVdhbFJjdkV4ZWNSZXN1 bHQgKnJlczsKQEAgLTY5OCw4ICs3MjIsMTAgQEAgY2hlY2tfcHJpbWFyeV9pbmZvKFdhbFJlY2Vp dmVyQ29ubiAqd3Jjb25uLCBib29sICphbV9jYXNjYWRpbmdfc3RhbmRieSkKIAlTdGFydFRyYW5z YWN0aW9uQ29tbWFuZCgpOwogCiAJQXNzZXJ0KGFtX2Nhc2NhZGluZ19zdGFuZGJ5ICE9IE5VTEwp OworCUFzc2VydChwcmltYXJ5X3Nsb3RfaW52YWxpZCAhPSBOVUxMKTsKIAogCSphbV9jYXNjYWRp bmdfc3RhbmRieSA9IGZhbHNlOwkvKiBvdmVyd3JpdHRlbiBsYXRlciBpZiBjYXNjYWRpbmcgKi8K KwkqcHJpbWFyeV9zbG90X2ludmFsaWQgPSBmYWxzZTsJLyogb3ZlcndyaXR0ZW4gbGF0ZXIgaWYg aW52YWxpZCAqLwogCiAJaW5pdFN0cmluZ0luZm8oJmNtZCk7CiAJYXBwZW5kU3RyaW5nSW5mbygm Y21kLApAQCAtNzM3LDEyICs3NjMsMTUgQEAgY2hlY2tfcHJpbWFyeV9pbmZvKFdhbFJlY2VpdmVy Q29ubiAqd3Jjb25uLCBib29sICphbV9jYXNjYWRpbmdfc3RhbmRieSkKIAkJQXNzZXJ0KCFpc251 bGwpOwogCiAJCWlmICghdmFsaWQpCi0JCQllcmVwb3J0KEVSUk9SLAorCQl7CisJCQkqcHJpbWFy eV9zbG90X2ludmFsaWQgPSB0cnVlOworCQkJZXJlcG9ydChMT0csCiAJCQkJCWVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJCWVycm1zZygiZXhpdGluZyBmcm9t IHNsb3Qgc3luY2hyb25pemF0aW9uIGR1ZSB0byBiYWQgY29uZmlndXJhdGlvbiIpLAorCQkJCQll cnJtc2coInNraXBwaW5nIHNsb3Qgc3luY2hyb25pemF0aW9uIGR1ZSB0byBiYWQgY29uZmlndXJh dGlvbiIpLAogCQkJLyogdHJhbnNsYXRvcjogc2Vjb25kICVzIGlzIGEgR1VDIHZhcmlhYmxlIG5h bWUgKi8KIAkJCQkJZXJyZGV0YWlsKCJUaGUgcHJpbWFyeSBzZXJ2ZXIgc2xvdCBcIiVzXCIgc3Bl Y2lmaWVkIGJ5ICVzIGlzIG5vdCB2YWxpZC4iLAogCQkJCQkJCSAgUHJpbWFyeVNsb3ROYW1lLCAi cHJpbWFyeV9zbG90X25hbWUiKSk7CisJCX0KIAl9CiAKIAlFeGVjQ2xlYXJUdXBsZSh0dXBzbG90 KTsKQEAgLTc1MiwxOCArNzgxLDE4IEBAIGNoZWNrX3ByaW1hcnlfaW5mbyhXYWxSZWNlaXZlckNv bm4gKndyY29ubiwgYm9vbCAqYW1fY2FzY2FkaW5nX3N0YW5kYnkpCiAKIC8qCiAgKiBDaGVjayB0 aGF0IGFsbCBuZWNlc3NhcnkgR1VDcyBmb3Igc2xvdCBzeW5jaHJvbml6YXRpb24gYXJlIHNldAot ICogYXBwcm9wcmlhdGVseS4gSWYgbm90LCByYWlzZSBhbiBFUlJPUi4KKyAqIGFwcHJvcHJpYXRl bHkuIElmIG5vdCwgbG9nIHRoZSBtZXNzYWdlIGFuZCBwYXNzICd2YWxpZCcgYXMgZmFsc2UKKyAq IHRvIHRoZSBjYWxsZXIuCiAgKgogICogSWYgYWxsIGNoZWNrcyBwYXNzLCBleHRyYWN0cyB0aGUg ZGJuYW1lIGZyb20gdGhlIHByaW1hcnlfY29ubmluZm8gR1VDIGFuZAogICogcmV0dXJucyBpdC4K ICAqLwogc3RhdGljIGNoYXIgKgotdmFsaWRhdGVfcGFyYW1ldGVyc19hbmRfZ2V0X2RibmFtZSh2 b2lkKQordmFsaWRhdGVfcGFyYW1ldGVyc19hbmRfZ2V0X2RibmFtZShib29sICp2YWxpZCkKIHsK IAljaGFyCSAgICpkYm5hbWU7CiAKLQkvKiBTYW5pdHkgY2hlY2suICovCi0JQXNzZXJ0KGVuYWJs ZV9zeW5jc2xvdCk7CisJKnZhbGlkID0gZmFsc2U7CiAKIAkvKgogCSAqIEEgcGh5c2ljYWwgcmVw bGljYXRpb24gc2xvdChwcmltYXJ5X3Nsb3RfbmFtZSkgaXMgcmVxdWlyZWQgb24gdGhlCkBAIC03 NzIsMTAgKzgwMSwxMyBAQCB2YWxpZGF0ZV9wYXJhbWV0ZXJzX2FuZF9nZXRfZGJuYW1lKHZvaWQp CiAJICogYmUgaW52YWxpZGF0ZWQuCiAJICovCiAJaWYgKFByaW1hcnlTbG90TmFtZSA9PSBOVUxM IHx8IHN0cmNtcChQcmltYXJ5U2xvdE5hbWUsICIiKSA9PSAwKQotCQllcmVwb3J0KEVSUk9SLAor CXsKKwkJZXJlcG9ydChMT0csCiAJCS8qIHRyYW5zbGF0b3I6ICVzIGlzIGEgR1VDIHZhcmlhYmxl IG5hbWUgKi8KLQkJCQllcnJtc2coImV4aXRpbmcgZnJvbSBzbG90IHN5bmNocm9uaXphdGlvbiBk dWUgdG8gYmFkIGNvbmZpZ3VyYXRpb24iKSwKKwkJCQllcnJtc2coInNraXBwaW5nIHNsb3Qgc3lu Y2hyb25pemF0aW9uIGR1ZSB0byBiYWQgY29uZmlndXJhdGlvbiIpLAogCQkJCWVycmhpbnQoIiVz IG11c3QgYmUgZGVmaW5lZC4iLCAicHJpbWFyeV9zbG90X25hbWUiKSk7CisJCXJldHVybiBOVUxM OworCX0KIAogCS8qCiAJICogaG90X3N0YW5kYnlfZmVlZGJhY2sgbXVzdCBiZSBlbmFibGVkIHRv IGNvb3BlcmF0ZSB3aXRoIHRoZSBwaHlzaWNhbApAQCAtNzgzLDMwICs4MTUsMzkgQEAgdmFsaWRh dGVfcGFyYW1ldGVyc19hbmRfZ2V0X2RibmFtZSh2b2lkKQogCSAqIGNhdGFsb2dfeG1pbiB2YWx1 ZXMgb24gdGhlIHN0YW5kYnkuCiAJICovCiAJaWYgKCFob3Rfc3RhbmRieV9mZWVkYmFjaykKLQkJ ZXJlcG9ydChFUlJPUiwKKwl7CisJCWVyZXBvcnQoTE9HLAogCQkvKiB0cmFuc2xhdG9yOiAlcyBp cyBhIEdVQyB2YXJpYWJsZSBuYW1lICovCi0JCQkJZXJybXNnKCJleGl0aW5nIGZyb20gc2xvdCBz eW5jaHJvbml6YXRpb24gZHVlIHRvIGJhZCBjb25maWd1cmF0aW9uIiksCisJCQkJZXJybXNnKCJz a2lwcGluZyBzbG90IHN5bmNocm9uaXphdGlvbiBkdWUgdG8gYmFkIGNvbmZpZ3VyYXRpb24iKSwK IAkJCQllcnJoaW50KCIlcyBtdXN0IGJlIGVuYWJsZWQuIiwgImhvdF9zdGFuZGJ5X2ZlZWRiYWNr IikpOworCQlyZXR1cm4gTlVMTDsKKwl9CiAKIAkvKgogCSAqIExvZ2ljYWwgZGVjb2RpbmcgcmVx dWlyZXMgd2FsX2xldmVsID49IGxvZ2ljYWwgYW5kIHdlIGN1cnJlbnRseSBvbmx5CiAJICogc3lu Y2hyb25pemUgbG9naWNhbCBzbG90cy4KIAkgKi8KIAlpZiAod2FsX2xldmVsIDwgV0FMX0xFVkVM X0xPR0lDQUwpCi0JCWVyZXBvcnQoRVJST1IsCisJeworCQllcmVwb3J0KExPRywKIAkJLyogdHJh bnNsYXRvcjogJXMgaXMgYSBHVUMgdmFyaWFibGUgbmFtZSAqLwotCQkJCWVycm1zZygiZXhpdGlu ZyBmcm9tIHNsb3Qgc3luY2hyb25pemF0aW9uIGR1ZSB0byBiYWQgY29uZmlndXJhdGlvbiIpLAor CQkJCWVycm1zZygic2tpcHBpbmcgc2xvdCBzeW5jaHJvbml6YXRpb24gZHVlIHRvIGJhZCBjb25m aWd1cmF0aW9uIiksCiAJCQkJZXJyaGludCgid2FsX2xldmVsIG11c3QgYmUgPj0gbG9naWNhbC4i KSk7CisJCXJldHVybiBOVUxMOworCX0KIAogCS8qCiAJICogVGhlIHByaW1hcnlfY29ubmluZm8g aXMgcmVxdWlyZWQgdG8gbWFrZSBjb25uZWN0aW9uIHRvIHByaW1hcnkgZm9yCiAJICogZ2V0dGlu ZyBzbG90cyBpbmZvcm1hdGlvbi4KIAkgKi8KIAlpZiAoUHJpbWFyeUNvbm5JbmZvID09IE5VTEwg fHwgc3RyY21wKFByaW1hcnlDb25uSW5mbywgIiIpID09IDApCi0JCWVyZXBvcnQoRVJST1IsCisJ eworCQllcmVwb3J0KExPRywKIAkJLyogdHJhbnNsYXRvcjogJXMgaXMgYSBHVUMgdmFyaWFibGUg bmFtZSAqLwotCQkJCWVycm1zZygiZXhpdGluZyBmcm9tIHNsb3Qgc3luY2hyb25pemF0aW9uIGR1 ZSB0byBiYWQgY29uZmlndXJhdGlvbiIpLAorCQkJCWVycm1zZygic2tpcHBpbmcgc2xvdCBzeW5j aHJvbml6YXRpb24gZHVlIHRvIGJhZCBjb25maWd1cmF0aW9uIiksCiAJCQkJZXJyaGludCgiJXMg bXVzdCBiZSBkZWZpbmVkLiIsICJwcmltYXJ5X2Nvbm5pbmZvIikpOworCQlyZXR1cm4gTlVMTDsK Kwl9CiAKIAkvKgogCSAqIFRoZSBzbG90IHN5bmMgd29ya2VyIG5lZWRzIGEgZGF0YWJhc2UgY29u bmVjdGlvbiBmb3Igd2FscmN2X2V4ZWMgdG8KQEAgLTgxNCwxNCArODU1LDYxIEBAIHZhbGlkYXRl X3BhcmFtZXRlcnNfYW5kX2dldF9kYm5hbWUodm9pZCkKIAkgKi8KIAlkYm5hbWUgPSB3YWxyY3Zf Z2V0X2RibmFtZV9mcm9tX2Nvbm5pbmZvKFByaW1hcnlDb25uSW5mbyk7CiAJaWYgKGRibmFtZSA9 PSBOVUxMKQotCQllcmVwb3J0KEVSUk9SLAorCXsKKwkJZXJlcG9ydChMT0csCiAKIAkJLyoKIAkJ ICogdHJhbnNsYXRvcjogJ2RibmFtZScgaXMgYSBzcGVjaWZpYyBvcHRpb247ICVzIGlzIGEgR1VD IHZhcmlhYmxlCiAJCSAqIG5hbWUKIAkJICovCi0JCQkJZXJybXNnKCJleGl0aW5nIGZyb20gc2xv dCBzeW5jaHJvbml6YXRpb24gZHVlIHRvIGJhZCBjb25maWd1cmF0aW9uIiksCisJCQkJZXJybXNn KCJza2lwcGluZyBzbG90IHN5bmNocm9uaXphdGlvbiBkdWUgdG8gYmFkIGNvbmZpZ3VyYXRpb24i KSwKIAkJCQllcnJoaW50KCInZGJuYW1lJyBtdXN0IGJlIHNwZWNpZmllZCBpbiAlcy4iLCAicHJp bWFyeV9jb25uaW5mbyIpKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJLyogQWxsIGdvb2QsIHNl dCB2YWxpZCB0byB0cnVlIG5vdyAqLworCSp2YWxpZCA9IHRydWU7CisKKwlyZXR1cm4gZGJuYW1l OworfQorCisvKgorICogQ2hlY2sgdGhhdCBhbGwgbmVjZXNzYXJ5IEdVQ3MgZm9yIHNsb3Qgc3lu Y2hyb25pemF0aW9uIGFyZSBzZXQKKyAqIGFwcHJvcHJpYXRlbHkuIElmIG5vdCwgc2xlZXAgZm9y IE1BWF9XT1JLRVJfTkFQVElNRV9NUyBhbmQgY2hlY2sgYWdhaW4uCisgKiBUaGUgaWRlYSBpcyB0 byBiZWNvbWUgbm8tb3AgdW50aWwgd2UgZ2V0IHZhbGlkIEdVQ3MgdmFsdWVzLgorICoKKyAqIElm IGFsbCBjaGVja3MgcGFzcywgZXh0cmFjdHMgdGhlIGRibmFtZSBmcm9tIHRoZSBwcmltYXJ5X2Nv bm5pbmZvIEdVQyBhbmQKKyAqIHJldHVybnMgaXQuCisgKi8KK3N0YXRpYyBjaGFyICoKK3dhaXRf Zm9yX3ZhbGlkX3BhcmFtc19hbmRfZ2V0X2RibmFtZSh2b2lkKQoreworCWNoYXIJICAgKmRibmFt ZTsKKwlpbnQJCQlyYzsKKwlib29sCQl2YWxpZDsKKworCS8qIFNhbml0eSBjaGVjay4gKi8KKwlB c3NlcnQoZW5hYmxlX3N5bmNzbG90KTsKKworCWZvciAoOzspCisJeworCQlkYm5hbWUgPSB2YWxp ZGF0ZV9wYXJhbWV0ZXJzX2FuZF9nZXRfZGJuYW1lKCZ2YWxpZCk7CisJCWlmICh2YWxpZCkKKwkJ CWJyZWFrOworCQllbHNlCisJCXsKKwkJCVByb2Nlc3NTbG90U3luY0ludGVycnVwdHMoTlVMTCk7 CisKKwkJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCisJCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBX TF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgIE1BWF9XT1JLRVJfTkFQ VElNRV9NUywKKwkJCQkJCSAgIFdBSVRfRVZFTlRfUkVQTF9TTE9UU1lOQ19NQUlOKTsKKworCQkJ aWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisKKwkJfQor CX0KIAogCXJldHVybiBkYm5hbWU7CiB9CkBAIC04MzcsNiArOTI1LDcgQEAgc2xvdHN5bmNfcmVy ZWFkX2NvbmZpZyh2b2lkKQogewogCWNoYXIJICAgKm9sZF9wcmltYXJ5X2Nvbm5pbmZvID0gcHN0 cmR1cChQcmltYXJ5Q29ubkluZm8pOwogCWNoYXIJICAgKm9sZF9wcmltYXJ5X3Nsb3RuYW1lID0g cHN0cmR1cChQcmltYXJ5U2xvdE5hbWUpOworCWJvb2wJCW9sZF9lbmFibGVfc3luY3Nsb3QgPSBl bmFibGVfc3luY3Nsb3Q7CiAJYm9vbAkJb2xkX2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gaG90X3N0 YW5kYnlfZmVlZGJhY2s7CiAJYm9vbAkJY29ubmluZm9fY2hhbmdlZDsKIAlib29sCQlwcmltYXJ5 X3Nsb3RuYW1lX2NoYW5nZWQ7CkBAIC04NDksMTMgKzkzOCwxMyBAQCBzbG90c3luY19yZXJlYWRf Y29uZmlnKHZvaWQpCiAKIAlpZiAoY29ubmluZm9fY2hhbmdlZCB8fAogCQlwcmltYXJ5X3Nsb3Ru YW1lX2NoYW5nZWQgfHwKKwkJb2xkX2VuYWJsZV9zeW5jc2xvdCAhPSBlbmFibGVfc3luY3Nsb3Qg fHwKIAkJKG9sZF9ob3Rfc3RhbmRieV9mZWVkYmFjayAhPSBob3Rfc3RhbmRieV9mZWVkYmFjaykp CiAJewogCQllcmVwb3J0KExPRywKIAkJCQllcnJtc2coInNsb3Qgc3luYyB3b3JrZXIgd2lsbCBy ZXN0YXJ0IGJlY2F1c2Ugb2YiCiAJCQkJCSAgICIgYSBwYXJhbWV0ZXIgY2hhbmdlIikpOwotCQkv KiBUaGUgZXhpdCBjb2RlIDEgd2lsbCBtYWtlIHBvc3RtYXN0ZXIgcmVzdGFydCB0aGlzIHdvcmtl ciAqLwotCQlwcm9jX2V4aXQoMSk7CisJCXByb2NfZXhpdCgwKTsKIAl9CiAKIAlwZnJlZShvbGRf cHJpbWFyeV9jb25uaW5mbyk7CkBAIC04NzIsNyArOTYxLDggQEAgUHJvY2Vzc1Nsb3RTeW5jSW50 ZXJydXB0cyhXYWxSZWNlaXZlckNvbm4gKndyY29ubikKIAogCWlmIChTaHV0ZG93blJlcXVlc3RQ ZW5kaW5nKQogCXsKLQkJd2FscmN2X2Rpc2Nvbm5lY3Qod3Jjb25uKTsKKwkJaWYgKHdyY29ubikK KwkJCXdhbHJjdl9kaXNjb25uZWN0KHdyY29ubik7CiAJCWVyZXBvcnQoTE9HLAogCQkJCWVycm1z ZygicmVwbGljYXRpb24gc2xvdCBzeW5jIHdvcmtlciBpcyBzaHV0dGluZyBkb3duIgogCQkJCQkg ICAiIG9uIHJlY2VpdmluZyBTSUdJTlQiKSk7CkBAIC05MDUsMjAgKzk5NSwxNiBAQCBzbG90c3lu Y193b3JrZXJfb25leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpCiAgKiBzeW5jLWN5Y2xlcyBpcyBy ZXNldCB0byB0aGUgbWluaW11bSAoMjAwbXMpLgogICovCiBzdGF0aWMgdm9pZAotd2FpdF9mb3Jf c2xvdF9hY3Rpdml0eShib29sIHNvbWVfc2xvdF91cGRhdGVkLCBib29sIGFtX2Nhc2NhZGluZ19z dGFuZGJ5KQord2FpdF9mb3Jfc2xvdF9hY3Rpdml0eShib29sIHNvbWVfc2xvdF91cGRhdGVkLCBi b29sIHJlY2hlY2tfcHJpbWFyeV9pbmZvKQogewotI2RlZmluZSBNSU5fV09SS0VSX05BUFRJTUVf TVMgIDIwMAotI2RlZmluZSBNQVhfV09SS0VSX05BUFRJTUVfTVMgIDMwMDAwCS8qIDMwcyAqLwot CiAJaW50CQkJcmM7CiAKLQlpZiAoYW1fY2FzY2FkaW5nX3N0YW5kYnkpCisJaWYgKHJlY2hlY2tf cHJpbWFyeV9pbmZvKQogCXsKIAkJLyoKLQkJICogU2xvdCBzeW5jaHJvbml6YXRpb24gaXMgY3Vy cmVudGx5IG5vdCBzdXBwb3J0ZWQgb24gY2FzY2FkaW5nCi0JCSAqIHN0YW5kYnkuIFNvIGlmIHdl IGFyZSBvbiB0aGUgY2FzY2FkaW5nIHN0YW5kYnksIHdlIHdpbGwgc2tpcCB0aGUKLQkJICogc3lu YyBhbmQgdGFrZSBhIGxvbmdlciBuYXAgYmVmb3JlIHdlIGNoZWNrIGFnYWluIHdoZXRoZXIgd2Ug YXJlCi0JCSAqIHN0aWxsIGNhc2NhZGluZyBzdGFuZGJ5IG9yIG5vdC4KKwkJICogSWYgd2UgYXJl IG9uIHRoZSBjYXNjYWRpbmcgc3RhbmRieSBvciBwcmltYXJ5X3Nsb3RfbmFtZSBjb25maWd1cmVk CisJCSAqIGlzIG5vdCB2YWxpZCwgdGhlbiB3ZSB3aWxsIHNraXAgdGhlIHN5bmMgYW5kIHRha2Ug YSBsb25nZXIgbmFwCisJCSAqIGJlZm9yZSB3ZSBjYW4gZG8gY2hlY2tfcHJpbWFyeV9pbmZvKCkg YWdhaW4uCiAJCSAqLwogCQlzbGVlcF9tcyA9IE1BWF9XT1JLRVJfTkFQVElNRV9NUzsKIAl9CkBA IC05NTQsNDQgKzEwNDAsMTE1IEBAIHdhaXRfZm9yX3Nsb3RfYWN0aXZpdHkoYm9vbCBzb21lX3Ns b3RfdXBkYXRlZCwgYm9vbCBhbV9jYXNjYWRpbmdfc3RhbmRieSkKICAqIEl0IGNvbm5lY3RzIHRv IHRoZSBwcmltYXJ5IHNlcnZlciwgZmV0Y2hlcyBsb2dpY2FsIGZhaWxvdmVyIHNsb3RzCiAgKiBp bmZvcm1hdGlvbiBwZXJpb2RpY2FsbHkgaW4gb3JkZXIgdG8gY3JlYXRlIGFuZCBzeW5jIHRoZSBz bG90cy4KICAqLwotdm9pZAotUmVwbFNsb3RTeW5jV29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykK K05PTl9FWEVDX1NUQVRJQyB2b2lkCitSZXBsU2xvdFN5bmNXb3JrZXJNYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiB7CiAJV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4gPSBOVUxMOwogCWNoYXIJ ICAgKmRibmFtZTsKIAlib29sCQlhbV9jYXNjYWRpbmdfc3RhbmRieTsKKwlib29sCQlwcmltYXJ5 X3Nsb3RfaW52YWxpZDsKIAljaGFyCSAgICplcnI7CisJc2lnam1wX2J1Zglsb2NhbF9zaWdqbXBf YnVmOwogCi0JZXJlcG9ydChMT0csIGVycm1zZygicmVwbGljYXRpb24gc2xvdCBzeW5jIHdvcmtl ciBzdGFydGVkIikpOworCWFtX3Nsb3RzeW5jX3dvcmtlciA9IHRydWU7CiAKLQlvbl9zaG1lbV9l eGl0KHNsb3RzeW5jX3dvcmtlcl9vbmV4aXQsIChEYXR1bSkgMCk7CisJTXlCYWNrZW5kVHlwZSA9 IEJfU0xPVFNZTkNfV09SS0VSOwogCi0JU3BpbkxvY2tBY3F1aXJlKCZTbG90U3luY1dvcmtlci0+ bXV0ZXgpOworCWluaXRfcHNfZGlzcGxheShOVUxMKTsKKworCVNldFByb2Nlc3NpbmdNb2RlKElu aXRQcm9jZXNzaW5nKTsKKworCS8qCisJICogQ3JlYXRlIGEgcGVyLWJhY2tlbmQgUEdQUk9DIHN0 cnVjdCBpbiBzaGFyZWQgbWVtb3J5LiAgV2UgbXVzdCBkbyB0aGlzCisJICogYmVmb3JlIHdlIGFj Y2VzcyBhbnkgc2hhcmVkIG1lbW9yeS4KKwkgKi8KKwlJbml0UHJvY2VzcygpOworCisJLyoKKwkg KiBFYXJseSBpbml0aWFsaXphdGlvbi4KKwkgKi8KKwlCYXNlSW5pdCgpOwogCisJQXNzZXJ0KFNs b3RTeW5jV29ya2VyICE9IE5VTEwpOworCisJU3BpbkxvY2tBY3F1aXJlKCZTbG90U3luY1dvcmtl ci0+bXV0ZXgpOwogCUFzc2VydChTbG90U3luY1dvcmtlci0+cGlkID09IEludmFsaWRQaWQpOwog CisJLyoKKwkgKiBTdGFydHVwIHByb2Nlc3Mgc2lnbmFsZWQgdGhlIHNsb3Qgc3luYyB3b3JrZXIg dG8gc3RvcCwgc28gaWYgbWVhbndoaWxlCisJICogcG9zdG1hc3RlciBlbmRlZCB1cCBzdGFydGlu ZyB0aGUgd29ya2VyIGFnYWluLCBleGl0LgorCSAqLworCWlmIChTbG90U3luY1dvcmtlci0+c3Rv cFNpZ25hbGVkKQorCXsKKwkJU3BpbkxvY2tSZWxlYXNlKCZTbG90U3luY1dvcmtlci0+bXV0ZXgp OworCQlwcm9jX2V4aXQoMCk7CisJfQorCiAJLyogQWR2ZXJ0aXNlIG91ciBQSUQgc28gdGhhdCB0 aGUgc3RhcnR1cCBwcm9jZXNzIGNhbiBraWxsIHVzIG9uIHByb21vdGlvbiAqLwogCVNsb3RTeW5j V29ya2VyLT5waWQgPSBNeVByb2NQaWQ7Ci0KIAlTcGluTG9ja1JlbGVhc2UoJlNsb3RTeW5jV29y a2VyLT5tdXRleCk7CiAKKwllcmVwb3J0KExPRywgZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IHN5 bmMgd29ya2VyIHN0YXJ0ZWQiKSk7CisKKwlvbl9zaG1lbV9leGl0KHNsb3RzeW5jX3dvcmtlcl9v bmV4aXQsIChEYXR1bSkgMCk7CisKIAkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KIAlwcXNp Z25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwogCXBxc2lnbmFsKFNJ R0lOVCwgU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVzdCk7CiAJcHFzaWduYWwoU0lHVEVS TSwgZGllKTsKLQlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKKworCS8qCisJICog RXN0YWJsaXNoZXMgU0lHQUxSTSBoYW5kbGVyIGFuZCBpbml0aWFsaXplIHRpbWVvdXQgbW9kdWxl LiBJdCBpcyBuZWVkZWQKKwkgKiBieSBJbml0UG9zdGdyZXMgdG8gcmVnaXN0ZXIgZGlmZmVyZW50 IHRpbWVvdXRzLgorCSAqLworCUluaXRpYWxpemVUaW1lb3V0cygpOwogCiAJLyogTG9hZCB0aGUg bGlicHEtc3BlY2lmaWMgZnVuY3Rpb25zICovCiAJbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVy IiwgZmFsc2UpOwogCi0JZGJuYW1lID0gdmFsaWRhdGVfcGFyYW1ldGVyc19hbmRfZ2V0X2RibmFt ZSgpOworCS8qCisJICogSWYgYW4gZXhjZXB0aW9uIGlzIGVuY291bnRlcmVkLCBwcm9jZXNzaW5n IHJlc3VtZXMgaGVyZS4KKwkgKgorCSAqIFdlIGp1c3QgbmVlZCB0byBjbGVhbiB1cCwgcmVwb3J0 IHRoZSBlcnJvciwgYW5kIGdvIGF3YXkuCisJICoKKwkgKiBJZiB3ZSBkbyBub3QgaGF2ZSB0aGlz IGhhbmRsaW5nIGhlcmUsIHRoZW4gc2luY2UgdGhpcyB3b3JrZXIgcHJvY2VzcworCSAqIG9wZXJh dGVzIGF0IHRoZSBib3R0b20gb2YgdGhlIGV4Y2VwdGlvbiBzdGFjaywgRVJST1JzIHR1cm4gaW50 byBGQVRBTHMuCisJICogVGhlcmVmb3JlLCB3ZSBjcmVhdGUgb3VyIG93biBleGNlcHRpb24gaGFu ZGxlciB0byBjYXRjaCBFUlJPUnMuCisJICovCisJaWYgKHNpZ3NldGptcChsb2NhbF9zaWdqbXBf YnVmLCAxKSAhPSAwKQorCXsKKwkJLyogc2luY2Ugbm90IHVzaW5nIFBHX1RSWSwgbXVzdCByZXNl dCBlcnJvciBzdGFjayBieSBoYW5kICovCisJCWVycm9yX2NvbnRleHRfc3RhY2sgPSBOVUxMOwor CisJCS8qIFByZXZlbnRzIGludGVycnVwdHMgd2hpbGUgY2xlYW5pbmcgdXAgKi8KKwkJSE9MRF9J TlRFUlJVUFRTKCk7CisKKwkJLyogUmVwb3J0IHRoZSBlcnJvciB0byB0aGUgc2VydmVyIGxvZyAq LworCQlFbWl0RXJyb3JSZXBvcnQoKTsKKworCQkvKgorCQkgKiBXZSBjYW4gbm93IGdvIGF3YXku ICBOb3RlIHRoYXQgYmVjYXVzZSB3ZSBjYWxsZWQgSW5pdFByb2Nlc3MsIGEKKwkJICogY2FsbGJh Y2sgd2FzIHJlZ2lzdGVyZWQgdG8gZG8gUHJvY0tpbGwsIHdoaWNoIHdpbGwgY2xlYW4gdXAKKwkJ ICogbmVjZXNzYXJ5IHN0YXRlLgorCQkgKi8KKwkJcHJvY19leGl0KDApOworCX0KKworCS8qIFdl IGNhbiBub3cgaGFuZGxlIGVyZXBvcnQoRVJST1IpICovCisJUEdfZXhjZXB0aW9uX3N0YWNrID0g JmxvY2FsX3NpZ2ptcF9idWY7CisKKwlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsK KworCWRibmFtZSA9IHdhaXRfZm9yX3ZhbGlkX3BhcmFtc19hbmRfZ2V0X2RibmFtZSgpOwogCiAJ LyoKIAkgKiBDb25uZWN0IHRvIHRoZSBkYXRhYmFzZSBzcGVjaWZpZWQgYnkgdXNlciBpbiBwcmlt YXJ5X2Nvbm5pbmZvLiBXZSBuZWVkCiAJICogYSBkYXRhYmFzZSBjb25uZWN0aW9uIGZvciB3YWxy Y3ZfZXhlYyB0byB3b3JrLiBQbGVhc2Ugc2VlIGNvbW1lbnRzIGF0b3AKIAkgKiBsaWJwcXJjdl9l eGVjLgogCSAqLwotCUJhY2tncm91bmRXb3JrZXJJbml0aWFsaXplQ29ubmVjdGlvbihkYm5hbWUs IE5VTEwsIDApOworCUluaXRQb3N0Z3JlcyhkYm5hbWUsIEludmFsaWRPaWQsIE5VTEwsIEludmFs aWRPaWQsIDAsIE5VTEwpOworCisJU2V0UHJvY2Vzc2luZ01vZGUoTm9ybWFsUHJvY2Vzc2luZyk7 CiAKIAkvKgogCSAqIEVzdGFibGlzaCB0aGUgY29ubmVjdGlvbiB0byB0aGUgcHJpbWFyeSBzZXJ2 ZXIgZm9yIHNsb3RzCkBAIC0xMDEwLDI2ICsxMTY3LDI3IEBAIFJlcGxTbG90U3luY1dvcmtlck1h aW4oRGF0dW0gbWFpbl9hcmcpCiAJICogY2FzY2FkaW5nIHN0YW5kYnkgYW5kIHZhbGlkYXRlcyBw cmltYXJ5X3Nsb3RfbmFtZSBmb3IKIAkgKiBub24tY2FzY2FkaW5nLXN0YW5kYnlzLgogCSAqLwot CWNoZWNrX3ByaW1hcnlfaW5mbyh3cmNvbm4sICZhbV9jYXNjYWRpbmdfc3RhbmRieSk7CisJY2hl Y2tfcHJpbWFyeV9pbmZvKHdyY29ubiwgJmFtX2Nhc2NhZGluZ19zdGFuZGJ5LCAmcHJpbWFyeV9z bG90X2ludmFsaWQpOwogCiAJLyogTWFpbiB3YWl0IGxvb3AgKi8KIAlmb3IgKDs7KQogCXsKIAkJ Ym9vbAkJc29tZV9zbG90X3VwZGF0ZWQgPSBmYWxzZTsKKwkJYm9vbAkJcmVjaGVja19wcmltYXJ5 X2luZm8gPSBhbV9jYXNjYWRpbmdfc3RhbmRieSB8fCBwcmltYXJ5X3Nsb3RfaW52YWxpZDsKIAog CQlQcm9jZXNzU2xvdFN5bmNJbnRlcnJ1cHRzKHdyY29ubik7CiAKLQkJaWYgKCFhbV9jYXNjYWRp bmdfc3RhbmRieSkKKwkJaWYgKCFyZWNoZWNrX3ByaW1hcnlfaW5mbykKIAkJCXNvbWVfc2xvdF91 cGRhdGVkID0gc3luY2hyb25pemVfc2xvdHMod3Jjb25uKTsKIAotCQl3YWl0X2Zvcl9zbG90X2Fj dGl2aXR5KHNvbWVfc2xvdF91cGRhdGVkLCBhbV9jYXNjYWRpbmdfc3RhbmRieSk7CisJCXdhaXRf Zm9yX3Nsb3RfYWN0aXZpdHkoc29tZV9zbG90X3VwZGF0ZWQsIHJlY2hlY2tfcHJpbWFyeV9pbmZv KTsKIAogCQkvKgogCQkgKiBJZiB0aGUgc3RhbmRieSB3YXMgcHJvbW90ZWQgdGhlbiB3aGF0IHdh cyBwcmV2aW91c2x5IGEgY2FzY2FkaW5nCiAJCSAqIHN0YW5kYnkgbWlnaHQgbm8gbG9uZ2VyIGJl IG9uZSwgc28gcmVjaGVjayBlYWNoIHRpbWUuCiAJCSAqLwotCQlpZiAoYW1fY2FzY2FkaW5nX3N0 YW5kYnkpCi0JCQljaGVja19wcmltYXJ5X2luZm8od3Jjb25uLCAmYW1fY2FzY2FkaW5nX3N0YW5k YnkpOworCQlpZiAocmVjaGVja19wcmltYXJ5X2luZm8pCisJCQljaGVja19wcmltYXJ5X2luZm8o d3Jjb25uLCAmYW1fY2FzY2FkaW5nX3N0YW5kYnksICZwcmltYXJ5X3Nsb3RfaW52YWxpZCk7CiAJ fQogCiAJLyoKQEAgLTEwNDYsNyArMTIwNCw3IEBAIFJlcGxTbG90U3luY1dvcmtlck1haW4oRGF0 dW0gbWFpbl9hcmcpCiBib29sCiBJc0xvZ2ljYWxTbG90U3luY1dvcmtlcih2b2lkKQogewotCXJl dHVybiBTbG90U3luY1dvcmtlci0+cGlkID09IE15UHJvY1BpZDsKKwlyZXR1cm4gYW1fc2xvdHN5 bmNfd29ya2VyOwogfQogCiAvKgpAQCAtMTA2Miw2ICsxMjIwLDcgQEAgU2h1dERvd25TbG90U3lu Yyh2b2lkKQogCQlyZXR1cm47CiAJfQogCisJU2xvdFN5bmNXb3JrZXItPnN0b3BTaWduYWxlZCA9 IHRydWU7CiAJa2lsbChTbG90U3luY1dvcmtlci0+cGlkLCBTSUdJTlQpOwogCiAJU3BpbkxvY2tS ZWxlYXNlKCZTbG90U3luY1dvcmtlci0+bXV0ZXgpOwpAQCAtMTExNyw0MiArMTI3Niw2NCBAQCBT bG90U3luY1dvcmtlclNobWVtSW5pdCh2b2lkKQogCX0KIH0KIAorI2lmZGVmIEVYRUNfQkFDS0VO RAogLyoKLSAqIFJlZ2lzdGVyIHRoZSBiYWNrZ3JvdW5kIHdvcmtlciBmb3Igc2xvdHMgc3luY2hy b25pemF0aW9uIHByb3ZpZGVkCi0gKiBlbmFibGVfc3luY3Nsb3QgaXMgT04uCisgKiBUaGUgZm9y a2V4ZWMgcm91dGluZSBmb3IgdGhlIHNsb3Qgc3luYyB3b3JrZXIgcHJvY2Vzcy4KKyAqCisgKiBG b3JtYXQgdXAgdGhlIGFyZ2xpc3QsIHRoZW4gZm9yayBhbmQgZXhlYy4KICAqLwotdm9pZAotU2xv dFN5bmNXb3JrZXJSZWdpc3Rlcih2b2lkKQorc3RhdGljIHBpZF90CitzbG90c3luY3dvcmtlcl9m b3JrZXhlYyh2b2lkKQogewotCUJhY2tncm91bmRXb3JrZXIgYmd3OworCWNoYXIJICAgKmF2WzEw XTsKKwlpbnQJCQlhYyA9IDA7CiAKLQlpZiAoIWVuYWJsZV9zeW5jc2xvdCkKLQl7Ci0JCWVyZXBv cnQoTE9HLAotCQkJCWVycm1zZygic2tpcHBpbmcgc2xvdCBzeW5jaHJvbml6YXRpb24iKSwKLQkJ CQllcnJkZXRhaWwoImVuYWJsZV9zeW5jc2xvdCBpcyBkaXNhYmxlZC4iKSk7Ci0JCXJldHVybjsK LQl9CisJYXZbYWMrK10gPSAicG9zdGdyZXMiOworCWF2W2FjKytdID0gIi0tZm9ya3Nzd29ya2Vy IjsKKwlhdlthYysrXSA9IE5VTEw7CQkJLyogZmlsbGVkIGluIGJ5IHBvc3RtYXN0ZXJfZm9ya2V4 ZWMgKi8KKwlhdlthY10gPSBOVUxMOworCisJQXNzZXJ0KGFjIDwgbGVuZ3Rob2YoYXYpKTsKKwor CXJldHVybiBwb3N0bWFzdGVyX2ZvcmtleGVjKGFjLCBhdik7Cit9CisjZW5kaWYKIAotCW1lbXNl dCgmYmd3LCAwLCBzaXplb2YoYmd3KSk7CisvKgorICogTWFpbiBlbnRyeSBwb2ludCBmb3Igc2xv dCBzeW5jIHdvcmtlciBwcm9jZXNzLCB0byBiZSBjYWxsZWQgZnJvbSB0aGUKKyAqIHBvc3RtYXN0 ZXIuCisgKi8KK2ludAorU3RhcnRTbG90U3luY1dvcmtlcih2b2lkKQoreworCXBpZF90CQlwaWQ7 CiAKLQkvKiBXZSBuZWVkIGRhdGFiYXNlIGNvbm5lY3Rpb24gd2hpY2ggbmVlZHMgc2hhcmVkLW1l bW9yeSBhY2Nlc3MgYXMgd2VsbCAqLwotCWJndy5iZ3dfZmxhZ3MgPSBCR1dPUktFUl9TSE1FTV9B Q0NFU1MgfAotCQlCR1dPUktFUl9CQUNLRU5EX0RBVEFCQVNFX0NPTk5FQ1RJT047CisjaWZkZWYg RVhFQ19CQUNLRU5ECisJc3dpdGNoICgocGlkID0gc2xvdHN5bmN3b3JrZXJfZm9ya2V4ZWMoKSkp CisjZWxzZQorCXN3aXRjaCAoKHBpZCA9IGZvcmtfcHJvY2VzcygpKSkKKyNlbmRpZgorCXsKKwkJ Y2FzZSAtMToKKwkJCWVyZXBvcnQoTE9HLAorCQkJCQkoZXJybXNnKCJjb3VsZCBub3QgZm9yayBz bG90IHN5bmMgd29ya2VyIHByb2Nlc3M6ICVtIikpKTsKKwkJCXJldHVybiAwOwogCi0JLyogU3Rh cnQgYXMgc29vbiBhcyBhIGNvbnNpc3RlbnQgc3RhdGUgaGFzIGJlZW4gcmVhY2hlZCBpbiBhIGhv dCBzdGFuZGJ5ICovCi0JYmd3LmJnd19zdGFydF90aW1lID0gQmdXb3JrZXJTdGFydF9Db25zaXN0 ZW50U3RhdGVfSG90U3RhbmRieTsKKyNpZm5kZWYgRVhFQ19CQUNLRU5ECisJCWNhc2UgMDoKKwkJ CS8qIGluIHBvc3RtYXN0ZXIgY2hpbGQgLi4uICovCisJCQlJbml0UG9zdG1hc3RlckNoaWxkKCk7 CiAKLQlzbnByaW50ZihiZ3cuYmd3X2xpYnJhcnlfbmFtZSwgTUFYUEdQQVRILCAicG9zdGdyZXMi KTsKLQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJSZXBsU2xv dFN5bmNXb3JrZXJNYWluIik7Ci0Jc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAot CQkJICJyZXBsaWNhdGlvbiBzbG90IHN5bmMgd29ya2VyIik7Ci0Jc25wcmludGYoYmd3LmJnd190 eXBlLCBCR1dfTUFYTEVOLAotCQkJICJzbG90IHN5bmMgd29ya2VyIik7CisJCQkvKiBDbG9zZSB0 aGUgcG9zdG1hc3RlcidzIHNvY2tldHMgKi8KKwkJCUNsb3NlUG9zdG1hc3RlclBvcnRzKGZhbHNl KTsKIAotCWJndy5iZ3dfcmVzdGFydF90aW1lID0gQkdXX0RFRkFVTFRfUkVTVEFSVF9JTlRFUlZB TDsKLQliZ3cuYmd3X25vdGlmeV9waWQgPSAwOwotCWJndy5iZ3dfbWFpbl9hcmcgPSAoRGF0dW0p IDA7CisJCQlSZXBsU2xvdFN5bmNXb3JrZXJNYWluKDAsIE5VTEwpOworCQkJYnJlYWs7CisjZW5k aWYKKwkJZGVmYXVsdDoKKwkJCXJldHVybiAoaW50KSBwaWQ7CisJfQogCi0JUmVnaXN0ZXJCYWNr Z3JvdW5kV29ya2VyKCZiZ3cpOworCS8qIHNob3VsZG4ndCBnZXQgaGVyZSAqLworCXJldHVybiAw OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5kZXggNGFkOTZiZWI4Ny4uYWQxMzUyYmY3NiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAicmVw bGljYXRpb24vc2xvdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3N5bmNyZXAuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dp Y2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNp bmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgpAQCAtMzY0 LDggKzM2NSwxMSBAQCBJbml0UHJvY2Vzcyh2b2lkKQogCSAqIGNoaWxkOyB0aGlzIGlzIHNvIHRo YXQgdGhlIHBvc3RtYXN0ZXIgY2FuIGRldGVjdCBpdCBpZiB3ZSBleGl0IHdpdGhvdXQKIAkgKiBj bGVhbmluZyB1cC4gIChYWFggYXV0b3ZhYyBsYXVuY2hlciBjdXJyZW50bHkgZG9lc24ndCBwYXJ0 aWNpcGF0ZSBpbgogCSAqIHRoaXM7IGl0IHByb2JhYmx5IHNob3VsZC4pCisJICoKKwkgKiBTbG90 IHN5bmMgd29ya2VyIGRvZXMgbm90IHBhcnRpY2lwYXRlIGluIGl0LCBzZWUgY29tbWVudHMgYXRv cCBCYWNrZW5kLgogCSAqLwotCWlmIChJc1VuZGVyUG9zdG1hc3RlciAmJiAhSXNBdXRvVmFjdXVt TGF1bmNoZXJQcm9jZXNzKCkpCisJaWYgKElzVW5kZXJQb3N0bWFzdGVyICYmICFJc0F1dG9WYWN1 dW1MYXVuY2hlclByb2Nlc3MoKSAmJgorCQkhSXNMb2dpY2FsU2xvdFN5bmNXb3JrZXIoKSkKIAkJ TWFya1Bvc3RtYXN0ZXJDaGlsZEFjdGl2ZSgpOwogCiAJLyoKQEAgLTkzNSw3ICs5MzksOCBAQCBQ cm9jS2lsbChpbnQgY29kZSwgRGF0dW0gYXJnKQogCSAqIHdheSwgc28gdGVsbCB0aGUgcG9zdG1h c3RlciB3ZSd2ZSBjbGVhbmVkIHVwIGFjY2VwdGFibHkgd2VsbC4gKFhYWAogCSAqIGF1dG92YWMg bGF1bmNoZXIgc2hvdWxkIGJlIGluY2x1ZGVkIGhlcmUgc29tZWRheSkKIAkgKi8KLQlpZiAoSXNV bmRlclBvc3RtYXN0ZXIgJiYgIUlzQXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2VzcygpKQorCWlmIChJ c1VuZGVyUG9zdG1hc3RlciAmJiAhSXNBdXRvVmFjdXVtTGF1bmNoZXJQcm9jZXNzKCkgJiYKKwkJ IUlzTG9naWNhbFNsb3RTeW5jV29ya2VyKCkpCiAJCU1hcmtQb3N0bWFzdGVyQ2hpbGRJbmFjdGl2 ZSgpOwogCiAJLyogd2FrZSBhdXRvdmFjIGxhdW5jaGVyIGlmIG5lZWRlZCAtLSBzZWUgY29tbWVu dHMgaW4gRnJlZVdvcmtlckluZm8gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9z dGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAxOWIwOGMxYjVmLi4x ZWFhZjNjNmM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIv c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0zMjg2LDE3ICszMjg2LDYgQEAgUHJvY2Vz c0ludGVycnVwdHModm9pZCkKIAkJCSAqLwogCQkJcHJvY19leGl0KDEpOwogCQl9Ci0JCWVsc2Ug aWYgKElzTG9naWNhbFNsb3RTeW5jV29ya2VyKCkpCi0JCXsKLQkJCWVsb2coREVCVUcxLAotCQkJ CSAicmVwbGljYXRpb24gc2xvdCBzeW5jIHdvcmtlciBpcyBzaHV0dGluZyBkb3duIGR1ZSB0byBh ZG1pbmlzdHJhdG9yIGNvbW1hbmQiKTsKLQotCQkJLyoKLQkJCSAqIFNsb3Qgc3luYyB3b3JrZXIg Y2FuIGJlIHN0b3BwZWQgYXQgYW55IHRpbWUuIFVzZSBleGl0IHN0YXR1cyAxCi0JCQkgKiBzbyB0 aGUgYmFja2dyb3VuZCB3b3JrZXIgaXMgcmVzdGFydGVkLgotCQkJICovCi0JCQlwcm9jX2V4aXQo MSk7Ci0JCX0KIAkJZWxzZSBpZiAoSXNCYWNrZ3JvdW5kV29ya2VyKQogCQkJZXJlcG9ydChGQVRB TCwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9BRE1JTl9TSFVURE9XTiksCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3Bnc3RhdF9pby5jCmluZGV4IDQzYzM5M2Q2ZmUuLmM1ZGU1MjhiMzQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jCkBAIC0zNDEsNiArMzQxLDcgQEAgcGdz dGF0X3RyYWNrc19pb19ia3R5cGUoQmFja2VuZFR5cGUgYmt0eXBlKQogCQljYXNlIEJfU1RBTkRB TE9ORV9CQUNLRU5EOgogCQljYXNlIEJfU1RBUlRVUDoKIAkJY2FzZSBCX1dBTF9TRU5ERVI6CisJ CWNhc2UgQl9TTE9UU1lOQ19XT1JLRVI6CiAJCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2luaXQvbWlzY2luaXQuYwppbmRleCAyM2Y3N2E1OWU1Li5kNWUxNmYxZGY0IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvaW5pdC9taXNjaW5pdC5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rl ci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3BnYXJjaC5oIgogI2luY2x1ZGUg InBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3 b3JrZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMu aCIKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCkBAIC0zMTEsNiArMzEyLDkgQEAgR2V0QmFj a2VuZFR5cGVEZXNjKEJhY2tlbmRUeXBlIGJhY2tlbmRUeXBlKQogCQljYXNlIEJfV0FMX1dSSVRF UjoKIAkJCWJhY2tlbmREZXNjID0gIndhbHdyaXRlciI7CiAJCQlicmVhazsKKwkJY2FzZSBCX1NM T1RTWU5DX1dPUktFUjoKKwkJCWJhY2tlbmREZXNjID0gInNsb3RzeW5jd29ya2VyIjsKKwkJCWJy ZWFrOwogCX0KIAogCXJldHVybiBiYWNrZW5kRGVzYzsKQEAgLTgzNyw3ICs4NDEsOCBAQCBJbml0 aWFsaXplU2Vzc2lvblVzZXJJZFN0YW5kYWxvbmUodm9pZCkKIAkgKiBUaGlzIGZ1bmN0aW9uIHNo b3VsZCBvbmx5IGJlIGNhbGxlZCBpbiBzaW5nbGUtdXNlciBtb2RlLCBpbiBhdXRvdmFjdXVtCiAJ ICogd29ya2VycywgYW5kIGluIGJhY2tncm91bmQgd29ya2Vycy4KIAkgKi8KLQlBc3NlcnQoIUlz VW5kZXJQb3N0bWFzdGVyIHx8IElzQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSB8fCBJc0JhY2tn cm91bmRXb3JrZXIpOworCUFzc2VydCghSXNVbmRlclBvc3RtYXN0ZXIgfHwgSXNBdXRvVmFjdXVt V29ya2VyUHJvY2VzcygpIHx8CisJCSAgIElzTG9naWNhbFNsb3RTeW5jV29ya2VyKCkgfHwgSXNC YWNrZ3JvdW5kV29ya2VyKTsKIAogCS8qIGNhbGwgb25seSBvbmNlICovCiAJQXNzZXJ0KCFPaWRJ c1ZhbGlkKEF1dGhlbnRpY2F0ZWRVc2VySWQpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2luaXQvcG9zdGluaXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwpp bmRleCAxYWQzMzY3MTU5Li5hNWFmMGY0MTBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9pbml0L3Bvc3Rpbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5j CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAj aW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24v c2xvdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgog I2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKQEAgLTg3NCwxMCArODc1LDExIEBAIEluaXRQb3N0Z3Jl cyhjb25zdCBjaGFyICppbl9kYm5hbWUsIE9pZCBkYm9pZCwKIAkgKiBQZXJmb3JtIGNsaWVudCBh dXRoZW50aWNhdGlvbiBpZiBuZWNlc3NhcnksIHRoZW4gZmlndXJlIG91dCBvdXIKIAkgKiBwb3N0 Z3JlcyB1c2VyIElELCBhbmQgc2VlIGlmIHdlIGFyZSBhIHN1cGVydXNlci4KIAkgKgotCSAqIElu IHN0YW5kYWxvbmUgbW9kZSBhbmQgaW4gYXV0b3ZhY3V1bSB3b3JrZXIgcHJvY2Vzc2VzLCB3ZSB1 c2UgYSBmaXhlZAotCSAqIElELCBvdGhlcndpc2Ugd2UgZmlndXJlIGl0IG91dCBmcm9tIHRoZSBh dXRoZW50aWNhdGVkIHVzZXIgbmFtZS4KKwkgKiBJbiBzdGFuZGFsb25lIG1vZGUsIGF1dG92YWN1 dW0gd29ya2VyIHByb2Nlc3NlcyBhbmQgc2xvdCBzeW5jIHdvcmtlcgorCSAqIHByb2Nlc3MsIHdl IHVzZSBhIGZpeGVkIElELCBvdGhlcndpc2Ugd2UgZmlndXJlIGl0IG91dCBmcm9tIHRoZQorCSAq IGF1dGhlbnRpY2F0ZWQgdXNlciBuYW1lLgogCSAqLwotCWlmIChib290c3RyYXAgfHwgSXNBdXRv VmFjdXVtV29ya2VyUHJvY2VzcygpKQorCWlmIChib290c3RyYXAgfHwgSXNBdXRvVmFjdXVtV29y a2VyUHJvY2VzcygpIHx8IElzTG9naWNhbFNsb3RTeW5jV29ya2VyKCkpCiAJewogCQlJbml0aWFs aXplU2Vzc2lvblVzZXJJZFN0YW5kYWxvbmUoKTsKIAkJYW1fc3VwZXJ1c2VyID0gdHJ1ZTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggMGY1ZWM2M2RlMS4uNTc2MzQ1NDMzNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTIwNDYsNyArMjA0Niw3IEBAIHN0 cnVjdCBjb25maWdfYm9vbCBDb25maWd1cmVOYW1lc0Jvb2xbXSA9CiAJfSwKIAogCXsKLQkJeyJl bmFibGVfc3luY3Nsb3QiLCBQR0NfUE9TVE1BU1RFUiwgUkVQTElDQVRJT05fU1RBTkRCWSwKKwkJ eyJlbmFibGVfc3luY3Nsb3QiLCBQR0NfU0lHSFVQLCBSRVBMSUNBVElPTl9TVEFOREJZLAogCQkJ Z2V0dGV4dF9ub29wKCJFbmFibGVzIGEgcGh5c2ljYWwgc3RhbmRieSB0byBzeW5jaHJvbml6ZSBs b2dpY2FsIGZhaWxvdmVyIHNsb3RzIGZyb20gdGhlIHByaW1hcnkgc2VydmVyLiIpLAogCQl9LAog CQkmZW5hYmxlX3N5bmNzbG90LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgg Yi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCAwYjAxYzFmMDkzLi5lODliODEyMWYzIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5jbHVkZS9taXNj YWRtaW4uaApAQCAtMzM3LDYgKzMzNyw3IEBAIHR5cGVkZWYgZW51bSBCYWNrZW5kVHlwZQogCUJf V0FMX1JFQ0VJVkVSLAogCUJfV0FMX1NFTkRFUiwKIAlCX1dBTF9TVU1NQVJJWkVSLAorCUJfU0xP VFNZTkNfV09SS0VSLAogCUJfV0FMX1dSSVRFUiwKIH0gQmFja2VuZFR5cGU7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3Bvc3Rt YXN0ZXIvYmd3b3JrZXIuaAppbmRleCA3MDkyZmM3MmM2Li4yMmZjNDllYzI3IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9iZ3dvcmtlci5oCkBAIC03OSw3ICs3OSw2IEBAIHR5cGVkZWYgZW51bQogCUJnV29y a2VyU3RhcnRfUG9zdG1hc3RlclN0YXJ0LAogCUJnV29ya2VyU3RhcnRfQ29uc2lzdGVudFN0YXRl LAogCUJnV29ya2VyU3RhcnRfUmVjb3ZlcnlGaW5pc2hlZCwKLQlCZ1dvcmtlclN0YXJ0X0NvbnNp c3RlbnRTdGF0ZV9Ib3RTdGFuZGJ5LAogfSBCZ1dvcmtlclN0YXJ0VGltZTsKIAogI2RlZmluZSBC R1dfREVGQVVMVF9SRVNUQVJUX0lOVEVSVkFMCTYwCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dv cmtlcl9pbnRlcm5hbC5oCmluZGV4IDIxNjc3MjA5NzEuLmNkNTMwZDNkNDAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0zMjksOSArMzI5LDEwIEBAIGV4 dGVybiB2b2lkIHBhX2RlY3JfYW5kX3dhaXRfc3RyZWFtX2Jsb2NrKHZvaWQpOwogCiBleHRlcm4g dm9pZCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCiAJCQkJ CQkgICBYTG9nUmVjUHRyIHJlbW90ZV9sc24pOwotCi1leHRlcm4gdm9pZCBSZXBsU2xvdFN5bmNX b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKLWV4dGVybiB2b2lkIFNsb3RTeW5jV29ya2VyUmVn aXN0ZXIodm9pZCk7CisjaWZkZWYgRVhFQ19CQUNLRU5ECitleHRlcm4gdm9pZCBSZXBsU2xvdFN5 bmNXb3JrZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHBnX2F0dHJpYnV0ZV9ub3JldHVy bigpOworI2VuZGlmCitleHRlcm4gaW50IFN0YXJ0U2xvdFN5bmNXb3JrZXIodm9pZCk7CiBleHRl cm4gdm9pZCBTaHV0RG93blNsb3RTeW5jKHZvaWQpOwogZXh0ZXJuIHZvaWQgU2xvdFN5bmNXb3Jr ZXJTaG1lbUluaXQodm9pZCk7CiAKLS0gCjIuMzQuMQoK --00000000000006ae0b060f0ed540 Content-Type: application/octet-stream; name="v62-0006-Document-the-steps-to-check-if-the-standby-is-re.patch" Content-Disposition: attachment; filename="v62-0006-Document-the-steps-to-check-if-the-standby-is-re.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrgap7io5 RnJvbSBkNGNkNjY2MmIxNjJkMjI5ZTYyMjUwMDcwZGNlZGE0MDllY2FkZGFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBUdWUsIDE2IEphbiAyMDI0IDE0OjAyOjMyICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NjIgNi82XSBEb2N1bWVudCB0aGUgc3RlcHMgdG8gY2hlY2sgaWYgdGhlIHN0YW5kYnkgaXMgcmVh ZHkKIGZvciBmYWlsb3ZlcgoKLS0tCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5z Z21sIHwgMTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTI1 IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNh dGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCBl YzIxMzA2NjllLi42NTM5YzYwODQzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1y ZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNn bWwKQEAgLTY4Nyw2ICs2ODcsMTMxIEBAIEFMVEVSIFNVQlNDUklQVElPTgogCiAgPC9zZWN0MT4K IAorIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1mYWlsb3ZlciI+CisgIDx0aXRsZT5M b2dpY2FsIFJlcGxpY2F0aW9uIEZhaWxvdmVyPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFdoZW4g dGhlIHB1Ymxpc2hlciBzZXJ2ZXIgaXMgdGhlIHByaW1hcnkgc2VydmVyIG9mIGEgc3RyZWFtaW5n IHJlcGxpY2F0aW9uLAorICAgdGhlIGxvZ2ljYWwgc2xvdHMgb24gdGhhdCBwcmltYXJ5IHNlcnZl ciBjYW4gYmUgc3luY2hyb25pemVkIHRvIHRoZSBzdGFuZGJ5CisgICBzZXJ2ZXIgYnkgc3BlY2lm eWluZyA8bGl0ZXJhbD5mYWlsb3ZlciA9IHRydWU8L2xpdGVyYWw+IHdoZW4gY3JlYXRpbmcKKyAg IHN1YnNjcmlwdGlvbnMgZm9yIHRob3NlIHB1YmxpY2F0aW9ucy4gRW5hYmxpbmcgZmFpbG92ZXIg ZW5zdXJlcyBhIHNlYW1sZXNzCisgICB0cmFuc2l0aW9uIG9mIHRob3NlIHN1YnNjcmlwdGlvbnMg YWZ0ZXIgdGhlIHN0YW5kYnkgaXMgcHJvbW90ZWQuIFRoZXkgY2FuCisgICBjb250aW51ZSBzdWJz Y3JpYmluZyB0byBwdWJsaWNhdGlvbnMgbm93IG9uIHRoZSBuZXcgcHJpbWFyeSBzZXJ2ZXIgd2l0 aG91dAorICAgYW55IGRhdGEgbG9zcy4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgQmVjYXVz ZSB0aGUgc2xvdCBzeW5jaHJvbml6YXRpb24gbG9naWMgY29waWVzIGFzeW5jaHJvbm91c2x5LCBp dCBpcworICAgbmVjZXNzYXJ5IHRvIGNvbmZpcm0gdGhhdCByZXBsaWNhdGlvbiBzbG90cyBoYXZl IGJlZW4gc3luY2VkIHRvIHRoZSBzdGFuZGJ5CisgICBzZXJ2ZXIgYmVmb3JlIHRoZSBmYWlsb3Zl ciBoYXBwZW5zLiBGdXJ0aGVybW9yZSwgdG8gZW5zdXJlIGEgc3VjY2Vzc2Z1bAorICAgZmFpbG92 ZXIsIHRoZSBzdGFuZGJ5IHNlcnZlciBtdXN0IG5vdCBiZSBsYWdnaW5nIGJlaGluZCB0aGUgc3Vi c2NyaWJlci4gSXQKKyAgIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byB1c2UgPHZhcm5hbWU+c3Rh bmRieV9zbG90X25hbWVzPC92YXJuYW1lPiB0bworICAgcHJldmVudCB0aGUgc3Vic2NyaWJlciBm cm9tIGNvbnN1bWluZyBjaGFuZ2VzIGZhc3RlciB0aGFuIHRoZSBob3Qgc3RhbmRieS4KKyAgIFRv IGNvbmZpcm0gdGhhdCB0aGUgc3RhbmRieSBzZXJ2ZXIgaXMgaW5kZWVkIHJlYWR5IGZvciBmYWls b3ZlciwgZm9sbG93CisgICB0aGVzZSAyIHN0ZXBzOgorICA8L3BhcmE+CisKKyAgPHByb2NlZHVy ZT4KKyAgIDxzdGVwIHBlcmZvcm1hbmNlPSJyZXF1aXJlZCI+CisgICAgPHBhcmE+CisgICAgIENv bmZpcm0gdGhhdCBhbGwgdGhlIG5lY2Vzc2FyeSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3RzIGhh dmUgYmVlbiBzeW5jZWQgdG8KKyAgICAgdGhlIHN0YW5kYnkgc2VydmVyLgorICAgIDwvcGFyYT4K KyAgICA8c3Vic3RlcHM+CisgICAgIDxzdGVwIHBlcmZvcm1hbmNlPSJyZXF1aXJlZCI+CisgICAg ICA8cGFyYT4KKyAgICAgICBGaXJzdGx5LCBvbiB0aGUgc3Vic2NyaWJlciBub2RlLCB1c2UgdGhl IGZvbGxvd2luZyBTUUwgdG8gaWRlbnRpZnkgdGhlCisgICAgICAgc2xvdCBuYW1lcyB0aGF0IHNo b3VsZCBiZSBzeW5jZWQgdG8gdGhlIHN0YW5kYnkgdGhhdCB3ZSBwbGFuIHRvIHByb21vdGUuCis8 cHJvZ3JhbWxpc3Rpbmc+Cit0ZXN0X3N1Yj0jIFNFTEVDVAorICAgICAgICAgICAgICAgYXJyYXlf YWdnKHNsb3RuYW1lKSBBUyBzbG90cworICAgICAgICAgICBGUk9NCisgICAgICAgICAgICgoCisg ICAgICAgICAgICAgICBTRUxFQ1Qgci5zcnN1YmlkIEFTIHN1YmlkLCBDT05DQVQoJ3BnXycgfHwg c3JzdWJpZCB8fCAnX3N5bmNfJyB8fCBzcnJlbGlkIHx8ICdfJyB8fCBjdGwuc3lzdGVtX2lkZW50 aWZpZXIpIEFTIHNsb3RuYW1lCisgICAgICAgICAgICAgICBGUk9NIHBnX2NvbnRyb2xfc3lzdGVt KCkgY3RsLCBwZ19zdWJzY3JpcHRpb25fcmVsIHIsIHBnX3N1YnNjcmlwdGlvbiBzCisgICAgICAg ICAgICAgICBXSEVSRSByLnNyc3Vic3RhdGUgPSAnZicgQU5EIHMub2lkID0gci5zcnN1YmlkIEFO RCBzLnN1YmZhaWxvdmVyCisgICAgICAgICAgICkgVU5JT04gKAorICAgICAgICAgICAgICAgU0VM RUNUIHMub2lkIEFTIHN1YmlkLCBzLnN1YnNsb3RuYW1lIGFzIHNsb3RuYW1lCisgICAgICAgICAg ICAgICBGUk9NIHBnX3N1YnNjcmlwdGlvbiBzCisgICAgICAgICAgICAgICBXSEVSRSBzLnN1YmZh aWxvdmVyCisgICAgICAgICAgICkpOworIHNsb3RzCistLS0tLS0tCisge3N1Yn0KKygxIHJvdykK KzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorICAgICA8L3N0ZXA+CisgICAgIDxzdGVwIHBlcmZv cm1hbmNlPSJyZXF1aXJlZCI+CisgICAgICA8cGFyYT4KKyAgICAgICBOZXh0LCBjaGVjayB0aGF0 IHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3RzIGlkZW50aWZpZWQgYWJvdmUgZXhpc3Qgb24K KyAgICAgICB0aGUgc3RhbmRieSBzZXJ2ZXIuIFRoaXMgc3RlcCBjYW4gYmUgc2tpcHBlZCBpZgor ICAgICAgIDx2YXJuYW1lPnN0YW5kYnlfc2xvdF9uYW1lczwvdmFybmFtZT4gaGFzIGJlZW4gY29y cmVjdGx5IGNvbmZpZ3VyZWQuCis8cHJvZ3JhbWxpc3Rpbmc+Cit0ZXN0X3N0YW5kYnk9IyBTRUxF Q1QgYm9vbF9hbmQoc3luY2VkIEFORCBOT1QgdGVtcG9yYXJ5IEFORCBjb25mbGljdF9yZWFzb24g SVMgTlVMTCkgQVMgZmFpbG92ZXJfcmVhZHkKKyAgICAgICAgICAgICAgIEZST00gcGdfcmVwbGlj YXRpb25fc2xvdHMKKyAgICAgICAgICAgICAgIFdIRVJFIHNsb3RfbmFtZSBpbiAoJ3N1YicpOwor IGZhaWxvdmVyX3JlYWR5CistLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorPC9wcm9ncmFt bGlzdGluZz48L3BhcmE+CisgICAgIDwvc3RlcD4KKyAgICA8L3N1YnN0ZXBzPgorICAgPC9zdGVw PgorCisgICA8c3RlcCBwZXJmb3JtYW5jZT0icmVxdWlyZWQiPgorICAgIDxwYXJhPgorICAgICBD b25maXJtIHRoYXQgdGhlIHN0YW5kYnkgc2VydmVyIGlzIG5vdCBsYWdnaW5nIGJlaGluZCB0aGUg c3Vic2NyaWJlcnMuCisgICAgPC9wYXJhPgorICAgICA8c3Vic3RlcHM+CisgICAgICA8c3RlcCBw ZXJmb3JtYW5jZT0icmVxdWlyZWQiPgorICAgICAgIDxwYXJhPgorICAgICAgICBGaXJzdGx5LCBv biB0aGUgc3Vic2NyaWJlciBub2RlIGNoZWNrIHRoZSBsYXN0IHJlcGxheWVkIFdBTC4gSWYgdGhl CisgICAgICAgIHF1ZXJ5IHJlc3VsdCBpcyBOVUxMLCBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgc3Vi c2NyaWJlciBoYXMgbm90IHlldAorICAgICAgICByZXBsYXllZCBhbnkgV0FMLiBUaGVyZWZvcmUs IHRoZSBuZXh0IHN0ZXAgY2FuIGJlIHNraXBwZWQsIGFzIHRoZQorICAgICAgICBzdGFuZGJ5IHNl cnZlciBtdXN0IGJlIGFoZWFkIG9mIHRoZSBzdWJzY3JpYmVyLgorPHByb2dyYW1saXN0aW5nPgor dGVzdF9zdWI9IyBTRUxFQ1QKKyAgICAgICAgICAgICAgIE1BWChyZW1vdGVfbHNuKSBBUyByZW1v dGVfbHNuX29uX3N1YnNjcmliZXIKKyAgICAgICAgICAgRlJPTQorICAgICAgICAgICAoKAorICAg ICAgICAgICAgICAgU0VMRUNUIChDQVNFIFdIRU4gci5zcnN1YnN0YXRlID0gJ2YnIFRIRU4gcGdf cmVwbGljYXRpb25fb3JpZ2luX3Byb2dyZXNzKENPTkNBVCgncGdfJyB8fCByLnNyc3ViaWQgfHwg J18nIHx8IHIuc3JyZWxpZCksIGZhbHNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgV0hF TiByLnNyc3Vic3RhdGUgSU4gKCdzJywgJ3InKSBUSEVOIHIuc3JzdWJsc24gRU5EKSBhcyByZW1v dGVfbHNuCisgICAgICAgICAgICAgICBGUk9NIHBnX3N1YnNjcmlwdGlvbl9yZWwgciwgcGdfc3Vi c2NyaXB0aW9uIHMKKyAgICAgICAgICAgICAgIFdIRVJFIHIuc3JzdWJzdGF0ZSBJTiAoJ2YnLCAn cycsICdyJykgQU5EIHMub2lkID0gci5zcnN1YmlkIEFORCBzLnN1YmZhaWxvdmVyCisgICAgICAg ICAgICkgVU5JT04gKAorICAgICAgICAgICAgICAgU0VMRUNUIHBnX3JlcGxpY2F0aW9uX29yaWdp bl9wcm9ncmVzcyhDT05DQVQoJ3BnXycgfHwgcy5vaWQpLCBmYWxzZSkgQVMgcmVtb3RlX2xzbgor ICAgICAgICAgICAgICAgRlJPTSBwZ19zdWJzY3JpcHRpb24gcworICAgICAgICAgICAgICAgV0hF UkUgc3ViZmFpbG92ZXIKKyAgICAgICAgICAgKSk7CisgcmVtb3RlX2xzbl9vbl9zdWJzY3JpYmVy CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDAvMzAwMDM4OAorPC9wcm9ncmFtbGlzdGlu Zz48L3BhcmE+CisgICAgPC9zdGVwPgorICAgIDxzdGVwIHBlcmZvcm1hbmNlPSJyZXF1aXJlZCI+ CisgICAgIDxwYXJhPgorICAgICAgTmV4dCwgb24gdGhlIHN0YW5kYnkgc2VydmVyIGNoZWNrIHRo YXQgdGhlIGxhc3QtcmVjZWl2ZWQgV0FMIGxvY2F0aW9uCisgICAgICBpcyBhaGVhZCBvZiB0aGUg cmVwbGF5ZWQgV0FMIGxvY2F0aW9uIG9uIHRoZSBzdWJzY3JpYmVyIGlkZW50aWZpZWQgYWJvdmUu Cis8cHJvZ3JhbWxpc3Rpbmc+Cit0ZXN0X3N0YW5kYnk9IyBTRUxFQ1QgcGdfbGFzdF93YWxfcmVj ZWl2ZV9sc24oKSA+PSAnMC8zMDAwMzg4Jzo6cGdfbHNuIEFTIGZhaWxvdmVyX3JlYWR5OworIGZh aWxvdmVyX3JlYWR5CistLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorPC9wcm9ncmFtbGlz dGluZz48L3BhcmE+CisgICAgIDwvc3RlcD4KKyAgICA8L3N1YnN0ZXBzPgorICAgPC9zdGVwPgor ICA8L3Byb2NlZHVyZT4KKworICA8cGFyYT4KKyAgIElmIHRoZSByZXN1bHQgKDxsaXRlcmFsPmZh aWxvdmVyX3JlYWR5PC9saXRlcmFsPikgb2YgYm90aCBhYm92ZSBzdGVwcyBpcworICAgdHJ1ZSwg ZXhpc3Rpbmcgc3Vic2NyaXB0aW9ucyB3aWxsIGJlIGFibGUgdG8gY29udGludWUgd2l0aG91dCBk YXRhIGxvc3MuCisgIDwvcGFyYT4KKworIDwvc2VjdDE+CisKICA8c2VjdDEgaWQ9ImxvZ2ljYWwt cmVwbGljYXRpb24tcm93LWZpbHRlciI+CiAgIDx0aXRsZT5Sb3cgRmlsdGVyczwvdGl0bGU+CiAK LS0gCjIuMzQuMQoK --00000000000006ae0b060f0ed540--