From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58151) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bQ2xi-0005bV-0L for qemu-devel@nongnu.org; Wed, 20 Jul 2016 21:39:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bQ2xd-0002Yp-My for qemu-devel@nongnu.org; Wed, 20 Jul 2016 21:39:40 -0400 Received: from [59.151.112.132] (port=2473 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bQ2xT-0002Tv-Jd for qemu-devel@nongnu.org; Wed, 20 Jul 2016 21:39:37 -0400 Message-ID: <5790D064.4050805@cn.fujitsu.com> Date: Thu, 21 Jul 2016 09:38:44 -0400 From: wangweiwei MIME-Version: 1.0 References: <577A6955.6020603@kamp.de> <57900AB3.3040705@redhat.com> In-Reply-To: <57900AB3.3040705@redhat.com> Content-Type: multipart/mixed; boundary="------------000600020706000408040103" Subject: Re: [Qemu-devel] Regression: block: Add .bdrv_co_pwrite_zeroes() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake , Peter Lieven , "qemu-devel@nongnu.org" Cc: Kevin Wolf --------------000600020706000408040103 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit 在 2016年07月20日 19:35, Eric Blake 写道: > On 07/04/2016 07:49 AM, Peter Lieven wrote: >> Hi, >> >> the above commit: >> >> commit d05aa8bb4a8b6aa9a915ec5074fb12ae632d2323 >> Author: Eric Blake >> Date: Wed Jun 1 15:10:03 2016 -0600 >> >> block: Add .bdrv_co_pwrite_zeroes() >> >> introduces a regression (at least for me). >> >> The Limits from the iSCSI Block Limits VPD have no requirement of being >> a power of two. >> We use Dell Equallogic iSCSI SANs for instance. They have an internal >> page size of 15MB. And >> they advertise this page size as max_ws_len, opt_transfer_len and >> opt_discard_alignment. > > Since I don't have access to this device, let me double check: if you > put a breakpoint in iscsi.c:iscsi_refresh_limits(), can you dump the > contents of the struct iscsilun->bl? What is the block size of this > device (512, 4096, something else)? > > Also, while the device is advertising that the optimal discard alignment > is 15M, that does not tell me the minimum granularity that it can > actually discard. Can you determine that value? That is, if I try to > discard only 1M, does that actually result in a 1M allocation hole, or > is it ignored? It sounds like qemu should be tracking 2 separate > values: the minimum discard granularity (I suspect this number is a > power of 2, at least the block size, and perhaps precisely equal to the > block size), and the maximum discard granularity that results in the > fewest/fastest discard of the entire device (not necessarily a power of > 2). Or, maybe that merely means that qemu's pdiscard_alignment should > be the MINIMUM granularity, and NOT the non-power-of-2 > iscsilun->bl.opt_unmap_gran. > > Or put another way, I get that I can't discard more than 15M at a time. > But I highly suspect that I do not have to align my discard requests to > 15M boundaries. That is, if the discard granularity is 1M, then in > qemu-io, 'discard 1M 15M' should result in a 15M hole, and should be no > different from the result of 'discard 1M 14M; discard 15M 1M'. But if > qemu sticks to pdiscard_alignment == iscsilun->bl.opt_unmap_gran of 15M, > then both operations mistakenly discard nothing (because it is not > aligned to a 15M boundary). > >> >> I think we cannot assert that that these alignments are a power of 2. > > Optimal size not being a power of 2 is not a problem, but I still > suspect MINIMUM alignment is a power of 2, and I need to know how much > head and tail to discard in the new byte-based discard routines in order > to align requests up to the minimal discard alignment boundaries. > > --------------000600020706000408040103 Content-Type: application/x-tar; name="outgoing_v22.tar" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="outgoing_v22.tar" b3V0Z29pbmdfdjIyLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAADAwMDA3NTUAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAwMDAw ADEyNzQzNzcyMzQxADAxMjExMgAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABvdXRnb2luZ192MjIvMDAxMC1zdXBwb3J0LXJl cGxpY2F0aW9uLWRyaXZlci1pbi1ibG9ja2Rldi1hZGQucGF0Y2gAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwMDAwADAw MDAwMDAAMDAwMDAwMDUwMDAAMTI3NDM3NzE0NDQAMDIzNzQ0ACAwAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy b290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZyb20gYzRjYzFh NjY3OGJiNGMxYjE5N2RhMzkwMTUwMTdlMDk2YTA4NGIzNiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogV2VuIENvbmd5YW5nIDx3ZW5jeUBjbi5m dWppdHN1LmNvbT4KRGF0ZTogRnJpLCAxMSBTZXAgMjAxNSAxMzozNDowMyAr MDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIyIDEwLzEwXSBzdXBwb3J0IHJlcGxp Y2F0aW9uIGRyaXZlciBpbiBibG9ja2Rldi1hZGQKClNpZ25lZC1vZmYtYnk6 IFdlbiBDb25neWFuZyA8d2VuY3lAY24uZnVqaXRzdS5jb20+ClNpZ25lZC1v ZmYtYnk6IHpoYW5naGFpbGlhbmcgPHpoYW5nLnpoYW5naGFpbGlhbmdAaHVh d2VpLmNvbT4KU2lnbmVkLW9mZi1ieTogR29uZ2xlaSA8YXJlaS5nb25nbGVp QGh1YXdlaS5jb20+ClNpZ25lZC1vZmYtYnk6IENoYW5nbG9uZyBYaWUgPHhp ZWNsLmZuc3RAY24uZnVqaXRzdS5jb20+ClJldmlld2VkLWJ5OiBFcmljIEJs YWtlIDxlYmxha2VAcmVkaGF0LmNvbT4KU2lnbmVkLW9mZi1ieTogV2FuZyBX ZWlXZWkgPHdhbmd3dy5mbnN0QGNuLmZ1aml0c3UuY29tPgotLS0KIHFhcGkv YmxvY2stY29yZS5qc29uIHwgMjAgKysrKysrKysrKysrKysrKysrLS0KIDEg ZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3FhcGkvYmxvY2stY29yZS5qc29uIGIvcWFwaS9i bG9jay1jb3JlLmpzb24KaW5kZXggZWFiOGFmOC4uODhjZDYwYyAxMDA2NDQK LS0tIGEvcWFwaS9ibG9jay1jb3JlLmpzb24KKysrIGIvcWFwaS9ibG9jay1j b3JlLmpzb24KQEAgLTI0OCw2ICsyNDgsNyBAQAogIyAgICAgICAyLjM6ICdo b3N0X2Zsb3BweScgZGVwcmVjYXRlZAogIyAgICAgICAyLjU6ICdob3N0X2Zs b3BweScgZHJvcHBlZAogIyAgICAgICAyLjY6ICdsdWtzJyBhZGRlZAorIyAg ICAgICAyLjc6ICdyZXBsaWNhdGlvbicgYWRkZWQKICMKICMgQGJhY2tpbmdf ZmlsZTogI29wdGlvbmFsIHRoZSBuYW1lIG9mIHRoZSBiYWNraW5nIGZpbGUg KGZvciBjb3B5LW9uLXdyaXRlKQogIwpAQCAtMTY2NCw2ICsxNjY1LDcgQEAK ICMgRHJpdmVycyB0aGF0IGFyZSBzdXBwb3J0ZWQgaW4gYmxvY2sgZGV2aWNl IG9wZXJhdGlvbnMuCiAjCiAjIEBob3N0X2RldmljZSwgQGhvc3RfY2Ryb206 IFNpbmNlIDIuMQorIyBAcmVwbGljYXRpb246IFNpbmNlIDIuNwogIwogIyBT aW5jZTogMi4wCiAjIwpAQCAtMTY3MSw4ICsxNjczLDggQEAKICAgJ2RhdGEn OiBbICdhcmNoaXBlbGFnbycsICdibGtkZWJ1ZycsICdibGt2ZXJpZnknLCAn Ym9jaHMnLCAnY2xvb3AnLAogICAgICAgICAgICAgJ2RtZycsICdmaWxlJywg J2Z0cCcsICdmdHBzJywgJ2hvc3RfY2Ryb20nLCAnaG9zdF9kZXZpY2UnLAog ICAgICAgICAgICAgJ2h0dHAnLCAnaHR0cHMnLCAnbHVrcycsICdudWxsLWFp bycsICdudWxsLWNvJywgJ3BhcmFsbGVscycsCi0gICAgICAgICAgICAncWNv dycsICdxY293MicsICdxZWQnLCAncXVvcnVtJywgJ3JhdycsICd0ZnRwJywg J3ZkaScsICd2aGR4JywKLSAgICAgICAgICAgICd2bWRrJywgJ3ZwYycsICd2 dmZhdCcgXSB9CisgICAgICAgICAgICAncWNvdycsICdxY293MicsICdxZWQn LCAncXVvcnVtJywgJ3JhdycsICdyZXBsaWNhdGlvbicsICd0ZnRwJywKKyAg ICAgICAgICAgICd2ZGknLCAndmhkeCcsICd2bWRrJywgJ3ZwYycsICd2dmZh dCcgXSB9CiAKICMjCiAjIEBCbG9ja2Rldk9wdGlvbnNGaWxlCkBAIC0yMDc4 LDYgKzIwODAsMTkgQEAKIHsgJ2VudW0nIDogJ1JlcGxpY2F0aW9uTW9kZScs ICdkYXRhJyA6IFsgJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JyBdIH0KIAogIyMK KyMgQEJsb2NrZGV2T3B0aW9uc1JlcGxpY2F0aW9uCisjCisjIERyaXZlciBz cGVjaWZpYyBibG9jayBkZXZpY2Ugb3B0aW9ucyBmb3IgcmVwbGljYXRpb24K KyMKKyMgQG1vZGU6IHRoZSByZXBsaWNhdGlvbiBtb2RlCisjCisjIFNpbmNl OiAyLjcKKyMjCit7ICdzdHJ1Y3QnOiAnQmxvY2tkZXZPcHRpb25zUmVwbGlj YXRpb24nLAorICAnYmFzZSc6ICdCbG9ja2Rldk9wdGlvbnNHZW5lcmljRm9y bWF0JywKKyAgJ2RhdGEnOiB7ICdtb2RlJzogJ1JlcGxpY2F0aW9uTW9kZScg IH0gfQorCisjIwogIyBAQmxvY2tkZXZPcHRpb25zCiAjCiAjIE9wdGlvbnMg Zm9yIGNyZWF0aW5nIGEgYmxvY2sgZGV2aWNlLiAgTWFueSBvcHRpb25zIGFy ZSBhdmFpbGFibGUgZm9yIGFsbApAQCAtMjE0Miw2ICsyMTU3LDcgQEAKICAg ICAgICdxdW9ydW0nOiAgICAgJ0Jsb2NrZGV2T3B0aW9uc1F1b3J1bScsCiAg ICAgICAncmF3JzogICAgICAgICdCbG9ja2Rldk9wdGlvbnNHZW5lcmljRm9y bWF0JywKICMgVE9ETyByYmQ6IFdhaXQgZm9yIHN0cnVjdHVyZWQgb3B0aW9u cworICAgICAgJ3JlcGxpY2F0aW9uJzonQmxvY2tkZXZPcHRpb25zUmVwbGlj YXRpb24nLAogIyBUT0RPIHNoZWVwZG9nOiBXYWl0IGZvciBzdHJ1Y3R1cmVk IG9wdGlvbnMKICMgVE9ETyBzc2g6IFNob3VsZCB0YWtlIEluZXRTb2NrZXRB ZGRyZXNzIGZvciAnaG9zdCc/CiAgICAgICAndGZ0cCc6ICAgICAgICdCbG9j a2Rldk9wdGlvbnNGaWxlJywKLS0gCjEuOS4zCgpvdXRnb2luZ192MjIvMDAw Ny1JbnRyb2R1Y2UtbmV3LUFQSXMtdG8tZG8tcmVwbGljYXRpb24tb3BlcmF0 aW9uLnBhdGNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0 NAAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMjQzNzMAMTI3NDM3NzE0NDQAMDI0 Mzc1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEZyb20gMWEyZGY3ZjMyMDQ1Y2U2ZTE0OTc2NzJkOTJlNWUyYWViMzhmYTQ1 OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQ2hhbmdsb25nIFhp ZSA8eGllY2wuZm5zdEBjbi5mdWppdHN1LmNvbT4KRGF0ZTogVHVlLCAyIEZl YiAyMDE2IDE0OjMxOjIzICswODAwClN1YmplY3Q6IFtQQVRDSCB2MjIgMDcv MTBdIEludHJvZHVjZSBuZXcgQVBJcyB0byBkbyByZXBsaWNhdGlvbiBvcGVy YXRpb24KClRoaXMgY29tbWl0IGludHJvZHVjZXMgc2l4IHJlcGxpY2F0aW9u IGludGVyZmFjZXMoZm9yIGJsb2NrLCBuZXR3b3JrIGV0YykuCkZpcnN0bHkg d2UgY2FuIHVzZSByZXBsaWNhdGlvbl8obmV3L3JlbW92ZSkgdG8gY3JlYXRl L2Rlc3Ryb3kgcmVwbGljYXRpb24KaW5zdGFuY2VzLCB0aGVuIGluIG1pZ3Jh dGlvbiB3ZSBjYW4gdXNlIHJlcGxpY2F0aW9uXyhzdGFydC9zdG9wL2RvX2No ZWNrcG9pbnQKL2dldF9lcnJvcilfYWxsIHRvIGhhbmRsZSBhbGwgcmVwbGlj YXRpb24gb3BlcmF0aW9ucy4gTW9yZSBkZXRhaWwgcGxlYXNlCnJlZmVyIHRv IHJlcGxpY2F0aW9uLmgKClNpZ25lZC1vZmYtYnk6IFdlbiBDb25neWFuZyA8 d2VuY3lAY24uZnVqaXRzdS5jb20+ClNpZ25lZC1vZmYtYnk6IHpoYW5naGFp bGlhbmcgPHpoYW5nLnpoYW5naGFpbGlhbmdAaHVhd2VpLmNvbT4KU2lnbmVk LW9mZi1ieTogR29uZ2xlaSA8YXJlaS5nb25nbGVpQGh1YXdlaS5jb20+ClNp Z25lZC1vZmYtYnk6IENoYW5nbG9uZyBYaWUgPHhpZWNsLmZuc3RAY24uZnVq aXRzdS5jb20+ClNpZ25lZC1vZmYtYnk6IFdhbmcgV2VpV2VpIDx3YW5nd3cu Zm5zdEBjbi5mdWppdHN1LmNvbT4KLS0tCiBNYWtlZmlsZS5vYmpzICAgICAg ICB8ICAgMSArCiBxYXBpL2Jsb2NrLWNvcmUuanNvbiB8ICAxMyArKysrCiBy ZXBsaWNhdGlvbi5jICAgICAgICB8IDEwNyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiByZXBsaWNhdGlvbi5oICAgICAgICB8IDE3NCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIDQgZmlsZXMgY2hhbmdlZCwgMjk1IGluc2VydGlvbnMoKykKIGNyZWF0 ZSBtb2RlIDEwMDY0NCByZXBsaWNhdGlvbi5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgcmVwbGljYXRpb24uaAoKZGlmZiAtLWdpdCBhL01ha2VmaWxlLm9ianMg Yi9NYWtlZmlsZS5vYmpzCmluZGV4IDdmMWYwYTMuLjRhYmRjODEgMTAwNjQ0 Ci0tLSBhL01ha2VmaWxlLm9ianMKKysrIGIvTWFrZWZpbGUub2JqcwpAQCAt MTUsNiArMTUsNyBAQCBibG9jay1vYmotJChDT05GSUdfUE9TSVgpICs9IGFp by1wb3NpeC5vCiBibG9jay1vYmotJChDT05GSUdfV0lOMzIpICs9IGFpby13 aW4zMi5vCiBibG9jay1vYmoteSArPSBibG9jay8KIGJsb2NrLW9iai15ICs9 IHFlbXUtaW8tY21kcy5vCitibG9jay1vYmoteSArPSByZXBsaWNhdGlvbi5v CiAKIGJsb2NrLW9iai1tID0gYmxvY2svCiAKZGlmZiAtLWdpdCBhL3FhcGkv YmxvY2stY29yZS5qc29uIGIvcWFwaS9ibG9jay1jb3JlLmpzb24KaW5kZXgg MzQ0NGE5Yi4uZWFiOGFmOCAxMDA2NDQKLS0tIGEvcWFwaS9ibG9jay1jb3Jl Lmpzb24KKysrIGIvcWFwaS9ibG9jay1jb3JlLmpzb24KQEAgLTIwNjUsNiAr MjA2NSwxOSBAQAogICAgICAgICAgICAgJypyZWFkLXBhdHRlcm4nOiAnUXVv cnVtUmVhZFBhdHRlcm4nIH0gfQogCiAjIworIyBAUmVwbGljYXRpb25Nb2Rl CisjCisjIEFuIGVudW1lcmF0aW9uIG9mIHJlcGxpY2F0aW9uIG1vZGVzLgor IworIyBAcHJpbWFyeTogUHJpbWFyeSBtb2RlLCB0aGUgdm0ncyBzdGF0ZSB3 aWxsIGJlIHNlbnQgdG8gc2Vjb25kYXJ5IFFFTVUuCisjCisjIEBzZWNvbmRh cnk6IFNlY29uZGFyeSBtb2RlLCByZWNlaXZlIHRoZSB2bSdzIHN0YXRlIGZy b20gcHJpbWFyeSBRRU1VLgorIworIyBTaW5jZTogMi43CisjIworeyAnZW51 bScgOiAnUmVwbGljYXRpb25Nb2RlJywgJ2RhdGEnIDogWyAncHJpbWFyeScs ICdzZWNvbmRhcnknIF0gfQorCisjIwogIyBAQmxvY2tkZXZPcHRpb25zCiAj CiAjIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgYmxvY2sgZGV2aWNlLiAgTWFu eSBvcHRpb25zIGFyZSBhdmFpbGFibGUgZm9yIGFsbApkaWZmIC0tZ2l0IGEv cmVwbGljYXRpb24uYyBiL3JlcGxpY2F0aW9uLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uYmUzYTQyZgotLS0gL2Rldi9udWxsCisr KyBiL3JlcGxpY2F0aW9uLmMKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBS ZXBsaWNhdGlvbiBmaWx0ZXIKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYg SFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KKyAqIENvcHlyaWdodCAo YykgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgorICogQ29weXJpZ2h0IChjKSAy MDE2IEZVSklUU1UgTElNSVRFRAorICoKKyAqIEF1dGhvcjoKKyAqICAgQ2hh bmdsb25nIFhpZSA8eGllY2wuZm5zdEBjbi5mdWppdHN1LmNvbT4KKyAqCisg KiBUaGlzIHdvcmsgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR1BMLCB2ZXJzaW9uIDIgb3IgbGF0ZXIuCisgKiBTZWUgdGhlIENP UFlJTkcgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KKyAqLwor CisjaW5jbHVkZSAicWVtdS9vc2RlcC5oIgorI2luY2x1ZGUgInFhcGkvZXJy b3IuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi5oIgorCitzdGF0aWMgUUxJ U1RfSEVBRCgsIFJlcGxpY2F0aW9uU3RhdGUpIHJlcGxpY2F0aW9uX3N0YXRl czsKKworUmVwbGljYXRpb25TdGF0ZSAqcmVwbGljYXRpb25fbmV3KHZvaWQg Km9wYXF1ZSwgUmVwbGljYXRpb25PcHMgKm9wcykKK3sKKyAgICBSZXBsaWNh dGlvblN0YXRlICpyczsKKworICAgIGFzc2VydChvcHMgIT0gTlVMTCk7Cisg ICAgcnMgPSBnX25ldzAoUmVwbGljYXRpb25TdGF0ZSwgMSk7CisgICAgcnMt Pm9wYXF1ZSA9IG9wYXF1ZTsKKyAgICBycy0+b3BzID0gb3BzOworICAgIFFM SVNUX0lOU0VSVF9IRUFEKCZyZXBsaWNhdGlvbl9zdGF0ZXMsIHJzLCBub2Rl KTsKKworICAgIHJldHVybiByczsKK30KKwordm9pZCByZXBsaWNhdGlvbl9y ZW1vdmUoUmVwbGljYXRpb25TdGF0ZSAqcnMpCit7CisgICAgaWYgKHJzKSB7 CisgICAgICAgIFFMSVNUX1JFTU9WRShycywgbm9kZSk7CisgICAgICAgIGdf ZnJlZShycyk7CisgICAgfQorfQorCisvKgorICogVGhlIGNhbGxlciBvZiB0 aGUgZnVuY3Rpb24gTVVTVCBtYWtlIHN1cmUgdm0gc3RvcHBlZAorICovCit2 b2lkIHJlcGxpY2F0aW9uX3N0YXJ0X2FsbChSZXBsaWNhdGlvbk1vZGUgbW9k ZSwgRXJyb3IgKiplcnJwKQoreworICAgIFJlcGxpY2F0aW9uU3RhdGUgKnJz LCAqbmV4dDsKKyAgICBFcnJvciAqbG9jYWxfZXJyID0gTlVMTDsKKworICAg IFFMSVNUX0ZPUkVBQ0hfU0FGRShycywgJnJlcGxpY2F0aW9uX3N0YXRlcywg bm9kZSwgbmV4dCkgeworICAgICAgICBpZiAocnMtPm9wcyAmJiBycy0+b3Bz LT5zdGFydCkgeworICAgICAgICAgICAgcnMtPm9wcy0+c3RhcnQocnMsIG1v ZGUsICZsb2NhbF9lcnIpOworICAgICAgICB9CisgICAgICAgIGlmIChsb2Nh bF9lcnIpIHsKKyAgICAgICAgICAgIGVycm9yX3Byb3BhZ2F0ZShlcnJwLCBs b2NhbF9lcnIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg ICAgfQorfQorCit2b2lkIHJlcGxpY2F0aW9uX2RvX2NoZWNrcG9pbnRfYWxs KEVycm9yICoqZXJycCkKK3sKKyAgICBSZXBsaWNhdGlvblN0YXRlICpycywg Km5leHQ7CisgICAgRXJyb3IgKmxvY2FsX2VyciA9IE5VTEw7CisKKyAgICBR TElTVF9GT1JFQUNIX1NBRkUocnMsICZyZXBsaWNhdGlvbl9zdGF0ZXMsIG5v ZGUsIG5leHQpIHsKKyAgICAgICAgaWYgKHJzLT5vcHMgJiYgcnMtPm9wcy0+ Y2hlY2twb2ludCkgeworICAgICAgICAgICAgcnMtPm9wcy0+Y2hlY2twb2lu dChycywgJmxvY2FsX2Vycik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGxv Y2FsX2VycikgeworICAgICAgICAgICAgZXJyb3JfcHJvcGFnYXRlKGVycnAs IGxvY2FsX2Vycik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K KyAgICB9Cit9CisKK3ZvaWQgcmVwbGljYXRpb25fZ2V0X2Vycm9yX2FsbChF cnJvciAqKmVycnApCit7CisgICAgUmVwbGljYXRpb25TdGF0ZSAqcnMsICpu ZXh0OworICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOworCisgICAgUUxJ U1RfRk9SRUFDSF9TQUZFKHJzLCAmcmVwbGljYXRpb25fc3RhdGVzLCBub2Rl LCBuZXh0KSB7CisgICAgICAgIGlmIChycy0+b3BzICYmIHJzLT5vcHMtPmdl dF9lcnJvcikgeworICAgICAgICAgICAgcnMtPm9wcy0+Z2V0X2Vycm9yKHJz LCAmbG9jYWxfZXJyKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobG9jYWxf ZXJyKSB7CisgICAgICAgICAgICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgbG9j YWxfZXJyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg IH0KK30KKwordm9pZCByZXBsaWNhdGlvbl9zdG9wX2FsbChib29sIGZhaWxv dmVyLCBFcnJvciAqKmVycnApCit7CisgICAgUmVwbGljYXRpb25TdGF0ZSAq cnMsICpuZXh0OworICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOworCisg ICAgUUxJU1RfRk9SRUFDSF9TQUZFKHJzLCAmcmVwbGljYXRpb25fc3RhdGVz LCBub2RlLCBuZXh0KSB7CisgICAgICAgIGlmIChycy0+b3BzICYmIHJzLT5v cHMtPnN0b3ApIHsKKyAgICAgICAgICAgIHJzLT5vcHMtPnN0b3AocnMsIGZh aWxvdmVyLCAmbG9jYWxfZXJyKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo bG9jYWxfZXJyKSB7CisgICAgICAgICAgICBlcnJvcl9wcm9wYWdhdGUoZXJy cCwgbG9jYWxfZXJyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg fQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3JlcGxpY2F0aW9uLmggYi9yZXBs aWNhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmVjZTZjYTYKLS0tIC9kZXYvbnVsbAorKysgYi9yZXBsaWNhdGlvbi5oCkBA IC0wLDAgKzEsMTc0IEBACisvKgorICogUmVwbGljYXRpb24gZmlsdGVyCisg KgorICogQ29weXJpZ2h0IChjKSAyMDE2IEhVQVdFSSBURUNITk9MT0dJRVMg Q08uLCBMVEQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgSW50ZWwgQ29ycG9y YXRpb24KKyAqIENvcHlyaWdodCAoYykgMjAxNiBGVUpJVFNVIExJTUlURUQK KyAqCisgKiBBdXRob3I6CisgKiAgIENoYW5nbG9uZyBYaWUgPHhpZWNsLmZu c3RAY24uZnVqaXRzdS5jb20+CisgKgorICogVGhpcyB3b3JrIGlzIGxpY2Vu c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCwgdmVyc2lvbiAy IG9yIGxhdGVyLgorICogU2VlIHRoZSBDT1BZSU5HIGZpbGUgaW4gdGhlIHRv cC1sZXZlbCBkaXJlY3RvcnkuCisgKi8KKworI2lmbmRlZiBSRVBMSUNBVElP Tl9ICisjZGVmaW5lIFJFUExJQ0FUSU9OX0gKKworI2luY2x1ZGUgInFlbXUv cXVldWUuaCIKKwordHlwZWRlZiBzdHJ1Y3QgUmVwbGljYXRpb25PcHMgUmVw bGljYXRpb25PcHM7Cit0eXBlZGVmIHN0cnVjdCBSZXBsaWNhdGlvblN0YXRl IFJlcGxpY2F0aW9uU3RhdGU7CisKKy8qKgorICogU0VDVElPTjpyZXBsaWNh dGlvbi5oCisgKiBAdGl0bGU6QmFzZSBSZXBsaWNhdGlvbiBTeXN0ZW0KKyAq IEBzaG9ydF9kZXNjcmlwdGlvbjogaW50ZXJmYWNlcyBmb3IgaGFuZGxpbmcg cmVwbGljYXRpb24KKyAqCisgKiBUaGUgUmVwbGljYXRpb24gTW9kZWwgcHJv dmlkZXMgYSBmcmFtZXdvcmsgZm9yIGhhbmRsaW5nIFJlcGxpY2F0aW9uCisg KgorICogPGV4YW1wbGU+CisgKiAgIDx0aXRsZT5Ib3cgdG8gdXNlIHJlcGxp Y2F0aW9uIGludGVyZmFjZXM8L3RpdGxlPgorICogICA8cHJvZ3JhbWxpc3Rp bmc+CisgKiAjaW5jbHVkZSAicmVwbGljYXRpb24uaCIKKyAqCisgKiB0eXBl ZGVmIHN0cnVjdCBCRFJWUmVwbGljYXRpb25TdGF0ZSB7CisgKiAgICAgUmVw bGljYXRpb25TdGF0ZSAqcnM7CisgKiB9IEJEUlZSZXBsaWNhdGlvblN0YXRl OworICoKKyAqIHN0YXRpYyB2b2lkIHJlcGxpY2F0aW9uX3N0YXJ0KFJlcGxp Y2F0aW9uU3RhdGUgKnJzLCBSZXBsaWNhdGlvbk1vZGUgbW9kZSwKKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yICoqZXJycCk7Cisg KiBzdGF0aWMgdm9pZCByZXBsaWNhdGlvbl9kb19jaGVja3BvaW50KFJlcGxp Y2F0aW9uU3RhdGUgKnJzLCBFcnJvciAqKmVycnApOworICogc3RhdGljIHZv aWQgcmVwbGljYXRpb25fZ2V0X2Vycm9yKFJlcGxpY2F0aW9uU3RhdGUgKnJz LCBFcnJvciAqKmVycnApOworICogc3RhdGljIHZvaWQgcmVwbGljYXRpb25f c3RvcChSZXBsaWNhdGlvblN0YXRlICpycywgYm9vbCBmYWlsb3ZlciwKKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgKiplcnJwKTsK KyAqCisgKiBzdGF0aWMgUmVwbGljYXRpb25PcHMgcmVwbGljYXRpb25fb3Bz ID0geworICogICAgIC5zdGFydCA9IHJlcGxpY2F0aW9uX3N0YXJ0LAorICog ICAgIC5jaGVja3BvaW50ID0gcmVwbGljYXRpb25fZG9fY2hlY2twb2ludCwK KyAqICAgICAuZ2V0X2Vycm9yID0gcmVwbGljYXRpb25fZ2V0X2Vycm9yLAor ICogICAgIC5zdG9wID0gcmVwbGljYXRpb25fc3RvcCwKKyAqIH0KKyAqCisg KiBzdGF0aWMgaW50IHJlcGxpY2F0aW9uX29wZW4oQmxvY2tEcml2ZXJTdGF0 ZSAqYnMsIFFEaWN0ICpvcHRpb25zLAorICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCBmbGFncywgRXJyb3IgKiplcnJwKQorICogeworICog ICAgIEJEUlZSZXBsaWNhdGlvblN0YXRlICpzID0gYnMtPm9wYXF1ZTsKKyAq ICAgICBzLT5ycyA9IHJlcGxpY2F0aW9uX25ldyhicywgJnJlcGxpY2F0aW9u X29wcyk7CisgKiAgICAgcmV0dXJuIDA7CisgKiB9CisgKgorICogc3RhdGlj IHZvaWQgcmVwbGljYXRpb25fY2xvc2UoQmxvY2tEcml2ZXJTdGF0ZSAqYnMp CisgKiB7CisgKiAgICAgQkRSVlJlcGxpY2F0aW9uU3RhdGUgKnMgPSBicy0+ b3BhcXVlOworICogICAgIHJlcGxpY2F0aW9uX3JlbW92ZShzLT5ycyk7Cisg KiB9CisgKgorICogQmxvY2tEcml2ZXIgYmRydl9yZXBsaWNhdGlvbiA9IHsK KyAqICAgICAuZm9ybWF0X25hbWUgICAgICAgICAgICAgICAgPSAicmVwbGlj YXRpb24iLAorICogICAgIC5wcm90b2NvbF9uYW1lICAgICAgICAgICAgICA9 ICJyZXBsaWNhdGlvbiIsCisgKiAgICAgLmluc3RhbmNlX3NpemUgICAgICAg ICAgICAgID0gc2l6ZW9mKEJEUlZSZXBsaWNhdGlvblN0YXRlKSwKKyAqCisg KiAgICAgLmJkcnZfb3BlbiAgICAgICAgICAgICAgICAgID0gcmVwbGljYXRp b25fb3BlbiwKKyAqICAgICAuYmRydl9jbG9zZSAgICAgICAgICAgICAgICAg PSByZXBsaWNhdGlvbl9jbG9zZSwKKyAqIH07CisgKgorICogc3RhdGljIHZv aWQgYmRydl9yZXBsaWNhdGlvbl9pbml0KHZvaWQpCisgKiB7CisgKiAgICAg YmRydl9yZWdpc3RlcigmYmRydl9yZXBsaWNhdGlvbik7CisgKiB9CisgKgor ICogYmxvY2tfaW5pdChiZHJ2X3JlcGxpY2F0aW9uX2luaXQpOworICogICA8 L3Byb2dyYW1saXN0aW5nPgorICogPC9leGFtcGxlPgorICoKKyAqIFdlIGNy ZWF0ZSBhbiBleGFtcGxlIGFib3V0IGhvdyB0byB1c2UgcmVwbGljYXRpb24g aW50ZXJmYWNlcyBpbiBhYm92ZS4KKyAqIFRoZW4gaW4gbWlncmF0aW9uLCB3 ZSBjYW4gdXNlIHJlcGxpY2F0aW9uXyhzdGFydC9zdG9wL2RvX2NoZWNrcG9p bnQvCisgKiBnZXRfZXJyb3IpX2FsbCB0byBoYW5kbGUgYWxsIHJlcGxpY2F0 aW9uIG9wZXJhdGlvbnMuCisgKi8KKworLyoqCisgKiBSZXBsaWNhdGlvblN0 YXRlOgorICogQG9wYXF1ZTogb3BhcXVlIHBvaW50ZXIgdmFsdWUgcGFzc2Vk IHRvIHRoaXMgUmVwbGljYXRpb25TdGF0ZQorICogQG9wczogcmVwbGljYXRp b24gb3BlcmF0aW9uIG9mIHRoaXMgUmVwbGljYXRpb25TdGF0ZQorICogQG5v ZGU6IG5vZGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIEByZXBsaWNhdGlv bl9zdGF0ZXMgUUxJU1QKKyAqLworc3RydWN0IFJlcGxpY2F0aW9uU3RhdGUg eworICAgIHZvaWQgKm9wYXF1ZTsKKyAgICBSZXBsaWNhdGlvbk9wcyAqb3Bz OworICAgIFFMSVNUX0VOVFJZKFJlcGxpY2F0aW9uU3RhdGUpIG5vZGU7Cit9 OworCisvKioKKyAqIFJlcGxpY2F0aW9uT3BzOgorICogQHN0YXJ0OiBjYWxs YmFjayB0byBzdGFydCByZXBsaWNhdGlvbgorICogQHN0b3A6IGNhbGxiYWNr IHRvIHN0b3AgcmVwbGljYXRpb24KKyAqIEBjaGVja3BvaW50OiBjYWxsYmFj ayB0byBkbyBjaGVja3BvaW50CisgKiBAZ2V0X2Vycm9yOiBjYWxsYmFjayB0 byBjaGVjayBpZiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcmVwbGljYXRpb24K KyAqLworc3RydWN0IFJlcGxpY2F0aW9uT3BzIHsKKyAgICB2b2lkICgqc3Rh cnQpKFJlcGxpY2F0aW9uU3RhdGUgKnJzLCBSZXBsaWNhdGlvbk1vZGUgbW9k ZSwgRXJyb3IgKiplcnJwKTsKKyAgICB2b2lkICgqc3RvcCkoUmVwbGljYXRp b25TdGF0ZSAqcnMsIGJvb2wgZmFpbG92ZXIsIEVycm9yICoqZXJycCk7Cisg ICAgdm9pZCAoKmNoZWNrcG9pbnQpKFJlcGxpY2F0aW9uU3RhdGUgKnJzLCBF cnJvciAqKmVycnApOworICAgIHZvaWQgKCpnZXRfZXJyb3IpKFJlcGxpY2F0 aW9uU3RhdGUgKnJzLCBFcnJvciAqKmVycnApOworfTsKKworLyoqCisgKiBy ZXBsaWNhdGlvbl9uZXc6CisgKiBAb3BhcXVlOiBvcGFxdWUgcG9pbnRlciB2 YWx1ZSBwYXNzZWQgdG8gUmVwbGljYXRpb25TdGF0ZQorICogQG9wczogcmVw bGljYXRpb24gb3BlcmF0aW9uIG9mIHRoZSBuZXcgcmVsZXZhbnQgUmVwbGlj YXRpb25TdGF0ZQorICoKKyAqIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgUmVw bGljYXRpb25TdGF0ZSBpbnN0YW5jZSwgYW5kIHRoZW4gaW5zZXJ0IGl0Cisg KiBpbnRvIEByZXBsaWNhdGlvbl9zdGF0ZXMgUUxJU1QKKyAqCisgKiBSZXR1 cm5zOiB0aGUgbmV3IFJlcGxpY2F0aW9uU3RhdGUgaW5zdGFuY2UKKyAqLwor UmVwbGljYXRpb25TdGF0ZSAqcmVwbGljYXRpb25fbmV3KHZvaWQgKm9wYXF1 ZSwgUmVwbGljYXRpb25PcHMgKm9wcyk7CisKKy8qKgorICogcmVwbGljYXRp b25fcmVtb3ZlOgorICogQHJzOiB0aGUgUmVwbGljYXRpb25TdGF0ZSBpbnN0 YW5jZSB0byByZW1vdmUKKyAqCisgKiBDYWxsZWQgdG8gcmVtb3ZlIGEgUmVw bGljYXRpb25TdGF0ZSBpbnN0YW5jZSwgYW5kIHRoZW4gZGVsZXRlIGl0IGZy b20KKyAqIEByZXBsaWNhdGlvbl9zdGF0ZXMgUUxJU1QKKyAqLwordm9pZCBy ZXBsaWNhdGlvbl9yZW1vdmUoUmVwbGljYXRpb25TdGF0ZSAqcnMpOworCisv KioKKyAqIHJlcGxpY2F0aW9uX3N0YXJ0X2FsbDoKKyAqIEBtb2RlOiByZXBs aWNhdGlvbiBtb2RlIHRoYXQgY291bGQgYmUgInByaW1hcnkiIG9yICJzZWNv bmRhcnkiCisgKiBAZXJycDogcmV0dXJucyBhbiBlcnJvciBpZiB0aGlzIGZ1 bmN0aW9uIGZhaWxzCisgKgorICogU3RhcnQgcmVwbGljYXRpb24sIGNhbGxl ZCBpbiBtaWdyYXRpb24vY2hlY2twb2ludCB0aHJlYWQKKyAqCisgKiBOb3Rl OiB0aGUgY2FsbGVyIG9mIHRoZSBmdW5jdGlvbiBNVVNUIG1ha2Ugc3VyZSB2 bSBzdG9wcGVkCisgKi8KK3ZvaWQgcmVwbGljYXRpb25fc3RhcnRfYWxsKFJl cGxpY2F0aW9uTW9kZSBtb2RlLCBFcnJvciAqKmVycnApOworCisvKioKKyAq IHJlcGxpY2F0aW9uX2RvX2NoZWNrcG9pbnRfYWxsOgorICogQGVycnA6IHJl dHVybnMgYW4gZXJyb3IgaWYgdGhpcyBmdW5jdGlvbiBmYWlscworICoKKyAq IFRoaXMgaW50ZXJmYWNlIGlzIGNhbGxlZCBhZnRlciBhbGwgVk0gc3RhdGUg aXMgdHJhbnNmZXJyZWQgdG8gU2Vjb25kYXJ5IFFFTVUKKyAqLwordm9pZCBy ZXBsaWNhdGlvbl9kb19jaGVja3BvaW50X2FsbChFcnJvciAqKmVycnApOwor CisvKioKKyAqIHJlcGxpY2F0aW9uX2dldF9lcnJvcl9hbGw6CisgKiBAZXJy cDogcmV0dXJucyBhbiBlcnJvciBpZiB0aGlzIGZ1bmN0aW9uIGZhaWxzCisg KgorICogVGhpcyBpbnRlcmZhY2UgaXMgY2FsbGVkIHRvIGNoZWNrIGlmIGVy cm9yIG9jY3VycmVkIGR1cmluZyByZXBsaWNhdGlvbgorICovCit2b2lkIHJl cGxpY2F0aW9uX2dldF9lcnJvcl9hbGwoRXJyb3IgKiplcnJwKTsKKworLyoq CisgKiByZXBsaWNhdGlvbl9zdG9wX2FsbDoKKyAqIEBmYWlsb3ZlcjogYm9v bGVhbiB2YWx1ZSB0aGF0IGluZGljYXRlcyBpZiB3ZSBuZWVkIGRvIGZhaWxv dmVyIG9yIG5vdAorICogQGVycnA6IHJldHVybnMgYW4gZXJyb3IgaWYgdGhp cyBmdW5jdGlvbiBmYWlscworICoKKyAqIEl0IGlzIGNhbGxlZCBvbiBmYWls b3Zlci4gVGhlIHZtIHNob3VsZCBiZSBzdG9wcGVkIGJlZm9yZSBjYWxsaW5n IGl0LCBpZiB5b3UKKyAqIHVzZSB0aGlzIEFQSSB0byBzaHV0ZG93biB0aGUg Z3Vlc3QsIG9yIG90aGVyIHRoaW5ncyBleGNlcHQgZmFpbG92ZXIKKyAqLwor dm9pZCByZXBsaWNhdGlvbl9zdG9wX2FsbChib29sIGZhaWxvdmVyLCBFcnJv ciAqKmVycnApOworCisjZW5kaWYgLyogUkVQTElDQVRJT05fSCAqLwotLSAK MS45LjMKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG91 dGdvaW5nX3YyMi8wMDAwLWNvdmVyLWxldHRlci5wYXRjaAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAwMDAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAxNDc2MQAx Mjc0Mzc3MjMxNwAwMTYxMzcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIAByb290AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAARnJvbSBjNGNjMWE2Njc4YmI0YzFiMTk3ZGEzOTAx NTAxN2UwOTZhMDg0YjM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBXYW5nIFdlaVdlaSA8d2FuZ3d3LmZuc3RAY24uZnVqaXRzdS5jb20+CkRh dGU6IFdlZCwgMjAgSnVsIDIwMTYgMTc6NTQ6NDQgLTA0MDAKU3ViamVjdDog W1BBVENIIHYyMiAwMC8xMF0gQmxvY2sgcmVwbGljYXRpb24gZm9yIGNvbnRp bnVvdXMgY2hlY2twb2ludHMKCkJsb2NrIHJlcGxpY2F0aW9uIGlzIGEgdmVy eSBpbXBvcnRhbnQgZmVhdHVyZSB3aGljaCBpcyB1c2VkIGZvcgpjb250aW51 b3VzIGNoZWNrcG9pbnRzKGZvciBleGFtcGxlOiBDT0xPKS4KCllvdSBjYW4g Z2V0IHRoZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBibG9jayByZXBs aWNhdGlvbiBmcm9tIGhlcmU6Cmh0dHA6Ly93aWtpLnFlbXUub3JnL0ZlYXR1 cmVzL0Jsb2NrUmVwbGljYXRpb24KClVzYWdlOgpQbGVhc2UgcmVmZXIgdG8g ZG9jcy9ibG9jay1yZXBsaWNhdGlvbi50eHQKCllvdSBjYW4gZ2V0IHRoZSBw YXRjaCBoZXJlOgpodHRwczovL2dpdGh1Yi5jb20vd2FuZ3d3LWZuc3QvYmxv Y2stcmVwbGljYXRpb24tdjIyCgoKVE9ETzoKMS4gQ29udGludW91cyBibG9j ayByZXBsaWNhdGlvbi4gSXQgd2lsbCBiZSBzdGFydGVkIGFmdGVyIGJhc2lj IGZ1bmN0aW9ucwogICBhcmUgYWNjZXB0ZWQuCgpDaGFuZ3MgTG9nOgpWMjI6 CjEuUmViYXNlIHRvIHRoZSBsYXN0ZXN0IGNvZGUKVjIxOgoxLiBSZWJhc2Ug dG8gdGhlIGxhc3Rlc3QgY29kZQoyLiB1c2UgYmRydl9wd3JpdGVfemVyb2Vz KCkgYW5kIEJEUlZfU0VDVE9SX0JJVFMgZm9yIHA5ClYyMCBSZXNlbmQ6CjEu IFJlc2VuZCB0byBhdm9pZCBib3RoZXJpbmcgcWVtdS10cml2aWFsIG1haW50 YWluZXJzCjIuIEFkZHJlc3MgY29tbWVudHMgZnJvbSBFcmljLCBmaXggaGVh ZGVyIGZpbGUgaXNzdWUgYW5kIGFkZCBhIGJyaWVmIGNvbW1pdCBtZXNzYWdl IGZvciBwNwpWMjA6CjEuIFJlYmFzZSB0byB0aGUgbGFzdGVzdCBjb2RlCjIu IEFkZHJlc3MgY29tbWVudHMgZnJvbSBzdGVmYW4KcDg6IAoxLiBlcnJvcl9z ZXRnKCkgd2l0aCBhbiBlcnJvciBtZXNzYWdlIHdoZW4gY2hlY2tfdG9wX2Jz KCkgZmFpbHMuIAoyLiByZW1vdmUgYmRydl9yZWYocy0+aGlkZGVuX2Rpc2st PmJzKSBzaW5jZSBjb21taXQgNWM0MzhiYzYKMy4gdXNlIGJsb2Nfam9iX2Nh bmNlbF9zeW5jKCkgYmVmb3JlIGFjdGl2ZSBjb21taXQKcDk6IAoxLiBmaXgg dW5pbml0aWFsaXplZCAncGF0dGVybl9idWYnCjIuIGludHJvZHVjZSBta3N0 ZW1wKDMpIHRvIGZpeCB1bmlxdWUgZmlsZW5hbWVzCjMuIHVzZSBxZW11X3Zm cmVlKCkgZm9yIHFlbXVfYmxvY2thbGlnbigpIG1lbW9yeQo0LiBhZGQgbWlz c2luZyByZXBsaWNhdGlvbl9zdGFydF9hbGwoKQo1LiByZW1vdmUgdXNlbGVz cyBwYXR0ZXJuIGZvciBpb193cml0ZSgpClYxOToKMS4gUmViYXNlIHRvIHYy LjYuMAoyLiBBZGRyZXNzIGNvbW1lbnRzIGZyb20gc3RlZmFuCnAzOiBhIG5l dyBwYXRjaCB0aGF0IGV4cG9ydCBpbnRlcmZhY2VzIGZvciBleHRyYSBzZXJp YWxpemF0aW9uCnA4OiAKMS4gY2FsbCByZXBsaWNhdGlvbl9zdG9wKCkgYmVm b3JlIGZyZWVpbmcgcy0+dG9wX2lkCjIuIGNoZWNrIHRvcF9icwozLiByZW9w ZW4gZmlsZSByZWFkb25seSBpbiBlcnJvciByZXR1cm4gcGF0aHMKNC4gZW5h YmxlIGV4dHJhIHNlcmlhbGl6YXRpb24gYmV0d2VlbiByZWFkIGFuZCBDT1cK cDk6IHRyeSB0byBoYW5sZGUgU0lHQUJSVApWMTg6CnA2OiBhZGQgbG9jYWxf ZXJyIGluIGFsbCByZXBsaWNhdGlvbiBjYWxsYmFja3MgdG8gcHJldmVudCAi ZXJycCA9PSBOVUxMIgpwNzogYWRkIG1pc3NpbmcgcWVtdV9pb3ZlY19kZXN0 cm95KHh4eCkKVjE3OgoxLiBSZWJhc2UgdG8gdGhlIGxhc3Rlc3QgY29kZXMg CnAyOiByZWZhY3RvciBiYWNrdXBfZG9fY2hlY2twb2ludCBhZGRyZXNzZWQg Y29tbWVudHMgZnJvbSBKZWZmIENvZHkKcDQ6IGZpeCBidWdzIGluICJkcml2 ZV9hZGQgYnVkZHkgeHh4IiBobXAgY29tbWFuZHMKcDY6IGFkZCAic2luY2U6 IDIuNyIKcDc6IGZpeCBidWcgaW4gcmVwbGljYXRpb25fY2xvc2UoKSwgYWRk IG1pc3NpbmcgInFhcGkvZXJyb3IuaCIsIGFkZCB0ZXN0LXJlcGxpY2F0aW9u IApwODogYWRkICJzaW5jZTogMi43IgpWMTY6CjEuIFJlYmFzZSB0byB0aGUg bmV3ZXN0IGNvZGVzCjIuIEFkZHJlc3MgY29tbWVudHMgZnJvbSBTdGVmYW4g JiBoYWlsaWFuZwpwMzogd2UgZG9uJ3QgbmVlZCB0aGlzIHBhdGNoIG5vdwpw NDogYWRkICJ0b3AtaWQiIHBhcmFtZXRlcnMgZm9yIHNlY29uZGFyeQpwNjog Zml4IE5VTEwgcG9pbnRlciBpbiByZXBsaWNhdGlvbiBjYWxsYmFja3MsIHJl bW92ZSB1bm5lY2Vzc2FyeSB0eXBlZGVmcywgCmFkZCBkb2MgY29tbWVudHMg dGhhdCBleHBsYWluIHRoZSBzZW1hbnRpY3Mgb2YgUmVwbGljYXRpb24KcDc6 IFJlZmFjdG9yIEFpb0NvbnRleHQgZm9yIHRocmVhZC1zYWZlLCByZW1vdmUg dW5uZWNlc3NhcnkgZ2V0X3RvcF9icygpCipOb3RlKjogSSdtIHdvcmtpbmcg b24gcmVwbGljYXRpb24gdGVzdGNhc2Ugbm93LCB3aWxsIHNlbmQgb3V0IGlu IFYxNwpWMTU6CjEuIFJlYmFzZSB0byB0aGUgbmV3ZXN0IGNvZGVzCjIuIEZp eCB0eXBvcyBhbmQgY29kaW5nIHN0eWxlIGFkZHJlc2VkIEVyaWMncyBjb21t ZW50cwozLiBBZGRyZXNzIFN0ZWZhbidzIGNvbW1lbnRzCiAgIDEpIE1ha2Ug YmFja3VwX2RvX2NoZWNrcG9pbnQgcHVibGljLCBkcm9wIHRoZSBjaGFuZ2Vz IG9uIEJsb2NrSm9iRHJpdmVyCiAgIDIpIFVwZGF0ZSB0aGUgbWVzc2FnZSBh bmQgZGVzY3JpcHRpb24gZm9yIFtQQVRDSCA0LzldCiAgIDMpIE1ha2UgcmVw bGljYXRpb25fKHN0YXJ0L3N0b3AvZG9fY2hlY2twb2ludClfYWxsIGFzIGds b2JhbCBpbnRlcmZhY2VzCiAgIDQpIEludHJvZHVjZSBBaW9Db250ZXh0IGxv Y2sgdG8gcHJvdGVjdCBzdGFydC9zdG9wL2RvX2NoZWNrcG9pbnQgY2FsbGJh Y2tzCiAgIDUpIFVzZSBCZHJ2Q2hpbGQgaW5zdGVhZCBvZiBob2xkaW5nIG9u IHRvIEJsb2NrRHJpdmVyU3RhdGUgKiBwb2ludGVycwo0LiBDbGVhciBCRFJW X09fSU5BQ1RJVkUgZm9yIGhpZGRlbiBkaXNrJ3Mgb3Blbl9mbGFncyBzaW5j ZSBjb21taXQgMDllMGM3NzEgIAo1LiBJbnRyb2R1Y2UgcmVwbGljYXRpb25f Z2V0X2Vycm9yX2FsbCB0byBjaGVjayByZXBsaWNhdGlvbiBzdGF0dXMKNi4g UmVtb3ZlIHVzZWxlc3MgZGlzY2FyZCBpbnRlcmZhY2UKVjE0OgoxLiBJbXBs ZW1lbnQgYXV0byBjb21wbGV0ZSBhY3RpdmUgY29tbWl0CjIuIEltcGxlbWVu dCBhY3RpdmUgY29tbWl0IGJsb2NrIGpvYiBmb3IgcmVwbGljYXRpb24uYwoz LiBBZGRyZXNzIHRoZSBjb21tZW50cyBmcm9tIFN0ZWZhbiwgYWRkIHJlcGxp Y2F0aW9uLXNwZWNpZmljIEFQSSBhbmQgZGF0YQogICBzdHJ1Y3R1cmUsIGFs c28gcmVtb3ZlIG9sZCBibG9jayBsYXllciBBUElzClYxMzoKMS4gUmViYXNl IHRvIHRoZSBuZXdlc3QgY29kZXMKMi4gUmVtb3ZlIHJlZHVuZGFudCBtYXJj b3MgYW5kIHNlbWljb2xvbiBpbiByZXBsaWNhdGlvbi5jIAozLiBGaXggdHlw b3MgaW4gYmxvY2stcmVwbGljYXRpb24udHh0ClYxMjoKMS4gUmViYXNlIHRv IHRoZSBuZXdlc3QgY29kZXMKMi4gVXNlIGJhY2tpbmcgcmVmZXJlbmNlIHRv IHJlcGxjYWNlICdhbGxvdy13cml0ZS1iYWNraW5nLWZpbGUnClYxMToKMS4g UmVvcGVuIHRoZSBiYWNraW5nIGZpbGUgd2hlbiBzdGFydGluZyBibGNvayBy ZXBsaWNhdGlvbiBpZiBpdCBpcyBub3QKICAgb3BlbmVkIGluIFIvVyBtb2Rl CjIuIFVuYmxvY2sgQkxPQ0tfT1BfVFlQRV9CQUNLVVBfU09VUkNFIGFuZCBC TE9DS19PUF9UWVBFX0JBQ0tVUF9UQVJHRVQKICAgd2hlbiBvcGVuaW5nIGJh Y2tpbmcgZmlsZQozLiBCbG9jayB0aGUgdG9wIEJEUyBzbyB0aGVyZSBpcyBv bmx5IG9uZSBibG9jayBqb2IgZm9yIHRoZSB0b3AgQkRTIGFuZAogICBpdHMg YmFja2luZyBjaGFpbi4KVjEwOgoxLiBVc2UgYmxvY2tkZXYtcmVtb3ZlLW1l ZGl1bSBhbmQgYmxvY2tkZXYtaW5zZXJ0LW1lZGl1bSB0byByZXBsYWNlIGJh Y2tpbmcKICAgcmVmZXJlbmNlLgoyLiBBZGRyZXNzIHRoZSBjb21tZW50cyBm cm9tIEVyaWMgQmxha2UKVjk6CjEuIFVwZGF0ZSB0aGUgZXJyb3IgbWVzc2Fn ZXMKMi4gUmViYXNlIHRvIHRoZSBuZXdlc3QgcWVtdQozLiBTcGxpdCBjaGls ZCBhZGQvZGVsZXRlIHN1cHBvcnQuIFRoZXNlIHBhdGNoZXMgYXJlIHNlbnQg aW4gYW5vdGhlciBwYXRjaHNldC4KVjg6CjEuIEFkZHJlc3MgQWxiZXJ0byBH YXJjaWEncyBjb21tZW50cwpWNzoKMS4gSW1wbGVtZW50IGFkZGluZy9yZW1v dmluZyBxdW9ydW0gY2hpbGQuIFJlbW92ZSB0aGUgb3B0aW9uIG5vbi1jb25u ZWN0LgoyLiBTaW1wbGlmeSB0aGUgYmFja2luZyByZWZyZW5jZSBvcHRpb24g YWNjb3JkaW5nIHRvIFN0ZWZhbiBIYWpub2N6aSdzIHN1Z2dlc3Rpb24KVjY6 CjEuIFJlYmFzZSB0byB0aGUgbmV3ZXN0IHFlbXUuClY1OgoxLiBBZGRyZXNz IHRoZSBjb21tZW50cyBmcm9tIEdvbmcgTGVpCjIuIFNwZWVkIHRoZSBmYWls b3ZlciB1cC4gVGhlIHNlY29uZGFyeSB2bSBjYW4gdGFrZSBvdmVyIHZlcnkg cXVpY2tseSBldmVuCiAgIGlmIHRoZXJlIGFyZSB0b28gbWFueSBJL08gcmVx dWVzdHMuClY0OgoxLiBJbnRyb2R1Y2UgYSBuZXcgZHJpdmVyIHJlcGxpY2F0 aW9uIHRvIGF2b2lkIHRvdWNoIG5iZCBhbmQgcWNvdzIuClYzOgoxOiB1c2Ug ZXJyb3Jfc2V0ZygpIGluc3RlYWQgb2YgZXJyb3Jfc2V0KCkKMi4gQWRkIGEg bmV3IGJsb2NrIGpvYiBBUEkKMy4gQWN0aXZlIGRpc2ssIGhpZGRlbiBkaXNr IGFuZCBuYmQgdGFyZ2V0IHVzZXMgdGhlIHNhbWUgQWlvQ29udGV4dAo0LiBB ZGQgYSB0ZXN0Y2FzZSB0byB0ZXN0IG5ldyBoYml0bWFwIEFQSQpWMjoKMS4g UmVkZXNpZ24gdGhlIHNlY29uZGFyeSBxZW11KHVzZSBpbWFnZS1mbGVlY2lu ZykKMi4gVXNlIEVycm9yIG9iamVjdHMgdG8gcmV0dXJuIGVycm9yIG1lc3Nh Z2UKMy4gQWRkcmVzcyB0aGUgY29tbWVudHMgZnJvbSBNYXggUmVpdHogYW5k IEVyaWMgQmxha2UKCkNoYW5nbG9uZyBYaWUgKDMpOgogIEJhY2t1cDogZXhw b3J0IGludGVyZmFjZXMgZm9yIGV4dHJhIHNlcmlhbGl6YXRpb24KICBJbnRy b2R1Y2UgbmV3IEFQSXMgdG8gZG8gcmVwbGljYXRpb24gb3BlcmF0aW9uCiAg dGVzdHM6IGFkZCB1bml0IHRlc3QgY2FzZSBmb3IgcmVwbGljYXRpb24KCldl biBDb25neWFuZyAoNyk6CiAgdW5ibG9jayBiYWNrdXAgb3BlcmF0aW9ucyBp biBiYWNraW5nIGZpbGUKICBCYWNrdXA6IGNsZWFyIGFsbCBiaXRtYXAgd2hl biBkb2luZyBibG9jayBjaGVja3BvaW50CiAgTGluayBiYWNrdXAgaW50byBi bG9jayBjb3JlCiAgZG9jczogYmxvY2sgcmVwbGljYXRpb24ncyBkZXNjcmlw dGlvbgogIGF1dG8gY29tcGxldGUgYWN0aXZlIGNvbW1pdAogIEltcGxlbWVu dCBuZXcgZHJpdmVyIGZvciBibG9jayByZXBsaWNhdGlvbgogIHN1cHBvcnQg cmVwbGljYXRpb24gZHJpdmVyIGluIGJsb2NrZGV2LWFkZAoKIE1ha2VmaWxl Lm9ianMgICAgICAgICAgICAgICAgfCAgIDEgKwogYmxvY2suYyAgICAgICAg ICAgICAgICAgICAgICB8ICAxNyArKwogYmxvY2svTWFrZWZpbGUub2JqcyAg ICAgICAgICB8ICAgMyArLQogYmxvY2svYmFja3VwLmMgICAgICAgICAgICAg ICB8ICA1OSArKystCiBibG9jay9taXJyb3IuYyAgICAgICAgICAgICAgIHwg IDEzICstCiBibG9jay9yZXBsaWNhdGlvbi5jICAgICAgICAgIHwgNjU4ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGJs b2NrZGV2LmMgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGRvY3MvYmxv Y2stcmVwbGljYXRpb24udHh0ICAgfCAyMzkgKysrKysrKysrKysrKysrKwog aW5jbHVkZS9ibG9jay9ibG9ja19iYWNrdXAuaCB8ICAxNyArKwogaW5jbHVk ZS9ibG9jay9ibG9ja19pbnQuaCAgICB8ICAgMyArLQogcWFwaS9ibG9jay1j b3JlLmpzb24gICAgICAgICB8ICAzMyArKy0KIHFlbXUtaW1nLmMgICAgICAg ICAgICAgICAgICAgfCAgIDIgKy0KIHJlcGxpY2F0aW9uLmMgICAgICAgICAg ICAgICAgfCAxMDcgKysrKysrKwogcmVwbGljYXRpb24uaCAgICAgICAgICAg ICAgICB8IDE3NCArKysrKysrKysrKysKIHRlc3RzLy5naXRpZ25vcmUgICAg ICAgICAgICAgfCAgIDEgKwogdGVzdHMvTWFrZWZpbGUuaW5jbHVkZSAgICAg ICB8ICAgNCArCiB0ZXN0cy90ZXN0LXJlcGxpY2F0aW9uLmMgICAgIHwgNTgx ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxNyBm aWxlcyBjaGFuZ2VkLCAxODk3IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGJsb2NrL3JlcGxpY2F0aW9uLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2NzL2Jsb2NrLXJlcGxpY2F0aW9uLnR4 dAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvYmxvY2svYmxvY2tfYmFj a3VwLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCByZXBsaWNhdGlvbi5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgcmVwbGljYXRpb24uaAogY3JlYXRlIG1vZGUgMTAw NjQ0IHRlc3RzL3Rlc3QtcmVwbGljYXRpb24uYwoKLS0gCjEuOS4zCgoAAAAA AAAAAAAAAAAAAABvdXRnb2luZ192MjIvMDAwNi1hdXRvLWNvbXBsZXRlLWFj dGl2ZS1jb21taXQucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwMDAwADAwMDAwMDAA MDAwMDAwMTEzNzcAMTI3NDM3NzE0NDQAMDIxMDQ3ACAwAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVz dGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByb290AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZyb20gYzU4MWY1YTBmMTRi NzlhOTJmZTExODk5NTkxOWFmNmNlYjMxOGYzZiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogV2VuIENvbmd5YW5nIDx3ZW5jeUBjbi5mdWppdHN1 LmNvbT4KRGF0ZTogV2VkLCAyMCBKdWwgMjAxNiAxMzo0MzoxMCAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggdjIyIDA2LzEwXSBhdXRvIGNvbXBsZXRlIGFjdGl2 ZSBjb21taXQKClNpZ25lZC1vZmYtYnk6IFdlbiBDb25neWFuZyA8d2VuY3lA Y24uZnVqaXRzdS5jb20+ClNpZ25lZC1vZmYtYnk6IENoYW5nbG9uZyBYaWUg PHhpZWNsLmZuc3RAY24uZnVqaXRzdS5jb20+ClNpZ25lZC1vZmYtYnk6IFdh bmcgV2VpV2VpIDx3YW5nd3cuZm5zdEBjbi5mdWppdHN1LmNvbT4KLS0tCiBi bG9jay9taXJyb3IuYyAgICAgICAgICAgIHwgMTMgKysrKysrKysrLS0tLQog YmxvY2tkZXYuYyAgICAgICAgICAgICAgICB8ICAyICstCiBpbmNsdWRlL2Js b2NrL2Jsb2NrX2ludC5oIHwgIDMgKystCiBxZW11LWltZy5jICAgICAgICAg ICAgICAgIHwgIDIgKy0KIDQgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9u cygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ibG9jay9taXJy b3IuYyBiL2Jsb2NrL21pcnJvci5jCmluZGV4IGIxZTYzM2UuLjYzZWQyNTMg MTAwNjQ0Ci0tLSBhL2Jsb2NrL21pcnJvci5jCisrKyBiL2Jsb2NrL21pcnJv ci5jCkBAIC04NTYsNyArODU2LDggQEAgc3RhdGljIHZvaWQgbWlycm9yX3N0 YXJ0X2pvYihjb25zdCBjaGFyICpqb2JfaWQsIEJsb2NrRHJpdmVyU3RhdGUg KmJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbG9ja0NvbXBs ZXRpb25GdW5jICpjYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dm9pZCAqb3BhcXVlLCBFcnJvciAqKmVycnAsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IEJsb2NrSm9iRHJpdmVyICpkcml2ZXIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfbm9uZV9tb2Rl LCBCbG9ja0RyaXZlclN0YXRlICpiYXNlKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBib29sIGlzX25vbmVfbW9kZSwgQmxvY2tEcml2ZXJTdGF0 ZSAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBh dXRvX2NvbXBsZXRlKQogewogICAgIE1pcnJvckJsb2NrSm9iICpzOwogCkBA IC04OTIsNiArODkzLDkgQEAgc3RhdGljIHZvaWQgbWlycm9yX3N0YXJ0X2pv Yihjb25zdCBjaGFyICpqb2JfaWQsIEJsb2NrRHJpdmVyU3RhdGUgKmJzLAog ICAgIHMtPmdyYW51bGFyaXR5ID0gZ3JhbnVsYXJpdHk7CiAgICAgcy0+YnVm X3NpemUgPSBST1VORF9VUChidWZfc2l6ZSwgZ3JhbnVsYXJpdHkpOwogICAg IHMtPnVubWFwID0gdW5tYXA7CisgICAgaWYgKGF1dG9fY29tcGxldGUpIHsK KyAgICAgICAgcy0+c2hvdWxkX2NvbXBsZXRlID0gdHJ1ZTsKKyAgICB9CiAK ICAgICBzLT5kaXJ0eV9iaXRtYXAgPSBiZHJ2X2NyZWF0ZV9kaXJ0eV9iaXRt YXAoYnMsIGdyYW51bGFyaXR5LCBOVUxMLCBlcnJwKTsKICAgICBpZiAoIXMt PmRpcnR5X2JpdG1hcCkgewpAQCAtOTMwLDE0ICs5MzQsMTUgQEAgdm9pZCBt aXJyb3Jfc3RhcnQoY29uc3QgY2hhciAqam9iX2lkLCBCbG9ja0RyaXZlclN0 YXRlICpicywKICAgICBtaXJyb3Jfc3RhcnRfam9iKGpvYl9pZCwgYnMsIHRh cmdldCwgcmVwbGFjZXMsCiAgICAgICAgICAgICAgICAgICAgICBzcGVlZCwg Z3JhbnVsYXJpdHksIGJ1Zl9zaXplLCBiYWNraW5nX21vZGUsCiAgICAgICAg ICAgICAgICAgICAgICBvbl9zb3VyY2VfZXJyb3IsIG9uX3RhcmdldF9lcnJv ciwgdW5tYXAsIGNiLCBvcGFxdWUsIGVycnAsCi0gICAgICAgICAgICAgICAg ICAgICAmbWlycm9yX2pvYl9kcml2ZXIsIGlzX25vbmVfbW9kZSwgYmFzZSk7 CisgICAgICAgICAgICAgICAgICAgICAmbWlycm9yX2pvYl9kcml2ZXIsIGlz X25vbmVfbW9kZSwgYmFzZSwgZmFsc2UpOwogfQogCiB2b2lkIGNvbW1pdF9h Y3RpdmVfc3RhcnQoY29uc3QgY2hhciAqam9iX2lkLCBCbG9ja0RyaXZlclN0 YXRlICpicywKICAgICAgICAgICAgICAgICAgICAgICAgICBCbG9ja0RyaXZl clN0YXRlICpiYXNlLCBpbnQ2NF90IHNwZWVkLAogICAgICAgICAgICAgICAg ICAgICAgICAgIEJsb2NrZGV2T25FcnJvciBvbl9lcnJvciwKICAgICAgICAg ICAgICAgICAgICAgICAgICBCbG9ja0NvbXBsZXRpb25GdW5jICpjYiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpvcGFxdWUsIEVycm9yICoq ZXJycCkKKyAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpvcGFxdWUs IEVycm9yICoqZXJycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBib29s IGF1dG9fY29tcGxldGUpCiB7CiAgICAgaW50NjRfdCBsZW5ndGgsIGJhc2Vf bGVuZ3RoOwogICAgIGludCBvcmlnX2Jhc2VfZmxhZ3M7CkBAIC05NzgsNyAr OTgzLDcgQEAgdm9pZCBjb21taXRfYWN0aXZlX3N0YXJ0KGNvbnN0IGNoYXIg KmpvYl9pZCwgQmxvY2tEcml2ZXJTdGF0ZSAqYnMsCiAgICAgbWlycm9yX3N0 YXJ0X2pvYihqb2JfaWQsIGJzLCBiYXNlLCBOVUxMLCBzcGVlZCwgMCwgMCwK ICAgICAgICAgICAgICAgICAgICAgIE1JUlJPUl9MRUFWRV9CQUNLSU5HX0NI QUlOLAogICAgICAgICAgICAgICAgICAgICAgb25fZXJyb3IsIG9uX2Vycm9y LCBmYWxzZSwgY2IsIG9wYXF1ZSwgJmxvY2FsX2VyciwKLSAgICAgICAgICAg ICAgICAgICAgICZjb21taXRfYWN0aXZlX2pvYl9kcml2ZXIsIGZhbHNlLCBi YXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICZjb21taXRfYWN0aXZlX2pv Yl9kcml2ZXIsIGZhbHNlLCBiYXNlLCBhdXRvX2NvbXBsZXRlKTsKICAgICBp ZiAobG9jYWxfZXJyKSB7CiAgICAgICAgIGVycm9yX3Byb3BhZ2F0ZShlcnJw LCBsb2NhbF9lcnIpOwogICAgICAgICBnb3RvIGVycm9yX3Jlc3RvcmVfZmxh Z3M7CmRpZmYgLS1naXQgYS9ibG9ja2Rldi5jIGIvYmxvY2tkZXYuYwppbmRl eCAzODRhZDNiLi5kY2JlODc1IDEwMDY0NAotLS0gYS9ibG9ja2Rldi5jCisr KyBiL2Jsb2NrZGV2LmMKQEAgLTMxNzEsNyArMzE3MSw3IEBAIHZvaWQgcW1w X2Jsb2NrX2NvbW1pdChib29sIGhhc19qb2JfaWQsIGNvbnN0IGNoYXIgKmpv Yl9pZCwgY29uc3QgY2hhciAqZGV2aWNlLAogICAgICAgICAgICAgZ290byBv dXQ7CiAgICAgICAgIH0KICAgICAgICAgY29tbWl0X2FjdGl2ZV9zdGFydCho YXNfam9iX2lkID8gam9iX2lkIDogTlVMTCwgYnMsIGJhc2VfYnMsIHNwZWVk LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uX2Vycm9yLCBibG9j a19qb2JfY2IsIGJzLCAmbG9jYWxfZXJyKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvbl9lcnJvciwgYmxvY2tfam9iX2NiLCBicywgJmxvY2Fs X2VyciwgZmFsc2UpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbW1pdF9z dGFydChoYXNfam9iX2lkID8gam9iX2lkIDogTlVMTCwgYnMsIGJhc2VfYnMs IHRvcF9icywgc3BlZWQsCiAgICAgICAgICAgICAgICAgICAgICBvbl9lcnJv ciwgYmxvY2tfam9iX2NiLCBicywKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYmxv Y2svYmxvY2tfaW50LmggYi9pbmNsdWRlL2Jsb2NrL2Jsb2NrX2ludC5oCmlu ZGV4IGE2YjEzYWQuLmJmMjE2NGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYmxv Y2svYmxvY2tfaW50LmgKKysrIGIvaW5jbHVkZS9ibG9jay9ibG9ja19pbnQu aApAQCAtNjk5LDEzICs2OTksMTQgQEAgdm9pZCBjb21taXRfc3RhcnQoY29u c3QgY2hhciAqam9iX2lkLCBCbG9ja0RyaXZlclN0YXRlICpicywKICAqIEBj YjogQ29tcGxldGlvbiBmdW5jdGlvbiBmb3IgdGhlIGpvYi4KICAqIEBvcGFx dWU6IE9wYXF1ZSBwb2ludGVyIHZhbHVlIHBhc3NlZCB0byBAY2IuCiAgKiBA ZXJycDogRXJyb3Igb2JqZWN0LgorICogQGF1dG9fY29tcGxldGU6IEF1dG8g Y29tcGxldGUgdGhlIGpvYi4KICAqCiAgKi8KIHZvaWQgY29tbWl0X2FjdGl2 ZV9zdGFydChjb25zdCBjaGFyICpqb2JfaWQsIEJsb2NrRHJpdmVyU3RhdGUg KmJzLAogICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrRHJpdmVyU3Rh dGUgKmJhc2UsIGludDY0X3Qgc3BlZWQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgQmxvY2tkZXZPbkVycm9yIG9uX2Vycm9yLAogICAgICAgICAgICAg ICAgICAgICAgICAgIEJsb2NrQ29tcGxldGlvbkZ1bmMgKmNiLAotICAgICAg ICAgICAgICAgICAgICAgICAgIHZvaWQgKm9wYXF1ZSwgRXJyb3IgKiplcnJw KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpvcGFxdWUsIEVy cm9yICoqZXJycCwgYm9vbCBhdXRvX2NvbXBsZXRlKTsKIC8qCiAgKiBtaXJy b3Jfc3RhcnQ6CiAgKiBAam9iX2lkOiBUaGUgaWQgb2YgdGhlIG5ld2x5LWNy ZWF0ZWQgam9iLCBvciAlTlVMTCB0byB1c2UgdGhlCmRpZmYgLS1naXQgYS9x ZW11LWltZy5jIGIvcWVtdS1pbWcuYwppbmRleCAyZTQwZTFmLi5hZTIwNGM5 IDEwMDY0NAotLS0gYS9xZW11LWltZy5jCisrKyBiL3FlbXUtaW1nLmMKQEAg LTkyMSw3ICs5MjEsNyBAQCBzdGF0aWMgaW50IGltZ19jb21taXQoaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogICAgIH07CiAKICAgICBjb21taXRfYWN0aXZl X3N0YXJ0KCJjb21taXQiLCBicywgYmFzZV9icywgMCwgQkxPQ0tERVZfT05f RVJST1JfUkVQT1JULAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9u X2Jsb2NrX2pvYl9jYiwgJmNiaSwgJmxvY2FsX2Vycik7CisgICAgICAgICAg ICAgICAgICAgICAgICBjb21tb25fYmxvY2tfam9iX2NiLCAmY2JpLCAmbG9j YWxfZXJyLCBmYWxzZSk7CiAgICAgaWYgKGxvY2FsX2VycikgewogICAgICAg ICBnb3RvIGRvbmU7CiAgICAgfQotLSAKMS45LjMKCgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAb3V0Z29pbmdfdjIyLzAwMDItQmFja3VwLWNs ZWFyLWFsbC1iaXRtYXAtd2hlbi1kb2luZy1ibG9jay1jaGVja3BvaW50LnBh dGNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDAwMAAw MDAwMDAwADAwMDAwMDA0MTc2ADEyNzQzNzcxNDQ0ADAyNTMxMAAgMAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA cm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGcm9tIDM5ZjFl OTk2M2UyMzZhNzY5ZDljZTRjM2VkNjdiMWE3OTYwMTc0OWEgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IFdlbiBDb25neWFuZyA8d2VuY3lAY24u ZnVqaXRzdS5jb20+CkRhdGU6IFR1ZSwgMjggSnVsIDIwMTUgMTQ6NTY6MDgg KzA4MDAKU3ViamVjdDogW1BBVENIIHYyMiAwMi8xMF0gQmFja3VwOiBjbGVh ciBhbGwgYml0bWFwIHdoZW4gZG9pbmcgYmxvY2sKIGNoZWNrcG9pbnQKClNp Z25lZC1vZmYtYnk6IFdlbiBDb25neWFuZyA8d2VuY3lAY24uZnVqaXRzdS5j b20+ClNpZ25lZC1vZmYtYnk6IHpoYW5naGFpbGlhbmcgPHpoYW5nLnpoYW5n aGFpbGlhbmdAaHVhd2VpLmNvbT4KU2lnbmVkLW9mZi1ieTogR29uZ2xlaSA8 YXJlaS5nb25nbGVpQGh1YXdlaS5jb20+ClNpZ25lZC1vZmYtYnk6IENoYW5n bG9uZyBYaWUgPHhpZWNsLmZuc3RAY24uZnVqaXRzdS5jb20+ClNpZ25lZC1v ZmYtYnk6IFdhbmcgV2VpV2VpIDx3YW5nd3cuZm5zdEBjbi5mdWppdHN1LmNv bT4KLS0tCiBibG9jay9iYWNrdXAuYyAgICAgICAgICAgICAgIHwgMTggKysr KysrKysrKysrKysrKysrCiBpbmNsdWRlL2Jsb2NrL2Jsb2NrX2JhY2t1cC5o IHwgIDMgKysrCiAyIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2Jsb2NrL2Jsb2NrX2JhY2t1 cC5oCgpkaWZmIC0tZ2l0IGEvYmxvY2svYmFja3VwLmMgYi9ibG9jay9iYWNr dXAuYwppbmRleCAyYzA1MzIzLi4zYmNlNDE2IDEwMDY0NAotLS0gYS9ibG9j ay9iYWNrdXAuYworKysgYi9ibG9jay9iYWNrdXAuYwpAQCAtMTcsNiArMTcs NyBAQAogI2luY2x1ZGUgImJsb2NrL2Jsb2NrLmgiCiAjaW5jbHVkZSAiYmxv Y2svYmxvY2tfaW50LmgiCiAjaW5jbHVkZSAiYmxvY2svYmxvY2tqb2IuaCIK KyNpbmNsdWRlICJibG9jay9ibG9ja19iYWNrdXAuaCIKICNpbmNsdWRlICJx YXBpL2Vycm9yLmgiCiAjaW5jbHVkZSAicWFwaS9xbXAvcWVycm9yLmgiCiAj aW5jbHVkZSAicWVtdS9yYXRlbGltaXQuaCIKQEAgLTI1Myw2ICsyNTQsMjMg QEAgc3RhdGljIHZvaWQgYmFja3VwX2F0dGFjaGVkX2Fpb19jb250ZXh0KEJs b2NrSm9iICpqb2IsIEFpb0NvbnRleHQgKmFpb19jb250ZXh0KQogICAgIGJs a19zZXRfYWlvX2NvbnRleHQocy0+dGFyZ2V0LCBhaW9fY29udGV4dCk7CiB9 CiAKK3ZvaWQgYmFja3VwX2RvX2NoZWNrcG9pbnQoQmxvY2tKb2IgKmpvYiwg RXJyb3IgKiplcnJwKQoreworICAgIEJhY2t1cEJsb2NrSm9iICpiYWNrdXBf am9iID0gY29udGFpbmVyX29mKGpvYiwgQmFja3VwQmxvY2tKb2IsIGNvbW1v bik7CisgICAgaW50NjRfdCBsZW47CisKKyAgICBhc3NlcnQoam9iLT5kcml2 ZXItPmpvYl90eXBlID09IEJMT0NLX0pPQl9UWVBFX0JBQ0tVUCk7CisKKyAg ICBpZiAoYmFja3VwX2pvYi0+c3luY19tb2RlICE9IE1JUlJPUl9TWU5DX01P REVfTk9ORSkgeworICAgICAgICBlcnJvcl9zZXRnKGVycnAsICJUaGUgYmFj a3VwIGpvYiBvbmx5IHN1cHBvcnRzIGJsb2NrIGNoZWNrcG9pbnQgaW4iCisg ICAgICAgICAgICAgICAgICAgIiBzeW5jPW5vbmUgbW9kZSIpOworICAgICAg ICByZXR1cm47CisgICAgfQorCisgICAgbGVuID0gRElWX1JPVU5EX1VQKGJh Y2t1cF9qb2ItPmNvbW1vbi5sZW4sIGJhY2t1cF9qb2ItPmNsdXN0ZXJfc2l6 ZSk7CisgICAgYml0bWFwX3plcm8oYmFja3VwX2pvYi0+ZG9uZV9iaXRtYXAs IGxlbik7Cit9CisKIHN0YXRpYyBjb25zdCBCbG9ja0pvYkRyaXZlciBiYWNr dXBfam9iX2RyaXZlciA9IHsKICAgICAuaW5zdGFuY2Vfc2l6ZSAgICAgICAg ICA9IHNpemVvZihCYWNrdXBCbG9ja0pvYiksCiAgICAgLmpvYl90eXBlICAg ICAgICAgICAgICAgPSBCTE9DS19KT0JfVFlQRV9CQUNLVVAsCmRpZmYgLS1n aXQgYS9pbmNsdWRlL2Jsb2NrL2Jsb2NrX2JhY2t1cC5oIGIvaW5jbHVkZS9i bG9jay9ibG9ja19iYWNrdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4zNzUzYmNiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVk ZS9ibG9jay9ibG9ja19iYWNrdXAuaApAQCAtMCwwICsxLDMgQEAKKyNpbmNs dWRlICJibG9jay9ibG9ja19pbnQuaCIKKwordm9pZCBiYWNrdXBfZG9fY2hl Y2twb2ludChCbG9ja0pvYiAqam9iLCBFcnJvciAqKmVycnApOwotLSAKMS45 LjMKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb3V0Z29pbmdfdjIyLzAw MDEtdW5ibG9jay1iYWNrdXAtb3BlcmF0aW9ucy1pbi1iYWNraW5nLWZpbGUu cGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2 NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAzMTUxADEyNzQzNzcxNDQ0ADAy MzUxMgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AABGcm9tIDk5ZTUwY2YwZjcyNjM2ZWUxYWZhMGU2MGMyNDI4MjJiYjljMTg3 NTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFdlbiBDb25neWFu ZyA8d2VuY3lAY24uZnVqaXRzdS5jb20+CkRhdGU6IFR1ZSwgMjcgT2N0IDIw MTUgMTE6MDQ6MzYgKzA4MDAKU3ViamVjdDogW1BBVENIIHYyMiAwMS8xMF0g dW5ibG9jayBiYWNrdXAgb3BlcmF0aW9ucyBpbiBiYWNraW5nIGZpbGUKClNp Z25lZC1vZmYtYnk6IFdlbiBDb25neWFuZyA8d2VuY3lAY24uZnVqaXRzdS5j b20+ClNpZ25lZC1vZmYtYnk6IENoYW5nbG9uZyBYaWUgPHhpZWNsLmZuc3RA Y24uZnVqaXRzdS5jb20+ClNpZ25lZC1vZmYtYnk6IFdhbmcgV2VpV2VpIDx3 YW5nd3cuZm5zdEBjbi5mdWppdHN1LmNvbT4KLS0tCiBibG9jay5jIHwgMTcg KysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEvYmxvY2suYyBiL2Jsb2NrLmMKaW5kZXgg ZDJkYWMzZC4uNTYxMDdjNiAxMDA2NDQKLS0tIGEvYmxvY2suYworKysgYi9i bG9jay5jCkBAIC0xMzExLDYgKzEzMTEsMjMgQEAgdm9pZCBiZHJ2X3NldF9i YWNraW5nX2hkKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBCbG9ja0RyaXZlclN0 YXRlICpiYWNraW5nX2hkKQogICAgIC8qIE90aGVyd2lzZSB3ZSB3b24ndCBi ZSBhYmxlIHRvIGNvbW1pdCBkdWUgdG8gY2hlY2sgaW4gYmRydl9jb21taXQg Ki8KICAgICBiZHJ2X29wX3VuYmxvY2soYmFja2luZ19oZCwgQkxPQ0tfT1Bf VFlQRV9DT01NSVRfVEFSR0VULAogICAgICAgICAgICAgICAgICAgICBicy0+ YmFja2luZ19ibG9ja2VyKTsKKyAgICAvKgorICAgICAqIFdlIGRvIGJhY2t1 cCBpbiAzIHdheXM6CisgICAgICogMS4gZHJpdmUgYmFja3VwCisgICAgICog ICAgVGhlIHRhcmdldCBicyBpcyBuZXcgb3BlbmVkLCBhbmQgdGhlIHNvdXJj ZSBpcyB0b3AgQkRTCisgICAgICogMi4gYmxvY2tkZXYgYmFja3VwCisgICAg ICogICAgQm90aCB0aGUgc291cmNlIGFuZCB0aGUgdGFyZ2V0IGFyZSB0b3Ag QkRTZXMuCisgICAgICogMy4gaW50ZXJuYWwgYmFja3VwKHVzZWQgZm9yIGJs b2NrIHJlcGxpY2F0aW9uKQorICAgICAqICAgIEJvdGggdGhlIHNvdXJjZSBh bmQgdGhlIHRhcmdldCBhcmUgYmFja2luZyBmaWxlCisgICAgICoKKyAgICAg KiBJbiBjYXNlIDEgYW5kIDIsIG5laXRoZXIgdGhlIHNvdXJjZSBub3IgdGhl IHRhcmdldCBpcyB0aGUgYmFja2luZyBmaWxlLgorICAgICAqIEluIGNhc2Ug Mywgd2Ugd2lsbCBibG9jayB0aGUgdG9wIEJEUywgc28gdGhlcmUgaXMgb25s eSBvbmUgYmxvY2sgam9iCisgICAgICogZm9yIHRoZSB0b3AgQkRTIGFuZCBp dHMgYmFja2luZyBjaGFpbi4KKyAgICAgKi8KKyAgICBiZHJ2X29wX3VuYmxv Y2soYmFja2luZ19oZCwgQkxPQ0tfT1BfVFlQRV9CQUNLVVBfU09VUkNFLAor ICAgICAgICAgICAgICAgICAgICBicy0+YmFja2luZ19ibG9ja2VyKTsKKyAg ICBiZHJ2X29wX3VuYmxvY2soYmFja2luZ19oZCwgQkxPQ0tfT1BfVFlQRV9C QUNLVVBfVEFSR0VULAorICAgICAgICAgICAgICAgICAgICBicy0+YmFja2lu Z19ibG9ja2VyKTsKIG91dDoKICAgICBiZHJ2X3JlZnJlc2hfbGltaXRzKGJz LCBOVUxMKTsKIH0KLS0gCjEuOS4zCgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG91dGdvaW5nX3YyMi8wMDA4LUlt cGxlbWVudC1uZXctZHJpdmVyLWZvci1ibG9jay1yZXBsaWNhdGlvbi5wYXRj aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAw MDAwMDAAMDAwMDAwMAAwMDAwMDA1MjMzNgAxMjc0Mzc3MTQ0NAAwMjM3MzEA IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAdXN0YXIgIAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARnJv bSBhODE5ZjZkNTVhMDFhOWQ4ZDg2Zjk4ZTMyMDkwNmNlMjE0M2E1ODRmIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBXZW4gQ29uZ3lhbmcgPHdl bmN5QGNuLmZ1aml0c3UuY29tPgpEYXRlOiBXZWQsIDIwIEp1bCAyMDE2IDE3 OjQxOjE2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCB2MjIgMDgvMTBdIEltcGxl bWVudCBuZXcgZHJpdmVyIGZvciBibG9jayByZXBsaWNhdGlvbgoKU2lnbmVk LW9mZi1ieTogV2VuIENvbmd5YW5nIDx3ZW5jeUBjbi5mdWppdHN1LmNvbT4K U2lnbmVkLW9mZi1ieTogemhhbmdoYWlsaWFuZyA8emhhbmcuemhhbmdoYWls aWFuZ0BodWF3ZWkuY29tPgpTaWduZWQtb2ZmLWJ5OiBHb25nbGVpIDxhcmVp LmdvbmdsZWlAaHVhd2VpLmNvbT4KU2lnbmVkLW9mZi1ieTogQ2hhbmdsb25n IFhpZSA8eGllY2wuZm5zdEBjbi5mdWppdHN1LmNvbT4KU2lnbmVkLW9mZi1i eTogV2FuZyBXZWlXZWkgPHdhbmd3dy5mbnN0QGNuLmZ1aml0c3UuY29tPgot LS0KIGJsb2NrL01ha2VmaWxlLm9ianMgfCAgIDEgKwogYmxvY2svcmVwbGlj YXRpb24uYyB8IDY1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDY1OSBp bnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgYmxvY2svcmVwbGlj YXRpb24uYwoKZGlmZiAtLWdpdCBhL2Jsb2NrL01ha2VmaWxlLm9ianMgYi9i bG9jay9NYWtlZmlsZS5vYmpzCmluZGV4IDhhMzI3MGIuLmVlMWQ4NDkgMTAw NjQ0Ci0tLSBhL2Jsb2NrL01ha2VmaWxlLm9ianMKKysrIGIvYmxvY2svTWFr ZWZpbGUub2JqcwpAQCAtMjMsNiArMjMsNyBAQCBibG9jay1vYmotJChDT05G SUdfTElCU1NIMikgKz0gc3NoLm8KIGJsb2NrLW9iai15ICs9IGFjY291bnRp bmcubyBkaXJ0eS1iaXRtYXAubwogYmxvY2stb2JqLXkgKz0gd3JpdGUtdGhy ZXNob2xkLm8KIGJsb2NrLW9iai15ICs9IGJhY2t1cC5vCitibG9jay1vYmot eSArPSByZXBsaWNhdGlvbi5vCiAKIGJsb2NrLW9iai15ICs9IGNyeXB0by5v CiAKZGlmZiAtLWdpdCBhL2Jsb2NrL3JlcGxpY2F0aW9uLmMgYi9ibG9jay9y ZXBsaWNhdGlvbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjZhMzg5YzIKLS0tIC9kZXYvbnVsbAorKysgYi9ibG9jay9yZXBsaWNh dGlvbi5jCkBAIC0wLDAgKzEsNjU4IEBACisvKgorICogUmVwbGljYXRpb24g QmxvY2sgZmlsdGVyCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE2IEhVQVdF SSBURUNITk9MT0dJRVMgQ08uLCBMVEQuCisgKiBDb3B5cmlnaHQgKGMpIDIw MTYgSW50ZWwgQ29ycG9yYXRpb24KKyAqIENvcHlyaWdodCAoYykgMjAxNiBG VUpJVFNVIExJTUlURUQKKyAqCisgKiBBdXRob3I6CisgKiAgIFdlbiBDb25n eWFuZyA8d2VuY3lAY24uZnVqaXRzdS5jb20+CisgKgorICogVGhpcyB3b3Jr IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCwg dmVyc2lvbiAyIG9yIGxhdGVyLgorICogU2VlIHRoZSBDT1BZSU5HIGZpbGUg aW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCisgKi8KKworI2luY2x1ZGUg InFlbXUvb3NkZXAuaCIKKyNpbmNsdWRlICJxZW11LWNvbW1vbi5oIgorI2lu Y2x1ZGUgImJsb2NrL25iZC5oIgorI2luY2x1ZGUgImJsb2NrL2Jsb2Nram9i LmgiCisjaW5jbHVkZSAiYmxvY2svYmxvY2tfaW50LmgiCisjaW5jbHVkZSAi YmxvY2svYmxvY2tfYmFja3VwLmgiCisjaW5jbHVkZSAic3lzZW11L2Jsb2Nr LWJhY2tlbmQuaCIKKyNpbmNsdWRlICJxYXBpL2Vycm9yLmgiCisjaW5jbHVk ZSAicmVwbGljYXRpb24uaCIKKwordHlwZWRlZiBzdHJ1Y3QgQkRSVlJlcGxp Y2F0aW9uU3RhdGUgeworICAgIFJlcGxpY2F0aW9uTW9kZSBtb2RlOworICAg IGludCByZXBsaWNhdGlvbl9zdGF0ZTsKKyAgICBCZHJ2Q2hpbGQgKmFjdGl2 ZV9kaXNrOworICAgIEJkcnZDaGlsZCAqaGlkZGVuX2Rpc2s7CisgICAgQmRy dkNoaWxkICpzZWNvbmRhcnlfZGlzazsKKyAgICBjaGFyICp0b3BfaWQ7Cisg ICAgUmVwbGljYXRpb25TdGF0ZSAqcnM7CisgICAgRXJyb3IgKmJsb2NrZXI7 CisgICAgaW50IG9yaWdfaGlkZGVuX2ZsYWdzOworICAgIGludCBvcmlnX3Nl Y29uZGFyeV9mbGFnczsKKyAgICBpbnQgZXJyb3I7Cit9IEJEUlZSZXBsaWNh dGlvblN0YXRlOworCitlbnVtIHsKKyAgICBCTE9DS19SRVBMSUNBVElPTl9O T05FLCAgICAgICAgICAgICAvKiBibG9jayByZXBsaWNhdGlvbiBpcyBub3Qg c3RhcnRlZCAqLworICAgIEJMT0NLX1JFUExJQ0FUSU9OX1JVTk5JTkcsICAg ICAgICAgIC8qIGJsb2NrIHJlcGxpY2F0aW9uIGlzIHJ1bm5pbmcgKi8KKyAg ICBCTE9DS19SRVBMSUNBVElPTl9GQUlMT1ZFUiwgICAgICAgICAvKiBmYWls b3ZlciBpcyBydW5uaW5nIGluIGJhY2tncm91bmQgKi8KKyAgICBCTE9DS19S RVBMSUNBVElPTl9GQUlMT1ZFUl9GQUlMRUQsICAvKiBmYWlsb3ZlciBmYWls ZWQgKi8KKyAgICBCTE9DS19SRVBMSUNBVElPTl9ET05FLCAgICAgICAgICAg ICAvKiBibG9jayByZXBsaWNhdGlvbiBpcyBkb25lICovCit9OworCitzdGF0 aWMgdm9pZCByZXBsaWNhdGlvbl9zdGFydChSZXBsaWNhdGlvblN0YXRlICpy cywgUmVwbGljYXRpb25Nb2RlIG1vZGUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFcnJvciAqKmVycnApOworc3RhdGljIHZvaWQgcmVwbGlj YXRpb25fZG9fY2hlY2twb2ludChSZXBsaWNhdGlvblN0YXRlICpycywgRXJy b3IgKiplcnJwKTsKK3N0YXRpYyB2b2lkIHJlcGxpY2F0aW9uX2dldF9lcnJv cihSZXBsaWNhdGlvblN0YXRlICpycywgRXJyb3IgKiplcnJwKTsKK3N0YXRp YyB2b2lkIHJlcGxpY2F0aW9uX3N0b3AoUmVwbGljYXRpb25TdGF0ZSAqcnMs IGJvb2wgZmFpbG92ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEVycm9yICoqZXJycCk7CisKKyNkZWZpbmUgUkVQTElDQVRJT05fTU9ERSAg ICAgICAgIm1vZGUiCisjZGVmaW5lIFJFUExJQ0FUSU9OX1RPUF9JRCAgICAg ICJ0b3AtaWQiCitzdGF0aWMgUWVtdU9wdHNMaXN0IHJlcGxpY2F0aW9uX3J1 bnRpbWVfb3B0cyA9IHsKKyAgICAubmFtZSA9ICJyZXBsaWNhdGlvbiIsCisg ICAgLmhlYWQgPSBRVEFJTFFfSEVBRF9JTklUSUFMSVpFUihyZXBsaWNhdGlv bl9ydW50aW1lX29wdHMuaGVhZCksCisgICAgLmRlc2MgPSB7CisgICAgICAg IHsKKyAgICAgICAgICAgIC5uYW1lID0gUkVQTElDQVRJT05fTU9ERSwKKyAg ICAgICAgICAgIC50eXBlID0gUUVNVV9PUFRfU1RSSU5HLAorICAgICAgICB9 LAorICAgICAgICB7CisgICAgICAgICAgICAubmFtZSA9IFJFUExJQ0FUSU9O X1RPUF9JRCwKKyAgICAgICAgICAgIC50eXBlID0gUUVNVV9PUFRfU1RSSU5H LAorICAgICAgICB9LAorICAgICAgICB7IC8qIGVuZCBvZiBsaXN0ICovIH0K KyAgICB9LAorfTsKKworc3RhdGljIFJlcGxpY2F0aW9uT3BzIHJlcGxpY2F0 aW9uX29wcyA9IHsKKyAgICAuc3RhcnQgPSByZXBsaWNhdGlvbl9zdGFydCwK KyAgICAuY2hlY2twb2ludCA9IHJlcGxpY2F0aW9uX2RvX2NoZWNrcG9pbnQs CisgICAgLmdldF9lcnJvciA9IHJlcGxpY2F0aW9uX2dldF9lcnJvciwKKyAg ICAuc3RvcCA9IHJlcGxpY2F0aW9uX3N0b3AsCit9OworCitzdGF0aWMgaW50 IHJlcGxpY2F0aW9uX29wZW4oQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIFFEaWN0 ICpvcHRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBm bGFncywgRXJyb3IgKiplcnJwKQoreworICAgIGludCByZXQ7CisgICAgQkRS VlJlcGxpY2F0aW9uU3RhdGUgKnMgPSBicy0+b3BhcXVlOworICAgIEVycm9y ICpsb2NhbF9lcnIgPSBOVUxMOworICAgIFFlbXVPcHRzICpvcHRzID0gTlVM TDsKKyAgICBjb25zdCBjaGFyICptb2RlOworICAgIGNvbnN0IGNoYXIgKnRv cF9pZDsKKworICAgIHJldCA9IC1FSU5WQUw7CisgICAgb3B0cyA9IHFlbXVf b3B0c19jcmVhdGUoJnJlcGxpY2F0aW9uX3J1bnRpbWVfb3B0cywgTlVMTCwg MCwgJmVycm9yX2Fib3J0KTsKKyAgICBxZW11X29wdHNfYWJzb3JiX3FkaWN0 KG9wdHMsIG9wdGlvbnMsICZsb2NhbF9lcnIpOworICAgIGlmIChsb2NhbF9l cnIpIHsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIG1vZGUg PSBxZW11X29wdF9nZXQob3B0cywgUkVQTElDQVRJT05fTU9ERSk7CisgICAg aWYgKCFtb2RlKSB7CisgICAgICAgIGVycm9yX3NldGcoJmxvY2FsX2Vyciwg Ik1pc3NpbmcgdGhlIG9wdGlvbiBtb2RlIik7CisgICAgICAgIGdvdG8gZmFp bDsKKyAgICB9CisKKyAgICBpZiAoIXN0cmNtcChtb2RlLCAicHJpbWFyeSIp KSB7CisgICAgICAgIHMtPm1vZGUgPSBSRVBMSUNBVElPTl9NT0RFX1BSSU1B Ulk7CisgICAgfSBlbHNlIGlmICghc3RyY21wKG1vZGUsICJzZWNvbmRhcnki KSkgeworICAgICAgICBzLT5tb2RlID0gUkVQTElDQVRJT05fTU9ERV9TRUNP TkRBUlk7CisgICAgICAgIHRvcF9pZCA9IHFlbXVfb3B0X2dldChvcHRzLCBS RVBMSUNBVElPTl9UT1BfSUQpOworICAgICAgICBzLT50b3BfaWQgPSBnX3N0 cmR1cCh0b3BfaWQpOworICAgICAgICBpZiAoIXMtPnRvcF9pZCkgeworICAg ICAgICAgICAgZXJyb3Jfc2V0ZygmbG9jYWxfZXJyLCAiTWlzc2luZyB0aGUg b3B0aW9uIHRvcC1pZCIpOworICAgICAgICAgICAgZ290byBmYWlsOworICAg ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXJyb3Jfc2V0ZygmbG9j YWxfZXJyLAorICAgICAgICAgICAgICAgICAgICJUaGUgb3B0aW9uIG1vZGUn cyB2YWx1ZSBzaG91bGQgYmUgcHJpbWFyeSBvciBzZWNvbmRhcnkiKTsKKyAg ICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIHMtPnJzID0gcmVwbGlj YXRpb25fbmV3KGJzLCAmcmVwbGljYXRpb25fb3BzKTsKKworICAgIHJldCA9 IDA7CisKK2ZhaWw6CisgICAgcWVtdV9vcHRzX2RlbChvcHRzKTsKKyAgICBl cnJvcl9wcm9wYWdhdGUoZXJycCwgbG9jYWxfZXJyKTsKKworICAgIHJldHVy biByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHJlcGxpY2F0aW9uX2Nsb3NlKEJs b2NrRHJpdmVyU3RhdGUgKmJzKQoreworICAgIEJEUlZSZXBsaWNhdGlvblN0 YXRlICpzID0gYnMtPm9wYXF1ZTsKKworICAgIGlmIChzLT5yZXBsaWNhdGlv bl9zdGF0ZSA9PSBCTE9DS19SRVBMSUNBVElPTl9SVU5OSU5HKSB7CisgICAg ICAgIHJlcGxpY2F0aW9uX3N0b3Aocy0+cnMsIGZhbHNlLCBOVUxMKTsKKyAg ICB9CisKKyAgICBpZiAocy0+bW9kZSA9PSBSRVBMSUNBVElPTl9NT0RFX1NF Q09OREFSWSkgeworICAgICAgICBnX2ZyZWUocy0+dG9wX2lkKTsKKyAgICB9 CisKKyAgICByZXBsaWNhdGlvbl9yZW1vdmUocy0+cnMpOworfQorCitzdGF0 aWMgaW50NjRfdCByZXBsaWNhdGlvbl9nZXRsZW5ndGgoQmxvY2tEcml2ZXJT dGF0ZSAqYnMpCit7CisgICAgcmV0dXJuIGJkcnZfZ2V0bGVuZ3RoKGJzLT5m aWxlLT5icyk7Cit9CisKK3N0YXRpYyBpbnQgcmVwbGljYXRpb25fZ2V0X2lv X3N0YXR1cyhCRFJWUmVwbGljYXRpb25TdGF0ZSAqcykKK3sKKyAgICBzd2l0 Y2ggKHMtPnJlcGxpY2F0aW9uX3N0YXRlKSB7CisgICAgY2FzZSBCTE9DS19S RVBMSUNBVElPTl9OT05FOgorICAgICAgICByZXR1cm4gLUVJTzsKKyAgICBj YXNlIEJMT0NLX1JFUExJQ0FUSU9OX1JVTk5JTkc6CisgICAgICAgIHJldHVy biAwOworICAgIGNhc2UgQkxPQ0tfUkVQTElDQVRJT05fRkFJTE9WRVI6Cisg ICAgICAgIHJldHVybiBzLT5tb2RlID09IFJFUExJQ0FUSU9OX01PREVfUFJJ TUFSWSA/IC1FSU8gOiAwOworICAgIGNhc2UgQkxPQ0tfUkVQTElDQVRJT05f RkFJTE9WRVJfRkFJTEVEOgorICAgICAgICByZXR1cm4gcy0+bW9kZSA9PSBS RVBMSUNBVElPTl9NT0RFX1BSSU1BUlkgPyAtRUlPIDogMTsKKyAgICBjYXNl IEJMT0NLX1JFUExJQ0FUSU9OX0RPTkU6CisgICAgICAgIC8qCisgICAgICAg ICAqIGFjdGl2ZSBjb21taXQgam9iIGNvbXBsZXRlcywgYW5kIGFjdGl2ZSBk aXNrIGFuZCBzZWNvbmRhcnlfZGlzaworICAgICAgICAgKiBpcyBzd2FwcGVk LCBzbyB3ZSBjYW4gb3BlcmF0ZSBicy0+ZmlsZSBkaXJlY3RseQorICAgICAg ICAgKi8KKyAgICAgICAgcmV0dXJuIHMtPm1vZGUgPT0gUkVQTElDQVRJT05f TU9ERV9QUklNQVJZID8gLUVJTyA6IDA7CisgICAgZGVmYXVsdDoKKyAgICAg ICAgYWJvcnQoKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQgcmVwbGljYXRp b25fcmV0dXJuX3ZhbHVlKEJEUlZSZXBsaWNhdGlvblN0YXRlICpzLCBpbnQg cmV0KQoreworICAgIGlmIChzLT5tb2RlID09IFJFUExJQ0FUSU9OX01PREVf U0VDT05EQVJZKSB7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisg ICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgcy0+ZXJyb3IgPSByZXQ7Cisg ICAgICAgIHJldCA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKK30K Kworc3RhdGljIGNvcm91dGluZV9mbiBpbnQgcmVwbGljYXRpb25fY29fcmVh ZHYoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHNlY3Rvcl9udW0s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgcmVtYWluaW5nX3NlY3RvcnMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRRU1VSU9WZWN0b3IgKnFpb3Yp Cit7CisgICAgQkRSVlJlcGxpY2F0aW9uU3RhdGUgKnMgPSBicy0+b3BhcXVl OworICAgIEJkcnZDaGlsZCAqY2hpbGQgPSBzLT5zZWNvbmRhcnlfZGlzazsK KyAgICBCbG9ja0pvYiAqam9iID0gTlVMTDsKKyAgICBDb3dSZXF1ZXN0IHJl cTsKKyAgICBpbnQgcmV0OworCisgICAgaWYgKHMtPm1vZGUgPT0gUkVQTElD QVRJT05fTU9ERV9QUklNQVJZKSB7CisgICAgICAgIC8qIFdlIG9ubHkgdXNl IGl0IHRvIGZvcndhcmQgcHJpbWFyeSB3cml0ZSByZXF1ZXN0cyAqLworICAg ICAgICByZXR1cm4gLUVJTzsKKyAgICB9CisKKyAgICByZXQgPSByZXBsaWNh dGlvbl9nZXRfaW9fc3RhdHVzKHMpOworICAgIGlmIChyZXQgPCAwKSB7Cisg ICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgaWYgKGNoaWxkICYm IGNoaWxkLT5icykgeworICAgICAgICBqb2IgPSBjaGlsZC0+YnMtPmpvYjsK KyAgICB9CisKKyAgICBpZiAoam9iKSB7CisgICAgICAgIGJhY2t1cF93YWl0 X2Zvcl9vdmVybGFwcGluZ19yZXF1ZXN0cyhjaGlsZC0+YnMtPmpvYiwgc2Vj dG9yX251bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlbWFpbmluZ19zZWN0b3JzKTsKKyAgICAgICAgYmFja3Vw X2Nvd19yZXF1ZXN0X2JlZ2luKCZyZXEsIGNoaWxkLT5icy0+am9iLCBzZWN0 b3JfbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVt YWluaW5nX3NlY3RvcnMpOworICAgICAgICByZXQgPSBiZHJ2X2NvX3JlYWR2 KGJzLT5maWxlLCBzZWN0b3JfbnVtLCByZW1haW5pbmdfc2VjdG9ycywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBxaW92KTsKKyAgICAgICAgYmFj a3VwX2Nvd19yZXF1ZXN0X2VuZCgmcmVxKTsKKyAgICAgICAgZ290byBvdXQ7 CisgICAgfQorCisgICAgcmV0ID0gYmRydl9jb19yZWFkdihicy0+ZmlsZSwg c2VjdG9yX251bSwgcmVtYWluaW5nX3NlY3RvcnMsIHFpb3YpOworb3V0Ogor ICAgIHJldHVybiByZXBsaWNhdGlvbl9yZXR1cm5fdmFsdWUocywgcmV0KTsK K30KKworc3RhdGljIGNvcm91dGluZV9mbiBpbnQgcmVwbGljYXRpb25fY29f d3JpdGV2KEJsb2NrRHJpdmVyU3RhdGUgKmJzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qgc2VjdG9y X251bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgcmVtYWluaW5nX3NlY3RvcnMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUVNVUlPVmVjdG9y ICpxaW92KQoreworICAgIEJEUlZSZXBsaWNhdGlvblN0YXRlICpzID0gYnMt Pm9wYXF1ZTsKKyAgICBRRU1VSU9WZWN0b3IgaGRfcWlvdjsKKyAgICB1aW50 NjRfdCBieXRlc19kb25lID0gMDsKKyAgICBCZHJ2Q2hpbGQgKnRvcCA9IGJz LT5maWxlOworICAgIEJkcnZDaGlsZCAqYmFzZSA9IHMtPnNlY29uZGFyeV9k aXNrOworICAgIEJkcnZDaGlsZCAqdGFyZ2V0OworICAgIGludCByZXQsIG47 CisKKyAgICByZXQgPSByZXBsaWNhdGlvbl9nZXRfaW9fc3RhdHVzKHMpOwor ICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0K KworICAgIGlmIChyZXQgPT0gMCkgeworICAgICAgICByZXQgPSBiZHJ2X2Nv X3dyaXRldih0b3AsIHNlY3Rvcl9udW0sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlbWFpbmluZ19zZWN0b3JzLCBxaW92KTsKKyAgICAgICAg cmV0dXJuIHJlcGxpY2F0aW9uX3JldHVybl92YWx1ZShzLCByZXQpOworICAg IH0KKworICAgIC8qCisgICAgICogRmFpbG92ZXIgZmFpbGVkLCBvbmx5IHdy aXRlIHRvIGFjdGl2ZSBkaXNrIGlmIHRoZSBzZWN0b3JzCisgICAgICogaGF2 ZSBhbHJlYWR5IGJlZW4gYWxsb2NhdGVkIGluIGFjdGl2ZSBkaXNrL2hpZGRl biBkaXNrLgorICAgICAqLworICAgIHFlbXVfaW92ZWNfaW5pdCgmaGRfcWlv diwgcWlvdi0+bmlvdik7CisgICAgd2hpbGUgKHJlbWFpbmluZ19zZWN0b3Jz ID4gMCkgeworICAgICAgICByZXQgPSBiZHJ2X2lzX2FsbG9jYXRlZF9hYm92 ZSh0b3AtPmJzLCBiYXNlLT5icywgc2VjdG9yX251bSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nX3NlY3RvcnMs ICZuKTsKKyAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgIGdv dG8gb3V0MTsKKyAgICAgICAgfQorCisgICAgICAgIHFlbXVfaW92ZWNfcmVz ZXQoJmhkX3Fpb3YpOworICAgICAgICBxZW11X2lvdmVjX2NvbmNhdCgmaGRf cWlvdiwgcWlvdiwgYnl0ZXNfZG9uZSwgbiAqIEJEUlZfU0VDVE9SX1NJWkUp OworCisgICAgICAgIHRhcmdldCA9IHJldCA/IHRvcCA6IGJhc2U7CisgICAg ICAgIHJldCA9IGJkcnZfY29fd3JpdGV2KHRhcmdldCwgc2VjdG9yX251bSwg biwgJmhkX3Fpb3YpOworICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAg ICAgICAgZ290byBvdXQxOworICAgICAgICB9CisKKyAgICAgICAgcmVtYWlu aW5nX3NlY3RvcnMgLT0gbjsKKyAgICAgICAgc2VjdG9yX251bSArPSBuOwor ICAgICAgICBieXRlc19kb25lICs9IG4gKiBCRFJWX1NFQ1RPUl9TSVpFOwor ICAgIH0KKworb3V0MToKKyAgICBxZW11X2lvdmVjX2Rlc3Ryb3koJmhkX3Fp b3YpOworb3V0OgorICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBib29s IHJlcGxpY2F0aW9uX3JlY3Vyc2VfaXNfZmlyc3Rfbm9uX2ZpbHRlcihCbG9j a0RyaXZlclN0YXRlICpicywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBCbG9ja0RyaXZlclN0YXRlICpj YW5kaWRhdGUpCit7CisgICAgcmV0dXJuIGJkcnZfcmVjdXJzZV9pc19maXJz dF9ub25fZmlsdGVyKGJzLT5maWxlLT5icywgY2FuZGlkYXRlKTsKK30KKwor c3RhdGljIHZvaWQgc2Vjb25kYXJ5X2RvX2NoZWNrcG9pbnQoQkRSVlJlcGxp Y2F0aW9uU3RhdGUgKnMsIEVycm9yICoqZXJycCkKK3sKKyAgICBFcnJvciAq bG9jYWxfZXJyID0gTlVMTDsKKyAgICBpbnQgcmV0OworCisgICAgaWYgKCFz LT5zZWNvbmRhcnlfZGlzay0+YnMtPmpvYikgeworICAgICAgICBlcnJvcl9z ZXRnKGVycnAsICJCYWNrdXAgam9iIHdhcyBjYW5jZWxsZWQgdW5leHBlY3Rl ZGx5Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBiYWNrdXBf ZG9fY2hlY2twb2ludChzLT5zZWNvbmRhcnlfZGlzay0+YnMtPmpvYiwgJmxv Y2FsX2Vycik7CisgICAgaWYgKGxvY2FsX2VycikgeworICAgICAgICBlcnJv cl9wcm9wYWdhdGUoZXJycCwgbG9jYWxfZXJyKTsKKyAgICAgICAgcmV0dXJu OworICAgIH0KKworICAgIHJldCA9IHMtPmFjdGl2ZV9kaXNrLT5icy0+ZHJ2 LT5iZHJ2X21ha2VfZW1wdHkocy0+YWN0aXZlX2Rpc2stPmJzKTsKKyAgICBp ZiAocmV0IDwgMCkgeworICAgICAgICBlcnJvcl9zZXRnKGVycnAsICJDYW5u b3QgbWFrZSBhY3RpdmUgZGlzayBlbXB0eSIpOworICAgICAgICByZXR1cm47 CisgICAgfQorCisgICAgcmV0ID0gcy0+aGlkZGVuX2Rpc2stPmJzLT5kcnYt PmJkcnZfbWFrZV9lbXB0eShzLT5oaWRkZW5fZGlzay0+YnMpOworICAgIGlm IChyZXQgPCAwKSB7CisgICAgICAgIGVycm9yX3NldGcoZXJycCwgIkNhbm5v dCBtYWtlIGhpZGRlbiBkaXNrIGVtcHR5Iik7CisgICAgICAgIHJldHVybjsK KyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHJlb3Blbl9iYWNraW5nX2ZpbGUo QkRSVlJlcGxpY2F0aW9uU3RhdGUgKnMsIGJvb2wgd3JpdGFibGUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yICoqZXJycCkKK3sK KyAgICBCbG9ja1Jlb3BlblF1ZXVlICpyZW9wZW5fcXVldWUgPSBOVUxMOwor ICAgIGludCBvcmlnX2hpZGRlbl9mbGFncywgb3JpZ19zZWNvbmRhcnlfZmxh Z3M7CisgICAgaW50IG5ld19oaWRkZW5fZmxhZ3MsIG5ld19zZWNvbmRhcnlf ZmxhZ3M7CisgICAgRXJyb3IgKmxvY2FsX2VyciA9IE5VTEw7CisKKyAgICBp ZiAod3JpdGFibGUpIHsKKyAgICAgICAgb3JpZ19oaWRkZW5fZmxhZ3MgPSBz LT5vcmlnX2hpZGRlbl9mbGFncyA9CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJkcnZfZ2V0X2ZsYWdzKHMtPmhpZGRlbl9kaXNrLT5icyk7 CisgICAgICAgIG5ld19oaWRkZW5fZmxhZ3MgPSAob3JpZ19oaWRkZW5fZmxh Z3MgfCBCRFJWX09fUkRXUikgJgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5CRFJWX09fSU5BQ1RJVkU7 CisgICAgICAgIG9yaWdfc2Vjb25kYXJ5X2ZsYWdzID0gcy0+b3JpZ19zZWNv bmRhcnlfZmxhZ3MgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBiZHJ2X2dldF9mbGFncyhzLT5zZWNvbmRhcnlfZGlzay0+YnMpOworICAg ICAgICBuZXdfc2Vjb25kYXJ5X2ZsYWdzID0gKG9yaWdfc2Vjb25kYXJ5X2Zs YWdzIHwgQkRSVl9PX1JEV1IpICYKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfkJEUlZfT19JTkFDVElW RTsKKyAgICB9IGVsc2UgeworICAgICAgICBvcmlnX2hpZGRlbl9mbGFncyA9 IChzLT5vcmlnX2hpZGRlbl9mbGFncyB8IEJEUlZfT19SRFdSKSAmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfkJEUlZfT19JTkFDVElWRTsKKyAgICAgICAgbmV3X2hpZGRlbl9mbGFn cyA9IHMtPm9yaWdfaGlkZGVuX2ZsYWdzOworICAgICAgICBvcmlnX3NlY29u ZGFyeV9mbGFncyA9IChzLT5vcmlnX3NlY29uZGFyeV9mbGFncyB8IEJEUlZf T19SRFdSKSAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfkJEUlZfT19JTkFDVElWRTsKKyAgICAgICAg bmV3X3NlY29uZGFyeV9mbGFncyA9IHMtPm9yaWdfc2Vjb25kYXJ5X2ZsYWdz OworICAgIH0KKworICAgIGlmIChvcmlnX2hpZGRlbl9mbGFncyAhPSBuZXdf aGlkZGVuX2ZsYWdzKSB7CisgICAgICAgIHJlb3Blbl9xdWV1ZSA9IGJkcnZf cmVvcGVuX3F1ZXVlKHJlb3Blbl9xdWV1ZSwgcy0+aGlkZGVuX2Rpc2stPmJz LCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBuZXdfaGlkZGVuX2ZsYWdzKTsKKyAgICB9CisKKyAgICBpZiAoIShv cmlnX3NlY29uZGFyeV9mbGFncyAmIEJEUlZfT19SRFdSKSkgeworICAgICAg ICByZW9wZW5fcXVldWUgPSBiZHJ2X3Jlb3Blbl9xdWV1ZShyZW9wZW5fcXVl dWUsIHMtPnNlY29uZGFyeV9kaXNrLT5icywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgbmV3X3NlY29uZGFyeV9m bGFncyk7CisgICAgfQorCisgICAgaWYgKHJlb3Blbl9xdWV1ZSkgeworICAg ICAgICBiZHJ2X3Jlb3Blbl9tdWx0aXBsZShyZW9wZW5fcXVldWUsICZsb2Nh bF9lcnIpOworICAgICAgICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgbG9jYWxf ZXJyKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGJhY2t1cF9qb2JfY2xl YW51cChCRFJWUmVwbGljYXRpb25TdGF0ZSAqcykKK3sKKyAgICBCbG9ja0Ry aXZlclN0YXRlICp0b3BfYnM7CisKKyAgICB0b3BfYnMgPSBiZHJ2X2xvb2t1 cF9icyhzLT50b3BfaWQsIHMtPnRvcF9pZCwgTlVMTCk7CisgICAgaWYgKCF0 b3BfYnMpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBiZHJ2X29w X3VuYmxvY2tfYWxsKHRvcF9icywgcy0+YmxvY2tlcik7CisgICAgZXJyb3Jf ZnJlZShzLT5ibG9ja2VyKTsKKyAgICByZW9wZW5fYmFja2luZ19maWxlKHMs IGZhbHNlLCBOVUxMKTsKK30KKworc3RhdGljIHZvaWQgYmFja3VwX2pvYl9j b21wbGV0ZWQodm9pZCAqb3BhcXVlLCBpbnQgcmV0KQoreworICAgIEJEUlZS ZXBsaWNhdGlvblN0YXRlICpzID0gb3BhcXVlOworCisgICAgaWYgKHMtPnJl cGxpY2F0aW9uX3N0YXRlICE9IEJMT0NLX1JFUExJQ0FUSU9OX0ZBSUxPVkVS KSB7CisgICAgICAgIC8qIFRoZSBiYWNrdXAgam9iIGlzIGNhbmNlbGxlZCB1 bmV4cGVjdGVkbHkgKi8KKyAgICAgICAgcy0+ZXJyb3IgPSAtRUlPOworICAg IH0KKworICAgIGJhY2t1cF9qb2JfY2xlYW51cChzKTsKK30KKworc3RhdGlj IGJvb2wgY2hlY2tfdG9wX2JzKEJsb2NrRHJpdmVyU3RhdGUgKnRvcF9icywg QmxvY2tEcml2ZXJTdGF0ZSAqYnMpCit7CisgICAgQmRydkNoaWxkICpjaGls ZDsKKworICAgIC8qIFRoZSBicyBpdHNlbGYgaXMgdGhlIHRvcF9icyAqLwor ICAgIGlmICh0b3BfYnMgPT0gYnMpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7 CisgICAgfQorCisgICAgLyogSXRlcmF0ZSBvdmVyIHRvcF9icydzIGNoaWxk cmVuICovCisgICAgUUxJU1RfRk9SRUFDSChjaGlsZCwgJnRvcF9icy0+Y2hp bGRyZW4sIG5leHQpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5icyA9PSBicyB8 fCBjaGVja190b3BfYnMoY2hpbGQtPmJzLCBicykpIHsKKyAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu IGZhbHNlOworfQorCitzdGF0aWMgdm9pZCByZXBsaWNhdGlvbl9zdGFydChS ZXBsaWNhdGlvblN0YXRlICpycywgUmVwbGljYXRpb25Nb2RlIG1vZGUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvciAqKmVycnApCit7 CisgICAgQmxvY2tEcml2ZXJTdGF0ZSAqYnMgPSBycy0+b3BhcXVlOworICAg IEJEUlZSZXBsaWNhdGlvblN0YXRlICpzOworICAgIEJsb2NrRHJpdmVyU3Rh dGUgKnRvcF9iczsKKyAgICBpbnQ2NF90IGFjdGl2ZV9sZW5ndGgsIGhpZGRl bl9sZW5ndGgsIGRpc2tfbGVuZ3RoOworICAgIEFpb0NvbnRleHQgKmFpb19j b250ZXh0OworICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOworCisgICAg YWlvX2NvbnRleHQgPSBiZHJ2X2dldF9haW9fY29udGV4dChicyk7CisgICAg YWlvX2NvbnRleHRfYWNxdWlyZShhaW9fY29udGV4dCk7CisgICAgcyA9IGJz LT5vcGFxdWU7CisKKyAgICBpZiAocy0+cmVwbGljYXRpb25fc3RhdGUgIT0g QkxPQ0tfUkVQTElDQVRJT05fTk9ORSkgeworICAgICAgICBlcnJvcl9zZXRn KGVycnAsICJCbG9jayByZXBsaWNhdGlvbiBpcyBydW5uaW5nIG9yIGRvbmUi KTsKKyAgICAgICAgYWlvX2NvbnRleHRfcmVsZWFzZShhaW9fY29udGV4dCk7 CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocy0+bW9kZSAh PSBtb2RlKSB7CisgICAgICAgIGVycm9yX3NldGcoZXJycCwgIlRoZSBwYXJh bWV0ZXIgbW9kZSdzIHZhbHVlIGlzIGludmFsaWQsIG5lZWRzICVkLCIKKyAg ICAgICAgICAgICAgICAgICAiIGJ1dCBnb3QgJWQiLCBzLT5tb2RlLCBtb2Rl KTsKKyAgICAgICAgYWlvX2NvbnRleHRfcmVsZWFzZShhaW9fY29udGV4dCk7 CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHMtPm1v ZGUpIHsKKyAgICBjYXNlIFJFUExJQ0FUSU9OX01PREVfUFJJTUFSWToKKyAg ICAgICAgYnJlYWs7CisgICAgY2FzZSBSRVBMSUNBVElPTl9NT0RFX1NFQ09O REFSWToKKyAgICAgICAgcy0+YWN0aXZlX2Rpc2sgPSBicy0+ZmlsZTsKKyAg ICAgICAgaWYgKCFzLT5hY3RpdmVfZGlzayB8fCAhcy0+YWN0aXZlX2Rpc2st PmJzIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAh cy0+YWN0aXZlX2Rpc2stPmJzLT5iYWNraW5nKSB7CisgICAgICAgICAgICBl cnJvcl9zZXRnKGVycnAsICJBY3RpdmUgZGlzayBkb2Vzbid0IGhhdmUgYmFj a2luZyBmaWxlIik7CisgICAgICAgICAgICBhaW9fY29udGV4dF9yZWxlYXNl KGFpb19jb250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg fQorCisgICAgICAgIHMtPmhpZGRlbl9kaXNrID0gcy0+YWN0aXZlX2Rpc2st PmJzLT5iYWNraW5nOworICAgICAgICBpZiAoIXMtPmhpZGRlbl9kaXNrLT5i cyB8fCAhcy0+aGlkZGVuX2Rpc2stPmJzLT5iYWNraW5nKSB7CisgICAgICAg ICAgICBlcnJvcl9zZXRnKGVycnAsICJIaWRkZW4gZGlzayBkb2Vzbid0IGhh dmUgYmFja2luZyBmaWxlIik7CisgICAgICAgICAgICBhaW9fY29udGV4dF9y ZWxlYXNlKGFpb19jb250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg ICAgICAgfQorCisgICAgICAgIHMtPnNlY29uZGFyeV9kaXNrID0gcy0+aGlk ZGVuX2Rpc2stPmJzLT5iYWNraW5nOworICAgICAgICBpZiAoIXMtPnNlY29u ZGFyeV9kaXNrLT5icyB8fCAhYmRydl9oYXNfYmxrKHMtPnNlY29uZGFyeV9k aXNrLT5icykpIHsKKyAgICAgICAgICAgIGVycm9yX3NldGcoZXJycCwgIlRo ZSBzZWNvbmRhcnkgZGlzayBkb2Vzbid0IGhhdmUgYmxvY2sgYmFja2VuZCIp OworICAgICAgICAgICAgYWlvX2NvbnRleHRfcmVsZWFzZShhaW9fY29udGV4 dCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg ICAvKiB2ZXJpZnkgdGhlIGxlbmd0aCAqLworICAgICAgICBhY3RpdmVfbGVu Z3RoID0gYmRydl9nZXRsZW5ndGgocy0+YWN0aXZlX2Rpc2stPmJzKTsKKyAg ICAgICAgaGlkZGVuX2xlbmd0aCA9IGJkcnZfZ2V0bGVuZ3RoKHMtPmhpZGRl bl9kaXNrLT5icyk7CisgICAgICAgIGRpc2tfbGVuZ3RoID0gYmRydl9nZXRs ZW5ndGgocy0+c2Vjb25kYXJ5X2Rpc2stPmJzKTsKKyAgICAgICAgaWYgKGFj dGl2ZV9sZW5ndGggPCAwIHx8IGhpZGRlbl9sZW5ndGggPCAwIHx8IGRpc2tf bGVuZ3RoIDwgMCB8fAorICAgICAgICAgICAgYWN0aXZlX2xlbmd0aCAhPSBo aWRkZW5fbGVuZ3RoIHx8IGhpZGRlbl9sZW5ndGggIT0gZGlza19sZW5ndGgp IHsKKyAgICAgICAgICAgIGVycm9yX3NldGcoZXJycCwgIkFjdGl2ZSBkaXNr LCBoaWRkZW4gZGlzaywgc2Vjb25kYXJ5IGRpc2sncyBsZW5ndGgiCisgICAg ICAgICAgICAgICAgICAgICAgICIgYXJlIG5vdCB0aGUgc2FtZSIpOworICAg ICAgICAgICAgYWlvX2NvbnRleHRfcmVsZWFzZShhaW9fY29udGV4dCk7Cisg ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAo IXMtPmFjdGl2ZV9kaXNrLT5icy0+ZHJ2LT5iZHJ2X21ha2VfZW1wdHkgfHwK KyAgICAgICAgICAgICFzLT5oaWRkZW5fZGlzay0+YnMtPmRydi0+YmRydl9t YWtlX2VtcHR5KSB7CisgICAgICAgICAgICBlcnJvcl9zZXRnKGVycnAsCisg ICAgICAgICAgICAgICAgICAgICAgICJBY3RpdmUgZGlzayBvciBoaWRkZW4g ZGlzayBkb2Vzbid0IHN1cHBvcnQgbWFrZV9lbXB0eSIpOworICAgICAgICAg ICAgYWlvX2NvbnRleHRfcmVsZWFzZShhaW9fY29udGV4dCk7CisgICAgICAg ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvKiByZW9wZW4g dGhlIGJhY2tpbmcgZmlsZSBpbiByL3cgbW9kZSAqLworICAgICAgICByZW9w ZW5fYmFja2luZ19maWxlKHMsIHRydWUsICZsb2NhbF9lcnIpOworICAgICAg ICBpZiAobG9jYWxfZXJyKSB7CisgICAgICAgICAgICBlcnJvcl9wcm9wYWdh dGUoZXJycCwgbG9jYWxfZXJyKTsKKyAgICAgICAgICAgIGFpb19jb250ZXh0 X3JlbGVhc2UoYWlvX2NvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuOwor ICAgICAgICB9CisKKyAgICAgICAgLyogc3RhcnQgYmFja3VwIGpvYiBub3cg Ki8KKyAgICAgICAgZXJyb3Jfc2V0Zygmcy0+YmxvY2tlciwKKyAgICAgICAg ICAgICAgICAgICAiQmxvY2sgZGV2aWNlIGlzIGluIHVzZSBieSBpbnRlcm5h bCBiYWNrdXAgam9iIik7CisKKyAgICAgICAgdG9wX2JzID0gYmRydl9sb29r dXBfYnMocy0+dG9wX2lkLCBzLT50b3BfaWQsIGVycnApOworICAgICAgICBp ZiAoIXRvcF9icyB8fCAhY2hlY2tfdG9wX2JzKHRvcF9icywgYnMpKSB7Cisg ICAgICAgICAgICBlcnJvcl9zZXRnKGVycnAsICJObyB0b3BfYnMgb3IgaXQg aXMgaW52YWxpZCIpOworICAgICAgICAgICAgcmVvcGVuX2JhY2tpbmdfZmls ZShzLCBmYWxzZSwgTlVMTCk7CisgICAgICAgICAgICBhaW9fY29udGV4dF9y ZWxlYXNlKGFpb19jb250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg ICAgICAgfQorICAgICAgICBiZHJ2X29wX2Jsb2NrX2FsbCh0b3BfYnMsIHMt PmJsb2NrZXIpOworICAgICAgICBiZHJ2X29wX3VuYmxvY2sodG9wX2JzLCBC TE9DS19PUF9UWVBFX0RBVEFQTEFORSwgcy0+YmxvY2tlcik7CisKKyAgICAg ICAgYmFja3VwX3N0YXJ0KCJiYWNrdXAtc3RhcnQtY29tbWl0Iiwgcy0+c2Vj b25kYXJ5X2Rpc2stPmJzLAorICAgICAgICAgICAgICAgICAgICAgICAgcy0+ aGlkZGVuX2Rpc2stPmJzLCAwLCBNSVJST1JfU1lOQ19NT0RFX05PTkUsIE5V TEwsCisgICAgICAgICAgICAgICAgICAgICAgICBCTE9DS0RFVl9PTl9FUlJP Ul9SRVBPUlQsIEJMT0NLREVWX09OX0VSUk9SX1JFUE9SVCwKKyAgICAgICAg ICAgICAgICAgICAgICAgIGJhY2t1cF9qb2JfY29tcGxldGVkLCBzLCBOVUxM LCAmbG9jYWxfZXJyKTsKKyAgICAgICAgaWYgKGxvY2FsX2VycikgeworICAg ICAgICAgICAgZXJyb3JfcHJvcGFnYXRlKGVycnAsIGxvY2FsX2Vycik7Cisg ICAgICAgICAgICBiYWNrdXBfam9iX2NsZWFudXAocyk7CisgICAgICAgICAg ICBhaW9fY29udGV4dF9yZWxlYXNlKGFpb19jb250ZXh0KTsKKyAgICAgICAg ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBk ZWZhdWx0OgorICAgICAgICBhaW9fY29udGV4dF9yZWxlYXNlKGFpb19jb250 ZXh0KTsKKyAgICAgICAgYWJvcnQoKTsKKyAgICB9CisKKyAgICBzLT5yZXBs aWNhdGlvbl9zdGF0ZSA9IEJMT0NLX1JFUExJQ0FUSU9OX1JVTk5JTkc7CisK KyAgICBpZiAocy0+bW9kZSA9PSBSRVBMSUNBVElPTl9NT0RFX1NFQ09OREFS WSkgeworICAgICAgICBzZWNvbmRhcnlfZG9fY2hlY2twb2ludChzLCBlcnJw KTsKKyAgICB9CisKKyAgICBzLT5lcnJvciA9IDA7CisgICAgYWlvX2NvbnRl eHRfcmVsZWFzZShhaW9fY29udGV4dCk7Cit9CisKK3N0YXRpYyB2b2lkIHJl cGxpY2F0aW9uX2RvX2NoZWNrcG9pbnQoUmVwbGljYXRpb25TdGF0ZSAqcnMs IEVycm9yICoqZXJycCkKK3sKKyAgICBCbG9ja0RyaXZlclN0YXRlICpicyA9 IHJzLT5vcGFxdWU7CisgICAgQkRSVlJlcGxpY2F0aW9uU3RhdGUgKnM7Cisg ICAgQWlvQ29udGV4dCAqYWlvX2NvbnRleHQ7CisKKyAgICBhaW9fY29udGV4 dCA9IGJkcnZfZ2V0X2Fpb19jb250ZXh0KGJzKTsKKyAgICBhaW9fY29udGV4 dF9hY3F1aXJlKGFpb19jb250ZXh0KTsKKyAgICBzID0gYnMtPm9wYXF1ZTsK KworICAgIGlmIChzLT5tb2RlID09IFJFUExJQ0FUSU9OX01PREVfU0VDT05E QVJZKSB7CisgICAgICAgIHNlY29uZGFyeV9kb19jaGVja3BvaW50KHMsIGVy cnApOworICAgIH0KKyAgICBhaW9fY29udGV4dF9yZWxlYXNlKGFpb19jb250 ZXh0KTsKK30KKworc3RhdGljIHZvaWQgcmVwbGljYXRpb25fZ2V0X2Vycm9y KFJlcGxpY2F0aW9uU3RhdGUgKnJzLCBFcnJvciAqKmVycnApCit7CisgICAg QmxvY2tEcml2ZXJTdGF0ZSAqYnMgPSBycy0+b3BhcXVlOworICAgIEJEUlZS ZXBsaWNhdGlvblN0YXRlICpzOworICAgIEFpb0NvbnRleHQgKmFpb19jb250 ZXh0OworCisgICAgYWlvX2NvbnRleHQgPSBiZHJ2X2dldF9haW9fY29udGV4 dChicyk7CisgICAgYWlvX2NvbnRleHRfYWNxdWlyZShhaW9fY29udGV4dCk7 CisgICAgcyA9IGJzLT5vcGFxdWU7CisKKyAgICBpZiAocy0+cmVwbGljYXRp b25fc3RhdGUgIT0gQkxPQ0tfUkVQTElDQVRJT05fUlVOTklORykgeworICAg ICAgICBlcnJvcl9zZXRnKGVycnAsICJCbG9jayByZXBsaWNhdGlvbiBpcyBu b3QgcnVubmluZyIpOworICAgICAgICBhaW9fY29udGV4dF9yZWxlYXNlKGFp b19jb250ZXh0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm IChzLT5lcnJvcikgeworICAgICAgICBlcnJvcl9zZXRnKGVycnAsICJJL08g ZXJyb3Igb2NjdXJyZWQiKTsKKyAgICAgICAgYWlvX2NvbnRleHRfcmVsZWFz ZShhaW9fY29udGV4dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg YWlvX2NvbnRleHRfcmVsZWFzZShhaW9fY29udGV4dCk7Cit9CisKK3N0YXRp YyB2b2lkIHJlcGxpY2F0aW9uX2RvbmUodm9pZCAqb3BhcXVlLCBpbnQgcmV0 KQoreworICAgIEJsb2NrRHJpdmVyU3RhdGUgKmJzID0gb3BhcXVlOworICAg IEJEUlZSZXBsaWNhdGlvblN0YXRlICpzID0gYnMtPm9wYXF1ZTsKKworICAg IGlmIChyZXQgPT0gMCkgeworICAgICAgICBzLT5yZXBsaWNhdGlvbl9zdGF0 ZSA9IEJMT0NLX1JFUExJQ0FUSU9OX0RPTkU7CisKKyAgICAgICAgLyogcmVm cmVzaCB0b3AgYnMncyBmaWxlbmFtZSAqLworICAgICAgICBiZHJ2X3JlZnJl c2hfZmlsZW5hbWUoYnMpOworICAgICAgICBzLT5hY3RpdmVfZGlzayA9IE5V TEw7CisgICAgICAgIHMtPnNlY29uZGFyeV9kaXNrID0gTlVMTDsKKyAgICAg ICAgcy0+aGlkZGVuX2Rpc2sgPSBOVUxMOworICAgICAgICBzLT5lcnJvciA9 IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcy0+cmVwbGljYXRpb25fc3Rh dGUgPSBCTE9DS19SRVBMSUNBVElPTl9GQUlMT1ZFUl9GQUlMRUQ7CisgICAg ICAgIHMtPmVycm9yID0gLUVJTzsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk IHJlcGxpY2F0aW9uX3N0b3AoUmVwbGljYXRpb25TdGF0ZSAqcnMsIGJvb2wg ZmFpbG92ZXIsIEVycm9yICoqZXJycCkKK3sKKyAgICBCbG9ja0RyaXZlclN0 YXRlICpicyA9IHJzLT5vcGFxdWU7CisgICAgQkRSVlJlcGxpY2F0aW9uU3Rh dGUgKnM7CisgICAgQWlvQ29udGV4dCAqYWlvX2NvbnRleHQ7CisKKyAgICBh aW9fY29udGV4dCA9IGJkcnZfZ2V0X2Fpb19jb250ZXh0KGJzKTsKKyAgICBh aW9fY29udGV4dF9hY3F1aXJlKGFpb19jb250ZXh0KTsKKyAgICBzID0gYnMt Pm9wYXF1ZTsKKworICAgIGlmIChzLT5yZXBsaWNhdGlvbl9zdGF0ZSAhPSBC TE9DS19SRVBMSUNBVElPTl9SVU5OSU5HKSB7CisgICAgICAgIGVycm9yX3Nl dGcoZXJycCwgIkJsb2NrIHJlcGxpY2F0aW9uIGlzIG5vdCBydW5uaW5nIik7 CisgICAgICAgIGFpb19jb250ZXh0X3JlbGVhc2UoYWlvX2NvbnRleHQpOwor ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3dpdGNoIChzLT5tb2Rl KSB7CisgICAgY2FzZSBSRVBMSUNBVElPTl9NT0RFX1BSSU1BUlk6CisgICAg ICAgIHMtPnJlcGxpY2F0aW9uX3N0YXRlID0gQkxPQ0tfUkVQTElDQVRJT05f RE9ORTsKKyAgICAgICAgcy0+ZXJyb3IgPSAwOworICAgICAgICBicmVhazsK KyAgICBjYXNlIFJFUExJQ0FUSU9OX01PREVfU0VDT05EQVJZOgorICAgICAg ICAvKgorICAgICAgICAgKiBUaGlzIEJEUyB3aWxsIGJlIGNsb3NlZCwgYW5k IHRoZSBqb2Igc2hvdWxkIGJlIGNvbXBsZXRlZAorICAgICAgICAgKiBiZWZv cmUgdGhlIEJEUyBpcyBjbG9zZWQsIGJlY2F1c2Ugd2Ugd2lsbCBhY2Nlc3Mg aGlkZGVuCisgICAgICAgICAqIGRpc2ssIHNlY29uZGFyeSBkaXNrIGluIGJh Y2t1cF9qb2JfY29tcGxldGVkKCkuCisgICAgICAgICAqLworICAgICAgICBp ZiAocy0+c2Vjb25kYXJ5X2Rpc2stPmJzLT5qb2IpIHsKKyAgICAgICAgICAg IGJsb2NrX2pvYl9jYW5jZWxfc3luYyhzLT5zZWNvbmRhcnlfZGlzay0+YnMt PmpvYik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWZhaWxvdmVyKSB7 CisgICAgICAgICAgICBzZWNvbmRhcnlfZG9fY2hlY2twb2ludChzLCBlcnJw KTsKKyAgICAgICAgICAgIHMtPnJlcGxpY2F0aW9uX3N0YXRlID0gQkxPQ0tf UkVQTElDQVRJT05fRE9ORTsKKyAgICAgICAgICAgIGFpb19jb250ZXh0X3Jl bGVhc2UoYWlvX2NvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuOworICAg ICAgICB9CisKKyAgICAgICAgcy0+cmVwbGljYXRpb25fc3RhdGUgPSBCTE9D S19SRVBMSUNBVElPTl9GQUlMT1ZFUjsKKyAgICAgICAgY29tbWl0X2FjdGl2 ZV9zdGFydCgicmVwbGljYXRpb24tY29tbWl0Iiwgcy0+YWN0aXZlX2Rpc2st PmJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnNlY29uZGFy eV9kaXNrLT5icywgMCwgQkxPQ0tERVZfT05fRVJST1JfUkVQT1JULAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxpY2F0aW9uX2RvbmUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnMsIGVycnAsIHRydWUpOwor ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhaW9fY29u dGV4dF9yZWxlYXNlKGFpb19jb250ZXh0KTsKKyAgICAgICAgYWJvcnQoKTsK KyAgICB9CisgICAgYWlvX2NvbnRleHRfcmVsZWFzZShhaW9fY29udGV4dCk7 Cit9CisKK0Jsb2NrRHJpdmVyIGJkcnZfcmVwbGljYXRpb24gPSB7CisgICAg LmZvcm1hdF9uYW1lICAgICAgICAgICAgICAgID0gInJlcGxpY2F0aW9uIiwK KyAgICAucHJvdG9jb2xfbmFtZSAgICAgICAgICAgICAgPSAicmVwbGljYXRp b24iLAorICAgIC5pbnN0YW5jZV9zaXplICAgICAgICAgICAgICA9IHNpemVv ZihCRFJWUmVwbGljYXRpb25TdGF0ZSksCisKKyAgICAuYmRydl9vcGVuICAg ICAgICAgICAgICAgICAgPSByZXBsaWNhdGlvbl9vcGVuLAorICAgIC5iZHJ2 X2Nsb3NlICAgICAgICAgICAgICAgICA9IHJlcGxpY2F0aW9uX2Nsb3NlLAor CisgICAgLmJkcnZfZ2V0bGVuZ3RoICAgICAgICAgICAgID0gcmVwbGljYXRp b25fZ2V0bGVuZ3RoLAorICAgIC5iZHJ2X2NvX3JlYWR2ICAgICAgICAgICAg ICA9IHJlcGxpY2F0aW9uX2NvX3JlYWR2LAorICAgIC5iZHJ2X2NvX3dyaXRl diAgICAgICAgICAgICA9IHJlcGxpY2F0aW9uX2NvX3dyaXRldiwKKworICAg IC5pc19maWx0ZXIgICAgICAgICAgICAgICAgICA9IHRydWUsCisgICAgLmJk cnZfcmVjdXJzZV9pc19maXJzdF9ub25fZmlsdGVyID0gcmVwbGljYXRpb25f cmVjdXJzZV9pc19maXJzdF9ub25fZmlsdGVyLAorCisgICAgLmhhc192YXJp YWJsZV9sZW5ndGggICAgICAgID0gdHJ1ZSwKK307CisKK3N0YXRpYyB2b2lk IGJkcnZfcmVwbGljYXRpb25faW5pdCh2b2lkKQoreworICAgIGJkcnZfcmVn aXN0ZXIoJmJkcnZfcmVwbGljYXRpb24pOworfQorCitibG9ja19pbml0KGJk cnZfcmVwbGljYXRpb25faW5pdCk7Ci0tIAoxLjkuMwoKAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAABvdXRnb2luZ192MjIvMDAwOS10ZXN0cy1hZGQtdW5pdC10ZXN0 LWNhc2UtZm9yLXJlcGxpY2F0aW9uLnBhdGNoAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwMDAwADAwMDAwMDAAMDAw MDAwNDI1NzMAMTI3NDM3NzE0NDQAMDIzMzY1ACAwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFy ICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByb290AAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZyb20gNzU0ZDI3MDQ4ZmQ3MTgy OWNhZWNjZGVhODY1YWMzMTQ2MjIwMjU1MSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogQ2hhbmdsb25nIFhpZSA8eGllY2wuZm5zdEBjbi5mdWpp dHN1LmNvbT4KRGF0ZTogV2VkLCAyMCBKdWwgMjAxNiAxNzo0ODoyMiAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggdjIyIDA5LzEwXSB0ZXN0czogYWRkIHVuaXQg dGVzdCBjYXNlIGZvciByZXBsaWNhdGlvbgoKU2lnbmVkLW9mZi1ieTogV2Vu IENvbmd5YW5nIDx3ZW5jeUBjbi5mdWppdHN1LmNvbT4KU2lnbmVkLW9mZi1i eTogQ2hhbmdsb25nIFhpZSA8eGllY2wuZm5zdEBjbi5mdWppdHN1LmNvbT4K U2lnbmVkLW9mZi1ieTogV2FuZyBXZWlXZWkgPHdhbmd3dy5mbnN0QGNuLmZ1 aml0c3UuY29tPgotLS0KIHRlc3RzLy5naXRpZ25vcmUgICAgICAgICB8ICAg MSArCiB0ZXN0cy9NYWtlZmlsZS5pbmNsdWRlICAgfCAgIDQgKwogdGVzdHMv dGVzdC1yZXBsaWNhdGlvbi5jIHwgNTgxICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQs IDU4NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMv dGVzdC1yZXBsaWNhdGlvbi5jCgpkaWZmIC0tZ2l0IGEvdGVzdHMvLmdpdGln bm9yZSBiL3Rlc3RzLy5naXRpZ25vcmUKaW5kZXggZGJiNTI2My4uYjRhOWNm YyAxMDA2NDQKLS0tIGEvdGVzdHMvLmdpdGlnbm9yZQorKysgYi90ZXN0cy8u Z2l0aWdub3JlCkBAIC02Myw2ICs2Myw3IEBAIHRlc3QtcW1wLWludHJvc3Bl Y3QuW2NoXQogdGVzdC1xbXAtbWFyc2hhbC5jCiB0ZXN0LXFtcC1vdXRwdXQt dmlzaXRvcgogdGVzdC1yY3UtbGlzdAordGVzdC1yZXBsaWNhdGlvbgogdGVz dC1yZmlmb2xvY2sKIHRlc3Qtc3RyaW5nLWlucHV0LXZpc2l0b3IKIHRlc3Qt c3RyaW5nLW91dHB1dC12aXNpdG9yCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtl ZmlsZS5pbmNsdWRlIGIvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQppbmRleCAy MDEwYjExLi5jYjhhZjEyIDEwMDY0NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5p bmNsdWRlCisrKyBiL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKQEAgLTExMSw2 ICsxMTEsNyBAQCBjaGVjay11bml0LXkgKz0gdGVzdHMvdGVzdC1jcnlwdG8t eHRzJChFWEVTVUYpCiBjaGVjay11bml0LXkgKz0gdGVzdHMvdGVzdC1jcnlw dG8tYmxvY2skKEVYRVNVRikKIGdjb3YtZmlsZXMtdGVzdC1sb2dnaW5nLXkg PSB0ZXN0cy90ZXN0LWxvZ2dpbmcuYwogY2hlY2stdW5pdC15ICs9IHRlc3Rz L3Rlc3QtbG9nZ2luZyQoRVhFU1VGKQorY2hlY2stdW5pdC15ICs9IHRlc3Rz L3Rlc3QtcmVwbGljYXRpb24kKEVYRVNVRikKIAogY2hlY2stYmxvY2stJChD T05GSUdfUE9TSVgpICs9IHRlc3RzL3FlbXUtaW90ZXN0cy1xdWljay5zaAog CkBAIC00NzIsNiArNDczLDkgQEAgdGVzdHMvdGVzdC1iYXNlNjQkKEVYRVNV Rik6IHRlc3RzL3Rlc3QtYmFzZTY0Lm8gXAogCiB0ZXN0cy90ZXN0LWxvZ2dp bmckKEVYRVNVRik6IHRlc3RzL3Rlc3QtbG9nZ2luZy5vICQodGVzdC11dGls LW9iai15KQogCit0ZXN0cy90ZXN0LXJlcGxpY2F0aW9uJChFWEVTVUYpOiB0 ZXN0cy90ZXN0LXJlcGxpY2F0aW9uLm8gJCh0ZXN0LXV0aWwtb2JqLXkpIFwK KwkkKHRlc3QtYmxvY2stb2JqLXkpCisKIHRlc3RzL3Rlc3QtcWFwaS10eXBl cy5jIHRlc3RzL3Rlc3QtcWFwaS10eXBlcy5oIDpcCiAkKFNSQ19QQVRIKS90 ZXN0cy9xYXBpLXNjaGVtYS9xYXBpLXNjaGVtYS10ZXN0Lmpzb24gJChTUkNf UEFUSCkvc2NyaXB0cy9xYXBpLXR5cGVzLnB5ICQocWFwaS1weSkKIAkkKGNh bGwgcXVpZXQtY29tbWFuZCwkKFBZVEhPTikgJChTUkNfUEFUSCkvc2NyaXB0 cy9xYXBpLXR5cGVzLnB5IFwKZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3QtcmVw bGljYXRpb24uYyBiL3Rlc3RzL3Rlc3QtcmVwbGljYXRpb24uYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDQ4NGU2Ci0tLSAvZGV2 L251bGwKKysrIGIvdGVzdHMvdGVzdC1yZXBsaWNhdGlvbi5jCkBAIC0wLDAg KzEsNTgxIEBACisvKgorICogQmxvY2sgcmVwbGljYXRpb24gdGVzdHMKKyAq CisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgRlVKSVRTVSBMSU1JVEVECisgKiBB dXRob3I6IENoYW5nbG9uZyBYaWUgPHhpZWNsLmZuc3RAY24uZnVqaXRzdS5j b20+CisgKgorICogVGhpcyB3b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdQTCwgdmVyc2lvbiAyIG9yCisgKiBsYXRlci4g IFNlZSB0aGUgQ09QWUlORyBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0 b3J5LgorICovCisKKyNpbmNsdWRlICJxZW11L29zZGVwLmgiCisKKyNpbmNs dWRlICJxYXBpL2Vycm9yLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24uaCIK KyNpbmNsdWRlICJibG9jay9ibG9ja19pbnQuaCIKKyNpbmNsdWRlICJzeXNl bXUvYmxvY2stYmFja2VuZC5oIgorCisjZGVmaW5lIElNR19TSVpFICg2NCAq IDEwMjQgKiAxMDI0KQorCisvKiBwcmltYXJ5ICovCitzdGF0aWMgY2hhciBw X2xvY2FsX2Rpc2tbXSA9ICIvdG1wL3BfbG9jYWxfZGlzay5YWFhYWFgiOwor CisvKiBzZWNvbmRhcnkgKi8KKyNkZWZpbmUgU19JRCAic2Vjb25kYXJ5LWlk IgorI2RlZmluZSBTX0xPQ0FMX0RJU0tfSUQgInNlY29uZGFyeS1sb2NhbC1k aXNrLWlkIgorc3RhdGljIGNoYXIgc19sb2NhbF9kaXNrW10gPSAiL3RtcC9z X2xvY2FsX2Rpc2suWFhYWFhYIjsKK3N0YXRpYyBjaGFyIHNfYWN0aXZlX2Rp c2tbXSA9ICIvdG1wL3NfYWN0aXZlX2Rpc2suWFhYWFhYIjsKK3N0YXRpYyBj aGFyIHNfaGlkZGVuX2Rpc2tbXSA9ICIvdG1wL3NfaGlkZGVuX2Rpc2suWFhY WFhYIjsKKworI2RlZmluZSBQX0lEICJwcmltYXJ5LWlkIgorCisvKiBGSVhN RTogc3RlYWwgZnJvbSBibG9ja2Rldi5jICovCitRZW11T3B0c0xpc3QgcWVt dV9kcml2ZV9vcHRzID0geworICAgIC5uYW1lID0gImRyaXZlIiwKKyAgICAu aGVhZCA9IFFUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKHFlbXVfZHJpdmVfb3B0 cy5oZWFkKSwKKyAgICAuZGVzYyA9IHsKKyAgICAgICAgeyAvKiBlbmQgb2Yg bGlzdCAqLyB9CisgICAgfSwKK307CisKKyNkZWZpbmUgTk9UX0RPTkUgMHg3 ZmZmZmZmZgorc3RhdGljIHZvaWQgYmxrX3J3X2RvbmUodm9pZCAqb3BhcXVl LCBpbnQgcmV0KQoreworICAgICooaW50ICopb3BhcXVlID0gcmV0OworfQor CitzdGF0aWMgdm9pZCAgdGVzdF9ibGtfd3JpdGUoQmxvY2tCYWNrZW5kICpi bGssIGxvbmcgcGF0dGVybiwgaW50NjRfdCBvZmZzZXQsCisgICAgICAgICAg ICAgICAgICAgICBpbnQ2NF90IGNvdW50LCBib29sIGV4cGVjdF9mYWlsZWQp Cit7CisgICAgdm9pZCAqcGF0dGVybl9idWYgPSBOVUxMOworICAgIFFFTVVJ T1ZlY3RvciBxaW92OworICAgIGludCBhc3luY19yZXQgPSBOT1RfRE9ORTsK KworICAgIHBhdHRlcm5fYnVmID0gZ19tYWxsb2MoY291bnQpOworICAgIGlm IChwYXR0ZXJuKSB7CisgICAgICAgIG1lbXNldChwYXR0ZXJuX2J1ZiwgcGF0 dGVybiwgY291bnQpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1lbXNldChw YXR0ZXJuX2J1ZiwgMHgwMCwgY291bnQpOworICAgIH0KKworICAgIHFlbXVf aW92ZWNfaW5pdCgmcWlvdiwgMSk7CisgICAgcWVtdV9pb3ZlY19hZGQoJnFp b3YsIHBhdHRlcm5fYnVmLCBjb3VudCk7CisKKyAgICBibGtfYWlvX3B3cml0 ZXYoYmxrLCBvZmZzZXQsICZxaW92LCAwLCBibGtfcndfZG9uZSwgJmFzeW5j X3JldCk7CisgICAgd2hpbGUgKGFzeW5jX3JldCA9PSBOT1RfRE9ORSkgewor ICAgICAgICBtYWluX2xvb3Bfd2FpdChmYWxzZSk7CisgICAgfQorCisgICAg IGlmIChleHBlY3RfZmFpbGVkKSB7CisgICAgICAgIGdfYXNzZXJ0KGFzeW5j X3JldCAhPSAwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBnX2Fzc2VydChh c3luY19yZXQgID09IDApOworICAgIH0KKworICAgIGdfZnJlZShwYXR0ZXJu X2J1Zik7Cit9CisKK3N0YXRpYyB2b2lkICB0ZXN0X2Jsa19yZWFkKEJsb2Nr QmFja2VuZCAqYmxrLCBsb25nIHBhdHRlcm4sCisgICAgICAgICAgICAgICAg ICAgIGludDY0X3QgcGF0dGVybl9vZmZzZXQsIGludDY0X3QgcGF0dGVybl9j b3VudCwKKyAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBvZmZzZXQsIGlu dDY0X3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgIGJvb2wgZXhwZWN0 X2ZhaWxlZCkKK3sKKyAgICB2b2lkICpwYXR0ZXJuX2J1ZiA9IE5VTEw7Cisg ICAgUUVNVUlPVmVjdG9yIHFpb3Y7CisgICAgdm9pZCAqY21wX2J1ZiA9IE5V TEw7CisgICAgaW50IGFzeW5jX3JldCA9IE5PVF9ET05FOworCisgICAgaWYg KHBhdHRlcm4pIHsKKyAgICAgICAgY21wX2J1ZiA9IGdfbWFsbG9jKHBhdHRl cm5fY291bnQpOworICAgICAgICBtZW1zZXQoY21wX2J1ZiwgcGF0dGVybiwg cGF0dGVybl9jb3VudCk7CisgICAgfQorCisgICAgcGF0dGVybl9idWYgPSBn X21hbGxvYyhjb3VudCk7CisgICAgaWYgKHBhdHRlcm4pIHsKKyAgICAgICAg bWVtc2V0KHBhdHRlcm5fYnVmLCBwYXR0ZXJuLCBjb3VudCk7CisgICAgfSBl bHNlIHsKKyAgICAgICAgbWVtc2V0KHBhdHRlcm5fYnVmLCAweDAwLCBjb3Vu dCk7CisgICAgfQorCisgICAgcWVtdV9pb3ZlY19pbml0KCZxaW92LCAxKTsK KyAgICBxZW11X2lvdmVjX2FkZCgmcWlvdiwgcGF0dGVybl9idWYsIGNvdW50 KTsKKworICAgIGJsa19haW9fcHJlYWR2KGJsaywgb2Zmc2V0LCAmcWlvdiwg MCwgYmxrX3J3X2RvbmUsICZhc3luY19yZXQpOworICAgIHdoaWxlIChhc3lu Y19yZXQgPT0gTk9UX0RPTkUpIHsKKyAgICAgICAgbWFpbl9sb29wX3dhaXQo ZmFsc2UpOworICAgIH0KKworICAgIGlmICAoZXhwZWN0X2ZhaWxlZCkgewor ICAgICAgICBnX2Fzc2VydChhc3luY19yZXQgIT0gMCk7CisgICAgfSBlbHNl IHsKKyAgICAgICAgZ19hc3NlcnQoYXN5bmNfcmV0ID09IDApOworICAgICAg ICBpZiAocGF0dGVybikgeworICAgICAgICAgICAgICAgIGdfYXNzZXJ0KG1l bWNtcChwYXR0ZXJuX2J1ZiArIHBhdHRlcm5fb2Zmc2V0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21wX2J1 ZiwgcGF0dGVybl9jb3VudCkgPD0gMCk7CisgICAgICAgIH0KKyAgICB9CisK KyAgICBnX2ZyZWUocGF0dGVybl9idWYpOworfQorCisvKgorICogQ3JlYXRl IGEgdW5pcXVlbHktbmFtZWQgZW1wdHkgdGVtcG9yYXJ5IGZpbGUuCisgKi8K K3N0YXRpYyB2b2lkIG1ha2VfdGVtcChjaGFyICp0ZW1wbGF0ZSkKK3sKKyAg ICBpbnQgZmQ7CisKKyAgICBmZCA9IG1rc3RlbXAodGVtcGxhdGUpOworICAg IGdfYXNzZXJ0KGZkID49IDApOworICAgIGNsb3NlKGZkKTsKK30KKworc3Rh dGljIHZvaWQgcHJlcGFyZV9pbWdzKHZvaWQpCit7CisgICAgRXJyb3IgKmxv Y2FsX2VyciA9IE5VTEw7CisKKyAgICBtYWtlX3RlbXAocF9sb2NhbF9kaXNr KTsKKyAgICBtYWtlX3RlbXAoc19sb2NhbF9kaXNrKTsKKyAgICBtYWtlX3Rl bXAoc19hY3RpdmVfZGlzayk7CisgICAgbWFrZV90ZW1wKHNfaGlkZGVuX2Rp c2spOworCisgICAgLyogUHJpbWFyeSAqLworICAgIGJkcnZfaW1nX2NyZWF0 ZShwX2xvY2FsX2Rpc2ssICJxY293MiIsIE5VTEwsIE5VTEwsIE5VTEwsIElN R19TSVpFLAorICAgICAgICAgICAgICAgICAgICBCRFJWX09fUkRXUiwgJmxv Y2FsX2VyciwgdHJ1ZSk7CisgICAgZ19hc3NlcnQoIWxvY2FsX2Vycik7CisK KyAgICAvKiBTZWNvbmRhcnkgKi8KKyAgICBiZHJ2X2ltZ19jcmVhdGUoc19s b2NhbF9kaXNrLCAicWNvdzIiLCBOVUxMLCBOVUxMLCBOVUxMLCBJTUdfU0la RSwKKyAgICAgICAgICAgICAgICAgICAgQkRSVl9PX1JEV1IsICZsb2NhbF9l cnIsIHRydWUpOworICAgIGdfYXNzZXJ0KCFsb2NhbF9lcnIpOworICAgIGJk cnZfaW1nX2NyZWF0ZShzX2FjdGl2ZV9kaXNrLCAicWNvdzIiLCBOVUxMLCBO VUxMLCBOVUxMLCBJTUdfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgQkRS Vl9PX1JEV1IsICZsb2NhbF9lcnIsIHRydWUpOworICAgIGdfYXNzZXJ0KCFs b2NhbF9lcnIpOworICAgIGJkcnZfaW1nX2NyZWF0ZShzX2hpZGRlbl9kaXNr LCAicWNvdzIiLCBOVUxMLCBOVUxMLCBOVUxMLCBJTUdfU0laRSwKKyAgICAg ICAgICAgICAgICAgICAgQkRSVl9PX1JEV1IsICZsb2NhbF9lcnIsIHRydWUp OworICAgIGdfYXNzZXJ0KCFsb2NhbF9lcnIpOworfQorCitzdGF0aWMgdm9p ZCBjbGVhbnVwX2ltZ3Modm9pZCkKK3sKKyAgICAvKiBQcmltYXJ5ICovCisg ICAgdW5saW5rKHBfbG9jYWxfZGlzayk7CisKKyAgICAvKiBTZWNvbmRhcnkg Ki8KKyAgICB1bmxpbmsoc19sb2NhbF9kaXNrKTsKKyAgICB1bmxpbmsoc19h Y3RpdmVfZGlzayk7CisgICAgdW5saW5rKHNfaGlkZGVuX2Rpc2spOworfQor CitzdGF0aWMgQmxvY2tCYWNrZW5kICpzdGFydF9wcmltYXJ5KHZvaWQpCit7 CisgICAgQmxvY2tCYWNrZW5kICpibGs7CisgICAgUWVtdU9wdHMgKm9wdHM7 CisgICAgUURpY3QgKnFkaWN0OworICAgIEVycm9yICpsb2NhbF9lcnIgPSBO VUxMOworICAgIGNoYXIgKmNtZGxpbmU7CisKKyAgICBjbWRsaW5lID0gZ19z dHJkdXBfcHJpbnRmKCJkcml2ZXI9cmVwbGljYXRpb24sbW9kZT1wcmltYXJ5 LG5vZGUtbmFtZT14eHgsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImZpbGUuZHJpdmVyPXFjb3cyLGZpbGUuZmlsZS5maWxlbmFtZT0lcyIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcF9sb2NhbF9kaXNr KTsKKyAgICBvcHRzID0gcWVtdV9vcHRzX3BhcnNlX25vaXNpbHkoJnFlbXVf ZHJpdmVfb3B0cywgY21kbGluZSwgZmFsc2UpOworICAgIGdfZnJlZShjbWRs aW5lKTsKKworICAgIHFkaWN0ID0gcWVtdV9vcHRzX3RvX3FkaWN0KG9wdHMs IE5VTEwpOworICAgIHFkaWN0X3NldF9kZWZhdWx0X3N0cihxZGljdCwgQkRS Vl9PUFRfQ0FDSEVfRElSRUNULCAib2ZmIik7CisgICAgcWRpY3Rfc2V0X2Rl ZmF1bHRfc3RyKHFkaWN0LCBCRFJWX09QVF9DQUNIRV9OT19GTFVTSCwgIm9m ZiIpOworCisgICAgYmxrID0gYmxrX25ld19vcGVuKE5VTEwsIE5VTEwsIHFk aWN0LCBCRFJWX09fUkRXUiwgJmxvY2FsX2Vycik7CisgICAgZ19hc3NlcnQo YmxrKTsKKyAgICBnX2Fzc2VydCghbG9jYWxfZXJyKTsKKworICAgIG1vbml0 b3JfYWRkX2JsayhibGssIFBfSUQsICZsb2NhbF9lcnIpOworICAgIGdfYXNz ZXJ0KCFsb2NhbF9lcnIpOworCisgICAgcWVtdV9vcHRzX2RlbChvcHRzKTsK KworICAgIHJldHVybiBibGs7Cit9CisKK3N0YXRpYyB2b2lkIHRlYXJkb3du X3ByaW1hcnkodm9pZCkKK3sKKyAgICBCbG9ja0JhY2tlbmQgKmJsazsKKyAg ICAvKiByZW1vdmUgUF9JRCAqLworICAgIGJsayA9IGJsa19ieV9uYW1lKFBf SUQpOworICAgIGFzc2VydChibGspOworCisgICAgbW9uaXRvcl9yZW1vdmVf YmxrKGJsayk7CisgICAgYmxrX3VucmVmKGJsayk7Cit9CisKK3N0YXRpYyB2 b2lkIHRlc3RfcHJpbWFyeV9yZWFkKHZvaWQpCit7CisgICAgIEJsb2NrQmFj a2VuZCAqYmxrOworCisgICAgYmxrID0gc3RhcnRfcHJpbWFyeSgpOworCisg ICAgLyogcmVhZCBmcm9tIDAgdG8gSU1HX1NJWkUgKi8KKyAgICB0ZXN0X2Js a19yZWFkKGJsaywgMCwgMCwgSU1HX1NJWkUsIDAsIElNR19TSVpFLCB0cnVl KTsKKworICAgIHRlYXJkb3duX3ByaW1hcnkoKTsKK30KKworc3RhdGljIHZv aWQgdGVzdF9wcmltYXJ5X3dyaXRlKHZvaWQpCit7CisgICAgQmxvY2tCYWNr ZW5kICpibGs7CisKKyAgICBibGsgPSBzdGFydF9wcmltYXJ5KCk7CisKKyAg ICAvKiB3cml0ZSBmcm9tIDAgdG8gSU1HX1NJWkUgKi8KKyAgICB0ZXN0X2Js a193cml0ZShibGssIDAsIDAsIElNR19TSVpFLCB0cnVlKTsKKworICAgIHRl YXJkb3duX3ByaW1hcnkoKTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9wcmlt YXJ5X3N0YXJ0KHZvaWQpCit7CisgICAgQmxvY2tCYWNrZW5kICpibGsgPSBO VUxMOworICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOworCisgICAgYmxr ID0gc3RhcnRfcHJpbWFyeSgpOworCisgICAgcmVwbGljYXRpb25fc3RhcnRf YWxsKFJFUExJQ0FUSU9OX01PREVfUFJJTUFSWSwgJmxvY2FsX2Vycik7Cisg ICAgZ19hc3NlcnQoIWxvY2FsX2Vycik7CisKKyAgICAvKiByZWFkIGZyb20g MCB0byBJTUdfU0laRSAqLworICAgIHRlc3RfYmxrX3JlYWQoYmxrLCAwLCAw LCBJTUdfU0laRSwgMCwgSU1HX1NJWkUsIHRydWUpOworCisgICAgLyogd3Jp dGUgMHgyMiBmcm9tIDAgdG8gSU1HX1NJWkUgKi8KKyAgICB0ZXN0X2Jsa193 cml0ZShibGssIDB4MjIsIDAsIElNR19TSVpFLCBmYWxzZSk7CisKKyAgICB0 ZWFyZG93bl9wcmltYXJ5KCk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RfcHJp bWFyeV9zdG9wKHZvaWQpCit7CisgICAgRXJyb3IgKmxvY2FsX2VyciA9IE5V TEw7CisgICAgYm9vbCBmYWlsb3ZlciA9IHRydWU7CisKKyAgICAgc3RhcnRf cHJpbWFyeSgpOworCisgICAgcmVwbGljYXRpb25fc3RhcnRfYWxsKFJFUExJ Q0FUSU9OX01PREVfUFJJTUFSWSwgJmxvY2FsX2Vycik7CisgICAgZ19hc3Nl cnQoIWxvY2FsX2Vycik7CisKKyAgICByZXBsaWNhdGlvbl9zdG9wX2FsbChm YWlsb3ZlciwgJmxvY2FsX2Vycik7CisgICAgZ19hc3NlcnQoIWxvY2FsX2Vy cik7CisKKyAgICB0ZWFyZG93bl9wcmltYXJ5KCk7Cit9CisKK3N0YXRpYyB2 b2lkIHRlc3RfcHJpbWFyeV9kb19jaGVja3BvaW50KHZvaWQpCit7CisgICAg RXJyb3IgKmxvY2FsX2VyciA9IE5VTEw7CisKKyAgICBzdGFydF9wcmltYXJ5 KCk7CisKKyAgICByZXBsaWNhdGlvbl9zdGFydF9hbGwoUkVQTElDQVRJT05f TU9ERV9QUklNQVJZLCAmbG9jYWxfZXJyKTsKKyAgICBnX2Fzc2VydCghbG9j YWxfZXJyKTsKKworICAgIHJlcGxpY2F0aW9uX2RvX2NoZWNrcG9pbnRfYWxs KCZsb2NhbF9lcnIpOworICAgIGdfYXNzZXJ0KCFsb2NhbF9lcnIpOworCisg ICAgdGVhcmRvd25fcHJpbWFyeSgpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0 X3ByaW1hcnlfZ2V0X2Vycm9yKHZvaWQpCit7CisgICAgRXJyb3IgKmxvY2Fs X2VyciA9IE5VTEw7CisKKyAgICBzdGFydF9wcmltYXJ5KCk7CisKKyAgICBy ZXBsaWNhdGlvbl9zdGFydF9hbGwoUkVQTElDQVRJT05fTU9ERV9QUklNQVJZ LCAmbG9jYWxfZXJyKTsKKyAgICBnX2Fzc2VydCghbG9jYWxfZXJyKTsKKwor ICAgIHJlcGxpY2F0aW9uX2dldF9lcnJvcl9hbGwoJmxvY2FsX2Vycik7Cisg ICAgZ19hc3NlcnQoIWxvY2FsX2Vycik7CisKKyAgICB0ZWFyZG93bl9wcmlt YXJ5KCk7Cit9CisKK3N0YXRpYyBCbG9ja0JhY2tlbmQgKnN0YXJ0X3NlY29u ZGFyeSh2b2lkKQoreworICAgIFFlbXVPcHRzICpvcHRzOworICAgIFFEaWN0 ICpxZGljdDsKKyAgICBCbG9ja0JhY2tlbmQgKmJsazsKKyAgICBjaGFyICpj bWRsaW5lOworICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOworCisgICAg LyogYWRkIHNfbG9jYWxfZGlzayBhbmQgZm9yZ2UgU19MT0NBTF9ESVNLX0lE ICovCisgICAgY21kbGluZSA9IGdfc3RyZHVwX3ByaW50ZigiZmlsZS5maWxl bmFtZT0lcyxkcml2ZXI9cWNvdzIiICwgc19sb2NhbF9kaXNrKTsKKyAgICBv cHRzID0gcWVtdV9vcHRzX3BhcnNlX25vaXNpbHkoJnFlbXVfZHJpdmVfb3B0 cywgY21kbGluZSwgZmFsc2UpOworICAgIGdfZnJlZShjbWRsaW5lKTsKKwor ICAgIHFkaWN0ID0gcWVtdV9vcHRzX3RvX3FkaWN0KG9wdHMsIE5VTEwpOwor ICAgIHFkaWN0X3NldF9kZWZhdWx0X3N0cihxZGljdCwgQkRSVl9PUFRfQ0FD SEVfRElSRUNULCAib2ZmIik7CisgICAgcWRpY3Rfc2V0X2RlZmF1bHRfc3Ry KHFkaWN0LCBCRFJWX09QVF9DQUNIRV9OT19GTFVTSCwgIm9mZiIpOworCisg ICAgYmxrID0gYmxrX25ld19vcGVuKE5VTEwsIE5VTEwsIHFkaWN0LCBCRFJW X09fUkRXUiwgJmxvY2FsX2Vycik7CisgICAgYXNzZXJ0KGJsayk7CisgICAg bW9uaXRvcl9hZGRfYmxrKGJsaywgU19MT0NBTF9ESVNLX0lELCAmbG9jYWxf ZXJyKTsKKyAgICBnX2Fzc2VydCghbG9jYWxfZXJyKTsKKworICAgIC8qIGZv cm1hdCBzX2xvY2FsX2Rpc2sgd2l0aCBwYXR0ZXJuICIweDExIiAqLworICAg IHRlc3RfYmxrX3dyaXRlKGJsaywgMHgxMSwgMCwgSU1HX1NJWkUsIGZhbHNl KTsKKworICAgIHFlbXVfb3B0c19kZWwob3B0cyk7CisKKyAgICAvKiBhZGQg U18oQUNUSVZFL0hJRERFTilfRElTSyBhbmQgZm9yZ2UgU19JRCAqLworICAg IGNtZGxpbmUgPSBnX3N0cmR1cF9wcmludGYoImRyaXZlcj1yZXBsaWNhdGlv bixtb2RlPXNlY29uZGFyeSx0b3AtaWQ9JXMsIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImZpbGUuZHJpdmVyPXFjb3cyLGZpbGUuZmlsZS5m aWxlbmFtZT0lcywiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi ZmlsZS5iYWNraW5nLmRyaXZlcj1xY293MiwiCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiZmlsZS5iYWNraW5nLmZpbGUuZmlsZW5hbWU9JXMs IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUuYmFja2lu Zy5iYWNraW5nPSVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LCBTX0lELCBzX2FjdGl2ZV9kaXNrLCBzX2hpZGRlbl9kaXNrCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAsIFNfTE9DQUxfRElTS19JRCk7Cisg ICAgb3B0cyA9IHFlbXVfb3B0c19wYXJzZV9ub2lzaWx5KCZxZW11X2RyaXZl X29wdHMsIGNtZGxpbmUsIGZhbHNlKTsKKyAgICBnX2ZyZWUoY21kbGluZSk7 CisKKyAgICBxZGljdCA9IHFlbXVfb3B0c190b19xZGljdChvcHRzLCBOVUxM KTsKKyAgICBxZGljdF9zZXRfZGVmYXVsdF9zdHIocWRpY3QsIEJEUlZfT1BU X0NBQ0hFX0RJUkVDVCwgIm9mZiIpOworICAgIHFkaWN0X3NldF9kZWZhdWx0 X3N0cihxZGljdCwgQkRSVl9PUFRfQ0FDSEVfTk9fRkxVU0gsICJvZmYiKTsK KworICAgIGJsayA9IGJsa19uZXdfb3BlbihOVUxMLCBOVUxMLCBxZGljdCwg QkRSVl9PX1JEV1IsICZsb2NhbF9lcnIpOworICAgIGFzc2VydChibGspOwor ICAgIG1vbml0b3JfYWRkX2JsayhibGssIFNfSUQsICZsb2NhbF9lcnIpOwor ICAgIGdfYXNzZXJ0KCFsb2NhbF9lcnIpOworCisgICAgcWVtdV9vcHRzX2Rl bChvcHRzKTsKKworICAgIC8qIHJldHVybiB0b3AgYnMgKi8KKyAgICByZXR1 cm4gYmxrOworfQorCitzdGF0aWMgdm9pZCB0ZWFyZG93bl9zZWNvbmRhcnko dm9pZCkKK3sKKyAgICAvKiBvbmx5IG5lZWQgdG8gZGVzdHJveSB0d28gQkJz ICovCisgICAgQmxvY2tCYWNrZW5kICpibGs7CisKKyAgICAvKiByZW1vdmUg U19MT0NBTF9ESVNLX0lEICovCisgICAgYmxrID0gYmxrX2J5X25hbWUoU19M T0NBTF9ESVNLX0lEKTsKKyAgICBhc3NlcnQoYmxrKTsKKworICAgIG1vbml0 b3JfcmVtb3ZlX2JsayhibGspOworICAgIGJsa191bnJlZihibGspOworCisg ICAgLyogcmVtb3ZlIFNfSUQgKi8KKyAgICBibGsgPSBibGtfYnlfbmFtZShT X0lEKTsKKyAgICBhc3NlcnQoYmxrKTsKKworICAgIG1vbml0b3JfcmVtb3Zl X2JsayhibGspOworICAgIGJsa191bnJlZihibGspOworfQorCitzdGF0aWMg dm9pZCB0ZXN0X3NlY29uZGFyeV9yZWFkKHZvaWQpCit7CisgICAgQmxvY2tC YWNrZW5kICpibGs7CisKKyAgICBibGsgPSBzdGFydF9zZWNvbmRhcnkoKTsK KworICAgIC8qIHJlYWQgZnJvbSAwIHRvIElNR19TSVpFICovCisgICAgdGVz dF9ibGtfcmVhZChibGssIDAsIDAsIElNR19TSVpFLCAwLCBJTUdfU0laRSwg dHJ1ZSk7CisKKyAgICB0ZWFyZG93bl9zZWNvbmRhcnkoKTsKK30KKworc3Rh dGljIHZvaWQgdGVzdF9zZWNvbmRhcnlfd3JpdGUodm9pZCkKK3sKKyAgICBC bG9ja0JhY2tlbmQgKmJsazsKKworICAgIGJsayA9IHN0YXJ0X3NlY29uZGFy eSgpOworCisgICAgLyogd3JpdGUgZnJvbSAwIHRvIElNR19TSVpFICovCisg ICAgdGVzdF9ibGtfd3JpdGUoYmxrLCAwLCAwLCBJTUdfU0laRSwgdHJ1ZSk7 CisKKyAgICB0ZWFyZG93bl9zZWNvbmRhcnkoKTsKK30KKworc3RhdGljIHZv aWQgdGVzdF9zZWNvbmRhcnlfc3RhcnQodm9pZCkKK3sKKyAgICBCbG9ja0Jh Y2tlbmQgKmJsazsKKyAgICBCbG9ja0JhY2tlbmQgICp0b3BfYmxrLCAqbG9j YWxfYmxrOworICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOworICAgIGJv b2wgZmFpbG92ZXIgPSB0cnVlOworCisgICAgdG9wX2JsayA9IHN0YXJ0X3Nl Y29uZGFyeSgpOworICAgIHJlcGxpY2F0aW9uX3N0YXJ0X2FsbChSRVBMSUNB VElPTl9NT0RFX1NFQ09OREFSWSwgJmxvY2FsX2Vycik7CisgICAgZ19hc3Nl cnQoIWxvY2FsX2Vycik7CisKKyAgICAvKiByZWFkIGZyb20gc19sb2NhbF9k aXNrICgwLCBJTUdfU0laRSkgKi8KKyAgICB0ZXN0X2Jsa19yZWFkKHRvcF9i bGssIDB4MTEsIDAsIElNR19TSVpFLCAwLCBJTUdfU0laRSwgZmFsc2UpOwor CisgICAgLyogd3JpdGUgMHgyMiB0byBzX2xvY2FsX2Rpc2sgKElNR19TSVpF IC8gMiwgSU1HX1NJWkUpICovCisgICAgYmxrID0gYmxrX2J5X25hbWUoU19M T0NBTF9ESVNLX0lEKTsKKyAgICBsb2NhbF9ibGsgPSBibGs7CisgICAgdGVz dF9ibGtfd3JpdGUobG9jYWxfYmxrLCAweDIyLCBJTUdfU0laRSAvIDIsIElN R19TSVpFIC8gMiwgZmFsc2UpOworCisgICAgLyogcmVwbGljYXRpb24gd2ls bCBiYWNrdXAgc19sb2NhbF9kaXNrIHRvIHNfaGlkZGVuX2Rpc2sgKi8KKyAg ICB0ZXN0X2Jsa19yZWFkKHRvcF9ibGssIDB4MTEsIElNR19TSVpFIC8gMiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1HX1NJWkUgLyAy LCAwLCBJTUdfU0laRSwgZmFsc2UpOworCisgICAgLyogd3JpdGUgMHgzMyB0 byBzX2FjdGl2ZV9kaXNrICgwLCBJTUdfU0laRSAvIDIpICovCisgICAgdGVz dF9ibGtfd3JpdGUodG9wX2JsaywgMHgzMywgMCwgSU1HX1NJWkUgLyAyLCBm YWxzZSk7CisKKyAgICAvKiByZWFkIGZyb20gc19hY3RpdmVfZGlzayAoMCwg SU1HX1NJWkUvMikgKi8KKyAgICB0ZXN0X2Jsa19yZWFkKHRvcF9ibGssIDB4 MzMsIDAsIElNR19TSVpFIC8gMiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMCwgSU1HX1NJWkUgLyAyLCBmYWxzZSk7CisKKyAgICAvKiB1 bmJsb2NrIHRvcF9icyAqLworICAgIHJlcGxpY2F0aW9uX3N0b3BfYWxsKGZh aWxvdmVyLCAmbG9jYWxfZXJyKTsKKyAgICBnX2Fzc2VydCghbG9jYWxfZXJy KTsKKworICAgIHRlYXJkb3duX3NlY29uZGFyeSgpOworfQorCisKK3N0YXRp YyB2b2lkIHRlc3Rfc2Vjb25kYXJ5X3N0b3Aodm9pZCkKK3sKKyAgICBCbG9j a0JhY2tlbmQgKmJsazsKKyAgICBCbG9ja0JhY2tlbmQgICp0b3BfYmxrLCAq bG9jYWxfYmxrOworICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOworICAg IGJvb2wgZmFpbG92ZXIgPSB0cnVlOworCisgICAgdG9wX2JsayA9IHN0YXJ0 X3NlY29uZGFyeSgpOworICAgIHJlcGxpY2F0aW9uX3N0YXJ0X2FsbChSRVBM SUNBVElPTl9NT0RFX1NFQ09OREFSWSwgJmxvY2FsX2Vycik7CisgICAgZ19h c3NlcnQoIWxvY2FsX2Vycik7CisKKyAgICAvKiB3cml0ZSAweDIyIHRvIHNf bG9jYWxfZGlzayAoSU1HX1NJWkUgLyAyLCBJTUdfU0laRSkgKi8KKyAgICBi bGsgPSBibGtfYnlfbmFtZShTX0xPQ0FMX0RJU0tfSUQpOworICAgIGxvY2Fs X2JsayA9IGJsazsKKyAgICB0ZXN0X2Jsa193cml0ZShsb2NhbF9ibGssIDB4 MjIsIElNR19TSVpFIC8gMiwgSU1HX1NJWkUgLyAyLCBmYWxzZSk7CisKKyAg ICAvKiByZXBsaWNhdGlvbiB3aWxsIGJhY2t1cCBzX2xvY2FsX2Rpc2sgdG8g c19oaWRkZW5fZGlzayAqLworICAgIHRlc3RfYmxrX3JlYWQodG9wX2Jsaywg MHgxMSwgSU1HX1NJWkUgLyAyLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJTUdfU0laRSAvIDIsIDAsIElNR19TSVpFLCBmYWxzZSk7CisK KyAgICAvKiB3cml0ZSAweDMzIHRvIHNfYWN0aXZlX2Rpc2sgKDAsIElNR19T SVpFIC8gMikgKi8KKyAgICB0ZXN0X2Jsa193cml0ZSh0b3BfYmxrLCAweDMz LCAwLCBJTUdfU0laRSAvIDIsIGZhbHNlKTsKKworICAgIC8qIGRvIGFjdGl2 ZSBjb21taXQgKi8KKyAgICByZXBsaWNhdGlvbl9zdG9wX2FsbChmYWlsb3Zl ciwgJmxvY2FsX2Vycik7CisgICAgZ19hc3NlcnQoIWxvY2FsX2Vycik7CisK KyAgICAvKiByZWFkIGZyb20gc19sb2NhbF9kaXNrICgwLCBJTUdfU0laRSAv IDIpICovCisgICAgdGVzdF9ibGtfcmVhZCh0b3BfYmxrLCAweDMzLCAwLCBJ TUdfU0laRSAvIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDAsIElNR19TSVpFIC8gMiwgZmFsc2UpOworCisKKyAgICAvKiByZWFkIGZy b20gc19sb2NhbF9kaXNrIChJTUdfU0laRSAvIDIsIElNR19TSVpFKSAqLwor ICAgIHRlc3RfYmxrX3JlYWQodG9wX2JsaywgMHgyMiwgSU1HX1NJWkUgLyAy LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTUdfU0laRSAv IDIsIDAsIElNR19TSVpFLCBmYWxzZSk7CisKKyAgICB0ZWFyZG93bl9zZWNv bmRhcnkoKTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9zZWNvbmRhcnlfZG9f Y2hlY2twb2ludCh2b2lkKQoreworICAgIEJsb2NrQmFja2VuZCAqYmxrOwor ICAgIEJsb2NrQmFja2VuZCAqdG9wX2JsaywgKmxvY2FsX2JsazsKKyAgICBF cnJvciAqbG9jYWxfZXJyID0gTlVMTDsKKyAgICBib29sIGZhaWxvdmVyID0g dHJ1ZTsKKworICAgIHRvcF9ibGsgPSBzdGFydF9zZWNvbmRhcnkoKTsKKyAg ICByZXBsaWNhdGlvbl9zdGFydF9hbGwoUkVQTElDQVRJT05fTU9ERV9TRUNP TkRBUlksICZsb2NhbF9lcnIpOworICAgIGdfYXNzZXJ0KCFsb2NhbF9lcnIp OworCisgICAgLyogd3JpdGUgMHgyMiB0byBzX2xvY2FsX2Rpc2sgKElNR19T SVpFIC8gMiwgSU1HX1NJWkUpICovCisgICAgYmxrID0gYmxrX2J5X25hbWUo U19MT0NBTF9ESVNLX0lEKTsKKyAgICBsb2NhbF9ibGsgPSBibGs7CisgICAg dGVzdF9ibGtfd3JpdGUobG9jYWxfYmxrLCAweDIyLCBJTUdfU0laRSAvIDIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTUdfU0la RSAvIDIsIGZhbHNlKTsKKworICAgIC8qIHJlcGxpY2F0aW9uIHdpbGwgYmFj a3VwIHNfbG9jYWxfZGlzayB0byBzX2hpZGRlbl9kaXNrICovCisgICAgdGVz dF9ibGtfcmVhZCh0b3BfYmxrLCAgMHgxMSwgSU1HX1NJWkUgLyAyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1HX1NJWkUgLyAy LCAwLCBJTUdfU0laRSwgZmFsc2UpOworCisgICAgcmVwbGljYXRpb25fZG9f Y2hlY2twb2ludF9hbGwoJmxvY2FsX2Vycik7CisgICAgZ19hc3NlcnQoIWxv Y2FsX2Vycik7CisKKyAgICAgLyogYWZ0ZXIgY2hlY2twb2ludCwgcmVhZCBw YXR0ZXJuIDB4MjIgZnJvbSBzX2xvY2FsX2Rpc2sgKi8KKyAgICAgdGVzdF9i bGtfcmVhZCh0b3BfYmxrLCAweDIyLCBJTUdfU0laRSAvIDIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTUdfU0laRSAvIDIsIDAs IElNR19TSVpFLCBmYWxzZSk7CisKKyAgICAvKiB1bmJsb2NrIHRvcF9icyAq LworICAgIHJlcGxpY2F0aW9uX3N0b3BfYWxsKGZhaWxvdmVyLCAmbG9jYWxf ZXJyKTsKKyAgICBnX2Fzc2VydCghbG9jYWxfZXJyKTsKKworICAgIHRlYXJk b3duX3NlY29uZGFyeSgpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X3NlY29u ZGFyeV9nZXRfZXJyb3Iodm9pZCkKK3sKKyAgICBFcnJvciAqbG9jYWxfZXJy ID0gTlVMTDsKKyAgICBib29sIGZhaWxvdmVyID0gdHJ1ZTsKKworICAgIHN0 YXJ0X3NlY29uZGFyeSgpOworICAgIHJlcGxpY2F0aW9uX3N0YXJ0X2FsbChS RVBMSUNBVElPTl9NT0RFX1NFQ09OREFSWSwgJmxvY2FsX2Vycik7CisgICAg Z19hc3NlcnQoIWxvY2FsX2Vycik7CisKKyAgICByZXBsaWNhdGlvbl9nZXRf ZXJyb3JfYWxsKCZsb2NhbF9lcnIpOworICAgIGdfYXNzZXJ0KCFsb2NhbF9l cnIpOworCisgICAgLyogdW5ibG9jayB0b3BfYnMgKi8KKyAgICByZXBsaWNh dGlvbl9zdG9wX2FsbChmYWlsb3ZlciwgJmxvY2FsX2Vycik7CisgICAgZ19h c3NlcnQoIWxvY2FsX2Vycik7CisKKyAgICB0ZWFyZG93bl9zZWNvbmRhcnko KTsKK30KKworc3RhdGljIHZvaWQgc2lnYWJydF9oYW5kbGVyKGludCBzaWdu bykKK3sKKyAgICBjbGVhbnVwX2ltZ3MoKTsKK30KKworc3RhdGljIHZvaWQg c2V0dXBfc2lnYWJydF9oYW5kbGVyKHZvaWQpCit7CisgICAgc3RydWN0IHNp Z2FjdGlvbiBzaWdhY3Q7CisKKyAgICBzaWdhY3QgPSAoc3RydWN0IHNpZ2Fj dGlvbil7CisgICAgICAgIC5zYV9oYW5kbGVyID0gc2lnYWJydF9oYW5kbGVy LAorICAgICAgICAuc2FfZmxhZ3MgPSBTQV9SRVNFVEhBTkQsCisgICAgfTsK KyAgICBzaWdlbXB0eXNldCgmc2lnYWN0LnNhX21hc2spOworICAgIHNpZ2Fj dGlvbihTSUdBQlJULCAmc2lnYWN0LCBOVUxMKTsKK30KKworaW50IG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIGludCByZXQ7CisgICAg cWVtdV9pbml0X21haW5fbG9vcCgmZXJyb3JfZmF0YWwpOworICAgIGJkcnZf aW5pdCgpOworCisgICAgZ190ZXN0X2luaXQoJmFyZ2MsICZhcmd2LCBOVUxM KTsKKyAgICBzZXR1cF9zaWdhYnJ0X2hhbmRsZXIoKTsKKworICAgIHByZXBh cmVfaW1ncygpOworCisgICAgLyogUHJpbWFyeSAqLworICAgIGdfdGVzdF9h ZGRfZnVuYygiL3JlcGxpY2F0aW9uL3ByaW1hcnkvcmVhZCIsICAgIHRlc3Rf cHJpbWFyeV9yZWFkKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi9yZXBsaWNh dGlvbi9wcmltYXJ5L3dyaXRlIiwgICB0ZXN0X3ByaW1hcnlfd3JpdGUpOwor ICAgIGdfdGVzdF9hZGRfZnVuYygiL3JlcGxpY2F0aW9uL3ByaW1hcnkvc3Rh cnQiLCAgIHRlc3RfcHJpbWFyeV9zdGFydCk7CisgICAgZ190ZXN0X2FkZF9m dW5jKCIvcmVwbGljYXRpb24vcHJpbWFyeS9zdG9wIiwgICAgdGVzdF9wcmlt YXJ5X3N0b3ApOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3JlcGxpY2F0aW9u L3ByaW1hcnkvZG9fY2hlY2twb2ludCIsCisgICAgICAgICAgICAgICAgICAg IHRlc3RfcHJpbWFyeV9kb19jaGVja3BvaW50KTsKKyAgICBnX3Rlc3RfYWRk X2Z1bmMoIi9yZXBsaWNhdGlvbi9wcmltYXJ5L2dldF9lcnJvciIsCisgICAg ICAgICAgICAgICAgICAgIHRlc3RfcHJpbWFyeV9nZXRfZXJyb3IpOworCisg ICAgLyogU2Vjb25kYXJ5ICovCisgICAgZ190ZXN0X2FkZF9mdW5jKCIvcmVw bGljYXRpb24vc2Vjb25kYXJ5L3JlYWQiLCAgdGVzdF9zZWNvbmRhcnlfcmVh ZCk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvcmVwbGljYXRpb24vc2Vjb25k YXJ5L3dyaXRlIiwgdGVzdF9zZWNvbmRhcnlfd3JpdGUpOworICAgIGdfdGVz dF9hZGRfZnVuYygiL3JlcGxpY2F0aW9uL3NlY29uZGFyeS9zdGFydCIsIHRl c3Rfc2Vjb25kYXJ5X3N0YXJ0KTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi9y ZXBsaWNhdGlvbi9zZWNvbmRhcnkvc3RvcCIsICB0ZXN0X3NlY29uZGFyeV9z dG9wKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi9yZXBsaWNhdGlvbi9zZWNv bmRhcnkvZG9fY2hlY2twb2ludCIsCisgICAgICAgICAgICAgICAgICAgIHRl c3Rfc2Vjb25kYXJ5X2RvX2NoZWNrcG9pbnQpOworICAgIGdfdGVzdF9hZGRf ZnVuYygiL3JlcGxpY2F0aW9uL3NlY29uZGFyeS9nZXRfZXJyb3IiLAorICAg ICAgICAgICAgICAgICAgICB0ZXN0X3NlY29uZGFyeV9nZXRfZXJyb3IpOwor CisgICAgcmV0ID0gZ190ZXN0X3J1bigpOworCisgICAgY2xlYW51cF9pbWdz KCk7CisKKyAgICByZXR1cm4gcmV0OworfQotLSAKMS45LjMKCgAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvdXRnb2luZ192 MjIvMDAwNC1MaW5rLWJhY2t1cC1pbnRvLWJsb2NrLWNvcmUucGF0Y2gAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA MDAwMDY0NAAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDIyMzIAMTI3NDM3NzE0 NDQAMDIwNjQzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAEZyb20gYTJjODM4NzA1M2VlYTBhNDQ5NTQwN2ZjNzlkNDNhMDNk Mjg5ZWRhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogV2VuIENv bmd5YW5nIDx3ZW5jeUBjbi5mdWppdHN1LmNvbT4KRGF0ZTogV2VkLCAyMCBK dWwgMjAxNiAxMTozOToyNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjIyIDA0 LzEwXSBMaW5rIGJhY2t1cCBpbnRvIGJsb2NrIGNvcmUKClNpZ25lZC1vZmYt Ynk6IFdlbiBDb25neWFuZyA8d2VuY3lAY24uZnVqaXRzdS5jb20+ClNpZ25l ZC1vZmYtYnk6IHpoYW5naGFpbGlhbmcgPHpoYW5nLnpoYW5naGFpbGlhbmdA aHVhd2VpLmNvbT4KU2lnbmVkLW9mZi1ieTogR29uZ2xlaSA8YXJlaS5nb25n bGVpQGh1YXdlaS5jb20+ClNpZ25lZC1vZmYtYnk6IENoYW5nbG9uZyBYaWUg PHhpZWNsLmZuc3RAY24uZnVqaXRzdS5jb20+ClJldmlld2VkLWJ5OiBTdGVm YW4gSGFqbm9jemkgPHN0ZWZhbmhhQHJlZGhhdC5jb20+ClJldmlld2VkLWJ5 OiBKZWZmIENvZHkgPGpjb2R5QHJlZGhhdC5jb20+ClNpZ25lZC1vZmYtYnk6 IFdhbmcgV2VpV2VpIDx3YW5nd3cuZm5zdEBjbi5mdWppdHN1LmNvbT4KLS0t CiBibG9jay9NYWtlZmlsZS5vYmpzIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv YmxvY2svTWFrZWZpbGUub2JqcyBiL2Jsb2NrL01ha2VmaWxlLm9ianMKaW5k ZXggMjU5M2EyZi4uOGEzMjcwYiAxMDA2NDQKLS0tIGEvYmxvY2svTWFrZWZp bGUub2JqcworKysgYi9ibG9jay9NYWtlZmlsZS5vYmpzCkBAIC0yMiwxMSAr MjIsMTEgQEAgYmxvY2stb2JqLSQoQ09ORklHX0FSQ0hJUEVMQUdPKSArPSBh cmNoaXBlbGFnby5vCiBibG9jay1vYmotJChDT05GSUdfTElCU1NIMikgKz0g c3NoLm8KIGJsb2NrLW9iai15ICs9IGFjY291bnRpbmcubyBkaXJ0eS1iaXRt YXAubwogYmxvY2stb2JqLXkgKz0gd3JpdGUtdGhyZXNob2xkLm8KK2Jsb2Nr LW9iai15ICs9IGJhY2t1cC5vCiAKIGJsb2NrLW9iai15ICs9IGNyeXB0by5v CiAKIGNvbW1vbi1vYmoteSArPSBzdHJlYW0ubwotY29tbW9uLW9iai15ICs9 IGJhY2t1cC5vCiAKIGlzY3NpLm8tY2ZsYWdzICAgICA6PSAkKExJQklTQ1NJ X0NGTEFHUykKIGlzY3NpLm8tbGlicyAgICAgICA6PSAkKExJQklTQ1NJX0xJ QlMpCi0tIAoxLjkuMwoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAG91dGdvaW5nX3YyMi8wMDAzLUJhY2t1cC1leHBvcnQt aW50ZXJmYWNlcy1mb3ItZXh0cmEtc2VyaWFsaXphdGlvbi5wYXRjaAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwMDAAMDAwMDAw MAAwMDAwMDAxMjU2NQAxMjc0Mzc3MTQ0NAAwMjUxNTQAIDAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA dXN0YXIgIAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARnJvbSA1MTNkZTJjNGFl YzI5ZjFjZTMwNjY1ODhiYmQzMjNlOWUxNjIyNjVkIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiBDaGFuZ2xvbmcgWGllIDx4aWVjbC5mbnN0QGNu LmZ1aml0c3UuY29tPgpEYXRlOiBXZWQsIDE4IE1heSAyMDE2IDE2OjE5OjUx ICswODAwClN1YmplY3Q6IFtQQVRDSCB2MjIgMDMvMTBdIEJhY2t1cDogZXhw b3J0IGludGVyZmFjZXMgZm9yIGV4dHJhIHNlcmlhbGl6YXRpb24KCk5vcm1h bCBiYWNrdXAoc3luYz0nbm9uZScpIHdvcmtmbG93OgpzdGVwIDEuIE5CRCBw ZWZvcm1hbmNlIEkvTyB3cml0ZSBmcm9tIGNsaWVudCB0byBzZXJ2ZXIKICAg cWNvdzJfY29fd3JpdGV2CiAgICBiZHJ2X2NvX3dyaXRldgogICAgIC4uLgog ICAgICAgYmRydl9hbGlnbmVkX3B3cml0ZXYKICAgICAgICBub3RpZmllcl93 aXRoX3JldHVybl9saXN0X25vdGlmeSAtPiBiYWNrdXBfZG9fY293CiAgICAg ICAgIGJkcnZfZHJpdmVyX3B3cml0ZXYgLy8gd3JpdGUgbmV3IGNvbnRlbnRz CgpzdGVwIDIuIGRyaXZlLWJhY2t1cCBzeW5jPW5vbmUKICAgYmFja3VwX2Rv X2NvdwogICB7CiAgICB3YWl0X2Zvcl9vdmVybGFwcGluZ19yZXF1ZXN0cwog ICAgY293X3JlcXVlc3RfYmVnaW4KICAgIGZvcig7IHN0YXJ0IDwgZW5kOyBz dGFydCsrKSB7CiAgICAgICAgICAgIGJkcnZfY29fcmVhZHZfbm9fc2VyaWFs aXNpbmcgLy9yZWFkIG9sZCBjb250ZW50cyBmcm9tIFNlY29uZGFyeSBkaXNr CiAgICAgICAgICAgIGJkcnZfY29fd3JpdGV2IC8vIHdyaXRlIG9sZCBjb250 ZW50cyB0byBoaWRkZW4tZGlzawogICAgfQogICAgY293X3JlcXVlc3RfZW5k CiAgIH0KCnN0ZXAgMy4gVGhlbiByb2xsIGJhY2sgdG8gInN0ZXAgMSIgdG8g d3JpdGUgbmV3IGNvbnRlbnRzIHRvIFNlY29uZGFyeSBkaXNrLgoKQW5kIGZv ciByZXBsaWNhdGlvbiwgd2UgbXVzdCBtYWtlIHN1cmUgdGhhdCB3ZSBvbmx5 IHJlYWQgdGhlIG9sZCBjb250ZW50cyBmcm9tClNlY29uZGFyeSBkaXNrIGlu IG9yZGVyIHRvIGtlZXAgY29udGVudHMgY29uc2lzdGVudC4KCjEpIFJlcGxp Y2F0aW9uIHdvcmtmbG93IG9mIFNlY29uZGFyeQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0 aW8tYmxrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgotLS0tLS0tPiAgMSBOQkQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK ICAgfHwgICAgIHNlcnZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDMgcmVwbGljYXRpb24KICAgfHwgICAgICAgIF4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiAg IHx8ICAgICAgICB8ICAgICAgICAgICBiYWNraW5nICAgICAgICAgICAgICAg ICBiYWNraW5nICAgICAgfAogICB8fCAgU2Vjb25kYXJ5IGRpc2sgNjwtLS0t LS0tLSBoaWRkZW4tZGlzayA1IDwtLS0tLS0tLSBhY3RpdmUtZGlzayA0CiAg IHx8ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIF4KICAgfHwg ICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJwogICB8fCAgICAg ICAgICAgZHJpdmUtYmFja3VwIHN5bmM9bm9uZSAyCgpIZW5jZSwgd2UgbmVl ZCB0aGVzZSBpbnRlcmZhY2VzIHRvIGltcGxlbWVudCBjb2Fyc2UtZ3JhaW5l ZCBzZXJpYWxpemF0aW9uIGJldHdlZW4KQ09XIG9mIFNlY29uZGFyeSBkaXNr IGFuZCB0aGUgcmVhZCBvcGVyYXRpb24gb2YgcmVwbGljYXRpb24uCgpFeGFt cGxlIGNvZGVzIGFib3V0IGhvdyB0byB1c2UgdGhlbToKCiojaW5jbHVkZSAi YmxvY2svYmxvY2tfYmFja3VwLmgiCgpzdGF0aWMgY29yb3V0aW5lX2ZuIGlu dCB4eHhfY29fcmVhZHYoKQp7CiAgICAgICAgQ293UmVxdWVzdCByZXE7CiAg ICAgICAgQmxvY2tKb2IgKmpvYiA9IHNlY29uZGFyeV9kaXNrLT5icy0+am9i OwoKICAgICAgICBpZiAoam9iKSB7CiAgICAgICAgICAgICAgYmFja3VwX3dh aXRfZm9yX292ZXJsYXBwaW5nX3JlcXVlc3RzKGpvYiwgc3RhcnQsIGVuZCk7 CiAgICAgICAgICAgICAgYmFja3VwX2Nvd19yZXF1ZXN0X2JlZ2luKCZyZXEs IGpvYiwgc3RhcnQsIGVuZCk7CiAgICAgICAgICAgICAgcmV0ID0gYmRydl9j b19yZWFkdigpOwogICAgICAgICAgICAgIGJhY2t1cF9jb3dfcmVxdWVzdF9l bmQoJnJlcSk7CiAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgfQog ICAgICAgIHJldCA9IGJkcnZfY29fcmVhZHYoKTsKb3V0OgogICAgICAgIHJl dHVybiByZXQ7Cn0KClNpZ25lZC1vZmYtYnk6IENoYW5nbG9uZyBYaWUgPHhp ZWNsLmZuc3RAY24uZnVqaXRzdS5jb20+ClNpZ25lZC1vZmYtYnk6IFdlbiBD b25neWFuZyA8d2VuY3lAY24uZnVqaXRzdS5jb20+ClNpZ25lZC1vZmYtYnk6 IFdhbmcgV2VpV2VpIDx3YW5nd3cuZm5zdEBjbi5mdWppdHN1LmNvbT4KLS0t CiBibG9jay9iYWNrdXAuYyAgICAgICAgICAgICAgIHwgNDEgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIGluY2x1ZGUvYmxv Y2svYmxvY2tfYmFja3VwLmggfCAxNCArKysrKysrKysrKysrKwogMiBmaWxl cyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2Jsb2NrL2JhY2t1cC5jIGIvYmxvY2svYmFja3VwLmMK aW5kZXggM2JjZTQxNi4uOTE5YjYzYSAxMDA2NDQKLS0tIGEvYmxvY2svYmFj a3VwLmMKKysrIGIvYmxvY2svYmFja3VwLmMKQEAgLTI4LDEzICsyOCw2IEBA CiAjZGVmaW5lIEJBQ0tVUF9DTFVTVEVSX1NJWkVfREVGQVVMVCAoMSA8PCAx NikKICNkZWZpbmUgU0xJQ0VfVElNRSAxMDAwMDAwMDBVTEwgLyogbnMgKi8K IAotdHlwZWRlZiBzdHJ1Y3QgQ293UmVxdWVzdCB7Ci0gICAgaW50NjRfdCBz dGFydDsKLSAgICBpbnQ2NF90IGVuZDsKLSAgICBRTElTVF9FTlRSWShDb3dS ZXF1ZXN0KSBsaXN0OwotICAgIENvUXVldWUgd2FpdF9xdWV1ZTsgLyogY29y b3V0aW5lcyBibG9ja2VkIG9uIHRoaXMgcmVxdWVzdCAqLwotfSBDb3dSZXF1 ZXN0OwotCiB0eXBlZGVmIHN0cnVjdCBCYWNrdXBCbG9ja0pvYiB7CiAgICAg QmxvY2tKb2IgY29tbW9uOwogICAgIEJsb2NrQmFja2VuZCAqdGFyZ2V0OwpA QCAtMjcxLDYgKzI2NCw0MCBAQCB2b2lkIGJhY2t1cF9kb19jaGVja3BvaW50 KEJsb2NrSm9iICpqb2IsIEVycm9yICoqZXJycCkKICAgICBiaXRtYXBfemVy byhiYWNrdXBfam9iLT5kb25lX2JpdG1hcCwgbGVuKTsKIH0KIAordm9pZCBi YWNrdXBfd2FpdF9mb3Jfb3ZlcmxhcHBpbmdfcmVxdWVzdHMoQmxvY2tKb2Ig KmpvYiwgaW50NjRfdCBzZWN0b3JfbnVtLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5iX3NlY3RvcnMpCit7Cisg ICAgQmFja3VwQmxvY2tKb2IgKmJhY2t1cF9qb2IgPSBjb250YWluZXJfb2Yo am9iLCBCYWNrdXBCbG9ja0pvYiwgY29tbW9uKTsKKyAgICBpbnQ2NF90IHNl Y3RvcnNfcGVyX2NsdXN0ZXIgPSBjbHVzdGVyX3NpemVfc2VjdG9ycyhiYWNr dXBfam9iKTsKKyAgICBpbnQ2NF90IHN0YXJ0LCBlbmQ7CisKKyAgICBhc3Nl cnQoam9iLT5kcml2ZXItPmpvYl90eXBlID09IEJMT0NLX0pPQl9UWVBFX0JB Q0tVUCk7CisKKyAgICBzdGFydCA9IHNlY3Rvcl9udW0gLyBzZWN0b3JzX3Bl cl9jbHVzdGVyOworICAgIGVuZCA9IERJVl9ST1VORF9VUChzZWN0b3JfbnVt ICsgbmJfc2VjdG9ycywgc2VjdG9yc19wZXJfY2x1c3Rlcik7CisgICAgd2Fp dF9mb3Jfb3ZlcmxhcHBpbmdfcmVxdWVzdHMoYmFja3VwX2pvYiwgc3RhcnQs IGVuZCk7Cit9CisKK3ZvaWQgYmFja3VwX2Nvd19yZXF1ZXN0X2JlZ2luKENv d1JlcXVlc3QgKnJlcSwgQmxvY2tKb2IgKmpvYiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludDY0X3Qgc2VjdG9yX251bSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBuYl9zZWN0b3JzKQoreworICAg IEJhY2t1cEJsb2NrSm9iICpiYWNrdXBfam9iID0gY29udGFpbmVyX29mKGpv YiwgQmFja3VwQmxvY2tKb2IsIGNvbW1vbik7CisgICAgaW50NjRfdCBzZWN0 b3JzX3Blcl9jbHVzdGVyID0gY2x1c3Rlcl9zaXplX3NlY3RvcnMoYmFja3Vw X2pvYik7CisgICAgaW50NjRfdCBzdGFydCwgZW5kOworCisgICAgYXNzZXJ0 KGpvYi0+ZHJpdmVyLT5qb2JfdHlwZSA9PSBCTE9DS19KT0JfVFlQRV9CQUNL VVApOworCisgICAgc3RhcnQgPSBzZWN0b3JfbnVtIC8gc2VjdG9yc19wZXJf Y2x1c3RlcjsKKyAgICBlbmQgPSBESVZfUk9VTkRfVVAoc2VjdG9yX251bSAr IG5iX3NlY3RvcnMsIHNlY3RvcnNfcGVyX2NsdXN0ZXIpOworICAgIGNvd19y ZXF1ZXN0X2JlZ2luKHJlcSwgYmFja3VwX2pvYiwgc3RhcnQsIGVuZCk7Cit9 CisKK3ZvaWQgYmFja3VwX2Nvd19yZXF1ZXN0X2VuZChDb3dSZXF1ZXN0ICpy ZXEpCit7CisgICAgY293X3JlcXVlc3RfZW5kKHJlcSk7Cit9CisKIHN0YXRp YyBjb25zdCBCbG9ja0pvYkRyaXZlciBiYWNrdXBfam9iX2RyaXZlciA9IHsK ICAgICAuaW5zdGFuY2Vfc2l6ZSAgICAgICAgICA9IHNpemVvZihCYWNrdXBC bG9ja0pvYiksCiAgICAgLmpvYl90eXBlICAgICAgICAgICAgICAgPSBCTE9D S19KT0JfVFlQRV9CQUNLVVAsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2Jsb2Nr L2Jsb2NrX2JhY2t1cC5oIGIvaW5jbHVkZS9ibG9jay9ibG9ja19iYWNrdXAu aAppbmRleCAzNzUzYmNiLi5lMGU3Y2U2IDEwMDY0NAotLS0gYS9pbmNsdWRl L2Jsb2NrL2Jsb2NrX2JhY2t1cC5oCisrKyBiL2luY2x1ZGUvYmxvY2svYmxv Y2tfYmFja3VwLmgKQEAgLTEsMyArMSwxNyBAQAogI2luY2x1ZGUgImJsb2Nr L2Jsb2NrX2ludC5oIgogCit0eXBlZGVmIHN0cnVjdCBDb3dSZXF1ZXN0IHsK KyAgICBpbnQ2NF90IHN0YXJ0OworICAgIGludDY0X3QgZW5kOworICAgIFFM SVNUX0VOVFJZKENvd1JlcXVlc3QpIGxpc3Q7CisgICAgQ29RdWV1ZSB3YWl0 X3F1ZXVlOyAvKiBjb3JvdXRpbmVzIGJsb2NrZWQgb24gdGhpcyByZXF1ZXN0 ICovCit9IENvd1JlcXVlc3Q7CisKK3ZvaWQgYmFja3VwX3dhaXRfZm9yX292 ZXJsYXBwaW5nX3JlcXVlc3RzKEJsb2NrSm9iICpqb2IsIGludDY0X3Qgc2Vj dG9yX251bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBuYl9zZWN0b3JzKTsKK3ZvaWQgYmFja3VwX2Nvd19yZXF1 ZXN0X2JlZ2luKENvd1JlcXVlc3QgKnJlcSwgQmxvY2tKb2IgKmpvYiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qgc2VjdG9yX251 bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuYl9zZWN0 b3JzKTsKK3ZvaWQgYmFja3VwX2Nvd19yZXF1ZXN0X2VuZChDb3dSZXF1ZXN0 ICpyZXEpOworCiB2b2lkIGJhY2t1cF9kb19jaGVja3BvaW50KEJsb2NrSm9i ICpqb2IsIEVycm9yICoqZXJycCk7Ci0tIAoxLjkuMwoKAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG91dGdvaW5n X3YyMi8wMDA1LWRvY3MtYmxvY2stcmVwbGljYXRpb24tcy1kZXNjcmlwdGlv bi5wYXRjaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAwMDAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAyNjMzNAAxMjc0Mzc3 MTQ0NAAwMjI2NDAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIAByb290AAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAARnJvbSBjY2NhYzU5ZDBlNzEyODg0YTdmOWY5MDA4NTVkOWI0 NDMxYjBkYzZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBXZW4g Q29uZ3lhbmcgPHdlbmN5QGNuLmZ1aml0c3UuY29tPgpEYXRlOiBUaHUsIDI2 IE5vdiAyMDE1IDE0OjI4OjEwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MjIg MDUvMTBdIGRvY3M6IGJsb2NrIHJlcGxpY2F0aW9uJ3MgZGVzY3JpcHRpb24K ClNpZ25lZC1vZmYtYnk6IFdlbiBDb25neWFuZyA8d2VuY3lAY24uZnVqaXRz dS5jb20+ClNpZ25lZC1vZmYtYnk6IHpoYW5naGFpbGlhbmcgPHpoYW5nLnpo YW5naGFpbGlhbmdAaHVhd2VpLmNvbT4KU2lnbmVkLW9mZi1ieTogR29uZ2xl aSA8YXJlaS5nb25nbGVpQGh1YXdlaS5jb20+ClNpZ25lZC1vZmYtYnk6IENo YW5nbG9uZyBYaWUgPHhpZWNsLmZuc3RAY24uZnVqaXRzdS5jb20+ClNpZ25l ZC1vZmYtYnk6IFdhbmcgV2VpV2VpIDx3YW5nd3cuZm5zdEBjbi5mdWppdHN1 LmNvbT4KLS0tCiBkb2NzL2Jsb2NrLXJlcGxpY2F0aW9uLnR4dCB8IDIzOSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IDEgZmlsZSBjaGFuZ2VkLCAyMzkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRvY3MvYmxvY2stcmVwbGljYXRpb24udHh0CgpkaWZmIC0t Z2l0IGEvZG9jcy9ibG9jay1yZXBsaWNhdGlvbi50eHQgYi9kb2NzL2Jsb2Nr LXJlcGxpY2F0aW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi42YmRlNjczCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9ibG9j ay1yZXBsaWNhdGlvbi50eHQKQEAgLTAsMCArMSwyMzkgQEAKK0Jsb2NrIHJl cGxpY2F0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitDb3B5cmlnaHQgRnVqaXRzdSwgQ29ycC4gMjAxNgorQ29weXJp Z2h0IChjKSAyMDE2IEludGVsIENvcnBvcmF0aW9uCitDb3B5cmlnaHQgKGMp IDIwMTYgSFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KKworVGhpcyB3 b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQ TCwgdmVyc2lvbiAyIG9yIGxhdGVyLgorU2VlIHRoZSBDT1BZSU5HIGZpbGUg aW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCisKK0Jsb2NrIHJlcGxpY2F0 aW9uIGlzIHVzZWQgZm9yIGNvbnRpbnVvdXMgY2hlY2twb2ludHMuIEl0IGlz IGRlc2lnbmVkCitmb3IgQ09MTyAoQ09hcnNlLWdyYWluIExPY2stc3RlcHBp bmcpIHdoZXJlIHRoZSBTZWNvbmRhcnkgVk0gaXMgcnVubmluZy4KK0l0IGNh biBhbHNvIGJlIGFwcGxpZWQgZm9yIEZUL0hBIChGYXVsdC10b2xlcmFuY2Uv SGlnaCBBc3N1cmFuY2UpIHNjZW5hcmlvLAord2hlcmUgdGhlIFNlY29uZGFy eSBWTSBpcyBub3QgcnVubmluZy4KKworVGhpcyBkb2N1bWVudCBnaXZlcyBh biBvdmVydmlldyBvZiBibG9jayByZXBsaWNhdGlvbidzIGRlc2lnbi4KKwor PT0gQmFja2dyb3VuZCA9PQorSGlnaCBhdmFpbGFiaWxpdHkgc29sdXRpb25z IHN1Y2ggYXMgbWljcm8gY2hlY2twb2ludCBhbmQgQ09MTyB3aWxsIGRvCitj b25zZWN1dGl2ZSBjaGVja3BvaW50cy4gVGhlIFZNIHN0YXRlIG9mIHRoZSBQ cmltYXJ5IGFuZCBTZWNvbmRhcnkgVk0gaXMKK2lkZW50aWNhbCByaWdodCBh ZnRlciBhIFZNIGNoZWNrcG9pbnQsIGJ1dCBiZWNvbWVzIGRpZmZlcmVudCBh cyB0aGUgVk0KK2V4ZWN1dGVzIHRpbGwgdGhlIG5leHQgY2hlY2twb2ludC4g VG8gc3VwcG9ydCBkaXNrIGNvbnRlbnRzIGNoZWNrcG9pbnQsCit0aGUgbW9k aWZpZWQgZGlzayBjb250ZW50cyBpbiB0aGUgU2Vjb25kYXJ5IFZNIG11c3Qg YmUgYnVmZmVyZWQsIGFuZCBhcmUKK29ubHkgZHJvcHBlZCBhdCBuZXh0IGNo ZWNrcG9pbnQgdGltZS4gVG8gcmVkdWNlIHRoZSBuZXR3b3JrIHRyYW5zcG9y dGF0aW9uCitlZmZvcnQgZHVyaW5nIGEgdm1zdGF0ZSBjaGVja3BvaW50LCB0 aGUgZGlzayBtb2RpZmljYXRpb24gb3BlcmF0aW9ucyBvZgordGhlIFByaW1h cnkgZGlzayBhcmUgYXN5bmNocm9ub3VzbHkgZm9yd2FyZGVkIHRvIHRoZSBT ZWNvbmRhcnkgbm9kZS4KKworPT0gV29ya2Zsb3cgPT0KK1RoZSBmb2xsb3dp bmcgaXMgdGhlIGltYWdlIG9mIGJsb2NrIHJlcGxpY2F0aW9uIHdvcmtmbG93 OgorCisgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgIHxQcmlt YXJ5IFdyaXRlIFJlcXVlc3RzfCAgICAgICAgICAgIHxTZWNvbmRhcnkgV3Jp dGUgUmVxdWVzdHN8CisgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t KyAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKDQpCisgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVgor ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8tLS0tLS0tLS0tLS0tXAorICAgICAgICAgICAgICAgICAgfCAgICAg IENvcHkgYW5kIEZvcndhcmQgICAgICAgIHwgICAgICAgICAgICAgfAorICAg ICAgICAgICAgICAgICAgfC0tLS0tLS0tLSgxKS0tLS0tLS0tLS0rICAgICAg IHwgRGlzayBCdWZmZXIgfAorICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgIHwgICAgICAgICAgICAgfAorICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICgzKSAgICAgIFwt LS0tLS0tLS0tLS0tLworICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgc3BlY3VsYXRpdmUgICAgICBeCisgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgIHdyaXRlIHRocm91Z2ggICAgKDIpCisgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg IHwKKyAgICAgICAgICAgICAgICAgIFYgICAgICAgICAgICAgICAgICAgICAg ViAgICAgICAgICAgfAorICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0rICAg ICAgICAgICArLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgfCBQcmlt YXJ5IERpc2sgfCAgICAgICAgICAgfCBTZWNvbmRhcnkgRGlzayB8CisgICAg ICAgICAgICstLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICstLS0tLS0tLS0t LS0tLS0tKworCisgICAgMSkgUHJpbWFyeSB3cml0ZSByZXF1ZXN0cyB3aWxs IGJlIGNvcGllZCBhbmQgZm9yd2FyZGVkIHRvIFNlY29uZGFyeQorICAgICAg IFFFTVUuCisgICAgMikgQmVmb3JlIFByaW1hcnkgd3JpdGUgcmVxdWVzdHMg YXJlIHdyaXR0ZW4gdG8gU2Vjb25kYXJ5IGRpc2ssIHRoZQorICAgICAgIG9y aWdpbmFsIHNlY3RvciBjb250ZW50IHdpbGwgYmUgcmVhZCBmcm9tIFNlY29u ZGFyeSBkaXNrIGFuZAorICAgICAgIGJ1ZmZlcmVkIGluIHRoZSBEaXNrIGJ1 ZmZlciwgYnV0IGl0IHdpbGwgbm90IG92ZXJ3cml0ZSB0aGUgZXhpc3RpbmcK KyAgICAgICBzZWN0b3IgY29udGVudCAoaXQgY291bGQgYmUgZnJvbSBlaXRo ZXIgIlNlY29uZGFyeSBXcml0ZSBSZXF1ZXN0cyIgb3IKKyAgICAgICBwcmV2 aW91cyBDT1cgb2YgIlByaW1hcnkgV3JpdGUgUmVxdWVzdHMiKSBpbiB0aGUg RGlzayBidWZmZXIuCisgICAgMykgUHJpbWFyeSB3cml0ZSByZXF1ZXN0cyB3 aWxsIGJlIHdyaXR0ZW4gdG8gU2Vjb25kYXJ5IGRpc2suCisgICAgNCkgU2Vj b25kYXJ5IHdyaXRlIHJlcXVlc3RzIHdpbGwgYmUgYnVmZmVyZWQgaW4gdGhl IERpc2sgYnVmZmVyIGFuZCBpdAorICAgICAgIHdpbGwgb3ZlcndyaXRlIHRo ZSBleGlzdGluZyBzZWN0b3IgY29udGVudCBpbiB0aGUgYnVmZmVyLgorCis9 PSBBcmNoaXRlY3R1cmUgPT0KK1dlIGFyZSBnb2luZyB0byBpbXBsZW1lbnQg YmxvY2sgcmVwbGljYXRpb24gZnJvbSBtYW55IGJhc2ljCitibG9ja3MgdGhh dCBhcmUgYWxyZWFkeSBpbiBRRU1VLgorCisgICAgICAgICB2aXJ0aW8tYmxr ICAgICAgIHx8CisgICAgICAgICAgICAgXiAgICAgICAgICAgIHx8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC4tLS0tLS0tLS0tCisgICAgICAgICAg ICAgfCAgICAgICAgICAgIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgU2Vjb25kYXJ5CisgICAgICAgIDEgUXVvcnVtICAgICAgICAgIHx8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tCisgICAgICAg ICAvICAgICAgXCAgICAgICAgIHx8CisgICAgICAgIC8gICAgICAgIFwgICAg ICAgIHx8CisgICBQcmltYXJ5ICAgIDIgZmlsdGVyCisgICAgIGRpc2sgICAg ICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZpcnRpby1ibGsKKyAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAg ICAgMyBOQkQgIC0tLS0tLS0+ICAzIE5CRCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAg IGNsaWVudCAgICB8fCAgICAgc2VydmVyICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMiBmaWx0ZXIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgfHwgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLS0tLS0tLS4gICAgICAg ICAgICAgICAgIHx8ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfAorUHJpbWFyeSB8ICAgICAgICAg ICAgICAgICB8fCAgU2Vjb25kYXJ5IGRpc2sgPC0tLS0tLS0tLSBoaWRkZW4t ZGlzayA1IDwtLS0tLS0tLS0gYWN0aXZlLWRpc2sgNAorLS0tLS0tLS0nICAg ICAgICAgICAgICAgICB8fCAgICAgICAgfCAgICAgICAgICBiYWNraW5nICAg ICAgICBeICAgICAgIGJhY2tpbmcKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgfHwgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg ICAgICAgICAgICAgICAgICAgICAgICB8fCAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgIHx8 ICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgfHwgICAgICAgICAgIGRyaXZlLWJhY2t1cCBz eW5jPW5vbmUgNgorCisxKSBUaGUgZGlzayBvbiB0aGUgcHJpbWFyeSBpcyBy ZXByZXNlbnRlZCBieSBhIGJsb2NrIGRldmljZSB3aXRoIHR3bworY2hpbGRy ZW4sIHByb3ZpZGluZyByZXBsaWNhdGlvbiBiZXR3ZWVuIGEgcHJpbWFyeSBk aXNrIGFuZCB0aGUgaG9zdCB0aGF0CitydW5zIHRoZSBzZWNvbmRhcnkgVk0u IFRoZSByZWFkIHBhdHRlcm4gKGZpZm8pIGZvciBxdW9ydW0gY2FuIGJlIGV4 dGVuZGVkCit0byBtYWtlIHRoZSBwcmltYXJ5IGFsd2F5cyByZWFkIGZyb20g dGhlIGxvY2FsIGRpc2sgaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdoCitOQkQu CisKKzIpIFRoZSBuZXcgYmxvY2sgZmlsdGVyICh0aGUgbmFtZSBpcyByZXBs aWNhdGlvbikgd2lsbCBjb250cm9sIHRoZSBibG9jaworcmVwbGljYXRpb24u CisKKzMpIFRoZSBzZWNvbmRhcnkgZGlzayByZWNlaXZlcyB3cml0ZXMgZnJv bSB0aGUgcHJpbWFyeSBWTSB0aHJvdWdoIFFFTVUncworZW1iZWRkZWQgTkJE IHNlcnZlciAoc3BlY3VsYXRpdmUgd3JpdGUtdGhyb3VnaCkuCisKKzQpIFRo ZSBkaXNrIG9uIHRoZSBzZWNvbmRhcnkgaXMgcmVwcmVzZW50ZWQgYnkgYSBj dXN0b20gYmxvY2sgZGV2aWNlCisoY2FsbGVkIGFjdGl2ZS1kaXNrKS4gSXQg c2hvdWxkIHN0YXJ0IGFzIGFuIGVtcHR5IGRpc2ssIGFuZCB0aGUgZm9ybWF0 CitzaG91bGQgc3VwcG9ydCBiZHJ2X21ha2VfZW1wdHkoKSBhbmQgYmFja2lu ZyBmaWxlLgorCis1KSBUaGUgaGlkZGVuLWRpc2sgaXMgY3JlYXRlZCBhdXRv bWF0aWNhbGx5LiBJdCBidWZmZXJzIHRoZSBvcmlnaW5hbCBjb250ZW50Cit0 aGF0IGlzIG1vZGlmaWVkIGJ5IHRoZSBwcmltYXJ5IFZNLiBJdCBzaG91bGQg YWxzbyBzdGFydCBhcyBhbiBlbXB0eSBkaXNrLAorYW5kIHRoZSBkcml2ZXIg c3VwcG9ydHMgYmRydl9tYWtlX2VtcHR5KCkgYW5kIGJhY2tpbmcgZmlsZS4K KworNikgVGhlIGRyaXZlLWJhY2t1cCBqb2IgKHN5bmM9bm9uZSkgaXMgcnVu IHRvIGFsbG93IGhpZGRlbi1kaXNrIHRvIGJ1ZmZlcgorYW55IHN0YXRlIHRo YXQgd291bGQgb3RoZXJ3aXNlIGJlIGxvc3QgYnkgdGhlIHNwZWN1bGF0aXZl IHdyaXRlLXRocm91Z2gKK29mIHRoZSBOQkQgc2VydmVyIGludG8gdGhlIHNl Y29uZGFyeSBkaXNrLiBTbyBiZWZvcmUgYmxvY2sgcmVwbGljYXRpb24sCit0 aGUgcHJpbWFyeSBkaXNrIGFuZCBzZWNvbmRhcnkgZGlzayBzaG91bGQgY29u dGFpbiB0aGUgc2FtZSBkYXRhLgorCis9PSBGYWlsdXJlIEhhbmRsaW5nID09 CitUaGVyZSBhcmUgNyBpbnRlcm5hbCBlcnJvcnMgd2hlbiBibG9jayByZXBs aWNhdGlvbiBpcyBydW5uaW5nOgorMS4gSS9PIGVycm9yIG9uIHByaW1hcnkg ZGlzaworMi4gRm9yd2FyZGluZyBwcmltYXJ5IHdyaXRlIHJlcXVlc3RzIGZh aWxlZAorMy4gQmFja3VwIGZhaWxlZAorNC4gSS9PIGVycm9yIG9uIHNlY29u ZGFyeSBkaXNrCis1LiBJL08gZXJyb3Igb24gYWN0aXZlIGRpc2sKKzYuIE1h a2luZyBhY3RpdmUgZGlzayBvciBoaWRkZW4gZGlzayBlbXB0eSBmYWlsZWQK KzcuIERvaW5nIGZhaWxvdmVyIGZhaWxlZAorSW4gY2FzZSAxIGFuZCA1LCB3 ZSBqdXN0IHJlcG9ydCB0aGUgZXJyb3IgdG8gdGhlIGRpc2sgbGF5ZXIuIElu IGNhc2UgMiwgMywKKzQgYW5kIDYsIHdlIGp1c3QgcmVwb3J0IGJsb2NrIHJl cGxpY2F0aW9uJ3MgZXJyb3IgdG8gRlQvSEEgbWFuYWdlciAod2hpY2gKK2Rl Y2lkZXMgd2hlbiB0byBkbyBhIG5ldyBjaGVja3BvaW50LCB3aGVuIHRvIGRv IGZhaWxvdmVyKS4KK0luIGNhc2UgNywgaWYgYWN0aXZlIGNvbW1pdCBmYWls ZWQsIHdlIHVzZSByZXBsaWNhdGlvbiBmYWlsb3ZlciBmYWlsZWQgc3RhdGUK K2luIFNlY29uZGFyeSdzIHdyaXRlIG9wZXJhdGlvbiAod2hhdCBkZWNpZGVz IHdoaWNoIHRhcmdldCB0byB3cml0ZSkuCisKKz09IE5ldyBibG9jayBkcml2 ZXIgaW50ZXJmYWNlID09CitXZSBhZGQgZm91ciBibG9jayBkcml2ZXIgaW50 ZXJmYWNlcyB0byBjb250cm9sIGJsb2NrIHJlcGxpY2F0aW9uOgorYS4gcmVw bGljYXRpb25fc3RhcnRfYWxsKCkKKyAgIFN0YXJ0IGJsb2NrIHJlcGxpY2F0 aW9uLCBjYWxsZWQgaW4gbWlncmF0aW9uL2NoZWNrcG9pbnQgdGhyZWFkLgor ICAgV2UgbXVzdCBjYWxsIGJsb2NrX3JlcGxpY2F0aW9uX3N0YXJ0X2FsbCgp IGluIHNlY29uZGFyeSBRRU1VIGJlZm9yZQorICAgY2FsbGluZyBibG9ja19y ZXBsaWNhdGlvbl9zdGFydF9hbGwoKSBpbiBwcmltYXJ5IFFFTVUuIFRoZSBj YWxsZXIKKyAgIG11c3QgaG9sZCB0aGUgSS9PIG11dGV4IGxvY2sgaWYgaXQg aXMgaW4gbWlncmF0aW9uL2NoZWNrcG9pbnQKKyAgIHRocmVhZC4KK2IuIHJl cGxpY2F0aW9uX2RvX2NoZWNrcG9pbnRfYWxsKCkKKyAgIFRoaXMgaW50ZXJm YWNlIGlzIGNhbGxlZCBhZnRlciBhbGwgVk0gc3RhdGUgaXMgdHJhbnNmZXJy ZWQgdG8KKyAgIFNlY29uZGFyeSBRRU1VLiBUaGUgRGlzayBidWZmZXIgd2ls bCBiZSBkcm9wcGVkIGluIHRoaXMgaW50ZXJmYWNlLgorICAgVGhlIGNhbGxl ciBtdXN0IGhvbGQgdGhlIEkvTyBtdXRleCBsb2NrIGlmIGl0IGlzIGluIG1p Z3JhdGlvbi9jaGVja3BvaW50CisgICB0aHJlYWQuCitjLiByZXBsaWNhdGlv bl9nZXRfZXJyb3JfYWxsKCkKKyAgIFRoaXMgaW50ZXJmYWNlIGlzIGNhbGxl ZCB0byBjaGVjayBpZiBlcnJvciBoYXBwZW5lZCBpbiByZXBsaWNhdGlvbi4K KyAgIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBJL08gbXV0ZXggbG9jayBp ZiBpdCBpcyBpbiBtaWdyYXRpb24vY2hlY2twb2ludAorICAgdGhyZWFkLgor ZC4gcmVwbGljYXRpb25fc3RvcF9hbGwoKQorICAgSXQgaXMgY2FsbGVkIG9u IGZhaWxvdmVyLiBXZSB3aWxsIGZsdXNoIHRoZSBEaXNrIGJ1ZmZlciBpbnRv CisgICBTZWNvbmRhcnkgRGlzayBhbmQgc3RvcCBibG9jayByZXBsaWNhdGlv bi4gVGhlIHZtIHNob3VsZCBiZSBzdG9wcGVkCisgICBiZWZvcmUgY2FsbGlu ZyBpdCBpZiB5b3UgdXNlIHRoaXMgQVBJIHRvIHNodXRkb3duIHRoZSBndWVz dCwgb3Igb3RoZXIKKyAgIHRoaW5ncyBleGNlcHQgZmFpbG92ZXIuIFRoZSBj YWxsZXIgbXVzdCBob2xkIHRoZSBJL08gbXV0ZXggbG9jayBpZiBpdCBpcwor ICAgaW4gbWlncmF0aW9uL2NoZWNrcG9pbnQgdGhyZWFkLgorCis9PSBVc2Fn ZSA9PQorUHJpbWFyeToKKyAgLWRyaXZlIGlmPXh4eCxkcml2ZXI9cXVvcnVt LHJlYWQtcGF0dGVybj1maWZvLGlkPWNvbG8xLHZvdGUtdGhyZXNob2xkPTEs XAorICAgICAgICAgY2hpbGRyZW4uMC5maWxlLmZpbGVuYW1lPTEucmF3LFwK KyAgICAgICAgIGNoaWxkcmVuLjAuZHJpdmVyPXJhdworCisgIFJ1biBxbXAg Y29tbWFuZCBpbiBwcmltYXJ5IHFlbXU6CisgICAgeyAnZXhlY3V0ZSc6ICdo dW1hbi1tb25pdG9yLWNvbW1hbmQnLAorICAgICAgJ2FyZ3VtZW50cyc6IHsK KyAgICAgICAgICAnY29tbWFuZC1saW5lJzogJ2RyaXZlX2FkZCAtbiBidWRk eSBkcml2ZXI9cmVwbGljYXRpb24sbW9kZT1wcmltYXJ5LGZpbGUuZHJpdmVy PW5iZCxmaWxlLmhvc3Q9eHh4eCxmaWxlLnBvcnQ9eHh4eCxmaWxlLmV4cG9y dD1jb2xvMSxub2RlLW5hbWU9bmJkX2NsaWVudDEnCisgICAgICB9CisgICAg fQorICAgIHsgJ2V4ZWN1dGUnOiAneC1ibG9ja2Rldi1jaGFuZ2UnLAorICAg ICAgJ2FyZ3VtZW50cyc6IHsKKyAgICAgICAgICAncGFyZW50JzogJ2NvbG8x JywKKyAgICAgICAgICAnbm9kZSc6ICduYmRfY2xpZW50MScKKyAgICAgIH0K KyAgICB9CisgIE5vdGU6CisgIDEuIFRoZXJlIHNob3VsZCBiZSBvbmx5IG9u ZSBOQkQgQ2xpZW50IGZvciBlYWNoIHByaW1hcnkgZGlzay4KKyAgMi4gaG9z dCBpcyB0aGUgc2Vjb25kYXJ5IHBoeXNpY2FsIG1hY2hpbmUncyBob3N0bmFt ZSBvciBJUAorICAzLiBFYWNoIGRpc2sgbXVzdCBoYXZlIGl0cyBvd24gZXhw b3J0IG5hbWUuCisgIDQuIEl0IGlzIGFsbCBhIHNpbmdsZSBhcmd1bWVudCB0 byAtZHJpdmUgYW5kIHlvdSBzaG91bGQgaWdub3JlIHRoZQorICAgICBsZWFk aW5nIHdoaXRlc3BhY2UuCisgIDUuIFRoZSBxbXAgY29tbWFuZCBsaW5lIG11 c3QgYmUgcnVuIGFmdGVyIHJ1bm5pbmcgcW1wIGNvbW1hbmQgbGluZSBpbgor ICAgICBzZWNvbmRhcnkgcWVtdS4KKyAgNi4gQWZ0ZXIgZmFpbG92ZXIgd2Ug bmVlZCByZW1vdmUgY2hpbGRyZW4uMSAocmVwbGljYXRpb24gZHJpdmVyKS4K KworU2Vjb25kYXJ5OgorICAtZHJpdmUgaWY9bm9uZSxkcml2ZXI9cmF3LGZp bGUuZmlsZW5hbWU9MS5yYXcsaWQ9Y29sbzEgXAorICAtZHJpdmUgaWY9eHh4 LGlkPXRvcHh4eCxkcml2ZXI9cmVwbGljYXRpb24sbW9kZT1zZWNvbmRhcnks dG9wLWlkPXRvcHh4eFwKKyAgICAgICAgIGZpbGUuZmlsZS5maWxlbmFtZT1h Y3RpdmVfZGlzay5xY293MixcCisgICAgICAgICBmaWxlLmRyaXZlcj1xY293 MixcCisgICAgICAgICBmaWxlLmJhY2tpbmcuZmlsZS5maWxlbmFtZT1oaWRk ZW5fZGlzay5xY293MixcCisgICAgICAgICBmaWxlLmJhY2tpbmcuZHJpdmVy PXFjb3cyLFwKKyAgICAgICAgIGZpbGUuYmFja2luZy5iYWNraW5nPWNvbG8x CisKKyAgVGhlbiBydW4gcW1wIGNvbW1hbmQgaW4gc2Vjb25kYXJ5IHFlbXU6 CisgICAgeyAnZXhlY3V0ZSc6ICduYmQtc2VydmVyLXN0YXJ0JywKKyAgICAg ICdhcmd1bWVudHMnOiB7CisgICAgICAgICAgJ2FkZHInOiB7CisgICAgICAg ICAgICAgICd0eXBlJzogJ2luZXQnLAorICAgICAgICAgICAgICAnZGF0YSc6 IHsKKyAgICAgICAgICAgICAgICAgICdob3N0JzogJ3h4eCcsCisgICAgICAg ICAgICAgICAgICAncG9ydCc6ICd4eHgnCisgICAgICAgICAgICAgIH0KKyAg ICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIHsgJ2V4ZWN1dGUnOiAn bmJkLXNlcnZlci1hZGQnLAorICAgICAgJ2FyZ3VtZW50cyc6IHsKKyAgICAg ICAgICAnZGV2aWNlJzogJ2NvbG8xJywKKyAgICAgICAgICAnd3JpdGFibGUn OiB0cnVlCisgICAgICB9CisgICAgfQorCisgIE5vdGU6CisgIDEuIFRoZSBl eHBvcnQgbmFtZSBpbiBzZWNvbmRhcnkgUUVNVSBjb21tYW5kIGxpbmUgaXMg dGhlIHNlY29uZGFyeQorICAgICBkaXNrJ3MgaWQuCisgIDIuIFRoZSBleHBv cnQgbmFtZSBmb3IgdGhlIHNhbWUgZGlzayBtdXN0IGJlIHRoZSBzYW1lCisg IDMuIFRoZSBxbXAgY29tbWFuZCBuYmQtc2VydmVyLXN0YXJ0IGFuZCBuYmQt c2VydmVyLWFkZCBtdXN0IGJlIHJ1bgorICAgICBiZWZvcmUgcnVubmluZyB0 aGUgcW1wIGNvbW1hbmQgbWlncmF0ZSBvbiBwcmltYXJ5IFFFTVUKKyAgNC4g QWN0aXZlIGRpc2ssIGhpZGRlbiBkaXNrIGFuZCBuYmQgdGFyZ2V0J3MgbGVu Z3RoIHNob3VsZCBiZSB0aGUKKyAgICAgc2FtZS4KKyAgNS4gSXQgaXMgYmV0 dGVyIHRvIHB1dCBhY3RpdmUgZGlzayBhbmQgaGlkZGVuIGRpc2sgaW4gcmFt ZGlzay4KKyAgNi4gSXQgaXMgYWxsIGEgc2luZ2xlIGFyZ3VtZW50IHRvIC1k cml2ZSwgYW5kIHlvdSBzaG91bGQgaWdub3JlCisgICAgIHRoZSBsZWFkaW5n IHdoaXRlc3BhY2UuCisKK0FmdGVyIEZhaWxvdmVyOgorUHJpbWFyeToKKyAg VGhlIHNlY29uZGFyeSBob3N0IGlzIGRvd24sIHNvIHdlIHNob3VsZCBydW4g dGhlIGZvbGxvd2luZyBxbXAgY29tbWFuZAorICB0byByZW1vdmUgdGhlIG5i ZCBjaGlsZCBmcm9tIHRoZSBxdW9ydW06CisgIHsgJ2V4ZWN1dGUnOiAneC1i bG9ja2Rldi1jaGFuZ2UnLAorICAgICdhcmd1bWVudHMnOiB7CisgICAgICAg ICdwYXJlbnQnOiAnY29sbzEnLAorICAgICAgICAnY2hpbGQnOiAnY2hpbGRy ZW4uMScKKyAgICB9CisgIH0KKyAgeyAnZXhlY3V0ZSc6ICdodW1hbi1tb25p dG9yLWNvbW1hbmQnLAorICAgICdhcmd1bWVudHMnOiB7CisgICAgICAgICdj b21tYW5kLWxpbmUnOiAnZHJpdmVfZGVsIHh4eHgnCisgICAgfQorICB9Cisg IE5vdGU6IHRoZXJlIGlzIG5vIHFtcCBjb21tYW5kIHRvIHJlbW92ZSB0aGUg YmxvY2tkZXYgbm93CisKK1NlY29uZGFyeToKKyAgVGhlIHByaW1hcnkgaG9z dCBpcyBkb3duLCBzbyB3ZSBzaG91bGQgZG8gdGhlIGZvbGxvd2luZyB0aGlu ZzoKKyAgeyAnZXhlY3V0ZSc6ICduYmQtc2VydmVyLXN0b3AnIH0KKworVE9E TzoKKzEuIENvbnRpbnVvdXMgYmxvY2sgcmVwbGljYXRpb24KKzIuIFNoYXJl ZCBkaXNrCi0tIAoxLjkuMwoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== --------------000600020706000408040103--