From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id 0E07132AED8; Mon, 20 Mar 2023 18:17:17 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 0E07132AED8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1679325437; bh=YfPlmD5JmXHDkfTCEpABrm9dj1ds6LMEaVPlWonbm6k=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=A2TE9AucJAmWPK+8pz1x40Ye9LZPRc87XFVpi7BZ0hQt1Ao10F3++A8CuRVnjSQ0Z you7ke+tb+jNUVgNANXFOkdTDjVlHr2EPD6DSMOp3/nkE6d3J3n3SJGjlz1zFItG5A 5e56cGbJmhnir1Q4VMeLJ1nGtq8CeP2+3l00N7IE= Received: from f426.i.mail.ru (f426.i.mail.ru [45.84.128.213]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 2CCBD32AED8 for ; Mon, 20 Mar 2023 18:17:15 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 2CCBD32AED8 Received: by f426.i.mail.ru with local (envelope-from ) id 1peHG5-0000Zr-5b; Mon, 20 Mar 2023 18:17:13 +0300 Received: by e.mail.ru with HTTP; Mon, 20 Mar 2023 18:17:13 +0300 To: =?UTF-8?B?U2VyZ2V5IEthcGx1bg==?= MIME-Version: 1.0 X-Mailer: Mail.Ru Mailer 1.0 X-SenderField-ReMsg: 16788968911966947015 X-SenderField-Remind: 0 Date: Mon, 20 Mar 2023 18:17:13 +0300 X-Priority: 3 (Normal) Message-ID: <1679325433.571861292@f426.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--9a7260Ef481f29dFB9c484dF39bDf7331679325433" In-Reply-To: <5d25f8889666f875fb0429ba373f8884b039b4c5.1678895861.git.skaplun@tarantool.org> References: <5d25f8889666f875fb0429ba373f8884b039b4c5.1678895861.git.skaplun@tarantool.org> X-7564579A: B8F34718100C35BD X-77F55803: 119C1F4DF6A9251C6E041ED1BDE47B19D16283734445D8D6ED31D40BAB75BB968FD872164937FA4CF617979B249ECC0C61EFE5078D0CD85FA1E20A1E8FB1D99285F92AFE9A1E526C X-C8649E89: 4E36BF7865823D7055A7F0CF078B5EC49A30900B95165D34D1AE09A115117C96F9455F1D8E820EFDECB8DC40DF5E7F1468290A45B78C1CDA5021091A2B97EA411D7E09C32AA3244C49043FB4F233FBB962C0CD11BDCB746C5A1673A01BA68E40FACE5A9C96DEB163 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5+wYjsrrSY/u8Y3PrTqANeitKFiSd6Yd7yPpbiiZ/d5BsxIjK0jGQgCHUM3Ry2Lt2G3MDkMauH3h0dBdQGj+BB/iPzQYh7XS329fgu+/vnDhU2qf0ADCaU8BEGZBRXXpBg== X-Mailru-MI: 80000000000000000800 X-Mailru-Sender: 11C2EC085EDE56FA0B90E2F0BF9E58811E0430BF0660CC38D17E9C25273824D278F9E014F7DC087406CD02445D2D9C8FA2BFD6D8330F0C2D563E610FBBDBB4C842051EA7CBBFB509093DA5C00B83CE8412EB40C6FA10D71EFD657A8799238ED55FEEDEB644C299C0ED14614B50AE0675 X-Mras: OK Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_v1_luajit_2/5=5D_test=3A_?= =?utf-8?q?introduce_module_for_C_tests?= X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Maxim Kokryashkin via Tarantool-patches Reply-To: =?UTF-8?B?TWF4aW0gS29rcnlhc2hraW4=?= Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" ----ALT--9a7260Ef481f29dFB9c484dF39bDf7331679325433 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkhpIQpUaGFua3MgZm9yIHRoZSBwYXRjaCEKUGxlYXNlIGNvbnNpZGVyIG15IGNvbW1lbnRzIGJl bG93LgrCoCAKPtCh0YDQtdC00LAsIDE1INC80LDRgNGC0LAgMjAyMywgMTk6MTQgKzAzOjAwINC+ 0YIgU2VyZ2V5IEthcGx1biA8c2thcGx1bkB0YXJhbnRvb2wub3JnPjoKPsKgCj5XZSBuZWVkIGFu IGluc3RydW1lbnQgdG8gd3JpdGUgdGVzdHMgaW4gcGxhaW4gQyBmb3IgTHVhSklULCB0byBiZSBh YmxlOgo+KiBlYXNpbHkgdGVzdCBMdWFDIEFQSQo+KiB0ZXN0IHBhdGNoZXMgd2l0aG91dCB1c2Fn ZSBwbGFpbiBMdWEKVHlwbzogcy91c2FnZS91c2FnZSBvZi8KPiogd3JpdGUgdW5pdCB0ZXN0cwo+ KiBzdGFydHVwIEx1YUpJVCB3aXRoIGN1c3RvbSBtZW1vcnkgYWxsb2NhdG9yLCB0byB0ZXN0IHNv bWUgR0MgaXNzdWVzCj4qIG1heWJlLCBpbiBmdXR1cmUsIHVzZSBjdXN0b20gaGFzaGluZyBmdW5j dGlvbiB0byB0ZXN0IGEgYmVoYXZpb3IKPsKgwqBvZiBMdWFKSVQgdGFibGVzCj5hbmQgc28gb24u Cj4KPlRoZSA8dGVzdC5jPiBtb2R1bGUgc2VydmVzIHRvIGFjaGlldmUgdGhlc2UgZ29hbHMgd2l0 aG91dCB0b28gZmFuY3kKPmZlYXR1cmVzLgo+Cj5JdCdzIGZ1bmN0aW9uYWxpdHkgaW5zcGlyZWQg YnkgY21va2EgQVBJIFsxXSwgYnV0IG9ubHkgVEFQMTQgWzJdCj5wcm90b2NvbCBpcyBzdXBwb3J0 ZWQgKFZlcnNpb24gb2YgVEFQIHNldCB0byAxMyB0byBiZSBjb21wYXRpYmxlIHdpdGgKPm9sZCBU QVAxMyBoYXJuZXNzZXMpLgo+Cj5UaGUgZ3JvdXAgb2YgdW5pdCB0ZXN0cyBpcyBkZWNsYXJlZCBs aWtlIHRoZSBmb2xsb3dpbmc6Cj4KPnwgdm9pZCAqdF9zdGF0ZSA9IE5VTEw7Cj58IGNvbnN0IHN0 cnVjdCB0ZXN0X3VuaXQgdGdyb3VwW10gPSB7Cj58IHRlc3RfdW5pdF9uZXcodGVzdF9iYXNlKSwK PnwgdGVzdF91bml0X25ldyh0ZXN0X3N1YnRlc3QpLAo+fCB9Owo+fCByZXR1cm4gdGVzdF9ydW5f Z3JvdXAodGdyb3VwLCB0X3N0YXRlKTsKPgo+YHRlc3RfcnVuX2dyb3VwKClgIHJ1bnMgdGhlIHdo b2xlIGdyb3VwIG9mIHRlc3RzLCByZXR1cm5zCj5gVEVTVF9FWElUX1NVQ0NFU1NgIG9yIGBURVNU X0VYSVRfRkFJTFVSRWAuCj4KPklmIGEgc2ltaWxhciBncm91cCBpcyBkZWNsYXJlZCBpbnNpZGUg dW5pdCB0ZXN0LCB0aGlzIGdyb3VwIHdpbGwgYmUKPmNvbnNpZGVyZWQgYXMgYSBzdWJ0ZXN0Lgo+ Cj5UaGlzIGxpYnJhcnkgcHJvdmlkZXMgYW4gQVBJIHNpbWlsYXIgdG8gZ2xpYmMgKDMpIGBhc3Nl cnQoKWAgdG8gdXNlCj5pbnNpZGUgdW5pdCB0ZXN0cy4gYGFzc2VydF9bdHJ1ZSxmYWxzZV0oKWAg YXJlIHVzZWZ1bCBmb3IgY29uZGl0aW9uCj5jaGVja3MgYW5kIGBhc3NlcnRfe3R5cGV9X1tub3Rf LF1fZXF1YWwoKWAgYXJlIHVzZWZ1bCBmb3IgdmFsdWUKPmNvbXBhcmlzb25zLiBJZiBzb21lIGFz c2VydGlvbiBmYWlscyBkaWFnbm9zdGljIGlzIHNldCwgYWxsIHRlc3QKPmNvbnNpZGVyZWQgYXMg ZmFpbGluZyBhbmQgZmluaXNoZWQgdmlhIGBsb25nam1wKClgLCBzbyB0aGVzZSBhc3NlcnRpb25z Cj5jYW4gYmUgdXNlZCBpbnNpZGUgY3VzdG9tIHN1YnJvdXRpbmVzLgo+Cj5BbHNvLCB0aGlzIG1v ZHVsZSBwcm92aWRlcyBhYmlsaXR5IHRvIHNraXAgb25lIHRlc3Qgb3IgYWxsIHRlc3RzLCBtYXJr Cj50ZXN0IGFzIHRvZG8sIGJhaWwgb3V0IGFsbCB0ZXN0cy4gYHNraXAoKWAsIGBza2lwX2FsbCgp YCBhbmQgYHRvZG8oKWAKPm1hY3JvcyBhcmUgaW1wbGVtZW50ZWQgdmlhIGFuIGVhcmx5IHJldHVy biB0byBiZSB1c2VkIG9ubHkgaW4gdGhlIHRlc3QKPmJvZHkgdG8gbWFrZSBza2lwcGluZyBjbGVh ci4gYHNraXBfYWxsKClgIG1heSBiZSB1c2VkIGJvdGggZm9yIHRoZQo+cGFyZW50IHRlc3QgYW5k IGZvciBhIHN1YnRlc3QuCj4KPkFzIGEgcGFydCBvZiB0aGlzIGNvbW1pdCwgdGFyYW50b29sLWMt dGVzdHMgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgd2l0aAo+dGhlIGNvcnJlc3BvbmRpbmcgQ01ha2VM aXN0cy50eHQgZmlsZSB0byBidWlsZCB0aGlzIHRlc3QgbGlicmFyeS4KPlRlc3RzIHRvIGJlIHJl d3JpdHRlbiBpbiBDIHdpdGggdGhpcyBsaWJyYXJ5IGluIHRoZSBuZXh0IGNvbW1pdCBhbmQKPnBs YWNlZCBhcyB1bml0IHRlc3RzIGFyZToKPiogbWlzY2xpYi1nZXRtZXRyaWNzLWNhcGkudGVzdC5s dWEKPiogbWlzY2xpYi1zeXNwcm9mLWNhcGkudGVzdC5sdWEKPgo+Rm9yIG5vdyB0aGUgdGFyYW50 b29sLWMtdGVzdHMgdGFyZ2V0IGp1c3QgYnVpbGQgdGhlIHRlc3QgbGlicmFyeSB3aXRob3V0Cj5u ZXcgdGVzdHMgdG8gcnVuLgo+Cj5bMV06ICBodHRwczovL2dpdGh1Yi5jb20vY2xpYnMvY21vY2th Cj5bMl06ICBodHRwczovL3Rlc3Rhbnl0aGluZy5vcmcvdGFwLXZlcnNpb24tMTQtc3BlY2lmaWNh dGlvbi5odG1sCj4KPlBhcnQgb2YgdGFyYW50b29sL3RhcmFudG9vbCM3OTAwCj4tLS0KPgo+SSBs ZWZ0IHNvbWUgbm90ZXMgYWJvdXQgdGhpcyB0ZXN0IG1vZHVsZSBhbmQgSSdsbCBiZSBoYXBweSB0 byByZWFkIHlvdXIKPnRob3VnaHRzIGFib3V0IHRoZW0uCj4KPiogU2hvdWxkIHdlIGNhc3QgdG8g YCh2b2lkICopYCBpbiBgYXNzZXJ0X3B0cl9bbm90X11lcXVhbCgpYD8gT3IgaXQgd2lsbAo+wqDC oGJlIGJldHRlciB0byBub3RpY2UgdXNlciBhYm91dCBiYWQgdHlwZSBjb21wYXJpc29ucz8KSSBi ZWxpZXZlIHdlIHNob3VsZCBub3QgY2FzdCBpdCB0byB0aGUgKHZvaWTCoCopIGFuZCBub3RpY2Ug dXNlci4gSXQgaXMgdGhlIEMKbGFuZ3VhZ2UsIHNvIGlmIHdlIGNhbiBwcmV2ZW50IHNvbWUgcG90 ZW50aWFsbHkgaW5jb3JyZWN0IGJlaGF2aW9yIGluCmNvbXBpbGUgdGltZSwgd2Ugc2hvdWxkIGRv IHRoYXQuCj4qIEhvdyBvZnRlbiBzaG91bGQgd2UgZmx1c2ggc3Rkb3V0PwpJdCBzZWVtcyB0byBi ZSBvZnRlbiBlbm91Z2ggZm9yIG5vdy4gSSBiZWxpZXZlLCBpdCBpcyBiZXR0ZXIKdG8gZ2V0IHVz ZWQgdG8gdGhhdCBtb2R1bGUgYW5kIGFkZCBhZGRpdGlvbmFsIGBmbHVzaCgpYOKAmWVzCmEgbGl0 dGxlIGJpdCBkb3duIHRoZSByb2FkLCBpZiB3ZeKAmWxsIG5lZWQgdGhhdC4KPiogT2J2aW91c2x5 IHdlIGNhbiB1c2UgYF90ZXN0X3J1bl9ncm91cChfX2Z1bmNfXywgTlVMTCwgMCwgTlVMTClgIHdp dGgKPsKgwqBgdGVzdF9zZXRfc2tpcF9yZWFzb24oKWAgc2V0IHRvIGltcGxlbWVudCBgc2tpcF9h bGwoKWAgZnVuY3Rpb25hbGl0eS4KPsKgwqBOZXZlcnRoZWxlc3MsIEkgZGVjaWRlZCB0byByZWlt cGxpbWVudCBpdCdzIGxvZ2ljIHNlcGFyYXRlbHkgdG8gYmUKPsKgwqBtb3JlIGVhc2lseSBtYWlu dGFpbmVkIGluIHRoZSBmdXR1cmUuCklmIHdl4oCZbGwgY2hhbmdlIHRoZSBzaWduYXR1cmUgdG8g dGhlIG9uZSBJIHByb3Bvc2VkIGJlbG93LCB0aGXCoApgX3Rlc3RfcnVuX2dyb3VwKF9fZnVuY19f LCBOVUxMLCAwLCBOVUxMKWAgYXBwcm9hY2ggaXMgbm90CnBvc3NpYmxlIGFueW1vcmUsIHNvIHRo ZXJlIGlzIG5vdGhpbmcgd3Jvbmcgd2l0aCByZWltcGxlbWVudGF0aW9uLgo+Cj4KPsKgdGVzdC9D TWFrZUxpc3RzLnR4dCB8IDIgKwo+wqB0ZXN0L3RhcmFudG9vbC1jLXRlc3RzL0NNYWtlTGlzdHMu dHh0IHwgNDMgKysrKysKPsKgdGVzdC90YXJhbnRvb2wtYy10ZXN0cy90ZXN0LmMgfCAyNTEgKysr KysrKysrKysrKysrKysrKysrKysrKysKPsKgdGVzdC90YXJhbnRvb2wtYy10ZXN0cy90ZXN0Lmgg fCAyNTEgKysrKysrKysrKysrKysrKysrKysrKysrKysKPsKgNCBmaWxlcyBjaGFuZ2VkLCA1NDcg aW5zZXJ0aW9ucygrKQo+wqBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC90YXJhbnRvb2wtYy10ZXN0 cy9DTWFrZUxpc3RzLnR4dAo+wqBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC90YXJhbnRvb2wtYy10 ZXN0cy90ZXN0LmMKPsKgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3QvdGFyYW50b29sLWMtdGVzdHMv dGVzdC5oCj4KPmRpZmYgLS1naXQgYS90ZXN0L0NNYWtlTGlzdHMudHh0IGIvdGVzdC9DTWFrZUxp c3RzLnR4dAo+aW5kZXggYTgyNjJiMTIuLjQ3Mjk2YTIyIDEwMDY0NAo+LS0tIGEvdGVzdC9DTWFr ZUxpc3RzLnR4dAo+KysrIGIvdGVzdC9DTWFrZUxpc3RzLnR4dAo+QEAgLTQ4LDEyICs0OCwxNCBA QCBzZXBhcmF0ZV9hcmd1bWVudHMoTFVBSklUX1RFU1RfQ09NTUFORCkKPsKgYWRkX3N1YmRpcmVj dG9yeShMdWFKSVQtdGVzdHMpCj7CoGFkZF9zdWJkaXJlY3RvcnkoUFVDLVJpby1MdWEtNS4xLXRl c3RzKQo+wqBhZGRfc3ViZGlyZWN0b3J5KGx1YS1IYXJuZXNzLXRlc3RzKQo+K2FkZF9zdWJkaXJl Y3RvcnkodGFyYW50b29sLWMtdGVzdHMpCj7CoGFkZF9zdWJkaXJlY3RvcnkodGFyYW50b29sLXRl c3RzKQo+wqAKPsKgYWRkX2N1c3RvbV90YXJnZXQoJHtQUk9KRUNUX05BTUV9LXRlc3QgREVQRU5E Uwo+wqDCoMKgTHVhSklULXRlc3RzCj7CoMKgwqBQVUMtUmlvLUx1YS01LjEtdGVzdHMKPsKgwqDC oGx1YS1IYXJuZXNzLXRlc3RzCj4rIHRhcmFudG9vbC1jLXRlc3RzCj7CoMKgwqB0YXJhbnRvb2wt dGVzdHMKPsKgKQo+wqAKPmRpZmYgLS1naXQgYS90ZXN0L3RhcmFudG9vbC1jLXRlc3RzL0NNYWtl TGlzdHMudHh0IGIvdGVzdC90YXJhbnRvb2wtYy10ZXN0cy9DTWFrZUxpc3RzLnR4dAo+bmV3IGZp bGUgbW9kZSAxMDA2NDQKPmluZGV4IDAwMDAwMDAwLi41ZWJlYTQ0MQo+LS0tIC9kZXYvbnVsbAo+ KysrIGIvdGVzdC90YXJhbnRvb2wtYy10ZXN0cy9DTWFrZUxpc3RzLnR4dAo+QEAgLTAsMCArMSw0 MyBAQAo+K2ZpbmRfcHJvZ3JhbShQUk9WRSBwcm92ZSkKPitpZihOT1QgUFJPVkUpCj4rIG1lc3Nh Z2UoV0FSTklORyAiYHByb3ZlJyBpcyBub3QgZm91bmQsIHNvIHRhcmFudG9vbC1jLXRlc3RzIHRh cmdldCBpcyBub3QgZ2VuZXJhdGVkIikKPisgcmV0dXJuKCkKPitlbmRpZigpClRoZXJlIGlzIHRo ZSBzYW1lIGNoZWNrIGluIHRoZSB0ZXN0L3RhcmFudG9vbC10ZXN0cy9DTWFrZUxpc3RzLnR4dC4g TWF5YmUKd2Ugc2hvdWxkIG1vdmUgaXQgdG8gdGhlIGhpZ2hlci1sZXZlbCBDTWFrZSBzbyB0aGUg bG93ZXItbGV2ZWwgQ01ha2VMaXN0cwppbmhlcml0IGl0Lgo+Kwo+K3NldChDX1RFU1RfU1VGRklY IC5jX3Rlc3QpCj4rc2V0KENfVEVTVF9GTEFHUyAtLWZhaWx1cmVzIC0tc2h1ZmZsZSkKPisKPitp ZihDTUFLRV9WRVJCT1NFX01BS0VGSUxFKQo+KyBsaXN0KEFQUEVORCBDX1RFU1RfRkxBR1MgLS12 ZXJib3NlKQo+K2VuZGlmKCkKPisKPisjIEJ1aWxkIGxpYnRlc3QuCj4rCj4rc2V0KFRFU1RfTElC X05BTUUgInRlc3QiKQo+K2FkZF9saWJyYXJ5KGxpYnRlc3QgU1RBVElDIEVYQ0xVREVfRlJPTV9B TEwgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Rlc3QuYykKPit0YXJnZXRfaW5jbHVkZV9k aXJlY3RvcmllcyhsaWJ0ZXN0IFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9KQo+ K3NldF90YXJnZXRfcHJvcGVydGllcyhsaWJ0ZXN0IFBST1BFUlRJRVMKPisgQ09NUElMRV9GTEFH UyAiLVdhbGwgLVdleHRyYSIKPisgT1VUUFVUX05BTUUgIiR7VEVTVF9MSUJfTkFNRX0iCj4rIExJ QlJBUllfT1VUUFVUX0RJUkVDVE9SWSAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9Igo+KykK PisKPisjIFhYWDogRm9yIG5vdywganVzdCBidWlsZCBsaWJ0ZXN0LiBUaGUgdGVzdHMgdG8gYmUg ZGVwZW5kZWQgb24KPisjIHdpbGwgYmUgYWRkZWQgYXQgdGhlIG5leHQgY29tbWl0LgpUeXBvOiBz L2F0IHRoZSBuZXh0L2luIHRoZSBuZXh0Lwo+K2FkZF9jdXN0b21fdGFyZ2V0KHRhcmFudG9vbC1j LXRlc3RzCj4rIERFUEVORFMgbGlibHVhaml0IGxpYnRlc3QKPispCj4rCj4rIyBYWFg6IEZvciBu b3csIHJ1biAwIHRlc3RzLiBKdXN0IHZlcmlmeSB0aGF0IGxpYnRlc3Qgd2FzIGJ1aWxkLgpUeXBv OiBzL3dhcyBidWlsZC93YXMgYnVpbHQvCj4rYWRkX2N1c3RvbV9jb21tYW5kKFRBUkdFVCB0YXJh bnRvb2wtYy10ZXN0cwo+KyBDT01NRU5UICJSdW5uaW5nIFRhcmFudG9vbCBDIHRlc3RzIgo+KyBD T01NQU5ECj4rICR7UFJPVkV9Cj4rICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfQo+KyAtLWV4 dCAke0NfVEVTVF9TVUZGSVh9Cj4rIC0tam9icyAke0NNQUtFX0JVSUxEX1BBUkFMTEVMX0xFVkVM fQo+KyAke0NfVEVTVF9GTEFHU30KPisgV09SS0lOR19ESVJFQ1RPUlkgJHtDTUFLRV9DVVJSRU5U X0JJTkFSWV9ESVJ9Cj4rKQo+Kwo+KyMgdmltOiBmdD1jbWFrZSBleHBhbmR0YWIgc2hpZnR3aWR0 aD0yOiB0YWJzdG9wPTI6ClRoYXQgY2hhbmdlIGlzIG5vdCBuZWNlc3NhcnkuCj5kaWZmIC0tZ2l0 IGEvdGVzdC90YXJhbnRvb2wtYy10ZXN0cy90ZXN0LmMgYi90ZXN0L3RhcmFudG9vbC1jLXRlc3Rz L3Rlc3QuYwo+bmV3IGZpbGUgbW9kZSAxMDA2NDQKPmluZGV4IDAwMDAwMDAwLi5kYzYzY2YzZgo+ LS0tIC9kZXYvbnVsbAo+KysrIGIvdGVzdC90YXJhbnRvb2wtYy10ZXN0cy90ZXN0LmMKPkBAIC0w LDAgKzEsMjUxIEBACj4rI2luY2x1ZGUgInRlc3QuaCIKPisKPisvKgo+KyAqIFRlc3QgbW9kdWxl LCBiYXNlZCBvbiBUQVAgMTQgc3BlY2lmaWNhdGlvbiBbMV0uCj4rICogWzFdOiAgaHR0cHM6Ly90 ZXN0YW55dGhpbmcub3JnL3RhcC12ZXJzaW9uLTE0LXNwZWNpZmljYXRpb24uaHRtbAo+KyAqLwo+ Kwo+Ky8qIE5lZWQgZm9yIGBQQVRIX01BWGAgaW4gZGlhZ25vc3RpYyBkZWZpbml0aW9uLiAqLwo+ KyNpbmNsdWRlIDxsaW1pdHMuaD4KPisjaW5jbHVkZSA8c2V0am1wLmg+Cj4rI2luY2x1ZGUgPHN0 ZGFyZy5oPgo+Ky8qIE5lZWQgZm9yIGBzdHJjaHIoKWAgaW4gZGlhZ25vc3RpYyBwYXJzaW5nLiAq Lwpgc3RyY2hyKClgIGlzIG5vdCBzYWZlLCBkZXNwaXRlIHRoZSBmYWN0IGl0IHNlYXJjaGVzIHRp bGwgYFwwYC4KV2Ugc2hvdWxkIGF0IGxlYXN0IHJlcGxhY2UgaXQgd2l0aCBgbWVtY2hyKClgLCB3 aGljaCBoYXMKdGhlIGV4cGxpY2l0IGNvbnN0cmFpbnQgZm9yIGJ1ZmZlciBsZW5ndGguCj4rI2lu Y2x1ZGUgPHN0cmluZy5oPgo+Kwo+Ky8qCj4rICogVGVzdCBsZXZlbDogMCBmb3IgdGhlIHBhcmVu dCB0ZXN0LCA+MCBmb3IgYW55IHN1YnRlc3RzLgo+KyAqLwo+K3N0YXRpYyBpbnQgbGV2ZWwgPSAt MTsKPisKPisvKgo+KyAqIFRoZSBsYXN0IGRpYWdub3N0aWMgZGF0YSB0byBiZSB1c2VkIGluIHRo ZSBZQU1MIERpYWdub3N0aWMKPisgKiBibG9jay4KPisgKgo+KyAqIENvbnRhaW5zIGZpbGVuYW1l LCBsaW5lIG51bWJlciBhbmQgZmFpbGVkIGV4cHJlc3Npb24gb3IgYXNzZXJ0Cj4rICogbmFtZSBh bmQgImdvdCIgYW5kICJleHBlY3RlZCIgZmllbGRzLiBBbGwgZW50cmllcyBhcmUgc2VwYXJhdGVk Cj4rICogYnkgXG4uCj4rICogVGhlIGxvbmdlc3QgZmllbGQgaXMgZmlsZW5hbWUgaGVyZSwgc28g UEFUSF9NQVggKiAzIGFzCj4rICogdGhlIGRpYWdub3N0aWMgc3RyaW5nIGxlbmd0aCBzaG91bGQg YmUgZW5vdWdoLgo+KyAqCj4rICogVGhlIGZpcnN0IFwwIG1lYW5zIHRoZSBlbmQgb2YgZGlhZ25v c3RpYyBkYXRhLgo+KyAqCj4rICogQXMgZmFyIGFzIGBzdHJjaHIoKWAgc2VhcmNoZXMgdW50aWwg XDAsIGFsbCBwcmV2aW91cyBlbnRyaWVzCj4rICogYXJlIHN1cHByZXNzZWQgYnkgdGhlIGxhc3Qg b25lLiBJZiB0aGUgZmlyc3QgYnl0ZSBpcyBcMCAtLQo+KyAqIGRpYWdub3N0aWMgaXMgZW1wdHku Cj4rICovCj4rI2RlZmluZSBURVNUX0RJQUdfREFUQV9NQVggKFBBVEhfTUFYICogMykKPitjaGFy IHRlc3RfZGlhZ19idWZbVEVTVF9ESUFHX0RBVEFfTUFYXSA9IHswfTsKPisKPitjb25zdCBjaGFy ICpza2lwX3JlYXNvbiA9IE5VTEw7Cj4rY29uc3QgY2hhciAqdG9kb19yZWFzb24gPSBOVUxMOwo+ Kwo+Ky8qIEluZGVudCBmb3IgdGhlIFRBUC4gNCBzcGFjZXMgaXMgZGVmYXVsdCBmb3Igc3VidGVz dC4gKi8KPitzdGF0aWMgdm9pZCBpbmRlbnQodm9pZCkKPit7Cj4rIGludCBpOwo+KyBmb3IgKGkg PSAwOyBpIDwgbGV2ZWw7IGkrKykKPisgcHJpbnRmKCIgIik7Cj4rfQo+Kwo+K3ZvaWQgdGVzdF9t ZXNzYWdlKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQo+K3sKPisgdmFfbGlzdCBhcDsKPisgaW5kZW50 KCk7Cj4rIHZhX3N0YXJ0KGFwLCBmbXQpOwo+KyB2cHJpbnRmKGZtdCwgYXApOwo+KyBwcmludGYo IlxuIik7Cj4rIHZhX2VuZChhcCk7Cj4rfQo+Kwo+K3N0YXRpYyB2b2lkIHRlc3RfcHJpbnRfdGFw X3ZlcnNpb24odm9pZCkKPit7Cj4rIC8qCj4rICogU2luY2Ugc2V2ZXJhbCBUQVAxMyBwYXJzZXJz IGluIHBvcHVsYXIgdXNhZ2UgdHJlYXQKPisgKiBhIHJlcGVhdGVkIFZlcnNpb24gZGVjbGFyYXRp b24gYXMgYW4gZXJyb3IsIGV2ZW4gaWYgdGhlCj4rICogVmVyc2lvbiBpcyBpbmRlbnRlZCwgU3Vi dGVzdHMgX3Nob3VsZCBub3RfIGluY2x1ZGUgYQo+KyAqIFZlcnNpb24sIGlmIFRBUDEzIEhhcm5l c3MgY29tcGF0aWJpbGl0eSBpcwo+KyAqIGRlc2lyYWJsZSBbMV0uCj4rICovCj4rIGlmIChsZXZl bCA9PSAwKQo+KyB0ZXN0X21lc3NhZ2UoIlRBUCB2ZXJzaW9uICVkIiwgVEFQX1ZFUlNJT04pOwo+ K30KPisKPitzdGF0aWMgdm9pZCB0ZXN0X3N0YXJ0X2NvbW1lbnQoY29uc3QgY2hhciAqdF9uYW1l KQo+K3sKPisgaWYgKGxldmVsID4gLTEpCj4rIC8qCj4rICogSW5mb3JtIGFib3V0IHN0YXJ0aW5n IHN1YnRlc3QsIGVhc2llciBmb3IKPisgKiBodW1hbnMgdG8gcmVhZC4KPisgKiBTdWJ0ZXN0IHdp dGggYSBuYW1lIG11c3QgYmUgdGVybWluYXRlZCBieSBhCj4rICogVGVzdCBQb2ludCB3aXRoIGEg bWF0Y2hpbmcgRGVzY3JpcHRpb24gWzFdLgo+KyAqLwo+KyB0ZXN0X2NvbW1lbnQoIlN1YnRlc3Q6 ICVzIiwgdF9uYW1lKTsKPit9Cj4rCj4rdm9pZCBfdGVzdF9wcmludF9za2lwX2FsbChjb25zdCBj aGFyICpncm91cF9uYW1lLCBjb25zdCBjaGFyICpyZWFzb24pCj4rewo+KyB0ZXN0X3N0YXJ0X2Nv bW1lbnQoZ3JvdXBfbmFtZSk7Cj4rIC8qCj4rICogWFhYOiBUaGlzIHRlc3QgaXNuJ3Qgc3RhcnRl ZCB5ZXQsIHNvIHNldCBpbmRlbnQgbGV2ZWwKPisgKiBtYW51YWxseS4KPisgKi8KPisgbGV2ZWwr KzsKPisgdGVzdF9wcmludF90YXBfdmVyc2lvbigpOwo+KyAvKgo+KyAqIFhYWDogYFNLSVBfRElS RUNUSVZFYCBpcyBub3QgbmVjZXNzYXJ5IGhlcmUgYWNjb3JkaW5nCj4rICogdG8gdGhlIFRBUDE0 IHNwZWNpZmljYXRpb24gWzFdLCBidXQgc29tZSBoYXJuZXNzZXMgbWF5Cj4rICogZmFpbCB0byBw YXJzZSB0aGUgb3V0cHV0IHdpdGhvdXQgaXQuCj4rICovCj4rIHRlc3RfbWVzc2FnZSgiMS4uMCIg U0tJUF9ESVJFQ1RJVkUgIiVzIiwgcmVhc29uKTsKPisgbGV2ZWwtLTsKPit9Cj4rCj4rLyogSnVz dCBpbmZvcm0gVEFQIHBhcnNlciBob3cgbWFueSB0ZXN0cyB3ZSB3YW50IHRvIHJ1bi4gKi8KPitz dGF0aWMgdm9pZCB0ZXN0X3BsYW4oc2l6ZV90IHBsYW5uZWQpCj4rewo+KyB0ZXN0X21lc3NhZ2Uo IjEuLiVsdSIsIHBsYW5uZWQpOwo+K30KPisKPisvKiBIdW1hbi1yZWFkYWJsZSBvdXRwdXQgaG93 IG1hbnkgdGVzdHMvc3VidGVzdHMgYXJlIGZhaWxlZC4gKi8KPitzdGF0aWMgdm9pZCB0ZXN0X2Zp bmlzaChzaXplX3QgcGxhbm5lZCwgc2l6ZV90IGZhaWxlZCkKPit7Cj4rIGNvbnN0IGNoYXIgKnRf dHlwZSA9IGxldmVsID09IDAgPyAidGVzdHMiIDogInN1YnRlc3RzIjsKPisgaWYgKGZhaWxlZCA+ IDApCj4rIHRlc3RfY29tbWVudCgiTG9va3MgbGlrZSB5b3UgZmFpbGVkICVsdSAlcyBvdXQgb2Yg JWx1IiwKPisgZmFpbGVkLCB0X3R5cGUsIHBsYW5uZWQpOwpTaWRlIG5vdGU6IMKrTG9va3MgbGlr ZcK7IGlzIGEgYml0IG1pc2xlYWRpbmcsIGl0IHNlZW1zIGxpa2Ugd2UgYXJlCm5vdCBzdXJlIHdo ZXRoZXIgdGhlIHRlc3RzIGZhaWxlZCBvciBub3QuIEkgcHJvcG9zZSB0byByZXBocmFzZSBpdApp biBhIG1vcmUgc3RyaWN0IGZhc2hpb246IMKrRmFpbGVkICVsdSBvdXQgb2YgJWx1wrsuCj4rIGZm bHVzaChzdGRvdXQpOwo+K30KPisKPit2b2lkIHRlc3Rfc2V0X3NraXBfcmVhc29uKGNvbnN0IGNo YXIgKnJlYXNvbikKPit7Cj4rIHNraXBfcmVhc29uID0gcmVhc29uOwo+K30KPisKPit2b2lkIHRl c3Rfc2V0X3RvZG9fcmVhc29uKGNvbnN0IGNoYXIgKnJlYXNvbikKPit7Cj4rIHRvZG9fcmVhc29u ID0gcmVhc29uOwo+K30KPisKPit2b2lkIHRlc3Rfc2F2ZV9kaWFnX2RhdGEoY29uc3QgY2hhciAq Zm10LCAuLi4pCj4rewo+KyB2YV9saXN0IGFwOwo+KyB2YV9zdGFydChhcCwgZm10KTsKPisgdnNu cHJpbnRmKHRlc3RfZGlhZ19idWYsIFRFU1RfRElBR19EQVRBX01BWCwgZm10LCBhcCk7Cj4rIHZh X2VuZChhcCk7Cj4rfQo+Kwo+K3N0YXRpYyB2b2lkIHRlc3RfY2xlYXJfZGlhZ19kYXRhKHZvaWQp Cj4rewo+KyAvKgo+KyAqIExpbWl0IGJ1ZmZlciB3aXRoIHplcm8gYnl0ZSB0byBzaG93IHRoYXQg dGhlcmUgaXMgbm8KPisgKiBhbnkgZW50cnkuCj4rICovCj4rIHRlc3RfZGlhZ19idWZbMF0gPSAn XDAnOwo+K30KPisKPitzdGF0aWMgaW50IHRlc3RfZGlhZ25vc3RpY19pc19zZXQodm9pZCkKPit7 Cj4rIHJldHVybiB0ZXN0X2RpYWdfYnVmWzBdICE9ICdcMCc7Cj4rfQo+Kwo+Ky8qCj4rICogUGFy c2UgdGhlIGxhc3QgZGlhZ25vc3RpYyBkYXRhIGVudHJ5IGFuZCBwcmludCBpdCBpbiBZQU1MCj4r ICogZm9ybWF0IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgYWRkaXRpb25hbCBoYWxmLWluZGVudCBp biBUQVAKPisgKiAoMiBzcGFjZXMpLgo+KyAqIENsZWFyIGRpYWdub3N0aWMgbWVzc2FnZSB0byBi ZSBzdXJlIHRoYXQgaXQncyBwcmludGVkIG9uY2UuCj4rICogWFhYOiBcbiBzZXBhcmF0b3JzIGFy ZSBjaGFuZ2VkIHRvIFwwIGR1cmluZyBwYXJzaW5nIGFuZAo+KyAqIHByaW50aW5nIG91dHB1dCBm b3IgY29udmVuaWVuY2UgaW4gdXNhZ2UuCj4rICovCj4rc3RhdGljIHZvaWQgdGVzdF9kaWFnbm9z dGljKHZvaWQpCj4rewo+KyB0ZXN0X21lc3NhZ2UoIiAtLS0iKTsKPisgY2hhciAqZW50ID0gdGVz dF9kaWFnX2J1ZjsKPisgY2hhciAqZW50X2VuZCA9IE5VTEw7Cj4rIHdoaWxlICgoZW50X2VuZCA9 IHN0cmNocihlbnQsICdcbicpKSAhPSBOVUxMKSB7Cj4rIGNoYXIgKm5leHRfZW50ID0gZW50X2Vu ZCArIDE7Cj4rIC8qCj4rICogTGltaXQgc3RyaW5nIHdpdGggd2l0aCB0aGUgemVybyBieXRlIGZv cgo+KyAqIGZvcm1hdHRlZCBvdXRwdXQuIEFueXdheSwgZG9uJ3QgbmVlZCB0aGlzIFxuCj4rICog YW55bW9yZS4KPisgKi8KPisgKmVudF9lbmQgPSAnXDAnOwo+KyB0ZXN0X21lc3NhZ2UoIiAlcyIs IGVudCk7Cj4rIGVudCA9IG5leHRfZW50Owo+KyB9Cj4rIHRlc3RfbWVzc2FnZSgiIC4uLiIpOwo+ KyB0ZXN0X2NsZWFyX2RpYWdfZGF0YSgpOwo+K30KPisKPitzdGF0aWMgam1wX2J1ZiB0ZXN0X3J1 bl9lbnY7Cj4rCj4rVEVTVF9OT1JFVCB2b2lkIF90ZXN0X2V4aXQoaW50IHN0YXR1cykKPit7Cj4r IGxvbmdqbXAodGVzdF9ydW5fZW52LCBzdGF0dXMpOwo+K30KPisKPitzdGF0aWMgaW50IHRlc3Rf cnVuKGNvbnN0IHN0cnVjdCB0ZXN0X3VuaXQgKnRlc3QsIHNpemVfdCB0ZXN0X251bWJlciwKPisg dm9pZCAqdGVzdF9zdGF0ZSkKPit7Cj4rIGludCBzdGF0dXMgPSBURVNUX0VYSVRfU1VDQ0VTUzsK PisgLyoKPisgKiBSdW4gdW5pdCB0ZXN0LiBEaWFnbm9zdGljIGluIGNhc2Ugb2YgZmFpbHVyZSBz ZXR1cCBieQo+KyAqIGhlbHBlcnMgYXNzZXJ0IG1hY3JvcyBkZWZpbmVkIGluIHRoZSBoZWFkZXIu Cj4rICovCj4rIGludCBqbXBfc3RhdHVzOwo+KyBpZiAoKGptcF9zdGF0dXMgPSBzZXRqbXAodGVz dF9ydW5fZW52KSkgPT0gMCkgewo+KyBpZiAodGVzdC0+Zih0ZXN0X3N0YXRlKSAhPSBURVNUX0VY SVRfU1VDQ0VTUykKPisgc3RhdHVzID0gVEVTVF9FWElUX0ZBSUxVUkU7Cj4rIH0gZWxzZSB7Cj4r IHN0YXR1cyA9IGptcF9zdGF0dXMgLSBURVNUX0pNUF9TVEFUVVNfU0hJRlQ7Cj4rIH0KPisgY29u c3QgY2hhciAqcmVzdWx0ID0gc3RhdHVzID09IFRFU1RfRVhJVF9TVUNDRVNTID8gIm9rIiA6ICJu b3Qgb2siOwo+Kwo+KyAvKgo+KyAqIEZvcm1hdCBzdWZmaXggb2YgdGhlIHRlc3QgbWVzc2FnZSBm b3IgU0tJUCBvciBUT0RPCj4rICogZGlyZWN0aXZlcy4KPisgKi8KPisjZGVmaW5lIFNVRkZJWF9T WiAxMDI0Cj4rIGNoYXIgc3VmZml4W1NVRkZJWF9TWl0gPSB7MH07Cj4rIGlmIChza2lwX3JlYXNv bikgewo+KyBzbnByaW50ZihzdWZmaXgsIFNVRkZJWF9TWiwgU0tJUF9ESVJFQ1RJVkUgIiVzIiwg c2tpcF9yZWFzb24pOwo+KyBza2lwX3JlYXNvbiA9IE5VTEw7Cj4rIH0gZWxzZSBpZiAodG9kb19y ZWFzb24pIHsKPisgLyogUHJldmVudCBjb3VudCB0aGlzIHRlc3QgYXMgZmFpbGVkLiAqLwo+KyBz dGF0dXMgPSBURVNUX0VYSVRfU1VDQ0VTUzsKPisgc25wcmludGYoc3VmZml4LCBTVUZGSVhfU1os IFRPRE9fRElSRUNUSVZFICIlcyIsIHRvZG9fcmVhc29uKTsKPisgdG9kb19yZWFzb24gPSBOVUxM Owo+KyB9Cj4rI3VuZGVmIFNVRkZJWF9TWgo+Kwo+KyB0ZXN0X21lc3NhZ2UoIiVzICVsdSAtICVz JXMiLCByZXN1bHQsIHRlc3RfbnVtYmVyLCB0ZXN0LT5uYW1lLAo+KyBzdWZmaXgpOwo+Kwo+KyBp ZiAoc3RhdHVzICYmIHRlc3RfZGlhZ25vc3RpY19pc19zZXQoKSkKPisgdGVzdF9kaWFnbm9zdGlj KCk7Cj4rIHJldHVybiBzdGF0dXM7Cj4rfQo+Kwo+K2ludCBfdGVzdF9ydW5fZ3JvdXAoY29uc3Qg Y2hhciAqZ3JvdXBfbmFtZSwgY29uc3Qgc3RydWN0IHRlc3RfdW5pdCAqdGVzdHMsCj4rIHNpemVf dCBuX3Rlc3RzLCB2b2lkICp0ZXN0X3N0YXRlKQpTdHJpY3RseSBzYXlpbmcsIHRoZSA8dHlwZT4q IGFuZCA8dHlwZT5bXSBhcmUgZGlmZmVyZW50LCBhbmQgc2luY2UgdGhhdCB0ZXN0aW5nCmZhY2ls aXR5IGlzIGRlcGVuZGVudCBvbiB0aGUgYHNpemVvZmAgYmVoYXZpb3Igb24gPHR5cGU+W10sIEkg dGhpbmsgdGhhdCBhcmd1bWVudAp0eXBlIHNob3VsZCBiZSBjaGFuZ2VkIHRvIGBjb25zdCBzdHJ1 Y3QgdGVzdF91bml0W11gLsKgCj4rewo+KyB0ZXN0X3N0YXJ0X2NvbW1lbnQoZ3JvdXBfbmFtZSk7 Cj4rCj4rIGxldmVsKys7Cj4rIHRlc3RfcHJpbnRfdGFwX3ZlcnNpb24oKTsKPisKPisgdGVzdF9w bGFuKG5fdGVzdHMpOwo+Kwo+KyBzaXplX3Qgbl9mYWlsZWQgPSAwOwo+Kwo+KyBzaXplX3QgaTsK PisgZm9yIChpID0gMDsgaSA8IG5fdGVzdHM7IGkrKykgewo+KyBzaXplX3QgdGVzdF9udW1iZXIg PSBpICsgMTsKPisgLyogUmV0dXJuIDEgb24gZmFpbHVyZSwgMCBvbiBzdWNjZXNzLiAqLwo+KyBu X2ZhaWxlZCArPSB0ZXN0X3J1bigmdGVzdHNbaV0sIHRlc3RfbnVtYmVyLCB0ZXN0X3N0YXRlKTsK PisgfQo+Kwo+KyB0ZXN0X2ZpbmlzaChuX3Rlc3RzLCBuX2ZhaWxlZCk7Cj4rCj4rIGxldmVsLS07 Cj4rIHJldHVybiBuX2ZhaWxlZCA+IDAgPyBURVNUX0VYSVRfRkFJTFVSRSA6IFRFU1RfRVhJVF9T VUNDRVNTOwo+K30KPmRpZmYgLS1naXQgYS90ZXN0L3RhcmFudG9vbC1jLXRlc3RzL3Rlc3QuaCBi L3Rlc3QvdGFyYW50b29sLWMtdGVzdHMvdGVzdC5oCj5uZXcgZmlsZSBtb2RlIDEwMDY0NAo+aW5k ZXggMDAwMDAwMDAuLjY5NWM1YjRkCj4tLS0gL2Rldi9udWxsCj4rKysgYi90ZXN0L3RhcmFudG9v bC1jLXRlc3RzL3Rlc3QuaAo+QEAgLTAsMCArMSwyNTEgQEAKPisjaWZuZGVmIFRFU1RfSAo+KyNk ZWZpbmUgVEVTVF9ICj4rCj4rI2luY2x1ZGUgPHN0ZGlvLmg+Cj4rI2luY2x1ZGUgPHN0ZGxpYi5o Pgo+Kwo+Ky8qCj4rICogVGVzdCBtb2R1bGUsIGJhc2VkIG9uIFRBUCAxNCBzcGVjaWZpY2F0aW9u IFsxXS4KPisgKiBbMV06ICBodHRwczovL3Rlc3Rhbnl0aGluZy5vcmcvdGFwLXZlcnNpb24tMTQt c3BlY2lmaWNhdGlvbi5odG1sCj4rICogVmVyc2lvbiAxMyBpcyBzZXQgZm9yIGJldHRlciBjb21w YXRpYmlsaXR5IG9uIG9sZCBtYWNoaW5lcy4KPisgKgo+KyAqIFRPRE86Cj4rICogKiBIZWxwZXJz IGFzc2VydCBtYWNyb3M6Cj4rICogLSBhc3NlcnRfdWludF9lcXVhbCBpZiBuZWVkZWQKPisgKiAt IGFzc2VydF91aW50X25vdF9lcXVhbCBpZiBuZWVkZWQKPisgKiAtIGFzc2VydF9zdHJfZXF1YWwg aWYgbmVlZGVkCj4rICogLSBhc3NlcnRfc3RyX25vdF9lcXVhbCBpZiBuZWVkZWQKPisgKiAtIGFz c2VydF9tZW1vcnlfZXF1YWwgaWYgbmVlZGVkCj4rICogLSBhc3NlcnRfbWVtb3J5X25vdF9lcXVh bCBpZiBuZWVkZWQKPisgKiAqIFByYWdtYXMuCj4rICovCj4rCj4rI2RlZmluZSBUQVBfVkVSU0lP TiAxMwo+Kwo+KyNkZWZpbmUgVEVTVF9FWElUX1NVQ0NFU1MgMAo+KyNkZWZpbmUgVEVTVF9FWElU X0ZBSUxVUkUgMQo+Kwo+KyNkZWZpbmUgVEVTVF9KTVBfU1RBVFVTX1NISUZUIDIKPisjZGVmaW5l IFRFU1RfTEpNUF9FWElUX1NVQ0NFU1MgKFRFU1RfRVhJVF9TVUNDRVNTICsgVEVTVF9KTVBfU1RB VFVTX1NISUZUKQo+KyNkZWZpbmUgVEVTVF9MSk1QX0VYSVRfRkFJTFVSRSAoVEVTVF9FWElUX0ZB SUxVUkUgKyBURVNUX0pNUF9TVEFUVVNfU0hJRlQpCj4rCj4rI2RlZmluZSBURVNUX05PUkVUIF9f YXR0cmlidXRlX18oKG5vcmV0dXJuKSkKPisKPit0eXBlZGVmIGludCAoKnRlc3RfZnVuYykodm9p ZCAqdGVzdF9zdGF0ZSk7Cj4rc3RydWN0IHRlc3RfdW5pdCB7Cj4rIGNvbnN0IGNoYXIgKm5hbWU7 Cj4rIHRlc3RfZnVuYyBmOwo+K307Cj4rCj4rLyogSW5pdGlhbGl6ZSBgdGVzdF91bml0YCBzdHJ1 Y3R1cmUuICovCj4rI2RlZmluZSB0ZXN0X3VuaXRfbmV3KGYpIHsjZiwgZn0KPisKPisjZGVmaW5l IGxlbmd0aG9mKGFycikgKHNpemVvZihhcnIpIC8gc2l6ZW9mKChhcnIpWzBdKSkKU2VlIHRoZSBj b21tZW50IHdpdGggbXkgY29uY2VybnMgYWJvdXQgdGhlIDx0eXBlPiBhbmQgPHR5cGU+W10KYWJv dmUuCj4rCj4rLyoKPisgKiBfX2Z1bmNfXyBpcyB0aGUgbmFtZSBmb3IgYSB0ZXN0IGdyb3VwLCAi bWFpbiIgZm9yIHRoZSBwYXJlbnQKPisgKiB0ZXN0Lgo+KyAqLwo+KyNkZWZpbmUgdGVzdF9ydW5f Z3JvdXAodF9hcnIsIHRfc3RhdGUpIFwKPisgX3Rlc3RfcnVuX2dyb3VwKF9fZnVuY19fLCB0X2Fy ciwgbGVuZ3Rob2YodF9hcnIpLCB0X3N0YXRlKQpJcyB0aGVyZSBhbnkgcmVhc29uIGZvciBpdCB0 byBiZSBhIG1hY3JvIGFuZCBub3QgYSBmdW5jdGlvbiB3cmFwcGVyPwpJIGJlbGlldmUgaXQgaXMg YmV0dGVyIHRvIHVzZSB0aGUgZnVuY3Rpb25zIHdoZW4gcG9zc2libGUsIHNpbmNlIHRoZXkgYXJl CmVhc2llciB0byBzdXBwb3J0IGFuZCBkZWJ1Zy4KPisKPisjZGVmaW5lIFNLSVBfRElSRUNUSVZF ICIgIyBTS0lQICIKPisjZGVmaW5lIFRPRE9fRElSRUNUSVZFICIgIyBUT0RPICIKPisKPisvKgo+ KyAqIFhYWDogTWF5IGJlIGltcGxlbWVudGVkIGFzIHdlbGwgdmlhCj4rICogYF90ZXN0X3J1bl9n cm91cChfX2Z1bmMsIE5VTEwsIDAsIE5VTEwpYCBhbmQKPisgKiBgdGVzdF9zZXRfc2tpcF9yZWFz b25gIHdpdGggYWRkaXRpb25hbCBjaGFuZ2VzIGluIHRoZSBmb3JtZXIuCj4rICogQnV0IHRoZSBj dXJyZW50IGFwcHJvYWNoIGlzIGVhc2llciB0byBtYWludGFpbiwgYXMgZmFyIGFzIHdlCj4rICog ZG9uJ3Qgd2FudCB0byBpbnRlcmZlcmUgZGlmZmVyZW50IGVudGl0aWVzLgo+KyAqLwo+KyNkZWZp bmUgc2tpcF9hbGwocmVhc29uKSBkbyB7IFwKPisgX3Rlc3RfcHJpbnRfc2tpcF9hbGwoX19mdW5j X18sIHJlYXNvbik7IFwKPisgcmV0dXJuIFRFU1RfRVhJVF9TVUNDRVNTOyBcCj4rfSB3aGlsZSAo MCkKQWdhaW4sIEkgcHJvcG9zZSB0byByZXBsYWNlIGl0IHdpdGggYSBjb252ZW50aW9uYWwgZnVu Y3Rpb24gdG8KbWFrZSB0aGUgcmV0dXJuIHBvaW50IGV4cGxpY2l0IGluIHRoZSB0ZXN0IGltcGxl bWVudGF0aW9uLCBzbyBpdApsb29rcyBsaWtlIGByZXR1cm4gc2tpcF9hbGwoPHJlYXNvbj4pYCwg aW5zdGVhZCBvZiBqdXN0IGBza2lwX2FsbGAuClNhbWUgZm9yIHRoZSBza2lwY29uZCBhbmQgdG9k byBmYWNpbGl0aWVzIGJlbG93Lgo+Kwo+KyNkZWZpbmUgc2tpcChyZWFzb24pIGRvIHsgXAo+KyB0 ZXN0X3NldF9za2lwX3JlYXNvbihyZWFzb24pOyBcCj4rIHJldHVybiBURVNUX0VYSVRfU1VDQ0VT UzsgXAo+K30gd2hpbGUgKDApCj4rCj4rI2RlZmluZSB0b2RvKHJlYXNvbikgZG8geyBcCj4rIHRl c3Rfc2V0X3RvZG9fcmVhc29uKHJlYXNvbik7IFwKPisgcmV0dXJuIFRFU1RfRVhJVF9GQUlMVVJF OyBcCj4rfSB3aGlsZSAoMCkKPisKPisjZGVmaW5lIGJhaWxfb3V0KHJlYXNvbikgZG8geyBcCj4r IC8qIFwKPisgKiBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBUQVAxMyBIYXJuZXNz ZXMsIFwKPisgKiBQcm9kdWNlcnMgX3Nob3VsZF8gZW1pdCBhICJCYWlsIG91dCEiIGxpbmUgYXQg dGhlIHJvb3QgXAo+KyAqIGluZGVudGF0aW9uIGxldmVsIHdoZW5ldmVyIGEgU3VidGVzdCBiYWls cyBvdXQgWzFdLiBcCj4rICovIFwKPisgcHJpbnRmKCJCYWlsIG91dCEgJXNcbiIsIHJlYXNvbik7 IFwKPisgZXhpdChURVNUX0VYSVRfRkFJTFVSRSk7IFwKPit9IHdoaWxlICgwKQo+Kwo+Ky8qIGBm bXRgIHNob3VsZCBhbHdheXMgYmUgYSBmb3JtYXQgc3RyaW5nIGhlcmUuICovCj4rI2RlZmluZSB0 ZXN0X2NvbW1lbnQoZm10LCAuLi4pIHRlc3RfbWVzc2FnZSgiIyAiIGZtdCwgX19WQV9BUkdTX18p Cj4rCj4rLyoKPisgKiBUaGlzIGlzIGEgc2V0IG9mIHVzZWZ1bCBhc3NlcnQgbWFjcm9zIGxpa2Ug dGhlIHN0YW5kYXJkIEMKPisgKiBsaWJhcnkncyBhc3NlcnQoMykgbWFjcm8uCj4rICoKPisgKiBP biBhbiBhc3NlcnRpb24gZmFpbHVyZSBhbiBhc3NlcnQgbWFjcm8gd2lsbCBzYXZlIHRoZQo+KyAq IGRpYWdub3N0aWMgdG8gdGhlIHNwZWNpYWwgYnVmZmVyLCB0byBiZSByZXBvcnRlZCB2aWEgWUFN TAo+KyAqIERpYWdub3N0aWMgYmxvY2sgYW5kIGZpbmlzaCBhIHRlc3QgZnVuY3Rpb24gd2l0aAo+ KyAqIGByZXR1cm4gVEVTVF9FWElUX0ZBSUxVUkVgLgo+KyAqCj4rICogRHVlIHRvIGxpbWl0YXRp b25zIG9mIHRoZSBDIGxhbmd1YWdlIGBhc3NlcnRfdHJ1ZSgpYCBhbmQKPisgKiBgYXNzZXJ0X2Zh bHNlKClgIG1hY3JvcyBjYW4gb25seSBkaXNwbGF5IHRoZSBleHByZXNzaW9uIHRoYXQKPisgKiBj YXVzZWQgdGhlIGFzc2VydGlvbiBmYWlsdXJlLiBUeXBlIHNwZWNpZmljIGFzc2VydCBtYWNyb3Ms Cj4rICogYGFzc2VydF97dHlwZX1fZXF1YWwoKWAgYW5kIGBhc3NlcnRfe3R5cGV9X25vdF9lcXVh bCgpYCwgc2F2ZQo+KyAqIHRoZSBkYXRhIHRoYXQgY2F1c2VkIHRoZSBhc3NlcnRpb24gZmFpbHVy ZSB3aGljaCBpbmNyZWFzZXMgZGF0YQo+KyAqIHZpc2liaWxpdHkgYWlkaW5nIGRlYnVnZ2luZyBv ZiBmYWlsaW5nIHRlc3QgY2FzZXMuCj4rICovCj4rCj4rI2RlZmluZSBMT0NBVElPTl9GTVQgImxv Y2F0aW9uOlx0JXM6JWRcbiIKPisjZGVmaW5lIEFTU0VSVF9OQU1FX0ZNVChuYW1lKSAiZmFpbGVk X2Fzc2VydGlvbjpcdCIgI25hbWUgIlxuIgo+Kwo+KyNkZWZpbmUgYXNzZXJ0X3RydWUoY29uZCkg ZG8geyBcCj4rIGlmICghKGNvbmQpKSB7IFwKPisgdGVzdF9zYXZlX2RpYWdfZGF0YShMT0NBVElP Tl9GTVQgXAo+KyAiY29uZGl0aW9uX2ZhaWxlZDpcdCciICNjb25kICInXG4iLCBcCj4rIF9fRklM RV9fLCBfX0xJTkVfXyk7IFwKPisgX3Rlc3RfZXhpdChURVNUX0xKTVBfRVhJVF9GQUlMVVJFKTsg XAo+KyB9IFwKPit9IHdoaWxlICgwKQo+Kwo+KyNkZWZpbmUgYXNzZXJ0X2ZhbHNlKGNvbmQpIGFz c2VydF90cnVlKCEoY29uZCkpCj4rCj4rI2RlZmluZSBhc3NlcnRfcHRyX2VxdWFsKGdvdCwgZXhw ZWN0ZWQpIGRvIHsgXAo+KyBpZiAoKGdvdCkgIT0gKGV4cGVjdGVkKSkgeyBcCj4rIHRlc3Rfc2F2 ZV9kaWFnX2RhdGEoIFwKPisgTE9DQVRJT05fRk1UIFwKPisgQVNTRVJUX05BTUVfRk1UKGFzc2Vy dF9wdHJfZXF1YWwpIFwKPisgImdvdDogJXBcbiIgXAo+KyAiZXhwZWN0ZWQ6ICVwXG4iLCBcCj4r IF9fRklMRV9fLCBfX0xJTkVfXywgKGdvdCksIChleHBlY3RlZCkgXAo+KyApOyBcCj4rIF90ZXN0 X2V4aXQoVEVTVF9MSk1QX0VYSVRfRkFJTFVSRSk7IFwKPisgfSBcCj4rfSB3aGlsZSAoMCkKPisK PisjZGVmaW5lIGFzc2VydF9wdHJfbm90X2VxdWFsKGdvdCwgdW5leHBlY3RlZCkgZG8geyBcCj4r IGlmICgoZ290KSA9PSAodW5leHBlY3RlZCkpIHsgXAo+KyB0ZXN0X3NhdmVfZGlhZ19kYXRhKCBc Cj4rIExPQ0FUSU9OX0ZNVCBcCj4rIEFTU0VSVF9OQU1FX0ZNVChhc3NlcnRfcHRyX25vdF9lcXVh bCkgXAo+KyAiZ290OiAlcFxuIiBcCj4rICJ1bmV4cGVjdGVkOiAlcFxuIiwgXAo+KyBfX0ZJTEVf XywgX19MSU5FX18sIChnb3QpLCAodW5leHBlY3RlZCkgXAo+KyApOyBcCj4rIF90ZXN0X2V4aXQo VEVTVF9MSk1QX0VYSVRfRkFJTFVSRSk7IFwKPisgfSBcCj4rfSB3aGlsZSAoMCkKPisKPisjZGVm aW5lIGFzc2VydF9pbnRfZXF1YWwoZ290LCBleHBlY3RlZCkgZG8geyBcCj4rIGlmICgoZ290KSAh PSAoZXhwZWN0ZWQpKSB7IFwKPisgdGVzdF9zYXZlX2RpYWdfZGF0YSggXAo+KyBMT0NBVElPTl9G TVQgXAo+KyBBU1NFUlRfTkFNRV9GTVQoYXNzZXJ0X2ludF9lcXVhbCkgXAo+KyAiZ290OiAlZFxu IiBcCj4rICJleHBlY3RlZDogJWRcbiIsIFwKPisgX19GSUxFX18sIF9fTElORV9fLCAoZ290KSwg KGV4cGVjdGVkKSBcCj4rICk7IFwKPisgX3Rlc3RfZXhpdChURVNUX0xKTVBfRVhJVF9GQUlMVVJF KTsgXAo+KyB9IFwKPit9IHdoaWxlICgwKQo+Kwo+KyNkZWZpbmUgYXNzZXJ0X2ludF9ub3RfZXF1 YWwoZ290LCB1bmV4cGVjdGVkKSBkbyB7IFwKPisgaWYgKChnb3QpID09ICh1bmV4cGVjdGVkKSkg eyBcCj4rIHRlc3Rfc2F2ZV9kaWFnX2RhdGEoIFwKPisgTE9DQVRJT05fRk1UIFwKPisgQVNTRVJU X05BTUVfRk1UKGFzc2VydF9pbnRfbm90X2VxdWFsKSBcCj4rICJnb3Q6ICVkXG4iIFwKPisgInVu ZXhwZWN0ZWQ6ICVkXG4iLCBcCj4rIF9fRklMRV9fLCBfX0xJTkVfXywgKGdvdCksICh1bmV4cGVj dGVkKSBcCj4rICk7IFwKPisgX3Rlc3RfZXhpdChURVNUX0xKTVBfRVhJVF9GQUlMVVJFKTsgXAo+ KyB9IFwKPit9IHdoaWxlICgwKQo+Kwo+KyNkZWZpbmUgYXNzZXJ0X3NpemV0X2VxdWFsKGdvdCwg ZXhwZWN0ZWQpIGRvIHsgXAo+KyBpZiAoKGdvdCkgIT0gKGV4cGVjdGVkKSkgeyBcCj4rIHRlc3Rf c2F2ZV9kaWFnX2RhdGEoIFwKPisgTE9DQVRJT05fRk1UIFwKPisgQVNTRVJUX05BTUVfRk1UKGFz c2VydF9zaXpldF9lcXVhbCkgXAo+KyAiZ290OiAlbHVcbiIgXAo+KyAiZXhwZWN0ZWQ6ICVsdVxu IiwgXAo+KyBfX0ZJTEVfXywgX19MSU5FX18sIChnb3QpLCAoZXhwZWN0ZWQpIFwKPisgKTsgXAo+ KyBfdGVzdF9leGl0KFRFU1RfTEpNUF9FWElUX0ZBSUxVUkUpOyBcCj4rIH0gXAo+K30gd2hpbGUg KDApCj4rCj4rI2RlZmluZSBhc3NlcnRfc2l6ZXRfbm90X2VxdWFsKGdvdCwgdW5leHBlY3RlZCkg ZG8geyBcCj4rIGlmICgoZ290KSA9PSAodW5leHBlY3RlZCkpIHsgXAo+KyB0ZXN0X3NhdmVfZGlh Z19kYXRhKCBcCj4rIExPQ0FUSU9OX0ZNVCBcCj4rIEFTU0VSVF9OQU1FX0ZNVChhc3NlcnRfc2l6 ZXRfbm90X2VxdWFsKSBcCj4rICJnb3Q6ICVsdVxuIiBcCj4rICJ1bmV4cGVjdGVkOiAlbHVcbiIs IFwKPisgX19GSUxFX18sIF9fTElORV9fLCAoZ290KSwgKHVuZXhwZWN0ZWQpIFwKPisgKTsgXAo+ KyBfdGVzdF9leGl0KFRFU1RfTEpNUF9FWElUX0ZBSUxVUkUpOyBcCj4rIH0gXAo+K30gd2hpbGUg KDApCj4rCj4rLyogQ2hlY2sgdGhhdCBkb3VibGVzIGFyZSBfX2V4YWN0bHlfXyB0aGUgc2FtZS4g Ki8KPisjZGVmaW5lIGFzc2VydF9kb3VibGVfZXF1YWwoZ290LCBleHBlY3RlZCkgZG8geyBcCj4r IGlmICgoZ290KSAhPSAoZXhwZWN0ZWQpKSB7IFwKPisgdGVzdF9zYXZlX2RpYWdfZGF0YSggXAo+ KyBMT0NBVElPTl9GTVQgXAo+KyBBU1NFUlRfTkFNRV9GTVQoYXNzZXJ0X2RvdWJsZV9lcXVhbCkg XAo+KyAiZ290OiAlbGZcbiIgXAo+KyAiZXhwZWN0ZWQ6ICVsZlxuIiwgXAo+KyBfX0ZJTEVfXywg X19MSU5FX18sIChnb3QpLCAoZXhwZWN0ZWQpIFwKPisgKTsgXAo+KyBfdGVzdF9leGl0KFRFU1Rf TEpNUF9FWElUX0ZBSUxVUkUpOyBcCj4rIH0gXAo+K30gd2hpbGUgKDApCj4rCj4rLyogQ2hlY2sg dGhhdCBkb3VibGVzIGFyZSBub3QgX19leGFjdGx5X18gdGhlIHNhbWUuICovCj4rI2RlZmluZSBh c3NlcnRfZG91YmxlX25vdF9lcXVhbChnb3QsIHVuZXhwZWN0ZWQpIGRvIHsgXAo+KyBpZiAoKGdv dCkgPT0gKHVuZXhwZWN0ZWQpKSB7IFwKPisgdGVzdF9zYXZlX2RpYWdfZGF0YSggXAo+KyBMT0NB VElPTl9GTVQgXAo+KyBBU1NFUlRfTkFNRV9GTVQoYXNzZXJ0X2RvdWJsZV9ub3RfZXF1YWwpIFwK PisgImdvdDogJWxmXG4iIFwKPisgInVuZXhwZWN0ZWQ6ICVsZlxuIiwgXAo+KyBfX0ZJTEVfXywg X19MSU5FX18sIChnb3QpLCAodW5leHBlY3RlZCkgXAo+KyApOyBcCj4rIF90ZXN0X2V4aXQoVEVT VF9MSk1QX0VYSVRfRkFJTFVSRSk7IFwKPisgfSBcCj4rfSB3aGlsZSAoMCkKPisKPisvKiBBUEkg ZGVjbGFyYXRpb24uICovCj4rCj4rLyoKPisgKiBQcmludCBmb3JtYXR0ZWQgbWVzc2FnZSB3aXRo IHRoZSBjb3JyZXNwb25kaW5nIGluZGVudC4KPisgKiBJZiB5b3Ugd2FudCB0byBsZWF2ZSBhIGNv bW1lbnQsIHVzZSBgdGVzdF9jb21tZW50KClgIGluc3RlYWQuCj4rICovCj4rdm9pZCB0ZXN0X21l c3NhZ2UoY29uc3QgY2hhciAqZm10LCAuLi4pOwo+Kwo+Ky8qIE5lZWQgZm9yIGBza2lwX2FsbCgp YCwgcGxlYXNlLCBkb24ndCB1c2UgaXQuICovCj4rdm9pZCBfdGVzdF9wcmludF9za2lwX2FsbChj b25zdCBjaGFyICpncm91cF9uYW1lLCBjb25zdCBjaGFyICpyZWFzb24pOwo+Ky8qIEVuZCB0ZXN0 IHZpYSBgbG9uZ2ptcCgpYCwgcGxlYXNlLCBkb24ndCB1c2UgaXQuICovCj4rVEVTVF9OT1JFVCB2 b2lkIF90ZXN0X2V4aXQoaW50IHN0YXR1cyk7Cj4rCj4rdm9pZCB0ZXN0X3NldF9za2lwX3JlYXNv bihjb25zdCBjaGFyICpyZWFzb24pOwo+K3ZvaWQgdGVzdF9zZXRfdG9kb19yZWFzb24oY29uc3Qg Y2hhciAqcmVhc29uKTsKPisvKgo+KyAqIFNhdmUgZm9ybWF0dGVkIGRpYWdub3N0aWMgZGF0YS4g RWFjaCBlbnRyeSBzZXBhcmF0ZWQgd2l0aCBcbi4KPisgKi8KPit2b2lkIHRlc3Rfc2F2ZV9kaWFn X2RhdGEoY29uc3QgY2hhciAqZm10LCAuLi4pOwo+Kwo+Ky8qIEludGVybmFsLCBpdCBpcyBiZXR0 ZXIgdG8gdXNlIGB0ZXN0X3J1bl9ncm91cCgpYCBpbnN0ZWFkLiAqLwo+K2ludCBfdGVzdF9ydW5f Z3JvdXAoY29uc3QgY2hhciAqZ3JvdXBfbmFtZSwgY29uc3Qgc3RydWN0IHRlc3RfdW5pdCAqdGVz dHMsCj4rIHNpemVfdCBuX3Rlc3RzLCB2b2lkICp0ZXN0X3N0YXRlKTsKPisKPisjZW5kaWYgLyog VEVTVF9IICovCj4tLQo+Mi4zNC4xCi0tCkJlc3QgcmVnYXJkcywKTWF4aW0gS29rcnlhc2hraW4K wqA= ----ALT--9a7260Ef481f29dFB9c484dF39bDf7331679325433 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+SGkhPC9kaXY+PGRpdj5UaGFua3MgZm9yIHRoZSBwYXRjaCE8L2Rp dj48ZGl2PlBsZWFzZSBjb25zaWRlciBteSBjb21tZW50cyBiZWxvdy48L2Rpdj48ZGl2PiZuYnNw OzwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsg bWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPtCh0YDQtdC00LAsIDE1INC80LDRgNGC 0LAgMjAyMywgMTk6MTQgKzAzOjAwINC+0YIgU2VyZ2V5IEthcGx1biAmbHQ7c2thcGx1bkB0YXJh bnRvb2wub3JnJmd0Ozo8YnI+Jm5ic3A7PGRpdiBpZD0iIj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIg anMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdiBpZD0ic3R5bGVfMTY3ODg5Njg5MTE5NjY5NDcwMTVf Qk9EWSI+V2UgbmVlZCBhbiBpbnN0cnVtZW50IHRvIHdyaXRlIHRlc3RzIGluIHBsYWluIEMgZm9y IEx1YUpJVCwgdG8gYmUgYWJsZTo8YnI+KiBlYXNpbHkgdGVzdCBMdWFDIEFQSTxicj4qIHRlc3Qg cGF0Y2hlcyB3aXRob3V0IHVzYWdlIHBsYWluIEx1YTwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjwv YmxvY2txdW90ZT48ZGl2PlR5cG86IHMvdXNhZ2UvdXNhZ2Ugb2YvPC9kaXY+PGJsb2NrcXVvdGUg c3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGlu ZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ci PjxkaXY+PGRpdj4qIHdyaXRlIHVuaXQgdGVzdHM8YnI+KiBzdGFydHVwIEx1YUpJVCB3aXRoIGN1 c3RvbSBtZW1vcnkgYWxsb2NhdG9yLCB0byB0ZXN0IHNvbWUgR0MgaXNzdWVzPGJyPiogbWF5YmUs IGluIGZ1dHVyZSwgdXNlIGN1c3RvbSBoYXNoaW5nIGZ1bmN0aW9uIHRvIHRlc3QgYSBiZWhhdmlv cjxicj4mbmJzcDsmbmJzcDtvZiBMdWFKSVQgdGFibGVzPGJyPmFuZCBzbyBvbi48YnI+PGJyPlRo ZSAmbHQ7dGVzdC5jJmd0OyBtb2R1bGUgc2VydmVzIHRvIGFjaGlldmUgdGhlc2UgZ29hbHMgd2l0 aG91dCB0b28gZmFuY3k8YnI+ZmVhdHVyZXMuPGJyPjxicj5JdCdzIGZ1bmN0aW9uYWxpdHkgaW5z cGlyZWQgYnkgY21va2EgQVBJIFsxXSwgYnV0IG9ubHkgVEFQMTQgWzJdPGJyPnByb3RvY29sIGlz IHN1cHBvcnRlZCAoVmVyc2lvbiBvZiBUQVAgc2V0IHRvIDEzIHRvIGJlIGNvbXBhdGlibGUgd2l0 aDxicj5vbGQgVEFQMTMgaGFybmVzc2VzKS48YnI+PGJyPlRoZSBncm91cCBvZiB1bml0IHRlc3Rz IGlzIGRlY2xhcmVkIGxpa2UgdGhlIGZvbGxvd2luZzo8YnI+PGJyPnwgdm9pZCAqdF9zdGF0ZSA9 IE5VTEw7PGJyPnwgY29uc3Qgc3RydWN0IHRlc3RfdW5pdCB0Z3JvdXBbXSA9IHs8YnI+fCB0ZXN0 X3VuaXRfbmV3KHRlc3RfYmFzZSksPGJyPnwgdGVzdF91bml0X25ldyh0ZXN0X3N1YnRlc3QpLDxi cj58IH07PGJyPnwgcmV0dXJuIHRlc3RfcnVuX2dyb3VwKHRncm91cCwgdF9zdGF0ZSk7PGJyPjxi cj5gdGVzdF9ydW5fZ3JvdXAoKWAgcnVucyB0aGUgd2hvbGUgZ3JvdXAgb2YgdGVzdHMsIHJldHVy bnM8YnI+YFRFU1RfRVhJVF9TVUNDRVNTYCBvciBgVEVTVF9FWElUX0ZBSUxVUkVgLjxicj48YnI+ SWYgYSBzaW1pbGFyIGdyb3VwIGlzIGRlY2xhcmVkIGluc2lkZSB1bml0IHRlc3QsIHRoaXMgZ3Jv dXAgd2lsbCBiZTxicj5jb25zaWRlcmVkIGFzIGEgc3VidGVzdC48YnI+PGJyPlRoaXMgbGlicmFy eSBwcm92aWRlcyBhbiBBUEkgc2ltaWxhciB0byBnbGliYyAoMykgYGFzc2VydCgpYCB0byB1c2U8 YnI+aW5zaWRlIHVuaXQgdGVzdHMuIGBhc3NlcnRfW3RydWUsZmFsc2VdKClgIGFyZSB1c2VmdWwg Zm9yIGNvbmRpdGlvbjxicj5jaGVja3MgYW5kIGBhc3NlcnRfe3R5cGV9X1tub3RfLF1fZXF1YWwo KWAgYXJlIHVzZWZ1bCBmb3IgdmFsdWU8YnI+Y29tcGFyaXNvbnMuIElmIHNvbWUgYXNzZXJ0aW9u IGZhaWxzIGRpYWdub3N0aWMgaXMgc2V0LCBhbGwgdGVzdDxicj5jb25zaWRlcmVkIGFzIGZhaWxp bmcgYW5kIGZpbmlzaGVkIHZpYSBgbG9uZ2ptcCgpYCwgc28gdGhlc2UgYXNzZXJ0aW9uczxicj5j YW4gYmUgdXNlZCBpbnNpZGUgY3VzdG9tIHN1YnJvdXRpbmVzLjxicj48YnI+QWxzbywgdGhpcyBt b2R1bGUgcHJvdmlkZXMgYWJpbGl0eSB0byBza2lwIG9uZSB0ZXN0IG9yIGFsbCB0ZXN0cywgbWFy azxicj50ZXN0IGFzIHRvZG8sIGJhaWwgb3V0IGFsbCB0ZXN0cy4gYHNraXAoKWAsIGBza2lwX2Fs bCgpYCBhbmQgYHRvZG8oKWA8YnI+bWFjcm9zIGFyZSBpbXBsZW1lbnRlZCB2aWEgYW4gZWFybHkg cmV0dXJuIHRvIGJlIHVzZWQgb25seSBpbiB0aGUgdGVzdDxicj5ib2R5IHRvIG1ha2Ugc2tpcHBp bmcgY2xlYXIuIGBza2lwX2FsbCgpYCBtYXkgYmUgdXNlZCBib3RoIGZvciB0aGU8YnI+cGFyZW50 IHRlc3QgYW5kIGZvciBhIHN1YnRlc3QuPGJyPjxicj5BcyBhIHBhcnQgb2YgdGhpcyBjb21taXQs IHRhcmFudG9vbC1jLXRlc3RzIGRpcmVjdG9yeSBpcyBjcmVhdGVkIHdpdGg8YnI+dGhlIGNvcnJl c3BvbmRpbmcgQ01ha2VMaXN0cy50eHQgZmlsZSB0byBidWlsZCB0aGlzIHRlc3QgbGlicmFyeS48 YnI+VGVzdHMgdG8gYmUgcmV3cml0dGVuIGluIEMgd2l0aCB0aGlzIGxpYnJhcnkgaW4gdGhlIG5l eHQgY29tbWl0IGFuZDxicj5wbGFjZWQgYXMgdW5pdCB0ZXN0cyBhcmU6PGJyPiogbWlzY2xpYi1n ZXRtZXRyaWNzLWNhcGkudGVzdC5sdWE8YnI+KiBtaXNjbGliLXN5c3Byb2YtY2FwaS50ZXN0Lmx1 YTxicj48YnI+Rm9yIG5vdyB0aGUgdGFyYW50b29sLWMtdGVzdHMgdGFyZ2V0IGp1c3QgYnVpbGQg dGhlIHRlc3QgbGlicmFyeSB3aXRob3V0PGJyPm5ldyB0ZXN0cyB0byBydW4uPGJyPjxicj5bMV06 IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jbGlicy9jbW9ja2EiIHRhcmdldD0iX2JsYW5r Ij5odHRwczovL2dpdGh1Yi5jb20vY2xpYnMvY21vY2thPC9hPjxicj5bMl06IDxhIGhyZWY9Imh0 dHBzOi8vdGVzdGFueXRoaW5nLm9yZy90YXAtdmVyc2lvbi0xNC1zcGVjaWZpY2F0aW9uLmh0bWwi IHRhcmdldD0iX2JsYW5rIj5odHRwczovL3Rlc3Rhbnl0aGluZy5vcmcvdGFwLXZlcnNpb24tMTQt c3BlY2lmaWNhdGlvbi5odG1sPC9hPjxicj48YnI+UGFydCBvZiB0YXJhbnRvb2wvdGFyYW50b29s Izc5MDA8YnI+LS0tPGJyPjxicj5JIGxlZnQgc29tZSBub3RlcyBhYm91dCB0aGlzIHRlc3QgbW9k dWxlIGFuZCBJJ2xsIGJlIGhhcHB5IHRvIHJlYWQgeW91cjxicj50aG91Z2h0cyBhYm91dCB0aGVt Ljxicj48YnI+KiBTaG91bGQgd2UgY2FzdCB0byBgKHZvaWQgKilgIGluIGBhc3NlcnRfcHRyX1tu b3RfXWVxdWFsKClgPyBPciBpdCB3aWxsPGJyPiZuYnNwOyZuYnNwO2JlIGJldHRlciB0byBub3Rp Y2UgdXNlciBhYm91dCBiYWQgdHlwZSBjb21wYXJpc29ucz88L2Rpdj48L2Rpdj48L2Rpdj48L2Rp dj48L2Jsb2NrcXVvdGU+PGRpdj5JIGJlbGlldmUgd2Ugc2hvdWxkIG5vdCBjYXN0IGl0IHRvIHRo ZSAodm9pZCZuYnNwOyopIGFuZCBub3RpY2UgdXNlci4gSXQgaXMgdGhlIEM8YnI+bGFuZ3VhZ2Us IHNvIGlmIHdlIGNhbiBwcmV2ZW50IHNvbWUgcG90ZW50aWFsbHkgaW5jb3JyZWN0IGJlaGF2aW9y IGluPGJyPmNvbXBpbGUgdGltZSwgd2Ugc2hvdWxkIGRvIHRoYXQuPC9kaXY+PGJsb2NrcXVvdGUg c3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGlu ZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ci PjxkaXY+PGRpdj4qIEhvdyBvZnRlbiBzaG91bGQgd2UgZmx1c2ggc3Rkb3V0PzwvZGl2PjwvZGl2 PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2Pkl0IHNlZW1zIHRvIGJlIG9mdGVuIGVub3Vn aCBmb3Igbm93LiBJIGJlbGlldmUsIGl0IGlzIGJldHRlcjxicj50byBnZXQgdXNlZCB0byB0aGF0 IG1vZHVsZSBhbmQgYWRkIGFkZGl0aW9uYWwgYGZsdXNoKClg4oCZZXM8YnI+YSBsaXR0bGUgYml0 IGRvd24gdGhlIHJvYWQsIGlmIHdl4oCZbGwgbmVlZCB0aGF0LjwvZGl2PjxibG9ja3F1b3RlIHN0 eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6 MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48 ZGl2PjxkaXY+KiBPYnZpb3VzbHkgd2UgY2FuIHVzZSBgX3Rlc3RfcnVuX2dyb3VwKF9fZnVuY19f LCBOVUxMLCAwLCBOVUxMKWAgd2l0aDwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90 ZT48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdp bjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBq cy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2PiZuYnNwOyZuYnNwO2B0ZXN0X3NldF9za2lwX3JlYXNv bigpYCBzZXQgdG8gaW1wbGVtZW50IGBza2lwX2FsbCgpYCBmdW5jdGlvbmFsaXR5Ljxicj4mbmJz cDsmbmJzcDtOZXZlcnRoZWxlc3MsIEkgZGVjaWRlZCB0byByZWltcGxpbWVudCBpdCdzIGxvZ2lj IHNlcGFyYXRlbHkgdG8gYmU8YnI+Jm5ic3A7Jm5ic3A7bW9yZSBlYXNpbHkgbWFpbnRhaW5lZCBp biB0aGUgZnV0dXJlLjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2Pklm IHdl4oCZbGwgY2hhbmdlIHRoZSBzaWduYXR1cmUgdG8gdGhlIG9uZSBJIHByb3Bvc2VkIGJlbG93 LCB0aGUmbmJzcDs8YnI+YF90ZXN0X3J1bl9ncm91cChfX2Z1bmNfXywgTlVMTCwgMCwgTlVMTClg IGFwcHJvYWNoIGlzIG5vdDxicj5wb3NzaWJsZSBhbnltb3JlLCBzbyB0aGVyZSBpcyBub3RoaW5n IHdyb25nIHdpdGggcmVpbXBsZW1lbnRhdGlvbi48L2Rpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9y ZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEw cHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2 Pjxicj48YnI+Jm5ic3A7dGVzdC9DTWFrZUxpc3RzLnR4dCB8IDIgKzxicj4mbmJzcDt0ZXN0L3Rh cmFudG9vbC1jLXRlc3RzL0NNYWtlTGlzdHMudHh0IHwgNDMgKysrKys8YnI+Jm5ic3A7dGVzdC90 YXJhbnRvb2wtYy10ZXN0cy90ZXN0LmMgfCAyNTEgKysrKysrKysrKysrKysrKysrKysrKysrKys8 YnI+Jm5ic3A7dGVzdC90YXJhbnRvb2wtYy10ZXN0cy90ZXN0LmggfCAyNTEgKysrKysrKysrKysr KysrKysrKysrKysrKys8YnI+Jm5ic3A7NCBmaWxlcyBjaGFuZ2VkLCA1NDcgaW5zZXJ0aW9ucygr KTxicj4mbmJzcDtjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC90YXJhbnRvb2wtYy10ZXN0cy9DTWFr ZUxpc3RzLnR4dDxicj4mbmJzcDtjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC90YXJhbnRvb2wtYy10 ZXN0cy90ZXN0LmM8YnI+Jm5ic3A7Y3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3QvdGFyYW50b29sLWMt dGVzdHMvdGVzdC5oPGJyPjxicj5kaWZmIC0tZ2l0IGEvdGVzdC9DTWFrZUxpc3RzLnR4dCBiL3Rl c3QvQ01ha2VMaXN0cy50eHQ8YnI+aW5kZXggYTgyNjJiMTIuLjQ3Mjk2YTIyIDEwMDY0NDxicj4t LS0gYS90ZXN0L0NNYWtlTGlzdHMudHh0PGJyPisrKyBiL3Rlc3QvQ01ha2VMaXN0cy50eHQ8YnI+ QEAgLTQ4LDEyICs0OCwxNCBAQCBzZXBhcmF0ZV9hcmd1bWVudHMoTFVBSklUX1RFU1RfQ09NTUFO RCk8YnI+Jm5ic3A7YWRkX3N1YmRpcmVjdG9yeShMdWFKSVQtdGVzdHMpPGJyPiZuYnNwO2FkZF9z dWJkaXJlY3RvcnkoUFVDLVJpby1MdWEtNS4xLXRlc3RzKTxicj4mbmJzcDthZGRfc3ViZGlyZWN0 b3J5KGx1YS1IYXJuZXNzLXRlc3RzKTxicj4rYWRkX3N1YmRpcmVjdG9yeSh0YXJhbnRvb2wtYy10 ZXN0cyk8YnI+Jm5ic3A7YWRkX3N1YmRpcmVjdG9yeSh0YXJhbnRvb2wtdGVzdHMpPGJyPiZuYnNw Ozxicj4mbmJzcDthZGRfY3VzdG9tX3RhcmdldCgke1BST0pFQ1RfTkFNRX0tdGVzdCBERVBFTkRT PGJyPiZuYnNwOyZuYnNwOyZuYnNwO0x1YUpJVC10ZXN0czxicj4mbmJzcDsmbmJzcDsmbmJzcDtQ VUMtUmlvLUx1YS01LjEtdGVzdHM8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7bHVhLUhhcm5lc3MtdGVz dHM8YnI+KyB0YXJhbnRvb2wtYy10ZXN0czxicj4mbmJzcDsmbmJzcDsmbmJzcDt0YXJhbnRvb2wt dGVzdHM8YnI+Jm5ic3A7KTxicj4mbmJzcDs8YnI+ZGlmZiAtLWdpdCBhL3Rlc3QvdGFyYW50b29s LWMtdGVzdHMvQ01ha2VMaXN0cy50eHQgYi90ZXN0L3RhcmFudG9vbC1jLXRlc3RzL0NNYWtlTGlz dHMudHh0PGJyPm5ldyBmaWxlIG1vZGUgMTAwNjQ0PGJyPmluZGV4IDAwMDAwMDAwLi41ZWJlYTQ0 MTxicj4tLS0gL2Rldi9udWxsPGJyPisrKyBiL3Rlc3QvdGFyYW50b29sLWMtdGVzdHMvQ01ha2VM aXN0cy50eHQ8YnI+QEAgLTAsMCArMSw0MyBAQDxicj4rZmluZF9wcm9ncmFtKFBST1ZFIHByb3Zl KTxicj4raWYoTk9UIFBST1ZFKTxicj4rIG1lc3NhZ2UoV0FSTklORyAiYHByb3ZlJyBpcyBub3Qg Zm91bmQsIHNvIHRhcmFudG9vbC1jLXRlc3RzIHRhcmdldCBpcyBub3QgZ2VuZXJhdGVkIik8YnI+ KyByZXR1cm4oKTxicj4rZW5kaWYoKTwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90 ZT48ZGl2PlRoZXJlIGlzIHRoZSBzYW1lIGNoZWNrIGluIHRoZSB0ZXN0L3RhcmFudG9vbC10ZXN0 cy9DTWFrZUxpc3RzLnR4dC4gTWF5YmU8L2Rpdj48ZGl2PndlIHNob3VsZCBtb3ZlIGl0IHRvIHRo ZSBoaWdoZXItbGV2ZWwgQ01ha2Ugc28gdGhlIGxvd2VyLWxldmVsIENNYWtlTGlzdHM8L2Rpdj48 ZGl2PmluaGVyaXQgaXQuPC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBz b2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2 IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj4rPGJyPitzZXQoQ19U RVNUX1NVRkZJWCAuY190ZXN0KTxicj4rc2V0KENfVEVTVF9GTEFHUyAtLWZhaWx1cmVzIC0tc2h1 ZmZsZSk8YnI+Kzxicj4raWYoQ01BS0VfVkVSQk9TRV9NQUtFRklMRSk8YnI+KyBsaXN0KEFQUEVO RCBDX1RFU1RfRkxBR1MgLS12ZXJib3NlKTxicj4rZW5kaWYoKTxicj4rPGJyPisjIEJ1aWxkIGxp YnRlc3QuPGJyPis8YnI+K3NldChURVNUX0xJQl9OQU1FICJ0ZXN0Iik8YnI+K2FkZF9saWJyYXJ5 KGxpYnRlc3QgU1RBVElDIEVYQ0xVREVfRlJPTV9BTEwgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E SVJ9L3Rlc3QuYyk8YnI+K3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKGxpYnRlc3QgUFJJVkFU RSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0pPGJyPitzZXRfdGFyZ2V0X3Byb3BlcnRpZXMo bGlidGVzdCBQUk9QRVJUSUVTPGJyPisgQ09NUElMRV9GTEFHUyAiLVdhbGwgLVdleHRyYSI8YnI+ KyBPVVRQVVRfTkFNRSAiJHtURVNUX0xJQl9OQU1FfSI8YnI+KyBMSUJSQVJZX09VVFBVVF9ESVJF Q1RPUlkgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfSI8YnI+Kyk8YnI+Kzxicj4rIyBYWFg6 IEZvciBub3csIGp1c3QgYnVpbGQgbGlidGVzdC4gVGhlIHRlc3RzIHRvIGJlIGRlcGVuZGVkIG9u PGJyPisjIHdpbGwgYmUgYWRkZWQgYXQgdGhlIG5leHQgY29tbWl0LjwvZGl2PjwvZGl2PjwvZGl2 PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2PlR5cG86IHMvYXQgdGhlIG5leHQvaW4gdGhlIG5leHQv PC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBt YXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxw ZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj4rYWRkX2N1c3RvbV90YXJnZXQodGFyYW50b29s LWMtdGVzdHM8YnI+KyBERVBFTkRTIGxpYmx1YWppdCBsaWJ0ZXN0PGJyPispPGJyPis8YnI+KyMg WFhYOiBGb3Igbm93LCBydW4gMCB0ZXN0cy4gSnVzdCB2ZXJpZnkgdGhhdCBsaWJ0ZXN0IHdhcyBi dWlsZC48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj5UeXBvOiBzL3dh cyBidWlsZC93YXMgYnVpbHQvPC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFw eCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48 ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj4rYWRkX2N1c3Rv bV9jb21tYW5kKFRBUkdFVCB0YXJhbnRvb2wtYy10ZXN0czxicj4rIENPTU1FTlQgIlJ1bm5pbmcg VGFyYW50b29sIEMgdGVzdHMiPGJyPisgQ09NTUFORDxicj4rICR7UFJPVkV9PGJyPisgJHtDTUFL RV9DVVJSRU5UX0JJTkFSWV9ESVJ9PGJyPisgLS1leHQgJHtDX1RFU1RfU1VGRklYfTxicj4rIC0t am9icyAke0NNQUtFX0JVSUxEX1BBUkFMTEVMX0xFVkVMfTxicj4rICR7Q19URVNUX0ZMQUdTfTxi cj4rIFdPUktJTkdfRElSRUNUT1JZICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfTxicj4rKTxi cj4rPGJyPisjIHZpbTogZnQ9Y21ha2UgZXhwYW5kdGFiIHNoaWZ0d2lkdGg9MjogdGFic3RvcD0y OjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2PlRoYXQgY2hhbmdlIGlz IG5vdCBuZWNlc3NhcnkuPC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBz b2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2 IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj5kaWZmIC0tZ2l0IGEv dGVzdC90YXJhbnRvb2wtYy10ZXN0cy90ZXN0LmMgYi90ZXN0L3RhcmFudG9vbC1jLXRlc3RzL3Rl c3QuYzxicj5uZXcgZmlsZSBtb2RlIDEwMDY0NDxicj5pbmRleCAwMDAwMDAwMC4uZGM2M2NmM2Y8 YnI+LS0tIC9kZXYvbnVsbDxicj4rKysgYi90ZXN0L3RhcmFudG9vbC1jLXRlc3RzL3Rlc3QuYzxi cj5AQCAtMCwwICsxLDI1MSBAQDxicj4rI2luY2x1ZGUgInRlc3QuaCI8YnI+Kzxicj4rLyo8YnI+ KyAqIFRlc3QgbW9kdWxlLCBiYXNlZCBvbiBUQVAgMTQgc3BlY2lmaWNhdGlvbiBbMV0uPGJyPisg KiBbMV06IDxhIGhyZWY9Imh0dHBzOi8vdGVzdGFueXRoaW5nLm9yZy90YXAtdmVyc2lvbi0xNC1z cGVjaWZpY2F0aW9uLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL3Rlc3Rhbnl0aGluZy5v cmcvdGFwLXZlcnNpb24tMTQtc3BlY2lmaWNhdGlvbi5odG1sPC9hPjxicj4rICovPGJyPis8YnI+ Ky8qIE5lZWQgZm9yIGBQQVRIX01BWGAgaW4gZGlhZ25vc3RpYyBkZWZpbml0aW9uLiAqLzxicj4r I2luY2x1ZGUgJmx0O2xpbWl0cy5oJmd0Ozxicj4rI2luY2x1ZGUgJmx0O3NldGptcC5oJmd0Ozxi cj4rI2luY2x1ZGUgJmx0O3N0ZGFyZy5oJmd0Ozxicj4rLyogTmVlZCBmb3IgYHN0cmNocigpYCBp biBkaWFnbm9zdGljIHBhcnNpbmcuICovPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1 b3RlPjxkaXY+YHN0cmNocigpYCBpcyBub3Qgc2FmZSwgZGVzcGl0ZSB0aGUgZmFjdCBpdCBzZWFy Y2hlcyB0aWxsIGBcMGAuPC9kaXY+PGRpdj5XZSBzaG91bGQgYXQgbGVhc3QgcmVwbGFjZSBpdCB3 aXRoIGBtZW1jaHIoKWAsIHdoaWNoIGhhczwvZGl2PjxkaXY+dGhlIGV4cGxpY2l0IGNvbnN0cmFp bnQgZm9yIGJ1ZmZlciBsZW5ndGguPC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0 OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRp dj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj4rI2luY2x1 ZGUgJmx0O3N0cmluZy5oJmd0Ozxicj4rPGJyPisvKjxicj4rICogVGVzdCBsZXZlbDogMCBmb3Ig dGhlIHBhcmVudCB0ZXN0LCAmZ3Q7MCBmb3IgYW55IHN1YnRlc3RzLjxicj4rICovPGJyPitzdGF0 aWMgaW50IGxldmVsID0gLTE7PGJyPis8YnI+Ky8qPGJyPisgKiBUaGUgbGFzdCBkaWFnbm9zdGlj IGRhdGEgdG8gYmUgdXNlZCBpbiB0aGUgWUFNTCBEaWFnbm9zdGljPGJyPisgKiBibG9jay48YnI+ KyAqPGJyPisgKiBDb250YWlucyBmaWxlbmFtZSwgbGluZSBudW1iZXIgYW5kIGZhaWxlZCBleHBy ZXNzaW9uIG9yIGFzc2VydDxicj4rICogbmFtZSBhbmQgImdvdCIgYW5kICJleHBlY3RlZCIgZmll bGRzLiBBbGwgZW50cmllcyBhcmUgc2VwYXJhdGVkPGJyPisgKiBieSBcbi48YnI+KyAqIFRoZSBs b25nZXN0IGZpZWxkIGlzIGZpbGVuYW1lIGhlcmUsIHNvIFBBVEhfTUFYICogMyBhczxicj4rICog dGhlIGRpYWdub3N0aWMgc3RyaW5nIGxlbmd0aCBzaG91bGQgYmUgZW5vdWdoLjxicj4rICo8YnI+ KyAqIFRoZSBmaXJzdCBcMCBtZWFucyB0aGUgZW5kIG9mIGRpYWdub3N0aWMgZGF0YS48YnI+KyAq PGJyPisgKiBBcyBmYXIgYXMgYHN0cmNocigpYCBzZWFyY2hlcyB1bnRpbCBcMCwgYWxsIHByZXZp b3VzIGVudHJpZXM8YnI+KyAqIGFyZSBzdXBwcmVzc2VkIGJ5IHRoZSBsYXN0IG9uZS4gSWYgdGhl IGZpcnN0IGJ5dGUgaXMgXDAgLS08YnI+KyAqIGRpYWdub3N0aWMgaXMgZW1wdHkuPGJyPisgKi88 YnI+KyNkZWZpbmUgVEVTVF9ESUFHX0RBVEFfTUFYIChQQVRIX01BWCAqIDMpPGJyPitjaGFyIHRl c3RfZGlhZ19idWZbVEVTVF9ESUFHX0RBVEFfTUFYXSA9IHswfTs8YnI+Kzxicj4rY29uc3QgY2hh ciAqc2tpcF9yZWFzb24gPSBOVUxMOzxicj4rY29uc3QgY2hhciAqdG9kb19yZWFzb24gPSBOVUxM Ozxicj4rPGJyPisvKiBJbmRlbnQgZm9yIHRoZSBUQVAuIDQgc3BhY2VzIGlzIGRlZmF1bHQgZm9y IHN1YnRlc3QuICovPGJyPitzdGF0aWMgdm9pZCBpbmRlbnQodm9pZCk8YnI+K3s8YnI+KyBpbnQg aTs8YnI+KyBmb3IgKGkgPSAwOyBpICZsdDsgbGV2ZWw7IGkrKyk8YnI+KyBwcmludGYoIiAiKTs8 YnI+K308YnI+Kzxicj4rdm9pZCB0ZXN0X21lc3NhZ2UoY29uc3QgY2hhciAqZm10LCAuLi4pPGJy Pit7PGJyPisgdmFfbGlzdCBhcDs8YnI+KyBpbmRlbnQoKTs8YnI+KyB2YV9zdGFydChhcCwgZm10 KTs8YnI+KyB2cHJpbnRmKGZtdCwgYXApOzxicj4rIHByaW50ZigiXG4iKTs8YnI+KyB2YV9lbmQo YXApOzxicj4rfTxicj4rPGJyPitzdGF0aWMgdm9pZCB0ZXN0X3ByaW50X3RhcF92ZXJzaW9uKHZv aWQpPGJyPit7PGJyPisgLyo8YnI+KyAqIFNpbmNlIHNldmVyYWwgVEFQMTMgcGFyc2VycyBpbiBw b3B1bGFyIHVzYWdlIHRyZWF0PGJyPisgKiBhIHJlcGVhdGVkIFZlcnNpb24gZGVjbGFyYXRpb24g YXMgYW4gZXJyb3IsIGV2ZW4gaWYgdGhlPGJyPisgKiBWZXJzaW9uIGlzIGluZGVudGVkLCBTdWJ0 ZXN0cyBfc2hvdWxkIG5vdF8gaW5jbHVkZSBhPGJyPisgKiBWZXJzaW9uLCBpZiBUQVAxMyBIYXJu ZXNzIGNvbXBhdGliaWxpdHkgaXM8YnI+KyAqIGRlc2lyYWJsZSBbMV0uPGJyPisgKi88YnI+KyBp ZiAobGV2ZWwgPT0gMCk8YnI+KyB0ZXN0X21lc3NhZ2UoIlRBUCB2ZXJzaW9uICVkIiwgVEFQX1ZF UlNJT04pOzxicj4rfTxicj4rPGJyPitzdGF0aWMgdm9pZCB0ZXN0X3N0YXJ0X2NvbW1lbnQoY29u c3QgY2hhciAqdF9uYW1lKTxicj4rezxicj4rIGlmIChsZXZlbCAmZ3Q7IC0xKTxicj4rIC8qPGJy PisgKiBJbmZvcm0gYWJvdXQgc3RhcnRpbmcgc3VidGVzdCwgZWFzaWVyIGZvcjxicj4rICogaHVt YW5zIHRvIHJlYWQuPGJyPisgKiBTdWJ0ZXN0IHdpdGggYSBuYW1lIG11c3QgYmUgdGVybWluYXRl ZCBieSBhPGJyPisgKiBUZXN0IFBvaW50IHdpdGggYSBtYXRjaGluZyBEZXNjcmlwdGlvbiBbMV0u PGJyPisgKi88YnI+KyB0ZXN0X2NvbW1lbnQoIlN1YnRlc3Q6ICVzIiwgdF9uYW1lKTs8YnI+K308 YnI+Kzxicj4rdm9pZCBfdGVzdF9wcmludF9za2lwX2FsbChjb25zdCBjaGFyICpncm91cF9uYW1l LCBjb25zdCBjaGFyICpyZWFzb24pPGJyPit7PGJyPisgdGVzdF9zdGFydF9jb21tZW50KGdyb3Vw X25hbWUpOzxicj4rIC8qPGJyPisgKiBYWFg6IFRoaXMgdGVzdCBpc24ndCBzdGFydGVkIHlldCwg c28gc2V0IGluZGVudCBsZXZlbDxicj4rICogbWFudWFsbHkuPGJyPisgKi88YnI+KyBsZXZlbCsr Ozxicj4rIHRlc3RfcHJpbnRfdGFwX3ZlcnNpb24oKTs8YnI+KyAvKjxicj4rICogWFhYOiBgU0tJ UF9ESVJFQ1RJVkVgIGlzIG5vdCBuZWNlc3NhcnkgaGVyZSBhY2NvcmRpbmc8YnI+KyAqIHRvIHRo ZSBUQVAxNCBzcGVjaWZpY2F0aW9uIFsxXSwgYnV0IHNvbWUgaGFybmVzc2VzIG1heTxicj4rICog ZmFpbCB0byBwYXJzZSB0aGUgb3V0cHV0IHdpdGhvdXQgaXQuPGJyPisgKi88YnI+KyB0ZXN0X21l c3NhZ2UoIjEuLjAiIFNLSVBfRElSRUNUSVZFICIlcyIsIHJlYXNvbik7PGJyPisgbGV2ZWwtLTs8 YnI+K308YnI+Kzxicj4rLyogSnVzdCBpbmZvcm0gVEFQIHBhcnNlciBob3cgbWFueSB0ZXN0cyB3 ZSB3YW50IHRvIHJ1bi4gKi88YnI+K3N0YXRpYyB2b2lkIHRlc3RfcGxhbihzaXplX3QgcGxhbm5l ZCk8YnI+K3s8YnI+KyB0ZXN0X21lc3NhZ2UoIjEuLiVsdSIsIHBsYW5uZWQpOzxicj4rfTxicj4r PGJyPisvKiBIdW1hbi1yZWFkYWJsZSBvdXRwdXQgaG93IG1hbnkgdGVzdHMvc3VidGVzdHMgYXJl IGZhaWxlZC4gKi88YnI+K3N0YXRpYyB2b2lkIHRlc3RfZmluaXNoKHNpemVfdCBwbGFubmVkLCBz aXplX3QgZmFpbGVkKTxicj4rezxicj4rIGNvbnN0IGNoYXIgKnRfdHlwZSA9IGxldmVsID09IDAg PyAidGVzdHMiIDogInN1YnRlc3RzIjs8YnI+KyBpZiAoZmFpbGVkICZndDsgMCk8YnI+KyB0ZXN0 X2NvbW1lbnQoIkxvb2tzIGxpa2UgeW91IGZhaWxlZCAlbHUgJXMgb3V0IG9mICVsdSIsPGJyPisg ZmFpbGVkLCB0X3R5cGUsIHBsYW5uZWQpOzwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2tx dW90ZT48ZGl2PlNpZGUgbm90ZTogwqtMb29rcyBsaWtlwrsgaXMgYSBiaXQgbWlzbGVhZGluZywg aXQgc2VlbXMgbGlrZSB3ZSBhcmU8YnI+bm90IHN1cmUgd2hldGhlciB0aGUgdGVzdHMgZmFpbGVk IG9yIG5vdC4gSSBwcm9wb3NlIHRvIHJlcGhyYXNlIGl0PGJyPmluIGEgbW9yZSBzdHJpY3QgZmFz aGlvbjogwqtGYWlsZWQgJWx1IG91dCBvZiAlbHXCuy48L2Rpdj48YmxvY2txdW90ZSBzdHlsZT0i Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAw IDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48 ZGl2PisgZmZsdXNoKHN0ZG91dCk7PGJyPit9PGJyPis8YnI+K3ZvaWQgdGVzdF9zZXRfc2tpcF9y ZWFzb24oY29uc3QgY2hhciAqcmVhc29uKTxicj4rezxicj4rIHNraXBfcmVhc29uID0gcmVhc29u Ozxicj4rfTxicj4rPGJyPit2b2lkIHRlc3Rfc2V0X3RvZG9fcmVhc29uKGNvbnN0IGNoYXIgKnJl YXNvbik8YnI+K3s8YnI+KyB0b2RvX3JlYXNvbiA9IHJlYXNvbjs8YnI+K308YnI+Kzxicj4rdm9p ZCB0ZXN0X3NhdmVfZGlhZ19kYXRhKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTxicj4rezxicj4rIHZh X2xpc3QgYXA7PGJyPisgdmFfc3RhcnQoYXAsIGZtdCk7PGJyPisgdnNucHJpbnRmKHRlc3RfZGlh Z19idWYsIFRFU1RfRElBR19EQVRBX01BWCwgZm10LCBhcCk7PGJyPisgdmFfZW5kKGFwKTs8YnI+ K308YnI+Kzxicj4rc3RhdGljIHZvaWQgdGVzdF9jbGVhcl9kaWFnX2RhdGEodm9pZCk8YnI+K3s8 YnI+KyAvKjxicj4rICogTGltaXQgYnVmZmVyIHdpdGggemVybyBieXRlIHRvIHNob3cgdGhhdCB0 aGVyZSBpcyBubzxicj4rICogYW55IGVudHJ5Ljxicj4rICovPGJyPisgdGVzdF9kaWFnX2J1Zlsw XSA9ICdcMCc7PGJyPit9PGJyPis8YnI+K3N0YXRpYyBpbnQgdGVzdF9kaWFnbm9zdGljX2lzX3Nl dCh2b2lkKTxicj4rezxicj4rIHJldHVybiB0ZXN0X2RpYWdfYnVmWzBdICE9ICdcMCc7PGJyPit9 PGJyPis8YnI+Ky8qPGJyPisgKiBQYXJzZSB0aGUgbGFzdCBkaWFnbm9zdGljIGRhdGEgZW50cnkg YW5kIHByaW50IGl0IGluIFlBTUw8YnI+KyAqIGZvcm1hdCB3aXRoIHRoZSBjb3JyZXNwb25kaW5n IGFkZGl0aW9uYWwgaGFsZi1pbmRlbnQgaW4gVEFQPGJyPisgKiAoMiBzcGFjZXMpLjxicj4rICog Q2xlYXIgZGlhZ25vc3RpYyBtZXNzYWdlIHRvIGJlIHN1cmUgdGhhdCBpdCdzIHByaW50ZWQgb25j ZS48YnI+KyAqIFhYWDogXG4gc2VwYXJhdG9ycyBhcmUgY2hhbmdlZCB0byBcMCBkdXJpbmcgcGFy c2luZyBhbmQ8YnI+KyAqIHByaW50aW5nIG91dHB1dCBmb3IgY29udmVuaWVuY2UgaW4gdXNhZ2Uu PGJyPisgKi88YnI+K3N0YXRpYyB2b2lkIHRlc3RfZGlhZ25vc3RpYyh2b2lkKTxicj4rezxicj4r IHRlc3RfbWVzc2FnZSgiIC0tLSIpOzxicj4rIGNoYXIgKmVudCA9IHRlc3RfZGlhZ19idWY7PGJy PisgY2hhciAqZW50X2VuZCA9IE5VTEw7PGJyPisgd2hpbGUgKChlbnRfZW5kID0gc3RyY2hyKGVu dCwgJ1xuJykpICE9IE5VTEwpIHs8YnI+KyBjaGFyICpuZXh0X2VudCA9IGVudF9lbmQgKyAxOzxi cj4rIC8qPGJyPisgKiBMaW1pdCBzdHJpbmcgd2l0aCB3aXRoIHRoZSB6ZXJvIGJ5dGUgZm9yPGJy PisgKiBmb3JtYXR0ZWQgb3V0cHV0LiBBbnl3YXksIGRvbid0IG5lZWQgdGhpcyBcbjxicj4rICog YW55bW9yZS48YnI+KyAqLzxicj4rICplbnRfZW5kID0gJ1wwJzs8YnI+KyB0ZXN0X21lc3NhZ2Uo IiAlcyIsIGVudCk7PGJyPisgZW50ID0gbmV4dF9lbnQ7PGJyPisgfTxicj4rIHRlc3RfbWVzc2Fn ZSgiIC4uLiIpOzxicj4rIHRlc3RfY2xlYXJfZGlhZ19kYXRhKCk7PGJyPit9PGJyPis8YnI+K3N0 YXRpYyBqbXBfYnVmIHRlc3RfcnVuX2Vudjs8YnI+Kzxicj4rVEVTVF9OT1JFVCB2b2lkIF90ZXN0 X2V4aXQoaW50IHN0YXR1cyk8YnI+K3s8YnI+KyBsb25nam1wKHRlc3RfcnVuX2Vudiwgc3RhdHVz KTs8YnI+K308YnI+Kzxicj4rc3RhdGljIGludCB0ZXN0X3J1bihjb25zdCBzdHJ1Y3QgdGVzdF91 bml0ICp0ZXN0LCBzaXplX3QgdGVzdF9udW1iZXIsPGJyPisgdm9pZCAqdGVzdF9zdGF0ZSk8YnI+ K3s8YnI+KyBpbnQgc3RhdHVzID0gVEVTVF9FWElUX1NVQ0NFU1M7PGJyPisgLyo8YnI+KyAqIFJ1 biB1bml0IHRlc3QuIERpYWdub3N0aWMgaW4gY2FzZSBvZiBmYWlsdXJlIHNldHVwIGJ5PGJyPisg KiBoZWxwZXJzIGFzc2VydCBtYWNyb3MgZGVmaW5lZCBpbiB0aGUgaGVhZGVyLjxicj4rICovPGJy PisgaW50IGptcF9zdGF0dXM7PGJyPisgaWYgKChqbXBfc3RhdHVzID0gc2V0am1wKHRlc3RfcnVu X2VudikpID09IDApIHs8YnI+KyBpZiAodGVzdC0mZ3Q7Zih0ZXN0X3N0YXRlKSAhPSBURVNUX0VY SVRfU1VDQ0VTUyk8YnI+KyBzdGF0dXMgPSBURVNUX0VYSVRfRkFJTFVSRTs8YnI+KyB9IGVsc2Ug ezxicj4rIHN0YXR1cyA9IGptcF9zdGF0dXMgLSBURVNUX0pNUF9TVEFUVVNfU0hJRlQ7PGJyPisg fTxicj4rIGNvbnN0IGNoYXIgKnJlc3VsdCA9IHN0YXR1cyA9PSBURVNUX0VYSVRfU1VDQ0VTUyA/ ICJvayIgOiAibm90IG9rIjs8YnI+Kzxicj4rIC8qPGJyPisgKiBGb3JtYXQgc3VmZml4IG9mIHRo ZSB0ZXN0IG1lc3NhZ2UgZm9yIFNLSVAgb3IgVE9ETzxicj4rICogZGlyZWN0aXZlcy48YnI+KyAq Lzxicj4rI2RlZmluZSBTVUZGSVhfU1ogMTAyNDxicj4rIGNoYXIgc3VmZml4W1NVRkZJWF9TWl0g PSB7MH07PGJyPisgaWYgKHNraXBfcmVhc29uKSB7PGJyPisgc25wcmludGYoc3VmZml4LCBTVUZG SVhfU1osIFNLSVBfRElSRUNUSVZFICIlcyIsIHNraXBfcmVhc29uKTs8YnI+KyBza2lwX3JlYXNv biA9IE5VTEw7PGJyPisgfSBlbHNlIGlmICh0b2RvX3JlYXNvbikgezxicj4rIC8qIFByZXZlbnQg Y291bnQgdGhpcyB0ZXN0IGFzIGZhaWxlZC4gKi88YnI+KyBzdGF0dXMgPSBURVNUX0VYSVRfU1VD Q0VTUzs8YnI+KyBzbnByaW50ZihzdWZmaXgsIFNVRkZJWF9TWiwgVE9ET19ESVJFQ1RJVkUgIiVz IiwgdG9kb19yZWFzb24pOzxicj4rIHRvZG9fcmVhc29uID0gTlVMTDs8YnI+KyB9PGJyPisjdW5k ZWYgU1VGRklYX1NaPGJyPis8YnI+KyB0ZXN0X21lc3NhZ2UoIiVzICVsdSAtICVzJXMiLCByZXN1 bHQsIHRlc3RfbnVtYmVyLCB0ZXN0LSZndDtuYW1lLDxicj4rIHN1ZmZpeCk7PGJyPis8YnI+KyBp ZiAoc3RhdHVzICZhbXA7JmFtcDsgdGVzdF9kaWFnbm9zdGljX2lzX3NldCgpKTxicj4rIHRlc3Rf ZGlhZ25vc3RpYygpOzxicj4rIHJldHVybiBzdGF0dXM7PGJyPit9PGJyPis8YnI+K2ludCBfdGVz dF9ydW5fZ3JvdXAoY29uc3QgY2hhciAqZ3JvdXBfbmFtZSwgY29uc3Qgc3RydWN0IHRlc3RfdW5p dCAqdGVzdHMsPGJyPisgc2l6ZV90IG5fdGVzdHMsIHZvaWQgKnRlc3Rfc3RhdGUpPC9kaXY+PC9k aXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+U3RyaWN0bHkgc2F5aW5nLCB0aGUgJmx0 O3R5cGUmZ3Q7KiBhbmQgJmx0O3R5cGUmZ3Q7W10gYXJlIGRpZmZlcmVudCwgYW5kIHNpbmNlIHRo YXQgdGVzdGluZzxicj5mYWNpbGl0eSBpcyBkZXBlbmRlbnQgb24gdGhlIGBzaXplb2ZgIGJlaGF2 aW9yIG9uICZsdDt0eXBlJmd0O1tdLCBJIHRoaW5rIHRoYXQgYXJndW1lbnQ8YnI+dHlwZSBzaG91 bGQgYmUgY2hhbmdlZCB0byBgY29uc3Qgc3RydWN0IHRlc3RfdW5pdFtdYC4mbmJzcDs8L2Rpdj48 YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjox MHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1y ZWFkbXNnLW1zZyI+PGRpdj48ZGl2Pit7PGJyPisgdGVzdF9zdGFydF9jb21tZW50KGdyb3VwX25h bWUpOzxicj4rPGJyPisgbGV2ZWwrKzs8YnI+KyB0ZXN0X3ByaW50X3RhcF92ZXJzaW9uKCk7PGJy Pis8YnI+KyB0ZXN0X3BsYW4obl90ZXN0cyk7PGJyPis8YnI+KyBzaXplX3Qgbl9mYWlsZWQgPSAw Ozxicj4rPGJyPisgc2l6ZV90IGk7PGJyPisgZm9yIChpID0gMDsgaSAmbHQ7IG5fdGVzdHM7IGkr Kykgezxicj4rIHNpemVfdCB0ZXN0X251bWJlciA9IGkgKyAxOzxicj4rIC8qIFJldHVybiAxIG9u IGZhaWx1cmUsIDAgb24gc3VjY2Vzcy4gKi88YnI+KyBuX2ZhaWxlZCArPSB0ZXN0X3J1bigmYW1w O3Rlc3RzW2ldLCB0ZXN0X251bWJlciwgdGVzdF9zdGF0ZSk7PGJyPisgfTxicj4rPGJyPisgdGVz dF9maW5pc2gobl90ZXN0cywgbl9mYWlsZWQpOzxicj4rPGJyPisgbGV2ZWwtLTs8YnI+KyByZXR1 cm4gbl9mYWlsZWQgJmd0OyAwID8gVEVTVF9FWElUX0ZBSUxVUkUgOiBURVNUX0VYSVRfU1VDQ0VT Uzs8YnI+K308YnI+ZGlmZiAtLWdpdCBhL3Rlc3QvdGFyYW50b29sLWMtdGVzdHMvdGVzdC5oIGIv dGVzdC90YXJhbnRvb2wtYy10ZXN0cy90ZXN0Lmg8YnI+bmV3IGZpbGUgbW9kZSAxMDA2NDQ8YnI+ aW5kZXggMDAwMDAwMDAuLjY5NWM1YjRkPGJyPi0tLSAvZGV2L251bGw8YnI+KysrIGIvdGVzdC90 YXJhbnRvb2wtYy10ZXN0cy90ZXN0Lmg8YnI+QEAgLTAsMCArMSwyNTEgQEA8YnI+KyNpZm5kZWYg VEVTVF9IPGJyPisjZGVmaW5lIFRFU1RfSDxicj4rPGJyPisjaW5jbHVkZSAmbHQ7c3RkaW8uaCZn dDs8YnI+KyNpbmNsdWRlICZsdDtzdGRsaWIuaCZndDs8YnI+Kzxicj4rLyo8YnI+KyAqIFRlc3Qg bW9kdWxlLCBiYXNlZCBvbiBUQVAgMTQgc3BlY2lmaWNhdGlvbiBbMV0uPGJyPisgKiBbMV06IDxh IGhyZWY9Imh0dHBzOi8vdGVzdGFueXRoaW5nLm9yZy90YXAtdmVyc2lvbi0xNC1zcGVjaWZpY2F0 aW9uLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL3Rlc3Rhbnl0aGluZy5vcmcvdGFwLXZl cnNpb24tMTQtc3BlY2lmaWNhdGlvbi5odG1sPC9hPjxicj4rICogVmVyc2lvbiAxMyBpcyBzZXQg Zm9yIGJldHRlciBjb21wYXRpYmlsaXR5IG9uIG9sZCBtYWNoaW5lcy48YnI+KyAqPGJyPisgKiBU T0RPOjxicj4rICogKiBIZWxwZXJzIGFzc2VydCBtYWNyb3M6PGJyPisgKiAtIGFzc2VydF91aW50 X2VxdWFsIGlmIG5lZWRlZDxicj4rICogLSBhc3NlcnRfdWludF9ub3RfZXF1YWwgaWYgbmVlZGVk PGJyPisgKiAtIGFzc2VydF9zdHJfZXF1YWwgaWYgbmVlZGVkPGJyPisgKiAtIGFzc2VydF9zdHJf bm90X2VxdWFsIGlmIG5lZWRlZDxicj4rICogLSBhc3NlcnRfbWVtb3J5X2VxdWFsIGlmIG5lZWRl ZDxicj4rICogLSBhc3NlcnRfbWVtb3J5X25vdF9lcXVhbCBpZiBuZWVkZWQ8YnI+KyAqICogUHJh Z21hcy48YnI+KyAqLzxicj4rPGJyPisjZGVmaW5lIFRBUF9WRVJTSU9OIDEzPGJyPis8YnI+KyNk ZWZpbmUgVEVTVF9FWElUX1NVQ0NFU1MgMDxicj4rI2RlZmluZSBURVNUX0VYSVRfRkFJTFVSRSAx PGJyPis8YnI+KyNkZWZpbmUgVEVTVF9KTVBfU1RBVFVTX1NISUZUIDI8YnI+KyNkZWZpbmUgVEVT VF9MSk1QX0VYSVRfU1VDQ0VTUyAoVEVTVF9FWElUX1NVQ0NFU1MgKyBURVNUX0pNUF9TVEFUVVNf U0hJRlQpPGJyPisjZGVmaW5lIFRFU1RfTEpNUF9FWElUX0ZBSUxVUkUgKFRFU1RfRVhJVF9GQUlM VVJFICsgVEVTVF9KTVBfU1RBVFVTX1NISUZUKTxicj4rPGJyPisjZGVmaW5lIFRFU1RfTk9SRVQg X19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTxicj4rPGJyPit0eXBlZGVmIGludCAoKnRlc3RfZnVu Yykodm9pZCAqdGVzdF9zdGF0ZSk7PGJyPitzdHJ1Y3QgdGVzdF91bml0IHs8YnI+KyBjb25zdCBj aGFyICpuYW1lOzxicj4rIHRlc3RfZnVuYyBmOzxicj4rfTs8YnI+Kzxicj4rLyogSW5pdGlhbGl6 ZSBgdGVzdF91bml0YCBzdHJ1Y3R1cmUuICovPGJyPisjZGVmaW5lIHRlc3RfdW5pdF9uZXcoZikg eyNmLCBmfTxicj4rPGJyPisjZGVmaW5lIGxlbmd0aG9mKGFycikgKHNpemVvZihhcnIpIC8gc2l6 ZW9mKChhcnIpWzBdKSk8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj5T ZWUgdGhlIGNvbW1lbnQgd2l0aCBteSBjb25jZXJucyBhYm91dCB0aGUgJmx0O3R5cGUmZ3Q7IGFu ZCAmbHQ7dHlwZSZndDtbXTxicj5hYm92ZS48L2Rpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVy LWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7 Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2Pis8 YnI+Ky8qPGJyPisgKiBfX2Z1bmNfXyBpcyB0aGUgbmFtZSBmb3IgYSB0ZXN0IGdyb3VwLCAibWFp biIgZm9yIHRoZSBwYXJlbnQ8YnI+KyAqIHRlc3QuPGJyPisgKi88YnI+KyNkZWZpbmUgdGVzdF9y dW5fZ3JvdXAodF9hcnIsIHRfc3RhdGUpIFw8YnI+KyBfdGVzdF9ydW5fZ3JvdXAoX19mdW5jX18s IHRfYXJyLCBsZW5ndGhvZih0X2FyciksIHRfc3RhdGUpPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+ PC9ibG9ja3F1b3RlPjxkaXY+SXMgdGhlcmUgYW55IHJlYXNvbiBmb3IgaXQgdG8gYmUgYSBtYWNy byBhbmQgbm90IGEgZnVuY3Rpb24gd3JhcHBlcj88YnI+SSBiZWxpZXZlIGl0IGlzIGJldHRlciB0 byB1c2UgdGhlIGZ1bmN0aW9ucyB3aGVuIHBvc3NpYmxlLCBzaW5jZSB0aGV5IGFyZTxicj5lYXNp ZXIgdG8gc3VwcG9ydCBhbmQgZGVidWcuPC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1s ZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+ PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj4rPGJy PisjZGVmaW5lIFNLSVBfRElSRUNUSVZFICIgIyBTS0lQICI8YnI+KyNkZWZpbmUgVE9ET19ESVJF Q1RJVkUgIiAjIFRPRE8gIjxicj4rPGJyPisvKjxicj4rICogWFhYOiBNYXkgYmUgaW1wbGVtZW50 ZWQgYXMgd2VsbCB2aWE8YnI+KyAqIGBfdGVzdF9ydW5fZ3JvdXAoX19mdW5jLCBOVUxMLCAwLCBO VUxMKWAgYW5kPGJyPisgKiBgdGVzdF9zZXRfc2tpcF9yZWFzb25gIHdpdGggYWRkaXRpb25hbCBj aGFuZ2VzIGluIHRoZSBmb3JtZXIuPGJyPisgKiBCdXQgdGhlIGN1cnJlbnQgYXBwcm9hY2ggaXMg ZWFzaWVyIHRvIG1haW50YWluLCBhcyBmYXIgYXMgd2U8YnI+KyAqIGRvbid0IHdhbnQgdG8gaW50 ZXJmZXJlIGRpZmZlcmVudCBlbnRpdGllcy48YnI+KyAqLzxicj4rI2RlZmluZSBza2lwX2FsbChy ZWFzb24pIGRvIHsgXDxicj4rIF90ZXN0X3ByaW50X3NraXBfYWxsKF9fZnVuY19fLCByZWFzb24p OyBcPGJyPisgcmV0dXJuIFRFU1RfRVhJVF9TVUNDRVNTOyBcPGJyPit9IHdoaWxlICgwKTwvZGl2 PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2PkFnYWluLCBJIHByb3Bvc2UgdG8g cmVwbGFjZSBpdCB3aXRoIGEgY29udmVudGlvbmFsIGZ1bmN0aW9uIHRvPGJyPm1ha2UgdGhlIHJl dHVybiBwb2ludCBleHBsaWNpdCBpbiB0aGUgdGVzdCBpbXBsZW1lbnRhdGlvbiwgc28gaXQ8YnI+ bG9va3MgbGlrZSBgcmV0dXJuIHNraXBfYWxsKCZsdDtyZWFzb24mZ3Q7KWAsIGluc3RlYWQgb2Yg anVzdCBgc2tpcF9hbGxgLjxicj5TYW1lIGZvciB0aGUgc2tpcGNvbmQgYW5kIHRvZG8gZmFjaWxp dGllcyBiZWxvdy48L2Rpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlk ICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xh c3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2Pis8YnI+KyNkZWZpbmUgc2tp cChyZWFzb24pIGRvIHsgXDxicj4rIHRlc3Rfc2V0X3NraXBfcmVhc29uKHJlYXNvbik7IFw8YnI+ KyByZXR1cm4gVEVTVF9FWElUX1NVQ0NFU1M7IFw8YnI+K30gd2hpbGUgKDApPC9kaXY+PC9kaXY+ PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDox cHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+ PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+Kzxicj4rI2Rl ZmluZSB0b2RvKHJlYXNvbikgZG8geyBcPGJyPisgdGVzdF9zZXRfdG9kb19yZWFzb24ocmVhc29u KTsgXDxicj4rIHJldHVybiBURVNUX0VYSVRfRkFJTFVSRTsgXDxicj4rfSB3aGlsZSAoMCk8YnI+ Kzxicj4rI2RlZmluZSBiYWlsX291dChyZWFzb24pIGRvIHsgXDxicj4rIC8qIFw8YnI+KyAqIEZv ciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIFRBUDEzIEhhcm5lc3NlcywgXDxicj4rICog UHJvZHVjZXJzIF9zaG91bGRfIGVtaXQgYSAiQmFpbCBvdXQhIiBsaW5lIGF0IHRoZSByb290IFw8 YnI+KyAqIGluZGVudGF0aW9uIGxldmVsIHdoZW5ldmVyIGEgU3VidGVzdCBiYWlscyBvdXQgWzFd LiBcPGJyPisgKi8gXDxicj4rIHByaW50ZigiQmFpbCBvdXQhICVzXG4iLCByZWFzb24pOyBcPGJy PisgZXhpdChURVNUX0VYSVRfRkFJTFVSRSk7IFw8YnI+K30gd2hpbGUgKDApPGJyPis8YnI+Ky8q IGBmbXRgIHNob3VsZCBhbHdheXMgYmUgYSBmb3JtYXQgc3RyaW5nIGhlcmUuICovPGJyPisjZGVm aW5lIHRlc3RfY29tbWVudChmbXQsIC4uLikgdGVzdF9tZXNzYWdlKCIjICIgZm10LCBfX1ZBX0FS R1NfXyk8YnI+Kzxicj4rLyo8YnI+KyAqIFRoaXMgaXMgYSBzZXQgb2YgdXNlZnVsIGFzc2VydCBt YWNyb3MgbGlrZSB0aGUgc3RhbmRhcmQgQzxicj4rICogbGliYXJ5J3MgYXNzZXJ0KDMpIG1hY3Jv Ljxicj4rICo8YnI+KyAqIE9uIGFuIGFzc2VydGlvbiBmYWlsdXJlIGFuIGFzc2VydCBtYWNybyB3 aWxsIHNhdmUgdGhlPGJyPisgKiBkaWFnbm9zdGljIHRvIHRoZSBzcGVjaWFsIGJ1ZmZlciwgdG8g YmUgcmVwb3J0ZWQgdmlhIFlBTUw8YnI+KyAqIERpYWdub3N0aWMgYmxvY2sgYW5kIGZpbmlzaCBh IHRlc3QgZnVuY3Rpb24gd2l0aDxicj4rICogYHJldHVybiBURVNUX0VYSVRfRkFJTFVSRWAuPGJy PisgKjxicj4rICogRHVlIHRvIGxpbWl0YXRpb25zIG9mIHRoZSBDIGxhbmd1YWdlIGBhc3NlcnRf dHJ1ZSgpYCBhbmQ8YnI+KyAqIGBhc3NlcnRfZmFsc2UoKWAgbWFjcm9zIGNhbiBvbmx5IGRpc3Bs YXkgdGhlIGV4cHJlc3Npb24gdGhhdDxicj4rICogY2F1c2VkIHRoZSBhc3NlcnRpb24gZmFpbHVy ZS4gVHlwZSBzcGVjaWZpYyBhc3NlcnQgbWFjcm9zLDxicj4rICogYGFzc2VydF97dHlwZX1fZXF1 YWwoKWAgYW5kIGBhc3NlcnRfe3R5cGV9X25vdF9lcXVhbCgpYCwgc2F2ZTxicj4rICogdGhlIGRh dGEgdGhhdCBjYXVzZWQgdGhlIGFzc2VydGlvbiBmYWlsdXJlIHdoaWNoIGluY3JlYXNlcyBkYXRh PGJyPisgKiB2aXNpYmlsaXR5IGFpZGluZyBkZWJ1Z2dpbmcgb2YgZmFpbGluZyB0ZXN0IGNhc2Vz Ljxicj4rICovPGJyPis8YnI+KyNkZWZpbmUgTE9DQVRJT05fRk1UICJsb2NhdGlvbjpcdCVzOiVk XG4iPGJyPisjZGVmaW5lIEFTU0VSVF9OQU1FX0ZNVChuYW1lKSAiZmFpbGVkX2Fzc2VydGlvbjpc dCIgI25hbWUgIlxuIjxicj4rPGJyPisjZGVmaW5lIGFzc2VydF90cnVlKGNvbmQpIGRvIHsgXDxi cj4rIGlmICghKGNvbmQpKSB7IFw8YnI+KyB0ZXN0X3NhdmVfZGlhZ19kYXRhKExPQ0FUSU9OX0ZN VCBcPGJyPisgImNvbmRpdGlvbl9mYWlsZWQ6XHQnIiAjY29uZCAiJ1xuIiwgXDxicj4rIF9fRklM RV9fLCBfX0xJTkVfXyk7IFw8YnI+KyBfdGVzdF9leGl0KFRFU1RfTEpNUF9FWElUX0ZBSUxVUkUp OyBcPGJyPisgfSBcPGJyPit9IHdoaWxlICgwKTxicj4rPGJyPisjZGVmaW5lIGFzc2VydF9mYWxz ZShjb25kKSBhc3NlcnRfdHJ1ZSghKGNvbmQpKTxicj4rPGJyPisjZGVmaW5lIGFzc2VydF9wdHJf ZXF1YWwoZ290LCBleHBlY3RlZCkgZG8geyBcPGJyPisgaWYgKChnb3QpICE9IChleHBlY3RlZCkp IHsgXDxicj4rIHRlc3Rfc2F2ZV9kaWFnX2RhdGEoIFw8YnI+KyBMT0NBVElPTl9GTVQgXDxicj4r IEFTU0VSVF9OQU1FX0ZNVChhc3NlcnRfcHRyX2VxdWFsKSBcPGJyPisgImdvdDogJXBcbiIgXDxi cj4rICJleHBlY3RlZDogJXBcbiIsIFw8YnI+KyBfX0ZJTEVfXywgX19MSU5FX18sIChnb3QpLCAo ZXhwZWN0ZWQpIFw8YnI+KyApOyBcPGJyPisgX3Rlc3RfZXhpdChURVNUX0xKTVBfRVhJVF9GQUlM VVJFKTsgXDxicj4rIH0gXDxicj4rfSB3aGlsZSAoMCk8YnI+Kzxicj4rI2RlZmluZSBhc3NlcnRf cHRyX25vdF9lcXVhbChnb3QsIHVuZXhwZWN0ZWQpIGRvIHsgXDxicj4rIGlmICgoZ290KSA9PSAo dW5leHBlY3RlZCkpIHsgXDxicj4rIHRlc3Rfc2F2ZV9kaWFnX2RhdGEoIFw8YnI+KyBMT0NBVElP Tl9GTVQgXDxicj4rIEFTU0VSVF9OQU1FX0ZNVChhc3NlcnRfcHRyX25vdF9lcXVhbCkgXDxicj4r ICJnb3Q6ICVwXG4iIFw8YnI+KyAidW5leHBlY3RlZDogJXBcbiIsIFw8YnI+KyBfX0ZJTEVfXywg X19MSU5FX18sIChnb3QpLCAodW5leHBlY3RlZCkgXDxicj4rICk7IFw8YnI+KyBfdGVzdF9leGl0 KFRFU1RfTEpNUF9FWElUX0ZBSUxVUkUpOyBcPGJyPisgfSBcPGJyPit9IHdoaWxlICgwKTxicj4r PGJyPisjZGVmaW5lIGFzc2VydF9pbnRfZXF1YWwoZ290LCBleHBlY3RlZCkgZG8geyBcPGJyPisg aWYgKChnb3QpICE9IChleHBlY3RlZCkpIHsgXDxicj4rIHRlc3Rfc2F2ZV9kaWFnX2RhdGEoIFw8 YnI+KyBMT0NBVElPTl9GTVQgXDxicj4rIEFTU0VSVF9OQU1FX0ZNVChhc3NlcnRfaW50X2VxdWFs KSBcPGJyPisgImdvdDogJWRcbiIgXDxicj4rICJleHBlY3RlZDogJWRcbiIsIFw8YnI+KyBfX0ZJ TEVfXywgX19MSU5FX18sIChnb3QpLCAoZXhwZWN0ZWQpIFw8YnI+KyApOyBcPGJyPisgX3Rlc3Rf ZXhpdChURVNUX0xKTVBfRVhJVF9GQUlMVVJFKTsgXDxicj4rIH0gXDxicj4rfSB3aGlsZSAoMCk8 YnI+Kzxicj4rI2RlZmluZSBhc3NlcnRfaW50X25vdF9lcXVhbChnb3QsIHVuZXhwZWN0ZWQpIGRv IHsgXDxicj4rIGlmICgoZ290KSA9PSAodW5leHBlY3RlZCkpIHsgXDxicj4rIHRlc3Rfc2F2ZV9k aWFnX2RhdGEoIFw8YnI+KyBMT0NBVElPTl9GTVQgXDxicj4rIEFTU0VSVF9OQU1FX0ZNVChhc3Nl cnRfaW50X25vdF9lcXVhbCkgXDxicj4rICJnb3Q6ICVkXG4iIFw8YnI+KyAidW5leHBlY3RlZDog JWRcbiIsIFw8YnI+KyBfX0ZJTEVfXywgX19MSU5FX18sIChnb3QpLCAodW5leHBlY3RlZCkgXDxi cj4rICk7IFw8YnI+KyBfdGVzdF9leGl0KFRFU1RfTEpNUF9FWElUX0ZBSUxVUkUpOyBcPGJyPisg fSBcPGJyPit9IHdoaWxlICgwKTxicj4rPGJyPisjZGVmaW5lIGFzc2VydF9zaXpldF9lcXVhbChn b3QsIGV4cGVjdGVkKSBkbyB7IFw8YnI+KyBpZiAoKGdvdCkgIT0gKGV4cGVjdGVkKSkgeyBcPGJy PisgdGVzdF9zYXZlX2RpYWdfZGF0YSggXDxicj4rIExPQ0FUSU9OX0ZNVCBcPGJyPisgQVNTRVJU X05BTUVfRk1UKGFzc2VydF9zaXpldF9lcXVhbCkgXDxicj4rICJnb3Q6ICVsdVxuIiBcPGJyPisg ImV4cGVjdGVkOiAlbHVcbiIsIFw8YnI+KyBfX0ZJTEVfXywgX19MSU5FX18sIChnb3QpLCAoZXhw ZWN0ZWQpIFw8YnI+KyApOyBcPGJyPisgX3Rlc3RfZXhpdChURVNUX0xKTVBfRVhJVF9GQUlMVVJF KTsgXDxicj4rIH0gXDxicj4rfSB3aGlsZSAoMCk8YnI+Kzxicj4rI2RlZmluZSBhc3NlcnRfc2l6 ZXRfbm90X2VxdWFsKGdvdCwgdW5leHBlY3RlZCkgZG8geyBcPGJyPisgaWYgKChnb3QpID09ICh1 bmV4cGVjdGVkKSkgeyBcPGJyPisgdGVzdF9zYXZlX2RpYWdfZGF0YSggXDxicj4rIExPQ0FUSU9O X0ZNVCBcPGJyPisgQVNTRVJUX05BTUVfRk1UKGFzc2VydF9zaXpldF9ub3RfZXF1YWwpIFw8YnI+ KyAiZ290OiAlbHVcbiIgXDxicj4rICJ1bmV4cGVjdGVkOiAlbHVcbiIsIFw8YnI+KyBfX0ZJTEVf XywgX19MSU5FX18sIChnb3QpLCAodW5leHBlY3RlZCkgXDxicj4rICk7IFw8YnI+KyBfdGVzdF9l eGl0KFRFU1RfTEpNUF9FWElUX0ZBSUxVUkUpOyBcPGJyPisgfSBcPGJyPit9IHdoaWxlICgwKTxi cj4rPGJyPisvKiBDaGVjayB0aGF0IGRvdWJsZXMgYXJlIF9fZXhhY3RseV9fIHRoZSBzYW1lLiAq Lzxicj4rI2RlZmluZSBhc3NlcnRfZG91YmxlX2VxdWFsKGdvdCwgZXhwZWN0ZWQpIGRvIHsgXDxi cj4rIGlmICgoZ290KSAhPSAoZXhwZWN0ZWQpKSB7IFw8YnI+KyB0ZXN0X3NhdmVfZGlhZ19kYXRh KCBcPGJyPisgTE9DQVRJT05fRk1UIFw8YnI+KyBBU1NFUlRfTkFNRV9GTVQoYXNzZXJ0X2RvdWJs ZV9lcXVhbCkgXDxicj4rICJnb3Q6ICVsZlxuIiBcPGJyPisgImV4cGVjdGVkOiAlbGZcbiIsIFw8 YnI+KyBfX0ZJTEVfXywgX19MSU5FX18sIChnb3QpLCAoZXhwZWN0ZWQpIFw8YnI+KyApOyBcPGJy PisgX3Rlc3RfZXhpdChURVNUX0xKTVBfRVhJVF9GQUlMVVJFKTsgXDxicj4rIH0gXDxicj4rfSB3 aGlsZSAoMCk8YnI+Kzxicj4rLyogQ2hlY2sgdGhhdCBkb3VibGVzIGFyZSBub3QgX19leGFjdGx5 X18gdGhlIHNhbWUuICovPGJyPisjZGVmaW5lIGFzc2VydF9kb3VibGVfbm90X2VxdWFsKGdvdCwg dW5leHBlY3RlZCkgZG8geyBcPGJyPisgaWYgKChnb3QpID09ICh1bmV4cGVjdGVkKSkgeyBcPGJy PisgdGVzdF9zYXZlX2RpYWdfZGF0YSggXDxicj4rIExPQ0FUSU9OX0ZNVCBcPGJyPisgQVNTRVJU X05BTUVfRk1UKGFzc2VydF9kb3VibGVfbm90X2VxdWFsKSBcPGJyPisgImdvdDogJWxmXG4iIFw8 YnI+KyAidW5leHBlY3RlZDogJWxmXG4iLCBcPGJyPisgX19GSUxFX18sIF9fTElORV9fLCAoZ290 KSwgKHVuZXhwZWN0ZWQpIFw8YnI+KyApOyBcPGJyPisgX3Rlc3RfZXhpdChURVNUX0xKTVBfRVhJ VF9GQUlMVVJFKTsgXDxicj4rIH0gXDxicj4rfSB3aGlsZSAoMCk8YnI+Kzxicj4rLyogQVBJIGRl Y2xhcmF0aW9uLiAqLzxicj4rPGJyPisvKjxicj4rICogUHJpbnQgZm9ybWF0dGVkIG1lc3NhZ2Ug d2l0aCB0aGUgY29ycmVzcG9uZGluZyBpbmRlbnQuPGJyPisgKiBJZiB5b3Ugd2FudCB0byBsZWF2 ZSBhIGNvbW1lbnQsIHVzZSBgdGVzdF9jb21tZW50KClgIGluc3RlYWQuPGJyPisgKi88YnI+K3Zv aWQgdGVzdF9tZXNzYWdlKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTs8YnI+Kzxicj4rLyogTmVlZCBm b3IgYHNraXBfYWxsKClgLCBwbGVhc2UsIGRvbid0IHVzZSBpdC4gKi88YnI+K3ZvaWQgX3Rlc3Rf cHJpbnRfc2tpcF9hbGwoY29uc3QgY2hhciAqZ3JvdXBfbmFtZSwgY29uc3QgY2hhciAqcmVhc29u KTs8YnI+Ky8qIEVuZCB0ZXN0IHZpYSBgbG9uZ2ptcCgpYCwgcGxlYXNlLCBkb24ndCB1c2UgaXQu ICovPGJyPitURVNUX05PUkVUIHZvaWQgX3Rlc3RfZXhpdChpbnQgc3RhdHVzKTs8YnI+Kzxicj4r dm9pZCB0ZXN0X3NldF9za2lwX3JlYXNvbihjb25zdCBjaGFyICpyZWFzb24pOzxicj4rdm9pZCB0 ZXN0X3NldF90b2RvX3JlYXNvbihjb25zdCBjaGFyICpyZWFzb24pOzxicj4rLyo8YnI+KyAqIFNh dmUgZm9ybWF0dGVkIGRpYWdub3N0aWMgZGF0YS4gRWFjaCBlbnRyeSBzZXBhcmF0ZWQgd2l0aCBc bi48YnI+KyAqLzxicj4rdm9pZCB0ZXN0X3NhdmVfZGlhZ19kYXRhKGNvbnN0IGNoYXIgKmZtdCwg Li4uKTs8YnI+Kzxicj4rLyogSW50ZXJuYWwsIGl0IGlzIGJldHRlciB0byB1c2UgYHRlc3RfcnVu X2dyb3VwKClgIGluc3RlYWQuICovPGJyPitpbnQgX3Rlc3RfcnVuX2dyb3VwKGNvbnN0IGNoYXIg Kmdyb3VwX25hbWUsIGNvbnN0IHN0cnVjdCB0ZXN0X3VuaXQgKnRlc3RzLDxicj4rIHNpemVfdCBu X3Rlc3RzLCB2b2lkICp0ZXN0X3N0YXRlKTs8YnI+Kzxicj4rI2VuZGlmIC8qIFRFU1RfSCAqLzxi cj4tLTxicj4yLjM0LjE8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj48 ZGl2Pi0tPGJyPkJlc3QgcmVnYXJkcyw8L2Rpdj48ZGl2Pk1heGltIEtva3J5YXNoa2luPC9kaXY+ PC9kaXY+PGRpdj4mbmJzcDs8L2Rpdj48L0JPRFk+PC9IVE1MPgo= ----ALT--9a7260Ef481f29dFB9c484dF39bDf7331679325433--