Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vrcXY-00EWtG-1k for pgsql-hackers@arkaria.postgresql.org; Sun, 15 Feb 2026 13:52:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vrcXW-001i2U-30 for pgsql-hackers@arkaria.postgresql.org; Sun, 15 Feb 2026 13:51:58 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vrY6L-0012Bn-2n for pgsql-hackers@lists.postgresql.org; Sun, 15 Feb 2026 09:07:38 +0000 Received: from meldrar.postgresql.org ([2a02:c0:301:0:ffff::31]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vrY6H-00000000iRs-3Qhs for pgsql-hackers@postgresql.org; Sun, 15 Feb 2026 09:07:37 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=postgresql.org; s=20171124; h=Content-Transfer-Encoding:Content-Type: Mime-Version:References:In-Reply-To:From:Subject:Cc:To:Message-Id:Date:Sender :Reply-To:Content-ID:Content-Description; bh=gXT2+cPJ/QcGH4aa0OJt7dSrFGENP8CaudLqkS7BoXQ=; b=Kb2Oyadvvn3rIKnv9MKl5XgpFp 7Wi2L0mcW2+M3GQgPVMcDmGCceRzTIg4okAA48vZnWiOALcqqHx3nyzd9g7pYA3F5cGhEhXJ5G8Qc kgyA1TqEXJFv8UWL/qbWsfxsZ2HQqGA3VHWxtAVpugb+GLejPUpAK7aIeGW7W2+1YOxoKO34X9aUO Zlz0pjeBVgPJPLW5nKSFAhRDsAOMzrmNBnXKddcvjJQ2xts5JzwcP86UT7LELwQFyLEcl43sYdPpf Af3sg8aCVPlYslrrexWmQkq9bzVBqKNbXDgftE1V5Oq0bL5qgua4PJ/+O43QPuHhsBIY5TN2vrnNl 4CfTtH/Q==; Received: from [2409:11:4120:300:62c7:d51b:6f2b:e02b] (helo=localhost) by meldrar.postgresql.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vrY5o-002Sn7-2S; Sun, 15 Feb 2026 09:07:27 +0000 Date: Sun, 15 Feb 2026 18:06:52 +0900 (JST) Message-Id: <20260215.180652.676783304925959084.ishii@postgresql.org> To: assam258@gmail.com Cc: vik@postgresfriends.org, er@xs4all.nl, jacob.champion@enterprisedb.com, david.g.johnston@gmail.com, peter@eisentraut.org, pgsql-hackers@postgresql.org Subject: Re: Row pattern recognition From: Tatsuo Ishii In-Reply-To: References: <20260214.092310.1353606038244245395.ishii@postgresql.org> X-Mailer: Mew version 6.8 on Emacs 29.3 Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part(Sun_Feb_15_18_06_52_2026_930)--" Content-Transfer-Encoding: 7bit X-Host-Lookup-Failed: Reverse DNS lookup failed for 2409:11:4120:300:62c7:d51b:6f2b:e02b (failed) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk ----Next_Part(Sun_Feb_15_18_06_52_2026_930)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi Henson, Thanks for the patches! I applied them on top of v42 and rebased against current master. Attached are the v43 patches. > Hi Tatsuo, > > This round focused on reviewing nodeWindowAgg.c -- the NFA executor > -- which was the last piece remaining on my review list. I've also > added a comprehensive NFA runtime test suite. > > The attached patch continues the incremental series on top of v42. > Here are the changes: > > > FIXME issues documented: > > These require non-trivial structural changes, so I've documented > them as FIXME comments for now rather than attempting a fix. > > - altPriority tracks only the last ALT choice, so repeated or nested > ALTs like (A|B)+ cannot correctly implement SQL standard lexical > ordering. A full-path classifier structure is needed. > > - Cycle prevention condition (count == 0 && min == 0) is insufficient > for patterns like (A*)* where cycles occur at count > 0. Currently > relies on implicit duplicate detection in nfa_add_state_unique. > > > Bugs fixed: > > - Fix nfa_advance_begin() routing order: enter group first (lexically > first), then skip path (lexically second). > > - Add ALT scope boundary check in nfa_advance_alt() and > computeAbsorbabilityRecursive() to stop branch traversal when > element depth exits ALT scope. > > - Disallow RANGE and GROUPS frame types with row pattern > recognition, as the SQL standard only requires ROWS. > Also remove the now-dead frame-type determination code. > > > NFA executor refactoring (nodeWindowAgg.c): > > - Simplify nfa_process_row() phase 1: remove nfa_advance() call > after forced mismatch at frame boundary, since all states are > already at VAR positions and mismatch removes them. Replace > the redundant phase 3 frame boundary check with Assert. > > - Simplify update_reduced_frame() result registration: mismatch > path now returns early, and the post-processing SKIP mode cleanup > block (nfa_remove_contexts_up_to vs nfa_context_free) is removed > since eager pruning handles SKIP PAST LAST ROW and both paths > now simply call nfa_context_free(). > > - Replace nfa_remove_contexts_up_to() with eager pruning inside > nfa_add_matched_state(). When matchEndRow is extended during > greedy matching, pending contexts within the match range are > pruned incrementally instead of after match completion. For > SKIP PAST LAST ROW patterns like START UP+, this reduces the > number of live contexts at each row from O(n) to O(1), avoiding > O(n^2) per-row processing of contexts that would be skipped > anyway. > > - Optimize nfa_states_equal() to compare counts only up to the > current element's depth instead of the full maxDepth. > > - Rename nfa_state_clone -> nfa_state_create, > nfa_find_context_for_pos -> nfa_get_head_context for clarity. > > - Add nfa_record_context_success/skipped/absorbed statistics helpers. > > - Remove unused RPRPattern parameter from > nfa_update_absorption_flags(). > > > Absorbability refactoring (rpr.c): > > - Remove parentDepth parameter from isUnboundedStart() and > computeAbsorbabilityRecursive(). Scope boundaries are now > determined by element depth comparison instead of an explicit > parent depth parameter. > > - Simplify isUnboundedStart(): check simple VAR case first, then > GROUP case with a depth-bounded loop instead of a FIN-terminated > traversal with multiple break conditions. > > > Test changes: > > - Add rpr_nfa.sql: comprehensive NFA runtime test suite covering > quantifier boundaries (min/max/exact), alternation priority, nested > patterns, frame boundary variations, INITIAL mode (syntax error > expected), pathological patterns, context absorption, and FIXME > reproduction cases. > > - Add nth_value out-of-frame tests, ReScan/LATERAL test, and > nth_value IGNORE NULLS test to rpr.sql. > > - Change selected EXPLAIN test queries in rpr_explain.sql from > EXPLAIN (COSTS OFF) to EXPLAIN (ANALYZE, ...) to verify actual > NFA execution statistics. > > - Fix stale comments across rpr.sql, rpr_base.sql, and rpr_nfa.sql: > remove resolved BUG annotations, update error messages to match > actual output, correct optimization result descriptions, and > standardize Expected comment placement to after SQL statements. > > > Other changes: > > - Run pgindent on RPR source files. Add /*----------*/ comment > guards to protect structured comments from reformatting. > > Coverage: > > I ran gcov on the modified lines (diff-only coverage). The attached > coverage.zip contains an HTML report. Summary: > > - 18 files, 124 functions, 2238 modified lines analyzed > - Overall: 92.1% line coverage (2061/2238) > - Core files (nodeWindowAgg.c, rpr.c, explain.c, parse_rpr.c): > 98.0-98.5% each > - Node serialization (outfuncs.c, readfuncs.c, equalfuncs.c): > 0% -- these implement RPRPattern serialization for plan caching, > but regression tests don't exercise prepared statements with RPR > - ruleutils.c: 96.3% -- untested lines are the reluctant quantifier > display path ({1}?), which is currently rejected at parse time Thanks for the report. > The node serialization functions (141 lines, 0% coverage) are the > largest untested area. I'm not sure how to trigger these paths > in the regression test framework. Any suggestions? I think we can leave it as it is, until reluctant quantifier is implemented. > I'll send a separate email within a few days listing the FIXME > issues and other unresolved items from the mailing list discussion > for your review. Looking forward to reading your email. Best regards, -- Tatsuo Ishii SRA OSS K.K. English: http://www.sraoss.co.jp/index_en/ Japanese:http://www.sraoss.co.jp ----Next_Part(Sun_Feb_15_18_06_52_2026_930)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v43-0001-Row-pattern-recognition-patch-for-raw-parser.patch" RnJvbSAzZGJhNjA1MjliZGViYmQyZDExOGJkMDUzNDdlYjg2MzEwOWZmY2U5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTdW4sIDE1IEZlYiAyMDI2IDE3OjQ3OjQ3ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDMg MS84XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCBmb3IgcmF3IHBhcnNlci4KClRoZSBz ZXJpZXMgb2YgcGF0Y2hlcyBhcmUgdG8gaW1wbGVtZW50IHRoZSByb3cgcGF0dGVybiByZWNvZ25p dGlvbgooU1FML1JQUikgZmVhdHVyZS4gQ3VycmVudGx5IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBh IHN1YnNldCBvZiBTUUwvUlBSCihJU08vSUVDIDE5MDc1LTI6MjAxNikuIE5hbWVseSwgaW1wbGVt ZW50YXRpb24gb2Ygc29tZSBmZWF0dXJlcyBvZgpSMDIwIChXSU5ET1cgY2xhdXNlKS4gUjAxMCAo TUFUQ0hfUkVDT0dOSVpFKSBpcyBvdXQgb2YgdGhlIHNjb3BlIG9mCnRoZSBwYXRjaGVzLgoKQ3Vy cmVudGx5IGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQgaW4gdGhlIHBhdGNoZXMu CgotIFBBVFRFUk4KLSBQQVRURVJOIHJlZ3VsYXIgZXhwcmVzc2lvbnMgKCssICosID8pCiAgYWx0 ZXJuYXRpb24gKHwpLCBncm91cGluZyAoKSAsIHtufSwge24sfSwge24sbX0sIHssbX0KLSBERUZJ TkUKLSBJTklUSUFMCi0gQUZURVIgTUFUQ0ggU0tJUCBUTyBQQVNUIExBU1QgUk9XCi0gQUZURVIg TUFUQ0ggU0tJUCBUTyBORVhUIFJPVwoKQ3VycmVudGx5IGZvbGxvd2luZyBmZWF0dXJlcyBhcmUg bm90IGltcGxlbWVudGVkIGluIHRoZSBwYXRjaGVzLgoKLSBNRUFTVVJFCi0gU1VCU0VUCi0gU0VF SwotIEFGVEVSIE1BVENIIFNLSVAgVE8KLSBBRlRFUiBNQVRDSCBTS0lQIFRPIEZJUlNUCi0gQUZU RVIgTUFUQ0ggU0tJUCBUTyBMQVNUCi0gUEFUVEVSTiByZWd1bGFyIGV4cHJlc3Npb24gcmVsdWN0 YW50IHF1YW50aWZpZXJzCiAgKCo/IGV0Yy4pLCB7LSBhbmQgLX0sICgpIChlbXB0eSBwYXR0ZXJu KQogIEFuY2hvcmVzICheLCAkKSBhcmUgbm90IHBlcm1pdHRlZCB3aXRoIFJQUiBpbiBXaW5kb3cg Y2xhdXNlIGJ5IHRoZQogIHN0YW5kYXJkLgotIFBFUk1VVEUKLSBGSVJTVCwgTEFTVCwgQ0xBU1NJ RklFUgoKQXV0aG9yOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpBdXRob3I6 IEhlbnNvbiBDaG9pIDxhc3NhbTI1OEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBWaWsgRmVhcmlu ZyA8dmlrQHBvc3RncmVzZnJpZW5kcy5vcmc+ClJldmlld2VkLWJ5OiBKYWNvYiBDaGFtcGlvbiA8 amNoYW1waW9uQHRpbWVzY2FsZS5jb20+ClJldmlld2VkLWJ5OiBQZXRlciBFaXNlbnRyYXV0IDxw ZXRlckBlaXNlbnRyYXV0Lm9yZz4KUmV2aWV3ZWQtYnk6IE5JTkdXRUkgQ0hFTiA8Y2hlbkBzcmFv c3MuY28uanA+ClJldmlld2VkLWJ5OiAiRGF2aWQgRy4gSm9obnN0b24iIDxkYXZpZC5nLmpvaG5z dG9uQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpSZXZpZXdl ZC1ieTogVGF0c3VvIElzaGlpIDxpc2hpaUBwb3N0Z3Jlc3FsLm9yZz4KRGlzY3Vzc2lvbjogaHR0 cHM6Ly9wb3N0Z3IuZXMvbS8yMDIzMDYyNS4yMTA1MDkuMTI3NjczMzQxMTY3NzU3Nzg0MS50LWlz aGlpJTQwc3JhbmhtLnNyYS5jby5qcAoKLS0tLSBNYWpvciBkaWZmZXJlbmNlcyBmcm9tIHY0MSBw YXRjaGVzIC0tLS0KCi0gQWRkIFBldGVyIGFzIGEgcmV2aWV3ZXIgdG8gY29tbWl0IG1lc3NhZ2Uu IEhlIGdhdmUgYSBnb29kIHZhbHVhYmxlCiAgc3VnZ2VzdGlvbnMgdG8gdGhlIGdyYW0ueSBwYXRj aC4gSSBhY2NpZGVudGFsbHkgZm9yZ290IHRvIGNyZWRpdCBoaXMKICBuYW1lLgoKLSBUb25zIG9m IGVuaGFuY2VtZW50cyBmcm9tIEhlbnNvbi4KCi0tIEZ1bGx5IHJld3JpdGUgYWJzb3JwdGlvbiBs b2dpYyAob3B0aW1pemVyL3BsYW4vcnByLmMpLgogICBFeGFtcGxlOiAoYSsgYiogYz8pezIsfSAt PiAoYSsiIGIqIGM/KXsyLH0KCi0tIEFkZCBzYWZldHkgY2hlY2sgdG8gdHJ5TXVsdGlwbHlRdWFu dGlmaWVycyAob3B0aW1pemVyL3BsYW4vcnByLmMpCiAgIEV4YW1wbGU6IChBezJ9KXsyLDN9IGNh bm5vdCBiZSByZXdyaXR0ZW4gdG8gQXs0LDZ9IGJlY2F1c2UgaXQgYWxsb3dzCiAgIDUgdGltZXMg cmVwdXRhdGlvbiB3aGljaCBpcyBub3QgY29ycmVjdC4gUGVyZm9ybSBtdWx0aXBsaWNhdGlvbgog ICBvcHRpbWl6YXRpb24gb25seSBpbiBzYWZlIGNhc2UuCgotLSBGaXggaW5maW5pdGUgbG9vcC9z ZWdmYXVsdCB3aGVuIHVubGltaXRlZCBxdWFudGlmaWVycyAoZS5nLiAoQSopKiwKICAgKEErKSsp IGFyZSB1c2VkLgoKLS0gT3B0aW1pemUgdW5saW1pdGVkIHF1YW50aWZpZXJzIGlmIHBvc3NpYmxl IChlLmcuIChBKikqIC0+IEEqLCAoQSspKyAtPiBBKykKCi0tIEZpeCBzZWdmYXVsdCBjYXNlIChT RUxFQ1QgaWQsIGZsYWcgLi4uV0lORE9XIHcgQVMgKC4uLiBERUZJTkUgVCBBUyBmbGFnKQoKLS0g TW9yZSBhY2N1cmF0ZSBlcnJvciBwb3NpdGlvbiByZXBvcnQKCi0tIFNvbWUgY29kZSByZWZhY3Rv cmluZyBpbiBwYXJzZXIvcGxhbm5lciBwYXRjaGVzCgotLSBTcGxpdCByZWdyZXNzaW9uIHRlc3Qg ZmlsZSBpbnRvIHJwci5zcWwgYW5kIHJwcl9iYXNlLnNxbAoKLS0gRml4IG91dGZ1bmNzLmMgYW5k IHJlYWRmdW5jcy5jCgotLSBGaXggc29tZSBjb3JuZXIgY2FzZXMgYnVnIG9mIHJlZ3VsYXIgZXhw cmVzc2lvbiBvcHRpbWl6YXRpb24KCi0tIFJlbW92ZSB1bnVzZWQgUEFUVEVSTiB2YXJpYWJsZSB0 byBlbmhhbmNlIHBlcmZvcm1hbmNlCgotLSBDaGFuZ2UgdHJlYXRtZW50IG9mIHVuZGVmaW5lZCBE RUZJTkUgdmFyaWFibGVzLiBQcmV2aW91c2x5IGlmCiAgIHZhcmlhYmxlICJBIiBpcyB1c2VkIGlu IFBBVFRFUk4gYnV0IG5vdCBkZWZpbmVkIGluIERFRklORSwgQSBpcwogICBhdXRvbWF0aWNhbGx5 IGRlZmluZWQgYXMgIkEgQVMgVFJVRSIuIE5vdyBBIGlzIGV2YWx1YXRlZCBhcyBUUlVFIGluCiAg IGV4ZWN1dG9yIGFuZCB0aGUgZ2VuZXJhdGVkIGVudHJ5IGZvciBBIGlzIHJlbW92ZWQuIFRoaXMg aW1wcm92ZXMKICAgbWVtb3J5IHVzYWdlLgoKLS0gRVhQTEFJTiBub3cgc2hvd3MgdGhlIGFic29y YmFibGUgcG9pbnRzIChhKyIpCgotIEJ1ZyBmaXggZnJvbSBtZS4KCi0tIEFzc2VydGlvbiBmYWls dXJlIHdoZW4gdHdvIG9yIG1vcmUgd2luZG93IGNsYXVzZXMgYXJlIHVzZWQuCi0tLQogc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICB8IDQyNSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLQogc3JjL2JhY2tlbmQvcGFyc2VyL3NjYW4ubCAgICAgICB8ICAgNCArLQogc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICB8ICA2NyArKysrKwogc3JjL2luY2x1ZGUvcGFyc2Vy L2t3bGlzdC5oICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIHwg ICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgNDgzIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CmluZGV4IGM1NjcyNTJhY2M0Li5lNmFlMjNmMzY4YiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 CkBAIC0yMDksNiArMjA5LDggQEAgc3RhdGljIHZvaWQgcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5 cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LAogc3RhdGljIHZvaWQgcHJlcHJvY2Vzc19w dWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsCiAJCQkJCQkJCSAgIGNvcmVfeXlzY2Fu X3QgeXlzY2FubmVyKTsKIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CitzdGF0aWMgUlBSUGF0dGVy bk5vZGUgKm1ha2VSUFJRdWFudGlmaWVyKGludCBtaW4sIGludCBtYXgsIFBhcnNlTG9jIHJlbHVj dGFudCwgaW50IGxvY2F0aW9uLAorCQkJCQkJCQkJICAgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIp OwogCiAlfQogCkBAIC02ODIsNiArNjg0LDE1IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJ CQkJanNvbl9vYmplY3RfY29uc3RydWN0b3JfbnVsbF9jbGF1c2Vfb3B0CiAJCQkJanNvbl9hcnJh eV9jb25zdHJ1Y3Rvcl9udWxsX2NsYXVzZV9vcHQKIAorJXR5cGUgPHRhcmdldD4Jcm93X3BhdHRl cm5fZGVmaW5pdGlvbgorJXR5cGUgPG5vZGU+CW9wdF9yb3dfcGF0dGVybl9jb21tb25fc3ludGF4 CisJCQkJcm93X3BhdHRlcm4gcm93X3BhdHRlcm5fYWx0IHJvd19wYXR0ZXJuX3NlcQorCQkJCXJv d19wYXR0ZXJuX3Rlcm0gcm93X3BhdHRlcm5fcHJpbWFyeQorCQkJCXJvd19wYXR0ZXJuX3F1YW50 aWZpZXJfb3B0CisldHlwZSA8bGlzdD4Jcm93X3BhdHRlcm5fZGVmaW5pdGlvbl9saXN0CisldHlw ZSA8aXZhbD4Jb3B0X3Jvd19wYXR0ZXJuX3NraXBfdG8KKyV0eXBlIDxib29sZWFuPglvcHRfcm93 X3BhdHRlcm5faW5pdGlhbF9vcl9zZWVrCisKIC8qCiAgKiBOb24ta2V5d29yZCB0b2tlbiB0eXBl cy4gIFRoZXNlIGFyZSBoYXJkLXdpcmVkIGludG8gdGhlICJmbGV4IiBsZXhlci4KICAqIFRoZXkg bXVzdCBiZSBsaXN0ZWQgZmlyc3Qgc28gdGhhdCB0aGVpciBudW1lcmljIGNvZGVzIGRvIG5vdCBk ZXBlbmQgb24KQEAgLTcyNCw3ICs3MzUsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCUNV UlJFTlRfVElNRSBDVVJSRU5UX1RJTUVTVEFNUCBDVVJSRU5UX1VTRVIgQ1VSU09SIENZQ0xFCiAK IAlEQVRBX1AgREFUQUJBU0UgREFZX1AgREVBTExPQ0FURSBERUMgREVDSU1BTF9QIERFQ0xBUkUg REVGQVVMVCBERUZBVUxUUwotCURFRkVSUkFCTEUgREVGRVJSRUQgREVGSU5FUiBERUxFVEVfUCBE RUxJTUlURVIgREVMSU1JVEVSUyBERVBFTkRTIERFUFRIIERFU0MKKwlERUZFUlJBQkxFIERFRkVS UkVEIERFRklORSBERUZJTkVSIERFTEVURV9QIERFTElNSVRFUiBERUxJTUlURVJTIERFUEVORFMg REVQVEggREVTQwogCURFVEFDSCBESUNUSU9OQVJZIERJU0FCTEVfUCBESVNDQVJEIERJU1RJTkNU IERPIERPQ1VNRU5UX1AgRE9NQUlOX1AKIAlET1VCTEVfUCBEUk9QCiAKQEAgLTc0MCw3ICs3NTEs NyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwg TGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCUhBTkRMRVIgSEFWSU5HIEhFQURFUl9QIEhP TEQgSE9VUl9QCiAKIAlJREVOVElUWV9QIElGX1AgSUdOT1JFX1AgSUxJS0UgSU1NRURJQVRFIElN TVVUQUJMRSBJTVBMSUNJVF9QIElNUE9SVF9QIElOX1AgSU5DTFVERQotCUlOQ0xVRElORyBJTkNS RU1FTlQgSU5ERU5UIElOREVYIElOREVYRVMgSU5IRVJJVCBJTkhFUklUUyBJTklUSUFMTFkgSU5M SU5FX1AKKwlJTkNMVURJTkcgSU5DUkVNRU5UIElOREVOVCBJTkRFWCBJTkRFWEVTIElOSEVSSVQg SU5IRVJJVFMgSU5JVElBTCBJTklUSUFMTFkgSU5MSU5FX1AKIAlJTk5FUl9QIElOT1VUIElOUFVU X1AgSU5TRU5TSVRJVkUgSU5TRVJUIElOU1RFQUQgSU5UX1AgSU5URUdFUgogCUlOVEVSU0VDVCBJ TlRFUlZBTCBJTlRPIElOVk9LRVIgSVMgSVNOVUxMIElTT0xBVElPTgogCkBAIC03NjUsOCArNzc2 LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUs IExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlPUkRFUiBPUkRJTkFMSVRZIE9USEVSUyBP VVRfUCBPVVRFUl9QCiAJT1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJTkcgT1dORUQgT1dO RVIKIAotCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFSVElU SU9OUyBQQVNTSU5HIFBBU1NXT1JEIFBBVEgKLQlQRVJJT0QgUExBQ0lORyBQTEFOIFBMQU5TIFBP TElDWQorCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFSVElU SU9OUyBQQVNTSU5HIFBBU1NXT1JEIFBBU1QgUEFUSAorCVBBVFRFUk5fUCBQRVJJT0QgUExBQ0lO RyBQTEFOIFBMQU5TIFBPTElDWQogCVBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VS VkUgUFJFUEFSRSBQUkVQQVJFRCBQUklNQVJZCiAJUFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFM IFBST0NFRFVSRSBQUk9DRURVUkVTIFBST0dSQU0gUFVCTElDQVRJT04KIApAQCAtNzc3LDcgKzc4 OCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1l LCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJUkVTRVQgUkVTUEVDVF9QIFJFU1RBUlQg UkVTVFJJQ1QgUkVUVVJOIFJFVFVSTklORyBSRVRVUk5TIFJFVk9LRSBSSUdIVCBST0xFIFJPTExC QUNLIFJPTExVUAogCVJPVVRJTkUgUk9VVElORVMgUk9XIFJPV1MgUlVMRQogCi0JU0FWRVBPSU5U IFNDQUxBUiBTQ0hFTUEgU0NIRU1BUyBTQ1JPTEwgU0VBUkNIIFNFQ09ORF9QIFNFQ1VSSVRZIFNF TEVDVAorCVNBVkVQT0lOVCBTQ0FMQVIgU0NIRU1BIFNDSEVNQVMgU0NST0xMIFNFQVJDSCBTRUNP TkRfUCBTRUNVUklUWSBTRUVLIFNFTEVDVAogCVNFUVVFTkNFIFNFUVVFTkNFUwogCVNFUklBTEla QUJMRSBTRVJWRVIgU0VTU0lPTiBTRVNTSU9OX1VTRVIgU0VUIFNFVFMgU0VUT0YgU0hBUkUgU0hP VwogCVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNIT1QgU09NRSBTUExJVCBTT1VS Q0UgU1FMX1AgU1RBQkxFIFNUQU5EQUxPTkVfUApAQCAtODYwLDggKzg3MSw4IEBAIHN0YXRpYyBO b2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2Vz LCBOb2RlICpxdWVyeSk7CiAgKiByZWZlcmVuY2UgcG9pbnQgZm9yIGEgcHJlY2VkZW5jZSBsZXZl bCB0aGF0IHdlIGNhbiBhc3NpZ24gdG8gb3RoZXIKICAqIGtleXdvcmRzIHRoYXQgbGFjayBhIG5h dHVyYWwgcHJlY2VkZW5jZSBsZXZlbC4KICAqCi0gKiBXZSBuZWVkIHRvIGRvIHRoaXMgZm9yIFBB UlRJVElPTiwgUkFOR0UsIFJPV1MsIGFuZCBHUk9VUFMgdG8gc3VwcG9ydAotICogb3B0X2V4aXN0 aW5nX3dpbmRvd19uYW1lIChzZWUgY29tbWVudCB0aGVyZSkuCisgKiBXZSBuZWVkIHRvIGRvIHRo aXMgZm9yIFBBUlRJVElPTiwgUkFOR0UsIFJPV1MsIEdST1VQUywgQUZURVIsIElOSVRJQUwsCisg KiBTRUVLLCBQQVRURVJOX1AgdG8gc3VwcG9ydCBvcHRfZXhpc3Rpbmdfd2luZG93X25hbWUgKHNl ZSBjb21tZW50IHRoZXJlKS4KICAqCiAgKiBUaGUgZnJhbWVfYm91bmQgcHJvZHVjdGlvbnMgVU5C T1VOREVEIFBSRUNFRElORyBhbmQgVU5CT1VOREVEIEZPTExPV0lORwogICogYXJlIGV2ZW4gbWVz c2llcjogc2luY2UgVU5CT1VOREVEIGlzIGFuIHVucmVzZXJ2ZWQga2V5d29yZCAocGVyIHNwZWMh KSwKQEAgLTg5MSw3ICs5MDIsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxl Y3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJW5vbmFzc29j CVVOQk9VTkRFRCBORVNURUQgLyogaWRlYWxseSB3b3VsZCBoYXZlIHNhbWUgcHJlY2VkZW5jZSBh cyBJREVOVCAqLwogJW5vbmFzc29jCUlERU5UIFBBUlRJVElPTiBSQU5HRSBST1dTIEdST1VQUyBQ UkVDRURJTkcgRk9MTE9XSU5HIENVQkUgUk9MTFVQCiAJCQlTRVQgS0VZUyBPQkpFQ1RfUCBTQ0FM QVIgVkFMVUVfUCBXSVRIIFdJVEhPVVQgUEFUSAotJWxlZnQJCU9wIE9QRVJBVE9SCQkvKiBtdWx0 aS1jaGFyYWN0ZXIgb3BzIGFuZCB1c2VyLWRlZmluZWQgb3BlcmF0b3JzICovCisJCQlBRlRFUiBJ TklUSUFMIFNFRUsgUEFUVEVSTl9QCislbGVmdAkJT3AgT1BFUkFUT1IgJ3wnCS8qIG11bHRpLWNo YXJhY3RlciBvcHMgYW5kIHVzZXItZGVmaW5lZCBvcGVyYXRvcnMgKi8KICVsZWZ0CQknKycgJy0n CiAlbGVmdAkJJyonICcvJyAnJScKICVsZWZ0CQknXicKQEAgLTE2NjM2LDYgKzE2NjQ4LDggQEAg b3Zlcl9jbGF1c2U6IE9WRVIgd2luZG93X3NwZWNpZmljYXRpb24KIAkJCQkJbi0+c3RhcnRPZmZz ZXQgPSBOVUxMOwogCQkJCQluLT5lbmRPZmZzZXQgPSBOVUxMOwogCQkJCQluLT5sb2NhdGlvbiA9 IEAyOworCQkJCQluLT5mcmFtZUxvY2F0aW9uID0gLTE7CisJCQkJCW4tPmV4Y2x1ZGVMb2NhdGlv biA9IC0xOwogCQkJCQkkJCA9IG47CiAJCQkJfQogCQkJfCAvKkVNUFRZKi8KQEAgLTE2NjQzLDcg KzE2NjU3LDggQEAgb3Zlcl9jbGF1c2U6IE9WRVIgd2luZG93X3NwZWNpZmljYXRpb24KIAkJOwog CiB3aW5kb3dfc3BlY2lmaWNhdGlvbjogJygnIG9wdF9leGlzdGluZ193aW5kb3dfbmFtZSBvcHRf cGFydGl0aW9uX2NsYXVzZQotCQkJCQkJb3B0X3NvcnRfY2xhdXNlIG9wdF9mcmFtZV9jbGF1c2Ug JyknCisJCQkJCQlvcHRfc29ydF9jbGF1c2Ugb3B0X2ZyYW1lX2NsYXVzZQorCQkJCQkJb3B0X3Jv d19wYXR0ZXJuX2NvbW1vbl9zeW50YXggJyknCiAJCQkJewogCQkJCQlXaW5kb3dEZWYgICpuID0g bWFrZU5vZGUoV2luZG93RGVmKTsKIApAQCAtMTY2NTUsMjAgKzE2NjcwLDIzIEBAIHdpbmRvd19z cGVjaWZpY2F0aW9uOiAnKCcgb3B0X2V4aXN0aW5nX3dpbmRvd19uYW1lIG9wdF9wYXJ0aXRpb25f Y2xhdXNlCiAJCQkJCW4tPmZyYW1lT3B0aW9ucyA9ICQ1LT5mcmFtZU9wdGlvbnM7CiAJCQkJCW4t PnN0YXJ0T2Zmc2V0ID0gJDUtPnN0YXJ0T2Zmc2V0OwogCQkJCQluLT5lbmRPZmZzZXQgPSAkNS0+ ZW5kT2Zmc2V0OworCQkJCQluLT5mcmFtZUxvY2F0aW9uID0gJDUtPmZyYW1lTG9jYXRpb247CisJ CQkJCW4tPmV4Y2x1ZGVMb2NhdGlvbiA9ICQ1LT5leGNsdWRlTG9jYXRpb247CisJCQkJCW4tPnJw Q29tbW9uU3ludGF4ID0gKFJQQ29tbW9uU3ludGF4ICopJDY7CiAJCQkJCW4tPmxvY2F0aW9uID0g QDE7CiAJCQkJCSQkID0gbjsKIAkJCQl9CiAJCTsKIAogLyoKLSAqIElmIHdlIHNlZSBQQVJUSVRJ T04sIFJBTkdFLCBST1dTIG9yIEdST1VQUyBhcyB0aGUgZmlyc3QgdG9rZW4gYWZ0ZXIgdGhlICco JwotICogb2YgYSB3aW5kb3dfc3BlY2lmaWNhdGlvbiwgd2Ugd2FudCB0aGUgYXNzdW1wdGlvbiB0 byBiZSB0aGF0IHRoZXJlIGlzCi0gKiBubyBleGlzdGluZ193aW5kb3dfbmFtZTsgYnV0IHRob3Nl IGtleXdvcmRzIGFyZSB1bnJlc2VydmVkIGFuZCBzbyBjb3VsZAotICogYmUgQ29sSWRzLiAgV2Ug Zml4IHRoaXMgYnkgbWFraW5nIHRoZW0gaGF2ZSB0aGUgc2FtZSBwcmVjZWRlbmNlIGFzIElERU5U Ci0gKiBhbmQgZ2l2aW5nIHRoZSBlbXB0eSBwcm9kdWN0aW9uIGhlcmUgYSBzbGlnaHRseSBoaWdo ZXIgcHJlY2VkZW5jZSwgc28KLSAqIHRoYXQgdGhlIHNoaWZ0L3JlZHVjZSBjb25mbGljdCBpcyBy ZXNvbHZlZCBpbiBmYXZvciBvZiByZWR1Y2luZyB0aGUgcnVsZS4KLSAqIFRoZXNlIGtleXdvcmRz IGFyZSB0aHVzIHByZWNsdWRlZCBmcm9tIGJlaW5nIGFuIGV4aXN0aW5nX3dpbmRvd19uYW1lIGJ1 dAotICogYXJlIG5vdCByZXNlcnZlZCBmb3IgYW55IG90aGVyIHB1cnBvc2UuCisgKiBJZiB3ZSBz ZWUgUEFSVElUSU9OLCBSQU5HRSwgUk9XUywgR1JPVVBTLCBBRlRFUiwgSU5JVElBTCwgU0VFSyBv ciBQQVRURVJOX1AKKyAqIGFzIHRoZSBmaXJzdCB0b2tlbiBhZnRlciB0aGUgJygnIG9mIGEgd2lu ZG93X3NwZWNpZmljYXRpb24sIHdlIHdhbnQgdGhlCisgKiBhc3N1bXB0aW9uIHRvIGJlIHRoYXQg dGhlcmUgaXMgbm8gZXhpc3Rpbmdfd2luZG93X25hbWU7IGJ1dCB0aG9zZSBrZXl3b3JkcworICog YXJlIHVucmVzZXJ2ZWQgYW5kIHNvIGNvdWxkIGJlIENvbElkcy4gIFdlIGZpeCB0aGlzIGJ5IG1h a2luZyB0aGVtIGhhdmUgdGhlCisgKiBzYW1lIHByZWNlZGVuY2UgYXMgSURFTlQgYW5kIGdpdmlu ZyB0aGUgZW1wdHkgcHJvZHVjdGlvbiBoZXJlIGEgc2xpZ2h0bHkKKyAqIGhpZ2hlciBwcmVjZWRl bmNlLCBzbyB0aGF0IHRoZSBzaGlmdC9yZWR1Y2UgY29uZmxpY3QgaXMgcmVzb2x2ZWQgaW4gZmF2 b3IKKyAqIG9mIHJlZHVjaW5nIHRoZSBydWxlLiAgVGhlc2Uga2V5d29yZHMgYXJlIHRodXMgcHJl Y2x1ZGVkIGZyb20gYmVpbmcgYW4KKyAqIGV4aXN0aW5nX3dpbmRvd19uYW1lIGJ1dCBhcmUgbm90 IHJlc2VydmVkIGZvciBhbnkgb3RoZXIgcHVycG9zZS4KICAqLwogb3B0X2V4aXN0aW5nX3dpbmRv d19uYW1lOiBDb2xJZAkJCQkJCXsgJCQgPSAkMTsgfQogCQkJfCAvKkVNUFRZKi8JCQkJJXByZWMg T3AJCXsgJCQgPSBOVUxMOyB9CkBAIC0xNjY4OSw2ICsxNjcwNyw4IEBAIG9wdF9mcmFtZV9jbGF1 c2U6CiAKIAkJCQkJbi0+ZnJhbWVPcHRpb25zIHw9IEZSQU1FT1BUSU9OX05PTkRFRkFVTFQgfCBG UkFNRU9QVElPTl9SQU5HRTsKIAkJCQkJbi0+ZnJhbWVPcHRpb25zIHw9ICQzOworCQkJCQluLT5m cmFtZUxvY2F0aW9uID0gQDE7CisJCQkJCW4tPmV4Y2x1ZGVMb2NhdGlvbiA9ICgkMyAhPSAwKSA/ IEAzIDogLTE7CiAJCQkJCSQkID0gbjsKIAkJCQl9CiAJCQl8IFJPV1MgZnJhbWVfZXh0ZW50IG9w dF93aW5kb3dfZXhjbHVzaW9uX2NsYXVzZQpAQCAtMTY2OTcsNiArMTY3MTcsOCBAQCBvcHRfZnJh bWVfY2xhdXNlOgogCiAJCQkJCW4tPmZyYW1lT3B0aW9ucyB8PSBGUkFNRU9QVElPTl9OT05ERUZB VUxUIHwgRlJBTUVPUFRJT05fUk9XUzsKIAkJCQkJbi0+ZnJhbWVPcHRpb25zIHw9ICQzOworCQkJ CQluLT5mcmFtZUxvY2F0aW9uID0gQDE7CisJCQkJCW4tPmV4Y2x1ZGVMb2NhdGlvbiA9ICgkMyAh PSAwKSA/IEAzIDogLTE7CiAJCQkJCSQkID0gbjsKIAkJCQl9CiAJCQl8IEdST1VQUyBmcmFtZV9l eHRlbnQgb3B0X3dpbmRvd19leGNsdXNpb25fY2xhdXNlCkBAIC0xNjcwNSw2ICsxNjcyNyw4IEBA IG9wdF9mcmFtZV9jbGF1c2U6CiAKIAkJCQkJbi0+ZnJhbWVPcHRpb25zIHw9IEZSQU1FT1BUSU9O X05PTkRFRkFVTFQgfCBGUkFNRU9QVElPTl9HUk9VUFM7CiAJCQkJCW4tPmZyYW1lT3B0aW9ucyB8 PSAkMzsKKwkJCQkJbi0+ZnJhbWVMb2NhdGlvbiA9IEAxOworCQkJCQluLT5leGNsdWRlTG9jYXRp b24gPSAoJDMgIT0gMCkgPyBAMyA6IC0xOwogCQkJCQkkJCA9IG47CiAJCQkJfQogCQkJfCAvKkVN UFRZKi8KQEAgLTE2NzE0LDYgKzE2NzM4LDggQEAgb3B0X2ZyYW1lX2NsYXVzZToKIAkJCQkJbi0+ ZnJhbWVPcHRpb25zID0gRlJBTUVPUFRJT05fREVGQVVMVFM7CiAJCQkJCW4tPnN0YXJ0T2Zmc2V0 ID0gTlVMTDsKIAkJCQkJbi0+ZW5kT2Zmc2V0ID0gTlVMTDsKKwkJCQkJbi0+ZnJhbWVMb2NhdGlv biA9IC0xOworCQkJCQluLT5leGNsdWRlTG9jYXRpb24gPSAtMTsKIAkJCQkJJCQgPSBuOwogCQkJ CX0KIAkJOwpAQCAtMTY3ODksNiArMTY4MTUsOCBAQCBmcmFtZV9ib3VuZDoKIAkJCQkJbi0+ZnJh bWVPcHRpb25zID0gRlJBTUVPUFRJT05fU1RBUlRfVU5CT1VOREVEX1BSRUNFRElORzsKIAkJCQkJ bi0+c3RhcnRPZmZzZXQgPSBOVUxMOwogCQkJCQluLT5lbmRPZmZzZXQgPSBOVUxMOworCQkJCQlu LT5mcmFtZUxvY2F0aW9uID0gLTE7CisJCQkJCW4tPmV4Y2x1ZGVMb2NhdGlvbiA9IC0xOwogCQkJ CQkkJCA9IG47CiAJCQkJfQogCQkJfCBVTkJPVU5ERUQgRk9MTE9XSU5HCkBAIC0xNjc5OCw2ICsx NjgyNiw4IEBAIGZyYW1lX2JvdW5kOgogCQkJCQluLT5mcmFtZU9wdGlvbnMgPSBGUkFNRU9QVElP Tl9TVEFSVF9VTkJPVU5ERURfRk9MTE9XSU5HOwogCQkJCQluLT5zdGFydE9mZnNldCA9IE5VTEw7 CiAJCQkJCW4tPmVuZE9mZnNldCA9IE5VTEw7CisJCQkJCW4tPmZyYW1lTG9jYXRpb24gPSAtMTsK KwkJCQkJbi0+ZXhjbHVkZUxvY2F0aW9uID0gLTE7CiAJCQkJCSQkID0gbjsKIAkJCQl9CiAJCQl8 IENVUlJFTlRfUCBST1cKQEAgLTE2ODA3LDYgKzE2ODM3LDggQEAgZnJhbWVfYm91bmQ6CiAJCQkJ CW4tPmZyYW1lT3B0aW9ucyA9IEZSQU1FT1BUSU9OX1NUQVJUX0NVUlJFTlRfUk9XOwogCQkJCQlu LT5zdGFydE9mZnNldCA9IE5VTEw7CiAJCQkJCW4tPmVuZE9mZnNldCA9IE5VTEw7CisJCQkJCW4t PmZyYW1lTG9jYXRpb24gPSAtMTsKKwkJCQkJbi0+ZXhjbHVkZUxvY2F0aW9uID0gLTE7CiAJCQkJ CSQkID0gbjsKIAkJCQl9CiAJCQl8IGFfZXhwciBQUkVDRURJTkcKQEAgLTE2ODE2LDYgKzE2ODQ4 LDggQEAgZnJhbWVfYm91bmQ6CiAJCQkJCW4tPmZyYW1lT3B0aW9ucyA9IEZSQU1FT1BUSU9OX1NU QVJUX09GRlNFVF9QUkVDRURJTkc7CiAJCQkJCW4tPnN0YXJ0T2Zmc2V0ID0gJDE7CiAJCQkJCW4t PmVuZE9mZnNldCA9IE5VTEw7CisJCQkJCW4tPmZyYW1lTG9jYXRpb24gPSAtMTsKKwkJCQkJbi0+ ZXhjbHVkZUxvY2F0aW9uID0gLTE7CiAJCQkJCSQkID0gbjsKIAkJCQl9CiAJCQl8IGFfZXhwciBG T0xMT1dJTkcKQEAgLTE2ODI1LDYgKzE2ODU5LDggQEAgZnJhbWVfYm91bmQ6CiAJCQkJCW4tPmZy YW1lT3B0aW9ucyA9IEZSQU1FT1BUSU9OX1NUQVJUX09GRlNFVF9GT0xMT1dJTkc7CiAJCQkJCW4t PnN0YXJ0T2Zmc2V0ID0gJDE7CiAJCQkJCW4tPmVuZE9mZnNldCA9IE5VTEw7CisJCQkJCW4tPmZy YW1lTG9jYXRpb24gPSAtMTsKKwkJCQkJbi0+ZXhjbHVkZUxvY2F0aW9uID0gLTE7CiAJCQkJCSQk ID0gbjsKIAkJCQl9CiAJCTsKQEAgLTE2ODM3LDYgKzE2ODczLDMyNSBAQCBvcHRfd2luZG93X2V4 Y2x1c2lvbl9jbGF1c2U6CiAJCQl8IC8qRU1QVFkqLwkJCQl7ICQkID0gMDsgfQogCQk7CiAKK29w dF9yb3dfcGF0dGVybl9jb21tb25fc3ludGF4Ogorb3B0X3Jvd19wYXR0ZXJuX3NraXBfdG8gb3B0 X3Jvd19wYXR0ZXJuX2luaXRpYWxfb3Jfc2VlaworCQkJCVBBVFRFUk5fUCAnKCcgcm93X3BhdHRl cm4gJyknCisJCQkJREVGSU5FIHJvd19wYXR0ZXJuX2RlZmluaXRpb25fbGlzdAorCQkJeworCQkJ CVJQQ29tbW9uU3ludGF4ICpuID0gbWFrZU5vZGUoUlBDb21tb25TeW50YXgpOworCQkJCW4tPnJw U2tpcFRvID0gJDE7CisJCQkJbi0+aW5pdGlhbCA9ICQyOworCQkJCW4tPnJwUGF0dGVybiA9IChS UFJQYXR0ZXJuTm9kZSAqKSAkNTsKKwkJCQluLT5ycERlZnMgPSAkODsKKwkJCQkkJCA9IChOb2Rl ICopIG47CisJCQl9CisJCQl8IC8qRU1QVFkqLwkJeyAkJCA9IE5VTEw7IH0KKwkJOworCitvcHRf cm93X3BhdHRlcm5fc2tpcF90bzoKKwkJCUFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKwkJ CQl7CisJCQkJCSQkID0gU1RfTkVYVF9ST1c7CisJCQkJfQorCQkJfCBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVF9QIFJPVworCQkJCXsKKwkJCQkJJCQgPSBTVF9QQVNUX0xBU1RfUk9XOworCQkJ CX0KKwkJCXwgLypFTVBUWSovCisJCQkJeworCQkJCQkkJCA9IFNUX1BBU1RfTEFTVF9ST1c7CisJ CQkJfQorCQk7CisKK29wdF9yb3dfcGF0dGVybl9pbml0aWFsX29yX3NlZWs6CisJCQlJTklUSUFM CQl7ICQkID0gdHJ1ZTsgfQorCQkJfCBTRUVLCisJCQkJeworCQkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCQkg ZXJybXNnKCJTRUVLIGlzIG5vdCBzdXBwb3J0ZWQiKSwKKwkJCQkJCQkgZXJyaGludCgiVXNlIElO SVRJQUwgaW5zdGVhZC4iKSwKKwkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKEAxKSkpOworCQkJ CX0KKwkJCXwgLypFTVBUWSovCQl7ICQkID0gdHJ1ZTsgfQorCQk7CisKK3Jvd19wYXR0ZXJuOgor CQkJcm93X3BhdHRlcm5fYWx0CQkJCQkJeyAkJCA9ICQxOyB9CisJCTsKKworcm93X3BhdHRlcm5f YWx0OgorCQkJcm93X3BhdHRlcm5fc2VxCQkJCQkJeyAkJCA9ICQxOyB9CisJCQl8IHJvd19wYXR0 ZXJuX2FsdCAnfCcgcm93X3BhdHRlcm5fc2VxCisJCQkJeworCQkJCQlSUFJQYXR0ZXJuTm9kZSAq bjsKKwkJCQkJLyogSWYgbGVmdCBzaWRlIGlzIGFscmVhZHkgQUxULCBhcHBlbmQgdG8gaXQgKi8K KwkJCQkJaWYgKElzQSgkMSwgUlBSUGF0dGVybk5vZGUpICYmCisJCQkJCQkoKFJQUlBhdHRlcm5O b2RlICopICQxKS0+bm9kZVR5cGUgPT0gUlBSX1BBVFRFUk5fQUxUKQorCQkJCQl7CisJCQkJCQlu ID0gKFJQUlBhdHRlcm5Ob2RlICopICQxOworCQkJCQkJbi0+Y2hpbGRyZW4gPSBsYXBwZW5kKG4t PmNoaWxkcmVuLCAkMyk7CisJCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJCX0KKwkJCQkJZWxz ZQorCQkJCQl7CisJCQkJCQluID0gbWFrZU5vZGUoUlBSUGF0dGVybk5vZGUpOworCQkJCQkJbi0+ bm9kZVR5cGUgPSBSUFJfUEFUVEVSTl9BTFQ7CisJCQkJCQluLT5jaGlsZHJlbiA9IGxpc3RfbWFr ZTIoJDEsICQzKTsKKwkJCQkJCW4tPm1pbiA9IDE7CisJCQkJCQluLT5tYXggPSAxOworCQkJCQkJ bi0+cmVsdWN0YW50ID0gLTE7CisJCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkJJCQgPSAo Tm9kZSAqKSBuOworCQkJCQl9CisJCQkJfQorCQk7CisKK3Jvd19wYXR0ZXJuX3NlcToKKwkJCXJv d19wYXR0ZXJuX3Rlcm0JCQkJCXsgJCQgPSAkMTsgfQorCQkJfCByb3dfcGF0dGVybl9zZXEgcm93 X3BhdHRlcm5fdGVybQorCQkJCXsKKwkJCQkJUlBSUGF0dGVybk5vZGUgKm47CisJCQkJCS8qIElm IGxlZnQgc2lkZSBpcyBhbHJlYWR5IFNFUSwgYXBwZW5kIHRvIGl0ICovCisJCQkJCWlmIChJc0Eo JDEsIFJQUlBhdHRlcm5Ob2RlKSAmJgorCQkJCQkJKChSUFJQYXR0ZXJuTm9kZSAqKSAkMSktPm5v ZGVUeXBlID09IFJQUl9QQVRURVJOX1NFUSkKKwkJCQkJeworCQkJCQkJbiA9IChSUFJQYXR0ZXJu Tm9kZSAqKSAkMTsKKwkJCQkJCW4tPmNoaWxkcmVuID0gbGFwcGVuZChuLT5jaGlsZHJlbiwgJDIp OworCQkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJeworCQkJ CQkJbiA9IG1ha2VOb2RlKFJQUlBhdHRlcm5Ob2RlKTsKKwkJCQkJCW4tPm5vZGVUeXBlID0gUlBS X1BBVFRFUk5fU0VROworCQkJCQkJbi0+Y2hpbGRyZW4gPSBsaXN0X21ha2UyKCQxLCAkMik7CisJ CQkJCQluLT5taW4gPSAxOworCQkJCQkJbi0+bWF4ID0gMTsKKwkJCQkJCW4tPnJlbHVjdGFudCA9 IC0xOworCQkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJ CQkJfQorCQkJCX0KKwkJOworCityb3dfcGF0dGVybl90ZXJtOgorCQkJcm93X3BhdHRlcm5fcHJp bWFyeSByb3dfcGF0dGVybl9xdWFudGlmaWVyX29wdAorCQkJCXsKKwkJCQkJUlBSUGF0dGVybk5v ZGUgKm4gPSAoUlBSUGF0dGVybk5vZGUgKikgJDE7CisJCQkJCVJQUlBhdHRlcm5Ob2RlICpxID0g KFJQUlBhdHRlcm5Ob2RlICopICQyOworCisJCQkJCW4tPm1pbiA9IHEtPm1pbjsKKwkJCQkJbi0+ bWF4ID0gcS0+bWF4OworCQkJCQluLT5yZWx1Y3RhbnQgPSBxLT5yZWx1Y3RhbnQ7CisJCQkJCSQk ID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKworcm93X3BhdHRlcm5fcHJpbWFyeToKKwkJCUNv bElkCisJCQkJeworCQkJCQlSUFJQYXR0ZXJuTm9kZSAqbiA9IG1ha2VOb2RlKFJQUlBhdHRlcm5O b2RlKTsKKwkJCQkJbi0+bm9kZVR5cGUgPSBSUFJfUEFUVEVSTl9WQVI7CisJCQkJCW4tPnZhck5h bWUgPSAkMTsKKwkJCQkJbi0+bWluID0gMTsKKwkJCQkJbi0+bWF4ID0gMTsKKwkJCQkJbi0+cmVs dWN0YW50ID0gLTE7CisJCQkJCW4tPmNoaWxkcmVuID0gTklMOworCQkJCQluLT5sb2NhdGlvbiA9 IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJfCAnKCcgcm93X3BhdHRlcm4g JyknCisJCQkJeworCQkJCQlSUFJQYXR0ZXJuTm9kZSAqaW5uZXIgPSAoUlBSUGF0dGVybk5vZGUg KikgJDI7CisJCQkJCVJQUlBhdHRlcm5Ob2RlICpuID0gbWFrZU5vZGUoUlBSUGF0dGVybk5vZGUp OworCQkJCQluLT5ub2RlVHlwZSA9IFJQUl9QQVRURVJOX0dST1VQOworCQkJCQluLT5jaGlsZHJl biA9IGxpc3RfbWFrZTEoaW5uZXIpOworCQkJCQluLT5taW4gPSAxOworCQkJCQluLT5tYXggPSAx OworCQkJCQluLT5yZWx1Y3RhbnQgPSAtMTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJ JCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCityb3dfcGF0dGVybl9xdWFudGlmaWVyX29w dDoKKwkJCS8qIEVNUFRZICovCQkJCXsgJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigx LCAxLCAtMSwgQCQsIHl5c2Nhbm5lcik7IH0KKwkJCXwgJyonCQkJCQl7ICQkID0gKE5vZGUgKikg bWFrZVJQUlF1YW50aWZpZXIoMCwgSU5UX01BWCwgLTEsIEAxLCB5eXNjYW5uZXIpOyB9CisJCQl8 ICcrJwkJCQkJeyAkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDEsIElOVF9NQVgsIC0x LCBAMSwgeXlzY2FubmVyKTsgfQorCQkJfCBPcAorCQkJCXsKKwkJCQkJLyogSGFuZGxlIHNpbmds ZSBPcDogPyBvciByZWx1Y3RhbnQgcXVhbnRpZmllcnMgKj8sICs/LCA/PyAqLworCQkJCQlpZiAo c3RyY21wKCQxLCAiPyIpID09IDApCisJCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlm aWVyKDAsIDEsIC0xLCBAMSwgeXlzY2FubmVyKTsKKwkJCQkJZWxzZSBpZiAoc3RyY21wKCQxLCAi Kj8iKSA9PSAwKQorCQkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigwLCBJTlRf TUFYLCBAMSArIDEsIEAxLCB5eXNjYW5uZXIpOworCQkJCQllbHNlIGlmIChzdHJjbXAoJDEsICIr PyIpID09IDApCisJCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDEsIElOVF9N QVgsIEAxICsgMSwgQDEsIHl5c2Nhbm5lcik7CisJCQkJCWVsc2UgaWYgKHN0cmNtcCgkMSwgIj8/ IikgPT0gMCkKKwkJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoMCwgMSwgQDEg KyAxLCBAMSwgeXlzY2FubmVyKTsKKwkJCQkJZWxzZQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJ1 bnN1cHBvcnRlZCBxdWFudGlmaWVyIFwiJXNcIiIsICQxKSwKKwkJCQkJCQkJIGVycmhpbnQoIlZh bGlkIHF1YW50aWZpZXJzIGFyZTogKiwgKywgPywgKj8sICs/LCA/Pywge259LCB7bix9LCB7LG19 LCB7bixtfSBhbmQgdGhlaXIgcmVsdWN0YW50IHZlcnNpb25zLiIpLAorCQkJCQkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKEAxKSkpOworCQkJCX0KKwkJCS8qIFJFTFVDVEFOVCBxdWFudGlmaWVycyAo d2hlbiBsZXhlciBzZXBhcmF0ZXMgdG9rZW5zKSAqLworCQkJfCAnKicgT3AKKwkJCQl7CisJCQkJ CWlmIChzdHJjbXAoJDIsICI/IikgIT0gMCkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1zZygiaW52YWxp ZCB0b2tlbiBhZnRlciBcIipcIiBxdWFudGlmaWVyIiksCisJCQkJCQkJCSBlcnJoaW50KCJEaWQg eW91IG1lYW4gXCIqP1wiIGZvciByZWx1Y3RhbnQgcXVhbnRpZmllcj8iKSwKKwkJCQkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihAMikpKTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRp ZmllcigwLCBJTlRfTUFYLCBAMiwgQDEsIHl5c2Nhbm5lcik7CisJCQkJfQorCQkJfCAnKycgT3AK KwkJCQl7CisJCQkJCWlmIChzdHJjbXAoJDIsICI/IikgIT0gMCkKKwkJCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVy cm1zZygiaW52YWxpZCB0b2tlbiBhZnRlciBcIitcIiBxdWFudGlmaWVyIiksCisJCQkJCQkJCSBl cnJoaW50KCJEaWQgeW91IG1lYW4gXCIrP1wiIGZvciByZWx1Y3RhbnQgcXVhbnRpZmllcj8iKSwK KwkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihAMikpKTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBt YWtlUlBSUXVhbnRpZmllcigxLCBJTlRfTUFYLCBAMiwgQDEsIHl5c2Nhbm5lcik7CisJCQkJfQor CQkJfCBPcCBPcAorCQkJCXsKKwkJCQkJaWYgKHN0cmNtcCgkMSwgIj8iKSAhPSAwIHx8IHN0cmNt cCgkMiwgIj8iKSAhPSAwKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIHF1YW50aWZp ZXIgY29tYmluYXRpb24iKSwKKwkJCQkJCQkJIGVycmhpbnQoIkRpZCB5b3UgbWVhbiBcIj8/XCIg Zm9yIHJlbHVjdGFudCBxdWFudGlmaWVyPyIpLAorCQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KEAxKSkpOworCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDAsIDEsIEAyLCBA MSwgeXlzY2FubmVyKTsKKwkJCQl9CisJCQkvKiB7bn0sIHtuLH0sIHssbX0sIHtuLG19IHF1YW50 aWZpZXJzICovCisJCQl8ICd7JyBJY29uc3QgJ30nCisJCQkJeworCQkJCQlpZiAoJDIgPD0gMCB8 fCAkMiA+PSBJTlRfTUFYKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygicXVhbnRpZmllciBib3VuZCBt dXN0IGJlIGJldHdlZW4gMSBhbmQgJWQiLCBJTlRfTUFYIC0gMSksCisJCQkJCQkJCXBhcnNlcl9l cnJwb3NpdGlvbihAMikpOworCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKCQy LCAkMiwgLTEsIEAxLCB5eXNjYW5uZXIpOworCQkJCX0KKwkJCXwgJ3snIEljb25zdCAnLCcgJ30n CisJCQkJeworCQkJCQlpZiAoJDIgPCAwIHx8ICQyID49IElOVF9NQVgpCisJCQkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJ ZXJybXNnKCJxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCIsIElOVF9N QVggLSAxKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEAyKSk7CisJCQkJCSQkID0gKE5v ZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoJDIsIElOVF9NQVgsIC0xLCBAMSwgeXlzY2FubmVyKTsK KwkJCQl9CisJCQl8ICd7JyAnLCcgSWNvbnN0ICd9JworCQkJCXsKKwkJCQkJaWYgKCQzIDw9IDAg fHwgJDMgPj0gSU5UX01BWCkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQllcnJtc2coInF1YW50aWZpZXIgYm91bmQg bXVzdCBiZSBiZXR3ZWVuIDEgYW5kICVkIiwgSU5UX01BWCAtIDEpLAorCQkJCQkJCQlwYXJzZXJf ZXJycG9zaXRpb24oQDMpKTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigw LCAkMywgLTEsIEAxLCB5eXNjYW5uZXIpOworCQkJCX0KKwkJCXwgJ3snIEljb25zdCAnLCcgSWNv bnN0ICd9JworCQkJCXsKKwkJCQkJaWYgKCQyIDwgMCB8fCAkNCA8PSAwIHx8ICQyID49IElOVF9N QVggfHwgJDQgPj0gSU5UX01BWCkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNv ZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQllcnJtc2coInF1YW50aWZpZXIgYm91 bmRzIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCB3aXRoIG1heCA+PSAxIiwgSU5UX01BWCAtIDEp LAorCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oQDIpKTsKKwkJCQkJaWYgKCQyID4gJDQpCisJ CQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KSwKKwkJCQkJCQkJZXJybXNnKCJxdWFudGlmaWVyIG1pbmltdW0gYm91bmQgbXVzdCBub3QgZXhj ZWVkIG1heGltdW0iKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEAyKSk7CisJCQkJCSQk ID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoJDIsICQ0LCAtMSwgQDEsIHl5c2Nhbm5lcik7 CisJCQkJfQorCQkJLyogUmVsdWN0YW50IHZlcnNpb25zOiB7bn0/LCB7bix9PywgeyxtfT8sIHtu LG19PyAqLworCQkJfCAneycgSWNvbnN0ICd9JyBPcAorCQkJCXsKKwkJCQkJaWYgKHN0cmNtcCgk NCwgIj8iKSAhPSAwKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIHRva2VuIGFmdGVy IHJhbmdlIHF1YW50aWZpZXIiKSwKKwkJCQkJCQkJIGVycmhpbnQoIk9ubHkgXCI/XCIgaXMgYWxs b3dlZCBhZnRlciB7bn0gdG8gbWFrZSBpdCByZWx1Y3RhbnQuIiksCisJCQkJCQkJCSBwYXJzZXJf ZXJycG9zaXRpb24oQDQpKSk7CisJCQkJCWlmICgkMiA8PSAwIHx8ICQyID49IElOVF9NQVgpCisJ CQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KSwKKwkJCQkJCQkJZXJybXNnKCJxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2VlbiAxIGFu ZCAlZCIsIElOVF9NQVggLSAxKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEAyKSk7CisJ CQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoJDIsICQyLCBANCwgQDEsIHl5c2Nh bm5lcik7CisJCQkJfQorCQkJfCAneycgSWNvbnN0ICcsJyAnfScgT3AKKwkJCQl7CisJCQkJCWlm IChzdHJjbXAoJDUsICI/IikgIT0gMCkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1zZygiaW52YWxpZCB0 b2tlbiBhZnRlciByYW5nZSBxdWFudGlmaWVyIiksCisJCQkJCQkJCSBlcnJoaW50KCJPbmx5IFwi P1wiIGlzIGFsbG93ZWQgYWZ0ZXIge24sfSBvciB7LG19IHRvIG1ha2UgaXQgcmVsdWN0YW50LiIp LAorCQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKEA1KSkpOworCQkJCQlpZiAoJDIgPCAwIHx8 ICQyID49IElOVF9NQVgpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJZXJybXNnKCJxdWFudGlmaWVyIGJvdW5kIG11 c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCIsIElOVF9NQVggLSAxKSwKKwkJCQkJCQkJcGFyc2VyX2Vy cnBvc2l0aW9uKEAyKSk7CisJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoJDIs IElOVF9NQVgsIEA1LCBAMSwgeXlzY2FubmVyKTsKKwkJCQl9CisJCQl8ICd7JyAnLCcgSWNvbnN0 ICd9JyBPcAorCQkJCXsKKwkJCQkJaWYgKHN0cmNtcCgkNSwgIj8iKSAhPSAwKQorCQkJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJ CQkJCQkgZXJybXNnKCJpbnZhbGlkIHRva2VuIGFmdGVyIHJhbmdlIHF1YW50aWZpZXIiKSwKKwkJ CQkJCQkJIGVycmhpbnQoIk9ubHkgXCI/XCIgaXMgYWxsb3dlZCBhZnRlciB7bix9IG9yIHssbX0g dG8gbWFrZSBpdCByZWx1Y3RhbnQuIiksCisJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oQDUp KSk7CisJCQkJCWlmICgkMyA8PSAwIHx8ICQzID49IElOVF9NQVgpCisJCQkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJZXJy bXNnKCJxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAlZCIsIElOVF9NQVgg LSAxKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEAzKSk7CisJCQkJCSQkID0gKE5vZGUg KikgbWFrZVJQUlF1YW50aWZpZXIoMCwgJDMsIEA1LCBAMSwgeXlzY2FubmVyKTsKKwkJCQl9CisJ CQl8ICd7JyBJY29uc3QgJywnIEljb25zdCAnfScgT3AKKwkJCQl7CisJCQkJCWlmIChzdHJjbXAo JDYsICI/IikgIT0gMCkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1zZygiaW52YWxpZCB0b2tlbiBhZnRl ciByYW5nZSBxdWFudGlmaWVyIiksCisJCQkJCQkJCSBlcnJoaW50KCJPbmx5IFwiP1wiIGlzIGFs bG93ZWQgYWZ0ZXIge24sbX0gdG8gbWFrZSBpdCByZWx1Y3RhbnQuIiksCisJCQkJCQkJCSBwYXJz ZXJfZXJycG9zaXRpb24oQDYpKSk7CisJCQkJCWlmICgkMiA8IDAgfHwgJDQgPD0gMCB8fCAkMiA+ PSBJTlRfTUFYIHx8ICQ0ID49IElOVF9NQVgpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ CQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJZXJybXNnKCJxdWFudGlm aWVyIGJvdW5kcyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgJWQgd2l0aCBtYXggPj0gMSIsIElOVF9N QVggLSAxKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEAyKSk7CisJCQkJCWlmICgkMiA+ ICQ0KQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygicXVhbnRpZmllciBtaW5pbXVtIGJvdW5kIG11c3Qg bm90IGV4Y2VlZCBtYXhpbXVtIiksCisJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihAMikpOwor CQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKCQyLCAkNCwgQDYsIEAxLCB5eXNj YW5uZXIpOworCQkJCX0KKwkJOworCityb3dfcGF0dGVybl9kZWZpbml0aW9uX2xpc3Q6CisJCQly b3dfcGF0dGVybl9kZWZpbml0aW9uCQkJCQkJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQor CQkJfCByb3dfcGF0dGVybl9kZWZpbml0aW9uX2xpc3QgJywnIHJvd19wYXR0ZXJuX2RlZmluaXRp b24JeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCQk7CisKK3Jvd19wYXR0ZXJuX2RlZmluaXRp b246CisJCQlDb2xJZCBBUyBhX2V4cHIKKwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUoUmVzVGFy Z2V0KTsKKwkJCQkJJCQtPm5hbWUgPSAkMTsKKwkJCQkJJCQtPmluZGlyZWN0aW9uID0gTklMOwor CQkJCQkkJC0+dmFsID0gKE5vZGUgKikgJDM7CisJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOworCQkJ CX0KKwkJOwogCiAvKgogICogU3VwcG9ydGluZyBub250ZXJtaW5hbHMgZm9yIGV4cHJlc3Npb25z LgpAQCAtMTY4ODEsMTIgKzE3MjM2LDE1IEBAIE1hdGhPcDoJCSAnKycJCQkJCQkJCQl7ICQkID0g IisiOyB9CiAJCQl8IExFU1NfRVFVQUxTCQkJCQkJCXsgJCQgPSAiPD0iOyB9CiAJCQl8IEdSRUFU RVJfRVFVQUxTCQkJCQkJeyAkJCA9ICI+PSI7IH0KIAkJCXwgTk9UX0VRVUFMUwkJCQkJCQl7ICQk ID0gIjw+IjsgfQorCQkJfCAnfCcJCQkJCQkJCQl7ICQkID0gInwiOyB9CiAJCTsKIAogcXVhbF9P cDoJT3AKIAkJCQkJeyAkJCA9IGxpc3RfbWFrZTEobWFrZVN0cmluZygkMSkpOyB9CiAJCQl8IE9Q RVJBVE9SICcoJyBhbnlfb3BlcmF0b3IgJyknCiAJCQkJCXsgJCQgPSAkMzsgfQorCQkJfCAnfCcK KwkJCQkJeyAkJCA9IGxpc3RfbWFrZTEobWFrZVN0cmluZygifCIpKTsgfQogCQk7CiAKIHF1YWxf YWxsX09wOgpAQCAtMTc5NzYsNiArMTgzMzQsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8 IERFQ0xBUkUKIAkJCXwgREVGQVVMVFMKIAkJCXwgREVGRVJSRUQKKwkJCXwgREVGSU5FCiAJCQl8 IERFRklORVIKIAkJCXwgREVMRVRFX1AKIAkJCXwgREVMSU1JVEVSCkBAIC0xODA0MSw2ICsxODQw MCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgSU5ERVhFUwogCQkJfCBJTkhFUklUCiAJ CQl8IElOSEVSSVRTCisJCQl8IElOSVRJQUwKIAkJCXwgSU5MSU5FX1AKIAkJCXwgSU5QVVRfUAog CQkJfCBJTlNFTlNJVElWRQpAQCAtMTgxMTYsNyArMTg0NzYsOSBAQCB1bnJlc2VydmVkX2tleXdv cmQ6CiAJCQl8IFBBUlRJVElPTlMKIAkJCXwgUEFTU0lORwogCQkJfCBQQVNTV09SRAorCQkJfCBQ QVNUCiAJCQl8IFBBVEgKKwkJCXwgUEFUVEVSTl9QCiAJCQl8IFBFUklPRAogCQkJfCBQTEFOCiAJ CQl8IFBMQU5TCkBAIC0xODE3MCw2ICsxODUzMiw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJ CXwgU0VBUkNICiAJCQl8IFNFQ09ORF9QCiAJCQl8IFNFQ1VSSVRZCisJCQl8IFNFRUsKIAkJCXwg U0VRVUVOQ0UKIAkJCXwgU0VRVUVOQ0VTCiAJCQl8IFNFUklBTElaQUJMRQpAQCAtMTg1NTcsNiAr MTg5MjAsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IERFRkFVTFRTCiAJCQl8IERFRkVS UkFCTEUKIAkJCXwgREVGRVJSRUQKKwkJCXwgREVGSU5FCiAJCQl8IERFRklORVIKIAkJCXwgREVM RVRFX1AKIAkJCXwgREVMSU1JVEVSCkBAIC0xODYzNSw2ICsxODk5OSw3IEBAIGJhcmVfbGFiZWxf a2V5d29yZDoKIAkJCXwgSU5ERVhFUwogCQkJfCBJTkhFUklUCiAJCQl8IElOSEVSSVRTCisJCQl8 IElOSVRJQUwKIAkJCXwgSU5JVElBTExZCiAJCQl8IElOTElORV9QCiAJCQl8IElOTkVSX1AKQEAg LTE4NzQ4LDcgKzE5MTEzLDkgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBQQVJUSVRJT05T CiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKKwkJCXwgUEFTVAogCQkJfCBQQVRICisJCQl8 IFBBVFRFUk5fUAogCQkJfCBQRVJJT0QKIAkJCXwgUExBQ0lORwogCQkJfCBQTEFOCkBAIC0xODgw Nyw2ICsxOTE3NCw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgU0NST0xMCiAJCQl8IFNF QVJDSAogCQkJfCBTRUNVUklUWQorCQkJfCBTRUVLCiAJCQl8IFNFTEVDVAogCQkJfCBTRVFVRU5D RQogCQkJfCBTRVFVRU5DRVMKQEAgLTE5OTk4LDYgKzIwMzY2LDI5IEBAIG1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KQogCXJl dHVybiAoTm9kZSAqKSBzOwogfQogCisvKgorICogbWFrZVJQUlF1YW50aWZpZXIKKyAqCQlDcmVh dGUgYW4gUlBSUGF0dGVybk5vZGUgd2l0aCBzcGVjaWZpZWQgcXVhbnRpZmllciBib3VuZHMuCisg Ki8KK3N0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqCittYWtlUlBSUXVhbnRpZmllcihpbnQgbWluLCBp bnQgbWF4LCBQYXJzZUxvYyByZWx1Y3RhbnQsIGludCBsb2NhdGlvbiwKKwkJCQkgIGNvcmVfeXlz Y2FuX3QgeXlzY2FubmVyKQoreworCVJQUlBhdHRlcm5Ob2RlICpuID0gbWFrZU5vZGUoUlBSUGF0 dGVybk5vZGUpOworCisJaWYgKHJlbHVjdGFudCA+PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJy ZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIiksCisJCQkJIHBhcnNl cl9lcnJwb3NpdGlvbihyZWx1Y3RhbnQpKSk7CisKKwluLT5taW4gPSBtaW47CisJbi0+bWF4ID0g bWF4OworCW4tPnJlbHVjdGFudCA9IHJlbHVjdGFudDsKKwluLT5sb2NhdGlvbiA9IGxvY2F0aW9u OworCXJldHVybiBuOworfQorCiAvKiBwYXJzZXJfaW5pdCgpCiAgKiBJbml0aWFsaXplIHRvIHBh cnNlIG9uZSBxdWVyeSBzdHJpbmcKICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3NjYW4ubCBiL3NyYy9iYWNrZW5kL3BhcnNlci9zY2FuLmwKaW5kZXggNmMxNjJmNDgzNDIuLmZh MDRlYzJiOTUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvc2Nhbi5sCisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9zY2FuLmwKQEAgLTM1OSw3ICszNTksNyBAQCBub3RfZXF1YWxzCQki IT0iCiAgKiBJZiB5b3UgY2hhbmdlIGVpdGhlciBzZXQsIGFkanVzdCB0aGUgY2hhcmFjdGVyIGxp c3RzIGFwcGVhcmluZyBpbiB0aGUKICAqIHJ1bGUgZm9yICJvcGVyYXRvciIhCiAgKi8KLXNlbGYJ CQlbLCgpXFtcXS47XDpcK1wtXCpcL1wlXF5cPFw+XD1dCitzZWxmCQkJWywoKVxbXF0uO1w6XCtc LVwqXC9cJVxeXDxcPlw9XHxdCiBvcF9jaGFycwkJW1x+XCFcQFwjXF5cJlx8XGBcP1wrXC1cKlwv XCVcPFw+XD1dCiBvcGVyYXRvcgkJe29wX2NoYXJzfSsKIApAQCAtOTMwLDcgKzkzMCw3IEBAIG90 aGVyCQkJLgogCQkJCQkJICogdGhhdCB0aGUgInNlbGYiIHJ1bGUgd291bGQgaGF2ZS4KIAkJCQkJ CSAqLwogCQkJCQkJaWYgKG5jaGFycyA9PSAxICYmCi0JCQkJCQkJc3RyY2hyKCIsKClbXS47Oist Ki8lXjw+PSIsIHl5dGV4dFswXSkpCisJCQkJCQkJc3RyY2hyKCIsKClbXS47OistKi8lXjw+PXwi LCB5eXRleHRbMF0pKQogCQkJCQkJCXJldHVybiB5eXRleHRbMF07CiAJCQkJCQkvKgogCQkJCQkJ ICogTGlrZXdpc2UsIGlmIHdoYXQgd2UgaGF2ZSBsZWZ0IGlzIHR3byBjaGFycywgYW5kCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmgKaW5kZXggMGFlYzQ5YmRkMjIuLjNhNDcyNDgxZmIyIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC01NzgsNiArNTc4LDU3IEBAIHR5cGVkZWYgc3RydWN0IFNvcnRCeQog CVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogb3BlcmF0b3IgbG9jYXRpb24sIG9yIC0xIGlmIG5vbmUv dW5rbm93biAqLwogfSBTb3J0Qnk7CiAKKy8qCisgKiBBRlRFUiBNQVRDSCByb3cgcGF0dGVybiBz a2lwIHRvIHR5cGVzIGluIHJvdyBwYXR0ZXJuIGNvbW1vbiBzeW50YXgKKyAqLwordHlwZWRlZiBl bnVtIFJQU2tpcFRvCit7CisJU1RfTk9ORSwJCQkJCS8qIEFGVEVSIE1BVENIIG9taXR0ZWQgKi8K KwlTVF9ORVhUX1JPVywJCQkJLyogU0tJUCBUTyBORVhUIFJPVyAqLworCVNUX1BBU1RfTEFTVF9S T1csCQkJLyogU0tJUCBUTyBQQVNUIExBU1QgUk9XICovCit9IFJQU2tpcFRvOworCisvKgorICog UlBSUGF0dGVybk5vZGVUeXBlIC0gUm93IFBhdHRlcm4gUmVjb2duaXRpb24gcGF0dGVybiBub2Rl IHR5cGVzCisgKi8KK3R5cGVkZWYgZW51bSBSUFJQYXR0ZXJuTm9kZVR5cGUKK3sKKwlSUFJfUEFU VEVSTl9WQVIsCQkJLyogdmFyaWFibGUgcmVmZXJlbmNlICovCisJUlBSX1BBVFRFUk5fU0VRLAkJ CS8qIHNlcXVlbmNlIChjb25jYXRlbmF0aW9uKSAqLworCVJQUl9QQVRURVJOX0FMVCwJCQkvKiBh bHRlcm5hdGlvbiAofCkgKi8KKwlSUFJfUEFUVEVSTl9HUk9VUAkJCS8qIGdyb3VwIChwYXJlbnRo ZXNlcykgKi8KK30gUlBSUGF0dGVybk5vZGVUeXBlOworCisvKgorICogUlBSUGF0dGVybk5vZGUg LSBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiBwYXR0ZXJuIEFTVCBub2RlCisgKi8KK3R5cGVkZWYg c3RydWN0IFJQUlBhdHRlcm5Ob2RlCit7CisJTm9kZVRhZwkJdHlwZTsJCQkvKiBUX1JQUlBhdHRl cm5Ob2RlICovCisJUlBSUGF0dGVybk5vZGVUeXBlIG5vZGVUeXBlOwkvKiBWQVIsIFNFUSwgQUxU LCBHUk9VUCAqLworCWludAkJCW1pbjsJCQkvKiBtaW5pbXVtIHJlcGV0aXRpb25zICgwIGZvciAq LCA/KSAqLworCWludAkJCW1heDsJCQkvKiBtYXhpbXVtIHJlcGV0aXRpb25zIChJTlRfTUFYIGZv ciAqLCArKSAqLworCVBhcnNlTG9jCXJlbHVjdGFudDsJCS8qIGxvY2F0aW9uIG9mICc/JyBmb3Ig cmVsdWN0YW50LCAtMSBmb3IKKwkJCQkJCQkJICogZ3JlZWR5ICovCisJUGFyc2VMb2MJbG9jYXRp b247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgKi8KKwljaGFyCSAgICp2YXJOYW1lOwkJLyog VkFSOiB2YXJpYWJsZSBuYW1lICovCisJTGlzdAkgICAqY2hpbGRyZW47CQkvKiBTRVEsIEFMVCwg R1JPVVA6IGNoaWxkIG5vZGVzICovCit9IFJQUlBhdHRlcm5Ob2RlOworCisvKgorICogUm93UGF0 dGVybkNvbW1vblN5bnRheCAtIHJhdyByZXByZXNlbnRhdGlvbiBvZiByb3cgcGF0dGVybiBjb21t b24gc3ludGF4CisgKi8KK3R5cGVkZWYgc3RydWN0IFJQQ29tbW9uU3ludGF4Cit7CisJTm9kZVRh ZwkJdHlwZTsKKwlSUFNraXBUbwlycFNraXBUbzsJCS8qIFJvdyBQYXR0ZXJuIEFGVEVSIE1BVENI IFNLSVAgdHlwZSAqLworCWJvb2wJCWluaXRpYWw7CQkvKiB0cnVlIGlmIDxyb3cgcGF0dGVybiBp bml0aWFsIG9yIHNlZWs+IGlzCisJCQkJCQkJCSAqIGluaXRpYWwgKi8KKwlSUFJQYXR0ZXJuTm9k ZSAqcnBQYXR0ZXJuOwkvKiBQQVRURVJOIGNsYXVzZSBBU1QgKi8KKwlMaXN0CSAgICpycERlZnM7 CQkJLyogcm93IHBhdHRlcm4gZGVmaW5pdGlvbnMgY2xhdXNlIChsaXN0IG9mCisJCQkJCQkJCSAq IFJlc1RhcmdldCkgKi8KK30gUlBDb21tb25TeW50YXg7CisKIC8qCiAgKiBXaW5kb3dEZWYgLSBy YXcgcmVwcmVzZW50YXRpb24gb2YgV0lORE9XIGFuZCBPVkVSIGNsYXVzZXMKICAqCkBAIC01OTMs MTAgKzY0NCwxMyBAQCB0eXBlZGVmIHN0cnVjdCBXaW5kb3dEZWYKIAljaGFyCSAgICpyZWZuYW1l OwkJLyogcmVmZXJlbmNlZCB3aW5kb3cgbmFtZSwgaWYgYW55ICovCiAJTGlzdAkgICAqcGFydGl0 aW9uQ2xhdXNlOwkvKiBQQVJUSVRJT04gQlkgZXhwcmVzc2lvbiBsaXN0ICovCiAJTGlzdAkgICAq b3JkZXJDbGF1c2U7CS8qIE9SREVSIEJZIChsaXN0IG9mIFNvcnRCeSkgKi8KKwlSUENvbW1vblN5 bnRheCAqcnBDb21tb25TeW50YXg7IC8qIHJvdyBwYXR0ZXJuIGNvbW1vbiBzeW50YXggKi8KIAlp bnQJCQlmcmFtZU9wdGlvbnM7CS8qIGZyYW1lX2NsYXVzZSBvcHRpb25zLCBzZWUgYmVsb3cgKi8K IAlOb2RlCSAgICpzdGFydE9mZnNldDsJLyogZXhwcmVzc2lvbiBmb3Igc3RhcnRpbmcgYm91bmQs IGlmIGFueSAqLwogCU5vZGUJICAgKmVuZE9mZnNldDsJCS8qIGV4cHJlc3Npb24gZm9yIGVuZGlu ZyBib3VuZCwgaWYgYW55ICovCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiBwYXJzZSBsb2NhdGlv biwgb3IgLTEgaWYgbm9uZS91bmtub3duICovCisJUGFyc2VMb2MJZnJhbWVMb2NhdGlvbjsJLyog Uk9XUy9SQU5HRS9HUk9VUFMgbG9jYXRpb24sIG9yIC0xICovCisJUGFyc2VMb2MJZXhjbHVkZUxv Y2F0aW9uOwkvKiBFWENMVURFIGxvY2F0aW9uLCBvciAtMSAqLwogfSBXaW5kb3dEZWY7CiAKIC8q CkBAIC0xNTg5LDYgKzE2NDMsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgR3JvdXBpbmdTZXQKICAqIHRo ZSBvcmRlckNsYXVzZSBtaWdodCBvciBtaWdodCBub3QgYmUgY29waWVkIChzZWUgY29waWVkT3Jk ZXIpOyB0aGUgZnJhbWluZwogICogb3B0aW9ucyBhcmUgbmV2ZXIgY29waWVkLCBwZXIgc3BlYy4K ICAqCisgKiAiZGVmaW5lQ2xhdXNlIiBpcyBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiBERUZJTkUg Y2xhdXNlIChsaXN0IG9mCisgKiBUYXJnZXRFbnRyeSkuIFRhcmdldEVudHJ5LnJlc25hbWUgcmVw cmVzZW50cyByb3cgcGF0dGVybiBkZWZpbml0aW9uCisgKiB2YXJpYWJsZSBuYW1lLiAicnBQYXR0 ZXJuIiByZXByZXNlbnRzIFBBVFRFUk4gY2xhdXNlIGFzIGFuIEFTVCB0cmVlCisgKiAoUlBSUGF0 dGVybk5vZGUpLgorICoKICAqIFRoZSBpbmZvcm1hdGlvbiByZWxldmFudCBmb3IgdGhlIHF1ZXJ5 IGp1bWJsaW5nIGlzIHRoZSBwYXJ0aXRpb24gY2xhdXNlCiAgKiB0eXBlIGFuZCBpdHMgYm91bmRz LgogICovCkBAIC0xNjE4LDYgKzE2NzcsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgV2luZG93Q2xhdXNl CiAJSW5kZXgJCXdpbnJlZjsJCQkvKiBJRCByZWZlcmVuY2VkIGJ5IHdpbmRvdyBmdW5jdGlvbnMg Ki8KIAkvKiBkaWQgd2UgY29weSBvcmRlckNsYXVzZSBmcm9tIHJlZm5hbWU/ICovCiAJYm9vbAkJ Y29waWVkT3JkZXIgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOworCS8qIFJvdyBQ YXR0ZXJuIEFGVEVSIE1BVENIIFNLSVAgY2xhdXNlICovCisJUlBTa2lwVG8JcnBTa2lwVG87CQkv KiBSb3cgUGF0dGVybiBTa2lwIFRvIHR5cGUgKi8KKwlib29sCQlpbml0aWFsOwkJLyogdHJ1ZSBp ZiA8cm93IHBhdHRlcm4gaW5pdGlhbCBvciBzZWVrPiBpcworCQkJCQkJCQkgKiBpbml0aWFsICov CisJLyogUm93IFBhdHRlcm4gREVGSU5FIGNsYXVzZSAobGlzdCBvZiBUYXJnZXRFbnRyeSkgKi8K KwlMaXN0CSAgICpkZWZpbmVDbGF1c2U7CisJLyogUm93IFBhdHRlcm4gUEFUVEVSTiBjbGF1c2Ug QVNUICovCisJUlBSUGF0dGVybk5vZGUgKnJwUGF0dGVybjsKIH0gV2luZG93Q2xhdXNlOwogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCmluZGV4IGY3NzUzYzVjOGE4Li4xNjI0ZjQ0MTJkYyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9r d2xpc3QuaApAQCAtMTI5LDYgKzEyOSw3IEBAIFBHX0tFWVdPUkQoImRlZmF1bHQiLCBERUZBVUxU LCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZGVmYXVsdHMiLCBE RUZBVUxUUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZGVm ZXJyYWJsZSIsIERFRkVSUkFCTEUsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJkZWZlcnJlZCIsIERFRkVSUkVELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCitQR19LRVlXT1JEKCJkZWZpbmUiLCBERUZJTkUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoImRlZmluZXIiLCBERUZJTkVSLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJkZWxldGUiLCBERUxFVEVfUCwgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZGVsaW1pdGVyIiwgREVMSU1JVEVS LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC0yMTcsNiArMjE4LDcgQEAgUEdf S0VZV09SRCgiaW5kZXgiLCBJTkRFWCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgiaW5kZXhlcyIsIElOREVYRVMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoImluaGVyaXQiLCBJTkhFUklULCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJpbmhlcml0cyIsIElOSEVSSVRTLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJpbml0aWFsIiwgSU5JVElBTCwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiaW5pdGlhbGx5IiwgSU5J VElBTExZLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiaW5saW5l IiwgSU5MSU5FX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo ImlubmVyIiwgSU5ORVJfUCwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAg LTM0Miw3ICszNDQsOSBAQCBQR19LRVlXT1JEKCJwYXJ0aXRpb24iLCBQQVJUSVRJT04sIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpdGlvbnMiLCBQQVJU SVRJT05TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNz aW5nIiwgUEFTU0lORywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgicGFzc3dvcmQiLCBQQVNTV09SRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQor UEdfS0VZV09SRCgicGFzdCIsIFBBU1QsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoInBhdGgiLCBQQVRILCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CitQR19LRVlXT1JEKCJwYXR0ZXJuIiwgUEFUVEVSTl9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwZXJpb2QiLCBQRVJJT0QsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBsYWNpbmciLCBQTEFDSU5HLCBSRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGxhbiIsIFBMQU4sIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTQwNSw2ICs0MDksNyBAQCBQR19LRVlXT1JEKCJzY3Jv bGwiLCBTQ1JPTEwsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InNlYXJjaCIsIFNFQVJDSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgic2Vjb25kIiwgU0VDT05EX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQVNfTEFCRUwpCiBQ R19LRVlXT1JEKCJzZWN1cml0eSIsIFNFQ1VSSVRZLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCitQR19LRVlXT1JEKCJzZWVrIiwgU0VFSywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgic2VsZWN0IiwgU0VMRUNULCBSRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgic2VxdWVuY2UiLCBTRVFVRU5DRSwgVU5SRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic2VxdWVuY2VzIiwgU0VRVUVOQ0VTLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9w YXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRl eCBmMjNlMjFmMzE4Yi4uNGRjN2U1NzM4YWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNl ci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAt NTEsNiArNTEsNyBAQCB0eXBlZGVmIGVudW0gUGFyc2VFeHByS2luZAogCUVYUFJfS0lORF9XSU5E T1dfRlJBTUVfUkFOR0UsCS8qIHdpbmRvdyBmcmFtZSBjbGF1c2Ugd2l0aCBSQU5HRSAqLwogCUVY UFJfS0lORF9XSU5ET1dfRlJBTUVfUk9XUywJLyogd2luZG93IGZyYW1lIGNsYXVzZSB3aXRoIFJP V1MgKi8KIAlFWFBSX0tJTkRfV0lORE9XX0ZSQU1FX0dST1VQUywJLyogd2luZG93IGZyYW1lIGNs YXVzZSB3aXRoIEdST1VQUyAqLworCUVYUFJfS0lORF9SUFJfREVGSU5FLAkJLyogREVGSU5FICov CiAJRVhQUl9LSU5EX1NFTEVDVF9UQVJHRVQsCS8qIFNFTEVDVCB0YXJnZXQgbGlzdCBpdGVtICov CiAJRVhQUl9LSU5EX0lOU0VSVF9UQVJHRVQsCS8qIElOU0VSVCB0YXJnZXQgbGlzdCBpdGVtICov CiAJRVhQUl9LSU5EX1VQREFURV9TT1VSQ0UsCS8qIFVQREFURSBhc3NpZ25tZW50IHNvdXJjZSBp dGVtICovCi0tIAoyLjQzLjAKCg== ----Next_Part(Sun_Feb_15_18_06_52_2026_930)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v43-0002-Row-pattern-recognition-patch-parse-analysis.patch" RnJvbSA1NzU3ZDVhYjVkYWE3NzQ4NDM1NWRjZjBlYWI1NTBhNDI5OTRkMTc1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTdW4sIDE1IEZlYiAyMDI2IDE3OjQ3OjQ4ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDMg Mi84XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAocGFyc2UvYW5hbHlzaXMpLgoKLS0t CiBzcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyAgICAgfCAgMjcgKysrCiBzcmMvYmFja2Vu ZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgICAgfCAgMzUgKysrCiBzcmMvYmFja2VuZC9ub2Rlcy9vdXRm dW5jcy5jICAgICAgfCAgNTEgKysrKysKIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAg ICB8ICA4NSArKysrKysrCiBzcmMvYmFja2VuZC9wYXJzZXIvTWFrZWZpbGUgICAgICAgfCAgIDEg Kwogc3JjL2JhY2tlbmQvcGFyc2VyL1JFQURNRSAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L3BhcnNlci9tZXNvbi5idWlsZCAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf YWdnLmMgICAgfCAgIDcgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jIHwgIDEw ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgfCAgIDYgKwogc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9ycHIuYyAgICB8IDM2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9jbGF1c2UuaCB8ICAgMyArCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2VfcnByLmggICAgfCAgMjIgKysKIDE0IGZpbGVzIGNoYW5nZWQsIDYxNSBpbnNlcnRpb25zKCsp LCA0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9ycHIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9y cHIuaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5kZXggZmYyMmEwNGFiZTUuLmU2N2FkMzliZGI4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgInBvc3RncmVz LmgiCiAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJub2Rlcy9wbGFubm9kZXMu aCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgogCiAKQEAgLTE2Niw2ICsxNjcsMzIgQEAgX2Nv cHlCaXRtYXBzZXQoY29uc3QgQml0bWFwc2V0ICpmcm9tKQogCXJldHVybiBibXNfY29weShmcm9t KTsKIH0KIAorc3RhdGljIFJQUlBhdHRlcm4gKgorX2NvcHlSUFJQYXR0ZXJuKGNvbnN0IFJQUlBh dHRlcm4gKmZyb20pCit7CisJUlBSUGF0dGVybiAqbmV3bm9kZSA9IG1ha2VOb2RlKFJQUlBhdHRl cm4pOworCisJQ09QWV9TQ0FMQVJfRklFTEQobnVtVmFycyk7CisJQ09QWV9TQ0FMQVJfRklFTEQo bWF4RGVwdGgpOworCUNPUFlfU0NBTEFSX0ZJRUxEKG51bUVsZW1lbnRzKTsKKworCS8qIERlZXAg Y29weSB0aGUgdmFyTmFtZXMgYXJyYXkgKERFRklORSBjbGF1c2UgaXMgcmVxdWlyZWQpICovCisJ QXNzZXJ0KGZyb20tPm51bVZhcnMgPiAwKTsKKwluZXdub2RlLT52YXJOYW1lcyA9IHBhbGxvYzAo ZnJvbS0+bnVtVmFycyAqIHNpemVvZihjaGFyICopKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IGZy b20tPm51bVZhcnM7IGkrKykKKwkJbmV3bm9kZS0+dmFyTmFtZXNbaV0gPSBwc3RyZHVwKGZyb20t PnZhck5hbWVzW2ldKTsKKworCS8qIERlZXAgY29weSB0aGUgZWxlbWVudHMgYXJyYXkgKGFsd2F5 cyBoYXMgYXQgbGVhc3Qgb25lIGVsZW1lbnQgKyBGSU4pICovCisJQXNzZXJ0KGZyb20tPm51bUVs ZW1lbnRzID49IDIpOworCW5ld25vZGUtPmVsZW1lbnRzID0gcGFsbG9jKGZyb20tPm51bUVsZW1l bnRzICogc2l6ZW9mKFJQUlBhdHRlcm5FbGVtZW50KSk7CisJbWVtY3B5KG5ld25vZGUtPmVsZW1l bnRzLCBmcm9tLT5lbGVtZW50cywKKwkJICAgZnJvbS0+bnVtRWxlbWVudHMgKiBzaXplb2YoUlBS UGF0dGVybkVsZW1lbnQpKTsKKworCUNPUFlfU0NBTEFSX0ZJRUxEKGlzQWJzb3JiYWJsZSk7CisK KwlyZXR1cm4gbmV3bm9kZTsKK30KKwogCiAvKgogICogY29weU9iamVjdEltcGwgLS0gaW1wbGVt ZW50YXRpb24gb2YgY29weU9iamVjdCgpOyBzZWUgbm9kZXMvbm9kZXMuaApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxm dW5jcy5jCmluZGV4IDNkMWExYWRmODZlLi4zMjgxOTk5MThiOCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVu Y3MuYwpAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJub2Rlcy9wbGFubm9kZXMuaCIKICNpbmNsdWRlICJ1 dGlscy9kYXR1bS5oIgogCiAKQEAgLTE0OSw2ICsxNTAsNDAgQEAgX2VxdWFsQml0bWFwc2V0KGNv bnN0IEJpdG1hcHNldCAqYSwgY29uc3QgQml0bWFwc2V0ICpiKQogCXJldHVybiBibXNfZXF1YWwo YSwgYik7CiB9CiAKK3N0YXRpYyBib29sCitfZXF1YWxSUFJQYXR0ZXJuKGNvbnN0IFJQUlBhdHRl cm4gKmEsIGNvbnN0IFJQUlBhdHRlcm4gKmIpCit7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQobnVt VmFycyk7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQobWF4RGVwdGgpOworCUNPTVBBUkVfU0NBTEFS X0ZJRUxEKG51bUVsZW1lbnRzKTsKKworCS8qIENvbXBhcmUgdmFyTmFtZXMgYXJyYXkgKi8KKwlp ZiAoYS0+bnVtVmFycyA+IDApCisJeworCQlpZiAoYS0+dmFyTmFtZXMgPT0gTlVMTCB8fCBiLT52 YXJOYW1lcyA9PSBOVUxMKQorCQkJcmV0dXJuIGZhbHNlOworCQlmb3IgKGludCBpID0gMDsgaSA8 IGEtPm51bVZhcnM7IGkrKykKKwkJeworCQkJaWYgKHN0cmNtcChhLT52YXJOYW1lc1tpXSwgYi0+ dmFyTmFtZXNbaV0pICE9IDApCisJCQkJcmV0dXJuIGZhbHNlOworCQl9CisJfQorCisJLyogQ29t cGFyZSBlbGVtZW50cyBhcnJheSAqLworCWlmIChhLT5udW1FbGVtZW50cyA+IDApCisJeworCQlp ZiAoYS0+ZWxlbWVudHMgPT0gTlVMTCB8fCBiLT5lbGVtZW50cyA9PSBOVUxMKQorCQkJcmV0dXJu IGZhbHNlOworCQlpZiAobWVtY21wKGEtPmVsZW1lbnRzLCBiLT5lbGVtZW50cywKKwkJCQkgICBh LT5udW1FbGVtZW50cyAqIHNpemVvZihSUFJQYXR0ZXJuRWxlbWVudCkpICE9IDApCisJCQlyZXR1 cm4gZmFsc2U7CisJfQorCisJQ09NUEFSRV9TQ0FMQVJfRklFTEQoaXNBYnNvcmJhYmxlKTsKKwor CXJldHVybiB0cnVlOworfQorCiAvKgogICogTGlzdHMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5CiAg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IDQwOTkwMTQzOTI3Li5hYWNmOGU5ZjhjNyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rl cy9vdXRmdW5jcy5jCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAibm9kZXMvYml0bWFwc2V0 LmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZXMuaCIKICNpbmNsdWRlICJub2Rlcy9wZ19saXN0Lmgi CisjaW5jbHVkZSAibm9kZXMvcGxhbm5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIK IAogLyogU3RhdGUgZmxhZyB0aGF0IGRldGVybWluZXMgaG93IG5vZGVUb1N0cmluZ0ludGVybmFs KCkgc2hvdWxkIHRyZWF0IGxvY2F0aW9uIGZpZWxkcyAqLwpAQCAtNzE4LDYgKzcxOSw1NiBAQCBf b3V0QV9Db25zdChTdHJpbmdJbmZvIHN0ciwgY29uc3QgQV9Db25zdCAqbm9kZSkKIAlXUklURV9M T0NBVElPTl9GSUVMRChsb2NhdGlvbik7CiB9CiAKK3N0YXRpYyB2b2lkCitfb3V0UlBSUGF0dGVy bihTdHJpbmdJbmZvIHN0ciwgY29uc3QgUlBSUGF0dGVybiAqbm9kZSkKK3sKKwlXUklURV9OT0RF X1RZUEUoIlJQUlBBVFRFUk4iKTsKKworCVdSSVRFX0lOVF9GSUVMRChudW1WYXJzKTsKKwlXUklU RV9JTlRfRklFTEQobWF4RGVwdGgpOworCVdSSVRFX0lOVF9GSUVMRChudW1FbGVtZW50cyk7CisK KwkvKiBXcml0ZSB2YXJOYW1lcyBhcnJheSBhcyBsaXN0IG9mIHN0cmluZ3MgKi8KKwlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKHN0ciwgIiA6dmFyTmFtZXMiKTsKKwlpZiAobm9kZS0+bnVtVmFycyA+ IDAgJiYgbm9kZS0+dmFyTmFtZXMgIT0gTlVMTCkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoc3RyLCAiICgiKTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBub2RlLT5udW1WYXJzOyBpKysp CisJCXsKKwkJCWlmIChpID4gMCkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihzdHIsICcgJyk7 CisJCQlvdXRUb2tlbihzdHIsIG5vZGUtPnZhck5hbWVzW2ldKTsKKwkJfQorCQlhcHBlbmRTdHJp bmdJbmZvQ2hhcihzdHIsICcpJyk7CisJfQorCWVsc2UKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZyhzdHIsICIgPD4iKTsKKworCS8qIFdyaXRlIGVsZW1lbnRzIGFycmF5ICovCisJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZyhzdHIsICIgOmVsZW1lbnRzIik7CisJaWYgKG5vZGUtPm51bUVsZW1lbnRz ID4gMCAmJiBub2RlLT5lbGVtZW50cyAhPSBOVUxMKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb0No YXIoc3RyLCAnICcpOworCQlmb3IgKGludCBpID0gMDsgaSA8IG5vZGUtPm51bUVsZW1lbnRzOyBp KyspCisJCXsKKwkJCWNvbnN0IFJQUlBhdHRlcm5FbGVtZW50ICplbGVtID0gJm5vZGUtPmVsZW1l bnRzW2ldOworCisJCQlhcHBlbmRTdHJpbmdJbmZvKHN0ciwgIiglZCAlZCAldSAlZCAlZCAlZCAl ZCkiLAorCQkJCQkJCSAoaW50KSBlbGVtLT52YXJJZCwKKwkJCQkJCQkgKGludCkgZWxlbS0+ZGVw dGgsCisJCQkJCQkJICh1bnNpZ25lZCkgZWxlbS0+ZmxhZ3MsCisJCQkJCQkJIChpbnQpIGVsZW0t Pm1pbiwKKwkJCQkJCQkgKGludCkgZWxlbS0+bWF4LAorCQkJCQkJCSAoaW50KSBlbGVtLT5uZXh0 LAorCQkJCQkJCSAoaW50KSBlbGVtLT5qdW1wKTsKKwkJfQorCX0KKwllbHNlCisJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoc3RyLCAiIDw+Iik7CisKKwlXUklURV9CT09MX0ZJRUxEKGlzQWJzb3Ji YWJsZSk7Cit9CisKIAogLyoKICAqIG91dE5vZGUgLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv bm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCA5 ODFhYjljMzRlZi4uMDJiZTIxN2IxNjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL3Jl YWRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCkBAIC0yOCw2ICsy OCw3IEBACiAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9iaXRtYXBz ZXQuaCIKKyNpbmNsdWRlICJub2Rlcy9wbGFubm9kZXMuaCIKICNpbmNsdWRlICJub2Rlcy9yZWFk ZnVuY3MuaCIKIAogCkBAIC01NTgsNiArNTU5LDkwIEBAIF9yZWFkRXh0ZW5zaWJsZU5vZGUodm9p ZCkKIAlSRUFEX0RPTkUoKTsKIH0KIAorc3RhdGljIFJQUlBhdHRlcm4gKgorX3JlYWRSUFJQYXR0 ZXJuKHZvaWQpCit7CisJUkVBRF9MT0NBTFMoUlBSUGF0dGVybik7CisKKwlSRUFEX0lOVF9GSUVM RChudW1WYXJzKTsKKwlSRUFEX0lOVF9GSUVMRChtYXhEZXB0aCk7CisJUkVBRF9JTlRfRklFTEQo bnVtRWxlbWVudHMpOworCisJLyogUmVhZCB2YXJOYW1lcyBhcnJheSAqLworCXRva2VuID0gcGdf c3RydG9rKCZsZW5ndGgpOyAvKiBza2lwIDp2YXJOYW1lcyAqLworCXRva2VuID0gcGdfc3RydG9r KCZsZW5ndGgpOyAvKiBnZXQgJygnIG9yICc8PicgKi8KKwlpZiAobG9jYWxfbm9kZS0+bnVtVmFy cyA+IDAgJiYgdG9rZW5bMF0gPT0gJygnKQorCXsKKwkJbG9jYWxfbm9kZS0+dmFyTmFtZXMgPSBw YWxsb2MobG9jYWxfbm9kZS0+bnVtVmFycyAqIHNpemVvZihjaGFyICopKTsKKwkJZm9yIChpbnQg aSA9IDA7IGkgPCBsb2NhbF9ub2RlLT5udW1WYXJzOyBpKyspCisJCXsKKwkJCXRva2VuID0gcGdf c3RydG9rKCZsZW5ndGgpOworCQkJbG9jYWxfbm9kZS0+dmFyTmFtZXNbaV0gPSBkZWJhY2tzbGFz aCh0b2tlbiwgbGVuZ3RoKTsKKwkJfQorCQl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsgLyog c2tpcCAnKScgKi8KKwl9CisJZWxzZQorCXsKKwkJbG9jYWxfbm9kZS0+dmFyTmFtZXMgPSBOVUxM OworCX0KKworCS8qIFJlYWQgZWxlbWVudHMgYXJyYXkgKi8KKwl0b2tlbiA9IHBnX3N0cnRvaygm bGVuZ3RoKTsgLyogc2tpcCA6ZWxlbWVudHMgKi8KKwl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3Ro KTsgLyogZ2V0ICcoJyBvciAnPD4nICovCisJaWYgKGxvY2FsX25vZGUtPm51bUVsZW1lbnRzID4g MCAmJiB0b2tlblswXSA9PSAnKCcpCisJeworCQlsb2NhbF9ub2RlLT5lbGVtZW50cyA9IHBhbGxv YzAobG9jYWxfbm9kZS0+bnVtRWxlbWVudHMgKiBzaXplb2YoUlBSUGF0dGVybkVsZW1lbnQpKTsK KwkJZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhbF9ub2RlLT5udW1FbGVtZW50czsgaSsrKQorCQl7 CisJCQlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSA9ICZsb2NhbF9ub2RlLT5lbGVtZW50c1tpXTsK KwkJCWludAkJCXZhcklkLAorCQkJCQkJZmxhZ3MsCisJCQkJCQlkZXB0aCwKKwkJCQkJCW1pbiwK KwkJCQkJCW1heCwKKwkJCQkJCW5leHQsCisJCQkJCQlqdW1wOworCisJCQkvKiBQYXJzZSAiKHZh cklkIGRlcHRoIGZsYWdzIG1pbiBtYXggbmV4dCBqdW1wKSIgKi8KKwkJCXRva2VuID0gcGdfc3Ry dG9rKCZsZW5ndGgpOworCQkJdmFySWQgPSBhdG9pKHRva2VuKTsKKwkJCXRva2VuID0gcGdfc3Ry dG9rKCZsZW5ndGgpOworCQkJZGVwdGggPSBhdG9pKHRva2VuKTsKKwkJCXRva2VuID0gcGdfc3Ry dG9rKCZsZW5ndGgpOworCQkJZmxhZ3MgPSBhdG9pKHRva2VuKTsKKwkJCXRva2VuID0gcGdfc3Ry dG9rKCZsZW5ndGgpOworCQkJbWluID0gYXRvaSh0b2tlbik7CisJCQl0b2tlbiA9IHBnX3N0cnRv aygmbGVuZ3RoKTsKKwkJCW1heCA9IGF0b2kodG9rZW4pOworCQkJdG9rZW4gPSBwZ19zdHJ0b2so Jmxlbmd0aCk7CisJCQluZXh0ID0gYXRvaSh0b2tlbik7CisJCQl0b2tlbiA9IHBnX3N0cnRvaygm bGVuZ3RoKTsKKwkJCWp1bXAgPSBhdG9pKHRva2VuKTsKKwkJCXRva2VuID0gcGdfc3RydG9rKCZs ZW5ndGgpOyAvKiBza2lwICcpJyAqLworCisJCQllbGVtLT52YXJJZCA9IChSUFJWYXJJZCkgdmFy SWQ7CisJCQllbGVtLT5mbGFncyA9IChSUFJFbGVtRmxhZ3MpIGZsYWdzOworCQkJZWxlbS0+ZGVw dGggPSAoUlBSRGVwdGgpIGRlcHRoOworCQkJZWxlbS0+bWluID0gKFJQUlF1YW50aXR5KSBtaW47 CisJCQllbGVtLT5tYXggPSAoUlBSUXVhbnRpdHkpIG1heDsKKwkJCWVsZW0tPm5leHQgPSAoUlBS RWxlbUlkeCkgbmV4dDsKKwkJCWVsZW0tPmp1bXAgPSAoUlBSRWxlbUlkeCkganVtcDsKKworCQkJ LyogUmVhZCBuZXh0IGVsZW1lbnQncyAnKCcgb3IgZW5kICovCisJCQlpZiAoaSA8IGxvY2FsX25v ZGUtPm51bUVsZW1lbnRzIC0gMSkKKwkJCQl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsgLyog Z2V0ICcoJyAqLworCQl9CisJfQorCWVsc2UKKwl7CisJCWxvY2FsX25vZGUtPmVsZW1lbnRzID0g TlVMTDsKKwl9CisKKwlSRUFEX0JPT0xfRklFTEQoaXNBYnNvcmJhYmxlKTsKKworCVJFQURfRE9O RSgpOworfQorCiAKIC8qCiAgKiBwYXJzZU5vZGVTdHJpbmcKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZQppbmRleCA4 YzBmZTI4ZDYzZi4uZjRjN2Q2MDVmZTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9N YWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvTWFrZWZpbGUKQEAgLTI5LDYgKzI5LDcg QEAgT0JKUyA9IFwKIAlwYXJzZV9vcGVyLm8gXAogCXBhcnNlX3BhcmFtLm8gXAogCXBhcnNlX3Jl bGF0aW9uLm8gXAorCXBhcnNlX3Jwci5vIFwKIAlwYXJzZV90YXJnZXQubyBcCiAJcGFyc2VfdHlw ZS5vIFwKIAlwYXJzZV91dGlsY21kLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L1JFQURNRSBiL3NyYy9iYWNrZW5kL3BhcnNlci9SRUFETUUKaW5kZXggZTI2ZWI0MzdhOWYuLjJi YWZmYTk1MTdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvUkVBRE1FCisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9SRUFETUUKQEAgLTI2LDYgKzI2LDcgQEAgcGFyc2Vfbm9kZS5jCWNy ZWF0ZSBub2RlcyBmb3IgdmFyaW91cyBzdHJ1Y3R1cmVzCiBwYXJzZV9vcGVyLmMJaGFuZGxlIG9w ZXJhdG9ycyBpbiBleHByZXNzaW9ucwogcGFyc2VfcGFyYW0uYwloYW5kbGUgUGFyYW1zIChmb3Ig dGhlIGNhc2VzIHVzZWQgaW4gdGhlIGNvcmUgYmFja2VuZCkKIHBhcnNlX3JlbGF0aW9uLmMgc3Vw cG9ydCByb3V0aW5lcyBmb3IgdGFibGVzIGFuZCBjb2x1bW4gaGFuZGxpbmcKK3BhcnNlX3Jwci5j CSAgICBoYW5kbGUgUm93IFBhdHRlcm4gUmVjb2duaXRpb24KIHBhcnNlX3RhcmdldC5jCWhhbmRs ZSB0aGUgcmVzdWx0IGxpc3Qgb2YgdGhlIHF1ZXJ5CiBwYXJzZV90eXBlLmMJc3VwcG9ydCByb3V0 aW5lcyBmb3IgZGF0YSB0eXBlIGhhbmRsaW5nCiBwYXJzZV91dGlsY21kLmMJcGFyc2UgYW5hbHlz aXMgZm9yIHV0aWxpdHkgY29tbWFuZHMgKGRvbmUgYXQgZXhlY3V0aW9uIHRpbWUpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9wYXJzZXIv bWVzb24uYnVpbGQKaW5kZXggOTI0ZWU4N2E0NTMuLmEwNzEwMmIzN2EwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wYXJzZXIvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL21l c29uLmJ1aWxkCkBAIC0xNiw2ICsxNiw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAg J3BhcnNlX29wZXIuYycsCiAgICdwYXJzZV9wYXJhbS5jJywKICAgJ3BhcnNlX3JlbGF0aW9uLmMn LAorICAncGFyc2VfcnByLmMnLAogICAncGFyc2VfdGFyZ2V0LmMnLAogICAncGFyc2VfdHlwZS5j JywKICAgJ3BhcnNlX3V0aWxjbWQuYycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfYWdnLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKaW5kZXggMjVlZTBm ODdkOTMuLjVlZDc4NWVhMGQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf YWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCkBAIC01ODQsNiArNTg0 LDEwIEBAIGNoZWNrX2FnZ2xldmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRl LCBOb2RlICpleHByKQogCQkJZXJya2luZCA9IHRydWU7CiAJCQlicmVhazsKIAorCQljYXNlIEVY UFJfS0lORF9SUFJfREVGSU5FOgorCQkJZXJya2luZCA9IHRydWU7CisJCQlicmVhazsKKwogCQkJ LyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBz byB0aGF0IHRoZQogCQkJICogY29tcGlsZXIgd2lsbCB3YXJuIGlmIHdlIGFkZCBhIG5ldyBQYXJz ZUV4cHJLaW5kIHdpdGhvdXQKQEAgLTEwMjMsNiArMTAyNyw5IEBAIHRyYW5zZm9ybVdpbmRvd0Z1 bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93RnVuYyAqd2Z1bmMsCiAJCWNhc2UgRVhQ Ul9LSU5EX0NZQ0xFX01BUks6CiAJCQllcnJraW5kID0gdHJ1ZTsKIAkJCWJyZWFrOworCQljYXNl IEVYUFJfS0lORF9SUFJfREVGSU5FOgorCQkJZXJya2luZCA9IHRydWU7CisJCQlicmVhazsKIAog CQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJl LCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVz ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCmluZGV4IDA2YjY1ZDRhNjA1 Li5iMzBjMjI5MzNlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVz ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYwpAQCAtMzcsNiArMzcs NyBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9mdW5jLmgiCiAjaW5jbHVkZSAicGFyc2VyL3Bh cnNlX29wZXIuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKKyNpbmNsdWRl ICJwYXJzZXIvcGFyc2VfcnByLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3RhcmdldC5oIgog I2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5o IgpAQCAtODQsOCArODUsNiBAQCBzdGF0aWMgdm9pZCBjaGVja0V4cHJJc1ZhckZyZWUoUGFyc2VT dGF0ZSAqcHN0YXRlLCBOb2RlICpuLAogCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmNvbnN0cnVjdE5h bWUpOwogc3RhdGljIFRhcmdldEVudHJ5ICpmaW5kVGFyZ2V0bGlzdEVudHJ5U1FMOTIoUGFyc2VT dGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJCQkJCQkJCQkgTGlzdCAqKnRsaXN0LCBQYXJz ZUV4cHJLaW5kIGV4cHJLaW5kKTsKLXN0YXRpYyBUYXJnZXRFbnRyeSAqZmluZFRhcmdldGxpc3RF bnRyeVNRTDk5KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbm9kZSwKLQkJCQkJCQkJCQkJIExp c3QgKip0bGlzdCwgUGFyc2VFeHByS2luZCBleHByS2luZCk7CiBzdGF0aWMgaW50CWdldF9tYXRj aGluZ19sb2NhdGlvbihpbnQgc29ydGdyb3VwcmVmLAogCQkJCQkJCQkgIExpc3QgKnNvcnRncm91 cHJlZnMsIExpc3QgKmV4cHJzKTsKIHN0YXRpYyBMaXN0ICpyZXNvbHZlX3VuaXF1ZV9pbmRleF9l eHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSW5mZXJDbGF1c2UgKmluZmVyLApAQCAtOTcsNyArOTYs NiBAQCBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtRnJhbWVPZmZzZXQoUGFyc2VTdGF0ZSAqcHN0YXRl LCBpbnQgZnJhbWVPcHRpb25zLAogCQkJCQkJCQkgIE9pZCByYW5nZW9wZmFtaWx5LCBPaWQgcmFu Z2VvcGNpbnR5cGUsIE9pZCAqaW5SYW5nZUZ1bmMsCiAJCQkJCQkJCSAgTm9kZSAqY2xhdXNlKTsK IAotCiAvKgogICogdHJhbnNmb3JtRnJvbUNsYXVzZSAtCiAgKgkgIFByb2Nlc3MgdGhlIEZST00g Y2xhdXNlIGFuZCBhZGQgaXRlbXMgdG8gdGhlIHF1ZXJ5J3MgcmFuZ2UgdGFibGUsCkBAIC0yMTY4 LDcgKzIxNjYsNyBAQCBmaW5kVGFyZ2V0bGlzdEVudHJ5U1FMOTIoUGFyc2VTdGF0ZSAqcHN0YXRl LCBOb2RlICpub2RlLCBMaXN0ICoqdGxpc3QsCiAgKiB0bGlzdAl0aGUgdGFyZ2V0IGxpc3QgKHBh c3NlZCBieSByZWZlcmVuY2Ugc28gd2UgY2FuIGFwcGVuZCB0byBpdCkKICAqIGV4cHJLaW5kIGlk ZW50aWZpZXMgY2xhdXNlIHR5cGUgYmVpbmcgcHJvY2Vzc2VkCiAgKi8KLXN0YXRpYyBUYXJnZXRF bnRyeSAqCitUYXJnZXRFbnRyeSAqCiBmaW5kVGFyZ2V0bGlzdEVudHJ5U1FMOTkoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBOb2RlICpub2RlLCBMaXN0ICoqdGxpc3QsCiAJCQkJCQkgUGFyc2VFeHByS2lu ZCBleHByS2luZCkKIHsKQEAgLTMwMTksNiArMzAxNywxMCBAQCB0cmFuc2Zvcm1XaW5kb3dEZWZp bml0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJCSByYW5nZW9wZmFtaWx5LCBy YW5nZW9wY2ludHlwZSwKIAkJCQkJCQkJCQkJICZ3Yy0+ZW5kSW5SYW5nZUZ1bmMsCiAJCQkJCQkJ CQkJCSB3aW5kZWYtPmVuZE9mZnNldCk7CisKKwkJLyogUHJvY2VzcyBSb3cgUGF0dGVybiBSZWNv Z25pdGlvbiByZWxhdGVkIGNsYXVzZXMgKi8KKwkJdHJhbnNmb3JtUlBSKHBzdGF0ZSwgd2MsIHdp bmRlZiwgdGFyZ2V0bGlzdCk7CisKIAkJd2MtPndpbnJlZiA9IHdpbnJlZjsKIAogCQlyZXN1bHQg PSBsYXBwZW5kKHJlc3VsdCwgd2MpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggZGNmZTFh Y2M0YzMuLjIxOTY4MWQ2ZTg4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf ZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTU3Nyw2ICs1 NzcsNyBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYg KmNyZWYpCiAJCWNhc2UgRVhQUl9LSU5EX0NPUFlfV0hFUkU6CiAJCWNhc2UgRVhQUl9LSU5EX0dF TkVSQVRFRF9DT0xVTU46CiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CisJCWNhc2UgRVhQ Ul9LSU5EX1JQUl9ERUZJTkU6CiAJCQkvKiBva2F5ICovCiAJCQlicmVhazsKIApAQCAtMTg3MSw2 ICsxODcyLDkgQEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1Ykxpbmsg KnN1YmxpbmspCiAJCWNhc2UgRVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xVTU46CiAJCQllcnIgPSBf KCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIGNvbHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Npb24iKTsK IAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9SUFJfREVGSU5FOgorCQkJZXJyID0gXygiY2Fu bm90IHVzZSBzdWJxdWVyeSBpbiBERUZJTkUgZXhwcmVzc2lvbiIpOworCQkJYnJlYWs7CiAKIAkJ CS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwg c28gdGhhdCB0aGUKQEAgLTMyMzAsNiArMzIzNCw4IEBAIFBhcnNlRXhwcktpbmROYW1lKFBhcnNl RXhwcktpbmQgZXhwcktpbmQpCiAJCQlyZXR1cm4gIkdFTkVSQVRFRCBBUyI7CiAJCWNhc2UgRVhQ Ul9LSU5EX0NZQ0xFX01BUks6CiAJCQlyZXR1cm4gIkNZQ0xFIjsKKwkJY2FzZSBFWFBSX0tJTkRf UlBSX0RFRklORToKKwkJCXJldHVybiAiREVGSU5FIjsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlz IGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9mdW5jLmMKaW5kZXggMjRmNjc0NTkyM2IuLjM1N2IyMzZhODE4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9mdW5jLmMKQEAgLTI3ODMsNiArMjc4Myw5IEBAIGNoZWNrX3NyZl9jYWxsX3BsYWNl bWVudChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmxhc3Rfc3JmLCBpbnQgbG9jYXRpb24pCiAJ CWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQllcnJraW5kID0gdHJ1ZTsKIAkJCWJyZWFr OworCQljYXNlIEVYUFJfS0lORF9SUFJfREVGSU5FOgorCQkJZXJya2luZCA9IHRydWU7CisJCQli cmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDog Y2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3Jwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45ZTFmYTIyODc1OQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYwpAQCAtMCwwICsxLDM2NyBAQAorLyotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgorICogcGFyc2VfcnByLmMKKyAqCSAgSGFuZGxlIFJvdyBQYXR0ZXJu IFJlY29nbml0aW9uIGNsYXVzZXMgaW4gcGFyc2VyLgorICoKKyAqIFRoaXMgZmlsZSB0cmFuc2Zv cm1zIFJQUi1yZWxhdGVkIGNsYXVzZXMgZnJvbSByYXcgcGFyc2UgdHJlZSB0byBwbGFubmVyCisg KiBzdHJ1Y3R1cmVzIGR1cmluZyBxdWVyeSBhbmFseXNpczoKKyAqICAgLSBWYWxpZGF0ZXMgZnJh bWUgb3B0aW9ucyAobXVzdCBzdGFydCBhdCBDVVJSRU5UIFJPVywgbm8gRVhDTFVERSkKKyAqICAg LSBWYWxpZGF0ZXMgUEFUVEVSTiB2YXJpYWJsZSBjb3VudCAobWF4IFJQUl9WQVJJRF9NQVgpCisg KiAgIC0gVHJhbnNmb3JtcyBERUZJTkUgY2xhdXNlIGludG8gVGFyZ2V0RW50cnkgbGlzdAorICog ICAtIFN0b3JlcyBQQVRURVJOL1NLSVAgVE8vSU5JVElBTCBjbGF1c2VzIGZvciBwbGFubmVyCisg KgorICogUGF0dGVybiBvcHRpbWl6YXRpb24gYW5kIGNvbXBpbGF0aW9uIHRvIE5GQSBieXRlY29k ZSBoYXBwZW5zIGxhdGVyCisgKiBpbiB0aGUgcGxhbm5lciAoc2VlIG9wdGltaXplci9wbGFuL3Jw ci5jKS4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5 NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICoKKyAqIElE RU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYworICoKKyAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVk ZSAibm9kZXMvbWFrZWZ1bmNzLmgiCisjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5j bHVkZSAib3B0aW1pemVyL3Jwci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jbGF1c2UuaCIK KyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29sbGF0ZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJz ZV9jb2VyY2UuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZXhwci5oIgorI2luY2x1ZGUgInBh cnNlci9wYXJzZV9ycHIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdGFyZ2V0LmgiCisKKy8q IEZvcndhcmQgZGVjbGFyYXRpb25zICovCitzdGF0aWMgdm9pZCB2YWxpZGF0ZVJQUlBhdHRlcm5W YXJDb3VudChQYXJzZVN0YXRlICpwc3RhdGUsIFJQUlBhdHRlcm5Ob2RlICpub2RlLAorCQkJCQkJ CQkJICAgTGlzdCAqKnZhck5hbWVzKTsKK3N0YXRpYyBMaXN0ICp0cmFuc2Zvcm1EZWZpbmVDbGF1 c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dDbGF1c2UgKndjLAorCQkJCQkJCQkgICBXaW5k b3dEZWYgKndpbmRlZiwgTGlzdCAqKnRhcmdldGxpc3QpOworCisvKgorICogdHJhbnNmb3JtUlBS CisgKgkJUHJvY2VzcyBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiByZWxhdGVkIGNsYXVzZXMuCisg KgorICogVmFsaWRhdGVzIGFuZCB0cmFuc2Zvcm1zIFJQUiBjbGF1c2VzIGZyb20gcGFyc2UgdHJl ZSB0byBwbGFubmVyIHN0cnVjdHVyZXM6CisgKiAgIC0gVmFsaWRhdGVzIGZyYW1lIG9wdGlvbnMg KG11c3Qgc3RhcnQgYXQgQ1VSUkVOVCBST1csIG5vIEVYQ0xVREUpCisgKiAgIC0gU3RvcmVzIEFG VEVSIE1BVENIIFNLSVAgVE8gY2xhdXNlCisgKiAgIC0gU3RvcmVzIFNFRUsvSU5JVElBTCBjbGF1 c2UKKyAqICAgLSBUcmFuc2Zvcm1zIERFRklORSBjbGF1c2UgaW50byBUYXJnZXRFbnRyeSBsaXN0 CisgKiAgIC0gU3RvcmVzIFBBVFRFUk4gQVNUIGZvciBkZXBhcnNpbmcgKG9wdGltaXphdGlvbiBo YXBwZW5zIGluIHBsYW5uZXIpCisgKgorICogUmV0dXJucyBlYXJseSBpZiB3aW5kZWYgaGFzIG5v IHJwQ29tbW9uU3ludGF4IChub24tUlBSIHdpbmRvdykuCisgKi8KK3ZvaWQKK3RyYW5zZm9ybVJQ UihQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRvd0RlZiAqd2luZGVm LAorCQkJIExpc3QgKip0YXJnZXRsaXN0KQoreworCS8qIFdpbmRvdyBkZWZpbml0aW9uIG11c3Qg ZXhpc3Qgd2hlbiBjYWxsZWQgKi8KKwlBc3NlcnQod2luZGVmICE9IE5VTEwpOworCisJLyoKKwkg KiBSb3cgUGF0dGVybiBDb21tb24gU3ludGF4IGNsYXVzZSBleGlzdHM/CisJICovCisJaWYgKHdp bmRlZi0+cnBDb21tb25TeW50YXggPT0gTlVMTCkKKwkJcmV0dXJuOworCisJLyogQ2hlY2sgRnJh bWUgb3B0aW9ucyAqLworCisJLyogRnJhbWUgdHlwZSBtdXN0IGJlICJST1ciICovCisJaWYgKHdj LT5mcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9HUk9VUFMpCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCSBlcnJtc2coIkZSQU1FIG9w dGlvbiBHUk9VUCBpcyBub3QgcGVybWl0dGVkIHdoZW4gcm93IHBhdHRlcm4gcmVjb2duaXRpb24g aXMgdXNlZCIpLAorCQkJCSBlcnJoaW50KCJVc2U6IFJPV1MgaW5zdGVhZCIpLAorCQkJCSBwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLAorCQkJCQkJCQkJd2luZGVmLT5mcmFtZUxvY2F0aW9uID49 IDAgPworCQkJCQkJCQkJd2luZGVmLT5mcmFtZUxvY2F0aW9uIDogd2luZGVmLT5sb2NhdGlvbikp KTsKKwlpZiAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX1JBTkdFKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkgZXJybXNn KCJGUkFNRSBvcHRpb24gUkFOR0UgaXMgbm90IHBlcm1pdHRlZCB3aGVuIHJvdyBwYXR0ZXJuIHJl Y29nbml0aW9uIGlzIHVzZWQiKSwKKwkJCQkgZXJyaGludCgiVXNlOiBST1dTIGluc3RlYWQiKSwK KwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwKKwkJCQkJCQkJCXdpbmRlZi0+ZnJhbWVM b2NhdGlvbiA+PSAwID8KKwkJCQkJCQkJCXdpbmRlZi0+ZnJhbWVMb2NhdGlvbiA6IHdpbmRlZi0+ bG9jYXRpb24pKSk7CisKKwkvKiBGcmFtZSBtdXN0IHN0YXJ0IGF0IGN1cnJlbnQgcm93ICovCisJ aWYgKCh3Yy0+ZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fU1RBUlRfQ1VSUkVOVF9ST1cpID09 IDApCisJeworCQljb25zdCBjaGFyICpmcmFtZVR5cGUgPSAiUk9XUyI7CisJCWNvbnN0IGNoYXIg KnN0YXJ0Qm91bmQgPSAidW5rbm93biI7CisKKwkJLyogRGV0ZXJtaW5lIGN1cnJlbnQgc3RhcnQg Ym91bmQgKi8KKwkJaWYgKHdjLT5mcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9TVEFSVF9VTkJP VU5ERURfUFJFQ0VESU5HKQorCQkJc3RhcnRCb3VuZCA9ICJVTkJPVU5ERUQgUFJFQ0VESU5HIjsK KwkJZWxzZSBpZiAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX1NUQVJUX09GRlNFVF9Q UkVDRURJTkcpCisJCQlzdGFydEJvdW5kID0gIm9mZnNldCBQUkVDRURJTkciOworCQllbHNlIGlm ICh3Yy0+ZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fU1RBUlRfT0ZGU0VUX0ZPTExPV0lORykK KwkJCXN0YXJ0Qm91bmQgPSAib2Zmc2V0IEZPTExPV0lORyI7CisKKwkJLyogQXQgbGVhc3Qgb25l IHZhbGlkIGZyYW1lIHN0YXJ0IG9wdGlvbiBzaG91bGQgYmUgc2V0ICovCisJCUFzc2VydCgod2Mt PmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX1NUQVJUX1VOQk9VTkRFRF9QUkVDRURJTkcpIHx8 CisJCQkgICAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX1NUQVJUX09GRlNFVF9QUkVD RURJTkcpIHx8CisJCQkgICAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX1NUQVJUX09G RlNFVF9GT0xMT1dJTkcpKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKKwkJCQkgZXJybXNnKCJGUkFNRSBtdXN0IHN0YXJ0IGF0IENVUlJF TlQgUk9XIHdoZW4gcm93IHBhdHRlcm4gcmVjb2duaXRpb24gaXMgdXNlZCIpLAorCQkJCSBlcnJk ZXRhaWwoIkN1cnJlbnQgZnJhbWUgc3RhcnRzIHdpdGggJXMuIiwgc3RhcnRCb3VuZCksCisJCQkJ IGVycmhpbnQoIlVzZTogJXMgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgLi4uIiwgZnJhbWVUeXBl KSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgd2luZGVmLT5mcmFtZUxvY2F0aW9u ID49IDAgPyB3aW5kZWYtPmZyYW1lTG9jYXRpb24gOiB3aW5kZWYtPmxvY2F0aW9uKSkpOworCX0K KworCS8qIEVYQ0xVREUgb3B0aW9ucyBhcmUgbm90IHBlcm1pdHRlZCAqLworCWlmICgod2MtPmZy YW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX0VYQ0xVU0lPTikgIT0gMCkKKwl7CisJCWNvbnN0IGNo YXIgKmV4Y2x1ZGVUeXBlID0gIkVYQ0xVREUiOworCisJCS8qIERldGVybWluZSB3aGljaCBFWENM VURFIG9wdGlvbiB3YXMgdXNlZCAqLworCQlpZiAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BU SU9OX0VYQ0xVREVfQ1VSUkVOVF9ST1cpCisJCQlleGNsdWRlVHlwZSA9ICJFWENMVURFIENVUlJF TlQgUk9XIjsKKwkJZWxzZSBpZiAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX0VYQ0xV REVfR1JPVVApCisJCQlleGNsdWRlVHlwZSA9ICJFWENMVURFIEdST1VQIjsKKwkJZWxzZSBpZiAo d2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX0VYQ0xVREVfVElFUykKKwkJCWV4Y2x1ZGVU eXBlID0gIkVYQ0xVREUgVElFUyI7CisKKwkJLyogQXQgbGVhc3Qgb25lIHZhbGlkIGV4Y2x1ZGUg b3B0aW9uIHNob3VsZCBiZSBzZXQgKi8KKwkJQXNzZXJ0KCh3Yy0+ZnJhbWVPcHRpb25zICYgRlJB TUVPUFRJT05fRVhDTFVERV9DVVJSRU5UX1JPVykgfHwKKwkJCSAgICh3Yy0+ZnJhbWVPcHRpb25z ICYgRlJBTUVPUFRJT05fRVhDTFVERV9HUk9VUCkgfHwKKwkJCSAgICh3Yy0+ZnJhbWVPcHRpb25z ICYgRlJBTUVPUFRJT05fRVhDTFVERV9USUVTKSk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZygiRVhDTFVERSBvcHRp b25zIGFyZSBub3QgcGVybWl0dGVkIHdoZW4gcm93IHBhdHRlcm4gcmVjb2duaXRpb24gaXMgdXNl ZCIpLAorCQkJCSBlcnJkZXRhaWwoIkZyYW1lIGRlZmluaXRpb24gaW5jbHVkZXMgJXMuIiwgZXhj bHVkZVR5cGUpLAorCQkJCSBlcnJoaW50KCJSZW1vdmUgdGhlIEVYQ0xVREUgY2xhdXNlIGZyb20g dGhlIHdpbmRvdyBkZWZpbml0aW9uLiIpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCB3aW5kZWYtPmV4Y2x1ZGVMb2NhdGlvbiA+PSAwID8gd2luZGVmLT5leGNsdWRlTG9jYXRpb24g OiB3aW5kZWYtPmxvY2F0aW9uKSkpOworCX0KKworCS8qIFRyYW5zZm9ybSBBRlRFUiBNQVRDSCBT S0lQIFRPIGNsYXVzZSAqLworCXdjLT5ycFNraXBUbyA9IHdpbmRlZi0+cnBDb21tb25TeW50YXgt PnJwU2tpcFRvOworCisJLyogVHJhbnNmb3JtIFNFRUsgb3IgSU5JVElBTCBjbGF1c2UgKi8KKwl3 Yy0+aW5pdGlhbCA9IHdpbmRlZi0+cnBDb21tb25TeW50YXgtPmluaXRpYWw7CisKKwkvKiBUcmFu c2Zvcm0gREVGSU5FIGNsYXVzZSBpbnRvIGxpc3Qgb2YgVGFyZ2V0RW50cnkncyAqLworCXdjLT5k ZWZpbmVDbGF1c2UgPSB0cmFuc2Zvcm1EZWZpbmVDbGF1c2UocHN0YXRlLCB3Yywgd2luZGVmLCB0 YXJnZXRsaXN0KTsKKworCS8qIFN0b3JlIFBBVFRFUk4gQVNUIGZvciBkZXBhcnNpbmcgKi8KKwl3 Yy0+cnBQYXR0ZXJuID0gd2luZGVmLT5ycENvbW1vblN5bnRheC0+cnBQYXR0ZXJuOworfQorCisv KgorICogdmFsaWRhdGVSUFJQYXR0ZXJuVmFyQ291bnQKKyAqCQlWYWxpZGF0ZSB0aGF0IFBBVFRF Uk4gdmFyaWFibGVzIGRvbid0IGV4Y2VlZCBSUFJfVkFSSURfTUFYLgorICoKKyAqIFJlY3Vyc2l2 ZWx5IHRyYXZlcnNlcyB0aGUgcGF0dGVybiB0cmVlLCBjb2xsZWN0aW5nIHVuaXF1ZSB2YXJpYWJs ZSBuYW1lcy4KKyAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgbnVtYmVyIG9mIHVuaXF1ZSB2YXJp YWJsZXMgZXhjZWVkcyBSUFJfVkFSSURfTUFYLgorICoKKyAqIHZhck5hbWVzIGlzIGJvdGggaW5w dXQgYW5kIG91dHB1dDogZXhpc3RpbmcgbmFtZXMgYXJlIHByZXNlcnZlZCwgbmV3IG9uZXMgYWRk ZWQuCisgKi8KK3N0YXRpYyB2b2lkCit2YWxpZGF0ZVJQUlBhdHRlcm5WYXJDb3VudChQYXJzZVN0 YXRlICpwc3RhdGUsIFJQUlBhdHRlcm5Ob2RlICpub2RlLAorCQkJCQkJICAgTGlzdCAqKnZhck5h bWVzKQoreworCUxpc3RDZWxsICAgKmxjOworCisJLyogUGF0dGVybiBub2RlIG11c3QgZXhpc3Qg LSBwYXJzZXIgYWx3YXlzIHByb3ZpZGVzIG5vbi1OVUxMIHJvb3QgKi8KKwlBc3NlcnQobm9kZSAh PSBOVUxMKTsKKworCXN3aXRjaCAobm9kZS0+bm9kZVR5cGUpCisJeworCQljYXNlIFJQUl9QQVRU RVJOX1ZBUjoKKwkJCS8qIEFkZCB2YXJpYWJsZSBuYW1lIGlmIG5vdCBhbHJlYWR5IGluIGxpc3Qg Ki8KKwkJCXsKKwkJCQlib29sCQlmb3VuZCA9IGZhbHNlOworCisJCQkJZm9yZWFjaChsYywgKnZh ck5hbWVzKQorCQkJCXsKKwkJCQkJaWYgKHN0cmNtcChzdHJWYWwobGZpcnN0KGxjKSksIG5vZGUt PnZhck5hbWUpID09IDApCisJCQkJCXsKKwkJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJCWJyZWFr OworCQkJCQl9CisJCQkJfQorCQkJCWlmICghZm91bmQpCisJCQkJeworCQkJCQkvKiBDaGVjayBh Z2FpbnN0IFJQUl9WQVJJRF9NQVggYmVmb3JlIGFkZGluZyAqLworCQkJCQlpZiAobGlzdF9sZW5n dGgoKnZhck5hbWVzKSA+PSBSUFJfVkFSSURfTUFYKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VFREVEKSwKKwkJCQkJCQkJ IGVycm1zZygidG9vIG1hbnkgcGF0dGVybiB2YXJpYWJsZXMiKSwKKwkJCQkJCQkJIGVycmRldGFp bCgiTWF4aW11bSBpcyAlZC4iLCBSUFJfVkFSSURfTUFYKSwKKwkJCQkJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsCisJCQkJCQkJCQkJCQkJZXhwckxvY2F0aW9uKChOb2RlICopIG5vZGUp KSkpOworCisJCQkJCSp2YXJOYW1lcyA9IGxhcHBlbmQoKnZhck5hbWVzLCBtYWtlU3RyaW5nKHBz dHJkdXAobm9kZS0+dmFyTmFtZSkpKTsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKworCQljYXNl IFJQUl9QQVRURVJOX1NFUToKKwkJY2FzZSBSUFJfUEFUVEVSTl9BTFQ6CisJCWNhc2UgUlBSX1BB VFRFUk5fR1JPVVA6CisJCQkvKiBSZWN1cnNlIGludG8gY2hpbGRyZW4gKi8KKwkJCWZvcmVhY2go bGMsIG5vZGUtPmNoaWxkcmVuKQorCQkJeworCQkJCXZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50 KHBzdGF0ZSwgKFJQUlBhdHRlcm5Ob2RlICopIGxmaXJzdChsYyksCisJCQkJCQkJCQkJICAgdmFy TmFtZXMpOworCQkJfQorCQkJYnJlYWs7CisJfQorfQorCisvKgorICogdHJhbnNmb3JtRGVmaW5l Q2xhdXNlCisgKgkJUHJvY2VzcyBERUZJTkUgY2xhdXNlIGFuZCB0cmFuc2Zvcm0gUmVzVGFyZ2V0 IGludG8gbGlzdCBvZiBUYXJnZXRFbnRyeS4KKyAqCisgKiBGb3IgZWFjaCBERUZJTkUgdmFyaWFi bGU6CisgKiAgIDEuIFZhbGlkYXRlcyBQQVRURVJOIHZhcmlhYmxlIGNvdW50IHZpYSB2YWxpZGF0 ZVJQUlBhdHRlcm5WYXJDb3VudAorICogICAyLiBDaGVja3MgZm9yIGR1cGxpY2F0ZSB2YXJpYWJs ZSBuYW1lcyBpbiBERUZJTkUgY2xhdXNlCisgKiAgIDMuIFRyYW5zZm9ybXMgZXhwcmVzc2lvbnMg YW5kIGFkZHMgdG8gdGFyZ2V0bGlzdCB2aWEgZmluZFRhcmdldGxpc3RFbnRyeVNRTDk5CisgKiAg IDQuIENyZWF0ZXMgZGVmaW5lQ2xhdXNlIGVudHJ5IHdpdGggcHJvcGVyIHJlc25hbWUgKHBhdHRl cm4gdmFyaWFibGUgbmFtZSkKKyAqICAgNS4gQ29lcmNlcyBleHByZXNzaW9ucyB0byBib29sZWFu IHR5cGUKKyAqICAgNi4gTWFya3MgY29sdW1uIG9yaWdpbnMgYW5kIGFzc2lnbnMgY29sbGF0aW9u IGluZm9ybWF0aW9uCisgKgorICogTm90ZTogVmFyaWFibGVzIG5vdCBpbiBERUZJTkUgYXJlIGV2 YWx1YXRlZCBhcyBUUlVFIGJ5IHRoZSBleGVjdXRvci4KKyAqIFZhcmlhYmxlcyBpbiBERUZJTkUg YnV0IG5vdCBpbiBQQVRURVJOIGFyZSBmaWx0ZXJlZCBvdXQgYnkgdGhlIHBsYW5uZXIuCisgKgor ICogWFhYIHdlIG9ubHkgc3VwcG9ydCBjb2x1bW4gcmVmZXJlbmNlIGluIHJvdyBwYXR0ZXJuIGRl ZmluaXRpb24gc2VhcmNoCisgKiBjb25kaXRpb24sIGUuZy4gInByaWNlIi4gPHJvdyBwYXR0ZXJu IGRlZmluaXRpb24gdmFyaWFibGUgbmFtZT4uPGNvbHVtbgorICogcmVmZXJlbmNlPiBpcyBub3Qg c3VwcG9ydGVkLCBlLmcuICJBLnByaWNlIi4KKyAqLworc3RhdGljIExpc3QgKgordHJhbnNmb3Jt RGVmaW5lQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93Q2xhdXNlICp3YywgV2luZG93 RGVmICp3aW5kZWYsCisJCQkJCSAgTGlzdCAqKnRhcmdldGxpc3QpCit7CisJTGlzdENlbGwgICAq bGMsCisJCQkgICAqbDsKKwlSZXNUYXJnZXQgICpyZXN0YXJnZXQsCisJCQkgICAqcjsKKwlMaXN0 CSAgICpyZXN0YXJnZXRzOworCUxpc3QJICAgKmRlZmluZUNsYXVzZSA9IE5JTDsKKwljaGFyCSAg ICpuYW1lOworCUxpc3QJICAgKnBhdHRlcm5WYXJOYW1lcyA9IE5JTDsKKworCS8qCisJICogSWYg Um93IERlZmluaXRpb24gQ29tbW9uIFN5bnRheCBleGlzdHMsIERFRklORSBjbGF1c2UgbXVzdCBl eGlzdC4gKHRoZQorCSAqIHJhdyBwYXJzZXIgc2hvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2VkIGl0 LikKKwkgKi8KKwlBc3NlcnQod2luZGVmLT5ycENvbW1vblN5bnRheC0+cnBEZWZzICE9IE5VTEwp OworCisJLyogVmFsaWRhdGUgUEFUVEVSTiB2YXJpYWJsZSBjb3VudCAobWF4IFJQUl9WQVJJRF9N QVgpICovCisJdmFsaWRhdGVSUFJQYXR0ZXJuVmFyQ291bnQocHN0YXRlLCB3aW5kZWYtPnJwQ29t bW9uU3ludGF4LT5ycFBhdHRlcm4sCisJCQkJCQkJICAgJnBhdHRlcm5WYXJOYW1lcyk7CisKKwkv KgorCSAqIENoZWNrIGZvciBkdXBsaWNhdGUgcm93IHBhdHRlcm4gZGVmaW5pdGlvbiB2YXJpYWJs ZXMuICBUaGUgc3RhbmRhcmQKKwkgKiByZXF1aXJlcyB0aGF0IG5vIHR3byByb3cgcGF0dGVybiBk ZWZpbml0aW9uIHZhcmlhYmxlIG5hbWVzIHNoYWxsIGJlCisJICogZXF1aXZhbGVudC4KKwkgKi8K KwlyZXN0YXJnZXRzID0gTklMOworCWZvcmVhY2gobGMsIHdpbmRlZi0+cnBDb21tb25TeW50YXgt PnJwRGVmcykKKwl7CisJCVRhcmdldEVudHJ5ICp0ZSwKKwkJCQkgICAqdGVEZWZpbmU7CisKKwkJ cmVzdGFyZ2V0ID0gKFJlc1RhcmdldCAqKSBsZmlyc3QobGMpOworCQluYW1lID0gcmVzdGFyZ2V0 LT5uYW1lOworCisJCWZvcmVhY2gobCwgcmVzdGFyZ2V0cykKKwkJeworCQkJY2hhcgkgICAqbjsK KworCQkJciA9IChSZXNUYXJnZXQgKikgbGZpcnN0KGwpOworCQkJbiA9IHItPm5hbWU7CisKKwkJ CWlmICghc3RyY21wKG4sIG5hbWUpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkgZXJybXNnKCJyb3cgcGF0dGVybiBkZWZp bml0aW9uIHZhcmlhYmxlIG5hbWUgXCIlc1wiIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UgaW4gREVG SU5FIGNsYXVzZSIsCisJCQkJCQkJCW5hbWUpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihw c3RhdGUsIGV4cHJMb2NhdGlvbigoTm9kZSAqKSByKSkpKTsKKwkJfQorCisJCXJlc3RhcmdldHMg PSBsYXBwZW5kKHJlc3RhcmdldHMsIHJlc3RhcmdldCk7CisKKwkJLyoKKwkJICogQWRkIERFRklO RSBleHByZXNzaW9uIChSZXN0YXJnZXQtPnZhbCkgdG8gdGhlIHRhcmdldGxpc3QgYXMgYQorCQkg KiBUYXJnZXRFbnRyeSBpZiBpdCBkb2VzIG5vdCBleGlzdCB5ZXQuIFBsYW5uZXIgd2lsbCBhZGQg dGhlIGNvbHVtbgorCQkgKiByZWYgdmFyIG5vZGUgdG8gdGhlIG91dGVyIHBsYW4ncyB0YXJnZXQg bGlzdCBsYXRlciBvbi4gVGhpcyBtYWtlcworCQkgKiBERUZJTkUgZXhwcmVzc2lvbiBjb3VsZCBh Y2Nlc3MgdGhlIG91dGVyIHR1cGxlIHdoaWxlIGV2YWx1YXRpbmcKKwkJICogUEFUVEVSTi4KKwkJ ICoKKwkJICogTm90ZTogZmluZFRhcmdldGxpc3RFbnRyeVNRTDk5IGRvZXMgRXhwciB0cmFuc2Zv cm1hdGlvbiBhbmQgY2xvYmJlcgorCQkgKiByZXN0YXJnZXQtPnZhbC4KKwkJICovCisKKwkJLyoK KwkJICogU2F2ZSB0aGUgb3JpZ2luYWwgZXhwcmVzc2lvbiBsb2NhdGlvbiBiZWZvcmUgdHJhbnNm b3JtYXRpb24uCisJCSAqIGZpbmRUYXJnZXRsaXN0RW50cnlTUUw5OSBtYXkgcmV0dXJuIGFuIGV4 aXN0aW5nIFRhcmdldEVudHJ5IHdob3NlCisJCSAqIGxvY2F0aW9uIHBvaW50cyB0byB3aGVyZSBp dCB3YXMgb3JpZ2luYWxseSBjcmVhdGVkIChlLmcuLCBPUkRFUgorCQkgKiBCWSksIG5vdCB0aGUg REVGSU5FIGNsYXVzZS4gV2UgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgREVGSU5FIGxvY2F0aW9uCisJ CSAqIGZvciBhY2N1cmF0ZSBlcnJvciByZXBvcnRpbmcuCisJCSAqLworCQl7CisJCQlpbnQJCQlk ZWZpbmVFeHByTG9jYXRpb24gPSBleHByTG9jYXRpb24ocmVzdGFyZ2V0LT52YWwpOworCisJCQl0 ZSA9IGZpbmRUYXJnZXRsaXN0RW50cnlTUUw5OShwc3RhdGUsIHJlc3RhcmdldC0+dmFsLAorCQkJ CQkJCQkJCSAgdGFyZ2V0bGlzdCwgRVhQUl9LSU5EX1JQUl9ERUZJTkUpOworCisJCQkvKiAtLS0t LS0tLS0tLS0tLS0tLS0tCisJCQkgKiBDb3B5IHRoZSBUYXJnZXRFbnRyeSBmb3IgZGVmaW5lQ2xh dXNlIGFuZCBhbHdheXMgc2V0IHRoZSBwYXR0ZXJuCisJCQkgKiB2YXJpYWJsZSBuYW1lLiBXZSB1 c2UgY29weU9iamVjdCBzbyB0aGUgb3JpZ2luYWwgdGFyZ2V0bGlzdCBlbnRyeQorCQkJICogaXMg bm90IG1vZGlmaWVkLgorCQkJICoKKwkJCSAqIE5vdGU6IFdlIG11c3QgYWx3YXlzIHNldCByZXNu YW1lIHRvIHRoZSBwYXR0ZXJuIHZhcmlhYmxlIG5hbWUuCisJCQkgKiBmaW5kVGFyZ2V0bGlzdEVu dHJ5U1FMOTkgY3JlYXRlcyBuZXcgVEVzIHdpdGggcmVzbmFtZSA9IE5VTEwKKwkJCSAqIChyZXNq dW5rIGVudHJpZXMpLCBidXQgcmV0dXJucyBleGlzdGluZyBURXMgdW5jaGFuZ2VkIHdoZW4gdGhl CisJCQkgKiBleHByZXNzaW9uIGFscmVhZHkgZXhpc3RzIGluIHRhcmdldGxpc3QuCisJCQkgKgor CQkJICogRXhhbXBsZTogIlNFTEVDVCBpZCwgZmxhZywgLi4uIFdJTkRPVyB3IEFTICguLi4gREVG SU5FIFQgQVMgZmxhZykiCisJCQkgKgorCQkJICogMS4gU0VMRUNUIGxpc3QgcHJvY2Vzc2luZyBj cmVhdGVzOiBURXtyZXNuYW1lPSJmbGFnIiwgZXhwcj1mbGFnfQorCQkJICogMi4gREVGSU5FIFQg QVMgZmxhZzogZmluZFRhcmdldGxpc3RFbnRyeVNRTDk5IGZpbmRzIGV4aXN0aW5nIFRFCisJCQkg KiAzLiB0ZS0+cmVzbmFtZSBpcyAiZmxhZyIgKGZyb20gU0VMRUNUKSwgbm90IE5VTEwKKwkJCSAq IDQuIFdpdGhvdXQgdW5jb25kaXRpb25hbGx5IHNldHRpbmcgcmVzbmFtZSwgdGVEZWZpbmUtPnJl c25hbWUKKwkJCSAqICAgIHdvdWxkIHJlbWFpbiAiZmxhZyIgaW5zdGVhZCBvZiBwYXR0ZXJuIHZh cmlhYmxlIG5hbWUgIlQiCisJCQkgKiA1LiBidWlsZFJQUlBhdHRlcm4gYnVpbGRzIGRlZmluZVZh cmlhYmxlTGlzdCBmcm9tIHJlc25hbWUsIHNvCisJCQkgKiAgICBpdCB3b3VsZCBjb250YWluIFsi ZmxhZyJdIGluc3RlYWQgb2YgWyJUIl0KKwkJCSAqIDYuIFBhdHRlcm4gdmFyaWFibGUgIlQiIG5v dCBmb3VuZCAtPiBBc3NlcnQgZmFpbHVyZSBjcmFzaAorCQkJICovCisJCQl0ZURlZmluZSA9IGNv cHlPYmplY3QodGUpOworCQkJdGVEZWZpbmUtPnJlc25hbWUgPSBwc3RyZHVwKG5hbWUpOworCisJ CQkvKgorCQkJICogVXBkYXRlIHRoZSBleHByZXNzaW9uIGxvY2F0aW9uIHRvIHBvaW50IHRvIHRo ZSBERUZJTkUgY2xhdXNlLgorCQkJICogVGhpcyBlbnN1cmVzIGVycm9yIG1lc3NhZ2VzIHJlZmVy ZW5jZSB0aGUgY29ycmVjdCBzb3VyY2UKKwkJCSAqIGxvY2F0aW9uLgorCQkJICovCisJCQlpZiAo ZGVmaW5lRXhwckxvY2F0aW9uID49IDAgJiYgSXNBKHRlRGVmaW5lLT5leHByLCBWYXIpKQorCQkJ CSgoVmFyICopIHRlRGVmaW5lLT5leHByKS0+bG9jYXRpb24gPSBkZWZpbmVFeHByTG9jYXRpb247 CisJCX0KKworCQkvKiBidWlsZCB0cmFuc2Zvcm1lZCBERUZJTkUgY2xhdXNlIChsaXN0IG9mIFRh cmdldEVudHJ5KSAqLworCQlkZWZpbmVDbGF1c2UgPSBsYXBwZW5kKGRlZmluZUNsYXVzZSwgdGVE ZWZpbmUpOworCX0KKwlsaXN0X2ZyZWUocmVzdGFyZ2V0cyk7CisKKwkvKgorCSAqIE1ha2Ugc3Vy ZSB0aGF0IHRoZSByb3cgcGF0dGVybiBkZWZpbml0aW9uIHNlYXJjaCBjb25kaXRpb24gaXMgYSBi b29sZWFuCisJICogZXhwcmVzc2lvbi4KKwkgKi8KKwlmb3JlYWNoX3B0cihUYXJnZXRFbnRyeSwg dGUsIGRlZmluZUNsYXVzZSkKKwkJKHZvaWQpIGNvZXJjZV90b19ib29sZWFuKHBzdGF0ZSwgKE5v ZGUgKikgdGUtPmV4cHIsICJERUZJTkUiKTsKKworCS8qIG1hcmsgY29sdW1uIG9yaWdpbnMgKi8K KwltYXJrVGFyZ2V0TGlzdE9yaWdpbnMocHN0YXRlLCBkZWZpbmVDbGF1c2UpOworCisJLyogbWFy ayBhbGwgbm9kZXMgaW4gdGhlIERFRklORSBjbGF1c2UgdHJlZSB3aXRoIGNvbGxhdGlvbiBpbmZv cm1hdGlvbiAqLworCWFzc2lnbl9leHByX2NvbGxhdGlvbnMocHN0YXRlLCAoTm9kZSAqKSBkZWZp bmVDbGF1c2UpOworCisJcmV0dXJuIGRlZmluZUNsYXVzZTsKK30KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3BhcnNlci9wYXJzZV9jbGF1c2UuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9j bGF1c2UuaAppbmRleCBmZTIzNDYxMTAwNy4uOGFhYWM4ODFmMmIgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3BhcnNlci9wYXJzZV9jbGF1c2UuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2VfY2xhdXNlLmgKQEAgLTUyLDYgKzUyLDkgQEAgZXh0ZXJuIExpc3QgKmFkZFRhcmdldFRvU29y dExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUYXJnZXRFbnRyeSAqdGxlLAogZXh0ZXJuIEluZGV4 IGFzc2lnblNvcnRHcm91cFJlZihUYXJnZXRFbnRyeSAqdGxlLCBMaXN0ICp0bGlzdCk7CiBleHRl cm4gYm9vbCB0YXJnZXRJc0luU29ydExpc3QoVGFyZ2V0RW50cnkgKnRsZSwgT2lkIHNvcnRvcCwg TGlzdCAqc29ydExpc3QpOwogCitleHRlcm4gVGFyZ2V0RW50cnkgKmZpbmRUYXJnZXRsaXN0RW50 cnlTUUw5OShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCisJCQkJCQkJCQkJCSBMaXN0 ICoqdGxpc3QsIFBhcnNlRXhwcktpbmQgZXhwcktpbmQpOworCiAvKiBmdW5jdGlvbnMgaW4gcGFy c2VfanNvbnRhYmxlLmMgKi8KIGV4dGVybiBQYXJzZU5hbWVzcGFjZUl0ZW0gKnRyYW5zZm9ybUpz b25UYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25UYWJsZSAqanQpOwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfcnByLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2VfcnByLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdmYWI2ZjI5 MmFhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3Jwci5oCkBA IC0wLDAgKzEsMjIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBhcnNlX3Jwci5oCisg KgkgIGhhbmRsZSBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiBpbiBwYXJzZXIKKyAqCisgKgorICog UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2Yg dGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV9ycHIuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBBUlNFX1JQ Ul9ICisjZGVmaW5lIFBBUlNFX1JQUl9ICisKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfbm9kZS5o IgorCitleHRlcm4gdm9pZCB0cmFuc2Zvcm1SUFIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dD bGF1c2UgKndjLAorCQkJCQkJIFdpbmRvd0RlZiAqd2luZGVmLCBMaXN0ICoqdGFyZ2V0bGlzdCk7 CisKKyNlbmRpZgkJCQkJCQkvKiBQQVJTRV9SUFJfSCAqLwotLSAKMi40My4wCgo= ----Next_Part(Sun_Feb_15_18_06_52_2026_930)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v43-0003-Row-pattern-recognition-patch-rewriter.patch" RnJvbSBkYWMwZjlhMTA5ZGIyMzY2Y2Y2YWJlNDJjYmRlZjYzMjg1YzkyY2ZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTdW4sIDE1IEZlYiAyMDI2IDE3OjQ3OjQ4ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDMg My84XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAocmV3cml0ZXIpLgoKLS0tCiBzcmMv YmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgfCAxNzUgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTc1IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKaW5kZXggODljYmRkM2IxZTcuLjZlMDA4ZWQyOGE4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCkBAIC00MzksNiArNDM5LDEyIEBAIHN0YXRpYyB2b2lkIGdldF9y dWxlX2dyb3VwaW5nc2V0KEdyb3VwaW5nU2V0ICpnc2V0LCBMaXN0ICp0YXJnZXRsaXN0LAogCQkJ CQkJCQkgYm9vbCBvbWl0X3BhcmVucywgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKIHN0YXRp YyB2b2lkIGdldF9ydWxlX29yZGVyYnkoTGlzdCAqb3JkZXJMaXN0LCBMaXN0ICp0YXJnZXRMaXN0 LAogCQkJCQkJCSBib29sIGZvcmNlX2NvbG5vLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOwor c3RhdGljIHZvaWQgYXBwZW5kX3BhdHRlcm5fcXVhbnRpZmllcihTdHJpbmdJbmZvIGJ1ZiwgUlBS UGF0dGVybk5vZGUgKm5vZGUpOworc3RhdGljIHZvaWQgZ2V0X3J1bGVfcGF0dGVybl9ub2RlKFJQ UlBhdHRlcm5Ob2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOworc3RhdGljIHZv aWQgZ2V0X3J1bGVfcGF0dGVybihSUFJQYXR0ZXJuTm9kZSAqcnBQYXR0ZXJuLCBib29sIGZvcmNl X2NvbG5vLAorCQkJCQkJCSBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOworc3RhdGljIHZvaWQg Z2V0X3J1bGVfZGVmaW5lKExpc3QgKmRlZmluZUNsYXVzZSwgYm9vbCBmb3JjZV9jb2xubywKKwkJ CQkJCQlkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIHZvaWQgZ2V0X3J1bGVfd2lu ZG93Y2xhdXNlKFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKIHN0YXRp YyB2b2lkIGdldF9ydWxlX3dpbmRvd3NwZWMoV2luZG93Q2xhdXNlICp3YywgTGlzdCAqdGFyZ2V0 TGlzdCwKIAkJCQkJCQkJZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKQEAgLTY3NDYsNiArNjc1 MiwxMzAgQEAgZ2V0X3J1bGVfb3JkZXJieShMaXN0ICpvcmRlckxpc3QsIExpc3QgKnRhcmdldExp c3QsCiAJfQogfQogCisvKgorICogSGVscGVyIGZ1bmN0aW9uIHRvIGFwcGVuZCBxdWFudGlmaWVy IHN0cmluZyBmb3IgcGF0dGVybiBub2RlCisgKi8KK3N0YXRpYyB2b2lkCithcHBlbmRfcGF0dGVy bl9xdWFudGlmaWVyKFN0cmluZ0luZm8gYnVmLCBSUFJQYXR0ZXJuTm9kZSAqbm9kZSkKK3sKKwli b29sCQloYXNfcXVhbnRpZmllciA9IHRydWU7CisKKwlpZiAobm9kZS0+bWluID09IDEgJiYgbm9k ZS0+bWF4ID09IDEpCisJeworCQkvKiB7MSwxfSA9IG5vIHF1YW50aWZpZXIgKi8KKwkJaGFzX3F1 YW50aWZpZXIgPSBmYWxzZTsKKwl9CisJZWxzZSBpZiAobm9kZS0+bWluID09IDAgJiYgbm9kZS0+ bWF4ID09IElOVF9NQVgpCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyonKTsKKwllbHNl IGlmIChub2RlLT5taW4gPT0gMSAmJiBub2RlLT5tYXggPT0gSU5UX01BWCkKKwkJYXBwZW5kU3Ry aW5nSW5mb0NoYXIoYnVmLCAnKycpOworCWVsc2UgaWYgKG5vZGUtPm1pbiA9PSAwICYmIG5vZGUt Pm1heCA9PSAxKQorCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICc/Jyk7CisJZWxzZSBpZiAo bm9kZS0+bWF4ID09IElOVF9NQVgpCisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAieyVkLH0iLCBu b2RlLT5taW4pOworCWVsc2UgaWYgKG5vZGUtPm1pbiA9PSBub2RlLT5tYXgpCisJCWFwcGVuZFN0 cmluZ0luZm8oYnVmLCAieyVkfSIsIG5vZGUtPm1pbik7CisJZWxzZQorCQlhcHBlbmRTdHJpbmdJ bmZvKGJ1ZiwgInslZCwlZH0iLCBub2RlLT5taW4sIG5vZGUtPm1heCk7CisKKwlpZiAobm9kZS0+ cmVsdWN0YW50ID49IDApCisJeworCQlpZiAoIWhhc19xdWFudGlmaWVyKQorCQkJYXBwZW5kU3Ry aW5nSW5mbyhidWYsICJ7MX0iKTsJLyogbWFrZSByZWx1Y3RhbnQgPyB1bmFtYmlndW91cyAqLwor CQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICc/Jyk7CisJfQorfQorCisvKgorICogUmVjdXJz aXZlIGhlbHBlciB0byBkaXNwbGF5IFJQUlBhdHRlcm5Ob2RlIHRyZWUKKyAqLworc3RhdGljIHZv aWQKK2dldF9ydWxlX3BhdHRlcm5fbm9kZShSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgZGVwYXJzZV9j b250ZXh0ICpjb250ZXh0KQoreworCVN0cmluZ0luZm8JYnVmID0gY29udGV4dC0+YnVmOworCUxp c3RDZWxsICAgKmxjOworCWNvbnN0IGNoYXIgKnNlcDsKKworCUFzc2VydChub2RlICE9IE5VTEwp OworCisJc3dpdGNoIChub2RlLT5ub2RlVHlwZSkKKwl7CisJCWNhc2UgUlBSX1BBVFRFUk5fVkFS OgorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIG5vZGUtPnZhck5hbWUpOworCQkJYXBw ZW5kX3BhdHRlcm5fcXVhbnRpZmllcihidWYsIG5vZGUpOworCQkJYnJlYWs7CisKKwkJY2FzZSBS UFJfUEFUVEVSTl9TRVE6CisJCQlzZXAgPSAiIjsKKwkJCWZvcmVhY2gobGMsIG5vZGUtPmNoaWxk cmVuKQorCQkJeworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBzZXApOworCQkJCWdl dF9ydWxlX3BhdHRlcm5fbm9kZSgoUlBSUGF0dGVybk5vZGUgKikgbGZpcnN0KGxjKSwgY29udGV4 dCk7CisJCQkJc2VwID0gIiAiOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBSUFJfUEFUVEVS Tl9BTFQ6CisJCQlzZXAgPSAiIjsKKwkJCWZvcmVhY2gobGMsIG5vZGUtPmNoaWxkcmVuKQorCQkJ eworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBzZXApOworCQkJCWdldF9ydWxlX3Bh dHRlcm5fbm9kZSgoUlBSUGF0dGVybk5vZGUgKikgbGZpcnN0KGxjKSwgY29udGV4dCk7CisJCQkJ c2VwID0gIiB8ICI7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFJQUl9QQVRURVJOX0dST1VQ OgorCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKCcpOworCQkJc2VwID0gIiI7CisJCQlm b3JlYWNoKGxjLCBub2RlLT5jaGlsZHJlbikKKwkJCXsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKGJ1Ziwgc2VwKTsKKwkJCQlnZXRfcnVsZV9wYXR0ZXJuX25vZGUoKFJQUlBhdHRlcm5Ob2Rl ICopIGxmaXJzdChsYyksIGNvbnRleHQpOworCQkJCXNlcCA9ICIgIjsKKwkJCX0KKwkJCWFwcGVu ZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKKwkJCWFwcGVuZF9wYXR0ZXJuX3F1YW50aWZpZXIo YnVmLCBub2RlKTsKKwkJCWJyZWFrOworCX0KK30KKworLyoKKyAqIERpc3BsYXkgYSBQQVRURVJO IGNsYXVzZS4KKyAqLworc3RhdGljIHZvaWQKK2dldF9ydWxlX3BhdHRlcm4oUlBSUGF0dGVybk5v ZGUgKnJwUGF0dGVybiwgYm9vbCBmb3JjZV9jb2xubywKKwkJCQkgZGVwYXJzZV9jb250ZXh0ICpj b250ZXh0KQoreworCVN0cmluZ0luZm8JYnVmID0gY29udGV4dC0+YnVmOworCisJYXBwZW5kU3Ry aW5nSW5mb0NoYXIoYnVmLCAnKCcpOworCWdldF9ydWxlX3BhdHRlcm5fbm9kZShycFBhdHRlcm4s IGNvbnRleHQpOworCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKK30KKworLyoKKyAq IERpc3BsYXkgYSBERUZJTkUgY2xhdXNlLgorICovCitzdGF0aWMgdm9pZAorZ2V0X3J1bGVfZGVm aW5lKExpc3QgKmRlZmluZUNsYXVzZSwgYm9vbCBmb3JjZV9jb2xubywgZGVwYXJzZV9jb250ZXh0 ICpjb250ZXh0KQoreworCVN0cmluZ0luZm8JYnVmID0gY29udGV4dC0+YnVmOworCWNvbnN0IGNo YXIgKnNlcDsKKwlMaXN0Q2VsbCAgICpsY19kZWY7CisKKwlzZXAgPSAiICAiOworCisJZm9yZWFj aChsY19kZWYsIGRlZmluZUNsYXVzZSkKKwl7CisJCVRhcmdldEVudHJ5ICp0ZSA9IChUYXJnZXRF bnRyeSAqKSBsZmlyc3QobGNfZGVmKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzJXMg QVMgIiwgc2VwLCB0ZS0+cmVzbmFtZSk7CisJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgdGUtPmV4 cHIsIGNvbnRleHQsIGZhbHNlKTsKKwkJc2VwID0gIixcbiAgIjsKKwl9Cit9CisKIC8qCiAgKiBE aXNwbGF5IGEgV0lORE9XIGNsYXVzZS4KICAqCkBAIC02ODI2LDYgKzY5NTYsNyBAQCBnZXRfcnVs ZV93aW5kb3dzcGVjKFdpbmRvd0NsYXVzZSAqd2MsIExpc3QgKnRhcmdldExpc3QsCiAJCWdldF9y dWxlX29yZGVyYnkod2MtPm9yZGVyQ2xhdXNlLCB0YXJnZXRMaXN0LCBmYWxzZSwgY29udGV4dCk7 CiAJCW5lZWRzcGFjZSA9IHRydWU7CiAJfQorCiAJLyogZnJhbWluZyBjbGF1c2UgaXMgbmV2ZXIg aW5oZXJpdGVkLCBzbyBwcmludCB1bmxlc3MgaXQncyBkZWZhdWx0ICovCiAJaWYgKHdjLT5mcmFt ZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9OT05ERUZBVUxUKQogCXsKQEAgLTY4MzQsNyArNjk2NSw1 MSBAQCBnZXRfcnVsZV93aW5kb3dzcGVjKFdpbmRvd0NsYXVzZSAqd2MsIExpc3QgKnRhcmdldExp c3QsCiAJCWdldF93aW5kb3dfZnJhbWVfb3B0aW9ucyh3Yy0+ZnJhbWVPcHRpb25zLAogCQkJCQkJ CQkgd2MtPnN0YXJ0T2Zmc2V0LCB3Yy0+ZW5kT2Zmc2V0LAogCQkJCQkJCQkgY29udGV4dCk7CisJ CW5lZWRzcGFjZSA9IHRydWU7CisJfQorCisJLyogUlBSICovCisJaWYgKHdjLT5ycFNraXBUbyA9 PSBTVF9ORVhUX1JPVykKKwl7CisJCWlmIChuZWVkc3BhY2UpCisJCQlhcHBlbmRTdHJpbmdJbmZv Q2hhcihidWYsICcgJyk7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLAorCQkJCQkJCSAg ICJcbiAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVyAiKTsKKwkJbmVlZHNwYWNlID0gdHJ1 ZTsKKwl9CisJZWxzZSBpZiAod2MtPnJwU2tpcFRvID09IFNUX1BBU1RfTEFTVF9ST1cpCisJewor CQlpZiAobmVlZHNwYWNlKQorCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwKKwkJCQkJCQkgICAiXG4gIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVyAiKTsKKwkJbmVlZHNwYWNlID0gdHJ1ZTsKKwl9CisJaWYgKHdjLT5p bml0aWFsKQorCXsKKwkJaWYgKG5lZWRzcGFjZSkKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1 ZiwgJyAnKTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJcbiAgSU5JVElBTCIpOwor CQluZWVkc3BhY2UgPSB0cnVlOwogCX0KKwlpZiAod2MtPnJwUGF0dGVybikKKwl7CisJCWlmIChu ZWVkc3BhY2UpCisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcgJyk7CisJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoYnVmLCAiXG4gIFBBVFRFUk4gIik7CisJCWdldF9ydWxlX3BhdHRlcm4o d2MtPnJwUGF0dGVybiwgZmFsc2UsIGNvbnRleHQpOworCQluZWVkc3BhY2UgPSB0cnVlOworCX0K KworCWlmICh3Yy0+ZGVmaW5lQ2xhdXNlKQorCXsKKwkJaWYgKG5lZWRzcGFjZSkKKwkJCWFwcGVu ZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyAnKTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYs ICJcbiAgREVGSU5FXG4iKTsKKwkJZ2V0X3J1bGVfZGVmaW5lKHdjLT5kZWZpbmVDbGF1c2UsIGZh bHNlLCBjb250ZXh0KTsKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCX0KKwog CWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKIH0KIAotLSAKMi40My4wCgo= ----Next_Part(Sun_Feb_15_18_06_52_2026_930)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v43-0004-Row-pattern-recognition-patch-planner.patch" RnJvbSBkN2ViOTY5YmQyZGEzYmZkNTEzMzkxZjQ1OTU4NzFmYjVhMzljODAzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTdW4sIDE1IEZlYiAyMDI2IDE3OjQ3OjQ4ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDMg NC84XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAocGxhbm5lcikuCgotLS0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL01ha2VmaWxlICAgICAgIHwgICAgMSArCiBzcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgICB8ICAgNzYgKy0KIHNyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL21lc29uLmJ1aWxkICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9wbGFubmVyLmMgICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcnByLmMgICAgICAgICAgfCAxODA2ICsrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgICAgfCAgIDI3ICstCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYyB8ICAgIDkgKwogc3JjL2luY2x1ZGUvbm9kZXMv cGxhbm5vZGVzLmggICAgICAgICAgICAgfCAgIDc0ICsKIHNyYy9pbmNsdWRlL29wdGltaXplci9y cHIuaCAgICAgICAgICAgICAgIHwgICA1NyArCiA5IGZpbGVzIGNoYW5nZWQsIDIwMzYgaW5zZXJ0 aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcnByLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9vcHRp bWl6ZXIvcnByLmgKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9NYWtl ZmlsZSBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL01ha2VmaWxlCmluZGV4IDgwZWYxNjJl NDg0Li43ZTAxNjc3ODlkOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v TWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vTWFrZWZpbGUKQEAgLTE5 LDYgKzE5LDcgQEAgT0JKUyA9IFwKIAlwbGFuYWdnLm8gXAogCXBsYW5tYWluLm8gXAogCXBsYW5u ZXIubyBcCisJcnByLm8gXAogCXNldHJlZnMubyBcCiAJc3Vic2VsZWN0Lm8KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IDIxZjE5ODhjZjIyLi5iYmMyYzdlNzFm NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMzUsNiArMzUs NyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9wcmVwLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3Jl c3RyaWN0aW5mby5oIgogI2luY2x1ZGUgIm9wdGltaXplci9zdWJzZWxlY3QuaCIKKyNpbmNsdWRl ICJvcHRpbWl6ZXIvcnByLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3RsaXN0LmgiCiAjaW5jbHVk ZSAicGFyc2VyL3BhcnNlX2NsYXVzZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIK QEAgLTI4Nyw3ICsyODgsMTAgQEAgc3RhdGljIE1lbW9pemUgKm1ha2VfbWVtb2l6ZShQbGFuICps ZWZ0dHJlZSwgT2lkICpoYXNob3BlcmF0b3JzLAogc3RhdGljIFdpbmRvd0FnZyAqbWFrZV93aW5k b3dhZ2coTGlzdCAqdGxpc3QsIFdpbmRvd0NsYXVzZSAqd2MsCiAJCQkJCQkJCSBpbnQgcGFydE51 bUNvbHMsIEF0dHJOdW1iZXIgKnBhcnRDb2xJZHgsIE9pZCAqcGFydE9wZXJhdG9ycywgT2lkICpw YXJ0Q29sbGF0aW9ucywKIAkJCQkJCQkJIGludCBvcmROdW1Db2xzLCBBdHRyTnVtYmVyICpvcmRD b2xJZHgsIE9pZCAqb3JkT3BlcmF0b3JzLCBPaWQgKm9yZENvbGxhdGlvbnMsCi0JCQkJCQkJCSBM aXN0ICpydW5Db25kaXRpb24sIExpc3QgKnF1YWwsIGJvb2wgdG9wV2luZG93LAorCQkJCQkJCQkg TGlzdCAqcnVuQ29uZGl0aW9uLCBSUFNraXBUbyBycFNraXBUbywKKwkJCQkJCQkJIFJQUlBhdHRl cm4gKmNvbXBpbGVkUGF0dGVybiwKKwkJCQkJCQkJIExpc3QgKmRlZmluZUNsYXVzZSwKKwkJCQkJ CQkJIExpc3QgKnF1YWwsIGJvb2wgdG9wV2luZG93LAogCQkJCQkJCQkgUGxhbiAqbGVmdHRyZWUp Owogc3RhdGljIEdyb3VwICptYWtlX2dyb3VwKExpc3QgKnRsaXN0LCBMaXN0ICpxdWFsLCBpbnQg bnVtR3JvdXBDb2xzLAogCQkJCQkJIEF0dHJOdW1iZXIgKmdycENvbElkeCwgT2lkICpncnBPcGVy YXRvcnMsIE9pZCAqZ3JwQ29sbGF0aW9ucywKQEAgLTI1MzAsMjEgKzI1MzQsNTAgQEAgY3JlYXRl X3dpbmRvd2FnZ19wbGFuKFBsYW5uZXJJbmZvICpyb290LCBXaW5kb3dBZ2dQYXRoICpiZXN0X3Bh dGgpCiAJCW9yZE51bUNvbHMrKzsKIAl9CiAKLQkvKiBBbmQgZmluYWxseSB3ZSBjYW4gbWFrZSB0 aGUgV2luZG93QWdnIG5vZGUgKi8KLQlwbGFuID0gbWFrZV93aW5kb3dhZ2codGxpc3QsCi0JCQkJ CQkgIHdjLAotCQkJCQkJICBwYXJ0TnVtQ29scywKLQkJCQkJCSAgcGFydENvbElkeCwKLQkJCQkJ CSAgcGFydE9wZXJhdG9ycywKLQkJCQkJCSAgcGFydENvbGxhdGlvbnMsCi0JCQkJCQkgIG9yZE51 bUNvbHMsCi0JCQkJCQkgIG9yZENvbElkeCwKLQkJCQkJCSAgb3JkT3BlcmF0b3JzLAotCQkJCQkJ ICBvcmRDb2xsYXRpb25zLAotCQkJCQkJICBiZXN0X3BhdGgtPnJ1bkNvbmRpdGlvbiwKLQkJCQkJ CSAgYmVzdF9wYXRoLT5xdWFsLAotCQkJCQkJICBiZXN0X3BhdGgtPnRvcHdpbmRvdywKLQkJCQkJ CSAgc3VicGxhbik7CisJLyogQnVpbGQgUlBSIHBhdHRlcm4gYW5kIGZpbHRlciBkZWZpbmVDbGF1 c2UgKi8KKwl7CisJCUxpc3QJICAgKmRlZmluZVZhcmlhYmxlTGlzdCA9IE5JTDsKKwkJTGlzdAkg ICAqZmlsdGVyZWREZWZpbmVDbGF1c2UgPSBOSUw7CisJCVJQUlBhdHRlcm4gKmNvbXBpbGVkUGF0 dGVybiA9IE5VTEw7CisKKwkJaWYgKHdjLT5ycFBhdHRlcm4pCisJCXsKKwkJCUxpc3QJICAgKnBh dHRlcm5WYXJzOworCisJCQkvKgorCQkJICogRmlsdGVyIGRlZmluZUNsYXVzZSB0byBpbmNsdWRl IG9ubHkgdmFyaWFibGVzIHVzZWQgaW4gUEFUVEVSTi4KKwkJCSAqIFRoaXMgZWxpbWluYXRlcyB1 bm5lY2Vzc2FyeSBERUZJTkUgZXZhbHVhdGlvbnMgYXQgcnVudGltZS4KKwkJCSAqLworCQkJcGF0 dGVyblZhcnMgPSBjb2xsZWN0UGF0dGVyblZhcmlhYmxlcyh3Yy0+cnBQYXR0ZXJuKTsKKwkJCWZp bHRlcmVkRGVmaW5lQ2xhdXNlID0gZmlsdGVyRGVmaW5lQ2xhdXNlKHdjLT5kZWZpbmVDbGF1c2Us CisJCQkJCQkJCQkJCQkJICBwYXR0ZXJuVmFycywKKwkJCQkJCQkJCQkJCQkgICZkZWZpbmVWYXJp YWJsZUxpc3QpOworCisJCQljb21waWxlZFBhdHRlcm4gPSBidWlsZFJQUlBhdHRlcm4od2MtPnJw UGF0dGVybiwKKwkJCQkJCQkJCQkJICBkZWZpbmVWYXJpYWJsZUxpc3QsCisJCQkJCQkJCQkJCSAg d2MtPnJwU2tpcFRvLAorCQkJCQkJCQkJCQkgIHdjLT5mcmFtZU9wdGlvbnMpOworCQl9CisKKwkJ LyogQW5kIGZpbmFsbHkgd2UgY2FuIG1ha2UgdGhlIFdpbmRvd0FnZyBub2RlICovCisJCXBsYW4g PSBtYWtlX3dpbmRvd2FnZyh0bGlzdCwKKwkJCQkJCQkgIHdjLAorCQkJCQkJCSAgcGFydE51bUNv bHMsCisJCQkJCQkJICBwYXJ0Q29sSWR4LAorCQkJCQkJCSAgcGFydE9wZXJhdG9ycywKKwkJCQkJ CQkgIHBhcnRDb2xsYXRpb25zLAorCQkJCQkJCSAgb3JkTnVtQ29scywKKwkJCQkJCQkgIG9yZENv bElkeCwKKwkJCQkJCQkgIG9yZE9wZXJhdG9ycywKKwkJCQkJCQkgIG9yZENvbGxhdGlvbnMsCisJ CQkJCQkJICBiZXN0X3BhdGgtPnJ1bkNvbmRpdGlvbiwKKwkJCQkJCQkgIHdjLT5ycFNraXBUbywK KwkJCQkJCQkgIGNvbXBpbGVkUGF0dGVybiwKKwkJCQkJCQkgIGZpbHRlcmVkRGVmaW5lQ2xhdXNl LAorCQkJCQkJCSAgYmVzdF9wYXRoLT5xdWFsLAorCQkJCQkJCSAgYmVzdF9wYXRoLT50b3B3aW5k b3csCisJCQkJCQkJICBzdWJwbGFuKTsKKwl9CiAKIAljb3B5X2dlbmVyaWNfcGF0aF9pbmZvKCZw bGFuLT5wbGFuLCAoUGF0aCAqKSBiZXN0X3BhdGgpOwogCkBAIC02NjExLDcgKzY2NDQsMTAgQEAg c3RhdGljIFdpbmRvd0FnZyAqCiBtYWtlX3dpbmRvd2FnZyhMaXN0ICp0bGlzdCwgV2luZG93Q2xh dXNlICp3YywKIAkJCSAgIGludCBwYXJ0TnVtQ29scywgQXR0ck51bWJlciAqcGFydENvbElkeCwg T2lkICpwYXJ0T3BlcmF0b3JzLCBPaWQgKnBhcnRDb2xsYXRpb25zLAogCQkJICAgaW50IG9yZE51 bUNvbHMsIEF0dHJOdW1iZXIgKm9yZENvbElkeCwgT2lkICpvcmRPcGVyYXRvcnMsIE9pZCAqb3Jk Q29sbGF0aW9ucywKLQkJCSAgIExpc3QgKnJ1bkNvbmRpdGlvbiwgTGlzdCAqcXVhbCwgYm9vbCB0 b3BXaW5kb3csIFBsYW4gKmxlZnR0cmVlKQorCQkJICAgTGlzdCAqcnVuQ29uZGl0aW9uLCBSUFNr aXBUbyBycFNraXBUbywKKwkJCSAgIFJQUlBhdHRlcm4gKmNvbXBpbGVkUGF0dGVybiwKKwkJCSAg IExpc3QgKmRlZmluZUNsYXVzZSwKKwkJCSAgIExpc3QgKnF1YWwsIGJvb2wgdG9wV2luZG93LCBQ bGFuICpsZWZ0dHJlZSkKIHsKIAlXaW5kb3dBZ2cgICpub2RlID0gbWFrZU5vZGUoV2luZG93QWdn KTsKIAlQbGFuCSAgICpwbGFuID0gJm5vZGUtPnBsYW47CkBAIC02NjM4LDYgKzY2NzQsMTIgQEAg bWFrZV93aW5kb3dhZ2coTGlzdCAqdGxpc3QsIFdpbmRvd0NsYXVzZSAqd2MsCiAJbm9kZS0+aW5S YW5nZUFzYyA9IHdjLT5pblJhbmdlQXNjOwogCW5vZGUtPmluUmFuZ2VOdWxsc0ZpcnN0ID0gd2Mt PmluUmFuZ2VOdWxsc0ZpcnN0OwogCW5vZGUtPnRvcFdpbmRvdyA9IHRvcFdpbmRvdzsKKwlub2Rl LT5ycFNraXBUbyA9IHJwU2tpcFRvOworCisJLyogU3RvcmUgY29tcGlsZWQgcGF0dGVybiBmb3Ig TkZBIGV4ZWN1dGlvbiAqLworCW5vZGUtPnJwUGF0dGVybiA9IGNvbXBpbGVkUGF0dGVybjsKKwor CW5vZGUtPmRlZmluZUNsYXVzZSA9IGRlZmluZUNsYXVzZTsKIAogCXBsYW4tPnRhcmdldGxpc3Qg PSB0bGlzdDsKIAlwbGFuLT5sZWZ0dHJlZSA9IGxlZnR0cmVlOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9tZXNvbi5idWlsZAppbmRleCBjNTY1YjJhZGJjYy4uNWIyMzgxY2Q3NzQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL21lc29uLmJ1aWxkCkBAIC03LDYgKzcsNyBAQCBiYWNrZW5kX3Nv dXJjZXMgKz0gZmlsZXMoCiAgICdwbGFuYWdnLmMnLAogICAncGxhbm1haW4uYycsCiAgICdwbGFu bmVyLmMnLAorICAncnByLmMnLAogICAnc2V0cmVmcy5jJywKICAgJ3N1YnNlbGVjdC5jJywKICkK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCAwMDZiMzI4MTk2OS4uMzk1MGUw ZGQxYWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTEwMTQsNiArMTAx NCw5IEBAIHN1YnF1ZXJ5X3BsYW5uZXIoUGxhbm5lckdsb2JhbCAqZ2xvYiwgUXVlcnkgKnBhcnNl LCBjaGFyICpwbGFuX25hbWUsCiAJCQkJCQkJCQkJCQlFWFBSS0lORF9MSU1JVCk7CiAJCXdjLT5l bmRPZmZzZXQgPSBwcmVwcm9jZXNzX2V4cHJlc3Npb24ocm9vdCwgd2MtPmVuZE9mZnNldCwKIAkJ CQkJCQkJCQkJICBFWFBSS0lORF9MSU1JVCk7CisJCXdjLT5kZWZpbmVDbGF1c2UgPSAoTGlzdCAq KSBwcmVwcm9jZXNzX2V4cHJlc3Npb24ocm9vdCwKKwkJCQkJCQkJCQkJCQkJICAoTm9kZSAqKSB3 Yy0+ZGVmaW5lQ2xhdXNlLAorCQkJCQkJCQkJCQkJCQkgIEVYUFJLSU5EX1RBUkdFVCk7CiAJfQog CiAJcGFyc2UtPmxpbWl0T2Zmc2V0ID0gcHJlcHJvY2Vzc19leHByZXNzaW9uKHJvb3QsIHBhcnNl LT5saW1pdE9mZnNldCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jw ci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjExMmVkMDM0ZmUyCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMKQEAgLTAsMCArMSwxODA2IEBACisvKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiBycHIuYworICoJICBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiBw YXR0ZXJuIGNvbXBpbGF0aW9uIGZvciBwbGFubmVyCisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5z IGZ1bmN0aW9ucyBmb3Igb3B0aW1pemluZyBSUFIgcGF0dGVybiBBU1QgYW5kCisgKiBjb21waWxp bmcgaXQgdG8gYnl0ZWNvZGUgZm9yIGV4ZWN1dGlvbiBieSBXaW5kb3dBZ2cuCisgKgorICogS2V5 IGNvbXBvbmVudHM6CisgKiAgIDEuIFBhdHRlcm4gT3B0aW1pemF0aW9uOiBTaW1wbGlmaWVzIHBh dHRlcm5zIGJlZm9yZSBjb21waWxhdGlvbgorICogICAgICAoZS5nLiwgZmxhdHRlbiBuZXN0ZWQg U0VRL0FMVCwgbWVyZ2UgY29uc2VjdXRpdmUgdmFycykKKyAqICAgMi4gUGF0dGVybiBDb21waWxh dGlvbjogQ29udmVydHMgQVNUIHRvIGZsYXQgZWxlbWVudCBhcnJheSBmb3IgTkZBCisgKiAgIDMu IEFic29ycHRpb24gQW5hbHlzaXM6IENvbXB1dGVzIGZsYWdzIGZvciBPKG5eMiktPk8obikgb3B0 aW1pemF0aW9uCisgKgorICogQ29udGV4dCBBYnNvcnB0aW9uIE9wdGltaXphdGlvbjoKKyAqICAg V2hlbiBhIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBncmVlZHkgdW5ib3VuZGVkIGVsZW1lbnQgKGUu Zy4sIEErIG9yIChBIEIpKyksCisgKiAgIG5ld2VyIGNvbnRleHRzIGNhbm5vdCBwcm9kdWNlIGxv bmdlciBtYXRjaGVzIHRoYW4gb2xkZXIgY29udGV4dHMuCisgKiAgIEJ5IGFic29yYmluZyAoZWxp bWluYXRpbmcpIHJlZHVuZGFudCBuZXdlciBjb250ZXh0cywgd2UgcmVkdWNlCisgKiAgIGNvbXBs ZXhpdHkgZnJvbSBPKG5eMikgdG8gTyhuKSBmb3IgcGF0dGVybnMgbGlrZSBBKyBCLgorICoKKyAq ICAgVGhlIGFic29ycHRpb24gYW5hbHlzaXMgdXNlcyB0d28gZWxlbWVudCBmbGFnczoKKyAqICAg LSBSUFJfRUxFTV9BQlNPUkJBQkxFOiBtYXJrcyBXSEVSRSB0byBjb21wYXJlIChqdWRnbWVudCBw b2ludCkKKyAqICAgLSBSUFJfRUxFTV9BQlNPUkJBQkxFX0JSQU5DSDogbWFya3MgdGhlIGFic29y YmFibGUgcmVnaW9uCisgKgorICogICBTZWUgY29tcHV0ZUFic29yYmFiaWxpdHkoKSBhbmQgdGhl IGRldGFpbGVkIGNvbW1lbnRzIGJlZm9yZQorICogICBpc1VuYm91bmRlZFN0YXJ0KCkgZm9yIHRo ZSBmdWxsIGRlc2lnbiBleHBsYW5hdGlvbi4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxp Zm9ybmlhCisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL3Jwci5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUg InBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKKyNpbmNsdWRlICJv cHRpbWl6ZXIvcnByLmgiCisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb25zIC0gcGF0dGVybiBjb21w YXJpc29uICovCitzdGF0aWMgYm9vbCBycHJQYXR0ZXJuRXF1YWwoUlBSUGF0dGVybk5vZGUgKmEs IFJQUlBhdHRlcm5Ob2RlICpiKTsKK3N0YXRpYyBib29sIHJwclBhdHRlcm5DaGlsZHJlbkVxdWFs KExpc3QgKmEsIExpc3QgKmIpOworCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAtIHBhdHRlcm4g b3B0aW1pemF0aW9uIChzaGFyZWQpICovCitzdGF0aWMgUlBSUGF0dGVybk5vZGUgKnRyeVVud3Jh cFNpbmdsZUNoaWxkKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKTsKKworLyogRm9yd2FyZCBkZWNs YXJhdGlvbnMgLSBTRVEgb3B0aW1pemF0aW9uICovCitzdGF0aWMgTGlzdCAqZmxhdHRlblNlcUNo aWxkcmVuKExpc3QgKmNoaWxkcmVuKTsKK3N0YXRpYyBMaXN0ICptZXJnZUNvbnNlY3V0aXZlVmFy cyhMaXN0ICpjaGlsZHJlbik7CitzdGF0aWMgTGlzdCAqbWVyZ2VDb25zZWN1dGl2ZUdyb3VwcyhM aXN0ICpjaGlsZHJlbik7CitzdGF0aWMgTGlzdCAqbWVyZ2VDb25zZWN1dGl2ZUFsdHMoTGlzdCAq Y2hpbGRyZW4pOworc3RhdGljIExpc3QgKm1lcmdlR3JvdXBQcmVmaXhTdWZmaXgoTGlzdCAqY2hp bGRyZW4pOworc3RhdGljIFJQUlBhdHRlcm5Ob2RlICpvcHRpbWl6ZVNlcVBhdHRlcm4oUlBSUGF0 dGVybk5vZGUgKnBhdHRlcm4pOworCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAtIEFMVCBvcHRp bWl6YXRpb24gKi8KK3N0YXRpYyBMaXN0ICpmbGF0dGVuQWx0Q2hpbGRyZW4oTGlzdCAqY2hpbGRy ZW4pOworc3RhdGljIExpc3QgKnJlbW92ZUR1cGxpY2F0ZUFsdGVybmF0aXZlcyhMaXN0ICpjaGls ZHJlbik7CitzdGF0aWMgUlBSUGF0dGVybk5vZGUgKm9wdGltaXplQWx0UGF0dGVybihSUFJQYXR0 ZXJuTm9kZSAqcGF0dGVybik7CisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb25zIC0gR1JPVVAgb3B0 aW1pemF0aW9uICovCitzdGF0aWMgUlBSUGF0dGVybk5vZGUgKnRyeU11bHRpcGx5UXVhbnRpZmll cnMoUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pOworc3RhdGljIFJQUlBhdHRlcm5Ob2RlICp0cnlV bndyYXBHcm91cChSUFJQYXR0ZXJuTm9kZSAqcGF0dGVybik7CitzdGF0aWMgUlBSUGF0dGVybk5v ZGUgKm9wdGltaXplR3JvdXBQYXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKTsKKworLyog Rm9yd2FyZCBkZWNsYXJhdGlvbnMgLSBvcHRpbWl6YXRpb24gZGlzcGF0Y2hlciAqLworc3RhdGlj IFJQUlBhdHRlcm5Ob2RlICpvcHRpbWl6ZVJQUlBhdHRlcm4oUlBSUGF0dGVybk5vZGUgKnBhdHRl cm4pOworCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAtIHBhdHRlcm4gY29tcGlsYXRpb24gKi8K K3N0YXRpYyBpbnQJY29sbGVjdERlZmluZVZhcmlhYmxlcyhMaXN0ICpkZWZpbmVWYXJpYWJsZUxp c3QsIGNoYXIgKip2YXJOYW1lcyk7CitzdGF0aWMgdm9pZCBzY2FuUlBSUGF0dGVyblJlY3Vyc2l2 ZShSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgY2hhciAqKnZhck5hbWVzLAorCQkJCQkJCQkJaW50ICpu dW1WYXJzLCBpbnQgKm51bUVsZW1lbnRzLAorCQkJCQkJCQkJUlBSRGVwdGggZGVwdGgsIFJQUkRl cHRoICptYXhEZXB0aCk7CitzdGF0aWMgdm9pZCBzY2FuUlBSUGF0dGVybihSUFJQYXR0ZXJuTm9k ZSAqbm9kZSwgY2hhciAqKnZhck5hbWVzLCBpbnQgKm51bVZhcnMsCisJCQkJCQkgICBpbnQgKm51 bUVsZW1lbnRzLCBSUFJEZXB0aCAqbWF4RGVwdGgpOworc3RhdGljIFJQUlBhdHRlcm4gKmFsbG9j YXRlUlBSUGF0dGVybihpbnQgbnVtVmFycywgaW50IG51bUVsZW1lbnRzLAorCQkJCQkJCQkJICBS UFJEZXB0aCBtYXhEZXB0aCwgY2hhciAqKnZhck5hbWVzU3RhY2spOworc3RhdGljIFJQUlZhcklk IGdldFZhcklkRnJvbVBhdHRlcm4oUlBSUGF0dGVybiAqcGF0LCBjb25zdCBjaGFyICp2YXJOYW1l KTsKK3N0YXRpYyB2b2lkIGZpbGxSUFJQYXR0ZXJuVmFyKFJQUlBhdHRlcm5Ob2RlICpub2RlLCBS UFJQYXR0ZXJuICpwYXQsCisJCQkJCQkJICBpbnQgKmlkeCwgUlBSRGVwdGggZGVwdGgpOworc3Rh dGljIHZvaWQgZmlsbFJQUlBhdHRlcm5Hcm91cChSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgUlBSUGF0 dGVybiAqcGF0LAorCQkJCQkJCQlpbnQgKmlkeCwgUlBSRGVwdGggZGVwdGgpOworc3RhdGljIHZv aWQgZmlsbFJQUlBhdHRlcm5BbHQoUlBSUGF0dGVybk5vZGUgKm5vZGUsIFJQUlBhdHRlcm4gKnBh dCwKKwkJCQkJCQkgIGludCAqaWR4LCBSUFJEZXB0aCBkZXB0aCk7CitzdGF0aWMgdm9pZCBmaWxs UlBSUGF0dGVybihSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgUlBSUGF0dGVybiAqcGF0LAorCQkJCQkJ ICAgaW50ICppZHgsIFJQUkRlcHRoIGRlcHRoKTsKK3N0YXRpYyB2b2lkIGZpbmFsaXplUlBSUGF0 dGVybihSUFJQYXR0ZXJuICpyZXN1bHQpOworCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAtIGNv bnRleHQgYWJzb3JwdGlvbiAqLworc3RhdGljIGJvb2wgaXNVbmJvdW5kZWRTdGFydChSUFJQYXR0 ZXJuICpwYXR0ZXJuLCBSUFJFbGVtSWR4IGlkeCk7CitzdGF0aWMgdm9pZCBjb21wdXRlQWJzb3Ji YWJpbGl0eVJlY3Vyc2l2ZShSUFJQYXR0ZXJuICpwYXR0ZXJuLAorCQkJCQkJCQkJCSAgUlBSRWxl bUlkeCBzdGFydElkeCwKKwkJCQkJCQkJCQkgIGJvb2wgKmhhc0Fic29yYmFibGUpOworc3RhdGlj IHZvaWQgY29tcHV0ZUFic29yYmFiaWxpdHkoUlBSUGF0dGVybiAqcGF0dGVybik7CisKKy8qCisg KiBycHJQYXR0ZXJuRXF1YWwKKyAqCQlDb21wYXJlIHR3byBSUFJQYXR0ZXJuTm9kZSB0cmVlcyBm b3IgZXF1YWxpdHkuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSB0cmVlcyBhcmUgc3RydWN0 dXJhbGx5IGlkZW50aWNhbC4KKyAqLworc3RhdGljIGJvb2wKK3JwclBhdHRlcm5FcXVhbChSUFJQ YXR0ZXJuTm9kZSAqYSwgUlBSUGF0dGVybk5vZGUgKmIpCit7CisJLyogUGF0dGVybiBub2RlcyBp biBjaGlsZHJlbiBsaXN0cyBtdXN0IG5ldmVyIGJlIE5VTEwgKi8KKwlBc3NlcnQoYSAhPSBOVUxM ICYmIGIgIT0gTlVMTCk7CisKKwkvKiBNdXN0IGhhdmUgc2FtZSBub2RlIHR5cGUgYW5kIHF1YW50 aWZpZXJzICovCisJaWYgKGEtPm5vZGVUeXBlICE9IGItPm5vZGVUeXBlKQorCQlyZXR1cm4gZmFs c2U7CisJaWYgKGEtPm1pbiAhPSBiLT5taW4gfHwgYS0+bWF4ICE9IGItPm1heCkKKwkJcmV0dXJu IGZhbHNlOworCWlmIChhLT5yZWx1Y3RhbnQgIT0gYi0+cmVsdWN0YW50KQorCQlyZXR1cm4gZmFs c2U7CisKKwlzd2l0Y2ggKGEtPm5vZGVUeXBlKQorCXsKKwkJY2FzZSBSUFJfUEFUVEVSTl9WQVI6 CisJCQlyZXR1cm4gc3RyY21wKGEtPnZhck5hbWUsIGItPnZhck5hbWUpID09IDA7CisKKwkJY2Fz ZSBSUFJfUEFUVEVSTl9TRVE6CisJCWNhc2UgUlBSX1BBVFRFUk5fQUxUOgorCQljYXNlIFJQUl9Q QVRURVJOX0dST1VQOgorCQkJcmV0dXJuIHJwclBhdHRlcm5DaGlsZHJlbkVxdWFsKGEtPmNoaWxk cmVuLCBiLT5jaGlsZHJlbik7CisJfQorCisJcmV0dXJuIGZhbHNlOwkJCQkvKiBrZWVwIGNvbXBp bGVyIHF1aWV0ICovCit9CisKKy8qCisgKiBycHJQYXR0ZXJuQ2hpbGRyZW5FcXVhbAorICoJCUNv bXBhcmUgY2hpbGRyZW4gbGlzdHMgb2YgdHdvIHBhdHRlcm4gbm9kZXMgZm9yIGVxdWFsaXR5Lgor ICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2hpbGRyZW4gbGlzdHMgYXJlIHN0cnVjdHVyYWxs eSBpZGVudGljYWwuCisgKi8KK3N0YXRpYyBib29sCitycHJQYXR0ZXJuQ2hpbGRyZW5FcXVhbChM aXN0ICphLCBMaXN0ICpiKQoreworCUxpc3RDZWxsICAgKmxjYSwKKwkJCSAgICpsY2I7CisKKwlp ZiAobGlzdF9sZW5ndGgoYSkgIT0gbGlzdF9sZW5ndGgoYikpCisJCXJldHVybiBmYWxzZTsKKwor CWZvcmJvdGgobGNhLCBhLCBsY2IsIGIpCisJeworCQlpZiAoIXJwclBhdHRlcm5FcXVhbCgoUlBS UGF0dGVybk5vZGUgKikgbGZpcnN0KGxjYSksCisJCQkJCQkJIChSUFJQYXR0ZXJuTm9kZSAqKSBs Zmlyc3QobGNiKSkpCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisK Ky8qCisgKiB0cnlVbndyYXBTaW5nbGVDaGlsZAorICoJCVRyeSB0byB1bndyYXAgcGF0dGVybiBu b2RlIHdpdGggc2luZ2xlIGNoaWxkLgorICoKKyAqIEV4YW1wbGVzIChpbnRlcm5hbCBub2RlIHJl cHJlc2VudGF0aW9uKToKKyAqICAgU0VRW0FdIC0+IEEgICAgKHNpbmdsZS1lbGVtZW50IHNlcXVl bmNlIGJlY29tZXMgdGhlIGVsZW1lbnQpCisgKiAgIEFMVFtBXSAtPiBBICAgIChzaW5nbGUtYWx0 ZXJuYXRpdmUgYmVjb21lcyB0aGUgYWx0ZXJuYXRpdmUpCisgKgorICogSWYgcGF0dGVybiBoYXMg ZXhhY3RseSBvbmUgY2hpbGQsIHJldHVybiB0aGUgY2hpbGQgZGlyZWN0bHkuCisgKiBPdGhlcndp c2UgcmV0dXJucyB0aGUgcGF0dGVybiB1bmNoYW5nZWQuCisgKiBVc2VkIGJ5IGJvdGggU0VRIGFu ZCBBTFQgb3B0aW1pemF0aW9uLgorICovCitzdGF0aWMgUlBSUGF0dGVybk5vZGUgKgordHJ5VW53 cmFwU2luZ2xlQ2hpbGQoUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pCit7CisJaWYgKGxpc3RfbGVu Z3RoKHBhdHRlcm4tPmNoaWxkcmVuKSA9PSAxKQorCQlyZXR1cm4gKFJQUlBhdHRlcm5Ob2RlICop IGxpbml0aWFsKHBhdHRlcm4tPmNoaWxkcmVuKTsKKworCXJldHVybiBwYXR0ZXJuOworfQorCisv KgorICogZmxhdHRlblNlcUNoaWxkcmVuCisgKgkJUmVjdXJzaXZlbHkgb3B0aW1pemUgY2hpbGRy ZW4gYW5kIGZsYXR0ZW4gbmVzdGVkIFNFUS4KKyAqCisgKiBFeGFtcGxlOgorICogICBTRVEoQSwg U0VRKEIsIEMpKSAtPiBTRVEoQSwgQiwgQykKKyAqCisgKiBSZXR1cm5zIGEgbmV3IGxpc3Qgd2l0 aCBvcHRpbWl6ZWQgY2hpbGRyZW4sIHdpdGggbmVzdGVkIFNFUSBjaGlsZHJlbgorICogZmxhdHRl bmVkIGludG8gdGhlIHBhcmVudCBsaXN0LgorICovCitzdGF0aWMgTGlzdCAqCitmbGF0dGVuU2Vx Q2hpbGRyZW4oTGlzdCAqY2hpbGRyZW4pCit7CisJTGlzdENlbGwgICAqbGM7CisJTGlzdAkgICAq bmV3Q2hpbGRyZW4gPSBOSUw7CisKKwlmb3JlYWNoKGxjLCBjaGlsZHJlbikKKwl7CisJCVJQUlBh dHRlcm5Ob2RlICpjaGlsZCA9IChSUFJQYXR0ZXJuTm9kZSAqKSBsZmlyc3QobGMpOworCQlSUFJQ YXR0ZXJuTm9kZSAqb3B0ID0gb3B0aW1pemVSUFJQYXR0ZXJuKGNoaWxkKTsKKworCQkvKiBHUk9V UHsxLDF9IHNob3VsZCBoYXZlIGJlZW4gdW53cmFwcGVkIGJ5IG9wdGltaXplR3JvdXBQYXR0ZXJu ICovCisJCUFzc2VydCghKG9wdC0+bm9kZVR5cGUgPT0gUlBSX1BBVFRFUk5fR1JPVVAgJiYKKwkJ CQkgb3B0LT5taW4gPT0gMSAmJiBvcHQtPm1heCA9PSAxICYmIG9wdC0+cmVsdWN0YW50IDwgMCkp OworCisJCWlmIChvcHQtPm5vZGVUeXBlID09IFJQUl9QQVRURVJOX1NFUSkKKwkJeworCQkJbmV3 Q2hpbGRyZW4gPSBsaXN0X2NvbmNhdChuZXdDaGlsZHJlbiwKKwkJCQkJCQkJCSAgbGlzdF9jb3B5 KG9wdC0+Y2hpbGRyZW4pKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCW5ld0NoaWxkcmVuID0gbGFw cGVuZChuZXdDaGlsZHJlbiwgb3B0KTsKKwkJfQorCX0KKworCXJldHVybiBuZXdDaGlsZHJlbjsK K30KKworLyoKKyAqIG1lcmdlQ29uc2VjdXRpdmVWYXJzCisgKgkJTWVyZ2UgY29uc2VjdXRpdmUg aWRlbnRpY2FsIFZBUiBub2Rlcy4KKyAqCisgKiBFeGFtcGxlczoKKyAqICAgQXttMSxNMX0gQXtt MixNMn0gLT4gQXttMSttMiwgTTErTTJ9IHdoZXJlIElORiArIHggPSBJTkYuCisgKgorICogT25s eSBtZXJnZXMgbm9uLXJlbHVjdGFudCBWQVIgbm9kZXMgd2l0aCB0aGUgc2FtZSB2YXJpYWJsZSBu YW1lLgorICovCitzdGF0aWMgTGlzdCAqCittZXJnZUNvbnNlY3V0aXZlVmFycyhMaXN0ICpjaGls ZHJlbikKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlMaXN0CSAgICptZXJnZWRDaGlsZHJlbiA9IE5J TDsKKwlSUFJQYXR0ZXJuTm9kZSAqcHJldiA9IE5VTEw7CisKKwlmb3JlYWNoKGxjLCBjaGlsZHJl bikKKwl7CisJCVJQUlBhdHRlcm5Ob2RlICpjaGlsZCA9IChSUFJQYXR0ZXJuTm9kZSAqKSBsZmly c3QobGMpOworCisJCWlmIChjaGlsZC0+bm9kZVR5cGUgPT0gUlBSX1BBVFRFUk5fVkFSICYmIGNo aWxkLT5yZWx1Y3RhbnQgPCAwKQorCQl7CisJCQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJ CQkgKiBDYW4gbWVyZ2UgY29uc2VjdXRpdmUgVkFSIG5vZGVzIGlmOgorCQkJICogMS4gU2FtZSB2 YXJpYWJsZSBuYW1lCisJCQkgKiAyLiBObyBtaW4gb3ZlcmZsb3c6IHByZXYtPm1pbiArIGNoaWxk LT5taW4gPD0gSU5GCisJCQkgKiAzLiBObyBtYXggb3ZlcmZsb3c6IHByZXYtPm1heCArIGNoaWxk LT5tYXggPD0gSU5GIChvciBlaXRoZXIgaXMgSU5GKQorCQkJICovCisJCQlpZiAocHJldiAhPSBO VUxMICYmCisJCQkJc3RyY21wKHByZXYtPnZhck5hbWUsIGNoaWxkLT52YXJOYW1lKSA9PSAwICYm CisJCQkJcHJldi0+bWluIDw9IFJQUl9RVUFOVElUWV9JTkYgLSBjaGlsZC0+bWluICYmCisJCQkJ KHByZXYtPm1heCA8PSBSUFJfUVVBTlRJVFlfSU5GIC0gY2hpbGQtPm1heCB8fAorCQkJCSBwcmV2 LT5tYXggPT0gUlBSX1FVQU5USVRZX0lORiB8fAorCQkJCSBjaGlsZC0+bWF4ID09IFJQUl9RVUFO VElUWV9JTkYpKQorCQkJeworCQkJCS8qCisJCQkJICogTWVyZ2U6IGFjY3VtdWxhdGUgbWluL21h eCBpbnRvIHByZXYuIHByZXYgaXMgZ3VhcmFudGVlZCB0bworCQkJCSAqIGJlIGEgbm9uLXJlbHVj dGFudCBWQVIgYnkgdGhlIG91dGVyIGNvbmRpdGlvbi4KKwkJCQkgKi8KKwkJCQlBc3NlcnQocHJl di0+bm9kZVR5cGUgPT0gUlBSX1BBVFRFUk5fVkFSICYmIHByZXYtPnJlbHVjdGFudCA8IDApOwor CisJCQkJcHJldi0+bWluICs9IGNoaWxkLT5taW47CisKKwkJCQlpZiAocHJldi0+bWF4ID09IFJQ Ul9RVUFOVElUWV9JTkYgfHwKKwkJCQkJY2hpbGQtPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GKQor CQkJCQlwcmV2LT5tYXggPSBSUFJfUVVBTlRJVFlfSU5GOworCQkJCWVsc2UKKwkJCQkJcHJldi0+ bWF4ICs9IGNoaWxkLT5tYXg7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyogRmx1c2ggcHJl dmlvdXMgYW5kIHN0YXJ0IG5ldyAqLworCQkJCWlmIChwcmV2ICE9IE5VTEwpCisJCQkJCW1lcmdl ZENoaWxkcmVuID0gbGFwcGVuZChtZXJnZWRDaGlsZHJlbiwgcHJldik7CisJCQkJcHJldiA9IGNo aWxkOworCQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJLyogTm9uLW1lcmdlYWJsZSAtIGZsdXNo IHByZXZpb3VzICovCisJCQlpZiAocHJldiAhPSBOVUxMKQorCQkJCW1lcmdlZENoaWxkcmVuID0g bGFwcGVuZChtZXJnZWRDaGlsZHJlbiwgcHJldik7CisJCQltZXJnZWRDaGlsZHJlbiA9IGxhcHBl bmQobWVyZ2VkQ2hpbGRyZW4sIGNoaWxkKTsKKwkJCXByZXYgPSBOVUxMOworCQl9CisJfQorCisJ LyogRmx1c2ggcmVtYWluaW5nICovCisJaWYgKHByZXYgIT0gTlVMTCkKKwkJbWVyZ2VkQ2hpbGRy ZW4gPSBsYXBwZW5kKG1lcmdlZENoaWxkcmVuLCBwcmV2KTsKKworCXJldHVybiBtZXJnZWRDaGls ZHJlbjsKK30KKworLyoKKyAqIG1lcmdlQ29uc2VjdXRpdmVHcm91cHMKKyAqCQlNZXJnZSBjb25z ZWN1dGl2ZSBpZGVudGljYWwgR1JPVVAgbm9kZXMuCisgKgorICogRXhhbXBsZToKKyAqICAgKEEg QikrIChBIEIpKyAtPiAoQSBCKXsyLH0KKyAqCisgKiBPbmx5IG1lcmdlcyBub24tcmVsdWN0YW50 IEdST1VQIG5vZGVzIHdpdGggaWRlbnRpY2FsIGNoaWxkcmVuLgorICovCitzdGF0aWMgTGlzdCAq CittZXJnZUNvbnNlY3V0aXZlR3JvdXBzKExpc3QgKmNoaWxkcmVuKQoreworCUxpc3RDZWxsICAg KmxjOworCUxpc3QJICAgKm1lcmdlZENoaWxkcmVuID0gTklMOworCVJQUlBhdHRlcm5Ob2RlICpw cmV2ID0gTlVMTDsKKworCWZvcmVhY2gobGMsIGNoaWxkcmVuKQorCXsKKwkJUlBSUGF0dGVybk5v ZGUgKmNoaWxkID0gKFJQUlBhdHRlcm5Ob2RlICopIGxmaXJzdChsYyk7CisKKwkJaWYgKGNoaWxk LT5ub2RlVHlwZSA9PSBSUFJfUEFUVEVSTl9HUk9VUCAmJiBjaGlsZC0+cmVsdWN0YW50IDwgMCkK KwkJeworCQkJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkJICogQ2FuIG1lcmdlIGNvbnNl Y3V0aXZlIEdST1VQIG5vZGVzIGlmOgorCQkJICogMS4gSWRlbnRpY2FsIGNoaWxkcmVuCisJCQkg KiAyLiBObyBtaW4gb3ZlcmZsb3c6IHByZXYtPm1pbiArIGNoaWxkLT5taW4gPD0gSU5GCisJCQkg KiAzLiBObyBtYXggb3ZlcmZsb3c6IHByZXYtPm1heCArIGNoaWxkLT5tYXggPD0gSU5GIChvciBl aXRoZXIgaXMgSU5GKQorCQkJICovCisJCQlpZiAocHJldiAhPSBOVUxMICYmCisJCQkJcnByUGF0 dGVybkNoaWxkcmVuRXF1YWwocHJldi0+Y2hpbGRyZW4sIGNoaWxkLT5jaGlsZHJlbikgJiYKKwkJ CQlwcmV2LT5taW4gPD0gUlBSX1FVQU5USVRZX0lORiAtIGNoaWxkLT5taW4gJiYKKwkJCQkocHJl di0+bWF4IDw9IFJQUl9RVUFOVElUWV9JTkYgLSBjaGlsZC0+bWF4IHx8CisJCQkJIHByZXYtPm1h eCA9PSBSUFJfUVVBTlRJVFlfSU5GIHx8CisJCQkJIGNoaWxkLT5tYXggPT0gUlBSX1FVQU5USVRZ X0lORikpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBNZXJnZTogYWNjdW11bGF0ZSBtaW4vbWF4IGlu dG8gcHJldi4gcHJldiBpcyBndWFyYW50ZWVkIHRvCisJCQkJICogYmUgYSBub24tcmVsdWN0YW50 IEdST1VQIGJ5IHRoZSBvdXRlciBjb25kaXRpb24uCisJCQkJICovCisJCQkJQXNzZXJ0KHByZXYt Pm5vZGVUeXBlID09IFJQUl9QQVRURVJOX0dST1VQICYmIHByZXYtPnJlbHVjdGFudCA8IDApOwor CisJCQkJcHJldi0+bWluICs9IGNoaWxkLT5taW47CisKKwkJCQlpZiAocHJldi0+bWF4ID09IFJQ Ul9RVUFOVElUWV9JTkYgfHwKKwkJCQkJY2hpbGQtPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GKQor CQkJCQlwcmV2LT5tYXggPSBSUFJfUVVBTlRJVFlfSU5GOworCQkJCWVsc2UKKwkJCQkJcHJldi0+ bWF4ICs9IGNoaWxkLT5tYXg7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyogRmx1c2ggcHJl dmlvdXMgYW5kIHN0YXJ0IG5ldyAqLworCQkJCWlmIChwcmV2ICE9IE5VTEwpCisJCQkJCW1lcmdl ZENoaWxkcmVuID0gbGFwcGVuZChtZXJnZWRDaGlsZHJlbiwgcHJldik7CisJCQkJcHJldiA9IGNo aWxkOworCQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJLyogTm9uLW1lcmdlYWJsZSAtIGZsdXNo IHByZXZpb3VzICovCisJCQlpZiAocHJldiAhPSBOVUxMKQorCQkJCW1lcmdlZENoaWxkcmVuID0g bGFwcGVuZChtZXJnZWRDaGlsZHJlbiwgcHJldik7CisJCQltZXJnZWRDaGlsZHJlbiA9IGxhcHBl bmQobWVyZ2VkQ2hpbGRyZW4sIGNoaWxkKTsKKwkJCXByZXYgPSBOVUxMOworCQl9CisJfQorCisJ LyogRmx1c2ggcmVtYWluaW5nICovCisJaWYgKHByZXYgIT0gTlVMTCkKKwkJbWVyZ2VkQ2hpbGRy ZW4gPSBsYXBwZW5kKG1lcmdlZENoaWxkcmVuLCBwcmV2KTsKKworCXJldHVybiBtZXJnZWRDaGls ZHJlbjsKK30KKworLyoKKyAqIG1lcmdlQ29uc2VjdXRpdmVBbHRzCisgKgkJTWVyZ2UgY29uc2Vj dXRpdmUgaWRlbnRpY2FsIEFMVCBub2RlcyBpbnRvIGEgR1JPVVAuCisgKgorICogRXhhbXBsZToK KyAqICAgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgLT4gKEEgfCBCKXszfQorICoKKyAqIEFmdGVy IEdST1VQezEsMX0gdW53cmFwLCBiYXJlIGFsdGVybmF0aW9ucyBsaWtlIChBIHwgQikgYmVjb21l IEFMVCBub2RlcworICogaW4gdGhlIFNFUS4gIFRoaXMgc3RlcCBkZXRlY3RzIGNvbnNlY3V0aXZl IGlkZW50aWNhbCBBTFQgbm9kZXMgYW5kIHdyYXBzCisgKiB0aGVtIGluIGEgR1JPVVAgd2l0aCB0 aGUgYXBwcm9wcmlhdGUgcXVhbnRpZmllci4KKyAqLworc3RhdGljIExpc3QgKgorbWVyZ2VDb25z ZWN1dGl2ZUFsdHMoTGlzdCAqY2hpbGRyZW4pCit7CisJTGlzdENlbGwgICAqbGM7CisJTGlzdAkg ICAqbWVyZ2VkQ2hpbGRyZW4gPSBOSUw7CisJUlBSUGF0dGVybk5vZGUgKnByZXYgPSBOVUxMOwor CWludAkJCWNvdW50ID0gMDsKKworCWZvcmVhY2gobGMsIGNoaWxkcmVuKQorCXsKKwkJUlBSUGF0 dGVybk5vZGUgKmNoaWxkID0gKFJQUlBhdHRlcm5Ob2RlICopIGxmaXJzdChsYyk7CisKKwkJaWYg KGNoaWxkLT5ub2RlVHlwZSA9PSBSUFJfUEFUVEVSTl9BTFQgJiYgY2hpbGQtPnJlbHVjdGFudCA8 IDApCisJCXsKKwkJCWlmIChwcmV2ICE9IE5VTEwgJiYKKwkJCQlycHJQYXR0ZXJuQ2hpbGRyZW5F cXVhbChwcmV2LT5jaGlsZHJlbiwgY2hpbGQtPmNoaWxkcmVuKSkKKwkJCXsKKwkJCQkvKiBTYW1l IEFMVCBhcyBwcmV2IC0gYWNjdW11bGF0ZSAqLworCQkJCWNvdW50Kys7CisJCQl9CisJCQllbHNl CisJCQl7CisJCQkJLyogRGlmZmVyZW50IEFMVCBvciBmaXJzdCBBTFQgLSBmbHVzaCBwcmV2aW91 cyAqLworCQkJCWlmIChwcmV2ICE9IE5VTEwpCisJCQkJeworCQkJCQlpZiAoY291bnQgPiAxKQor CQkJCQl7CisJCQkJCQkvKiBXcmFwIGluIEdST1VQe2NvdW50LGNvdW50fShBTFQpICovCisJCQkJ CQlSUFJQYXR0ZXJuTm9kZSAqZ3JvdXAgPSBtYWtlTm9kZShSUFJQYXR0ZXJuTm9kZSk7CisKKwkJ CQkJCWdyb3VwLT5ub2RlVHlwZSA9IFJQUl9QQVRURVJOX0dST1VQOworCQkJCQkJZ3JvdXAtPm1p biA9IGNvdW50OworCQkJCQkJZ3JvdXAtPm1heCA9IGNvdW50OworCQkJCQkJZ3JvdXAtPnJlbHVj dGFudCA9IC0xOworCQkJCQkJZ3JvdXAtPmxvY2F0aW9uID0gLTE7CisJCQkJCQlncm91cC0+Y2hp bGRyZW4gPSBsaXN0X21ha2UxKHByZXYpOworCQkJCQkJbWVyZ2VkQ2hpbGRyZW4gPSBsYXBwZW5k KG1lcmdlZENoaWxkcmVuLCBncm91cCk7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQkJbWVyZ2Vk Q2hpbGRyZW4gPSBsYXBwZW5kKG1lcmdlZENoaWxkcmVuLCBwcmV2KTsKKwkJCQl9CisJCQkJcHJl diA9IGNoaWxkOworCQkJCWNvdW50ID0gMTsKKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCS8q IE5vbi1BTFQgLSBmbHVzaCBwcmV2aW91cyAqLworCQkJaWYgKHByZXYgIT0gTlVMTCkKKwkJCXsK KwkJCQlpZiAoY291bnQgPiAxKQorCQkJCXsKKwkJCQkJUlBSUGF0dGVybk5vZGUgKmdyb3VwID0g bWFrZU5vZGUoUlBSUGF0dGVybk5vZGUpOworCisJCQkJCWdyb3VwLT5ub2RlVHlwZSA9IFJQUl9Q QVRURVJOX0dST1VQOworCQkJCQlncm91cC0+bWluID0gY291bnQ7CisJCQkJCWdyb3VwLT5tYXgg PSBjb3VudDsKKwkJCQkJZ3JvdXAtPnJlbHVjdGFudCA9IC0xOworCQkJCQlncm91cC0+bG9jYXRp b24gPSAtMTsKKwkJCQkJZ3JvdXAtPmNoaWxkcmVuID0gbGlzdF9tYWtlMShwcmV2KTsKKwkJCQkJ bWVyZ2VkQ2hpbGRyZW4gPSBsYXBwZW5kKG1lcmdlZENoaWxkcmVuLCBncm91cCk7CisJCQkJfQor CQkJCWVsc2UKKwkJCQkJbWVyZ2VkQ2hpbGRyZW4gPSBsYXBwZW5kKG1lcmdlZENoaWxkcmVuLCBw cmV2KTsKKwkJCX0KKwkJCW1lcmdlZENoaWxkcmVuID0gbGFwcGVuZChtZXJnZWRDaGlsZHJlbiwg Y2hpbGQpOworCQkJcHJldiA9IE5VTEw7CisJCQljb3VudCA9IDA7CisJCX0KKwl9CisKKwkvKiBG bHVzaCByZW1haW5pbmcgKi8KKwlpZiAocHJldiAhPSBOVUxMKQorCXsKKwkJaWYgKGNvdW50ID4g MSkKKwkJeworCQkJUlBSUGF0dGVybk5vZGUgKmdyb3VwID0gbWFrZU5vZGUoUlBSUGF0dGVybk5v ZGUpOworCisJCQlncm91cC0+bm9kZVR5cGUgPSBSUFJfUEFUVEVSTl9HUk9VUDsKKwkJCWdyb3Vw LT5taW4gPSBjb3VudDsKKwkJCWdyb3VwLT5tYXggPSBjb3VudDsKKwkJCWdyb3VwLT5yZWx1Y3Rh bnQgPSAtMTsKKwkJCWdyb3VwLT5sb2NhdGlvbiA9IC0xOworCQkJZ3JvdXAtPmNoaWxkcmVuID0g bGlzdF9tYWtlMShwcmV2KTsKKwkJCW1lcmdlZENoaWxkcmVuID0gbGFwcGVuZChtZXJnZWRDaGls ZHJlbiwgZ3JvdXApOworCQl9CisJCWVsc2UKKwkJCW1lcmdlZENoaWxkcmVuID0gbGFwcGVuZCht ZXJnZWRDaGlsZHJlbiwgcHJldik7CisJfQorCisJcmV0dXJuIG1lcmdlZENoaWxkcmVuOworfQor CisvKgorICogbWVyZ2VHcm91cFByZWZpeFN1ZmZpeAorICoJCU1lcmdlIHNlcXVlbmNlIHByZWZp eC9zdWZmaXggaW50byBHUk9VUCB3aXRoIG1hdGNoaW5nIGNoaWxkcmVuLgorICoKKyAqIEV4YW1w bGVzOgorICogICBBIEIgKEEgQikrIC0+IChBIEIpezIsfQorICogICAoQSBCKSsgQSBCIC0+IChB IEIpezIsfQorICogICBBIEIgKEEgQikrIEEgQiAtPiAoQSBCKXszLH0KKyAqLworc3RhdGljIExp c3QgKgorbWVyZ2VHcm91cFByZWZpeFN1ZmZpeChMaXN0ICpjaGlsZHJlbikKK3sKKwlMaXN0CSAg ICpyZXN1bHQgPSBOSUw7CisJaW50CQkJbnVtQ2hpbGRyZW4gPSBsaXN0X2xlbmd0aChjaGlsZHJl bik7CisJaW50CQkJaTsKKwlpbnQJCQlza2lwVW50aWwgPSAtMTsgLyogc2tpcCBzdWZmaXggZWxl bWVudHMgYWxyZWFkeSBhYnNvcmJlZCAqLworCisJZm9yIChpID0gMDsgaSA8IG51bUNoaWxkcmVu OyBpKyspCisJeworCQlSUFJQYXR0ZXJuTm9kZSAqY2hpbGQgPSAoUlBSUGF0dGVybk5vZGUgKikg bGlzdF9udGgoY2hpbGRyZW4sIGkpOworCisJCS8qCisJCSAqIFRoZSBzdWZmaXggYWJzb3JwdGlv biBsb2dpYyBiZWxvdyBhZGp1c3RzIGkgdG8gc2tpcCBhYnNvcmJlZAorCQkgKiBlbGVtZW50cywg ZW5zdXJpbmcgd2UgbmV2ZXIgcmV2aXNpdCB0aGVtLiBWZXJpZnkgdGhpcyBpbnZhcmlhbnQuCisJ CSAqLworCQlBc3NlcnQoaSA+PSBza2lwVW50aWwpOworCisJCS8qCisJCSAqIElmIHRoaXMgaXMg YSBHUk9VUCwgc2VlIGlmIHByZWNlZGluZy9mb2xsb3dpbmcgZWxlbWVudHMgbWF0Y2ggaXRzCisJ CSAqIGNoaWxkcmVuLiBHUk9VUCdzIGNvbnRlbnQgbWF5IGJlIHdyYXBwZWQgaW4gYSBTRVEgLSB1 bndyYXAgZm9yCisJCSAqIGNvbXBhcmlzb24uCisJCSAqLworCQlpZiAoY2hpbGQtPm5vZGVUeXBl ID09IFJQUl9QQVRURVJOX0dST1VQICYmIGNoaWxkLT5yZWx1Y3RhbnQgPCAwKQorCQl7CisJCQlM aXN0CSAgICpncm91cENvbnRlbnQgPSBjaGlsZC0+Y2hpbGRyZW47CisJCQlpbnQJCQlncm91cENo aWxkQ291bnQ7CisJCQlpbnQJCQlwcmVmaXhMZW4gPSBsaXN0X2xlbmd0aChyZXN1bHQpOworCisJ CQkvKgorCQkJICogSWYgR1JPVVAgaGFzIHNpbmdsZSBTRVEgY2hpbGQsIGNvbXBhcmUgd2l0aCBT RVEncyBjaGlsZHJlbi4KKwkJCSAqIGUuZy4sIChBIEIpKyBpbnRlcm5hbGx5IGNvbnRhaW5zIHNl cXVlbmNlIEEgQjsgY29tcGFyZSBhZ2FpbnN0CisJCQkgKiB0aGF0LgorCQkJICovCisJCQlpZiAo bGlzdF9sZW5ndGgoZ3JvdXBDb250ZW50KSA9PSAxKQorCQkJeworCQkJCVJQUlBhdHRlcm5Ob2Rl ICppbm5lciA9IChSUFJQYXR0ZXJuTm9kZSAqKSBsaW5pdGlhbChncm91cENvbnRlbnQpOworCisJ CQkJaWYgKGlubmVyLT5ub2RlVHlwZSA9PSBSUFJfUEFUVEVSTl9TRVEpCisJCQkJCWdyb3VwQ29u dGVudCA9IGlubmVyLT5jaGlsZHJlbjsKKwkJCX0KKworCQkJZ3JvdXBDaGlsZENvdW50ID0gbGlz dF9sZW5ndGgoZ3JvdXBDb250ZW50KTsKKworCQkJLyoKKwkJCSAqIFBSRUZJWCBNRVJHRTogQ2hl Y2sgaWYgcHJlY2VkaW5nIGVsZW1lbnRzIG1hdGNoLiBLZWVwIGFic29yYmluZworCQkJICogYXMg bG9uZyBhcyB3ZSBoYXZlIG1hdGNoaW5nIHByZWZpeGVzLgorCQkJICovCisJCQl3aGlsZSAocHJl Zml4TGVuID49IGdyb3VwQ2hpbGRDb3VudCAmJiBncm91cENoaWxkQ291bnQgPiAwKQorCQkJewor CQkJCUxpc3QJICAgKnByZWZpeEVsZW1lbnRzID0gTklMOworCQkJCWludAkJCWo7CisKKwkJCQkv KiBFeHRyYWN0IGxhc3QgZ3JvdXBDaGlsZENvdW50IGVsZW1lbnRzIGZyb20gcHJlZml4ICovCisJ CQkJZm9yIChqID0gcHJlZml4TGVuIC0gZ3JvdXBDaGlsZENvdW50OyBqIDwgcHJlZml4TGVuOyBq KyspCisJCQkJeworCQkJCQlwcmVmaXhFbGVtZW50cyA9IGxhcHBlbmQocHJlZml4RWxlbWVudHMs CisJCQkJCQkJCQkJCSBsaXN0X250aChyZXN1bHQsIGopKTsKKwkJCQl9CisKKwkJCQkvKiBDb21w YXJlIHdpdGggR1JPVVAncyAocG9zc2libHkgdW53cmFwcGVkKSBjaGlsZHJlbiAqLworCQkJCWlm IChycHJQYXR0ZXJuQ2hpbGRyZW5FcXVhbChwcmVmaXhFbGVtZW50cywgZ3JvdXBDb250ZW50KSAm JgorCQkJCQljaGlsZC0+bWluIDwgUlBSX1FVQU5USVRZX0lORikKKwkJCQl7CisJCQkJCS8qCisJ CQkJCSAqIE1hdGNoISBNZXJnZSBieSBpbmNyZW1lbnRpbmcgR1JPVVAncyBtaW4uIFJlbW92ZSB0 aGUKKwkJCQkJICogcHJlZml4IGVsZW1lbnRzIGZyb20gb3V0cHV0LgorCQkJCQkgKi8KKwkJCQkJ Y2hpbGQtPm1pbiArPSAxOworCisJCQkJCS8qIFJlYnVpbGQgcmVzdWx0IHdpdGhvdXQgbWF0Y2hl ZCBwcmVmaXggKi8KKwkJCQkJeworCQkJCQkJTGlzdAkgICAqdHJpbW1lZCA9IE5JTDsKKworCQkJ CQkJZm9yIChqID0gMDsgaiA8IHByZWZpeExlbiAtIGdyb3VwQ2hpbGRDb3VudDsgaisrKQorCQkJ CQkJeworCQkJCQkJCXRyaW1tZWQgPSBsYXBwZW5kKHRyaW1tZWQsCisJCQkJCQkJCQkJCSAgbGlz dF9udGgocmVzdWx0LCBqKSk7CisJCQkJCQl9CisJCQkJCQlyZXN1bHQgPSB0cmltbWVkOworCQkJ CQkJcHJlZml4TGVuID0gbGlzdF9sZW5ndGgocmVzdWx0KTsKKwkJCQkJfQorCQkJCX0KKwkJCQll bHNlCisJCQkJeworCQkJCQlsaXN0X2ZyZWUocHJlZml4RWxlbWVudHMpOworCQkJCQlicmVhazsK KwkJCQl9CisKKwkJCQlsaXN0X2ZyZWUocHJlZml4RWxlbWVudHMpOworCQkJfQorCisJCQkvKgor CQkJICogU1VGRklYIE1FUkdFOiBDaGVjayBpZiBmb2xsb3dpbmcgZWxlbWVudHMgbWF0Y2guIEtl ZXAgYWJzb3JiaW5nCisJCQkgKiBhcyBsb25nIGFzIHdlIGhhdmUgbWF0Y2hpbmcgc3VmZml4ZXMu CisJCQkgKi8KKwkJCXdoaWxlIChpICsgZ3JvdXBDaGlsZENvdW50IDwgbnVtQ2hpbGRyZW4gJiYg Z3JvdXBDaGlsZENvdW50ID4gMCkKKwkJCXsKKwkJCQlMaXN0CSAgICpzdWZmaXhFbGVtZW50cyA9 IE5JTDsKKwkJCQlpbnQJCQlqOworCQkJCWludAkJCXN1ZmZpeFN0YXJ0ID0gaSArIDE7CisKKwkJ CQkvKiBzdWZmaXhTdGFydCBhbHdheXMgPj0gc2tpcFVudGlsIGFmdGVyIGkgYWRqdXN0bWVudCAq LworCQkJCUFzc2VydChza2lwVW50aWwgPD0gc3VmZml4U3RhcnQpOworCisJCQkJLyogRXh0cmFj dCBuZXh0IGdyb3VwQ2hpbGRDb3VudCBlbGVtZW50cyBhcyBzdWZmaXggKi8KKwkJCQlmb3IgKGog PSAwOyBqIDwgZ3JvdXBDaGlsZENvdW50OyBqKyspCisJCQkJeworCQkJCQlpbnQJCQlpZHggPSBz dWZmaXhTdGFydCArIGo7CisKKwkJCQkJLyogd2hpbGUgY29uZGl0aW9uIGd1YXJhbnRlZXMgaWR4 IDwgbnVtQ2hpbGRyZW4gKi8KKwkJCQkJQXNzZXJ0KGlkeCA8IG51bUNoaWxkcmVuKTsKKwkJCQkJ c3VmZml4RWxlbWVudHMgPSBsYXBwZW5kKHN1ZmZpeEVsZW1lbnRzLAorCQkJCQkJCQkJCQkgbGlz dF9udGgoY2hpbGRyZW4sIGlkeCkpOworCQkJCX0KKworCQkJCS8qIENvbXBhcmUgd2l0aCBHUk9V UCdzIGNoaWxkcmVuICovCisJCQkJaWYgKGxpc3RfbGVuZ3RoKHN1ZmZpeEVsZW1lbnRzKSA9PSBn cm91cENoaWxkQ291bnQgJiYKKwkJCQkJcnByUGF0dGVybkNoaWxkcmVuRXF1YWwoc3VmZml4RWxl bWVudHMsIGdyb3VwQ29udGVudCkgJiYKKwkJCQkJY2hpbGQtPm1pbiA8IFJQUl9RVUFOVElUWV9J TkYpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBNYXRjaCEgQWJzb3JiIHN1ZmZpeCBieSBpbmNy ZW1lbnRpbmcgbWluIGFuZCBza2lwcGluZy4KKwkJCQkJICovCisJCQkJCWNoaWxkLT5taW4gKz0g MTsKKwkJCQkJc2tpcFVudGlsID0gc3VmZml4U3RhcnQgKyBncm91cENoaWxkQ291bnQ7CisKKwkJ CQkJLyoKKwkJCQkJICogVXBkYXRlIGkgdG8gY29udGludWUgc3VmZml4IGNoZWNrIGFmdGVyIGFi c29yYmVkCisJCQkJCSAqIGVsZW1lbnRzCisJCQkJCSAqLworCQkJCQlpID0gc2tpcFVudGlsIC0g MTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJbGlzdF9mcmVlKHN1ZmZpeEVsZW1lbnRz KTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJbGlzdF9mcmVlKHN1ZmZpeEVsZW1lbnRzKTsK KwkJCX0KKwkJfQorCisJCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0LCBjaGlsZCk7CisJfQorCisJ cmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIG9wdGltaXplU2VxUGF0dGVybgorICoJCU9wdGlt aXplIFNFUSBwYXR0ZXJuIG5vZGUuCisgKgorICogT3B0aW1pemF0aW9uczoKKyAqICAgMS4gRmxh dHRlbiBuZXN0ZWQgU0VRIGFuZCBHUk9VUHsxLDF9CisgKiAgIDIuIE1lcmdlIGNvbnNlY3V0aXZl IGlkZW50aWNhbCBWQVIgbm9kZXMKKyAqICAgMy4gTWVyZ2UgY29uc2VjdXRpdmUgaWRlbnRpY2Fs IEdST1VQIG5vZGVzCisgKiAgIDQuIE1lcmdlIGNvbnNlY3V0aXZlIGlkZW50aWNhbCBBTFQgbm9k ZXMgaW50byBHUk9VUAorICogICA1LiBNZXJnZSBwcmVmaXgvc3VmZml4IGludG8gR1JPVVAgd2l0 aCBtYXRjaGluZyBjaGlsZHJlbgorICogICA2LiBVbndyYXAgc2luZ2xlLWl0ZW0gU0VRCisgKi8K K3N0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqCitvcHRpbWl6ZVNlcVBhdHRlcm4oUlBSUGF0dGVybk5v ZGUgKnBhdHRlcm4pCit7CisJLyogUmVjdXJzaXZlbHkgb3B0aW1pemUgY2hpbGRyZW4gYW5kIGZs YXR0ZW4gbmVzdGVkIFNFUS9HUk9VUHsxLDF9ICovCisJcGF0dGVybi0+Y2hpbGRyZW4gPSBmbGF0 dGVuU2VxQ2hpbGRyZW4ocGF0dGVybi0+Y2hpbGRyZW4pOworCisJLyogTWVyZ2UgY29uc2VjdXRp dmUgaWRlbnRpY2FsIFZBUiBub2RlcyAqLworCXBhdHRlcm4tPmNoaWxkcmVuID0gbWVyZ2VDb25z ZWN1dGl2ZVZhcnMocGF0dGVybi0+Y2hpbGRyZW4pOworCisJLyogTWVyZ2UgY29uc2VjdXRpdmUg aWRlbnRpY2FsIEdST1VQIG5vZGVzICovCisJcGF0dGVybi0+Y2hpbGRyZW4gPSBtZXJnZUNvbnNl Y3V0aXZlR3JvdXBzKHBhdHRlcm4tPmNoaWxkcmVuKTsKKworCS8qIE1lcmdlIGNvbnNlY3V0aXZl IGlkZW50aWNhbCBBTFQgbm9kZXMgaW50byBHUk9VUCAqLworCXBhdHRlcm4tPmNoaWxkcmVuID0g bWVyZ2VDb25zZWN1dGl2ZUFsdHMocGF0dGVybi0+Y2hpbGRyZW4pOworCisJLyogTWVyZ2UgcHJl Zml4L3N1ZmZpeCBpbnRvIEdST1VQIHdpdGggbWF0Y2hpbmcgY2hpbGRyZW4gKi8KKwlwYXR0ZXJu LT5jaGlsZHJlbiA9IG1lcmdlR3JvdXBQcmVmaXhTdWZmaXgocGF0dGVybi0+Y2hpbGRyZW4pOwor CisJLyogVW53cmFwIHNpbmdsZS1pdGVtIFNFUSAqLworCXJldHVybiB0cnlVbndyYXBTaW5nbGVD aGlsZChwYXR0ZXJuKTsKK30KKworLyoKKyAqIGZsYXR0ZW5BbHRDaGlsZHJlbgorICoJCVJlY3Vy c2l2ZWx5IG9wdGltaXplIGNoaWxkcmVuIGFuZCBmbGF0dGVuIG5lc3RlZCBBTFQgbm9kZXMuCisg KgorICogRXhhbXBsZToKKyAqICAgKEEgfCAoQiB8IEMpKSAtPiAoQSB8IEIgfCBDKQorICoKKyAq IFJldHVybnMgYSBuZXcgbGlzdCB3aXRoIG9wdGltaXplZCBjaGlsZHJlbiwgd2l0aCBuZXN0ZWQg QUxUIGNoaWxkcmVuCisgKiBmbGF0dGVuZWQgaW50byB0aGUgcGFyZW50IGxpc3QuCisgKi8KK3N0 YXRpYyBMaXN0ICoKK2ZsYXR0ZW5BbHRDaGlsZHJlbihMaXN0ICpjaGlsZHJlbikKK3sKKwlMaXN0 Q2VsbCAgICpsYzsKKwlMaXN0CSAgICpuZXdDaGlsZHJlbiA9IE5JTDsKKworCWZvcmVhY2gobGMs IGNoaWxkcmVuKQorCXsKKwkJUlBSUGF0dGVybk5vZGUgKmNoaWxkID0gKFJQUlBhdHRlcm5Ob2Rl ICopIGxmaXJzdChsYyk7CisJCVJQUlBhdHRlcm5Ob2RlICpvcHQgPSBvcHRpbWl6ZVJQUlBhdHRl cm4oY2hpbGQpOworCisJCWlmIChvcHQtPm5vZGVUeXBlID09IFJQUl9QQVRURVJOX0FMVCkKKwkJ CW5ld0NoaWxkcmVuID0gbGlzdF9jb25jYXQobmV3Q2hpbGRyZW4sIGxpc3RfY29weShvcHQtPmNo aWxkcmVuKSk7CisJCWVsc2UKKwkJCW5ld0NoaWxkcmVuID0gbGFwcGVuZChuZXdDaGlsZHJlbiwg b3B0KTsKKwl9CisKKwlyZXR1cm4gbmV3Q2hpbGRyZW47Cit9CisKKy8qCisgKiByZW1vdmVEdXBs aWNhdGVBbHRlcm5hdGl2ZXMKKyAqCQlSZW1vdmUgZHVwbGljYXRlIGFsdGVybmF0aXZlcyBmcm9t IGEgbGlzdC4KKyAqCisgKiBFeGFtcGxlczoKKyAqICAgKEEgfCBCIHwgQSkgLT4gKEEgfCBCKQor ICogICAoWCB8IFkgfCBYIHwgWiB8IFkpIC0+IChYIHwgWSB8IFopCisgKgorICogUmV0dXJucyBh IG5ldyBsaXN0IHdpdGggb25seSB1bmlxdWUgY2hpbGRyZW4gKGZpcnN0IG9jY3VycmVuY2Uga2Vw dCkuCisgKi8KK3N0YXRpYyBMaXN0ICoKK3JlbW92ZUR1cGxpY2F0ZUFsdGVybmF0aXZlcyhMaXN0 ICpjaGlsZHJlbikKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlMaXN0Q2VsbCAgICpsYzI7CisJTGlz dAkgICAqdW5pcXVlQ2hpbGRyZW4gPSBOSUw7CisKKwlmb3JlYWNoKGxjLCBjaGlsZHJlbikKKwl7 CisJCVJQUlBhdHRlcm5Ob2RlICpjaGlsZCA9IChSUFJQYXR0ZXJuTm9kZSAqKSBsZmlyc3QobGMp OworCQlib29sCQlpc0R1cGxpY2F0ZSA9IGZhbHNlOworCisJCWZvcmVhY2gobGMyLCB1bmlxdWVD aGlsZHJlbikKKwkJeworCQkJaWYgKHJwclBhdHRlcm5FcXVhbCgoUlBSUGF0dGVybk5vZGUgKikg bGZpcnN0KGxjMiksIGNoaWxkKSkKKwkJCXsKKwkJCQlpc0R1cGxpY2F0ZSA9IHRydWU7CisJCQkJ YnJlYWs7CisJCQl9CisJCX0KKworCQlpZiAoIWlzRHVwbGljYXRlKQorCQkJdW5pcXVlQ2hpbGRy ZW4gPSBsYXBwZW5kKHVuaXF1ZUNoaWxkcmVuLCBjaGlsZCk7CisJfQorCisJcmV0dXJuIHVuaXF1 ZUNoaWxkcmVuOworfQorCisvKgorICogb3B0aW1pemVBbHRQYXR0ZXJuCisgKgkJT3B0aW1pemUg QUxUIHBhdHRlcm4gbm9kZS4KKyAqCisgKiBPcHRpbWl6YXRpb25zOgorICogICAxLiBGbGF0dGVu IG5lc3RlZCBBTFQKKyAqICAgMi4gUmVtb3ZlIGR1cGxpY2F0ZSBhbHRlcm5hdGl2ZXMKKyAqICAg My4gVW53cmFwIHNpbmdsZS1pdGVtIEFMVAorICovCitzdGF0aWMgUlBSUGF0dGVybk5vZGUgKgor b3B0aW1pemVBbHRQYXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKQoreworCS8qIFJlY3Vy c2l2ZWx5IG9wdGltaXplIGNoaWxkcmVuIGFuZCBmbGF0dGVuIG5lc3RlZCBBTFQgKi8KKwlwYXR0 ZXJuLT5jaGlsZHJlbiA9IGZsYXR0ZW5BbHRDaGlsZHJlbihwYXR0ZXJuLT5jaGlsZHJlbik7CisK KwkvKiBSZW1vdmUgZHVwbGljYXRlIGFsdGVybmF0aXZlcyAqLworCXBhdHRlcm4tPmNoaWxkcmVu ID0gcmVtb3ZlRHVwbGljYXRlQWx0ZXJuYXRpdmVzKHBhdHRlcm4tPmNoaWxkcmVuKTsKKworCS8q IFVud3JhcCBzaW5nbGUtaXRlbSBBTFQgKi8KKwlyZXR1cm4gdHJ5VW53cmFwU2luZ2xlQ2hpbGQo cGF0dGVybik7Cit9CisKKy8qCisgKiB0cnlNdWx0aXBseVF1YW50aWZpZXJzCisgKgkJVHJ5IHRv IG11bHRpcGx5IHF1YW50aWZpZXJzLgorICoKKyAqIE11bHRpcGxpY2F0aW9uIGlzIFNBRkUgd2hl bjoKKyAqICAgMS4gQm90aCB1bmJvdW5kZWQ6IChBKikqIC0+IEEqLCAoQSspKyAtPiBBKworICog ICAyLiBPdXRlciBleGFjdDogKEF7bSxufSl7a30gLT4gQXttKmssIG4qa30KKyAqICAgMy4gT3V0 ZXIgcmFuZ2UgKyBjaGlsZCB7MSwxfTogKEEpezIsfSAtPiBBezIsfQorICoKKyAqIE11bHRpcGxp Y2F0aW9uIGlzIE5PVCBzYWZlIHdoZW46CisgKiAgIC0gT25seSBjaGlsZCB1bmJvdW5kZWQ6IChB Kyl7M30gaGFzIGRpZmZlcmVudCBzZW1hbnRpY3MKKyAqICAgLSBPdXRlciByYW5nZSArIGNoaWxk IG5vdCB7MSwxfTogZ2FwcyBwb3NzaWJsZQorICogICAgIGUuZy4sIChBezJ9KXsyLDN9IHlpZWxk cyA0LDYgb25seSAobm90IDQsNSw2KQorICoKKyAqIFJldHVybnMgdGhlIGNoaWxkIG5vZGUgd2l0 aCBtdWx0aXBsaWVkIHF1YW50aWZpZXJzIGlmIHN1Y2Nlc3NmdWwsCisgKiBvdGhlcndpc2UgcmV0 dXJucyB0aGUgb3JpZ2luYWwgcGF0dGVybiB1bmNoYW5nZWQuCisgKi8KK3N0YXRpYyBSUFJQYXR0 ZXJuTm9kZSAqCit0cnlNdWx0aXBseVF1YW50aWZpZXJzKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJu KQoreworCVJQUlBhdHRlcm5Ob2RlICpjaGlsZDsKKwlpbnQ2NAkJbmV3X21pbl82NDsKKwlpbnQ2 NAkJbmV3X21heF82NDsKKworCS8qIFBhcnNlciBhbHdheXMgY3JlYXRlcyBHUk9VUCB3aXRoIGV4 YWN0bHkgb25lIGNoaWxkICovCisJQXNzZXJ0KGxpc3RfbGVuZ3RoKHBhdHRlcm4tPmNoaWxkcmVu KSA9PSAxKTsKKworCWlmIChwYXR0ZXJuLT5yZWx1Y3RhbnQgPj0gMCkKKwkJcmV0dXJuIHBhdHRl cm47CisKKwljaGlsZCA9IChSUFJQYXR0ZXJuTm9kZSAqKSBsaW5pdGlhbChwYXR0ZXJuLT5jaGls ZHJlbik7CisKKwlpZiAoKGNoaWxkLT5ub2RlVHlwZSAhPSBSUFJfUEFUVEVSTl9WQVIgJiYKKwkJ IGNoaWxkLT5ub2RlVHlwZSAhPSBSUFJfUEFUVEVSTl9HUk9VUCkgfHwKKwkJY2hpbGQtPnJlbHVj dGFudCA+PSAwKQorCQlyZXR1cm4gcGF0dGVybjsKKworCS8qIENhc2UgMTogQm90aCB1bmJvdW5k ZWQgLSAoQSopKiAtPiBBKiwgKEErKSsgLT4gQSsgKi8KKwlpZiAoY2hpbGQtPm1heCA9PSBSUFJf UVVBTlRJVFlfSU5GICYmIHBhdHRlcm4tPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GKQorCXsKKwkJ bmV3X21pbl82NCA9IChpbnQ2NCkgY2hpbGQtPm1pbiAqIHBhdHRlcm4tPm1pbjsKKwkJaWYgKG5l d19taW5fNjQgPj0gUlBSX1FVQU5USVRZX0lORikKKwkJCXJldHVybiBwYXR0ZXJuOwkJLyogb3Zl cmZsb3csIHNraXAgb3B0aW1pemF0aW9uICovCisKKwkJY2hpbGQtPm1pbiA9IChpbnQpIG5ld19t aW5fNjQ7CisJCWNoaWxkLT5tYXggPSBSUFJfUVVBTlRJVFlfSU5GOworCQlyZXR1cm4gY2hpbGQ7 CisJfQorCisJLyoKKwkgKiBDYXNlIDIvMzogU2FmZSB3aGVuIGNoaWxkIGlzIGZpbml0ZSBBTkQg KG91dGVyIGlzIGV4YWN0IE9SIGNoaWxkIGlzCisJICogezEsMX0pCisJICovCisJaWYgKGNoaWxk LT5tYXggIT0gUlBSX1FVQU5USVRZX0lORiAmJgorCQkocGF0dGVybi0+bWluID09IHBhdHRlcm4t Pm1heCB8fAorCQkgKGNoaWxkLT5taW4gPT0gMSAmJiBjaGlsZC0+bWF4ID09IDEpKSkKKwl7CisJ CW5ld19taW5fNjQgPSAoaW50NjQpIHBhdHRlcm4tPm1pbiAqIGNoaWxkLT5taW47CisJCWlmIChu ZXdfbWluXzY0ID49IFJQUl9RVUFOVElUWV9JTkYpCisJCQlyZXR1cm4gcGF0dGVybjsKKworCQlp ZiAocGF0dGVybi0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYpCisJCQluZXdfbWF4XzY0ID0gUlBS X1FVQU5USVRZX0lORjsKKwkJZWxzZQorCQl7CisJCQluZXdfbWF4XzY0ID0gKGludDY0KSBwYXR0 ZXJuLT5tYXggKiBjaGlsZC0+bWF4OworCisJCQlpZiAobmV3X21heF82NCA+PSBSUFJfUVVBTlRJ VFlfSU5GKQorCQkJCXJldHVybiBwYXR0ZXJuOworCQl9CisKKwkJY2hpbGQtPm1pbiA9IChpbnQp IG5ld19taW5fNjQ7CisJCWNoaWxkLT5tYXggPSAoaW50KSBuZXdfbWF4XzY0OworCQlyZXR1cm4g Y2hpbGQ7CisJfQorCisJLyogTm90IHNhZmUgdG8gbXVsdGlwbHkgKi8KKwlyZXR1cm4gcGF0dGVy bjsKK30KKworLyoKKyAqIHRyeVVud3JhcEdyb3VwCisgKgkJVHJ5IHRvIHVud3JhcCBHUk9VUHsx LDF9IG5vZGUuCisgKgorICogRXhhbXBsZXM6CisgKiAgIChBKXsxLDF9ICAgLT4gQQorICogICAo QSBCKXsxLDF9IC0+IFNFUShBLCBCKSAgKHVud3JhcHMgdGhlIGlubmVyIFNFUSkKKyAqCisgKiBJ ZiBHUk9VUCBoYXMgbWluPTEsIG1heD0xLCBhbmQgaXMgbm90IHJlbHVjdGFudCwgcmV0dXJuIHRo ZSBjaGlsZCBkaXJlY3RseS4KKyAqIE90aGVyd2lzZSByZXR1cm5zIHRoZSBwYXR0ZXJuIHVuY2hh bmdlZC4KKyAqCisgKiBOb3RlOiBQYXJzZXIgYWx3YXlzIGNyZWF0ZXMgR1JPVVAgd2l0aCBleGFj dGx5IG9uZSBjaGlsZCB2aWEgbGlzdF9tYWtlMSgpLgorICovCitzdGF0aWMgUlBSUGF0dGVybk5v ZGUgKgordHJ5VW53cmFwR3JvdXAoUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pCit7CisJaWYgKHBh dHRlcm4tPm1pbiAhPSAxIHx8IHBhdHRlcm4tPm1heCAhPSAxIHx8IHBhdHRlcm4tPnJlbHVjdGFu dCA+PSAwKQorCQlyZXR1cm4gcGF0dGVybjsKKworCS8qIFBhcnNlciBhbHdheXMgY3JlYXRlcyBH Uk9VUCB3aXRoIHNpbmdsZSBjaGlsZCAqLworCUFzc2VydChsaXN0X2xlbmd0aChwYXR0ZXJuLT5j aGlsZHJlbikgPT0gMSk7CisJcmV0dXJuIChSUFJQYXR0ZXJuTm9kZSAqKSBsaW5pdGlhbChwYXR0 ZXJuLT5jaGlsZHJlbik7Cit9CisKKy8qCisgKiBvcHRpbWl6ZUdyb3VwUGF0dGVybgorICoJCU9w dGltaXplIEdST1VQIHBhdHRlcm4gbm9kZS4KKyAqCisgKiBPcHRpbWl6YXRpb25zOgorICogICAx LiBRdWFudGlmaWVyIG11bHRpcGxpY2F0aW9uOiAoQXttfSl7bn0gLT4gQXttKm59CisgKiAgIDIu IFVud3JhcCBHUk9VUHsxLDF9CisgKi8KK3N0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqCitvcHRpbWl6 ZUdyb3VwUGF0dGVybihSUFJQYXR0ZXJuTm9kZSAqcGF0dGVybikKK3sKKwlMaXN0Q2VsbCAgICps YzsKKwlMaXN0CSAgICpuZXdDaGlsZHJlbjsKKwlSUFJQYXR0ZXJuTm9kZSAqcmVzdWx0OworCisJ LyogUmVjdXJzaXZlbHkgb3B0aW1pemUgY2hpbGRyZW4gKi8KKwluZXdDaGlsZHJlbiA9IE5JTDsK Kwlmb3JlYWNoKGxjLCBwYXR0ZXJuLT5jaGlsZHJlbikKKwl7CisJCVJQUlBhdHRlcm5Ob2RlICpj aGlsZCA9IChSUFJQYXR0ZXJuTm9kZSAqKSBsZmlyc3QobGMpOworCisJCW5ld0NoaWxkcmVuID0g bGFwcGVuZChuZXdDaGlsZHJlbiwgb3B0aW1pemVSUFJQYXR0ZXJuKGNoaWxkKSk7CisJfQorCXBh dHRlcm4tPmNoaWxkcmVuID0gbmV3Q2hpbGRyZW47CisKKwkvKiBUcnkgcXVhbnRpZmllciBtdWx0 aXBsaWNhdGlvbiAqLworCXJlc3VsdCA9IHRyeU11bHRpcGx5UXVhbnRpZmllcnMocGF0dGVybik7 CisJaWYgKHJlc3VsdCAhPSBwYXR0ZXJuKQorCQlyZXR1cm4gcmVzdWx0OworCisJLyogVHJ5IHVu d3JhcHBpbmcgR1JPVVB7MSwxfSAqLworCXJldHVybiB0cnlVbndyYXBHcm91cChwYXR0ZXJuKTsK K30KKworLyoKKyAqIG9wdGltaXplUlBSUGF0dGVybgorICoJCU9wdGltaXplIFJQUlBhdHRlcm5O b2RlIHRyZWUgKGRpc3BhdGNoZXIpLgorICoKKyAqIERpc3BhdGNoZXMgdG8gdHlwZS1zcGVjaWZp YyBvcHRpbWl6YXRpb24gZnVuY3Rpb25zLgorICogUmV0dXJucyB0aGUgb3B0aW1pemVkIHBhdHRl cm4gKG1heSBiZSBhIGRpZmZlcmVudCBub2RlKS4KKyAqLworc3RhdGljIFJQUlBhdHRlcm5Ob2Rl ICoKK29wdGltaXplUlBSUGF0dGVybihSUFJQYXR0ZXJuTm9kZSAqcGF0dGVybikKK3sKKwkvKiBQ YXR0ZXJuIG5vZGVzIGZyb20gcGFyc2VyIGFyZSBuZXZlciBOVUxMICovCisJQXNzZXJ0KHBhdHRl cm4gIT0gTlVMTCk7CisKKwlzd2l0Y2ggKHBhdHRlcm4tPm5vZGVUeXBlKQorCXsKKwkJY2FzZSBS UFJfUEFUVEVSTl9WQVI6CisJCQlyZXR1cm4gcGF0dGVybjsKKwkJY2FzZSBSUFJfUEFUVEVSTl9T RVE6CisJCQlyZXR1cm4gb3B0aW1pemVTZXFQYXR0ZXJuKHBhdHRlcm4pOworCQljYXNlIFJQUl9Q QVRURVJOX0FMVDoKKwkJCXJldHVybiBvcHRpbWl6ZUFsdFBhdHRlcm4ocGF0dGVybik7CisJCWNh c2UgUlBSX1BBVFRFUk5fR1JPVVA6CisJCQlyZXR1cm4gb3B0aW1pemVHcm91cFBhdHRlcm4ocGF0 dGVybik7CisJfQorCisJcmV0dXJuIHBhdHRlcm47CQkJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQg Ki8KK30KKworLyoKKyAqIGNvbGxlY3REZWZpbmVWYXJpYWJsZXMKKyAqCQlDb2xsZWN0IHZhcmlh YmxlIG5hbWVzIGZyb20gREVGSU5FIGNsYXVzZS4KKyAqCisgKiBQb3B1bGF0ZXMgdmFyTmFtZXMg YXJyYXkgd2l0aCB2YXJpYWJsZSBuYW1lcyBpbiBERUZJTkUgb3JkZXIuCisgKiBUaGlzIGVuc3Vy ZXMgdmFySWQgPT0gZGVmaW5lSWR4LCBlbGltaW5hdGluZyBydW50aW1lIG1hcHBpbmcuCisgKiBS ZXR1cm5zIHRoZSBudW1iZXIgb2YgdmFyaWFibGVzIGNvbGxlY3RlZC4KKyAqLworc3RhdGljIGlu dAorY29sbGVjdERlZmluZVZhcmlhYmxlcyhMaXN0ICpkZWZpbmVWYXJpYWJsZUxpc3QsIGNoYXIg Kip2YXJOYW1lcykKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlpbnQJCQludW1WYXJzID0gMDsKKwor CWZvcmVhY2gobGMsIGRlZmluZVZhcmlhYmxlTGlzdCkKKwl7CisJCS8qIFBhcnNlciBhbHJlYWR5 IGNoZWNrZWQgdGhpcyBsaW1pdCBpbiB0cmFuc2Zvcm1EZWZpbmVDbGF1c2UgKi8KKwkJQXNzZXJ0 KG51bVZhcnMgPCBSUFJfVkFSSURfTUFYKTsKKworCQl2YXJOYW1lc1tudW1WYXJzKytdID0gc3Ry VmFsKGxmaXJzdChsYykpOworCX0KKworCXJldHVybiBudW1WYXJzOworfQorCisvKgorICogc2Nh blJQUlBhdHRlcm5SZWN1cnNpdmUKKyAqCQlSZWN1cnNpdmVseSBzY2FuIHBhdHRlcm4gQVNUIChw YXNzIDEgaW50ZXJuYWwpLgorICoKKyAqIENvbGxlY3RzIHVuaXF1ZSB2YXJpYWJsZSBuYW1lcyBh bmQgY291bnRzIGVsZW1lbnRzIHdoaWxlIHRyYWNraW5nIGRlcHRoLgorICogVmFyaWFibGVzIGZy b20gREVGSU5FIGNsYXVzZSBhcmUgYWxyZWFkeSBpbiB2YXJOYW1lczsgdGhpcyBhZGRzIGFueQor ICogYWRkaXRpb25hbCB2YXJpYWJsZXMgZm91bmQgaW4gdGhlIHBhdHRlcm4uCisgKi8KK3N0YXRp YyB2b2lkCitzY2FuUlBSUGF0dGVyblJlY3Vyc2l2ZShSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgY2hh ciAqKnZhck5hbWVzLCBpbnQgKm51bVZhcnMsCisJCQkJCQlpbnQgKm51bUVsZW1lbnRzLCBSUFJE ZXB0aCBkZXB0aCwgUlBSRGVwdGggKm1heERlcHRoKQoreworCUxpc3RDZWxsICAgKmxjOworCWlu dAkJCWk7CisKKwkvKiBQYXR0ZXJuIG5vZGVzIGZyb20gcGFyc2VyIGFyZSBuZXZlciBOVUxMICov CisJQXNzZXJ0KG5vZGUgIT0gTlVMTCk7CisKKwkvKiBDaGVjayByZWN1cnNpb24gZGVwdGggbGlt aXQgYmVmb3JlIG92ZXJmbG93IG9jY3VycyAqLworCWlmIChkZXB0aCA+PSBSUFJfREVQVEhfTUFY KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPR1JBTV9MSU1JVF9F WENFRURFRCksCisJCQkJIGVycm1zZygicGF0dGVybiBuZXN0aW5nIHRvbyBkZWVwIiksCisJCQkJ IGVycmRldGFpbCgiUGF0dGVybiBuZXN0aW5nIGRlcHRoICVkIGV4Y2VlZHMgbWF4aW11bSAlZC4i LAorCQkJCQkJICAgZGVwdGgsIFJQUl9ERVBUSF9NQVggLSAxKSkpOworCisJLyogVHJhY2sgbWF4 aW11bSBkZXB0aCAqLworCWlmIChkZXB0aCA+ICptYXhEZXB0aCkKKwkJKm1heERlcHRoID0gZGVw dGg7CisKKwlzd2l0Y2ggKG5vZGUtPm5vZGVUeXBlKQorCXsKKwkJY2FzZSBSUFJfUEFUVEVSTl9W QVI6CisJCQkvKiBDb3VudCBlbGVtZW50ICovCisJCQkoKm51bUVsZW1lbnRzKSsrOworCisJCQkv KiBDb2xsZWN0IHZhcmlhYmxlIG5hbWUgaWYgbm90IGFscmVhZHkgcHJlc2VudCAqLworCQkJZm9y IChpID0gMDsgaSA8ICpudW1WYXJzOyBpKyspCisJCQl7CisJCQkJaWYgKHN0cmNtcCh2YXJOYW1l c1tpXSwgbm9kZS0+dmFyTmFtZSkgPT0gMCkKKwkJCQkJcmV0dXJuOwkJLyogQWxyZWFkeSBoYXZl IHRoaXMgdmFyaWFibGUgKi8KKwkJCX0KKworCQkJLyoKKwkJCSAqIFZhcmlhYmxlIG5vdCBpbiBE RUZJTkUgY2xhdXNlIC0gdGhpcyBpcyB2YWxpZCBwZXIgU1FMIHN0YW5kYXJkLgorCQkJICogU3Vj aCB2YXJpYWJsZXMgYXJlIGltcGxpY2l0bHkgVFJVRS4gQWRkIHRvIHZhck5hbWVzIHNvIHRoZXkg Z2V0CisJCQkgKiBhIHZhcklkID49IGRlZmluZVZhcmlhYmxlTGlzdCBsZW5ndGgsIHdoaWNoIGV4 ZWN1dG9yIHRyZWF0cyBhcworCQkJICogVFJVRS4KKwkJCSAqLworCQkJQXNzZXJ0KCpudW1WYXJz IDwgUlBSX1ZBUklEX01BWCk7CisJCQl2YXJOYW1lc1soKm51bVZhcnMpKytdID0gbm9kZS0+dmFy TmFtZTsKKwkJCWJyZWFrOworCisJCWNhc2UgUlBSX1BBVFRFUk5fU0VROgorCQkJLyogU2VxdWVu Y2U6IGp1c3QgcmVjdXJzZSBpbnRvIGNoaWxkcmVuICovCisJCQlmb3JlYWNoKGxjLCBub2RlLT5j aGlsZHJlbikKKwkJCXsKKwkJCQlzY2FuUlBSUGF0dGVyblJlY3Vyc2l2ZSgoUlBSUGF0dGVybk5v ZGUgKikgbGZpcnN0KGxjKSwgdmFyTmFtZXMsCisJCQkJCQkJCQkJbnVtVmFycywgbnVtRWxlbWVu dHMsIGRlcHRoLCBtYXhEZXB0aCk7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFJQUl9QQVRU RVJOX0dST1VQOgorCQkJLyogQWRkIEJFR0lOIGVsZW1lbnQgaWYgZ3JvdXAgaGFzIG5vbi10cml2 aWFsIHF1YW50aWZpZXIgKi8KKwkJCWlmIChub2RlLT5taW4gIT0gMSB8fCBub2RlLT5tYXggIT0g MSkKKwkJCQkoKm51bUVsZW1lbnRzKSsrOworCisJCQkvKiBSZWN1cnNlIGludG8gY2hpbGRyZW4g YXQgaW5jcmVhc2VkIGRlcHRoICovCisJCQlmb3JlYWNoKGxjLCBub2RlLT5jaGlsZHJlbikKKwkJ CXsKKwkJCQlzY2FuUlBSUGF0dGVyblJlY3Vyc2l2ZSgoUlBSUGF0dGVybk5vZGUgKikgbGZpcnN0 KGxjKSwgdmFyTmFtZXMsCisJCQkJCQkJCQkJbnVtVmFycywgbnVtRWxlbWVudHMsIGRlcHRoICsg MSwgbWF4RGVwdGgpOworCQkJfQorCisJCQkvKiBBZGQgRU5EIGVsZW1lbnQgaWYgZ3JvdXAgaGFz IG5vbi10cml2aWFsIHF1YW50aWZpZXIgKi8KKwkJCWlmIChub2RlLT5taW4gIT0gMSB8fCBub2Rl LT5tYXggIT0gMSkKKwkJCQkoKm51bUVsZW1lbnRzKSsrOworCQkJYnJlYWs7CisKKwkJY2FzZSBS UFJfUEFUVEVSTl9BTFQ6CisJCQkvKiBDb3VudCBBTFQgc3RhcnQgZWxlbWVudCAqLworCQkJKCpu dW1FbGVtZW50cykrKzsKKworCQkJLyogUmVjdXJzZSBpbnRvIGNoaWxkcmVuIGF0IGluY3JlYXNl ZCBkZXB0aCAqLworCQkJZm9yZWFjaChsYywgbm9kZS0+Y2hpbGRyZW4pCisJCQl7CisJCQkJc2Nh blJQUlBhdHRlcm5SZWN1cnNpdmUoKFJQUlBhdHRlcm5Ob2RlICopIGxmaXJzdChsYyksIHZhck5h bWVzLAorCQkJCQkJCQkJCW51bVZhcnMsIG51bUVsZW1lbnRzLCBkZXB0aCArIDEsIG1heERlcHRo KTsKKwkJCX0KKwkJCWJyZWFrOworCX0KK30KKworLyoKKyAqIHNjYW5SUFJQYXR0ZXJuCisgKgkJ U2NhbiBwYXR0ZXJuIEFTVCAocGFzcyAxIGVudHJ5IHBvaW50KS4KKyAqCisgKiBDb2xsZWN0cyB1 bmlxdWUgdmFyaWFibGUgbmFtZXMgKGFwcGVuZGluZyB0byB0aG9zZSBmcm9tIERFRklORSBjbGF1 c2UpLAorICogY291bnRzIHRvdGFsIGVsZW1lbnRzIChpbmNsdWRpbmcgRklOIG1hcmtlciksIGFu ZCB0cmFja3MgbWF4aW11bSBkZXB0aC4KKyAqIFJlcG9ydHMgZXJyb3IgaWYgZWxlbWVudCBjb3Vu dCBleGNlZWRzIFJQUl9FTEVNSURYX01BWC4KKyAqLworc3RhdGljIHZvaWQKK3NjYW5SUFJQYXR0 ZXJuKFJQUlBhdHRlcm5Ob2RlICpub2RlLCBjaGFyICoqdmFyTmFtZXMsIGludCAqbnVtVmFycywK KwkJCSAgIGludCAqbnVtRWxlbWVudHMsIFJQUkRlcHRoICptYXhEZXB0aCkKK3sKKwkqbnVtRWxl bWVudHMgPSAwOworCSptYXhEZXB0aCA9IDA7CisKKwlzY2FuUlBSUGF0dGVyblJlY3Vyc2l2ZShu b2RlLCB2YXJOYW1lcywgbnVtVmFycywgbnVtRWxlbWVudHMsIDAsIG1heERlcHRoKTsKKworCSgq bnVtRWxlbWVudHMpKys7CQkJLyogKzEgZm9yIEZJTiBtYXJrZXIgKi8KKworCWlmICgqbnVtRWxl bWVudHMgPiBSUFJfRUxFTUlEWF9NQVgpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VFREVEKSwKKwkJCQkgZXJybXNnKCJwYXR0ZXJuIHRv byBjb21wbGV4IiksCisJCQkJIGVycmRldGFpbCgiUGF0dGVybiBoYXMgJWQgZWxlbWVudHMsIG1h eGltdW0gaXMgJWQuIiwKKwkJCQkJCSAgICpudW1FbGVtZW50cywgUlBSX0VMRU1JRFhfTUFYKSkp OworfQorCisvKgorICogYWxsb2NhdGVSUFJQYXR0ZXJuCisgKgkJQWxsb2NhdGUgYW5kIGluaXRp YWxpemUgUlBSUGF0dGVybiBzdHJ1Y3R1cmUuCisgKgorICogQ3JlYXRlcyB0aGUgcGF0dGVybiBz dHJ1Y3R1cmUsIGNvcGllcyB2YXJpYWJsZSBuYW1lcywgYW5kIGFsbG9jYXRlcworICogdGhlIGVs ZW1lbnRzIGFycmF5LiBUaGUgZWxlbWVudHMgYXJyYXkgaXMgemVyby1pbml0aWFsaXplZC4KKyAq Lworc3RhdGljIFJQUlBhdHRlcm4gKgorYWxsb2NhdGVSUFJQYXR0ZXJuKGludCBudW1WYXJzLCBp bnQgbnVtRWxlbWVudHMsIFJQUkRlcHRoIG1heERlcHRoLAorCQkJCSAgIGNoYXIgKip2YXJOYW1l c1N0YWNrKQoreworCVJQUlBhdHRlcm4gKnJlc3VsdDsKKwlpbnQJCQlpOworCisJcmVzdWx0ID0g bWFrZU5vZGUoUlBSUGF0dGVybik7CisJcmVzdWx0LT5udW1WYXJzID0gbnVtVmFyczsKKwlyZXN1 bHQtPm1heERlcHRoID0gbWF4RGVwdGggKyAxOwkvKiArMTogZGVwdGggaXMgMC1iYXNlZCAqLwor CXJlc3VsdC0+bnVtRWxlbWVudHMgPSBudW1FbGVtZW50czsKKworCS8qIENvcHkgdmFyTmFtZXMg KHBhdHRlcm4gbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSB2YXJpYWJsZSkgKi8KKwlBc3NlcnQobnVt VmFycyA+IDApOworCXJlc3VsdC0+dmFyTmFtZXMgPSBwYWxsb2MobnVtVmFycyAqIHNpemVvZihj aGFyICopKTsKKwlmb3IgKGkgPSAwOyBpIDwgbnVtVmFyczsgaSsrKQorCQlyZXN1bHQtPnZhck5h bWVzW2ldID0gcHN0cmR1cCh2YXJOYW1lc1N0YWNrW2ldKTsKKworCS8qIEFsbG9jYXRlIGVsZW1l bnRzIGFycmF5ICh6ZXJvLWluaXQgZm9yIHJlc2VydmVkIGZpZWxkcykgKi8KKwlBc3NlcnQobnVt RWxlbWVudHMgPj0gMik7CisJcmVzdWx0LT5lbGVtZW50cyA9IHBhbGxvYzAobnVtRWxlbWVudHMg KiBzaXplb2YoUlBSUGF0dGVybkVsZW1lbnQpKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8q CisgKiBnZXRWYXJJZEZyb21QYXR0ZXJuCisgKgkJR2V0IHZhcmlhYmxlIElEIGZvciBhIHZhcmlh YmxlIG5hbWUgZnJvbSBSUFJQYXR0ZXJuLgorICoKKyAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRo ZSB2YXJpYWJsZSBpbiB0aGUgdmFyTmFtZXMgYXJyYXkuCisgKi8KK3N0YXRpYyBSUFJWYXJJZAor Z2V0VmFySWRGcm9tUGF0dGVybihSUFJQYXR0ZXJuICpwYXQsIGNvbnN0IGNoYXIgKnZhck5hbWUp Cit7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBwYXQtPm51bVZhcnM7IGkrKykKKwl7CisJCWlmIChz dHJjbXAocGF0LT52YXJOYW1lc1tpXSwgdmFyTmFtZSkgPT0gMCkKKwkJCXJldHVybiAoUlBSVmFy SWQpIGk7CisJfQorCisJLyogU2hvdWxkIG5vdCBoYXBwZW4gLSB2YXJpYWJsZSBzaG91bGQgYWxy ZWFkeSBiZSBjb2xsZWN0ZWQgKi8KKwllbG9nKEVSUk9SLCAicGF0dGVybiB2YXJpYWJsZSBcIiVz XCIgbm90IGZvdW5kIiwgdmFyTmFtZSk7CisJcGdfdW5yZWFjaGFibGUoKTsKK30KKworLyoKKyAq IGZpbGxSUFJQYXR0ZXJuVmFyCisgKgkJRmlsbCBhIFZBUiBwYXR0ZXJuIGVsZW1lbnQuCisgKi8K K3N0YXRpYyB2b2lkCitmaWxsUlBSUGF0dGVyblZhcihSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgUlBS UGF0dGVybiAqcGF0LCBpbnQgKmlkeCwgUlBSRGVwdGggZGVwdGgpCit7CisJUlBSUGF0dGVybkVs ZW1lbnQgKmVsZW0gPSAmcGF0LT5lbGVtZW50c1sqaWR4XTsKKworCW1lbXNldChlbGVtLCAwLCBz aXplb2YoUlBSUGF0dGVybkVsZW1lbnQpKTsKKwllbGVtLT52YXJJZCA9IGdldFZhcklkRnJvbVBh dHRlcm4ocGF0LCBub2RlLT52YXJOYW1lKTsKKwllbGVtLT5kZXB0aCA9IGRlcHRoOworCWVsZW0t Pm1pbiA9IG5vZGUtPm1pbjsKKwllbGVtLT5tYXggPSAobm9kZS0+bWF4ID09IElOVF9NQVgpID8g UlBSX1FVQU5USVRZX0lORiA6IG5vZGUtPm1heDsKKwllbGVtLT5uZXh0ID0gUlBSX0VMRU1JRFhf SU5WQUxJRDsKKwllbGVtLT5qdW1wID0gUlBSX0VMRU1JRFhfSU5WQUxJRDsKKwlpZiAobm9kZS0+ cmVsdWN0YW50ID49IDApCisJCWVsZW0tPmZsYWdzIHw9IFJQUl9FTEVNX1JFTFVDVEFOVDsKKwko KmlkeCkrKzsKK30KKworLyoKKyAqIGZpbGxSUFJQYXR0ZXJuR3JvdXAKKyAqCQlGaWxsIGEgR1JP VVAgcGF0dGVybiBhbmQgaXRzIGNoaWxkcmVuLgorICoKKyAqIENyZWF0ZXMgZWxlbWVudHMgZm9y IGdyb3VwIGNvbnRlbnQgYXQgaW5jcmVhc2VkIGRlcHRoLCBwbHVzIGFuIEVORCBtYXJrZXIKKyAq IGlmIHRoZSBncm91cCBoYXMgYSBub24tdHJpdmlhbCBxdWFudGlmaWVyLgorICovCitzdGF0aWMg dm9pZAorZmlsbFJQUlBhdHRlcm5Hcm91cChSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgUlBSUGF0dGVy biAqcGF0LCBpbnQgKmlkeCwgUlBSRGVwdGggZGVwdGgpCit7CisJTGlzdENlbGwgICAqbGM7CisJ aW50CQkJZ3JvdXBTdGFydElkeCA9ICppZHg7CisJaW50CQkJYmVnaW5JZHggPSAtMTsKKworCS8q IEFkZCBCRUdJTiBtYXJrZXIgaWYgZ3JvdXAgaGFzIG5vbi10cml2aWFsIHF1YW50aWZpZXIgKi8K KwlpZiAobm9kZS0+bWluICE9IDEgfHwgbm9kZS0+bWF4ICE9IDEpCisJeworCQlSUFJQYXR0ZXJu RWxlbWVudCAqZWxlbSA9ICZwYXQtPmVsZW1lbnRzWyppZHhdOworCisJCWJlZ2luSWR4ID0gKmlk eDsKKwkJbWVtc2V0KGVsZW0sIDAsIHNpemVvZihSUFJQYXR0ZXJuRWxlbWVudCkpOworCQllbGVt LT52YXJJZCA9IFJQUl9WQVJJRF9CRUdJTjsKKwkJZWxlbS0+ZGVwdGggPSBkZXB0aDsKKwkJZWxl bS0+bWluID0gbm9kZS0+bWluOworCQllbGVtLT5tYXggPSAobm9kZS0+bWF4ID09IElOVF9NQVgp ID8gUlBSX1FVQU5USVRZX0lORiA6IG5vZGUtPm1heDsKKwkJZWxlbS0+bmV4dCA9IFJQUl9FTEVN SURYX0lOVkFMSUQ7CS8qIHNldCBieSBmaW5hbGl6ZSAqLworCQllbGVtLT5qdW1wID0gUlBSX0VM RU1JRFhfSU5WQUxJRDsJLyogc2V0IGFmdGVyIEVORCAqLworCQlpZiAobm9kZS0+cmVsdWN0YW50 ID49IDApCisJCQllbGVtLT5mbGFncyB8PSBSUFJfRUxFTV9SRUxVQ1RBTlQ7CisJCSgqaWR4KSsr OworCQlncm91cFN0YXJ0SWR4ID0gKmlkeDsJLyogY2hpbGRyZW4gc3RhcnQgYWZ0ZXIgQkVHSU4g Ki8KKwl9CisKKwlmb3JlYWNoKGxjLCBub2RlLT5jaGlsZHJlbikKKwl7CisJCWZpbGxSUFJQYXR0 ZXJuKChSUFJQYXR0ZXJuTm9kZSAqKSBsZmlyc3QobGMpLCBwYXQsIGlkeCwgZGVwdGggKyAxKTsK Kwl9CisKKwkvKiBBZGQgZ3JvdXAgZW5kIG1hcmtlciBpZiBncm91cCBoYXMgbm9uLXRyaXZpYWwg cXVhbnRpZmllciAqLworCWlmIChub2RlLT5taW4gIT0gMSB8fCBub2RlLT5tYXggIT0gMSkKKwl7 CisJCVJQUlBhdHRlcm5FbGVtZW50ICpiZWdpbkVsZW0gPSAmcGF0LT5lbGVtZW50c1tiZWdpbklk eF07CisJCVJQUlBhdHRlcm5FbGVtZW50ICplbmRFbGVtID0gJnBhdC0+ZWxlbWVudHNbKmlkeF07 CisKKwkJbWVtc2V0KGVuZEVsZW0sIDAsIHNpemVvZihSUFJQYXR0ZXJuRWxlbWVudCkpOworCQll bmRFbGVtLT52YXJJZCA9IFJQUl9WQVJJRF9FTkQ7CisJCWVuZEVsZW0tPmRlcHRoID0gZGVwdGg7 CisJCWVuZEVsZW0tPm1pbiA9IG5vZGUtPm1pbjsKKwkJZW5kRWxlbS0+bWF4ID0gKG5vZGUtPm1h eCA9PSBJTlRfTUFYKSA/IFJQUl9RVUFOVElUWV9JTkYgOiBub2RlLT5tYXg7CisJCWVuZEVsZW0t Pm5leHQgPSBSUFJfRUxFTUlEWF9JTlZBTElEOworCQllbmRFbGVtLT5qdW1wID0gZ3JvdXBTdGFy dElkeDsJLyogbG9vcCB0byBmaXJzdCBjaGlsZCAqLworCQlpZiAobm9kZS0+cmVsdWN0YW50ID49 IDApCisJCQllbmRFbGVtLT5mbGFncyB8PSBSUFJfRUxFTV9SRUxVQ1RBTlQ7CisJCSgqaWR4KSsr OworCisJCS8qIFNldCBCRUdJTiBza2lwIHBvaW50ZXIgKG5leHQgaXMgc2V0IGJ5IGZpbmFsaXpl KSAqLworCQliZWdpbkVsZW0tPmp1bXAgPSAqaWR4OyAvKiBza2lwOiBnbyB0byBhZnRlciBFTkQg Ki8KKwl9Cit9CisKKy8qCisgKiBmaWxsUlBSUGF0dGVybkFsdAorICoJCUZpbGwgYW4gQUxUIHBh dHRlcm4gYW5kIGl0cyBhbHRlcm5hdGl2ZXMuCisgKgorICogQ3JlYXRlcyBBTFRfU1RBUlQgbWFy a2VyLCBmaWxscyBlYWNoIGFsdGVybmF0aXZlIGF0IGluY3JlYXNlZCBkZXB0aCwKKyAqIHNldHMg anVtcCBwb2ludGVycyBmb3IgYmFja3RyYWNraW5nLCBhbmQgbmV4dCBwb2ludGVycyBmb3Igc3Vj Y2Vzc2Z1bCBwYXRocy4KKyAqLworc3RhdGljIHZvaWQKK2ZpbGxSUFJQYXR0ZXJuQWx0KFJQUlBh dHRlcm5Ob2RlICpub2RlLCBSUFJQYXR0ZXJuICpwYXQsIGludCAqaWR4LCBSUFJEZXB0aCBkZXB0 aCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbTsKKwlMaXN0 CSAgICphbHRCcmFuY2hTdGFydHMgPSBOSUw7CisJTGlzdAkgICAqYWx0RW5kUG9zaXRpb25zID0g TklMOworCisJLyogQWRkIGFsdGVybmF0aW9uIHN0YXJ0IG1hcmtlciAqLworCWVsZW0gPSAmcGF0 LT5lbGVtZW50c1sqaWR4XTsKKwltZW1zZXQoZWxlbSwgMCwgc2l6ZW9mKFJQUlBhdHRlcm5FbGVt ZW50KSk7CisJZWxlbS0+dmFySWQgPSBSUFJfVkFSSURfQUxUOworCWVsZW0tPmRlcHRoID0gZGVw dGg7CisJZWxlbS0+bWluID0gMTsKKwllbGVtLT5tYXggPSAxOworCWVsZW0tPm5leHQgPSBSUFJf RUxFTUlEWF9JTlZBTElEOworCWVsZW0tPmp1bXAgPSBSUFJfRUxFTUlEWF9JTlZBTElEOworCSgq aWR4KSsrOworCisJLyogRmlsbCBlYWNoIGFsdGVybmF0aXZlICovCisJZm9yZWFjaChsYywgbm9k ZS0+Y2hpbGRyZW4pCisJeworCQlSUFJQYXR0ZXJuTm9kZSAqYWx0ID0gKFJQUlBhdHRlcm5Ob2Rl ICopIGxmaXJzdChsYyk7CisJCWludAkJCWJyYW5jaFN0YXJ0ID0gKmlkeDsKKworCQlhbHRCcmFu Y2hTdGFydHMgPSBsYXBwZW5kX2ludChhbHRCcmFuY2hTdGFydHMsIGJyYW5jaFN0YXJ0KTsKKwkJ ZmlsbFJQUlBhdHRlcm4oYWx0LCBwYXQsIGlkeCwgZGVwdGggKyAxKTsKKwkJYWx0RW5kUG9zaXRp b25zID0gbGFwcGVuZF9pbnQoYWx0RW5kUG9zaXRpb25zLCAqaWR4IC0gMSk7CisJfQorCisJLyog U2V0IGp1bXAgb24gZmlyc3QgZWxlbWVudCBvZiBlYWNoIGFsdGVybmF0aXZlIHRvIG5leHQgYWx0 ZXJuYXRpdmUgKi8KKwlmb3JlYWNoKGxjLCBhbHRCcmFuY2hTdGFydHMpCisJeworCQlpbnQJCQlm aXJzdEVsZW1JZHggPSBsZmlyc3RfaW50KGxjKTsKKworCQlpZiAobG5leHQoYWx0QnJhbmNoU3Rh cnRzLCBsYykgIT0gTlVMTCkKKwkJCXBhdC0+ZWxlbWVudHNbZmlyc3RFbGVtSWR4XS5qdW1wID0g bGZpcnN0X2ludChsbmV4dChhbHRCcmFuY2hTdGFydHMsIGxjKSk7CisJfQorCisJLyogU2V0IG5l eHQgb24gbGFzdCBlbGVtZW50IG9mIGVhY2ggYWx0ZXJuYXRpdmUgdG8gYWZ0ZXIgdGhlIGFsdGVy bmF0aW9uICovCisJeworCQlpbnQJCQlhZnRlckFsdElkeCA9ICppZHg7CisJCUxpc3RDZWxsICAg KmxjMiA9IGxpc3RfaGVhZChhbHRCcmFuY2hTdGFydHMpOworCisJCWZvcmVhY2gobGMsIGFsdEVu ZFBvc2l0aW9ucykKKwkJeworCQkJaW50CQkJZW5kUG9zID0gbGZpcnN0X2ludChsYyk7CisJCQlp bnQJCQlicmFuY2hTdGFydCA9IGxmaXJzdF9pbnQobGMyKTsKKworCQkJaWYgKHBhdC0+ZWxlbWVu dHNbZW5kUG9zXS5uZXh0ICE9IFJQUl9FTEVNSURYX0lOVkFMSUQpCisJCQl7CisJCQkJLyoKKwkJ CQkgKiBBbiBpbm5lciBBTFQgYWxyZWFkeSBzZXQgbmV4dCBvbiB0aGlzIGVsZW1lbnQuICBSZWRp cmVjdAorCQkJCSAqIGFsbCBlbGVtZW50cyBpbiB0aGlzIGJyYW5jaCB0aGF0IHNoYXJlIHRoZSBz YW1lIHRhcmdldCB0bworCQkJCSAqIHBvaW50IHRvIGFmdGVyIHRoaXMgQUxUIGluc3RlYWQuCisJ CQkJICovCisJCQkJaW50CQkJb2xkVGFyZ2V0ID0gcGF0LT5lbGVtZW50c1tlbmRQb3NdLm5leHQ7 CisJCQkJaW50CQkJajsKKworCQkJCWZvciAoaiA9IGJyYW5jaFN0YXJ0OyBqIDw9IGVuZFBvczsg aisrKQorCQkJCXsKKwkJCQkJaWYgKHBhdC0+ZWxlbWVudHNbal0ubmV4dCA9PSBvbGRUYXJnZXQp CisJCQkJCQlwYXQtPmVsZW1lbnRzW2pdLm5leHQgPSBhZnRlckFsdElkeDsKKwkJCQl9CisJCQl9 CisJCQllbHNlCisJCQl7CisJCQkJcGF0LT5lbGVtZW50c1tlbmRQb3NdLm5leHQgPSBhZnRlckFs dElkeDsKKwkJCX0KKworCQkJbGMyID0gbG5leHQoYWx0QnJhbmNoU3RhcnRzLCBsYzIpOworCQl9 CisJfQorCisJbGlzdF9mcmVlKGFsdEJyYW5jaFN0YXJ0cyk7CisJbGlzdF9mcmVlKGFsdEVuZFBv c2l0aW9ucyk7Cit9CisKKy8qCisgKiBmaWxsUlBSUGF0dGVybgorICoJCUZpbGwgcGF0dGVybiBl bGVtZW50cyBhcnJheSBmcm9tIEFTVCAocGFzcyAyKS4KKyAqCisgKiBSZWN1cnNpdmVseSB0cmF2 ZXJzZXMgQVNUIGFuZCBwb3B1bGF0ZXMgcHJlLWFsbG9jYXRlZCBlbGVtZW50cyBhcnJheS4KKyAq IERpc3BhdGNoZXMgdG8gdHlwZS1zcGVjaWZpYyBmaWxsIGZ1bmN0aW9ucy4KKyAqLworc3RhdGlj IHZvaWQKK2ZpbGxSUFJQYXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpub2RlLCBSUFJQYXR0ZXJuICpw YXQsIGludCAqaWR4LCBSUFJEZXB0aCBkZXB0aCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCS8q IFBhdHRlcm4gbm9kZXMgZnJvbSBwYXJzZXIgYXJlIG5ldmVyIE5VTEwgKi8KKwlBc3NlcnQobm9k ZSAhPSBOVUxMKTsKKworCXN3aXRjaCAobm9kZS0+bm9kZVR5cGUpCisJeworCQljYXNlIFJQUl9Q QVRURVJOX1NFUToKKwkJCWZvcmVhY2gobGMsIG5vZGUtPmNoaWxkcmVuKQorCQkJeworCQkJCWZp bGxSUFJQYXR0ZXJuKChSUFJQYXR0ZXJuTm9kZSAqKSBsZmlyc3QobGMpLCBwYXQsIGlkeCwgZGVw dGgpOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBSUFJfUEFUVEVSTl9WQVI6CisJCQlmaWxs UlBSUGF0dGVyblZhcihub2RlLCBwYXQsIGlkeCwgZGVwdGgpOworCQkJYnJlYWs7CisKKwkJY2Fz ZSBSUFJfUEFUVEVSTl9HUk9VUDoKKwkJCWZpbGxSUFJQYXR0ZXJuR3JvdXAobm9kZSwgcGF0LCBp ZHgsIGRlcHRoKTsKKwkJCWJyZWFrOworCisJCWNhc2UgUlBSX1BBVFRFUk5fQUxUOgorCQkJZmls bFJQUlBhdHRlcm5BbHQobm9kZSwgcGF0LCBpZHgsIGRlcHRoKTsKKwkJCWJyZWFrOworCX0KK30K KworLyoKKyAqIGZpbmFsaXplUlBSUGF0dGVybgorICoJCUZpbmFsaXplIHBhdHRlcm4gc3RydWN0 dXJlIGFmdGVyIGZpbGxpbmcgZWxlbWVudHMuCisgKgorICogVGhpcyBwZXJmb3JtczoKKyAqICAg MS4gSW5pdGlhbGl6ZSBhYnNvcnB0aW9uIGZsYWcgdG8gZmFsc2UKKyAqICAgMi4gU2V0IHVwIG5l eHQgcG9pbnRlcnMgZm9yIHNlcXVlbnRpYWwgZmxvdworICogICAzLiBBZGQgRklOIG1hcmtlciBh dCB0aGUgZW5kCisgKi8KK3N0YXRpYyB2b2lkCitmaW5hbGl6ZVJQUlBhdHRlcm4oUlBSUGF0dGVy biAqcmVzdWx0KQoreworCWludAkJCWZpbklkeCA9IHJlc3VsdC0+bnVtRWxlbWVudHMgLSAxOwor CWludAkJCWk7CisJUlBSUGF0dGVybkVsZW1lbnQgKmZpbkVsZW07CisKKwkvKiBJbml0aWFsaXpl IGFic29ycHRpb24gZmxhZyAqLworCXJlc3VsdC0+aXNBYnNvcmJhYmxlID0gZmFsc2U7CisKKwkv KiBTZXQgdXAgbmV4dCBwb2ludGVycyBmb3IgZWxlbWVudHMgdGhhdCBkb24ndCBoYXZlIG9uZSAq LworCWZvciAoaSA9IDA7IGkgPCBmaW5JZHg7IGkrKykKKwl7CisJCVJQUlBhdHRlcm5FbGVtZW50 ICplbGVtID0gJnJlc3VsdC0+ZWxlbWVudHNbaV07CisKKwkJaWYgKGVsZW0tPm5leHQgPT0gUlBS X0VMRU1JRFhfSU5WQUxJRCkKKwkJCWVsZW0tPm5leHQgPSAoaSA8IGZpbklkeCAtIDEpID8gaSAr IDEgOiBmaW5JZHg7CisJfQorCisJLyogQWRkIEZJTiBtYXJrZXIgYXQgdGhlIGVuZCAqLworCWZp bkVsZW0gPSAmcmVzdWx0LT5lbGVtZW50c1tmaW5JZHhdOworCW1lbXNldChmaW5FbGVtLCAwLCBz aXplb2YoUlBSUGF0dGVybkVsZW1lbnQpKTsKKwlmaW5FbGVtLT52YXJJZCA9IFJQUl9WQVJJRF9G SU47CisJZmluRWxlbS0+ZGVwdGggPSAwOworCWZpbkVsZW0tPm1pbiA9IDE7CisJZmluRWxlbS0+ bWF4ID0gMTsKKwlmaW5FbGVtLT5uZXh0ID0gUlBSX0VMRU1JRFhfSU5WQUxJRDsKKwlmaW5FbGVt LT5qdW1wID0gUlBSX0VMRU1JRFhfSU5WQUxJRDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KiBDT05URVhUIEFCU09SUFRJT046IFRXTy1GTEFHIERFU0lHTgorICotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogQ29udGV4dCBhYnNvcnB0aW9uIGVsaW1pbmF0ZXMgcmVkdW5kYW50IG1hdGNoIHNl YXJjaGVzIGJ5IGFic29yYmluZyBuZXdlcgorICogY29udGV4dHMgdGhhdCBjYW5ub3QgcHJvZHVj ZSBsb25nZXIgbWF0Y2hlcyB0aGFuIG9sZGVyIGNvbnRleHRzLiBUaGlzCisgKiBhY2hpZXZlcyBP KG5eMikgLT4gTyhuKSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBmb3IgcGF0dGVybnMgbGlrZSBB KyBCLgorICoKKyAqIENvcmUgSW5zaWdodDoKKyAqICAgRm9yIHBhdHRlcm4gQSsgQiwgaWYgQ3R4 MSBzdGFydHMgYXQgcm93IDAgYW5kIEN0eDIgc3RhcnRzIGF0IHJvdyAxLAorICogICBib3RoIG1h dGNoaW5nIEEgY29udGludW91c2x5LCBDdHgxIHdpbGwgYWx3YXlzIGhhdmUgbW9yZSBBIG1hdGNo ZXMuCisgKiAgIFdoZW4gQiBmaW5hbGx5IGFwcGVhcnMsIEN0eDEncyBtYXRjaCAoMCB0byBjdXJy ZW50KSBpcyBhbHdheXMgbG9uZ2VyCisgKiAgIHRoYW4gQ3R4MidzIG1hdGNoICgxIHRvIGN1cnJl bnQpLiBTbyBDdHgyIGNhbiBiZSBzYWZlbHkgZWxpbWluYXRlZC4KKyAqCisgKiBUd28gRmxhZ3M6 CisgKiAgIDEuIFJQUl9FTEVNX0FCU09SQkFCTEUgLSAiQWJzb3JwdGlvbiBqdWRnbWVudCBwb2lu dCIKKyAqICAgICAgV0hFUkUgY29udGV4dHMgY2FuIGJlIGNvbXBhcmVkIGZvciBhYnNvcnB0aW9u LgorICogICAgICAtIFNpbXBsZSB1bmJvdW5kZWQgVkFSIChBKyk6IHRoZSBWQVIgZWxlbWVudCBp dHNlbGYKKyAqICAgICAgLSBVbmJvdW5kZWQgR1JPVVAgKChBIEIpKyk6IHRoZSBFTkQgZWxlbWVu dCBvbmx5CisgKgorICogICAyLiBSUFJfRUxFTV9BQlNPUkJBQkxFX0JSQU5DSCAtICJBYnNvcmJh YmxlIHJlZ2lvbiBtYXJrZXIiCisgKiAgICAgIEFMTCBlbGVtZW50cyB3aXRoaW4gdGhlIGFic29y YmFibGUgcmVnaW9uLgorICogICAgICAtIFVzZWQgZm9yIHRyYWNraW5nIHN0YXRlLmlzQWJzb3Ji YWJsZSBhdCBydW50aW1lCisgKiAgICAgIC0gU3RhdGVzIGxlYXZpbmcgdGhpcyByZWdpb24gYmVj b21lIG5vbi1hYnNvcmJhYmxlIHBlcm1hbmVudGx5CisgKgorICogV2h5IFR3byBGbGFncz8KKyAq ICAgRm9yIHBhdHRlcm4gIihBIEIpKyIsIGNvbnRleHRzIGF0IGRpZmZlcmVudCBwb3NpdGlvbnMg KG9uZSBhdCBBLAorICogICBhbm90aGVyIGF0IEIpIGNhbm5vdCBiZSBjb21wYXJlZCAtIHRoZXkg bXVzdCBzeW5jaHJvbml6ZSBhdCBFTkQuCisgKgorICogICBFeGFtcGxlOiAiKEEgQikrIiB3aXRo IGlucHV0IEEgQiBBIEIgQSBCLi4uCisgKiAgICAgUm93IDAgKEEpOiBDdHgxIHN0YXJ0cywgbWF0 Y2hlcyBBCisgKiAgICAgUm93IDEgKEIpOiBDdHgxIG1hdGNoZXMgQiAtPiBFTkQgKGNvdW50PTEp CisgKiAgICAgUm93IDIgKEEpOiBDdHgxIGxvb3BzIHRvIEEsIEN0eDIgc3RhcnRzIGF0IEEKKyAq ICAgICBSb3cgMyAoQik6IEN0eDEgYXQgRU5EIChjb3VudD0yKSwgQ3R4MiBhdCBFTkQgKGNvdW50 PTEpCisgKiAgICAgICAgICAgICAgICAtPiBCb3RoIGF0IEVORCwgY29tcGFyYWJsZSEgQ3R4MSBh YnNvcmJzIEN0eDIuCisgKgorICogICBDb250ZXh0cyBzeW5jaHJvbml6ZSBhdCBFTkQgZXZlcnkg Z3JvdXAtbGVuZ3RoIHJvd3MuIFRoZXJlZm9yZToKKyAqICAgLSBBQlNPUkJBQkxFIG1hcmtzIEVO RCBhcyBqdWRnbWVudCBwb2ludCAod2hlcmUgdG8gY29tcGFyZSkKKyAqICAgLSBBQlNPUkJBQkxF X0JSQU5DSCBrZWVwcyBzdGF0ZS5pc0Fic29yYmFibGU9dHJ1ZSB0aHJvdWdoIEEtPkItPkVORAor ICoKKyAqIFBhdHRlcm4gRXhhbXBsZXM6CisgKgorICogICBQYXR0ZXJuOiBBKyBCCisgKiAgIEVs ZW1lbnQgMCAoQSk6IEFCU09SQkFCTEUgfCBBQlNPUkJBQkxFX0JSQU5DSCAgPC0ganVkZ21lbnQg cG9pbnQKKyAqICAgRWxlbWVudCAxIChCKTogKG5vbmUpCisgKiAgIC0+IENvbXBhcmUgYXQgQSBl dmVyeSByb3cuIFdoZW4gY29udGV4dHMgbW92ZSB0byBCLCBhYnNvcnB0aW9uIHN0b3BzLgorICoK KyAqICAgUGF0dGVybjogKEEgQikrIEMKKyAqICAgRWxlbWVudCAwIChBKTogQUJTT1JCQUJMRV9C UkFOQ0gKKyAqICAgRWxlbWVudCAxIChCKTogQUJTT1JCQUJMRV9CUkFOQ0gKKyAqICAgRWxlbWVu dCAyIChFTkQpOiBBQlNPUkJBQkxFIHwgQUJTT1JCQUJMRV9CUkFOQ0ggIDwtIGp1ZGdtZW50IHBv aW50CisgKiAgIEVsZW1lbnQgMyAoQyk6IChub25lKQorICogICAtPiBDb21wYXJlIGF0IEVORCBl dmVyeSAyIHJvd3MuIFdoZW4gY29udGV4dHMgbW92ZSB0byBDLCBhYnNvcnB0aW9uIHN0b3BzLgor ICoKKyAqICAgUGF0dGVybjogKEErIEIrKSsgQworICogICBFbGVtZW50IDAgKEEpOiBBQlNPUkJB QkxFIHwgQUJTT1JCQUJMRV9CUkFOQ0ggIDwtIG9ubHkgZmlyc3QgQSsgZmxhZ2dlZAorICogICBF bGVtZW50IDEgKEIpOiAobm9uZSkKKyAqICAgRWxlbWVudCAyIChFTkQpOiAobm9uZSkKKyAqICAg RWxlbWVudCAzIChDKTogKG5vbmUpCisgKiAgIC0+IE9ubHkgZmlyc3QgdW5ib3VuZGVkIHBvcnRp b24gKEErKSBnZXRzIGZsYWdzLiBBYnNvcnB0aW9uIGhhcHBlbnMKKyAqICAgICAgYXQgQSBkdXJp bmcgZmlyc3QgaXRlcmF0aW9uLiBBZnRlciBtb3ZpbmcgdG8gQissIGFic29ycHRpb24gc3RvcHMu CisgKgorICogRmlyc3QgVW5ib3VuZGVkIFBvcnRpb24gU3RyYXRlZ3k6CisgKiAgIFRoZSBhbGdv cml0aG0gb25seSBmbGFncyB0aGUgRklSU1QgdW5ib3VuZGVkIHBvcnRpb24gc3RhcnRpbmcgZnJv bQorICogICBlbGVtZW50IDAuIFRoaXMgaXMgc3VmZmljaWVudCBiZWNhdXNlOgorICogICAtIEFi c29ycHRpb24gaW4gZmlyc3QgcG9ydGlvbiBhbHJlYWR5IGFjaGlldmVzIE8obikgY29tcGxleGl0 eQorICogICAtIExhdGVyIHBvcnRpb25zIGhhdmUgZGlmZmVyZW50IHN5bmNocm9uaXphdGlvbiBj aGFyYWN0ZXJpc3RpY3MKKyAqICAgLSBOZXN0ZWQgdW5ib3VuZGVkIHBhdHRlcm5zIGFyZSB0b28g Y29tcGxleCBmb3Igc2ltcGxlIGFic29ycHRpb24KKyAqICAgLSBDb21wbGV4IHBhdHRlcm5zIChu ZXN0ZWQgZ3JvdXBzLCBldGMuKSBuYXR1cmFsbHkgZGllIGZyb20gbWlzbWF0Y2gKKyAqCisgKiBS dW50aW1lIFVzYWdlIChpbiBub2RlV2luZG93QWdnLmMpOgorICogICAtIHN0YXRlLmlzQWJzb3Ji YWJsZSA9IChwcmV2aW91cyAmJiBlbGVtLkFCU09SQkFCTEVfQlJBTkNIKQorICogICAtIE1vbm90 b25pYzogb25jZSBmYWxzZSwgc3RheXMgZmFsc2UgKGNhbm5vdCByZS1lbnRlciByZWdpb24pCisg KiAgIC0gY29udGV4dC5oYXNBYnNvcmJhYmxlU3RhdGU6IGNhbiBhYnNvcmIgb3RoZXJzICg+PTEg YWJzb3JiYWJsZSBzdGF0ZSkKKyAqICAgLSBjb250ZXh0LmFsbFN0YXRlc0Fic29yYmFibGU6IGNh biBiZSBhYnNvcmJlZCAoQUxMIHN0YXRlcyBhYnNvcmJhYmxlKQorICogICAtIEFic29ycHRpb24g Y2hlY2s6IGlmIEN0eDEuaGFzQWJzb3JiYWJsZSAmJiBDdHgyLmFsbEFic29yYmFibGUsCisgKiAg ICAgY29tcGFyZSBjb3VudHMgYXQgc2FtZSBlbGVtSWR4LCBhYnNvcmIgaWYgQ3R4MS5jb3VudCA+ PSBDdHgyLmNvdW50CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworLyoKKyAqIGlzVW5i b3VuZGVkU3RhcnQKKyAqCQlDaGVjayBpZiB0aGUgZWxlbWVudCBhdCBpZHggc3RhcnRzIGFuIHVu Ym91bmRlZCBncmVlZHkgc2VxdWVuY2UuCisgKgorICogRm9yIGNvbnRleHQgYWJzb3JwdGlvbiB0 byB3b3JrLCB0aGUgc2VxdWVuY2Ugc3RhcnRpbmcgYXQgaWR4IG11c3QgYmU6CisgKiAgIC0gVW5i b3VuZGVkIChtYXggPSBpbmZpbml0eSkKKyAqICAgLSBHcmVlZHkgKG5vdCByZWx1Y3RhbnQpCisg KiAgIC0gQXQgdGhlIHN0YXJ0IG9mIGN1cnJlbnQgc2NvcGUKKyAqCisgKiBBbGdvcml0aG06Cisg KiAgIC0gVHJhdmVyc2UgZWxlbWVudHMgd2l0aGluIGN1cnJlbnQgc2NvcGUgKHBhcmVudERlcHRo IHRvIHN0YXJ0RGVwdGgpCisgKiAgIC0gRm9yIEdST1VQOiBtdXN0IGJlIHVuYm91bmRlZCBncmVl ZHkgQU5EIGNvbnRhaW4gb25seSBzaW1wbGUgezEsMX0gVkFScworICogICAtIFNldHMgQUJTT1JC QUJMRSBhbmQgQUJTT1JCQUJMRV9CUkFOQ0ggZmxhZ3Mgb24gbWF0Y2hpbmcgZWxlbWVudHMKKyAq CisgKiBUd28gY2FzZXMgYXJlIGhhbmRsZWQ6CisgKiAgIDEuIFNpbXBsZSBWQVI6IEErIEIgQyAt IEEgaGFzIG1heD1JTkYsIGdldHMgYm90aCBmbGFncworICogICAyLiBHcm91cDogKEEgQikrIEMg LSBFTkQgaGFzIG1heD1JTkYsIGFsbCBjaGlsZHJlbiBhcmUgezEsMX0gVkFScworICogICAgICBB LEIsRU5EIGdldCBBQlNPUkJBQkxFX0JSQU5DSCwgb25seSBFTkQgZ2V0cyBBQlNPUkJBQkxFCisg KgorICogUmV0dXJucyBmYWxzZSBmb3IgcGF0dGVybnMgd2hlcmUgYWJzb3JwdGlvbiBjYW5ub3Qg d29yazoKKyAqICAgLSBBIEIrICh1bmJvdW5kZWQgbm90IGF0IHN0YXJ0KQorICogICAtIEErPyBC IChyZWx1Y3RhbnQgcXVhbnRpZmllcikKKyAqICAgLSAoQSB8IEIpKyAoQUxUIGluc2lkZSBncm91 cCkKKyAqICAgLSAoQSBCKykrICh1bmJvdW5kZWQgZWxlbWVudCBpbnNpZGUgZ3JvdXApCisgKiAg IC0gKChBIEIpKyBDKSsgKG5lc3RlZCB1bmJvdW5kZWQgZ3JvdXBzKQorICovCitzdGF0aWMgYm9v bAoraXNVbmJvdW5kZWRTdGFydChSUFJQYXR0ZXJuICpwYXR0ZXJuLCBSUFJFbGVtSWR4IGlkeCkK K3sKKwlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSA9ICZwYXR0ZXJuLT5lbGVtZW50c1tpZHhdOwor CVJQUkRlcHRoCXN0YXJ0RGVwdGggPSBlbGVtLT5kZXB0aDsKKwlSUFJQYXR0ZXJuRWxlbWVudCAq bmV4dEVsZW07CisJUlBSUGF0dGVybkVsZW1lbnQgKmU7CisKKwkvKiBDYXNlIDE6IFNpbXBsZSB1 bmJvdW5kZWQgVkFSIGF0IHN0YXJ0IChncmVlZHkgb25seSkgKi8KKwlpZiAoUlBSRWxlbUlzVmFy KGVsZW0pICYmIGVsZW0tPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GICYmCisJCSFSUFJFbGVtSXNS ZWx1Y3RhbnQoZWxlbSkpCisJeworCQkvKiBTZXQgYm90aCBmbGFncyBvbiBmaXJzdCBlbGVtZW50 ICovCisJCWVsZW0tPmZsYWdzIHw9IFJQUl9FTEVNX0FCU09SQkFCTEVfQlJBTkNIIHwgUlBSX0VM RU1fQUJTT1JCQUJMRTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoKKwkgKiBDYXNlIDI6IFVu Ym91bmRlZCBHUk9VUCAtIHRyYXZlcnNlIHNpYmxpbmdzIGF0IHN0YXJ0RGVwdGggYW5kIGNoZWNr IGlmCisJICogdGhleSdyZSBhbGwgc2ltcGxlIHsxLDF9IFZBUnMsIHRoZW4gY2hlY2sgaWYgRU5E IGF0IHN0YXJ0RGVwdGggLSAxIGlzCisJICogdW5ib3VuZGVkIGdyZWVkeS4KKwkgKi8KKwlmb3Ig KGUgPSBlbGVtOyBlLT5kZXB0aCA9PSBzdGFydERlcHRoOyBlID0gbmV4dEVsZW0pCisJeworCQkv KiBNdXN0IGJlIHNpbXBsZSB7MSwxfSBWQVIgKi8KKwkJaWYgKCFSUFJFbGVtSXNWYXIoZSkgfHwg ZS0+bWluICE9IDEgfHwgZS0+bWF4ICE9IDEpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJQXNzZXJ0 KGUtPm5leHQgIT0gUlBSX0VMRU1JRFhfSU5WQUxJRCk7CisJCW5leHRFbGVtID0gJnBhdHRlcm4t PmVsZW1lbnRzW2UtPm5leHRdOworCX0KKworCS8qIE5vdyBlIHNob3VsZCBiZSBFTkQgYXQgc3Rh cnREZXB0aCAtIDEgKi8KKwlpZiAoZS0+ZGVwdGggPT0gc3RhcnREZXB0aCAtIDEgJiYKKwkJUlBS RWxlbUlzRW5kKGUpICYmIGUtPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GICYmCisJCSFSUFJFbGVt SXNSZWx1Y3RhbnQoZSkpCisJeworCQlBc3NlcnQoZS0+anVtcCA9PSBpZHgpOyAvKiBFTkQgcG9p bnRzIGJhY2sgdG8gZmlyc3QgY2hpbGQgKi8KKworCQkvKiBTZXQgQUJTT1JCQUJMRV9CUkFOQ0gg b24gYWxsIGNoaWxkcmVuLCBBQlNPUkJBQkxFIG9uIEVORCBvbmx5ICovCisJCWZvciAoZSA9IGVs ZW07ICFSUFJFbGVtSXNFbmQoZSk7IGUgPSAmcGF0dGVybi0+ZWxlbWVudHNbZS0+bmV4dF0pCisJ CQllLT5mbGFncyB8PSBSUFJfRUxFTV9BQlNPUkJBQkxFX0JSQU5DSDsKKwkJZS0+ZmxhZ3MgfD0g UlBSX0VMRU1fQUJTT1JCQUJMRV9CUkFOQ0ggfCBSUFJfRUxFTV9BQlNPUkJBQkxFOworCQlyZXR1 cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBjb21wdXRlQWJzb3Ji YWJpbGl0eVJlY3Vyc2l2ZQorICoJCVJlY3Vyc2l2ZWx5IGNoZWNrIGFic29yYmFiaWxpdHkgc3Rh cnRpbmcgZnJvbSBnaXZlbiBpbmRleC4KKyAqCisgKiBJZiB0aGUgZWxlbWVudCBhdCBzdGFydElk eCBpcyBBTFQsIHJlY3Vyc2l2ZWx5IGNoZWNrcyBlYWNoIGJyYW5jaCBpbmRlcGVuZGVudGx5Lgor ICogRWFjaCBicmFuY2ggZ2V0cyBpdHMgb3duIGFic29yYmFiaWxpdHkgc3RhdHVzLCBhbmQgaWYg YW55IGJyYW5jaCBpcyBhYnNvcmJhYmxlLAorICogdGhlIEFMVCBlbGVtZW50IGl0c2VsZiBpcyBt YXJrZWQgd2l0aCBSUFJfRUxFTV9BQlNPUkJBQkxFX0JSQU5DSC4KKyAqCisgKiBJZiBCRUdJTiwg c2tpcHMgdG8gZmlyc3QgY2hpbGQuCisgKgorICogT3RoZXJ3aXNlIChWQVIpLCBjaGVja3MgaWYg dGhlIGVsZW1lbnQgc3RhcnRzIGFuIHVuYm91bmRlZCBzZXF1ZW5jZSB2aWEKKyAqIGlzVW5ib3Vu ZGVkU3RhcnQuCisgKi8KK3N0YXRpYyB2b2lkCitjb21wdXRlQWJzb3JiYWJpbGl0eVJlY3Vyc2l2 ZShSUFJQYXR0ZXJuICpwYXR0ZXJuLCBSUFJFbGVtSWR4IHN0YXJ0SWR4LAorCQkJCQkJCSAgYm9v bCAqaGFzQWJzb3JiYWJsZSkKK3sKKwlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSA9ICZwYXR0ZXJu LT5lbGVtZW50c1tzdGFydElkeF07CisKKwlpZiAoUlBSRWxlbUlzQWx0KGVsZW0pKQorCXsKKwkJ LyogQUxUOiByZWN1cnNpdmVseSBjaGVjayBlYWNoIGJyYW5jaCAqLworCQlSUFJFbGVtSWR4CWJy YW5jaElkeCA9IGVsZW0tPm5leHQ7CisJCVJQUlBhdHRlcm5FbGVtZW50ICpicmFuY2hGaXJzdDsK KwkJYm9vbAkJYnJhbmNoQWJzb3JiYWJsZTsKKworCQl3aGlsZSAoYnJhbmNoSWR4ICE9IFJQUl9F TEVNSURYX0lOVkFMSUQpCisJCXsKKwkJCWJyYW5jaEFic29yYmFibGUgPSBmYWxzZTsKKworCQkJ QXNzZXJ0KGJyYW5jaElkeCA8IHBhdHRlcm4tPm51bUVsZW1lbnRzKTsKKwkJCWJyYW5jaEZpcnN0 ID0gJnBhdHRlcm4tPmVsZW1lbnRzW2JyYW5jaElkeF07CisKKwkJCS8qIFN0b3AgaWYgZWxlbWVu dCBpcyBvdXRzaWRlIEFMVCBzY29wZSAobm90IGEgYnJhbmNoKSAqLworCQkJaWYgKGJyYW5jaEZp cnN0LT5kZXB0aCA8PSBlbGVtLT5kZXB0aCkKKwkJCQlicmVhazsKKworCQkJLyogUmVjdXJzaXZl bHkgY2hlY2sgdGhpcyBicmFuY2ggKi8KKwkJCWNvbXB1dGVBYnNvcmJhYmlsaXR5UmVjdXJzaXZl KHBhdHRlcm4sIGJyYW5jaElkeCwgJmJyYW5jaEFic29yYmFibGUpOworCQkJaWYgKGJyYW5jaEFi c29yYmFibGUpCisJCQl7CisJCQkJKmhhc0Fic29yYmFibGUgPSB0cnVlOworCQkJfQorCisJCQli cmFuY2hJZHggPSBicmFuY2hGaXJzdC0+anVtcDsKKwkJfQorCisJCS8qIE1hcmsgQUxUIGVsZW1l bnQgaWYgYW55IGJyYW5jaCBpcyBhYnNvcmJhYmxlICovCisJCWlmICgqaGFzQWJzb3JiYWJsZSkK KwkJCWVsZW0tPmZsYWdzIHw9IFJQUl9FTEVNX0FCU09SQkFCTEVfQlJBTkNIOworCX0KKwllbHNl IGlmIChSUFJFbGVtSXNCZWdpbihlbGVtKSkKKwl7CisJCS8qIEJFR0lOOiBza2lwIHRvIGZpcnN0 IGNoaWxkIGFuZCBjaGVjayB0aGF0ICovCisJCWNvbXB1dGVBYnNvcmJhYmlsaXR5UmVjdXJzaXZl KHBhdHRlcm4sIGVsZW0tPm5leHQsIGhhc0Fic29yYmFibGUpOworCisJCS8qIE1hcmsgQkVHSU4g ZWxlbWVudCBpZiBjb250ZW50cyBhcmUgYWJzb3JiYWJsZSAqLworCQlpZiAoKmhhc0Fic29yYmFi bGUpCisJCQllbGVtLT5mbGFncyB8PSBSUFJfRUxFTV9BQlNPUkJBQkxFX0JSQU5DSDsKKwl9CisJ ZWxzZQorCXsKKwkJLyogU2hvdWxkIG5ldmVyIHJlYWNoIEVORCAtIHN0cnVjdHVyYWwgaW52YXJp YW50IG9mIHBhdHRlcm4gQVNUICovCisJCUFzc2VydCghUlBSRWxlbUlzRW5kKGVsZW0pKTsKKwor CQkvKiBOb24tQUxULCBub24tQkVHSU46IGNoZWNrIGlmIHVuYm91bmRlZCBzdGFydCAqLworCQlp ZiAoaXNVbmJvdW5kZWRTdGFydChwYXR0ZXJuLCBzdGFydElkeCkpCisJCXsKKwkJCSpoYXNBYnNv cmJhYmxlID0gdHJ1ZTsKKwkJfQorCX0KK30KKworLyoKKyAqIGNvbXB1dGVBYnNvcmJhYmlsaXR5 CisgKgkJRGV0ZXJtaW5lIGlmIHBhdHRlcm4gc3VwcG9ydHMgY29udGV4dCBhYnNvcnB0aW9uIG9w dGltaXphdGlvbi4KKyAqCisgKiBDb250ZXh0IGFic29ycHRpb24gZWxpbWluYXRlcyByZWR1bmRh bnQgbWF0Y2ggc2VhcmNoZXMgYnkgYWJzb3JiaW5nCisgKiBuZXdlciBjb250ZXh0cyB0aGF0IGNh bm5vdCBwcm9kdWNlIGxvbmdlciBtYXRjaGVzIHRoYW4gb2xkZXIgY29udGV4dHMuCisgKiBUaGlz IGFjaGlldmVzIE8obl4yKSAtPiBPKG4pIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LgorICoKKyAq IE9ubHkgZ3JlZWR5IHVuYm91bmRlZCBxdWFudGlmaWVycyBhdCBwYXR0ZXJuIHN0YXJ0IGNhbiBi ZSBhYnNvcmJhYmxlLgorICogUmVsdWN0YW50IHF1YW50aWZpZXJzIGFyZSBleGNsdWRlZCBiZWNh dXNlIHRoZXkgZG9uJ3QgbWFpbnRhaW4gbW9ub3RvbmljCisgKiBkZWNyZWFzZSBwcm9wZXJ0eSBy ZXF1aXJlZCBmb3Igc2FmZSBhYnNvcnB0aW9uLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gc2V0cyB0 d28gZmxhZ3M6CisgKiAgIFJQUl9FTEVNX0FCU09SQkFCTEU6IEFic29ycHRpb24ganVkZ21lbnQg cG9pbnQKKyAqICAgICAtIFNpbXBsZSB1bmJvdW5kZWQgVkFSOiB0aGUgVkFSIGl0c2VsZiAoZS5n LiwgQSBpbiBBKykKKyAqICAgICAtIFVuYm91bmRlZCBHUk9VUDogdGhlIEVORCBlbGVtZW50IChl LmcuLCBFTkQgaW4gKEEgQikrKQorICogICBSUFJfRUxFTV9BQlNPUkJBQkxFX0JSQU5DSDogQWxs IGVsZW1lbnRzIGluIGFic29yYmFibGUgcmVnaW9uCisgKiAgICAgLSBBbGwgZWxlbWVudHMgd2l0 aGluIHRoZSBzYW1lIHNjb3BlIGFzIHVuYm91bmRlZCBzdGFydAorICoKKyAqIEV4YW1wbGVzOgor ICogICBBKyBCIEMgICAgICAgICAtIGFic29yYmFibGUgKEEgZ2V0cyBib3RoIGZsYWdzKQorICog ICAoQSBCKSsgQyAgICAgICAtIGFic29yYmFibGUgKEEsQixFTkQgZ2V0IEJSQU5DSCwgRU5EIGdl dHMgQUJTT1JCQUJMRSkKKyAqICAgQSBCKyAgICAgICAgICAgLSBOT1QgYWJzb3JiYWJsZSAodW5i b3VuZGVkIG5vdCBhdCBzdGFydCkKKyAqICAgQSs/IEIgQyAgICAgICAgLSBOT1QgYWJzb3JiYWJs ZSAocmVsdWN0YW50IHF1YW50aWZpZXIpCisgKiAgIChBKyBCKykrICAgICAgIC0gb25seSBmaXJz dCBBKyBvbiBmaXJzdCBpdGVyYXRpb24gKG5lc3RlZCB1bmJvdW5kZWQgbm90IHN1cHBvcnRlZCkK KyAqICAgQSsgfCBCKyAgICAgICAgLSBib3RoIGJyYW5jaGVzIGFic29yYmFibGUgaW5kZXBlbmRl bnRseQorICogICBBKyB8IEMgRCAgICAgICAtIG9ubHkgQSsgYnJhbmNoIGFic29yYmFibGUgKEMg RCBicmFuY2ggbm90IGFic29yYmFibGUpCisgKiAgICgoQSsgQikgfCBDKSBEIC0gbmVzdGVkIEFM VDogQSsgYnJhbmNoIGlzIGFic29yYmFibGUKKyAqLworc3RhdGljIHZvaWQKK2NvbXB1dGVBYnNv cmJhYmlsaXR5KFJQUlBhdHRlcm4gKnBhdHRlcm4pCit7CisJYm9vbAkJaGFzQWJzb3JiYWJsZSA9 IGZhbHNlOworCisJLyogUGFyc2VyIGFsd2F5cyBwcm9kdWNlcyBhdCBsZWFzdCBvbmUgZWxlbWVu dCArIEZJTiAqLworCUFzc2VydChwYXR0ZXJuLT5udW1FbGVtZW50cyA+PSAyKTsKKworCS8qIFN0 YXJ0IHJlY3Vyc2lvbiBmcm9tIGZpcnN0IGVsZW1lbnQgKi8KKwljb21wdXRlQWJzb3JiYWJpbGl0 eVJlY3Vyc2l2ZShwYXR0ZXJuLCAwLCAmaGFzQWJzb3JiYWJsZSk7CisJcGF0dGVybi0+aXNBYnNv cmJhYmxlID0gaGFzQWJzb3JiYWJsZTsKK30KKworLyoKKyAqIGNvbGxlY3RQYXR0ZXJuVmFyaWFi bGVzUmVjdXJzaXZlCisgKgkJUmVjdXJzaXZlbHkgY29sbGVjdCB2YXJpYWJsZSBuYW1lcyBmcm9t IHBhdHRlcm4gQVNULgorICovCitzdGF0aWMgdm9pZAorY29sbGVjdFBhdHRlcm5WYXJpYWJsZXNS ZWN1cnNpdmUoUlBSUGF0dGVybk5vZGUgKm5vZGUsIExpc3QgKip2YXJOYW1lcykKK3sKKwlMaXN0 Q2VsbCAgICpsYzsKKworCUFzc2VydChub2RlICE9IE5VTEwpOworCisJc3dpdGNoIChub2RlLT5u b2RlVHlwZSkKKwl7CisJCWNhc2UgUlBSX1BBVFRFUk5fVkFSOgorCQkJLyogQWRkIHZhcmlhYmxl IGlmIG5vdCBhbHJlYWR5IGluIGxpc3QgKi8KKwkJCWZvcmVhY2gobGMsICp2YXJOYW1lcykKKwkJ CXsKKwkJCQlpZiAoc3RyY21wKHN0clZhbChsZmlyc3QobGMpKSwgbm9kZS0+dmFyTmFtZSkgPT0g MCkKKwkJCQkJcmV0dXJuOwkJLyogQWxyZWFkeSBjb2xsZWN0ZWQgKi8KKwkJCX0KKwkJCSp2YXJO YW1lcyA9IGxhcHBlbmQoKnZhck5hbWVzLCBtYWtlU3RyaW5nKHBzdHJkdXAobm9kZS0+dmFyTmFt ZSkpKTsKKwkJCWJyZWFrOworCisJCWNhc2UgUlBSX1BBVFRFUk5fU0VROgorCQljYXNlIFJQUl9Q QVRURVJOX0FMVDoKKwkJY2FzZSBSUFJfUEFUVEVSTl9HUk9VUDoKKwkJCWZvcmVhY2gobGMsIG5v ZGUtPmNoaWxkcmVuKQorCQkJeworCQkJCWNvbGxlY3RQYXR0ZXJuVmFyaWFibGVzUmVjdXJzaXZl KChSUFJQYXR0ZXJuTm9kZSAqKSBsZmlyc3QobGMpLAorCQkJCQkJCQkJCQkJIHZhck5hbWVzKTsK KwkJCX0KKwkJCWJyZWFrOworCX0KK30KKworLyoKKyAqIGNvbGxlY3RQYXR0ZXJuVmFyaWFibGVz CisgKgkJQ29sbGVjdCB1bmlxdWUgdmFyaWFibGUgbmFtZXMgdXNlZCBpbiBQQVRURVJOIGNsYXVz ZS4KKyAqCisgKiBSZXR1cm5zIGEgbGlzdCBvZiBTdHJpbmcgbm9kZXMgY29udGFpbmluZyB2YXJp YWJsZSBuYW1lcy4KKyAqIFVzZWQgdG8gZmlsdGVyIGRlZmluZUNsYXVzZSBiZWZvcmUgdmFySWQg YXNzaWdubWVudC4KKyAqLworTGlzdCAqCitjb2xsZWN0UGF0dGVyblZhcmlhYmxlcyhSUFJQYXR0 ZXJuTm9kZSAqcGF0dGVybikKK3sKKwlMaXN0CSAgICp2YXJOYW1lcyA9IE5JTDsKKworCS8qIENh bGxlciBlbnN1cmVzIHBhdHRlcm4gaXMgbm90IE5VTEwgKi8KKwlBc3NlcnQocGF0dGVybiAhPSBO VUxMKTsKKworCWNvbGxlY3RQYXR0ZXJuVmFyaWFibGVzUmVjdXJzaXZlKHBhdHRlcm4sICZ2YXJO YW1lcyk7CisJcmV0dXJuIHZhck5hbWVzOworfQorCisvKgorICogZmlsdGVyRGVmaW5lQ2xhdXNl CisgKgkJRmlsdGVyIGRlZmluZUNsYXVzZSB0byBpbmNsdWRlIG9ubHkgdmFyaWFibGVzIHVzZWQg aW4gUEFUVEVSTi4KKyAqCisgKiBUaGlzIGVsaW1pbmF0ZXMgdW5uZWNlc3NhcnkgREVGSU5FIGV2 YWx1YXRpb25zIGF0IHJ1bnRpbWUuCisgKiBBbHNvIGJ1aWxkcyBkZWZpbmVWYXJpYWJsZUxpc3Qg ZnJvbSB0aGUgZmlsdGVyZWQgcmVzdWx0LgorICoKKyAqIFJldHVybnMgZmlsdGVyZWQgZGVmaW5l Q2xhdXNlIChsaXN0IG9mIFRhcmdldEVudHJ5KS4KKyAqIFNldHMgKmRlZmluZVZhcmlhYmxlTGlz dCB0byBsaXN0IG9mIHZhcmlhYmxlIG5hbWVzIChTdHJpbmcgbm9kZXMpLgorICovCitMaXN0ICoK K2ZpbHRlckRlZmluZUNsYXVzZShMaXN0ICpkZWZpbmVDbGF1c2UsIExpc3QgKnBhdHRlcm5WYXJz LAorCQkJCSAgIExpc3QgKipkZWZpbmVWYXJpYWJsZUxpc3QpCit7CisJTGlzdAkgICAqZmlsdGVy ZWREZWZpbmVDbGF1c2UgPSBOSUw7CisJTGlzdENlbGwgICAqbGM7CisJTGlzdENlbGwgICAqbGMy OworCisJKmRlZmluZVZhcmlhYmxlTGlzdCA9IE5JTDsKKworCS8qIEZpbHRlciBkZWZpbmVDbGF1 c2U6IGtlZXAgb25seSB2YXJpYWJsZXMgdXNlZCBpbiBQQVRURVJOICovCisJZm9yZWFjaChsYywg ZGVmaW5lQ2xhdXNlKQorCXsKKwkJVGFyZ2V0RW50cnkgKnRlID0gKFRhcmdldEVudHJ5ICopIGxm aXJzdChsYyk7CisKKwkJZm9yZWFjaChsYzIsIHBhdHRlcm5WYXJzKQorCQl7CisJCQlpZiAoc3Ry Y21wKHN0clZhbChsZmlyc3QobGMyKSksIHRlLT5yZXNuYW1lKSA9PSAwKQorCQkJeworCQkJCWZp bHRlcmVkRGVmaW5lQ2xhdXNlID0gbGFwcGVuZChmaWx0ZXJlZERlZmluZUNsYXVzZSwgdGUpOwor CQkJCWJyZWFrOworCQkJfQorCQl9CisJfQorCisJLyogQnVpbGQgZGVmaW5lVmFyaWFibGVMaXN0 IGZyb20gZmlsdGVyZWQgZGVmaW5lQ2xhdXNlICovCisJZm9yZWFjaChsYywgZmlsdGVyZWREZWZp bmVDbGF1c2UpCisJeworCQlUYXJnZXRFbnRyeSAqdGUgPSAoVGFyZ2V0RW50cnkgKikgbGZpcnN0 KGxjKTsKKworCQkqZGVmaW5lVmFyaWFibGVMaXN0ID0gbGFwcGVuZCgqZGVmaW5lVmFyaWFibGVM aXN0LAorCQkJCQkJCQkJICBtYWtlU3RyaW5nKHBzdHJkdXAodGUtPnJlc25hbWUpKSk7CisJfQor CisJcmV0dXJuIGZpbHRlcmVkRGVmaW5lQ2xhdXNlOworfQorCisvKgorICogYnVpbGRSUFJQYXR0 ZXJuCisgKgkJQ29tcGlsZSBwYXR0ZXJuIEFTVCB0byBmbGF0IGJ5dGVjb2RlIGFycmF5LgorICoK KyAqIENvbXBpbGF0aW9uIHBoYXNlczoKKyAqICAgMS4gT3B0aW1pemUgQVNUIChmbGF0dGVuLCBt ZXJnZSwgZGVkdXBsaWNhdGUpCisgKiAgIDIuIFNjYW46IGNvbGxlY3QgdmFyaWFibGVzLCBjb3Vu dCBlbGVtZW50cyAocGFzcyAxKQorICogICAzLiBBbGxvY2F0ZSByZXN1bHQgc3RydWN0dXJlCisg KiAgIDQuIEZpbGwgZWxlbWVudHMgZnJvbSBBU1QgKHBhc3MgMikKKyAqICAgNS4gRmluYWxpemUg cGF0dGVybiBzdHJ1Y3R1cmUKKyAqICAgNi4gQ29tcHV0ZSBjb250ZXh0IGFic29ycHRpb24gZWxp Z2liaWxpdHkKKyAqCisgKiBDYWxsZWQgZnJvbSBjcmVhdGVwbGFuLmMgZHVyaW5nIHBsYW4gY3Jl YXRpb24uCisgKi8KK1JQUlBhdHRlcm4gKgorYnVpbGRSUFJQYXR0ZXJuKFJQUlBhdHRlcm5Ob2Rl ICpwYXR0ZXJuLCBMaXN0ICpkZWZpbmVWYXJpYWJsZUxpc3QsCisJCQkJUlBTa2lwVG8gcnBTa2lw VG8sIGludCBmcmFtZU9wdGlvbnMpCit7CisJUlBSUGF0dGVybiAqcmVzdWx0OworCVJQUlBhdHRl cm5Ob2RlICpvcHRpbWl6ZWQ7CisJY2hhcgkgICAqdmFyTmFtZXNTdGFja1tSUFJfVkFSSURfTUFY XTsKKwlpbnQJCQludW1WYXJzOworCWludAkJCW51bUVsZW1lbnRzOworCVJQUkRlcHRoCW1heERl cHRoOworCWludAkJCWlkeDsKKwlib29sCQloYXNMaW1pdGVkRnJhbWU7CisKKwkvKiBDYWxsZXIg bXVzdCBjaGVjayBmb3IgTlVMTCBwYXR0ZXJuIGJlZm9yZSBjYWxsaW5nICovCisJQXNzZXJ0KHBh dHRlcm4gIT0gTlVMTCk7CisKKwkvKiBPcHRpbWl6ZSB0aGUgcGF0dGVybiB0cmVlICovCisJb3B0 aW1pemVkID0gb3B0aW1pemVSUFJQYXR0ZXJuKGNvcHlPYmplY3QocGF0dGVybikpOworCisJLyog Q29sbGVjdCB2YXJpYWJsZSBuYW1lcyBmcm9tIERFRklORSBjbGF1c2UgKi8KKwludW1WYXJzID0g Y29sbGVjdERlZmluZVZhcmlhYmxlcyhkZWZpbmVWYXJpYWJsZUxpc3QsIHZhck5hbWVzU3RhY2sp OworCisJLyogU2NhbiBwYXR0ZXJuOiBjb2xsZWN0IHZhcmlhYmxlcywgY291bnQgZWxlbWVudHMs IHZhbGlkYXRlIGxpbWl0cyAqLworCXNjYW5SUFJQYXR0ZXJuKG9wdGltaXplZCwgdmFyTmFtZXNT dGFjaywgJm51bVZhcnMsICZudW1FbGVtZW50cywgJm1heERlcHRoKTsKKworCS8qIEFsbG9jYXRl IHJlc3VsdCBzdHJ1Y3R1cmUgKi8KKwlyZXN1bHQgPSBhbGxvY2F0ZVJQUlBhdHRlcm4obnVtVmFy cywgbnVtRWxlbWVudHMsIG1heERlcHRoLCB2YXJOYW1lc1N0YWNrKTsKKworCS8qIEZpbGwgZWxl bWVudHMgKHBhc3MgMikgKi8KKwlpZHggPSAwOworCWZpbGxSUFJQYXR0ZXJuKG9wdGltaXplZCwg cmVzdWx0LCAmaWR4LCAwKTsKKworCS8qIEZpbmFsaXplOiBzZXQgdXAgbmV4dCBwb2ludGVycywg ZmxhZ3MsIGFuZCBhZGQgRklOIG1hcmtlciAqLworCWZpbmFsaXplUlBSUGF0dGVybihyZXN1bHQp OworCisJLyoKKwkgKiBDb21wdXRlIGNvbnRleHQgYWJzb3JwdGlvbiBlbGlnaWJpbGl0eS4gQWJz b3JwdGlvbiByZXF1aXJlcyBib3RoCisJICogc3RydWN0dXJhbCBhYnNvcmJhYmlsaXR5IGFuZCBy dW50aW1lIGNvbmRpdGlvbnMuIENoZWNrIHJ1bnRpbWUKKwkgKiBjb25kaXRpb25zIGZpcnN0IHRv IGF2b2lkIHVubmVjZXNzYXJ5IHBhdHRlcm4gYW5hbHlzaXMuCisJICoKKwkgKiBSdW50aW1lIGNv bmRpdGlvbnMgZm9yIGFic29ycHRpb246CisJICoKKwkgKiAxLiBTS0lQIFRPIFBBU1QgTEFTVCBS T1cgcmVxdWlyZWQgKG5vdCBTS0lQIFRPIE5FWFQgUk9XKTogV2l0aCBORVhUCisJICogUk9XLCBh ZnRlciBlYWNoIG1hdGNoIHRoZSBzZWFyY2ggcmVzdW1lcyBmcm9tIHRoZSBuZXh0IHJvdywgc28g Y29udGV4dHMKKwkgKiBhcmUgaW1tZWRpYXRlbHkgZGlzY2FyZGVkLiBObyByZWR1bmRhbnQgY29u dGV4dHMgYWNjdW11bGF0ZSwgbWFraW5nCisJICogYWJzb3JwdGlvbiB1bm5lY2Vzc2FyeS4KKwkg KgorCSAqIDIuIFVuYm91bmRlZCBmcmFtZSBlbmQgcmVxdWlyZWQgKG5vdCBST1dTIHdpdGggYm91 bmRlZCBlbmQpOiBXaXRoIGEKKwkgKiBib3VuZGVkIGZyYW1lIChlLmcuLCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIDEwIEZPTExPV0lORyksCisJICogbWF0Y2hlcyBtYXkgYmUgdHJ1bmNh dGVkIGF0IGZyYW1lIGJvdW5kYXJpZXMuIFRoaXMgY2hhbmdlcyB0aGUKKwkgKiBhYnNvcnB0aW9u IHNlbWFudGljcyAtIG9sZGVyIGNvbnRleHRzIGRvbid0IG5lY2Vzc2FyaWx5IHByb2R1Y2UgbG9u Z2VyCisJICogbWF0Y2hlcyB3aGVuIGZyYW1lIGxpbWl0cyBhcHBseSBkaWZmZXJlbnRseSB0byBl YWNoIGNvbnRleHQuCisJICovCisJaGFzTGltaXRlZEZyYW1lID0gKGZyYW1lT3B0aW9ucyAmIEZS QU1FT1BUSU9OX1JPV1MpICYmCisJCSEoZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fRU5EX1VO Qk9VTkRFRF9GT0xMT1dJTkcpOworCisJaWYgKHJwU2tpcFRvID09IFNUX1BBU1RfTEFTVF9ST1cg JiYgIWhhc0xpbWl0ZWRGcmFtZSkKKwl7CisJCS8qIFJ1bnRpbWUgY29uZGl0aW9ucyBtZXQgLSBj aGVjayBzdHJ1Y3R1cmFsIGFic29yYmFiaWxpdHkgKi8KKwkJY29tcHV0ZUFic29yYmFiaWxpdHko cmVzdWx0KTsKKwl9CisKKwlyZXR1cm4gcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v c2V0cmVmcy5jCmluZGV4IDFiNWI5YjVlZDljLi4xNDM2N2FmY2M3YyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL3NldHJlZnMuYwpAQCAtMjE0LDcgKzIxNCw2IEBAIHN0YXRpYyBMaXN0ICpzZXRf d2luZG93YWdnX3J1bmNvbmRpdGlvbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogc3Rh dGljIHZvaWQgcmVjb3JkX2VsaWRlZF9ub2RlKFBsYW5uZXJHbG9iYWwgKmdsb2IsIGludCBwbGFu X25vZGVfaWQsCiAJCQkJCQkJICAgTm9kZVRhZyBlbGlkZWRfdHlwZSwgQml0bWFwc2V0ICpyZWxp ZHMpOwogCi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCQlTVUJQTEFOIFJFRkVSRU5D RVMKQEAgLTI2MjcsNiArMjYyNiwzMiBAQCBzZXRfdXBwZXJfcmVmZXJlbmNlcyhQbGFubmVySW5m byAqcm9vdCwgUGxhbiAqcGxhbiwgaW50IHJ0b2Zmc2V0KQogCQkJCQkgICBOUk1fRVFVQUwsCiAJ CQkJCSAgIE5VTV9FWEVDX1FVQUwocGxhbikpOwogCisJLyoKKwkgKiBNb2RpZmllcyBhbiBleHBy ZXNzaW9uIHRyZWUgaW4gZWFjaCBERUZJTkUgY2xhdXNlIHNvIHRoYXQgYWxsIFZhcgorCSAqIG5v ZGVzJ3MgdmFybm8gcmVmZXJzIHRvIE9VVEVSX1ZBUi4KKwkgKi8KKwlpZiAoSXNBKHBsYW4sIFdp bmRvd0FnZykpCisJeworCQlXaW5kb3dBZ2cgICp3cGxhbiA9IChXaW5kb3dBZ2cgKikgcGxhbjsK KworCQlpZiAod3BsYW4tPmRlZmluZUNsYXVzZSAhPSBOSUwpCisJCXsKKwkJCWZvcmVhY2gobCwg d3BsYW4tPmRlZmluZUNsYXVzZSkKKwkJCXsKKwkJCQlUYXJnZXRFbnRyeSAqdGxlID0gKFRhcmdl dEVudHJ5ICopIGxmaXJzdChsKTsKKworCQkJCXRsZS0+ZXhwciA9IChFeHByICopCisJCQkJCWZp eF91cHBlcl9leHByKHJvb3QsCisJCQkJCQkJCSAgIChOb2RlICopIHRsZS0+ZXhwciwKKwkJCQkJ CQkJICAgc3VicGxhbl9pdGxpc3QsCisJCQkJCQkJCSAgIE9VVEVSX1ZBUiwKKwkJCQkJCQkJICAg cnRvZmZzZXQsCisJCQkJCQkJCSAgIE5STV9FUVVBTCwKKwkJCQkJCQkJICAgTlVNX0VYRUNfUVVB TChwbGFuKSk7CisJCQl9CisJCX0KKwl9CisKIAlwZnJlZShzdWJwbGFuX2l0bGlzdCk7CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBqb2ludHJlZS5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGpvaW50cmVlLmMKaW5kZXggYzkwZjRiMzI3 MzMuLmJjZWRjNWI4NDllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9w cmVwam9pbnRyZWUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRy ZWUuYwpAQCAtMjUxNCw2ICsyNTE0LDE1IEBAIHBlcmZvcm1fcHVsbHVwX3JlcGxhY2VfdmFycyhQ bGFubmVySW5mbyAqcm9vdCwKIAlwYXJzZS0+cmV0dXJuaW5nTGlzdCA9IChMaXN0ICopCiAJCXB1 bGx1cF9yZXBsYWNlX3ZhcnMoKE5vZGUgKikgcGFyc2UtPnJldHVybmluZ0xpc3QsIHJ2Y29udGV4 dCk7CiAKKwlmb3JlYWNoKGxjLCBwYXJzZS0+d2luZG93Q2xhdXNlKQorCXsKKwkJV2luZG93Q2xh dXNlICp3YyA9IGxmaXJzdF9ub2RlKFdpbmRvd0NsYXVzZSwgbGMpOworCisJCWlmICh3Yy0+ZGVm aW5lQ2xhdXNlICE9IE5JTCkKKwkJCXdjLT5kZWZpbmVDbGF1c2UgPSAoTGlzdCAqKQorCQkJCXB1 bGx1cF9yZXBsYWNlX3ZhcnMoKE5vZGUgKikgd2MtPmRlZmluZUNsYXVzZSwgcnZjb250ZXh0KTsK Kwl9CisKIAlpZiAocGFyc2UtPm9uQ29uZmxpY3QpCiAJewogCQlwYXJzZS0+b25Db25mbGljdC0+ b25Db25mbGljdFNldCA9IChMaXN0ICopCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w bGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDhjOTMyMWFh YjhjLi45YzA5ODQ4ZDRhZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTIwLDYgKzIwLDcgQEAK ICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgogI2luY2x1ZGUgIm5vZGVzL2JpdG1hcHNldC5o IgogI2luY2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgiCisjaW5jbHVkZSAibm9kZXMvcGFyc2Vu b2Rlcy5oIgogI2luY2x1ZGUgIm5vZGVzL3ByaW1ub2Rlcy5oIgogCiAKQEAgLTEyNDIsNiArMTI0 Myw3MCBAQCB0eXBlZGVmIHN0cnVjdCBBZ2cKIAlMaXN0CSAgICpjaGFpbjsKIH0gQWdnOwogCisv KiAtLS0tLS0tLS0tLS0tLS0tCisgKgkJUm93IFBhdHRlcm4gUmVjb2duaXRpb24gY29tcGlsZWQg cGF0dGVybiB0eXBlcworICogLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qIFR5cGUgZGVmaW5p dGlvbnMgZm9yIFJQUiBwYXR0ZXJuIGVsZW1lbnRzICovCit0eXBlZGVmIHVpbnQ4IFJQUlZhcklk OwkJCS8qIHBhdHRlcm4gdmFyaWFibGUgSUQgKi8KK3R5cGVkZWYgdWludDggUlBSRWxlbUZsYWdz OwkJLyogZWxlbWVudCBmbGFncyAqLwordHlwZWRlZiB1aW50OCBSUFJEZXB0aDsJCQkvKiBncm91 cCBuZXN0aW5nIGRlcHRoICovCit0eXBlZGVmIGludDMyIFJQUlF1YW50aXR5OwkJLyogcXVhbnRp ZmllciBtaW4vbWF4ICovCit0eXBlZGVmIGludDE2IFJQUkVsZW1JZHg7CQkvKiBlbGVtZW50IGFy cmF5IGluZGV4ICovCisKKy8qCisgKiBSUFJQYXR0ZXJuRWxlbWVudCAtIGZsYXQgZWxlbWVudCBm b3IgTkZBIHBhdHRlcm4gbWF0Y2hpbmcgKDE2IGJ5dGVzKQorICoKKyAqIExheW91dCBvcHRpbWl6 ZWQgZm9yIGFsaWdubWVudCAobm8gcGFkZGluZyBob2xlcyk6CisgKiAgIHZhcklkKDEpICsgZGVw dGgoMSkgKyBmbGFncygxKSArIHJlc2VydmVkKDEpICsgbWluKDQpICsgbWF4KDQpICsgbmV4dCgy KSArIGp1bXAoMikKKyAqLwordHlwZWRlZiBzdHJ1Y3QgUlBSUGF0dGVybkVsZW1lbnQKK3sKKwlS UFJWYXJJZAl2YXJJZDsJCQkvKiB2YXJpYWJsZSBJRCwgb3Igc3BlY2lhbCB2YWx1ZSBmb3IgY29u dHJvbCAqLworCVJQUkRlcHRoCWRlcHRoOwkJCS8qIGdyb3VwIG5lc3RpbmcgZGVwdGggKi8KKwlS UFJFbGVtRmxhZ3MgZmxhZ3M7CQkJLyogZmxhZ3MgKHJlbHVjdGFudCwgZXRjLikgKi8KKwl1aW50 OAkJcmVzZXJ2ZWQ7CQkvKiByZXNlcnZlZCBwYWRkaW5nIGJ5dGUgKi8KKwlSUFJRdWFudGl0eSBt aW47CQkJLyogcXVhbnRpZmllciBtaW5pbXVtICovCisJUlBSUXVhbnRpdHkgbWF4OwkJCS8qIHF1 YW50aWZpZXIgbWF4aW11bSAqLworCVJQUkVsZW1JZHgJbmV4dDsJCQkvKiBuZXh0IGVsZW1lbnQg aW5kZXggKi8KKwlSUFJFbGVtSWR4CWp1bXA7CQkJLyoganVtcCB0YXJnZXQgKGZvciBBTFQvR1JP VVApICovCit9IFJQUlBhdHRlcm5FbGVtZW50OworCisvKgorICogUlBSUGF0dGVybiAtIGNvbXBp bGVkIHBhdHRlcm4gZm9yIE5GQSBleGVjdXRpb24KKyAqCisgKiBSZXF1aXJlcyBjdXN0b20gY29w eS9vdXQvcmVhZCBmdW5jdGlvbnMgZHVlIHRvIGVsZW1lbnRzIGFycmF5LgorICovCit0eXBlZGVm IHN0cnVjdCBSUFJQYXR0ZXJuCit7CisJcGdfbm9kZV9hdHRyKGN1c3RvbV9jb3B5X2VxdWFsLCBj dXN0b21fcmVhZF93cml0ZSkKKworCU5vZGVUYWcJCXR5cGU7CQkJLyogVF9SUFJQYXR0ZXJuICov CisJaW50CQkJbnVtVmFyczsJCS8qIG51bWJlciBvZiBwYXR0ZXJuIHZhcmlhYmxlcyAqLworCWNo YXIJICAqKnZhck5hbWVzOwkJLyogYXJyYXkgb2YgdmFyaWFibGUgbmFtZXMgKERFRklORSBvcmRl cgorCQkJCQkJCQkgKiBmaXJzdCkgKi8KKwlSUFJEZXB0aAltYXhEZXB0aDsJCS8qIG1heGltdW0g Z3JvdXAgbmVzdGluZyBkZXB0aCAqLworCWludAkJCW51bUVsZW1lbnRzOwkvKiBudW1iZXIgb2Yg ZWxlbWVudHMgKi8KKwlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbWVudHM7CS8qIGFycmF5IG9mIHBh dHRlcm4gZWxlbWVudHMgKi8KKworCS8qLS0tLS0tLS0tLS0tLS0tLQorCSAqIENvbnRleHQgYWJz b3JwdGlvbiBvcHRpbWl6YXRpb24uCisJICoKKwkgKiBBYnNvcnB0aW9uIGlzIG9ubHkgc2FmZSB3 aGVuIGxhdGVyIG1hdGNoZXMgYXJlIGd1YXJhbnRlZWQgdG8gYmUKKwkgKiBzdWZmaXhlcyBvZiBl YXJsaWVyIG1hdGNoZXMuIFRoaXMgcmVxdWlyZXMgc2ltcGxlIHBhdHRlcm4gc3RydWN0dXJlOgor CSAqCisJICogQ2FzZSAxOiBObyBBTFQsIHNpbmdsZSB1bmJvdW5kZWQgZWxlbWVudCAoQSssIChB IEIpKykKKwkgKiBDYXNlIDI6IFRvcC1sZXZlbCBBTFQgd2l0aCBlYWNoIGJyYW5jaCBiZWluZyBz aW5nbGUgdW5ib3VuZGVkIChBKyB8IEIrKQorCSAqCisJICogQ29tcGxleCBwYXR0ZXJucyBsaWtl IEEgQiAoQSBCKSsgY291bGQgdGhlb3JldGljYWxseSBiZSB0cmFuc2Zvcm1lZCB0bworCSAqIChB IEIpezIsfSBmb3IgYWJzb3JwdGlvbiwgYnV0IHRoaXMgY2hhbmdlcyBsZXhpY2FsIG9yZGVyIGFu ZCBpcyBub3QKKwkgKiBpbXBsZW1lbnRlZC4gU2ltaWxhcmx5LCAoQXxCKSsgY2Fubm90IGJlIGFi c29yYmVkIGJlY2F1c2UgZGlmZmVyZW50CisJICogc3RhcnQgcG9zaXRpb25zIHByb2R1Y2UgZGlm ZmVyZW50IG1hdGNoIGNvbnRlbnRzIChub3Qgc3VmZml4IHJlbGF0aW9uKS4KKwkgKi8KKwlib29s CQlpc0Fic29yYmFibGU7CS8qIHRydWUgaWYgcGF0dGVybiBzdXBwb3J0cyBjb250ZXh0IGFic29y cHRpb24gKi8KK30gUlBSUGF0dGVybjsKKwogLyogLS0tLS0tLS0tLS0tLS0tLQogICoJCXdpbmRv dyBhZ2dyZWdhdGUgbm9kZQogICogLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTMxMiw2ICsxMzc3LDE1 IEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd0FnZwogCS8qIG51bGxzIHNvcnQgZmlyc3QgZm9yIGlu X3JhbmdlIHRlc3RzPyAqLwogCWJvb2wJCWluUmFuZ2VOdWxsc0ZpcnN0OwogCisJLyogUm93IFBh dHRlcm4gUmVjb2duaXRpb24gQUZURVIgTUFUQ0ggU0tJUCBjbGF1c2UgKi8KKwlSUFNraXBUbwly cFNraXBUbzsJCS8qIFJvdyBQYXR0ZXJuIFNraXAgVG8gdHlwZSAqLworCisJLyogQ29tcGlsZWQg Um93IFBhdHRlcm4gZm9yIE5GQSBleGVjdXRpb24gKi8KKwlzdHJ1Y3QgUlBSUGF0dGVybiAqcnBQ YXR0ZXJuOworCisJLyogUm93IFBhdHRlcm4gREVGSU5FIGNsYXVzZSAobGlzdCBvZiBUYXJnZXRF bnRyeSkgKi8KKwlMaXN0CSAgICpkZWZpbmVDbGF1c2U7CisKIAkvKgogCSAqIGZhbHNlIGZvciBh bGwgYXBhcnQgZnJvbSB0aGUgV2luZG93QWdnIHRoYXQncyBjbG9zZXN0IHRvIHRoZSByb290IG9m CiAJICogdGhlIHBsYW4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9ycHIuaCBi L3NyYy9pbmNsdWRlL29wdGltaXplci9ycHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uN2E4OTM4ZGJlYmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvcnByLmgKQEAgLTAsMCArMSw1NyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgor ICogcnByLmgKKyAqCSAgUm93IFBhdHRlcm4gUmVjb2duaXRpb24gcGF0dGVybiBjb21waWxhdGlv biBmb3IgcGxhbm5lcgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnByLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq LworI2lmbmRlZiBPUFRJTUlaRVJfUlBSX0gKKyNkZWZpbmUgT1BUSU1JWkVSX1JQUl9ICisKKyNp bmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCisjaW5jbHVkZSAibm9kZXMvcGxhbm5vZGVzLmgi CisKKy8qIExpbWl0cyBhbmQgc3BlY2lhbCB2YWx1ZXMgKi8KKyNkZWZpbmUgUlBSX1ZBUklEX01B WAkJMjUxIC8qIG1heCBwYXR0ZXJuIHZhcmlhYmxlczogMjUxICovCisjZGVmaW5lIFJQUl9RVUFO VElUWV9JTkYJSU5UMzJfTUFYCS8qIHVuYm91bmRlZCBxdWFudGlmaWVyICovCisjZGVmaW5lIFJQ Ul9DT1VOVF9NQVgJCUlOVDMyX01BWAkvKiBtYXggcnVudGltZSBjb3VudCAoTkZBIHN0YXRlKSAq LworI2RlZmluZSBSUFJfRUxFTUlEWF9NQVgJCUlOVDE2X01BWAkvKiBtYXggcGF0dGVybiBlbGVt ZW50cyAqLworI2RlZmluZSBSUFJfRUxFTUlEWF9JTlZBTElECSgoUlBSRWxlbUlkeCkgLTEpCS8q IGludmFsaWQgaW5kZXggKi8KKyNkZWZpbmUgUlBSX0RFUFRIX01BWAkJKFVJTlQ4X01BWCAtIDEp IC8qIG1heCBwYXR0ZXJuIG5lc3RpbmcgZGVwdGg6IDI1NCAqLworI2RlZmluZSBSUFJfREVQVEhf Tk9ORQkJVUlOVDhfTUFYCS8qIG5vIGVuY2xvc2luZyBncm91cCAodG9wLWxldmVsKSAqLworCisv KiBTcGVjaWFsIHZhcklkIHZhbHVlcyBmb3IgY29udHJvbCBlbGVtZW50cyAoMjUyLTI1NSkgKi8K KyNkZWZpbmUgUlBSX1ZBUklEX0JFR0lOCQkoKFJQUlZhcklkKSAyNTIpCS8qIGdyb3VwIGJlZ2lu ICovCisjZGVmaW5lIFJQUl9WQVJJRF9FTkQJCSgoUlBSVmFySWQpIDI1MykJLyogZ3JvdXAgZW5k ICovCisjZGVmaW5lIFJQUl9WQVJJRF9BTFQJCSgoUlBSVmFySWQpIDI1NCkJLyogYWx0ZXJuYXRp b24gc3RhcnQgKi8KKyNkZWZpbmUgUlBSX1ZBUklEX0ZJTgkJKChSUFJWYXJJZCkgMjU1KQkvKiBw YXR0ZXJuIGZpbmlzaCAqLworCisvKiBFbGVtZW50IGZsYWdzICovCisjZGVmaW5lIFJQUl9FTEVN X1JFTFVDVEFOVAkJCTB4MDEJLyogcmVsdWN0YW50IChub24tZ3JlZWR5KQorCQkJCQkJCQkJCQkg KiBxdWFudGlmaWVyICovCisjZGVmaW5lIFJQUl9FTEVNX0FCU09SQkFCTEVfQlJBTkNICTB4MDIJ LyogZWxlbWVudCBpbiBhYnNvcmJhYmxlIHJlZ2lvbiAqLworI2RlZmluZSBSUFJfRUxFTV9BQlNP UkJBQkxFCQkJMHgwNAkvKiBhYnNvcnB0aW9uIGp1ZGdtZW50IHBvaW50ICovCisKKy8qIEFjY2Vz c29yIG1hY3JvcyBmb3IgUlBSUGF0dGVybkVsZW1lbnQgKi8KKyNkZWZpbmUgUlBSRWxlbUlzUmVs dWN0YW50KGUpCQkJKChlKS0+ZmxhZ3MgJiBSUFJfRUxFTV9SRUxVQ1RBTlQpCisjZGVmaW5lIFJQ UkVsZW1Jc0Fic29yYmFibGVCcmFuY2goZSkJKChlKS0+ZmxhZ3MgJiBSUFJfRUxFTV9BQlNPUkJB QkxFX0JSQU5DSCkKKyNkZWZpbmUgUlBSRWxlbUlzQWJzb3JiYWJsZShlKQkJCSgoZSktPmZsYWdz ICYgUlBSX0VMRU1fQUJTT1JCQUJMRSkKKyNkZWZpbmUgUlBSRWxlbUlzVmFyKGUpCQkJKChlKS0+ dmFySWQgPD0gUlBSX1ZBUklEX01BWCkKKyNkZWZpbmUgUlBSRWxlbUlzQmVnaW4oZSkJCSgoZSkt PnZhcklkID09IFJQUl9WQVJJRF9CRUdJTikKKyNkZWZpbmUgUlBSRWxlbUlzRW5kKGUpCQkJKChl KS0+dmFySWQgPT0gUlBSX1ZBUklEX0VORCkKKyNkZWZpbmUgUlBSRWxlbUlzQWx0KGUpCQkJKChl KS0+dmFySWQgPT0gUlBSX1ZBUklEX0FMVCkKKyNkZWZpbmUgUlBSRWxlbUlzRmluKGUpCQkJKChl KS0+dmFySWQgPT0gUlBSX1ZBUklEX0ZJTikKKyNkZWZpbmUgUlBSRWxlbUNhblNraXAoZSkJCSgo ZSktPm1pbiA9PSAwKQorCitleHRlcm4gTGlzdCAqY29sbGVjdFBhdHRlcm5WYXJpYWJsZXMoUlBS UGF0dGVybk5vZGUgKnBhdHRlcm4pOworZXh0ZXJuIExpc3QgKmZpbHRlckRlZmluZUNsYXVzZShM aXN0ICpkZWZpbmVDbGF1c2UsIExpc3QgKnBhdHRlcm5WYXJzLAorCQkJCQkJCQlMaXN0ICoqZGVm aW5lVmFyaWFibGVMaXN0KTsKK2V4dGVybiBSUFJQYXR0ZXJuICpidWlsZFJQUlBhdHRlcm4oUlBS UGF0dGVybk5vZGUgKnBhdHRlcm4sIExpc3QgKmRlZmluZVZhcmlhYmxlTGlzdCwKKwkJCQkJCQkJ ICAgUlBTa2lwVG8gcnBTa2lwVG8sIGludCBmcmFtZU9wdGlvbnMpOworCisjZW5kaWYJCQkJCQkJ LyogT1BUSU1JWkVSX1JQUl9IICovCi0tIAoyLjQzLjAKCg== ----Next_Part(Sun_Feb_15_18_06_52_2026_930)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v43-0005-Row-pattern-recognition-patch-executor-and-comma.patch" RnJvbSA5YWM4NjAwZDNlZjNlOTFmN2JlYmI1YTI4NjJiMGYzNTcyNzhlYWNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTdW4sIDE1IEZlYiAyMDI2IDE3OjQ3OjQ5ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDMg NS84XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAoZXhlY3V0b3IgYW5kCiBjb21tYW5k cykuCgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICB8ICA0NjEgKysr KysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyB8IDIzNDMgKysrKysrKysr KysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC93aW5kb3dmdW5jcy5jICB8 ICAgMjUgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICB8ICAgIDYgKwog c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgIHwgIDExOSArKwogNSBmaWxlcyBj aGFuZ2VkLCAyOTQzIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYwppbmRleCBiOTU4Nzk4M2Y4OC4uNTc1MjM2ZjBiYzYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJub2Rlcy9leHRlbnNpYmxlLmgiCiAj aW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgi CisjaW5jbHVkZSAib3B0aW1pemVyL3Jwci5oIgogI2luY2x1ZGUgInBhcnNlci9hbmFseXplLmgi CiAjaW5jbHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0 ZUhhbmRsZXIuaCIKQEAgLTExNyw2ICsxMTgsMjAgQEAgc3RhdGljIHZvaWQgc2hvd193aW5kb3df ZGVmKFdpbmRvd0FnZ1N0YXRlICpwbGFuc3RhdGUsCiBzdGF0aWMgdm9pZCBzaG93X3dpbmRvd19r ZXlzKFN0cmluZ0luZm8gYnVmLCBQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkJCQkJCQkgaW50IG5r ZXlzLCBBdHRyTnVtYmVyICprZXljb2xzLAogCQkJCQkJCSBMaXN0ICphbmNlc3RvcnMsIEV4cGxh aW5TdGF0ZSAqZXMpOworc3RhdGljIHZvaWQgYXBwZW5kX3Jwcl9xdWFudGlmaWVyKFN0cmluZ0lu Zm8gYnVmLCBSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSk7CitzdGF0aWMgY2hhciAqZGVwYXJzZV9y cHJfcGF0dGVybihSUFJQYXR0ZXJuICpwYXR0ZXJuKTsKK3N0YXRpYyB2b2lkIGRlcGFyc2VfcnBy X2VsZW1lbnRzKFJQUlBhdHRlcm4gKnBhdHRlcm4sIGludCAqaWR4LAorCQkJCQkJCQkgU3RyaW5n SW5mb0RhdGEgKmJ1ZiwgUlBSRGVwdGggZ3JvdXBEZXB0aCwKKwkJCQkJCQkJIFJQUkRlcHRoICpw cmV2RGVwdGgsIGJvb2wgKm5lZWRTcGFjZSk7CitzdGF0aWMgdm9pZCBkZXBhcnNlX3Jwcl9ncm91 cChSUFJQYXR0ZXJuICpwYXR0ZXJuLCBpbnQgKmlkeCwKKwkJCQkJCQkgIFN0cmluZ0luZm9EYXRh ICpidWYsIFJQUkRlcHRoICpwcmV2RGVwdGgsCisJCQkJCQkJICBib29sICpuZWVkU3BhY2UpOwor c3RhdGljIHZvaWQgZGVwYXJzZV9ycHJfYWx0KFJQUlBhdHRlcm4gKnBhdHRlcm4sIGludCAqaWR4 LAorCQkJCQkJCVN0cmluZ0luZm9EYXRhICpidWYsIFJQUkRlcHRoICpwcmV2RGVwdGgsCisJCQkJ CQkJYm9vbCAqbmVlZFNwYWNlLCBMaXN0ICoqYWx0U2Vwcyk7CitzdGF0aWMgdm9pZCBkZXBhcnNl X3Jwcl92YXIoUlBSUGF0dGVybiAqcGF0dGVybiwgaW50ICppZHgsCisJCQkJCQkJU3RyaW5nSW5m b0RhdGEgKmJ1ZiwgUlBSRGVwdGggKnByZXZEZXB0aCwKKwkJCQkJCQlib29sICpuZWVkU3BhY2Us IExpc3QgKiphbHRTZXBzKTsKIHN0YXRpYyB2b2lkIHNob3dfc3RvcmFnZV9pbmZvKGNoYXIgKm1h eFN0b3JhZ2VUeXBlLCBpbnQ2NCBtYXhTcGFjZVVzZWQsCiAJCQkJCQkJICBFeHBsYWluU3RhdGUg KmVzKTsKIHN0YXRpYyB2b2lkIHNob3dfdGFibGVzYW1wbGUoVGFibGVTYW1wbGVDbGF1c2UgKnRz YywgUGxhblN0YXRlICpwbGFuc3RhdGUsCkBAIC0xMjcsNiArMTQyLDcgQEAgc3RhdGljIHZvaWQg c2hvd19pbmNyZW1lbnRhbF9zb3J0X2luZm8oSW5jcmVtZW50YWxTb3J0U3RhdGUgKmluY3Jzb3J0 c3RhdGUsCiBzdGF0aWMgdm9pZCBzaG93X2hhc2hfaW5mbyhIYXNoU3RhdGUgKmhhc2hzdGF0ZSwg RXhwbGFpblN0YXRlICplcyk7CiBzdGF0aWMgdm9pZCBzaG93X21hdGVyaWFsX2luZm8oTWF0ZXJp YWxTdGF0ZSAqbXN0YXRlLCBFeHBsYWluU3RhdGUgKmVzKTsKIHN0YXRpYyB2b2lkIHNob3dfd2lu ZG93YWdnX2luZm8oV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBFeHBsYWluU3RhdGUgKmVzKTsK K3N0YXRpYyB2b2lkIHNob3dfcnByX25mYV9zdGF0cyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUs IEV4cGxhaW5TdGF0ZSAqZXMpOwogc3RhdGljIHZvaWQgc2hvd19jdGVzY2FuX2luZm8oQ3RlU2Nh blN0YXRlICpjdGVzY2Fuc3RhdGUsIEV4cGxhaW5TdGF0ZSAqZXMpOwogc3RhdGljIHZvaWQgc2hv d190YWJsZV9mdW5jX3NjYW5faW5mbyhUYWJsZUZ1bmNTY2FuU3RhdGUgKnRzY2Fuc3RhdGUsCiAJ CQkJCQkJCQkgIEV4cGxhaW5TdGF0ZSAqZXMpOwpAQCAtMjg4OSw2ICsyOTA1LDI4NCBAQCBzaG93 X3NvcnRvcmRlcl9vcHRpb25zKFN0cmluZ0luZm8gYnVmLCBOb2RlICpzb3J0ZXhwciwKIAl9CiB9 CiAKKy8qCisgKiBBcHBlbmQgcXVhbnRpZmllciBzdWZmaXggZm9yIGEgcGF0dGVybiBlbGVtZW50 LgorICovCitzdGF0aWMgdm9pZAorYXBwZW5kX3Jwcl9xdWFudGlmaWVyKFN0cmluZ0luZm8gYnVm LCBSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSkKK3sKKwkvKiBBcHBlbmQgcXVhbnRpZmllciBpZiBu b3QgezEsMX0gKi8KKwlpZiAoZWxlbS0+bWluID09IDAgJiYgZWxlbS0+bWF4ID09IFJQUl9RVUFO VElUWV9JTkYpCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyonKTsKKwllbHNlIGlmIChl bGVtLT5taW4gPT0gMSAmJiBlbGVtLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORikKKwkJYXBwZW5k U3RyaW5nSW5mb0NoYXIoYnVmLCAnKycpOworCWVsc2UgaWYgKGVsZW0tPm1pbiA9PSAwICYmIGVs ZW0tPm1heCA9PSAxKQorCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICc/Jyk7CisJZWxzZSBp ZiAoZWxlbS0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYpCisJCWFwcGVuZFN0cmluZ0luZm8oYnVm LCAieyVkLH0iLCBlbGVtLT5taW4pOworCWVsc2UgaWYgKGVsZW0tPm1pbiA9PSBlbGVtLT5tYXgg JiYgZWxlbS0+bWluICE9IDEpCisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAieyVkfSIsIGVsZW0t Pm1pbik7CisJZWxzZSBpZiAoZWxlbS0+bWluICE9IDEgfHwgZWxlbS0+bWF4ICE9IDEpCisJCWFw cGVuZFN0cmluZ0luZm8oYnVmLCAieyVkLCVkfSIsIGVsZW0tPm1pbiwgZWxlbS0+bWF4KTsKKwor CWlmIChSUFJFbGVtSXNSZWx1Y3RhbnQoZWxlbSkpCisJeworCQlpZiAoZWxlbS0+bWluID09IDEg JiYgZWxlbS0+bWF4ID09IDEpCisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgInsxfSIpOwkvKiBt YWtlIHJlbHVjdGFudCA/IHVuYW1iaWd1b3VzICovCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1 ZiwgJz8nKTsKKwl9CisKKwkvKiBBcHBlbmQgYWJzb3JwdGlvbiBtYXJrZXJzOiAiIGZvciBqdWRn bWVudCBwb2ludCwgJyBmb3IgYnJhbmNoIG9ubHkgKi8KKwlpZiAoUlBSRWxlbUlzQWJzb3JiYWJs ZShlbGVtKSkKKwl7CisJCUFzc2VydChlbGVtLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORik7CisJ CWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyInKTsKKwl9CisJZWxzZSBpZiAoUlBSRWxlbUlz QWJzb3JiYWJsZUJyYW5jaChlbGVtKSkKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnXCcn KTsKK30KKworLyoKKyAqIERlcGFyc2UgYSBjb21waWxlZCBSUFJQYXR0ZXJuIChieXRlY29kZSkg YmFjayB0byBwYXR0ZXJuIHN0cmluZy4KKyAqCisgKiBXYWxrcyB0aGUgZmxhdCBieXRlY29kZSBh cnJheSB1c2luZyBtdXR1YWwgcmVjdXJzaW9uOiBkZXBhcnNlX3Jwcl9lbGVtZW50cworICogcHJv Y2Vzc2VzIHNlcXVlbnRpYWwgZWxlbWVudHMsIGFuZCBkZXBhcnNlX3Jwcl9ncm91cCBoYW5kbGVz IEJFR0lOLi4uRU5ECisgKiBncm91cHMgYnkgcmVjdXJzaW5nIGJhY2sgaW50byBkZXBhcnNlX3Jw cl9lbGVtZW50cyBmb3IgdGhlIGdyb3VwIGNvbnRlbnQuCisgKi8KK3N0YXRpYyBjaGFyICoKK2Rl cGFyc2VfcnByX3BhdHRlcm4oUlBSUGF0dGVybiAqcGF0dGVybikKK3sKKwlTdHJpbmdJbmZvRGF0 YSBidWY7CisJaW50CQkJaWR4ID0gMDsKKwlSUFJEZXB0aAlwcmV2RGVwdGggPSAwOworCWJvb2wJ CW5lZWRTcGFjZSA9IGZhbHNlOworCisJQXNzZXJ0KHBhdHRlcm4gIT0gTlVMTCAmJiBwYXR0ZXJu LT5udW1FbGVtZW50cyA+PSAyKTsKKworCWluaXRTdHJpbmdJbmZvKCZidWYpOworCisJZGVwYXJz ZV9ycHJfZWxlbWVudHMocGF0dGVybiwgJmlkeCwgJmJ1ZiwgUlBSX0RFUFRIX05PTkUsCisJCQkJ CQkgJnByZXZEZXB0aCwgJm5lZWRTcGFjZSk7CisKKwkvKiBDbG9zZSByZW1haW5pbmcgb3BlbiBw YXJlbnMgKi8KKwl3aGlsZSAocHJldkRlcHRoID4gMCkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm9D aGFyKCZidWYsICcpJyk7CisJCXByZXZEZXB0aC0tOworCX0KKworCXJldHVybiBidWYuZGF0YTsK K30KKworLyoKKyAqIFByb2Nlc3MgcGF0dGVybiBlbGVtZW50cyBzZXF1ZW50aWFsbHkgdW50aWwg RklOIG9yIEVORCBhdCBncm91cERlcHRoLgorICoKKyAqIFdoZW4gZ3JvdXBEZXB0aCA+PSAwLCBz dG9wcyBhdCB0aGUgbWF0Y2hpbmcgRU5EIGVsZW1lbnQgKGxlYXZpbmcgaWR4CisgKiBwb2ludGlu ZyB0byBpdCkgc28gdGhlIGNhbGxlciAoZGVwYXJzZV9ycHJfZ3JvdXApIGNhbiBjb25zdW1lIGl0 LgorICogV2hlbiBncm91cERlcHRoIDwgMCwgcHJvY2Vzc2VzIHVudGlsIEZJTiAodG9wLWxldmVs IGNhbGwpLgorICovCitzdGF0aWMgdm9pZAorZGVwYXJzZV9ycHJfZWxlbWVudHMoUlBSUGF0dGVy biAqcGF0dGVybiwgaW50ICppZHgsIFN0cmluZ0luZm9EYXRhICpidWYsCisJCQkJCSBSUFJEZXB0 aCBncm91cERlcHRoLCBSUFJEZXB0aCAqcHJldkRlcHRoLAorCQkJCQkgYm9vbCAqbmVlZFNwYWNl KQoreworCUxpc3QJICAgKmFsdFNlcHMgPSBOSUw7CS8qIHBlbmRpbmcgYWx0ZXJuYXRpb24gc2Vw YXJhdG9yIGluZGljZXMgKi8KKworCXdoaWxlICgqaWR4IDwgcGF0dGVybi0+bnVtRWxlbWVudHMp CisJeworCQlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSA9ICZwYXR0ZXJuLT5lbGVtZW50c1sqaWR4 XTsKKworCQlpZiAoUlBSRWxlbUlzRmluKGVsZW0pKQorCQkJYnJlYWs7CisKKwkJLyogU3RvcCBh dCBFTkQgbWF0Y2hpbmcgb3VyIGdyb3VwIGRlcHRoOyBjYWxsZXIgaGFuZGxlcyBpdCAqLworCQlp ZiAoUlBSRWxlbUlzRW5kKGVsZW0pICYmIGVsZW0tPmRlcHRoID09IGdyb3VwRGVwdGgpCisJCQli cmVhazsKKworCQkvKiBBbHRlcm5hdGlvbiBzZXBhcmF0b3IgKi8KKwkJaWYgKGxpc3RfbWVtYmVy X2ludChhbHRTZXBzLCAqaWR4KSkKKwkJeworCQkJLyogQ2xvc2UgcGFyZW5zIHRvIG1hdGNoIHNl cGFyYXRvciBkZXB0aCBmaXJzdCAqLworCQkJd2hpbGUgKCpwcmV2RGVwdGggPiBlbGVtLT5kZXB0 aCkKKwkJCXsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcpJyk7CisJCQkJKCpwcmV2 RGVwdGgpLS07CisJCQl9CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiB8ICIpOwor CQkJKm5lZWRTcGFjZSA9IGZhbHNlOworCQkJYWx0U2VwcyA9IGxpc3RfZGVsZXRlX2ludChhbHRT ZXBzLCAqaWR4KTsKKwkJfQorCisJCS8qIERpc3BhdGNoIHRvIGVsZW1lbnQtdHlwZSBoYW5kbGVy cyAqLworCQlpZiAoUlBSRWxlbUlzQWx0KGVsZW0pKQorCQkJZGVwYXJzZV9ycHJfYWx0KHBhdHRl cm4sIGlkeCwgYnVmLCBwcmV2RGVwdGgsCisJCQkJCQkJbmVlZFNwYWNlLCAmYWx0U2Vwcyk7CisJ CWVsc2UgaWYgKFJQUkVsZW1Jc0JlZ2luKGVsZW0pKQorCQkJZGVwYXJzZV9ycHJfZ3JvdXAocGF0 dGVybiwgaWR4LCBidWYsIHByZXZEZXB0aCwKKwkJCQkJCQkgIG5lZWRTcGFjZSk7CisJCWVsc2Ug aWYgKFJQUkVsZW1Jc1ZhcihlbGVtKSkKKwkJCWRlcGFyc2VfcnByX3ZhcihwYXR0ZXJuLCBpZHgs IGJ1ZiwgcHJldkRlcHRoLAorCQkJCQkJCW5lZWRTcGFjZSwgJmFsdFNlcHMpOworCX0KKwlsaXN0 X2ZyZWUoYWx0U2Vwcyk7Cit9CisKKy8qCisgKiBQcm9jZXNzIGEgQkVHSU4uLi5FTkQgZ3JvdXAu CisgKgorICogQ29uc3VtZXMgQkVHSU4sIHJlY3Vyc2VzIGludG8gZGVwYXJzZV9ycHJfZWxlbWVu dHMgZm9yIGdyb3VwIGNvbnRlbnQsCisgKiB0aGVuIGNvbnN1bWVzIEVORCBhbmQgb3V0cHV0cyB0 aGUgZ3JvdXAgcXVhbnRpZmllci4KKyAqCisgKiBXaGVuIHRoZSBncm91cCB3cmFwcyBhIHNpbmds ZSBBTFQgd2l0aCBubyBzaWJsaW5ncywgdGhlIGdyb3VwLWxldmVsCisgKiBwYXJlbnRoZXNpcyBp cyBzdXBwcmVzc2VkIHNpbmNlIHRoZSBBTFQtdG8tY2hpbGRyZW4gZGVwdGggdHJhbnNpdGlvbgor ICogYWxyZWFkeSBwcm92aWRlcyBpdCAoYXZvaWRzIGRvdWJsZSBwYXJlbnMgbGlrZSAiKChhIHwg YikpKyIpLgorICovCitzdGF0aWMgdm9pZAorZGVwYXJzZV9ycHJfZ3JvdXAoUlBSUGF0dGVybiAq cGF0dGVybiwgaW50ICppZHgsIFN0cmluZ0luZm9EYXRhICpidWYsCisJCQkJICBSUFJEZXB0aCAq cHJldkRlcHRoLCBib29sICpuZWVkU3BhY2UpCit7CisJUlBSUGF0dGVybkVsZW1lbnQgKmJlZ2lu ID0gJnBhdHRlcm4tPmVsZW1lbnRzWyppZHhdOworCVJQUkRlcHRoCWNoaWxkRGVwdGggPSBiZWdp bi0+ZGVwdGggKyAxOworCWJvb2wJCXNpbmdsZUFsdCA9IGZhbHNlOworCVJQUlBhdHRlcm5FbGVt ZW50ICplbmQ7CisKKwkvKgorCSAqIENoZWNrIGlmIHRoaXMgZ3JvdXAgd3JhcHMgYSBzaW5nbGUg QUxUIHdpdGggbm8gc2libGluZ3MuIFNjYW4gZnJvbQorCSAqIGFmdGVyIEFMVCB0byBFTkQ6IGlm IG5vIGVsZW1lbnQgYXQgY2hpbGREZXB0aCBleGlzdHMsIHRoZSBBTFQgaXMgdGhlCisJICogc29s ZSBjaGlsZC4KKwkgKi8KKwlpZiAoKmlkeCArIDEgPCBwYXR0ZXJuLT5udW1FbGVtZW50cyAmJgor CQlSUFJFbGVtSXNBbHQoJnBhdHRlcm4tPmVsZW1lbnRzWyppZHggKyAxXSkpCisJeworCQlpbnQJ CQlqOworCisJCXNpbmdsZUFsdCA9IHRydWU7CisJCWZvciAoaiA9ICppZHggKyAyOyBqIDwgcGF0 dGVybi0+bnVtRWxlbWVudHM7IGorKykKKwkJeworCQkJUlBSUGF0dGVybkVsZW1lbnQgKmUgPSAm cGF0dGVybi0+ZWxlbWVudHNbal07CisKKwkJCWlmIChSUFJFbGVtSXNFbmQoZSkgJiYgZS0+ZGVw dGggPT0gYmVnaW4tPmRlcHRoKQorCQkJCWJyZWFrOworCQkJaWYgKGUtPmRlcHRoIDw9IGNoaWxk RGVwdGgpCisJCQl7CisJCQkJc2luZ2xlQWx0ID0gZmFsc2U7CisJCQkJYnJlYWs7CisJCQl9CisJ CX0KKwl9CisKKwkvKiBPcGVuIGdyb3VwIHBhcmVuICh1bmxlc3Mgc2luZ2xlIEFMVCBwcm92aWRl cyBpdCkgKi8KKwlpZiAoIXNpbmdsZUFsdCkKKwl7CisJCWlmICgqbmVlZFNwYWNlKQorCQkJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYs ICcoJyk7CisJCSpuZWVkU3BhY2UgPSBmYWxzZTsKKwl9CisJKnByZXZEZXB0aCA9IGNoaWxkRGVw dGg7CisJKCppZHgpKys7CQkJCQkvKiBjb25zdW1lIEJFR0lOICovCisKKwkvKiBQcm9jZXNzIGdy b3VwIGNoaWxkcmVuOyBzdG9wcyBhdCBtYXRjaGluZyBFTkQgKi8KKwlkZXBhcnNlX3Jwcl9lbGVt ZW50cyhwYXR0ZXJuLCBpZHgsIGJ1ZiwgYmVnaW4tPmRlcHRoLAorCQkJCQkJIHByZXZEZXB0aCwg bmVlZFNwYWNlKTsKKworCS8qIENvbnN1bWUgRU5EIGFuZCBvdXRwdXQgcXVhbnRpZmllciAqLwor CUFzc2VydCgqaWR4IDwgcGF0dGVybi0+bnVtRWxlbWVudHMpOworCWVuZCA9ICZwYXR0ZXJuLT5l bGVtZW50c1sqaWR4XTsKKwlBc3NlcnQoUlBSRWxlbUlzRW5kKGVuZCkgJiYgZW5kLT5kZXB0aCA9 PSBiZWdpbi0+ZGVwdGgpOworCisJd2hpbGUgKCpwcmV2RGVwdGggPiBlbmQtPmRlcHRoICsgMSkK Kwl7CisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKKwkJKCpwcmV2RGVwdGgpLS07 CisJfQorCWlmICghc2luZ2xlQWx0KQorCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcpJyk7 CisJYXBwZW5kX3Jwcl9xdWFudGlmaWVyKGJ1ZiwgZW5kKTsKKwkqcHJldkRlcHRoID0gZW5kLT5k ZXB0aDsKKwkqbmVlZFNwYWNlID0gdHJ1ZTsKKwkoKmlkeCkrKzsJCQkJCS8qIGNvbnN1bWUgRU5E ICovCit9CisKKy8qCisgKiBQcm9jZXNzIGFuIEFMVCBlbGVtZW50OiBhZGp1c3QgZGVwdGggcGFy ZW5zIGFuZCByZWdpc3RlciBzZXBhcmF0b3IgcG9zaXRpb25zLgorICovCitzdGF0aWMgdm9pZAor ZGVwYXJzZV9ycHJfYWx0KFJQUlBhdHRlcm4gKnBhdHRlcm4sIGludCAqaWR4LCBTdHJpbmdJbmZv RGF0YSAqYnVmLAorCQkJCVJQUkRlcHRoICpwcmV2RGVwdGgsIGJvb2wgKm5lZWRTcGFjZSwgTGlz dCAqKmFsdFNlcHMpCit7CisJUlBSUGF0dGVybkVsZW1lbnQgKmVsZW0gPSAmcGF0dGVybi0+ZWxl bWVudHNbKmlkeF07CisKKwkvKiBDbG9zZSBwYXJlbnMgZm9yIGRlcHRoIGRlY3JlYXNlICovCisJ d2hpbGUgKCpwcmV2RGVwdGggPiBlbGVtLT5kZXB0aCkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm9D aGFyKGJ1ZiwgJyknKTsKKwkJKCpwcmV2RGVwdGgpLS07CisJCSpuZWVkU3BhY2UgPSB0cnVlOwor CX0KKworCS8qIE9wZW4gcGFyZW5zIHVwIHRvIEFMVCdzIGRlcHRoICovCisJd2hpbGUgKCpwcmV2 RGVwdGggPCBlbGVtLT5kZXB0aCkKKwl7CisJCWlmICgqbmVlZFNwYWNlKQorCQkJYXBwZW5kU3Ry aW5nSW5mb0NoYXIoYnVmLCAnICcpOworCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcoJyk7 CisJCSgqcHJldkRlcHRoKSsrOworCQkqbmVlZFNwYWNlID0gZmFsc2U7CisJfQorCisJLyogUmVn aXN0ZXIgbmV4dCBhbHRlcm5hdGlvbiBzZXBhcmF0b3IgcG9zaXRpb24gKi8KKwlpZiAoZWxlbS0+ bmV4dCAhPSBSUFJfRUxFTUlEWF9JTlZBTElEKQorCXsKKwkJUlBSUGF0dGVybkVsZW1lbnQgKmZp cnN0RWxlbSA9ICZwYXR0ZXJuLT5lbGVtZW50c1tlbGVtLT5uZXh0XTsKKworCQlpZiAoZmlyc3RF bGVtLT5qdW1wICE9IFJQUl9FTEVNSURYX0lOVkFMSUQpCisJCQkqYWx0U2VwcyA9IGxhcHBlbmRf aW50KCphbHRTZXBzLCBmaXJzdEVsZW0tPmp1bXApOworCX0KKwlpZiAoZWxlbS0+anVtcCAhPSBS UFJfRUxFTUlEWF9JTlZBTElEKQorCQkqYWx0U2VwcyA9IGxhcHBlbmRfaW50KCphbHRTZXBzLCBl bGVtLT5qdW1wKTsKKwkoKmlkeCkrKzsKK30KKworLyoKKyAqIFByb2Nlc3MgYSBWQVIgZWxlbWVu dDogYWRqdXN0IGRlcHRoIHBhcmVucyBhbmQgb3V0cHV0IHZhcmlhYmxlIG5hbWUuCisgKi8KK3N0 YXRpYyB2b2lkCitkZXBhcnNlX3Jwcl92YXIoUlBSUGF0dGVybiAqcGF0dGVybiwgaW50ICppZHgs IFN0cmluZ0luZm9EYXRhICpidWYsCisJCQkJUlBSRGVwdGggKnByZXZEZXB0aCwgYm9vbCAqbmVl ZFNwYWNlLCBMaXN0ICoqYWx0U2VwcykKK3sKKwlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSA9ICZw YXR0ZXJuLT5lbGVtZW50c1sqaWR4XTsKKworCS8qIE9wZW4gcGFyZW5zIGZvciBkZXB0aCBpbmNy ZWFzZSAqLworCXdoaWxlICgqcHJldkRlcHRoIDwgZWxlbS0+ZGVwdGgpCisJeworCQlpZiAoKm5l ZWRTcGFjZSkKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyAnKTsKKwkJYXBwZW5kU3Ry aW5nSW5mb0NoYXIoYnVmLCAnKCcpOworCQkoKnByZXZEZXB0aCkrKzsKKwkJKm5lZWRTcGFjZSA9 IGZhbHNlOworCX0KKworCS8qIENsb3NlIHBhcmVucyBmb3IgZGVwdGggZGVjcmVhc2UgKi8KKwl3 aGlsZSAoKnByZXZEZXB0aCA+IGVsZW0tPmRlcHRoKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb0No YXIoYnVmLCAnKScpOworCQkoKnByZXZEZXB0aCktLTsKKwl9CisKKwlpZiAoKm5lZWRTcGFjZSkK KwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCisJQXNzZXJ0KGVsZW0tPnZhcklk IDwgcGF0dGVybi0+bnVtVmFycyk7CisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHBhdHRl cm4tPnZhck5hbWVzW2VsZW0tPnZhcklkXSk7CisJYXBwZW5kX3Jwcl9xdWFudGlmaWVyKGJ1Ziwg ZWxlbSk7CisJKm5lZWRTcGFjZSA9IHRydWU7CisKKwlpZiAoZWxlbS0+anVtcCAhPSBSUFJfRUxF TUlEWF9JTlZBTElEKQorCQkqYWx0U2VwcyA9IGxhcHBlbmRfaW50KCphbHRTZXBzLCBlbGVtLT5q dW1wKTsKKwkoKmlkeCkrKzsKK30KKwogLyoKICAqIFNob3cgdGhlIHdpbmRvdyBkZWZpbml0aW9u IGZvciBhIFdpbmRvd0FnZyBub2RlLgogICovCkBAIC0yOTQ3LDYgKzMyNDEsMTggQEAgc2hvd193 aW5kb3dfZGVmKFdpbmRvd0FnZ1N0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywgRXhw bGFpblN0YXRlICplcykKIAlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmd2J1ZiwgJyknKTsKIAlFeHBs YWluUHJvcGVydHlUZXh0KCJXaW5kb3ciLCB3YnVmLmRhdGEsIGVzKTsKIAlwZnJlZSh3YnVmLmRh dGEpOworCisJLyogU2hvdyBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiBwYXR0ZXJuIGlmIHByZXNl bnQgKi8KKwlpZiAod2FnZy0+cnBQYXR0ZXJuICE9IE5VTEwpCisJeworCQljaGFyCSAgICpwYXR0 ZXJuU3RyID0gZGVwYXJzZV9ycHJfcGF0dGVybih3YWdnLT5ycFBhdHRlcm4pOworCisJCWlmIChw YXR0ZXJuU3RyICE9IE5VTEwpCisJCXsKKwkJCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIlBhdHRlcm4i LCBwYXR0ZXJuU3RyLCBlcyk7CisJCQlwZnJlZShwYXR0ZXJuU3RyKTsKKwkJfQorCX0KIH0KIAog LyoKQEAgLTM0OTksNiArMzgwNSw3IEBAIHNob3dfd2luZG93YWdnX2luZm8oV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlLCBFeHBsYWluU3RhdGUgKmVzKQogewogCWNoYXIJICAgKm1heFN0b3JhZ2VU eXBlOwogCWludDY0CQltYXhTcGFjZVVzZWQ7CisJV2luZG93QWdnICAqd2FnZyA9IChXaW5kb3dB Z2cgKikgd2luc3RhdGUtPnNzLnBzLnBsYW47CiAKIAlUdXBsZXN0b3Jlc3RhdGUgKnR1cHN0b3Jl ID0gd2luc3RhdGUtPmJ1ZmZlcjsKIApAQCAtMzUxMSw2ICszODE4LDE2MCBAQCBzaG93X3dpbmRv d2FnZ19pbmZvKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgRXhwbGFpblN0YXRlICplcykKIAog CXR1cGxlc3RvcmVfZ2V0X3N0YXRzKHR1cHN0b3JlLCAmbWF4U3RvcmFnZVR5cGUsICZtYXhTcGFj ZVVzZWQpOwogCXNob3dfc3RvcmFnZV9pbmZvKG1heFN0b3JhZ2VUeXBlLCBtYXhTcGFjZVVzZWQs IGVzKTsKKworCS8qIFNob3cgTkZBIHN0YXRpc3RpY3MgZm9yIFJvdyBQYXR0ZXJuIFJlY29nbml0 aW9uICovCisJaWYgKHdhZ2ctPnJwUGF0dGVybiAhPSBOVUxMKQorCQlzaG93X3Jwcl9uZmFfc3Rh dHMod2luc3RhdGUsIGVzKTsKK30KKworLyoKKyAqIFNob3cgTkZBIHN0YXRpc3RpY3MgZm9yIFJv dyBQYXR0ZXJuIFJlY29nbml0aW9uIG9uIFdpbmRvd0FnZyBub2RlLgorICovCitzdGF0aWMgdm9p ZAorc2hvd19ycHJfbmZhX3N0YXRzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgRXhwbGFpblN0 YXRlICplcykKK3sKKwlpZiAoZXMtPmZvcm1hdCAhPSBFWFBMQUlOX0ZPUk1BVF9URVhUKQorCXsK KwkJLyogU3RhdGUgYW5kIGNvbnRleHQgY291bnRlcnMgKi8KKwkJRXhwbGFpblByb3BlcnR5SW50 ZWdlcigiTkZBIFN0YXRlcyBQZWFrIiwgTlVMTCwgd2luc3RhdGUtPm5mYVN0YXRlc01heCwgZXMp OworCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJORkEgU3RhdGVzIFRvdGFsIiwgTlVMTCwgd2lu c3RhdGUtPm5mYVN0YXRlc1RvdGFsQ3JlYXRlZCwgZXMpOworCQlFeHBsYWluUHJvcGVydHlJbnRl Z2VyKCJORkEgU3RhdGVzIE1lcmdlZCIsIE5VTEwsIHdpbnN0YXRlLT5uZmFTdGF0ZXNNZXJnZWQs IGVzKTsKKwkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiTkZBIENvbnRleHRzIFBlYWsiLCBOVUxM LCB3aW5zdGF0ZS0+bmZhQ29udGV4dHNNYXgsIGVzKTsKKwkJRXhwbGFpblByb3BlcnR5SW50ZWdl cigiTkZBIENvbnRleHRzIFRvdGFsIiwgTlVMTCwgd2luc3RhdGUtPm5mYUNvbnRleHRzVG90YWxD cmVhdGVkLCBlcyk7CisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIk5GQSBDb250ZXh0cyBBYnNv cmJlZCIsIE5VTEwsIHdpbnN0YXRlLT5uZmFDb250ZXh0c0Fic29yYmVkLCBlcyk7CisJCUV4cGxh aW5Qcm9wZXJ0eUludGVnZXIoIk5GQSBDb250ZXh0cyBTa2lwcGVkIiwgTlVMTCwgd2luc3RhdGUt Pm5mYUNvbnRleHRzU2tpcHBlZCwgZXMpOworCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJORkEg Q29udGV4dHMgUHJ1bmVkIiwgTlVMTCwgd2luc3RhdGUtPm5mYUNvbnRleHRzUHJ1bmVkLCBlcyk7 CisKKwkJLyogTWF0Y2gvbWlzbWF0Y2ggY291bnRzIGFuZCBsZW5ndGggc3RhdGlzdGljcyAqLwor CQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJORkEgTWF0Y2hlZCIsIE5VTEwsIHdpbnN0YXRlLT5u ZmFNYXRjaGVzU3VjY2VlZGVkLCBlcyk7CisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIk5GQSBN aXNtYXRjaGVkIiwgTlVMTCwgd2luc3RhdGUtPm5mYU1hdGNoZXNGYWlsZWQsIGVzKTsKKwkJaWYg KHdpbnN0YXRlLT5uZmFNYXRjaGVzU3VjY2VlZGVkID4gMCkKKwkJeworCQkJRXhwbGFpblByb3Bl cnR5SW50ZWdlcigiTkZBIE1hdGNoIExlbmd0aCBNaW4iLCBOVUxMLCB3aW5zdGF0ZS0+bmZhTWF0 Y2hMZW4ubWluLCBlcyk7CisJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJORkEgTWF0Y2ggTGVu Z3RoIE1heCIsIE5VTEwsIHdpbnN0YXRlLT5uZmFNYXRjaExlbi5tYXgsIGVzKTsKKwkJCUV4cGxh aW5Qcm9wZXJ0eUZsb2F0KCJORkEgTWF0Y2ggTGVuZ3RoIEF2ZyIsIE5VTEwsCisJCQkJCQkJCSAo ZG91YmxlKSB3aW5zdGF0ZS0+bmZhTWF0Y2hMZW4udG90YWwgLyB3aW5zdGF0ZS0+bmZhTWF0Y2hl c1N1Y2NlZWRlZCwgMSwKKwkJCQkJCQkJIGVzKTsKKwkJfQorCQlpZiAod2luc3RhdGUtPm5mYU1h dGNoZXNGYWlsZWQgPiAwKQorCQl7CisJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJORkEgTWlz bWF0Y2ggTGVuZ3RoIE1pbiIsIE5VTEwsIHdpbnN0YXRlLT5uZmFGYWlsTGVuLm1pbiwgZXMpOwor CQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiTkZBIE1pc21hdGNoIExlbmd0aCBNYXgiLCBOVUxM LCB3aW5zdGF0ZS0+bmZhRmFpbExlbi5tYXgsIGVzKTsKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0 KCJORkEgTWlzbWF0Y2ggTGVuZ3RoIEF2ZyIsIE5VTEwsCisJCQkJCQkJCSAoZG91YmxlKSB3aW5z dGF0ZS0+bmZhRmFpbExlbi50b3RhbCAvIHdpbnN0YXRlLT5uZmFNYXRjaGVzRmFpbGVkLCAxLAor CQkJCQkJCQkgZXMpOworCQl9CisKKwkJLyogQWJzb3JiZWQvc2tpcHBlZCBjb250ZXh0IGxlbmd0 aCBzdGF0aXN0aWNzICovCisJCWlmICh3aW5zdGF0ZS0+bmZhQ29udGV4dHNBYnNvcmJlZCA+IDAp CisJCXsKKwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIk5GQSBBYnNvcmJlZCBMZW5ndGggTWlu IiwgTlVMTCwgd2luc3RhdGUtPm5mYUFic29yYmVkTGVuLm1pbiwgZXMpOworCQkJRXhwbGFpblBy b3BlcnR5SW50ZWdlcigiTkZBIEFic29yYmVkIExlbmd0aCBNYXgiLCBOVUxMLCB3aW5zdGF0ZS0+ bmZhQWJzb3JiZWRMZW4ubWF4LCBlcyk7CisJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiTkZBIEFi c29yYmVkIExlbmd0aCBBdmciLCBOVUxMLAorCQkJCQkJCQkgKGRvdWJsZSkgd2luc3RhdGUtPm5m YUFic29yYmVkTGVuLnRvdGFsIC8gd2luc3RhdGUtPm5mYUNvbnRleHRzQWJzb3JiZWQsIDEsCisJ CQkJCQkJCSBlcyk7CisJCX0KKwkJaWYgKHdpbnN0YXRlLT5uZmFDb250ZXh0c1NraXBwZWQgPiAw KQorCQl7CisJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJORkEgU2tpcHBlZCBMZW5ndGggTWlu IiwgTlVMTCwgd2luc3RhdGUtPm5mYVNraXBwZWRMZW4ubWluLCBlcyk7CisJCQlFeHBsYWluUHJv cGVydHlJbnRlZ2VyKCJORkEgU2tpcHBlZCBMZW5ndGggTWF4IiwgTlVMTCwgd2luc3RhdGUtPm5m YVNraXBwZWRMZW4ubWF4LCBlcyk7CisJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiTkZBIFNraXBw ZWQgTGVuZ3RoIEF2ZyIsIE5VTEwsCisJCQkJCQkJCSAoZG91YmxlKSB3aW5zdGF0ZS0+bmZhU2tp cHBlZExlbi50b3RhbCAvIHdpbnN0YXRlLT5uZmFDb250ZXh0c1NraXBwZWQsIDEsCisJCQkJCQkJ CSBlcyk7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJLyogU3RhdGUgYW5kIGNvbnRleHQgY291bnRl cnMgKi8KKwkJRXhwbGFpbkluZGVudFRleHQoZXMpOworCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5z dHIsCisJCQkJCQkgIk5GQSBTdGF0ZXM6ICIgSU5UNjRfRk9STUFUICIgcGVhaywgIiBJTlQ2NF9G T1JNQVQgIiB0b3RhbCwgIiBJTlQ2NF9GT1JNQVQgIiBtZXJnZWRcbiIsCisJCQkJCQkgd2luc3Rh dGUtPm5mYVN0YXRlc01heCwKKwkJCQkJCSB3aW5zdGF0ZS0+bmZhU3RhdGVzVG90YWxDcmVhdGVk LAorCQkJCQkJIHdpbnN0YXRlLT5uZmFTdGF0ZXNNZXJnZWQpOworCQlFeHBsYWluSW5kZW50VGV4 dChlcyk7CisJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwKKwkJCQkJCSAiTkZBIENvbnRleHRz OiAiIElOVDY0X0ZPUk1BVCAiIHBlYWssICIgSU5UNjRfRk9STUFUICIgdG90YWwsICIgSU5UNjRf Rk9STUFUICIgcHJ1bmVkXG4iLAorCQkJCQkJIHdpbnN0YXRlLT5uZmFDb250ZXh0c01heCwKKwkJ CQkJCSB3aW5zdGF0ZS0+bmZhQ29udGV4dHNUb3RhbENyZWF0ZWQsCisJCQkJCQkgd2luc3RhdGUt Pm5mYUNvbnRleHRzUHJ1bmVkKTsKKworCQkvKiBNYXRjaC9taXNtYXRjaCBjb3VudHMgd2l0aCBs ZW5ndGggbWluL21heC9hdmcgKi8KKwkJRXhwbGFpbkluZGVudFRleHQoZXMpOworCQlhcHBlbmRT dHJpbmdJbmZvKGVzLT5zdHIsICJORkE6ICIpOworCQlpZiAod2luc3RhdGUtPm5mYU1hdGNoZXNT dWNjZWVkZWQgPiAwKQorCQl7CisJCQlkb3VibGUJCWF2Z0xlbiA9IChkb3VibGUpIHdpbnN0YXRl LT5uZmFNYXRjaExlbi50b3RhbCAvIHdpbnN0YXRlLT5uZmFNYXRjaGVzU3VjY2VlZGVkOworCisJ CQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsCisJCQkJCQkJIElOVDY0X0ZPUk1BVCAiIG1hdGNo ZWQgKGxlbiAiIElOVDY0X0ZPUk1BVCAiLyIgSU5UNjRfRk9STUFUICIvJS4xZikiLAorCQkJCQkJ CSB3aW5zdGF0ZS0+bmZhTWF0Y2hlc1N1Y2NlZWRlZCwKKwkJCQkJCQkgd2luc3RhdGUtPm5mYU1h dGNoTGVuLm1pbiwKKwkJCQkJCQkgd2luc3RhdGUtPm5mYU1hdGNoTGVuLm1heCwKKwkJCQkJCQkg YXZnTGVuKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwg IjAgbWF0Y2hlZCIpOworCQl9CisJCWlmICh3aW5zdGF0ZS0+bmZhTWF0Y2hlc0ZhaWxlZCA+IDAp CisJCXsKKwkJCWRvdWJsZQkJYXZnRmFpbCA9IChkb3VibGUpIHdpbnN0YXRlLT5uZmFGYWlsTGVu LnRvdGFsIC8gd2luc3RhdGUtPm5mYU1hdGNoZXNGYWlsZWQ7CisKKwkJCWFwcGVuZFN0cmluZ0lu Zm8oZXMtPnN0ciwKKwkJCQkJCQkgIiwgIiBJTlQ2NF9GT1JNQVQgIiBtaXNtYXRjaGVkIChsZW4g IiBJTlQ2NF9GT1JNQVQgIi8iIElOVDY0X0ZPUk1BVCAiLyUuMWYpIiwKKwkJCQkJCQkgd2luc3Rh dGUtPm5mYU1hdGNoZXNGYWlsZWQsCisJCQkJCQkJIHdpbnN0YXRlLT5uZmFGYWlsTGVuLm1pbiwK KwkJCQkJCQkgd2luc3RhdGUtPm5mYUZhaWxMZW4ubWF4LAorCQkJCQkJCSBhdmdGYWlsKTsKKwkJ fQorCQllbHNlCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIiwgMCBtaXNtYXRj aGVkIik7CisJCX0KKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoZXMtPnN0ciwgJ1xuJyk7CisKKwkJ LyogQWJzb3JiZWQvc2tpcHBlZCBjb250ZXh0IGxlbmd0aCBzdGF0aXN0aWNzICovCisJCWlmICh3 aW5zdGF0ZS0+bmZhQ29udGV4dHNBYnNvcmJlZCA+IDAgfHwgd2luc3RhdGUtPm5mYUNvbnRleHRz U2tpcHBlZCA+IDApCisJCXsKKwkJCUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsKKwkJCWFwcGVuZFN0 cmluZ0luZm8oZXMtPnN0ciwgIk5GQTogIik7CisKKwkJCWlmICh3aW5zdGF0ZS0+bmZhQ29udGV4 dHNBYnNvcmJlZCA+IDApCisJCQl7CisJCQkJZG91YmxlCQlhdmdBYnNvcmJlZCA9IChkb3VibGUp IHdpbnN0YXRlLT5uZmFBYnNvcmJlZExlbi50b3RhbCAvIHdpbnN0YXRlLT5uZmFDb250ZXh0c0Fi c29yYmVkOworCisJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLAorCQkJCQkJCQkgSU5UNjRf Rk9STUFUICIgYWJzb3JiZWQgKGxlbiAiIElOVDY0X0ZPUk1BVCAiLyIgSU5UNjRfRk9STUFUICIv JS4xZikiLAorCQkJCQkJCQkgd2luc3RhdGUtPm5mYUNvbnRleHRzQWJzb3JiZWQsCisJCQkJCQkJ CSB3aW5zdGF0ZS0+bmZhQWJzb3JiZWRMZW4ubWluLAorCQkJCQkJCQkgd2luc3RhdGUtPm5mYUFi c29yYmVkTGVuLm1heCwKKwkJCQkJCQkJIGF2Z0Fic29yYmVkKTsKKwkJCX0KKwkJCWVsc2UKKwkJ CXsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICIwIGFic29yYmVkIik7CisJCQl9CisK KwkJCWlmICh3aW5zdGF0ZS0+bmZhQ29udGV4dHNTa2lwcGVkID4gMCkKKwkJCXsKKwkJCQlkb3Vi bGUJCWF2Z1NraXBwZWQgPSAoZG91YmxlKSB3aW5zdGF0ZS0+bmZhU2tpcHBlZExlbi50b3RhbCAv IHdpbnN0YXRlLT5uZmFDb250ZXh0c1NraXBwZWQ7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGVz LT5zdHIsCisJCQkJCQkJCSAiLCAiIElOVDY0X0ZPUk1BVCAiIHNraXBwZWQgKGxlbiAiIElOVDY0 X0ZPUk1BVCAiLyIgSU5UNjRfRk9STUFUICIvJS4xZikiLAorCQkJCQkJCQkgd2luc3RhdGUtPm5m YUNvbnRleHRzU2tpcHBlZCwKKwkJCQkJCQkJIHdpbnN0YXRlLT5uZmFTa2lwcGVkTGVuLm1pbiwK KwkJCQkJCQkJIHdpbnN0YXRlLT5uZmFTa2lwcGVkTGVuLm1heCwKKwkJCQkJCQkJIGF2Z1NraXBw ZWQpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwg IiwgMCBza2lwcGVkIik7CisJCQl9CisKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGVzLT5zdHIs ICdcbicpOworCQl9CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVdpbmRvd0FnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5j CmluZGV4IGQ5YjY0YjBmNDY1Li45YjJjNGI2YTFkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVX aW5kb3dBZ2cuYwpAQCAtMzYsMTggKzM2LDIzIEBACiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0 YWlscy5oIgogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWNjZXNzLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19hZ2dyZWdhdGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbl9kLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0 b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlV2luZG93QWdnLmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAibm9kZXMv cGxhbm5vZGVzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2NsYXVzZXMuaCIKICNpbmNsdWRlICJv cHRpbWl6ZXIvb3B0aW1pemVyLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3Jwci5oIgogI2luY2x1 ZGUgInBhcnNlci9wYXJzZV9hZ2cuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNlLmgi CisjaW5jbHVkZSAicmVnZXgvcmVnZXguaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCisjaW5jbHVk ZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9leHBhbmRlZGRhdHVtLmgiCiAj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIK QEAgLTE3MCw2ICsxNzUsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgV2luZG93U3RhdGVQZXJBZ2dEYXRh CiAJYm9vbAkJcmVzdGFydDsJCS8qIG5lZWQgdG8gcmVzdGFydCB0aGlzIGFnZyBpbiB0aGlzIGN5 Y2xlPyAqLwogfSBXaW5kb3dTdGF0ZVBlckFnZ0RhdGE7CiAKKy8qCisgKiBTdHJ1Y3R1cmUgdXNl ZCBieSBjaGVja19ycHJfbmF2aWdhdGlvbigpIGFuZCBycHJfbmF2aWdhdGlvbl93YWxrZXIoKS4K KyAqLwordHlwZWRlZiBzdHJ1Y3QgTmF2aWdhdGlvbkluZm8KK3sKKwlib29sCQlpc19wcmV2OwkJ LyogdHJ1ZSBpZiBQUkVWICovCisJaW50CQkJbnVtX3ZhcnM7CQkvKiBudW1iZXIgb2YgdmFyIG5v ZGVzICovCit9IE5hdmlnYXRpb25JbmZvOworCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplX3dpbmRv d2FnZ3JlZ2F0ZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsCiAJCQkJCQkJCQkgICBXaW5kb3dT dGF0ZVBlckZ1bmMgcGVyZnVuY3N0YXRlLAogCQkJCQkJCQkJICAgV2luZG93U3RhdGVQZXJBZ2cg cGVyYWdnc3RhdGUpOwpAQCAtMjA2LDYgKzIyMCw5IEBAIHN0YXRpYyBEYXR1bSBHZXRBZ2dJbml0 VmFsKERhdHVtIHRleHRJbml0VmFsLCBPaWQgdHJhbnN0eXBlKTsKIAogc3RhdGljIGJvb2wgYXJl X3BlZXJzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QxLAog CQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90Mik7CitzdGF0aWMgaW50CVdpbkdldFNsb3RJbkZy YW1lKFdpbmRvd09iamVjdCB3aW5vYmosIFR1cGxlVGFibGVTbG90ICpzbG90LAorCQkJCQkJCSAg aW50IHJlbHBvcywgaW50IHNlZWt0eXBlLCBib29sIHNldF9tYXJrLAorCQkJCQkJCSAgYm9vbCAq aXNudWxsLCBib29sICppc291dCk7CiBzdGF0aWMgYm9vbCB3aW5kb3dfZ2V0dHVwbGVzbG90KFdp bmRvd09iamVjdCB3aW5vYmosIGludDY0IHBvcywKIAkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKnNs b3QpOwogCkBAIC0yMjQsNiArMjQxLDkxIEBAIHN0YXRpYyB1aW50OCBnZXRfbm90bnVsbF9pbmZv KFdpbmRvd09iamVjdCB3aW5vYmosCiAJCQkJCQkJICBpbnQ2NCBwb3MsIGludCBhcmdubyk7CiBz dGF0aWMgdm9pZCBwdXRfbm90bnVsbF9pbmZvKFdpbmRvd09iamVjdCB3aW5vYmosCiAJCQkJCQkJ IGludDY0IHBvcywgaW50IGFyZ25vLCBib29sIGlzbnVsbCk7CitzdGF0aWMgdm9pZCBhdHRub19t YXAoTm9kZSAqbm9kZSk7CitzdGF0aWMgYm9vbCBhdHRub19tYXBfd2Fsa2VyKE5vZGUgKm5vZGUs IHZvaWQgKmNvbnRleHQpOworc3RhdGljIGludAlyb3dfaXNfaW5fcmVkdWNlZF9mcmFtZShXaW5k b3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MpOworc3RhdGljIGJvb2wgcnByX2lzX2RlZmluZWQo V2luZG93QWdnU3RhdGUgKndpbnN0YXRlKTsKKworc3RhdGljIHZvaWQgY3JlYXRlX3JlZHVjZWRf ZnJhbWVfbWFwKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSk7CitzdGF0aWMgaW50CWdldF9yZWR1 Y2VkX2ZyYW1lX21hcChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDY0IHBvcyk7CitzdGF0 aWMgdm9pZCByZWdpc3Rlcl9yZWR1Y2VkX2ZyYW1lX21hcChXaW5kb3dBZ2dTdGF0ZSAqd2luc3Rh dGUsIGludDY0IHBvcywKKwkJCQkJCQkJCSAgIGludCB2YWwpOworc3RhdGljIHZvaWQgY2xlYXJf cmVkdWNlZF9mcmFtZV9tYXAoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKTsKK3N0YXRpYyB2b2lk IHVwZGF0ZV9yZWR1Y2VkX2ZyYW1lKFdpbmRvd09iamVjdCB3aW5vYmosIGludDY0IHBvcyk7CisK K3N0YXRpYyB2b2lkIGNoZWNrX3Jwcl9uYXZpZ2F0aW9uKE5vZGUgKm5vZGUsIGJvb2wgaXNfcHJl dik7CitzdGF0aWMgYm9vbCBycHJfbmF2aWdhdGlvbl93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAq Y29udGV4dCk7CisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb25zIC0gTkZBIHJvdyBwcm9jZXNzaW5n ICovCitzdGF0aWMgdm9pZCBuZmFfcHJvY2Vzc19yb3coV2luZG93QWdnU3RhdGUgKndpbnN0YXRl LCBpbnQ2NCBjdXJyZW50UG9zLAorCQkJCQkJCWJvb2wgaGFzTGltaXRlZEZyYW1lLCBpbnQ2NCBm cmFtZU9mZnNldCk7CisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb25zIC0gTkZBIHN0YXRlIG1hbmFn ZW1lbnQgKi8KK3N0YXRpYyBSUFJORkFTdGF0ZSAqbmZhX3N0YXRlX2FsbG9jKFdpbmRvd0FnZ1N0 YXRlICp3aW5zdGF0ZSk7CitzdGF0aWMgdm9pZCBuZmFfc3RhdGVfZnJlZShXaW5kb3dBZ2dTdGF0 ZSAqd2luc3RhdGUsIFJQUk5GQVN0YXRlICpzdGF0ZSk7CitzdGF0aWMgdm9pZCBuZmFfc3RhdGVf ZnJlZV9saXN0KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBU3RhdGUgKmxpc3QpOwor c3RhdGljIFJQUk5GQVN0YXRlICpuZmFfc3RhdGVfY3JlYXRlKFdpbmRvd0FnZ1N0YXRlICp3aW5z dGF0ZSwgaW50MTYgZWxlbUlkeCwKKwkJCQkJCQkJCSBpbnQxNiBhbHRQcmlvcml0eSwgaW50MzIg KmNvdW50cywKKwkJCQkJCQkJCSBib29sIHNvdXJjZUFic29yYmFibGUpOworc3RhdGljIGJvb2wg bmZhX3N0YXRlc19lcXVhbChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQVN0YXRlICpz MSwKKwkJCQkJCQkgUlBSTkZBU3RhdGUgKnMyKTsKK3N0YXRpYyBib29sIG5mYV9hZGRfc3RhdGVf dW5pcXVlKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAorCQkJ CQkJCQkgUlBSTkZBU3RhdGUgKnN0YXRlKTsKK3N0YXRpYyB2b2lkIG5mYV9hZGRfbWF0Y2hlZF9z dGF0ZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKKwkJCQkJ CQkJICBSUFJORkFTdGF0ZSAqc3RhdGUsIGludDY0IG1hdGNoRW5kUm93KTsKKworLyogRm9yd2Fy ZCBkZWNsYXJhdGlvbnMgLSBORkEgY29udGV4dCBtYW5hZ2VtZW50ICovCitzdGF0aWMgUlBSTkZB Q29udGV4dCAqbmZhX2NvbnRleHRfYWxsb2MoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKTsKK3N0 YXRpYyB2b2lkIG5mYV91bmxpbmtfY29udGV4dChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQ Uk5GQUNvbnRleHQgKmN0eCk7CitzdGF0aWMgdm9pZCBuZmFfY29udGV4dF9mcmVlKFdpbmRvd0Fn Z1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4KTsKK3N0YXRpYyBSUFJORkFDb250 ZXh0ICpuZmFfc3RhcnRfY29udGV4dChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDY0IHN0 YXJ0UG9zKTsKK3N0YXRpYyBSUFJORkFDb250ZXh0ICpuZmFfZ2V0X2hlYWRfY29udGV4dChXaW5k b3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDY0IHBvcyk7CisKKy8qIEZvcndhcmQgZGVjbGFyYXRp b25zIC0gTkZBIHN0YXRpc3RpY3MgKi8KK3N0YXRpYyB2b2lkIG5mYV91cGRhdGVfbGVuZ3RoX3N0 YXRzKGludDY0IGNvdW50LCBORkFMZW5ndGhTdGF0cyAqc3RhdHMsIGludDY0IG5ld0xlbik7Citz dGF0aWMgdm9pZCBuZmFfcmVjb3JkX2NvbnRleHRfc3VjY2VzcyhXaW5kb3dBZ2dTdGF0ZSAqd2lu c3RhdGUsIGludDY0IG1hdGNoTGVuKTsKK3N0YXRpYyB2b2lkIG5mYV9yZWNvcmRfY29udGV4dF9m YWlsdXJlKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgZmFpbGVkTGVuKTsKK3N0YXRp YyB2b2lkIG5mYV9yZWNvcmRfY29udGV4dF9za2lwcGVkKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0 ZSwgaW50NjQgc2tpcHBlZExlbik7CitzdGF0aWMgdm9pZCBuZmFfcmVjb3JkX2NvbnRleHRfYWJz b3JiZWQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBpbnQ2NCBhYnNvcmJlZExlbik7CisKKy8q IEZvcndhcmQgZGVjbGFyYXRpb25zIC0gTkZBIHJvdyBldmFsdWF0aW9uICovCitzdGF0aWMgYm9v bCBuZmFfZXZhbHVhdGVfcm93KFdpbmRvd09iamVjdCB3aW5vYmosIGludDY0IHBvcywgYm9vbCAq dmFyTWF0Y2hlZCk7CisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb25zIC0gTkZBIGNvbnRleHQgbGlm ZWN5Y2xlICovCitzdGF0aWMgdm9pZCBuZmFfY2xlYW51cF9kZWFkX2NvbnRleHRzKFdpbmRvd0Fn Z1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqZXhjbHVkZUN0eCk7CitzdGF0aWMgdm9p ZCBuZmFfZmluYWxpemVfYWxsX2NvbnRleHRzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50 NjQgbGFzdFBvcyk7CisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb25zIC0gTkZBIGFic29ycHRpb24g Ki8KK3N0YXRpYyB2b2lkIG5mYV91cGRhdGVfYWJzb3JwdGlvbl9mbGFncyhSUFJORkFDb250ZXh0 ICpjdHgpOworc3RhdGljIGJvb2wgbmZhX3N0YXRlc19jb3ZlcmVkKFJQUlBhdHRlcm4gKnBhdHRl cm4sIFJQUk5GQUNvbnRleHQgKm9sZGVyLAorCQkJCQkJCSAgIFJQUk5GQUNvbnRleHQgKm5ld2Vy KTsKK3N0YXRpYyBib29sIG5mYV90cnlfYWJzb3JiX2NvbnRleHQoV2luZG93QWdnU3RhdGUgKndp bnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgpOworc3RhdGljIHZvaWQgbmZhX2Fic29yYl9jb250 ZXh0cyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpOworCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9u cyAtIE5GQSBtYXRjaCBhbmQgYWR2YW5jZSAqLworc3RhdGljIGlubGluZSBib29sIG5mYV9ldmFs X3Zhcl9tYXRjaChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsCisJCQkJCQkJCQkgIFJQUlBhdHRl cm5FbGVtZW50ICplbGVtLCBib29sICp2YXJNYXRjaGVkKTsKK3N0YXRpYyB2b2lkIG5mYV9tYXRj aChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKKwkJCQkJICBi b29sICp2YXJNYXRjaGVkKTsKK3N0YXRpYyB2b2lkIG5mYV9hZHZhbmNlX3N0YXRlKFdpbmRvd0Fn Z1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAorCQkJCQkJCSAgUlBSTkZBU3Rh dGUgKnN0YXRlLCBpbnQ2NCBjdXJyZW50UG9zLCBib29sIGluaXRpYWxBZHZhbmNlKTsKK3N0YXRp YyB2b2lkIG5mYV9yb3V0ZV90b19lbGVtKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZB Q29udGV4dCAqY3R4LAorCQkJCQkJCSAgUlBSTkZBU3RhdGUgKnN0YXRlLCBSUFJQYXR0ZXJuRWxl bWVudCAqbmV4dEVsZW0sCisJCQkJCQkJICBpbnQ2NCBjdXJyZW50UG9zLCBib29sIGluaXRpYWxB ZHZhbmNlKTsKK3N0YXRpYyB2b2lkIG5mYV9hZHZhbmNlX2FsdChXaW5kb3dBZ2dTdGF0ZSAqd2lu c3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKKwkJCQkJCQlSUFJORkFTdGF0ZSAqc3RhdGUsIFJQ UlBhdHRlcm5FbGVtZW50ICplbGVtLAorCQkJCQkJCWludDY0IGN1cnJlbnRQb3MsIGJvb2wgaW5p dGlhbEFkdmFuY2UpOworc3RhdGljIHZvaWQgbmZhX2FkdmFuY2VfYmVnaW4oV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsCisJCQkJCQkJICBSUFJORkFTdGF0ZSAq c3RhdGUsIFJQUlBhdHRlcm5FbGVtZW50ICplbGVtLAorCQkJCQkJCSAgaW50NjQgY3VycmVudFBv cywgYm9vbCBpbml0aWFsQWR2YW5jZSk7CitzdGF0aWMgdm9pZCBuZmFfYWR2YW5jZV9lbmQoV2lu ZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsCisJCQkJCQkJUlBSTkZB U3RhdGUgKnN0YXRlLCBSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSwKKwkJCQkJCQlpbnQ2NCBjdXJy ZW50UG9zLCBib29sIGluaXRpYWxBZHZhbmNlKTsKK3N0YXRpYyB2b2lkIG5mYV9hZHZhbmNlX3Zh cihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKKwkJCQkJCQlS UFJORkFTdGF0ZSAqc3RhdGUsIFJQUlBhdHRlcm5FbGVtZW50ICplbGVtLAorCQkJCQkJCWludDY0 IGN1cnJlbnRQb3MsIGJvb2wgaW5pdGlhbEFkdmFuY2UpOworc3RhdGljIHZvaWQgbmZhX2FkdmFu Y2UoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsCisJCQkJCQlp bnQ2NCBjdXJyZW50UG9zLCBib29sIGluaXRpYWxBZHZhbmNlKTsKIAogLyoKICAqIE5vdCBudWxs IGluZm8gYml0IGFycmF5IGNvbnNpc3RzIG9mIDItYml0IGl0ZW1zCkBAIC04MTcsNiArOTE5LDcg QEAgZXZhbF93aW5kb3dhZ2dyZWdhdGVzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSkKIAkgKgkg ICB0cmFuc2l0aW9uIGZ1bmN0aW9uLCBvcgogCSAqCSAtIHdlIGhhdmUgYW4gRVhDTFVTSU9OIGNs YXVzZSwgb3IKIAkgKgkgLSBpZiB0aGUgbmV3IGZyYW1lIGRvZXNuJ3Qgb3ZlcmxhcCB0aGUgb2xk IG9uZQorCSAqICAgLSBpZiBSUFIgaXMgZW5hYmxlZAogCSAqCiAJICogTm90ZSB0aGF0IHdlIGRv bid0IHN0cmljdGx5IG5lZWQgdG8gcmVzdGFydCBpbiB0aGUgbGFzdCBjYXNlLCBidXQgaWYKIAkg KiB3ZSdyZSBnb2luZyB0byByZW1vdmUgYWxsIHJvd3MgZnJvbSB0aGUgYWdncmVnYXRpb24gYW55 d2F5LCBhIHJlc3RhcnQKQEAgLTgzMSw3ICs5MzQsOCBAQCBldmFsX3dpbmRvd2FnZ3JlZ2F0ZXMo V2luZG93QWdnU3RhdGUgKndpbnN0YXRlKQogCQkJKHdpbnN0YXRlLT5hZ2dyZWdhdGVkYmFzZSAh PSB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zICYmCiAJCQkgIU9pZElzVmFsaWQocGVyYWdnc3RhdGUt PmludnRyYW5zZm5fb2lkKSkgfHwKIAkJCSh3aW5zdGF0ZS0+ZnJhbWVPcHRpb25zICYgRlJBTUVP UFRJT05fRVhDTFVTSU9OKSB8fAotCQkJd2luc3RhdGUtPmFnZ3JlZ2F0ZWR1cHRvIDw9IHdpbnN0 YXRlLT5mcmFtZWhlYWRwb3MpCisJCQl3aW5zdGF0ZS0+YWdncmVnYXRlZHVwdG8gPD0gd2luc3Rh dGUtPmZyYW1laGVhZHBvcyB8fAorCQkJcnByX2lzX2RlZmluZWQod2luc3RhdGUpKQogCQl7CiAJ CQlwZXJhZ2dzdGF0ZS0+cmVzdGFydCA9IHRydWU7CiAJCQludW1hZ2dzX3Jlc3RhcnQrKzsKQEAg LTkwNSw3ICsxMDA5LDIyIEBAIGV2YWxfd2luZG93YWdncmVnYXRlcyhXaW5kb3dBZ2dTdGF0ZSAq d2luc3RhdGUpCiAJICogaGVhZCwgc28gdGhhdCB0dXBsZXN0b3JlIGNhbiBkaXNjYXJkIHVubmVj ZXNzYXJ5IHJvd3MuCiAJICovCiAJaWYgKGFnZ193aW5vYmotPm1hcmtwdHIgPj0gMCkKLQkJV2lu U2V0TWFya1Bvc2l0aW9uKGFnZ193aW5vYmosIHdpbnN0YXRlLT5mcmFtZWhlYWRwb3MpOworCXsK KwkJaW50NjQJCW1hcmtwb3MgPSB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zOworCisJCWlmIChycHJf aXNfZGVmaW5lZCh3aW5zdGF0ZSkpCisJCXsKKwkJCS8qCisJCQkgKiBJZiBSUFIgaXMgdXNlZCwg aXQgaXMgcG9zc2libGUgUFJFViB3YW50cyB0byBsb29rIGF0IHRoZQorCQkJICogcHJldmlvdXMg cm93LiAgU28gdGhlIG1hcmsgcG9zIHNob3VsZCBiZSBmcmFtZWhlYWRwb3MgLSAxCisJCQkgKiB1 bmxlc3MgaXQgaXMgYmVsb3cgMC4KKwkJCSAqLworCQkJbWFya3BvcyAtPSAxOworCQkJaWYgKG1h cmtwb3MgPCAwKQorCQkJCW1hcmtwb3MgPSAwOworCQl9CisJCVdpblNldE1hcmtQb3NpdGlvbihh Z2dfd2lub2JqLCBtYXJrcG9zKTsKKwl9CiAKIAkvKgogCSAqIE5vdyByZXN0YXJ0IHRoZSBhZ2dy ZWdhdGVzIHRoYXQgcmVxdWlyZSBpdC4KQEAgLTk2MCw2ICsxMDc5LDE0IEBAIGV2YWxfd2luZG93 YWdncmVnYXRlcyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiAJewogCQl3aW5zdGF0ZS0+YWdn cmVnYXRlZHVwdG8gPSB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zOwogCQlFeGVjQ2xlYXJUdXBsZShh Z2dfcm93X3Nsb3QpOworCisJCS8qCisJCSAqIElmIFJQUiBpcyBkZWZpbmVkLCB3ZSBkbyBub3Qg dXNlIGFnZ3JlZ2F0ZWR1cHRvX25vbnJlc3RhcnRlZC4gIFRvCisJCSAqIGF2b2lkIGFzc2VydGlv biBmYWlsdXJlIGJlbG93LCB3ZSByZXNldCBhZ2dyZWdhdGVkdXB0b19ub25yZXN0YXJ0ZWQKKwkJ ICogdG8gZnJhbWVoZWFkcG9zLgorCQkgKi8KKwkJaWYgKHJwcl9pc19kZWZpbmVkKHdpbnN0YXRl KSkKKwkJCWFnZ3JlZ2F0ZWR1cHRvX25vbnJlc3RhcnRlZCA9IHdpbnN0YXRlLT5mcmFtZWhlYWRw b3M7CiAJfQogCiAJLyoKQEAgLTk3Myw2ICsxMTAwLDEyIEBAIGV2YWxfd2luZG93YWdncmVnYXRl cyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiAJewogCQlpbnQJCQlyZXQ7CiAKKyNpZmRlZiBS UFJfREVCVUcKKwkJcHJpbnRmKCI9PT09PSBsb29wIGluIGZyYW1lIHN0YXJ0czogYWdncmVnYXRl ZHVwdG86ICIgSU5UNjRfRk9STUFUICIgYWdncmVnYXRlZGJhc2U6ICIgSU5UNjRfRk9STUFUICJc biIsCisJCQkgICB3aW5zdGF0ZS0+YWdncmVnYXRlZHVwdG8sCisJCQkgICB3aW5zdGF0ZS0+YWdn cmVnYXRlZGJhc2UpOworI2VuZGlmCisKIAkJLyogRmV0Y2ggbmV4dCByb3cgaWYgd2UgZGlkbid0 IGFscmVhZHkgKi8KIAkJaWYgKFR1cElzTnVsbChhZ2dfcm93X3Nsb3QpKQogCQl7CkBAIC05ODks OSArMTEyMiw1MyBAQCBldmFsX3dpbmRvd2FnZ3JlZ2F0ZXMoV2luZG93QWdnU3RhdGUgKndpbnN0 YXRlKQogCQkJCQkJCSAgYWdnX3Jvd19zbG90LCBmYWxzZSk7CiAJCWlmIChyZXQgPCAwKQogCQkJ YnJlYWs7CisKIAkJaWYgKHJldCA9PSAwKQogCQkJZ290byBuZXh0X3R1cGxlOwogCisJCWlmIChy cHJfaXNfZGVmaW5lZCh3aW5zdGF0ZSkpCisJCXsKKyNpZmRlZiBSUFJfREVCVUcKKwkJCXByaW50 ZigicmVkdWNlZF9mcmFtZV9tYXA6ICVkIGFnZ3JlZ2F0ZWR1cHRvOiAiIElOVDY0X0ZPUk1BVCAi IGFnZ3JlZ2F0ZWRiYXNlOiAiIElOVDY0X0ZPUk1BVCAiXG4iLAorCQkJCSAgIGdldF9yZWR1Y2Vk X2ZyYW1lX21hcCh3aW5zdGF0ZSwKKwkJCQkJCQkJCQkgd2luc3RhdGUtPmFnZ3JlZ2F0ZWR1cHRv KSwKKwkJCQkgICB3aW5zdGF0ZS0+YWdncmVnYXRlZHVwdG8sCisJCQkJICAgd2luc3RhdGUtPmFn Z3JlZ2F0ZWRiYXNlKTsKKyNlbmRpZgorCisJCQkvKgorCQkJICogSWYgdGhlIHJvdyBzdGF0dXMg YXQgY3VycmVudHBvcyBpcyBhbHJlYWR5IGRlY2lkZWQgYW5kIGN1cnJlbnQKKwkJCSAqIHJvdyBz dGF0dXMgaXMgbm90IGRlY2lkZWQgeWV0LCBpdCBtZWFucyB3ZSBwYXNzZWQgdGhlIGxhc3QKKwkJ CSAqIHJlZHVjZWQgZnJhbWUuIFRpbWUgdG8gYnJlYWsgdGhlIGxvb3AuCisJCQkgKi8KKwkJCWlm IChnZXRfcmVkdWNlZF9mcmFtZV9tYXAod2luc3RhdGUsIHdpbnN0YXRlLT5jdXJyZW50cG9zKQor CQkJCSE9IFJGX05PVF9ERVRFUk1JTkVEICYmCisJCQkJZ2V0X3JlZHVjZWRfZnJhbWVfbWFwKHdp bnN0YXRlLCB3aW5zdGF0ZS0+YWdncmVnYXRlZHVwdG8pCisJCQkJPT0gUkZfTk9UX0RFVEVSTUlO RUQpCisJCQkJYnJlYWs7CisKKwkJCS8qCisJCQkgKiBPdGhlcndpc2Ugd2UgbmVlZCB0byBjYWxj dWxhdGUgdGhlIHJlZHVjZWQgZnJhbWUuCisJCQkgKi8KKwkJCXJldCA9IHJvd19pc19pbl9yZWR1 Y2VkX2ZyYW1lKHdpbnN0YXRlLT5hZ2dfd2lub2JqLAorCQkJCQkJCQkJCSAgd2luc3RhdGUtPmFn Z3JlZ2F0ZWR1cHRvKTsKKwkJCWlmIChyZXQgPT0gLTEpCQkvKiB1bm1hdGNoZWQgcm93ICovCisJ CQkJYnJlYWs7CisKKwkJCS8qCisJCQkgKiBDaGVjayBpZiBjdXJyZW50IHJvdyBuZWVkcyB0byBi ZSBza2lwcGVkIGR1ZSB0byBubyBtYXRjaC4KKwkJCSAqLworCQkJaWYgKGdldF9yZWR1Y2VkX2Zy YW1lX21hcCh3aW5zdGF0ZSwKKwkJCQkJCQkJCSAgd2luc3RhdGUtPmFnZ3JlZ2F0ZWR1cHRvKSA9 PSBSRl9TS0lQUEVEICYmCisJCQkJd2luc3RhdGUtPmFnZ3JlZ2F0ZWR1cHRvID09IHdpbnN0YXRl LT5hZ2dyZWdhdGVkYmFzZSkKKwkJCXsKKyNpZmRlZiBSUFJfREVCVUcKKwkJCQlwcmludGYoInNr aXAgY3VycmVudCByb3cgZm9yIGFnZ3JlZ2F0aW9uXG4iKTsKKyNlbmRpZgorCQkJCWJyZWFrOwor CQkJfQorCQl9CisKIAkJLyogU2V0IHR1cGxlIGNvbnRleHQgZm9yIGV2YWx1YXRpb24gb2YgYWdn cmVnYXRlIGFyZ3VtZW50cyAqLwogCQl3aW5zdGF0ZS0+dG1wY29udGV4dC0+ZWN4dF9vdXRlcnR1 cGxlID0gYWdnX3Jvd19zbG90OwogCkBAIC0xMDIwLDYgKzExOTcsNyBAQCBuZXh0X3R1cGxlOgog CQlFeGVjQ2xlYXJUdXBsZShhZ2dfcm93X3Nsb3QpOwogCX0KIAorCiAJLyogVGhlIGZyYW1lJ3Mg ZW5kIGlzIG5vdCBzdXBwb3NlZCB0byBtb3ZlIGJhY2t3YXJkcywgZXZlciAqLwogCUFzc2VydChh Z2dyZWdhdGVkdXB0b19ub25yZXN0YXJ0ZWQgPD0gd2luc3RhdGUtPmFnZ3JlZ2F0ZWR1cHRvKTsK IApAQCAtMTI0Myw2ICsxNDIxLDcgQEAgYmVnaW5fcGFydGl0aW9uKFdpbmRvd0FnZ1N0YXRlICp3 aW5zdGF0ZSkKIAl3aW5zdGF0ZS0+ZnJhbWVoZWFkX3ZhbGlkID0gZmFsc2U7CiAJd2luc3RhdGUt PmZyYW1ldGFpbF92YWxpZCA9IGZhbHNlOwogCXdpbnN0YXRlLT5ncm91cHRhaWxfdmFsaWQgPSBm YWxzZTsKKwljcmVhdGVfcmVkdWNlZF9mcmFtZV9tYXAod2luc3RhdGUpOwogCXdpbnN0YXRlLT5z cG9vbGVkX3Jvd3MgPSAwOwogCXdpbnN0YXRlLT5jdXJyZW50cG9zID0gMDsKIAl3aW5zdGF0ZS0+ ZnJhbWVoZWFkcG9zID0gMDsKQEAgLTE0NjQsNiArMTY0MywxNSBAQCByZWxlYXNlX3BhcnRpdGlv bihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiAJCXR1cGxlc3RvcmVfY2xlYXIod2luc3RhdGUt PmJ1ZmZlcik7CiAJd2luc3RhdGUtPnBhcnRpdGlvbl9zcG9vbGVkID0gZmFsc2U7CiAJd2luc3Rh dGUtPm5leHRfcGFydGl0aW9uID0gdHJ1ZTsKKworCS8qIFJlc2V0IE5GQSBzdGF0ZSBmb3IgbmV3 IHBhcnRpdGlvbiAqLworCXdpbnN0YXRlLT5uZmFDb250ZXh0ID0gTlVMTDsKKwl3aW5zdGF0ZS0+ bmZhQ29udGV4dFRhaWwgPSBOVUxMOworCXdpbnN0YXRlLT5uZmFDb250ZXh0RnJlZSA9IE5VTEw7 CisJd2luc3RhdGUtPm5mYVN0YXRlRnJlZSA9IE5VTEw7CisJd2luc3RhdGUtPm5mYUxhc3RQcm9j ZXNzZWRSb3cgPSAtMTsKKwl3aW5zdGF0ZS0+bmZhU3RhdGVzQWN0aXZlID0gMDsKKwl3aW5zdGF0 ZS0+bmZhQ29udGV4dHNBY3RpdmUgPSAwOwogfQogCiAvKgpAQCAtMjIzNyw2ICsyNDI1LDExIEBA IEV4ZWNXaW5kb3dBZ2coUGxhblN0YXRlICpwc3RhdGUpCiAKIAlDSEVDS19GT1JfSU5URVJSVVBU UygpOwogCisjaWZkZWYgUlBSX0RFQlVHCisJcHJpbnRmKCJFeGVjV2luZG93QWdnIGNhbGxlZC4g cG9zOiAiIElOVDY0X0ZPUk1BVCAiXG4iLAorCQkgICB3aW5zdGF0ZS0+Y3VycmVudHBvcyk7Cisj ZW5kaWYKKwogCWlmICh3aW5zdGF0ZS0+c3RhdHVzID09IFdJTkRPV0FHR19ET05FKQogCQlyZXR1 cm4gTlVMTDsKIApAQCAtMjM0NSw2ICsyNTM4LDE3IEBAIEV4ZWNXaW5kb3dBZ2coUGxhblN0YXRl ICpwc3RhdGUpCiAJCS8qIGRvbid0IGV2YWx1YXRlIHRoZSB3aW5kb3cgZnVuY3Rpb25zIHdoZW4g d2UncmUgaW4gcGFzcy10aHJvdWdoIG1vZGUgKi8KIAkJaWYgKHdpbnN0YXRlLT5zdGF0dXMgPT0g V0lORE9XQUdHX1JVTikKIAkJeworCQkJLyoKKwkJCSAqIElmIFJQUiBpcyBkZWZpbmVkIGFuZCBz a2lwIG1vZGUgaXMgbmV4dCByb3csIHdlIG5lZWQgdG8gY2xlYXIKKwkJCSAqIGV4aXN0aW5nIHJl ZHVjZWQgZnJhbWUgaW5mbyBzbyB0aGF0IHdlIG5ld2x5IGNhbGN1bGF0ZSB0aGUgaW5mbworCQkJ ICogc3RhcnRpbmcgZnJvbSBjdXJyZW50IHJvdy4KKwkJCSAqLworCQkJaWYgKHJwcl9pc19kZWZp bmVkKHdpbnN0YXRlKSkKKwkJCXsKKwkJCQlpZiAod2luc3RhdGUtPnJwU2tpcFRvID09IFNUX05F WFRfUk9XKQorCQkJCQljbGVhcl9yZWR1Y2VkX2ZyYW1lX21hcCh3aW5zdGF0ZSk7CisJCQl9CisK IAkJCS8qCiAJCQkgKiBFdmFsdWF0ZSB0cnVlIHdpbmRvdyBmdW5jdGlvbnMKIAkJCSAqLwpAQCAt MjUxMSw2ICsyNzE1LDkgQEAgRXhlY0luaXRXaW5kb3dBZ2coV2luZG93QWdnICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlUdXBsZURlc2MJc2NhbkRlc2M7CiAJTGlzdENlbGwg ICAqbDsKIAorCVRhcmdldEVudHJ5ICp0ZTsKKwlFeHByCSAgICpleHByOworCiAJLyogY2hlY2sg Zm9yIHVuc3VwcG9ydGVkIGZsYWdzICovCiAJQXNzZXJ0KCEoZWZsYWdzICYgKEVYRUNfRkxBR19C QUNLV0FSRCB8IEVYRUNfRkxBR19NQVJLKSkpOwogCkBAIC0yNjA5LDYgKzI4MTYsMTYgQEAgRXhl Y0luaXRXaW5kb3dBZ2coV2luZG93QWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAl3aW5zdGF0ZS0+dGVtcF9zbG90XzIgPSBFeGVjSW5pdEV4dHJhVHVwbGVTbG90KGVzdGF0 ZSwgc2NhbkRlc2MsCiAJCQkJCQkJCQkJCQkgICAmVFRTT3BzTWluaW1hbFR1cGxlKTsKIAorCXdp bnN0YXRlLT5wcmV2X3Nsb3QgPSBFeGVjSW5pdEV4dHJhVHVwbGVTbG90KGVzdGF0ZSwgc2NhbkRl c2MsCisJCQkJCQkJCQkJCQkgJlRUU09wc01pbmltYWxUdXBsZSk7CisKKwl3aW5zdGF0ZS0+bmV4 dF9zbG90ID0gRXhlY0luaXRFeHRyYVR1cGxlU2xvdChlc3RhdGUsIHNjYW5EZXNjLAorCQkJCQkJ CQkJCQkJICZUVFNPcHNNaW5pbWFsVHVwbGUpOworCisJd2luc3RhdGUtPm51bGxfc2xvdCA9IEV4 ZWNJbml0RXh0cmFUdXBsZVNsb3QoZXN0YXRlLCBzY2FuRGVzYywKKwkJCQkJCQkJCQkJCSAmVFRT T3BzTWluaW1hbFR1cGxlKTsKKwl3aW5zdGF0ZS0+bnVsbF9zbG90ID0gRXhlY1N0b3JlQWxsTnVs bFR1cGxlKHdpbnN0YXRlLT5udWxsX3Nsb3QpOworCiAJLyoKIAkgKiBjcmVhdGUgZnJhbWUgaGVh ZCBhbmQgdGFpbCBzbG90cyBvbmx5IGlmIG5lZWRlZCAobXVzdCBjcmVhdGUgc2xvdHMgaW4KIAkg KiBleGFjdGx5IHRoZSBzYW1lIGNhc2VzIHRoYXQgdXBkYXRlX2ZyYW1laGVhZHBvcyBhbmQgdXBk YXRlX2ZyYW1ldGFpbHBvcwpAQCAtMjc5NSw2ICszMDEyLDY3IEBAIEV4ZWNJbml0V2luZG93QWdn KFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJd2luc3RhdGUt PmluUmFuZ2VBc2MgPSBub2RlLT5pblJhbmdlQXNjOwogCXdpbnN0YXRlLT5pblJhbmdlTnVsbHNG aXJzdCA9IG5vZGUtPmluUmFuZ2VOdWxsc0ZpcnN0OwogCisJLyogU2V0IHVwIFNLSVAgVE8gdHlw ZSAqLworCXdpbnN0YXRlLT5ycFNraXBUbyA9IG5vZGUtPnJwU2tpcFRvOworCS8qIFNldCB1cCBy b3cgcGF0dGVybiByZWNvZ25pdGlvbiBQQVRURVJOIGNsYXVzZSAoY29tcGlsZWQgTkZBKSAqLwor CXdpbnN0YXRlLT5ycFBhdHRlcm4gPSBub2RlLT5ycFBhdHRlcm47CisKKwkvKiBDYWxjdWxhdGUg TkZBIHN0YXRlIHNpemUgZm9yIGFsbG9jYXRpb24gKi8KKwlpZiAobm9kZS0+cnBQYXR0ZXJuICE9 IE5VTEwpCisJeworCQl3aW5zdGF0ZS0+bmZhU3RhdGVTaXplID0gb2Zmc2V0b2YoUlBSTkZBU3Rh dGUsIGNvdW50cykgKworCQkJc2l6ZW9mKGludDMyKSAqIG5vZGUtPnJwUGF0dGVybi0+bWF4RGVw dGg7CisJfQorCisJLyogU2V0IHVwIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIERFRklORSBjbGF1 c2UgKi8KKwl3aW5zdGF0ZS0+ZGVmaW5lVmFyaWFibGVMaXN0ID0gTklMOworCXdpbnN0YXRlLT5k ZWZpbmVDbGF1c2VMaXN0ID0gTklMOworCWlmIChub2RlLT5kZWZpbmVDbGF1c2UgIT0gTklMKQor CXsKKwkJLyoKKwkJICogVHdlYWsgYXJnIHZhciBvZiBQUkVWL05FWFQgc28gdGhhdCBpdCByZWZl cnMgdG8gc2Nhbi9pbm5lciBzbG90LgorCQkgKi8KKwkJZm9yZWFjaChsLCBub2RlLT5kZWZpbmVD bGF1c2UpCisJCXsKKwkJCWNoYXIJICAgKm5hbWU7CisJCQlFeHByU3RhdGUgICpleHBzOworCisJ CQl0ZSA9IGxmaXJzdChsKTsKKwkJCW5hbWUgPSB0ZS0+cmVzbmFtZTsKKwkJCWV4cHIgPSB0ZS0+ ZXhwcjsKKworI2lmZGVmIFJQUl9ERUJVRworCQkJcHJpbnRmKCJkZWZpbmVWYXJpYWJsZSBuYW1l OiAlc1xuIiwgbmFtZSk7CisjZW5kaWYKKwkJCXdpbnN0YXRlLT5kZWZpbmVWYXJpYWJsZUxpc3Qg PQorCQkJCWxhcHBlbmQod2luc3RhdGUtPmRlZmluZVZhcmlhYmxlTGlzdCwKKwkJCQkJCW1ha2VT dHJpbmcocHN0cmR1cChuYW1lKSkpOworCQkJYXR0bm9fbWFwKChOb2RlICopIGV4cHIpOworCQkJ ZXhwcyA9IEV4ZWNJbml0RXhwcihleHByLCAoUGxhblN0YXRlICopIHdpbnN0YXRlKTsKKwkJCXdp bnN0YXRlLT5kZWZpbmVDbGF1c2VMaXN0ID0KKwkJCQlsYXBwZW5kKHdpbnN0YXRlLT5kZWZpbmVD bGF1c2VMaXN0LCBleHBzKTsKKwkJfQorCX0KKworCS8qIEluaXRpYWxpemUgTkZBIGZyZWUgbGlz dHMgZm9yIHJvdyBwYXR0ZXJuIG1hdGNoaW5nICovCisJd2luc3RhdGUtPm5mYUNvbnRleHQgPSBO VUxMOworCXdpbnN0YXRlLT5uZmFDb250ZXh0VGFpbCA9IE5VTEw7CisJd2luc3RhdGUtPm5mYUNv bnRleHRGcmVlID0gTlVMTDsKKwl3aW5zdGF0ZS0+bmZhU3RhdGVGcmVlID0gTlVMTDsKKwl3aW5z dGF0ZS0+bmZhTGFzdFByb2Nlc3NlZFJvdyA9IC0xOworCXdpbnN0YXRlLT5uZmFTdGF0ZXNBY3Rp dmUgPSAwOworCXdpbnN0YXRlLT5uZmFDb250ZXh0c0FjdGl2ZSA9IDA7CisKKwkvKgorCSAqIEFs bG9jYXRlIHZhck1hdGNoZWQgYXJyYXkgZm9yIE5GQSBldmFsdWF0aW9uLiBXaXRoIHRoZSBuZXcg dmFyTmFtZXMKKwkgKiBvcmRlcmluZyAoREVGSU5FIG9yZGVyIGZpcnN0KSwgdmFySWQgPT0gZGVm aW5lSWR4IGZvciBhbGwgZGVmaW5lZAorCSAqIHZhcmlhYmxlcywgc28gbm8gbWFwcGluZyBpcyBu ZWVkZWQuCisJICovCisJaWYgKGxpc3RfbGVuZ3RoKHdpbnN0YXRlLT5kZWZpbmVWYXJpYWJsZUxp c3QpID4gMCkKKwkJd2luc3RhdGUtPm5mYVZhck1hdGNoZWQgPSBwYWxsb2MwKHNpemVvZihib29s KSAqCisJCQkJCQkJCQkJICBsaXN0X2xlbmd0aCh3aW5zdGF0ZS0+ZGVmaW5lVmFyaWFibGVMaXN0 KSk7CisJZWxzZQorCQl3aW5zdGF0ZS0+bmZhVmFyTWF0Y2hlZCA9IE5VTEw7CiAJd2luc3RhdGUt PmFsbF9maXJzdCA9IHRydWU7CiAJd2luc3RhdGUtPnBhcnRpdGlvbl9zcG9vbGVkID0gZmFsc2U7 CiAJd2luc3RhdGUtPm1vcmVfcGFydGl0aW9ucyA9IGZhbHNlOwpAQCAtMjgwMyw2ICszMDgxLDEx MSBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCXJldHVybiB3aW5zdGF0ZTsKIH0KIAorLyoKKyAqIFJld3JpdGUgdmFybm8g b2YgVmFyIG5vZGVzIHRoYXQgYXJlIHRoZSBhcmd1bWVudCBvZiBQUkVWL05FVCBzbyB0aGF0IHRo ZXkKKyAqIHNlZSBzY2FuIHR1cGxlIChQUkVWKSBvciBpbm5lciB0dXBsZSAoTkVYVCkuICBBbHNv IHdlIGNoZWNrIHRoZSBhcmd1bWVudHMKKyAqIG9mIFBSRVYvTkVYVCBpbmNsdWRlIGF0IGxlYXN0 IDEgY29sdW1uIHJlZmVyZW5jZS4gVGhpcyBpcyByZXF1aXJlZCBieSB0aGUKKyAqIFNRTCBzdGFu ZGFyZC4KKyAqLworc3RhdGljIHZvaWQKK2F0dG5vX21hcChOb2RlICpub2RlKQoreworCSh2b2lk KSBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGF0dG5vX21hcF93YWxrZXIsIE5VTEwpOwor fQorCitzdGF0aWMgYm9vbAorYXR0bm9fbWFwX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250 ZXh0KQoreworCUZ1bmNFeHByICAgKmZ1bmM7CisJaW50CQkJbmFyZ3M7CisJYm9vbAkJaXNfcHJl djsKKworCWlmIChub2RlID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChJc0Eobm9k ZSwgRnVuY0V4cHIpKQorCXsKKwkJZnVuYyA9IChGdW5jRXhwciAqKSBub2RlOworCisJCWlmIChm dW5jLT5mdW5jaWQgPT0gRl9QUkVWIHx8IGZ1bmMtPmZ1bmNpZCA9PSBGX05FWFQpCisJCXsKKwkJ CS8qCisJCQkgKiBUaGUgU1FMIHN0YW5kYXJkIGFsbG93cyB0byBoYXZlIHR3byBtb3JlIGFyZ3Vt ZW50cyBmb3JtIG9mCisJCQkgKiBQUkVWL05FWFQuICBCdXQgY3VycmVudGx5IHdlIGFsbG93IG9u bHkgMSBhcmd1bWVudCBmb3JtLgorCQkJICovCisJCQluYXJncyA9IGxpc3RfbGVuZ3RoKGZ1bmMt PmFyZ3MpOworCQkJaWYgKGxpc3RfbGVuZ3RoKGZ1bmMtPmFyZ3MpICE9IDEpCisJCQkJZWxvZyhF UlJPUiwgIlBSRVYvTkVYVCBtdXN0IGhhdmUgMSBhcmd1bWVudCBidXQgZnVuY3Rpb24gJWQgaGFz ICVkIGFyZ3MiLAorCQkJCQkgZnVuYy0+ZnVuY2lkLCBuYXJncyk7CisKKwkJCS8qCisJCQkgKiBD aGVjayBleHByIG9mIFBSRVYvTkVYVCBhcnVndW1lbnRzIGFuZCByZXBsYWNlIHZhcm5vLgorCQkJ ICovCisJCQlpc19wcmV2ID0gKGZ1bmMtPmZ1bmNpZCA9PSBGX1BSRVYpID8gdHJ1ZSA6IGZhbHNl OworCQkJY2hlY2tfcnByX25hdmlnYXRpb24obm9kZSwgaXNfcHJldik7CisJCX0KKwl9CisJcmV0 dXJuIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgYXR0bm9fbWFwX3dhbGtlciwgTlVMTCk7 Cit9CisKKy8qCisgKiBSZXdyaXRlIHZhcm5vIG9mIFZhciBvZiBSUFIgbmF2aWdhdGlvbiBvcGVy YXRpb25zIChQUkVWL05FWFQpLgorICogSWYgaXNfcHJldiBpcyB0cnVlLCB3ZSB0YWtlIGNhcmUg UFJFViwgb3RoZXJ3aXNlIE5FWFQuCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19ycHJfbmF2aWdh dGlvbihOb2RlICpub2RlLCBib29sIGlzX3ByZXYpCit7CisJTmF2aWdhdGlvbkluZm8gY29udGV4 dDsKKworCWNvbnRleHQuaXNfcHJldiA9IGlzX3ByZXY7CisJY29udGV4dC5udW1fdmFycyA9IDA7 CisJKHZvaWQpIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgcnByX25hdmlnYXRpb25fd2Fs a2VyLCAmY29udGV4dCk7CisJaWYgKGNvbnRleHQubnVtX3ZhcnMgPCAxKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCWVycm1zZygicm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvcGVyYXRpb24ncyBhcmd1 bWVudCBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25lIGNvbHVtbiByZWZlcmVuY2UiKSk7Cit9CisK K3N0YXRpYyBib29sCitycHJfbmF2aWdhdGlvbl93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29u dGV4dCkKK3sKKwlOYXZpZ2F0aW9uSW5mbyAqbmF2ID0gKE5hdmlnYXRpb25JbmZvICopIGNvbnRl eHQ7CisKKwlpZiAobm9kZSA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisKKwlzd2l0Y2ggKG5v ZGVUYWcobm9kZSkpCisJeworCQljYXNlIFRfVmFyOgorCQkJeworCQkJCVZhcgkJICAgKnZhciA9 IChWYXIgKikgbm9kZTsKKworCQkJCW5hdi0+bnVtX3ZhcnMrKzsKKworCQkJCWlmIChuYXYtPmlz X3ByZXYpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBSZXdyaXRlIHZhcm5vIGZyb20gT1VURVJf VkFSIHRvIHJlZ3VsYXIgdmFyIG5vIHNvIHRoYXQKKwkJCQkJICogdGhlIHZhciByZWZlcmVuY2Vz IHNjYW4gdHVwbGUuCisJCQkJCSAqLworCQkJCQl2YXItPnZhcm5vID0gdmFyLT52YXJub3N5bjsK KwkJCQl9CisJCQkJZWxzZQorCQkJCQl2YXItPnZhcm5vID0gSU5ORVJfVkFSOworCQkJfQorCQkJ YnJlYWs7CisJCWNhc2UgVF9Db25zdDoKKwkJY2FzZSBUX0Z1bmNFeHByOgorCQljYXNlIFRfT3BF eHByOgorCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVy cm1zZygicm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvcGVyYXRpb24ncyBhcmd1bWVudCBpbmNsdWRl cyB1bnN1cHBvcnRlZCBleHByZXNzaW9uIikpOworCX0KKwlyZXR1cm4gZXhwcmVzc2lvbl90cmVl X3dhbGtlcihub2RlLCBycHJfbmF2aWdhdGlvbl93YWxrZXIsIGNvbnRleHQpOworfQorCisKIC8q IC0tLS0tLS0tLS0tLS0tLS0tCiAgKiBFeGVjRW5kV2luZG93QWdnCiAgKiAtLS0tLS0tLS0tLS0t LS0tLQpAQCAtMjg2MCw2ICszMjQzLDggQEAgRXhlY1JlU2NhbldpbmRvd0FnZyhXaW5kb3dBZ2dT dGF0ZSAqbm9kZSkKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5hZ2dfcm93X3Nsb3QpOwogCUV4ZWND bGVhclR1cGxlKG5vZGUtPnRlbXBfc2xvdF8xKTsKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT50ZW1w X3Nsb3RfMik7CisJRXhlY0NsZWFyVHVwbGUobm9kZS0+cHJldl9zbG90KTsKKwlFeGVjQ2xlYXJU dXBsZShub2RlLT5uZXh0X3Nsb3QpOwogCWlmIChub2RlLT5mcmFtZWhlYWRfc2xvdCkKIAkJRXhl Y0NsZWFyVHVwbGUobm9kZS0+ZnJhbWVoZWFkX3Nsb3QpOwogCWlmIChub2RlLT5mcmFtZXRhaWxf c2xvdCkKQEAgLTMyMjAsNyArMzYwNSw4IEBAIHdpbmRvd19nZXR0dXBsZXNsb3QoV2luZG93T2Jq ZWN0IHdpbm9iaiwgaW50NjQgcG9zLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIAkJcmV0dXJuIGZh bHNlOwogCiAJaWYgKHBvcyA8IHdpbm9iai0+bWFya3BvcykKLQkJZWxvZyhFUlJPUiwgImNhbm5v dCBmZXRjaCByb3cgYmVmb3JlIFdpbmRvd09iamVjdCdzIG1hcmsgcG9zaXRpb24iKTsKKwkJZWxv ZyhFUlJPUiwgImNhbm5vdCBmZXRjaCByb3c6ICIgSU5UNjRfRk9STUFUICIgYmVmb3JlIFdpbmRv d09iamVjdCdzIG1hcmsgcG9zaXRpb246ICIgSU5UNjRfRk9STUFULAorCQkJIHBvcywgd2lub2Jq LT5tYXJrcG9zKTsKIAogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8od2luc3Rh dGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0LT5lY3h0X3Blcl9xdWVyeV9tZW1vcnkpOwogCkBAIC0z MzM3LDYgKzM3MjMsNyBAQCBpZ25vcmVudWxsc19nZXRmdW5jYXJnaW5mcmFtZShXaW5kb3dPYmpl Y3Qgd2lub2JqLCBpbnQgYXJnbm8sCiAJaW50CQkJbm90bnVsbF9vZmZzZXQ7CiAJaW50CQkJbm90 bnVsbF9yZWxwb3M7CiAJaW50CQkJZm9yd2FyZDsKKwlpbnQJCQludW1fcmVkdWNlZF9mcmFtZTsK IAogCUFzc2VydChXaW5kb3dPYmplY3RJc1ZhbGlkKHdpbm9iaikpOwogCXdpbnN0YXRlID0gd2lu b2JqLT53aW5zdGF0ZTsKQEAgLTMzNjUsNiArMzc1MiwxMyBAQCBpZ25vcmVudWxsc19nZXRmdW5j YXJnaW5mcmFtZShXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQgYXJnbm8sCiAJCQkvKiByZWplY3Rp bmcgcmVscG9zID4gMCBpcyBlYXN5IGFuZCBzaW1wbGlmaWVzIGNvZGUgYmVsb3cgKi8KIAkJCWlm IChyZWxwb3MgPiAwKQogCQkJCWdvdG8gb3V0X29mX2ZyYW1lOworCisJCQkvKgorCQkJICogUlBS IGNhcmVzIGFib3V0IGZyYW1lIGhlYWQgcG9zLiBOZWVkIHRvIGNhbGwKKwkJCSAqIHVwZGF0ZV9m cmFtZWhlYWRwb3MKKwkJCSAqLworCQkJdXBkYXRlX2ZyYW1laGVhZHBvcyh3aW5zdGF0ZSk7CisK IAkJCXVwZGF0ZV9mcmFtZXRhaWxwb3Mod2luc3RhdGUpOwogCQkJYWJzX3BvcyA9IHdpbnN0YXRl LT5mcmFtZXRhaWxwb3MgLSAxOwogCQkJbWFya19wb3MgPSAwOwkJLyoga2VlcCBjb21waWxlciBx dWlldCAqLwpAQCAtMzM4MCw2ICszNzc0LDM1IEBAIGlnbm9yZW51bGxzX2dldGZ1bmNhcmdpbmZy YW1lKFdpbmRvd09iamVjdCB3aW5vYmosIGludCBhcmdubywKIAkgKiBHZXQgdGhlIG5leHQgbm9u bnVsbCB2YWx1ZSBpbiB0aGUgZnJhbWUsIG1vdmluZyBmb3J3YXJkIG9yIGJhY2t3YXJkCiAJICog dW50aWwgd2UgZmluZCBhIHZhbHVlIG9yIHJlYWNoIHRoZSBmcmFtZSdzIGVuZC4KIAkgKi8KKwor CS8qCisJICogQ2hlY2sgd2hldGhlciBjdXJyZW50IHJvdyBpcyBpbiByZWR1Y2VkIGZyYW1lLgor CSAqLworCW51bV9yZWR1Y2VkX2ZyYW1lID0gcm93X2lzX2luX3JlZHVjZWRfZnJhbWUod2lub2Jq LCB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zKTsKKwlpZiAobnVtX3JlZHVjZWRfZnJhbWUgPCAwKQkv KiB1bm1hdGNoZWQgb3Igc2tpcHBlZCByb3cgKi8KKwkJZ290byBvdXRfb2ZfZnJhbWU7CisJZWxz ZSBpZiAobnVtX3JlZHVjZWRfZnJhbWUgPiAwKSAvKiB0aGUgZmlyc3Qgcm93IG9mIHRoZSByZWR1 Y2VkIGZyYW1lICovCisJeworCQkvKgorCQkgKiBFYXJseSBjaGVjayBpZiByb3cgY291bGQgYmUg b3V0IG9mIHJlZHVjZWQgZnJhbWUuICBXaGVuIFJQUiBpcworCQkgKiBlbmFibGVkLCBFWENVREUg Y2xhdXNlIGNhbm5vdCBiZSBzcGVjaWZpZWQgYW5kIHRoZSBmcmFtZSBpcyBhbHdheXMKKwkJICog Y29udGlndW91cy4gIFNvIHdlIGNhbiBkbyB0aGUgY2hlY2sgZm9sbG93aW5ncyBzYWZlbHkuIE5v dGUsCisJCSAqIGhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIHRoYXQgYSByb3cgaXMgb3V0IG9mIHJl ZHVjZWQgZnJhbWUgaWYKKwkJICogdGhlcmUncyBhIE5VTEwgaW4gdGhlIG1pZGRsZS4gU28gd2Ug bmVlZCB0byBjaGVjayBpdCBpbiB0aGUKKwkJICogZm9sbG93aW5nIGRvIGxvcHAuCisJCSAqLwor CQlpZiAoc2Vla3R5cGUgPT0gV0lORE9XX1NFRUtfSEVBRCAmJiByZWxwb3MgPj0gbnVtX3JlZHVj ZWRfZnJhbWUpCisJCQlnb3RvIG91dF9vZl9mcmFtZTsKKwkJaWYgKHNlZWt0eXBlID09IFdJTkRP V19TRUVLX1RBSUwpCisJCXsKKwkJCWlmIChub3RudWxsX3JlbHBvcyA+PSBudW1fcmVkdWNlZF9m cmFtZSkKKwkJCQlnb3RvIG91dF9vZl9mcmFtZTsKKworCQkJLyogbm90IG91dCBvZiByZWR1Y2Vk IGZyYW1lLiBTZXQgYWJzcG9zIGFzIGEgc3RhcnRpbmcgcG9pbnQgKi8KKwkJCWFic19wb3MgPSB3 aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zICsgbnVtX3JlZHVjZWRfZnJhbWUgLSAxOworCQl9CisJfQor CiAJZG8KIAl7CiAJCWludAkJCWluZnJhbWU7CkBAIC0zNDQxLDYgKzM4NjQsMTYgQEAgaWdub3Jl bnVsbHNfZ2V0ZnVuY2FyZ2luZnJhbWUoV2luZG93T2JqZWN0IHdpbm9iaiwgaW50IGFyZ25vLAog CQl9CiBhZHZhbmNlOgogCQlhYnNfcG9zICs9IGZvcndhcmQ7CisJCWlmIChycHJfaXNfZGVmaW5l ZCh3aW5zdGF0ZSkpCisJCXsKKwkJCS8qCisJCQkgKiBDaGVjayB3aGV0aGVyIHdlIGFyZSBzdGls bCBpbiB0aGUgcmVkdWNlZCBmcmFtZS4gIChhbHNvIGNoZWNrCisJCQkgKiBpZiB3ZSBzdWNjZWVk ZWQgaW4gZ2V0dGluZyB0aGUgdGFyZ2V0IHJvdykuCisJCQkgKi8KKwkJCW51bV9yZWR1Y2VkX2Zy YW1lLS07CisJCQlpZiAobnVtX3JlZHVjZWRfZnJhbWUgPD0gMCAmJiBub3RudWxsX29mZnNldCA8 PSBub3RudWxsX3JlbHBvcykKKwkJCQlnb3RvIG91dF9vZl9mcmFtZTsKKwkJfQogCX0gd2hpbGUg KG5vdG51bGxfb2Zmc2V0IDw9IG5vdG51bGxfcmVscG9zKTsKIAogCWlmIChzZXRfbWFyaykKQEAg LTM5MjIsOCArNDM1NSw2IEBAIFdpbkdldEZ1bmNBcmdJbkZyYW1lKFdpbmRvd09iamVjdCB3aW5v YmosIGludCBhcmdubywKIAlXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGU7CiAJRXhwckNvbnRleHQg KmVjb250ZXh0OwogCVR1cGxlVGFibGVTbG90ICpzbG90OwotCWludDY0CQlhYnNfcG9zOwotCWlu dDY0CQltYXJrX3BvczsKIAogCUFzc2VydChXaW5kb3dPYmplY3RJc1ZhbGlkKHdpbm9iaikpOwog CXdpbnN0YXRlID0gd2lub2JqLT53aW5zdGF0ZTsKQEAgLTM5MzQsNiArNDM2NSw0OCBAQCBXaW5H ZXRGdW5jQXJnSW5GcmFtZShXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQgYXJnbm8sCiAJCXJldHVy biBpZ25vcmVudWxsc19nZXRmdW5jYXJnaW5mcmFtZSh3aW5vYmosIGFyZ25vLCByZWxwb3MsIHNl ZWt0eXBlLAogCQkJCQkJCQkJCQkgc2V0X21hcmssIGlzbnVsbCwgaXNvdXQpOwogCisJaWYgKFdp bkdldFNsb3RJbkZyYW1lKHdpbm9iaiwgc2xvdCwKKwkJCQkJCSAgcmVscG9zLCBzZWVrdHlwZSwg c2V0X21hcmssCisJCQkJCQkgIGlzbnVsbCwgaXNvdXQpID09IDApCisJeworCQllY29udGV4dC0+ ZWN4dF9vdXRlcnR1cGxlID0gc2xvdDsKKwkJcmV0dXJuIEV4ZWNFdmFsRXhwcigoRXhwclN0YXRl ICopIGxpc3RfbnRoKHdpbm9iai0+YXJnc3RhdGVzLCBhcmdubyksCisJCQkJCQkJZWNvbnRleHQs IGlzbnVsbCk7CisJfQorCisJaWYgKGlzb3V0KQorCQkqaXNvdXQgPSB0cnVlOworCSppc251bGwg PSB0cnVlOworCXJldHVybiAoRGF0dW0pIDA7Cit9CisKKy8qCisgKiBXaW5HZXRTbG90SW5GcmFt ZQorICogc2xvdDogVHVwbGVUYWJsZVNsb3QgdG8gc3RvcmUgdGhlIHJlc3VsdAorICogcmVscG9z OiBzaWduZWQgcm93Y291bnQgb2Zmc2V0IGZyb20gdGhlIHNlZWsgcG9zaXRpb24KKyAqIHNlZWt0 eXBlOiBXSU5ET1dfU0VFS19IRUFEIG9yIFdJTkRPV19TRUVLX1RBSUwKKyAqIHNldF9tYXJrOiBJ ZiB0aGUgcm93IGlzIGZvdW5kL2luIGZyYW1lIGFuZCBzZXRfbWFyayBpcyB0cnVlLCB0aGUgbWFy ayBpcworICoJCW1vdmVkIHRvIHRoZSByb3cgYXMgYSBzaWRlLWVmZmVjdC4KKyAqIGlzbnVsbDog b3V0cHV0IGFyZ3VtZW50LCByZWNlaXZlcyBpc251bGwgc3RhdHVzIG9mIHJlc3VsdAorICogaXNv dXQ6IG91dHB1dCBhcmd1bWVudCwgc2V0IHRvIGluZGljYXRlIHdoZXRoZXIgdGFyZ2V0IHJvdyBw b3NpdGlvbgorICoJCWlzIG91dCBvZiBmcmFtZSAoY2FuIHBhc3MgTlVMTCBpZiBjYWxsZXIgZG9l c24ndCBjYXJlIGFib3V0IHRoaXMpCisgKgorICogUmV0dXJucyAwIGlmIHdlIHN1Y2Nlc3NmdWxs dCBnb3QgdGhlIHNsb3QuIGZhbHNlIGlmIG91dCBvZiBmcmFtZS4KKyAqIChhbHNvIGlzb3V0IGlz IHNldCkKKyAqLworc3RhdGljIGludAorV2luR2V0U2xvdEluRnJhbWUoV2luZG93T2JqZWN0IHdp bm9iaiwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCisJCQkJICBpbnQgcmVscG9zLCBpbnQgc2Vla3R5 cGUsIGJvb2wgc2V0X21hcmssCisJCQkJICBib29sICppc251bGwsIGJvb2wgKmlzb3V0KQorewor CVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZTsKKwlpbnQ2NAkJYWJzX3BvczsKKwlpbnQ2NAkJbWFy a19wb3M7CisJaW50CQkJbnVtX3JlZHVjZWRfZnJhbWU7CisKKwlBc3NlcnQoV2luZG93T2JqZWN0 SXNWYWxpZCh3aW5vYmopKTsKKwl3aW5zdGF0ZSA9IHdpbm9iai0+d2luc3RhdGU7CisKIAlzd2l0 Y2ggKHNlZWt0eXBlKQogCXsKIAkJY2FzZSBXSU5ET1dfU0VFS19DVVJSRU5UOgpAQCAtNDAwMCwx MSArNDQ3MywyNSBAQCBXaW5HZXRGdW5jQXJnSW5GcmFtZShXaW5kb3dPYmplY3Qgd2lub2JqLCBp bnQgYXJnbm8sCiAJCQkJCQkgd2luc3RhdGUtPmZyYW1lT3B0aW9ucyk7CiAJCQkJCWJyZWFrOwog CQkJfQorCQkJbnVtX3JlZHVjZWRfZnJhbWUgPSByb3dfaXNfaW5fcmVkdWNlZF9mcmFtZSh3aW5v YmosCisJCQkJCQkJCQkJCQkJCXdpbnN0YXRlLT5mcmFtZWhlYWRwb3MpOworCQkJaWYgKG51bV9y ZWR1Y2VkX2ZyYW1lIDwgMCkKKwkJCQlnb3RvIG91dF9vZl9mcmFtZTsKKwkJCWVsc2UgaWYgKG51 bV9yZWR1Y2VkX2ZyYW1lID4gMCkKKwkJCQlpZiAocmVscG9zID49IG51bV9yZWR1Y2VkX2ZyYW1l KQorCQkJCQlnb3RvIG91dF9vZl9mcmFtZTsKIAkJCWJyZWFrOwogCQljYXNlIFdJTkRPV19TRUVL X1RBSUw6CiAJCQkvKiByZWplY3RpbmcgcmVscG9zID4gMCBpcyBlYXN5IGFuZCBzaW1wbGlmaWVz IGNvZGUgYmVsb3cgKi8KIAkJCWlmIChyZWxwb3MgPiAwKQogCQkJCWdvdG8gb3V0X29mX2ZyYW1l OworCisJCQkvKgorCQkJICogUlBSIGNhcmVzIGFib3V0IGZyYW1lIGhlYWQgcG9zLiBOZWVkIHRv IGNhbGwKKwkJCSAqIHVwZGF0ZV9mcmFtZWhlYWRwb3MKKwkJCSAqLworCQkJdXBkYXRlX2ZyYW1l aGVhZHBvcyh3aW5zdGF0ZSk7CisKIAkJCXVwZGF0ZV9mcmFtZXRhaWxwb3Mod2luc3RhdGUpOwog CQkJYWJzX3BvcyA9IHdpbnN0YXRlLT5mcmFtZXRhaWxwb3MgLSAxICsgcmVscG9zOwogCkBAIC00 MDcxLDYgKzQ1NTgsMTQgQEAgV2luR2V0RnVuY0FyZ0luRnJhbWUoV2luZG93T2JqZWN0IHdpbm9i aiwgaW50IGFyZ25vLAogCQkJCQltYXJrX3BvcyA9IDA7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQg Ki8KIAkJCQkJYnJlYWs7CiAJCQl9CisKKwkJCW51bV9yZWR1Y2VkX2ZyYW1lID0gcm93X2lzX2lu X3JlZHVjZWRfZnJhbWUod2lub2JqLAorCQkJCQkJCQkJCQkJCQl3aW5zdGF0ZS0+ZnJhbWVoZWFk cG9zICsgcmVscG9zKTsKKwkJCWlmIChudW1fcmVkdWNlZF9mcmFtZSA8IDApCisJCQkJZ290byBv dXRfb2ZfZnJhbWU7CisJCQllbHNlIGlmIChudW1fcmVkdWNlZF9mcmFtZSA+IDApCisJCQkJYWJz X3BvcyA9IHdpbnN0YXRlLT5mcmFtZWhlYWRwb3MgKyByZWxwb3MgKworCQkJCQludW1fcmVkdWNl ZF9mcmFtZSAtIDE7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJl Y29nbml6ZWQgd2luZG93IHNlZWsgdHlwZTogJWQiLCBzZWVrdHlwZSk7CkBAIC00MDg5LDE1ICs0 NTg0LDEzIEBAIFdpbkdldEZ1bmNBcmdJbkZyYW1lKFdpbmRvd09iamVjdCB3aW5vYmosIGludCBh cmdubywKIAkJKmlzb3V0ID0gZmFsc2U7CiAJaWYgKHNldF9tYXJrKQogCQlXaW5TZXRNYXJrUG9z aXRpb24od2lub2JqLCBtYXJrX3Bvcyk7Ci0JZWNvbnRleHQtPmVjeHRfb3V0ZXJ0dXBsZSA9IHNs b3Q7Ci0JcmV0dXJuIEV4ZWNFdmFsRXhwcigoRXhwclN0YXRlICopIGxpc3RfbnRoKHdpbm9iai0+ YXJnc3RhdGVzLCBhcmdubyksCi0JCQkJCQllY29udGV4dCwgaXNudWxsKTsKKwlyZXR1cm4gMDsK IAogb3V0X29mX2ZyYW1lOgogCWlmIChpc291dCkKIAkJKmlzb3V0ID0gdHJ1ZTsKIAkqaXNudWxs ID0gdHJ1ZTsKLQlyZXR1cm4gKERhdHVtKSAwOworCXJldHVybiAtMTsKIH0KIAogLyoKQEAgLTQx MjgsMyArNDYyMSwxODM1IEBAIFdpbkdldEZ1bmNBcmdDdXJyZW50KFdpbmRvd09iamVjdCB3aW5v YmosIGludCBhcmdubywgYm9vbCAqaXNudWxsKQogCXJldHVybiBFeGVjRXZhbEV4cHIoKEV4cHJT dGF0ZSAqKSBsaXN0X250aCh3aW5vYmotPmFyZ3N0YXRlcywgYXJnbm8pLAogCQkJCQkJZWNvbnRl eHQsIGlzbnVsbCk7CiB9CisKKy8qCisgKiBycHJfaXNfZGVmaW5lZAorICogcmV0dXJuIHRydWUg aWYgUm93IHBhdHRlcm4gcmVjb2duaXRpb24gaXMgZGVmaW5lZC4KKyAqLworc3RhdGljIGJvb2wK K3Jwcl9pc19kZWZpbmVkKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSkKK3sKKwlyZXR1cm4gd2lu c3RhdGUtPnJwUGF0dGVybiAhPSBOVUxMOworfQorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0K KyAqIHJvd19pc19pbl9yZWR1Y2VkX2ZyYW1lCisgKiBEZXRlcm1pbmUgd2hldGhlciBhIHJvdyBp cyBpbiB0aGUgY3VycmVudCByb3cncyByZWR1Y2VkIHdpbmRvdyBmcmFtZQorICogYWNjb3JkaW5n IHRvIHJvdyBwYXR0ZXJuIG1hdGNoaW5nCisgKgorICogVGhlIHJvdyBtdXN0IGhhcyBiZWVuIGFs cmVhZHkgZGV0ZXJtaW5lZCB0aGF0IGl0IGlzIGluIGEgZnVsbCB3aW5kb3cgZnJhbWUKKyAqIGFu ZCBmZXRjaGVkIGl0IGludG8gc2xvdC4KKyAqCisgKiBSZXR1cm5zOgorICogPSAwLCBSUFIgaXMg bm90IGRlZmluZWQuCisgKiA+MCwgaWYgdGhlIHJvdyBpcyB0aGUgZmlyc3QgaW4gdGhlIHJlZHVj ZWQgZnJhbWUuIFJldHVybiB0aGUgbnVtYmVyIG9mIHJvd3MKKyAqIGluIHRoZSByZWR1Y2VkIGZy YW1lLgorICogLTEsIGlmIHRoZSByb3cgaXMgdW5tYXRjaGVkIHJvdworICogLTIsIGlmIHRoZSBy b3cgaXMgaW4gdGhlIHJlZHVjZWQgZnJhbWUgYnV0IG5lZWRlZCB0byBiZSBza2lwcGVkIGJlY2F1 c2Ugb2YKKyAqIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICogLS0tLS0tLS0tLS0t LS0tLS0KKyAqLworc3RhdGljIGludAorcm93X2lzX2luX3JlZHVjZWRfZnJhbWUoV2luZG93T2Jq ZWN0IHdpbm9iaiwgaW50NjQgcG9zKQoreworCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSA9IHdp bm9iai0+d2luc3RhdGU7CisJaW50CQkJc3RhdGU7CisJaW50CQkJcnRuOworCisJaWYgKCFycHJf aXNfZGVmaW5lZCh3aW5zdGF0ZSkpCisJeworCQkvKgorCQkgKiBSUFIgaXMgbm90IGRlZmluZWQu IEFzc3VtZSB0aGF0IHdlIGFyZSBhbHdheXMgaW4gdGhlIHRoZSByZWR1Y2VkCisJCSAqIHdpbmRv dyBmcmFtZS4KKwkJICovCisJCXJ0biA9IDA7CisjaWZkZWYgUlBSX0RFQlVHCisJCXByaW50Zigi cm93X2lzX2luX3JlZHVjZWRfZnJhbWUgcmV0dXJucyAlZDogcG9zOiAiIElOVDY0X0ZPUk1BVCAi XG4iLAorCQkJICAgcnRuLCBwb3MpOworI2VuZGlmCisJCXJldHVybiBydG47CisJfQorCisJc3Rh dGUgPSBnZXRfcmVkdWNlZF9mcmFtZV9tYXAod2luc3RhdGUsIHBvcyk7CisKKwlpZiAoc3RhdGUg PT0gUkZfTk9UX0RFVEVSTUlORUQpCisJeworCQl1cGRhdGVfZnJhbWVoZWFkcG9zKHdpbnN0YXRl KTsKKwkJdXBkYXRlX3JlZHVjZWRfZnJhbWUod2lub2JqLCBwb3MpOworCX0KKworCXN0YXRlID0g Z2V0X3JlZHVjZWRfZnJhbWVfbWFwKHdpbnN0YXRlLCBwb3MpOworCisJc3dpdGNoIChzdGF0ZSkK Kwl7CisJCQlpbnQ2NAkJaTsKKwkJCWludAkJCW51bV9yZWR1Y2VkX3Jvd3M7CisKKwkJY2FzZSBS Rl9GUkFNRV9IRUFEOgorCQkJbnVtX3JlZHVjZWRfcm93cyA9IDE7CisJCQlmb3IgKGkgPSBwb3Mg KyAxOworCQkJCSBnZXRfcmVkdWNlZF9mcmFtZV9tYXAod2luc3RhdGUsIGkpID09IFJGX1NLSVBQ RUQ7IGkrKykKKwkJCQludW1fcmVkdWNlZF9yb3dzKys7CisJCQlydG4gPSBudW1fcmVkdWNlZF9y b3dzOworCQkJYnJlYWs7CisKKwkJY2FzZSBSRl9TS0lQUEVEOgorCQkJcnRuID0gLTI7CisJCQli cmVhazsKKworCQljYXNlIFJGX1VOTUFUQ0hFRDoKKwkJCXJ0biA9IC0xOworCQkJYnJlYWs7CisK KwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJVbnJlY29nbml6ZWQgc3RhdGU6ICVkIGF0OiAi IElOVDY0X0ZPUk1BVCwKKwkJCQkgc3RhdGUsIHBvcyk7CisJCQlicmVhazsKKwl9CisKKyNpZmRl ZiBSUFJfREVCVUcKKwlwcmludGYoInJvd19pc19pbl9yZWR1Y2VkX2ZyYW1lIHJldHVybnMgJWQ6 IHBvczogIiBJTlQ2NF9GT1JNQVQgIlxuIiwKKwkJICAgcnRuLCBwb3MpOworI2VuZGlmCisJcmV0 dXJuIHJ0bjsKK30KKworI2RlZmluZSBSRURVQ0VEX0ZSQU1FX01BUF9JTklUX1NJWkUJMTAyNEwK KworLyoKKyAqIGNyZWF0ZV9yZWR1Y2VkX2ZyYW1lX21hcAorICogQ3JlYXRlIHJlZHVjZWQgZnJh bWUgbWFwCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVfcmVkdWNlZF9mcmFtZV9tYXAoV2luZG93 QWdnU3RhdGUgKndpbnN0YXRlKQoreworCXdpbnN0YXRlLT5yZWR1Y2VkX2ZyYW1lX21hcCA9CisJ CU1lbW9yeUNvbnRleHRBbGxvYyh3aW5zdGF0ZS0+cGFydGNvbnRleHQsCisJCQkJCQkgICBSRURV Q0VEX0ZSQU1FX01BUF9JTklUX1NJWkUpOworCXdpbnN0YXRlLT5hbGxvY19zeiA9IFJFRFVDRURf RlJBTUVfTUFQX0lOSVRfU0laRTsKKwljbGVhcl9yZWR1Y2VkX2ZyYW1lX21hcCh3aW5zdGF0ZSk7 Cit9CisKKy8qCisgKiBjbGVhcl9yZWR1Y2VkX2ZyYW1lX21hcAorICogQ2xlYXIgcmVkdWNlZCBm cmFtZSBtYXAKKyAqLworc3RhdGljIHZvaWQKK2NsZWFyX3JlZHVjZWRfZnJhbWVfbWFwKFdpbmRv d0FnZ1N0YXRlICp3aW5zdGF0ZSkKK3sKKwlBc3NlcnQod2luc3RhdGUtPnJlZHVjZWRfZnJhbWVf bWFwICE9IE5VTEwpOworCU1lbVNldCh3aW5zdGF0ZS0+cmVkdWNlZF9mcmFtZV9tYXAsIFJGX05P VF9ERVRFUk1JTkVELAorCQkgICB3aW5zdGF0ZS0+YWxsb2Nfc3opOworfQorCisvKgorICogZ2V0 X3JlZHVjZWRfZnJhbWVfbWFwCisgKiBHZXQgcmVkdWNlZCBmcmFtZSBtYXAgc3BlY2lmaWVkIGJ5 IHBvcworICovCitzdGF0aWMgaW50CitnZXRfcmVkdWNlZF9mcmFtZV9tYXAoV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlLCBpbnQ2NCBwb3MpCit7CisJQXNzZXJ0KHdpbnN0YXRlLT5yZWR1Y2VkX2Zy YW1lX21hcCAhPSBOVUxMKTsKKwlBc3NlcnQocG9zID49IDApOworCisJLyoKKwkgKiBJZiBwb3Mg aXMgbm90IGluIHRoZSByZWR1Y2VkIGZyYW1lIG1hcCwgaXQgbWVhbnMgdGhhdCBhbnkgaW5mbwor CSAqIHJlZ2FyZGluZyB0aGUgcG9zIGhhcyBub3QgYmVlbiByZWdpc3RlcmVkIHlldC4gU28gd2Ug cmV0dXJuCisJICogUkZfTk9UX0RFVEVSTUlORUQuCisJICovCisJaWYgKHBvcyA+PSB3aW5zdGF0 ZS0+YWxsb2Nfc3opCisJCXJldHVybiBSRl9OT1RfREVURVJNSU5FRDsKKworCXJldHVybiB3aW5z dGF0ZS0+cmVkdWNlZF9mcmFtZV9tYXBbcG9zXTsKK30KKworLyoKKyAqIHJlZ2lzdGVyX3JlZHVj ZWRfZnJhbWVfbWFwCisgKiBBZGQvcmVwbGFjZSByZWR1Y2VkIGZyYW1lIG1hcCBtZW1iZXIgYXQg cG9zLgorICogSWYgdGhlcmUncyBubyBlbm91Z2ggc3BhY2UsIGV4cGFuZCB0aGUgbWFwLgorICov CitzdGF0aWMgdm9pZAorcmVnaXN0ZXJfcmVkdWNlZF9mcmFtZV9tYXAoV2luZG93QWdnU3RhdGUg KndpbnN0YXRlLCBpbnQ2NCBwb3MsIGludCB2YWwpCit7CisJaW50NjQJCXJlYWxsb2Nfc3o7CisK KwlBc3NlcnQod2luc3RhdGUtPnJlZHVjZWRfZnJhbWVfbWFwICE9IE5VTEwpOworCisJaWYgKHBv cyA8IDApCisJCWVsb2coRVJST1IsICJ3cm9uZyBwb3M6ICIgSU5UNjRfRk9STUFULCBwb3MpOwor CisJd2hpbGUgKHBvcyA+IHdpbnN0YXRlLT5hbGxvY19zeiAtIDEpCisJeworCQlyZWFsbG9jX3N6 ID0gd2luc3RhdGUtPmFsbG9jX3N6ICogMjsKKworCQl3aW5zdGF0ZS0+cmVkdWNlZF9mcmFtZV9t YXAgPQorCQkJcmVwYWxsb2Mod2luc3RhdGUtPnJlZHVjZWRfZnJhbWVfbWFwLCByZWFsbG9jX3N6 KTsKKworCQlNZW1TZXQod2luc3RhdGUtPnJlZHVjZWRfZnJhbWVfbWFwICsgd2luc3RhdGUtPmFs bG9jX3N6LAorCQkJICAgUkZfTk9UX0RFVEVSTUlORUQsIHJlYWxsb2Nfc3ogLSB3aW5zdGF0ZS0+ YWxsb2Nfc3opOworCisJCXdpbnN0YXRlLT5hbGxvY19zeiA9IHJlYWxsb2Nfc3o7CisJfQorCisJ d2luc3RhdGUtPnJlZHVjZWRfZnJhbWVfbWFwW3Bvc10gPSB2YWw7Cit9CisKKy8qCisgKiB1cGRh dGVfcmVkdWNlZF9mcmFtZQorICoJCVVwZGF0ZSByZWR1Y2VkIGZyYW1lIGluZm8gdXNpbmcgbXVs dGktY29udGV4dCBORkEgcGF0dGVybiBtYXRjaGluZy4KKyAqCisgKiBNYWludGFpbnMgbXVsdGlw bGUgTkZBIGNvbnRleHRzIHNpbXVsdGFuZW91c2x5LCBvbmUgZm9yIGVhY2ggcG90ZW50aWFsCisg KiBtYXRjaCBzdGFydCBwb3NpdGlvbi4gVGhpcyBhbGxvd3Mgc2hhcmluZyByb3cgZXZhbHVhdGlv bnMgYWNyb3NzIGNvbnRleHRzLAorICogYXZvaWRpbmcgcmVkdW5kYW50IERFRklORSBjbGF1c2Ug ZXZhbHVhdGlvbnMgd2hlbiByZXdpbmRpbmcgZm9yIFNLSVAgVE8KKyAqIE5FWFQgUk9XIG1vZGUu CisgKgorICogS2V5IG9wdGltaXphdGlvbnM6CisgKiAtIFJvdyBldmFsdWF0aW9ucyAoZXhwZW5z aXZlIERFRklORSBjbGF1c2VzKSBoYXBwZW4gb25seSBvbmNlIHBlciByb3cKKyAqIC0gQWxsIGFj dGl2ZSBjb250ZXh0cyBzaGFyZSB0aGUgc2FtZSBldmFsdWF0aW9uIHJlc3VsdHMKKyAqIC0gQ29u dGV4dHMgcGVyc2lzdCBhY3Jvc3MgY2FsbHMsIGVuYWJsaW5nIE8obikgREVGSU5FIGV2YWx1YXRp b25zCisgKi8KK3N0YXRpYyB2b2lkCit1cGRhdGVfcmVkdWNlZF9mcmFtZShXaW5kb3dPYmplY3Qg d2lub2JqLCBpbnQ2NCBwb3MpCit7CisJV2luZG93QWdnU3RhdGUgKndpbnN0YXRlID0gd2lub2Jq LT53aW5zdGF0ZTsKKwlSUFJORkFDb250ZXh0ICp0YXJnZXRDdHg7CisJaW50NjQJCWN1cnJlbnRQ b3M7CisJaW50NjQJCXN0YXJ0UG9zOworCWludAkJCWZyYW1lT3B0aW9ucyA9IHdpbnN0YXRlLT5m cmFtZU9wdGlvbnM7CisJYm9vbAkJaGFzTGltaXRlZEZyYW1lOworCWludDY0CQlmcmFtZU9mZnNl dCA9IDA7CisJaW50NjQJCW1hdGNoTGVuOworCisJLyoKKwkgKiBDaGVjayBpZiB3ZSBoYXZlIGEg bGltaXRlZCBmcmFtZSAoUk9XUyAuLi4gTiBGT0xMT1dJTkcpLiBFYWNoIGNvbnRleHQKKwkgKiBu ZWVkcyBpdHMgb3duIGZyYW1lIGVuZCBiYXNlZCBvbiBtYXRjaFN0YXJ0Um93ICsgb2Zmc2V0Lgor CSAqLworCWhhc0xpbWl0ZWRGcmFtZSA9IChmcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9ST1dT KSAmJgorCQkhKGZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX0VORF9VTkJPVU5ERURfRk9MTE9X SU5HKTsKKwlpZiAoaGFzTGltaXRlZEZyYW1lICYmIHdpbnN0YXRlLT5lbmRPZmZzZXRWYWx1ZSAh PSAwKQorCQlmcmFtZU9mZnNldCA9IERhdHVtR2V0SW50NjQod2luc3RhdGUtPmVuZE9mZnNldFZh bHVlKTsKKworCS8qCisJICogQ2FzZSAxOiBwb3MgaXMgYmVmb3JlIGFueSBleGlzdGluZyBjb250 ZXh0J3Mgc3RhcnQgcG9zaXRpb24uIFRoaXMgbWVhbnMKKwkgKiB0aGUgcG9zaXRpb24gd2FzIGFs cmVhZHkgcHJvY2Vzc2VkIGFuZCBkZXRlcm1pbmVkIHVubWF0Y2hlZC4gSGVhZCBpcworCSAqIHRo ZSBvbGRlc3QgY29udGV4dCAobG93ZXN0IG1hdGNoU3RhcnRSb3cpIHNpbmNlIGNvbnRleHRzIGFy ZSBhZGRlZCBhdAorCSAqIHRhaWwgd2l0aCBpbmNyZWFzaW5nIHBvc2l0aW9ucy4KKwkgKi8KKwlp ZiAod2luc3RhdGUtPm5mYUNvbnRleHQgIT0gTlVMTCAmJgorCQlwb3MgPCB3aW5zdGF0ZS0+bmZh Q29udGV4dC0+bWF0Y2hTdGFydFJvdykKKwl7CisJCXJlZ2lzdGVyX3JlZHVjZWRfZnJhbWVfbWFw KHdpbnN0YXRlLCBwb3MsIFJGX1VOTUFUQ0hFRCk7CisJCXJldHVybjsKKwl9CisKKwkvKgorCSAq IENhc2UgMjogRmluZCBleGlzdGluZyBjb250ZXh0IGZvciB0aGlzIHBvcywgb3IgY3JlYXRlIG5l dyBvbmUuCisJICovCisJdGFyZ2V0Q3R4ID0gbmZhX2dldF9oZWFkX2NvbnRleHQod2luc3RhdGUs IHBvcyk7CisJaWYgKHRhcmdldEN0eCA9PSBOVUxMKQorCXsKKwkJLyoKKwkJICogTm8gY29udGV4 dCBleGlzdHMuIElmIHBvcyBpcyBhbHJlYWR5IHByb2Nlc3NlZCwgaXQgbWVhbnMgdGhpcyByb3cK KwkJICogd2FzIGFscmVhZHkgZGV0ZXJtaW5lZCB0byBiZSB1bm1hdGNoZWQgb3Igc2tpcHBlZCAt IG5vIG5lZWQgdG8KKwkJICogcmVwcm9jZXNzLgorCQkgKi8KKwkJaWYgKHBvcyA8PSB3aW5zdGF0 ZS0+bmZhTGFzdFByb2Nlc3NlZFJvdykKKwkJeworCQkJcmVnaXN0ZXJfcmVkdWNlZF9mcmFtZV9t YXAod2luc3RhdGUsIHBvcywgUkZfVU5NQVRDSEVEKTsKKwkJCXJldHVybjsKKwkJfQorCQkvKiBO b3QgeWV0IHByb2Nlc3NlZCAtIGNyZWF0ZSBuZXcgY29udGV4dCBhbmQgc3RhcnQgZnJlc2ggKi8K KwkJdGFyZ2V0Q3R4ID0gbmZhX3N0YXJ0X2NvbnRleHQod2luc3RhdGUsIHBvcyk7CisJfQorCWVs c2UgaWYgKHRhcmdldEN0eC0+c3RhdGVzID09IE5VTEwpCisJeworCQkvKiBDb250ZXh0IGFscmVh ZHkgY29tcGxldGVkIC0gc2tpcCB0byByZXN1bHQgcmVnaXN0cmF0aW9uICovCisJCWdvdG8gcmVn aXN0ZXJfcmVzdWx0OworCX0KKworCS8qCisJICogRGV0ZXJtaW5lIHdoZXJlIHRvIHN0YXJ0IHBy b2Nlc3NpbmcuIFVzdWFsbHkgbmZhTGFzdFByb2Nlc3NlZFJvdysxID49CisJICogcG9zIHNpbmNl IGNvbnRleHRzIGFyZSBjcmVhdGVkIGF0IGN1cnJlbnRQb3MrMSBkdXJpbmcgcHJvY2Vzc2luZy4K KwkgKiBIb3dldmVyLCBwb3MgY2FuIGV4Y2VlZCB0aGlzIHdoZW4gcm93cyBhcmUgc2tpcHBlZCAo ZS5nLiwgdW5tYXRjaGVkCisJICogcm93cyBkb24ndCB1cGRhdGUgbmZhTGFzdFByb2Nlc3NlZFJv dykuCisJICovCisJc3RhcnRQb3MgPSBNYXgocG9zLCB3aW5zdGF0ZS0+bmZhTGFzdFByb2Nlc3Nl ZFJvdyArIDEpOworCisJLyoKKwkgKiBQcm9jZXNzIHJvd3MgdW50aWwgdGFyZ2V0IGNvbnRleHQg Y29tcGxldGVzIG9yIHdlIGhpdCBib3VuZGFyaWVzLiBFYWNoCisJICogcm93IGV2YWx1YXRpb24g aXMgc2hhcmVkIGFjcm9zcyBhbGwgYWN0aXZlIGNvbnRleHRzLgorCSAqLworCWZvciAoY3VycmVu dFBvcyA9IHN0YXJ0UG9zOyB0YXJnZXRDdHgtPnN0YXRlcyAhPSBOVUxMOyBjdXJyZW50UG9zKysp CisJeworCQlib29sCQlyb3dFeGlzdHM7CisKKwkJLyoKKwkJICogRXZhbHVhdGUgdmFyaWFibGVz IGZvciB0aGlzIHJvdyAtIGRvbmUgb25seSBvbmNlLCBzaGFyZWQgYnkgYWxsCisJCSAqIGNvbnRl eHRzCisJCSAqLworCQlyb3dFeGlzdHMgPSBuZmFfZXZhbHVhdGVfcm93KHdpbm9iaiwgY3VycmVu dFBvcywgd2luc3RhdGUtPm5mYVZhck1hdGNoZWQpOworCisJCS8qIE5vIG1vcmUgcm93cyBpbiBw YXJ0aXRpb24/IEZpbmFsaXplIGFsbCBjb250ZXh0cyAqLworCQlpZiAoIXJvd0V4aXN0cykKKwkJ eworCQkJbmZhX2ZpbmFsaXplX2FsbF9jb250ZXh0cyh3aW5zdGF0ZSwgY3VycmVudFBvcyAtIDEp OworCQkJLyogQ2xlYW4gdXAgZGVhZCBjb250ZXh0cyBmcm9tIGZpbmFsaXphdGlvbiAqLworCQkJ bmZhX2NsZWFudXBfZGVhZF9jb250ZXh0cyh3aW5zdGF0ZSwgdGFyZ2V0Q3R4KTsKKwkJCS8qIEFi c29yYiBjb250ZXh0cyBhdCBwYXJ0aXRpb24gYm91bmRhcnkgKi8KKwkJCWlmICh3aW5zdGF0ZS0+ cnBQYXR0ZXJuLT5pc0Fic29yYmFibGUpCisJCQl7CisJCQkJbmZhX2Fic29yYl9jb250ZXh0cyh3 aW5zdGF0ZSk7CisJCQl9CisJCQlicmVhazsKKwkJfQorCisJCS8qIFVwZGF0ZSBsYXN0IHByb2Nl c3NlZCByb3cgKi8KKwkJd2luc3RhdGUtPm5mYUxhc3RQcm9jZXNzZWRSb3cgPSBjdXJyZW50UG9z OworCisJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkJICogUHJvY2VzcyBhbGwgY29u dGV4dHMgZm9yIHRoaXMgcm93OgorCQkgKiAgIDEuIE1hdGNoIGFsbCAoY29udmVyZ2VuY2UpCisJ CSAqICAgMi4gQWJzb3JiIHJlZHVuZGFudAorCQkgKiAgIDMuIEFkdmFuY2UgYWxsIChkaXZlcmdl bmNlKQorCQkgKi8KKwkJbmZhX3Byb2Nlc3Nfcm93KHdpbnN0YXRlLCBjdXJyZW50UG9zLCBoYXNM aW1pdGVkRnJhbWUsIGZyYW1lT2Zmc2V0KTsKKworCQkvKgorCQkgKiBDcmVhdGUgYSBuZXcgY29u dGV4dCBmb3IgdGhlIG5leHQgcG90ZW50aWFsIHN0YXJ0IHBvc2l0aW9uLiBUaGlzCisJCSAqIGVu YWJsZXMgb3ZlcmxhcHBpbmcgbWF0Y2ggZGV0ZWN0aW9uIGZvciBTS0lQIFRPIE5FWFQgUk9XLgor CQkgKi8KKwkJbmZhX3N0YXJ0X2NvbnRleHQod2luc3RhdGUsIGN1cnJlbnRQb3MgKyAxKTsKKwor CQkvKgorCQkgKiBDbGVhbiB1cCBkZWFkIGNvbnRleHRzIChmYWlsZWQgd2l0aCBubyBhY3RpdmUg c3RhdGVzIGFuZCBubyBtYXRjaCkuCisJCSAqIFRoaXMgcmVtb3ZlcyBjb250ZXh0cyB0aGF0IGZh aWxlZCBkdXJpbmcgcHJvY2Vzc2luZyBhbmQgY291bnRzIHRoZW0KKwkJICogYXBwcm9wcmlhdGVs eSBhcyBwcnVuZWQgb3IgbWlzbWF0Y2hlZC4KKwkJICovCisJCW5mYV9jbGVhbnVwX2RlYWRfY29u dGV4dHMod2luc3RhdGUsIHRhcmdldEN0eCk7CisJfQorCityZWdpc3Rlcl9yZXN1bHQ6CisJQXNz ZXJ0KHBvcyA9PSB0YXJnZXRDdHgtPm1hdGNoU3RhcnRSb3cpOworCisJLyoKKwkgKiBSZWdpc3Rl ciByZWR1Y2VkIGZyYW1lIG1hcCBiYXNlZCBvbiBtYXRjaCByZXN1bHQuCisJICovCisJaWYgKHRh cmdldEN0eC0+bWF0Y2hFbmRSb3cgPCB0YXJnZXRDdHgtPm1hdGNoU3RhcnRSb3cpCisJeworCQlt YXRjaExlbiA9IHRhcmdldEN0eC0+bGFzdFByb2Nlc3NlZFJvdyAtIHRhcmdldEN0eC0+bWF0Y2hT dGFydFJvdyArIDE7CisKKwkJcmVnaXN0ZXJfcmVkdWNlZF9mcmFtZV9tYXAod2luc3RhdGUsIHRh cmdldEN0eC0+bWF0Y2hTdGFydFJvdywgUkZfVU5NQVRDSEVEKTsKKwkJbmZhX3JlY29yZF9jb250 ZXh0X2ZhaWx1cmUod2luc3RhdGUsIG1hdGNoTGVuKTsKKwkJbmZhX2NvbnRleHRfZnJlZSh3aW5z dGF0ZSwgdGFyZ2V0Q3R4KTsKKwkJcmV0dXJuOworCX0KKworCS8qIE1hdGNoIHN1Y2NlZWRlZCAt IHJlZ2lzdGVyIGZyYW1lIG1hcCBhbmQgcmVjb3JkIHN0YXRpc3RpY3MgKi8KKwltYXRjaExlbiA9 IHRhcmdldEN0eC0+bWF0Y2hFbmRSb3cgLSB0YXJnZXRDdHgtPm1hdGNoU3RhcnRSb3cgKyAxOwor CisJcmVnaXN0ZXJfcmVkdWNlZF9mcmFtZV9tYXAod2luc3RhdGUsIHRhcmdldEN0eC0+bWF0Y2hT dGFydFJvdywgUkZfRlJBTUVfSEVBRCk7CisJZm9yIChpbnQ2NCBpID0gdGFyZ2V0Q3R4LT5tYXRj aFN0YXJ0Um93ICsgMTsgaSA8PSB0YXJnZXRDdHgtPm1hdGNoRW5kUm93OyBpKyspCisJeworCQly ZWdpc3Rlcl9yZWR1Y2VkX2ZyYW1lX21hcCh3aW5zdGF0ZSwgaSwgUkZfU0tJUFBFRCk7CisJfQor CW5mYV9yZWNvcmRfY29udGV4dF9zdWNjZXNzKHdpbnN0YXRlLCBtYXRjaExlbik7CisKKwkvKiBS ZW1vdmUgdGhlIG1hdGNoZWQgY29udGV4dCAqLworCW5mYV9jb250ZXh0X2ZyZWUod2luc3RhdGUs IHRhcmdldEN0eCk7Cit9CisKKy8qCisgKiBORkEtYmFzZWQgcGF0dGVybiBtYXRjaGluZyBpbXBs ZW1lbnRhdGlvbgorICoKKyAqIFRoZXNlIGZ1bmN0aW9ucyBpbXBsZW1lbnQgZGlyZWN0IE5GQSBl eGVjdXRpb24gdXNpbmcgdGhlIGNvbXBpbGVkCisgKiBSUFJQYXR0ZXJuIHN0cnVjdHVyZSwgYXZv aWRpbmcgcmVnZXggY29tcGlsYXRpb24gb3ZlcmhlYWQuCisgKgorICogRXhlY3V0aW9uIEZsb3c6 IG1hdGNoIC0+IGFic29yYiAtPiBhZHZhbmNlCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICogVGhlIE5GQSBleGVjdXRpb24gZm9sbG93cyBhIHRocmVlLXBo YXNlIGN5Y2xlIGZvciBlYWNoIHJvdzoKKyAqCisgKiAxLiBNQVRDSCAoY29udmVyZ2VuY2UpOiBF dmFsdWF0ZSBhbGwgd2FpdGluZyBzdGF0ZXMgYWdhaW5zdCBjdXJyZW50IHJvdy4KKyAqICAgIFN0 YXRlcyBvbiBWQVIgZWxlbWVudHMgYXJlIGNoZWNrZWQgYWdhaW5zdCB0aGVpciBkZWZpbmluZyBj b25kaXRpb25zLgorICogICAgRmFpbGVkIG1hdGNoZXMgYXJlIHJlbW92ZWQsIHN1Y2Nlc3NmdWwg b25lcyBtYXkgdHJhbnNpdGlvbiBmb3J3YXJkLgorICogICAgVGhpcyBpcyBhICJjb252ZXJnZW5j ZSIgcGhhc2UgLSB0aGUgbnVtYmVyIG9mIHN0YXRlcyB0ZW5kcyB0byBkZWNyZWFzZS4KKyAqCisg KiAyLiBBQlNPUkI6IEFmdGVyIG1hdGNoaW5nLCBjaGVjayBpZiBhbnkgY29udGV4dCBjYW4gYWJz b3JiIGFub3RoZXIuCisgKiAgICBDb250ZXh0IGFic29ycHRpb24gaXMgYW4gb3B0aW1pemF0aW9u IHRoYXQgbWVyZ2VzIGVxdWl2YWxlbnQgY29udGV4dHMuCisgKiAgICBBIGNvbnRleHQgY2FuIG9u bHkgYmUgYWJzb3JiZWQgaWYgQUxMIGl0cyBzdGF0ZXMgYXJlIGFic29yYmFibGUuCisgKgorICog My4gQURWQU5DRSAoZGl2ZXJnZW5jZSk6IEV4cGFuZCBzdGF0ZXMgdGhyb3VnaCBlcHNpbG9uIHRy YW5zaXRpb25zLgorICogICAgU3RhdGVzIGFkdmFuY2UgdGhyb3VnaCBBTFQgKGFsdGVybmF0aW9u KSwgRU5EIChncm91cCBlbmQpLCBhbmQKKyAqICAgIG9wdGlvbmFsIGVsZW1lbnRzIHVudGlsIHJl YWNoaW5nIFZBUiBvciBGSU4gZWxlbWVudHMgd2hlcmUgdGhleSB3YWl0LgorICogICAgVGhpcyBp cyBhICJkaXZlcmdlbmNlIiBwaGFzZSAtIEFMVCBjcmVhdGVzIG11bHRpcGxlIGJyYW5jaCBzdGF0 ZXMuCisgKgorICogS2V5IERlc2lnbiBEZWNpc2lvbnM6CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqIC0gVkFSLT5FTkQgdHJhbnNpdGlvbiBpbiBtYXRjaCBwaGFzZTogV2hlbiBhIHNpbXBs ZSBWQVIgKG1heD0xKSBtYXRjaGVzCisgKiAgIGFuZCB0aGUgbmV4dCBlbGVtZW50IGlzIEVORCwg d2UgdHJhbnNpdGlvbiBpbW1lZGlhdGVseSBpbiB0aGUgbWF0Y2gKKyAqICAgcGhhc2UgcmF0aGVy IHRoYW4gd2FpdGluZyBmb3IgYWR2YW5jZS4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3QK KyAqICAgYWJzb3JwdGlvbjogc3RhdGVzIG11c3QgYmUgYXQgRU5EIHRvIGJlIG1hcmtlZCBhYnNv cmJhYmxlIGJlZm9yZSB0aGUKKyAqICAgYWJzb3JwdGlvbiBjaGVjayBvY2N1cnMuCisgKgorICog LSBPcHRpb25hbCBWQVIgc2tpcCBwYXRoczogV2hlbiBhZHZhbmNlIGxhbmRzIG9uIGEgVkFSIHdp dGggbWluPTAsCisgKiAgIHdlIGNyZWF0ZSBib3RoIGEgd2FpdGluZyBzdGF0ZSBBTkQgYSBza2lw IHN0YXRlIChsaWtlIEFMVCBicmFuY2hlcykuCisgKiAgIFRoaXMgZW5zdXJlcyBwYXR0ZXJucyBs aWtlICJBIEI/IEMiIHdvcmsgY29ycmVjdGx5IC0gd2UgbmVlZCBhIHN0YXRlCisgKiAgIHdhaXRp bmcgZm9yIEIgQU5EIGEgc3RhdGUgdGhhdCBoYXMgYWxyZWFkeSBza2lwcGVkIHRvIEMuCisgKgor ICogLSBFTkQtPkVORCBjb3VudCBpbmNyZW1lbnQ6IFdoZW4gdHJhbnNpdGlvbmluZyBmcm9tIG9u ZSBFTkQgdG8gYW5vdGhlcgorICogICBFTkQgd2l0aGluIGFkdmFuY2UsIHdlIG11c3QgaW5jcmVt ZW50IHRoZSBvdXRlciBFTkQncyBjb3VudC4gVGhpcworICogICBoYW5kbGVzIG5lc3RlZCBncm91 cHMgbGlrZSAiKChBfEIpKykrIiBjb3JyZWN0bHkgLSBleGl0aW5nIHRoZSBpbm5lcgorICogICBn cm91cCBjb3VudHMgYXMgb25lIGl0ZXJhdGlvbiBvZiB0aGUgb3V0ZXIgZ3JvdXAuCisgKgorICog LSBpbml0aWFsQWR2YW5jZSBmbGFnOiBUaGUgZmlyc3QgYWR2YW5jZSBhZnRlciBjb250ZXh0IGNy ZWF0aW9uIG11c3QKKyAqICAgc2tpcCBGSU4gcmVjb3JkaW5nLiBSZWFjaGluZyBGSU4gd2l0aG91 dCBldmFsdWF0aW5nIGFueSBWQVIgd291bGQKKyAqICAgY3JlYXRlIGEgemVyby1sZW5ndGggbWF0 Y2gsIHdoaWNoIGlzIGludmFsaWQuCisgKgorICogQ29udGV4dCBBYnNvcnB0aW9uIFJ1bnRpbWU6 CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEFic29ycHRpb24gdXNlcyBmbGFn cyBjb21wdXRlZCBhdCBwbGFubmluZyB0aW1lIChpbiBycHIuYykgYW5kIHR3bworICogY29udGV4 dC1sZXZlbCBmbGFncyBtYWludGFpbmVkIGF0IHJ1bnRpbWU6CisgKgorICogU3RhdGUtbGV2ZWw6 CisgKiAgIHN0YXRlLmlzQWJzb3JiYWJsZTogdHJ1ZSBpZiBzdGF0ZSBpcyBpbiB0aGUgYWJzb3Ji YWJsZSByZWdpb24uCisgKiAgICAgLSBTZXQgYXQgY3JlYXRpb246IGVsZW0tPmZsYWdzICYgUlBS X0VMRU1fQUJTT1JCQUJMRV9CUkFOQ0gKKyAqICAgICAtIEF0IHRyYW5zaXRpb246IHByZXZBYnNv cmJhYmxlICYmIChuZXdFbGVtLT5mbGFncyAmIEFCU09SQkFCTEVfQlJBTkNIKQorICogICAgIC0g TW9ub3RvbmljOiBvbmNlIGZhbHNlLCBzdGF5cyBmYWxzZSBmb3JldmVyCisgKgorICogQ29udGV4 dC1sZXZlbDoKKyAqICAgY3R4Lmhhc0Fic29yYmFibGVTdGF0ZTogY2FuIHRoaXMgY29udGV4dCBh YnNvcmIgb3RoZXJzPworICogICAgIC0gVHJ1ZSBpZiBhdCBsZWFzdCBvbmUgc3RhdGUgaGFzIGlz QWJzb3JiYWJsZT10cnVlCisgKiAgICAgLSBNb25vdG9uaWM6IHRydWUtPmZhbHNlIG9ubHkgKG9w dGltaXphdGlvbjogc2tpcCByZWNhbGMgd2hlbiBmYWxzZSkKKyAqCisgKiAgIGN0eC5hbGxTdGF0 ZXNBYnNvcmJhYmxlOiBjYW4gdGhpcyBjb250ZXh0IGJlIGFic29yYmVkPworICogICAgIC0gVHJ1 ZSBpZiBBTEwgc3RhdGVzIGhhdmUgaXNBYnNvcmJhYmxlPXRydWUKKyAqICAgICAtIER5bmFtaWM6 IGNhbiBjaGFuZ2UgZmFsc2UtPnRydWUgKHdoZW4gbm9uLWFic29yYmFibGUgc3RhdGVzIGRpZSkK KyAqCisgKiBBYnNvcnB0aW9uIEFsZ29yaXRobToKKyAqICAgRm9yIGVhY2ggcGFpciAob2xkZXIg Q3R4MSwgbmV3ZXIgQ3R4Mik6CisgKiAgIDEuIFByZS1jaGVjazogQ3R4MS5oYXNBYnNvcmJhYmxl U3RhdGUgJiYgQ3R4Mi5hbGxTdGF0ZXNBYnNvcmJhYmxlCisgKiAgICAgIC0+IElmIGZhbHNlLCBz a2lwIChmYXN0IGZpbHRlcikKKyAqICAgMi4gQ292ZXJhZ2UgY2hlY2s6IEZvciBlYWNoIEN0eDIg c3RhdGUgd2l0aCBpc0Fic29yYmFibGU9dHJ1ZSwKKyAqICAgICAgZmluZCBDdHgxIHN0YXRlIHdp dGggc2FtZSBlbGVtSWR4IGFuZCBjb3VudCA+PSBDdHgyLmNvdW50CisgKiAgIDMuIElmIGFsbCBD dHgyIGFic29yYmFibGUgc3RhdGVzIGFyZSBjb3ZlcmVkLCBhYnNvcmIgQ3R4MgorICoKKyAqIEV4 YW1wbGU6IFBhdHRlcm4gQSsgQgorICogICBSb3cgMTogQ3R4MSBhdCBBIChjb3VudD0xKQorICog ICBSb3cgMjogQ3R4MSBhdCBBIChjb3VudD0yKSwgQ3R4MiBhdCBBIChjb3VudD0xKQorICogICAt PiBCb3RoIGF0IHNhbWUgZWxlbUlkeCAoQSksIEN0eDEuY291bnQgPj0gQ3R4Mi5jb3VudAorICog ICAtPiBDdHgyIGFic29yYmVkCisgKgorICogVGhlIGFzeW1tZXRyaWMgZGVzaWduIChDdHgxIG5l ZWRzIGhhc0Fic29yYmFibGUsIEN0eDIgbmVlZHMgYWxsQWJzb3JiYWJsZSkKKyAqIGFsbG93cyBh YnNvcnB0aW9uIGV2ZW4gd2hlbiBDdHgxIGhhcyBleHRyYSBub24tYWJzb3JiYWJsZSBzdGF0ZXMu CisgKi8KKworLyoKKyAqIG5mYV9wcm9jZXNzX3JvdworICoKKyAqIFByb2Nlc3MgYWxsIGNvbnRl eHRzIGZvciBvbmUgcm93OgorICogICAxLiBNYXRjaCBhbGwgY29udGV4dHMgKGNvbnZlcmdlbmNl KSAtIGV2YWx1YXRlIFZBUnMsIHBydW5lIGRlYWQgc3RhdGVzCisgKiAgIDIuIEFic29yYiByZWR1 bmRhbnQgY29udGV4dHMgLSBpZGVhbCB0aW1pbmcgYWZ0ZXIgY29udmVyZ2VuY2UKKyAqICAgMy4g QWR2YW5jZSBhbGwgY29udGV4dHMgKGRpdmVyZ2VuY2UpIC0gY3JlYXRlIG5ldyBzdGF0ZXMgZm9y IG5leHQgcm93CisgKi8KK3N0YXRpYyB2b2lkCituZmFfcHJvY2Vzc19yb3coV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlLCBpbnQ2NCBjdXJyZW50UG9zLAorCQkJCWJvb2wgaGFzTGltaXRlZEZyYW1l LCBpbnQ2NCBmcmFtZU9mZnNldCkKK3sKKwlSUFJORkFDb250ZXh0ICpjdHg7CisJYm9vbAkgICAq dmFyTWF0Y2hlZCA9IHdpbnN0YXRlLT5uZmFWYXJNYXRjaGVkOworCisJLyoKKwkgKiBQaGFzZSAx OiBNYXRjaCBhbGwgY29udGV4dHMgKGNvbnZlcmdlbmNlKSBFdmFsdWF0ZSBWQVIgZWxlbWVudHMs IHVwZGF0ZQorCSAqIGNvdW50cywgcmVtb3ZlIGRlYWQgc3RhdGVzLgorCSAqLworCWZvciAoY3R4 ID0gd2luc3RhdGUtPm5mYUNvbnRleHQ7IGN0eCAhPSBOVUxMOyBjdHggPSBjdHgtPm5leHQpCisJ eworCQlpZiAoY3R4LT5zdGF0ZXMgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCisJCS8qIENoZWNr IGZyYW1lIGJvdW5kYXJ5IC0gZmluYWxpemUgaWYgZXhjZWVkZWQgKi8KKwkJaWYgKGhhc0xpbWl0 ZWRGcmFtZSkKKwkJeworCQkJaW50NjQJCWN0eEZyYW1lRW5kID0gY3R4LT5tYXRjaFN0YXJ0Um93 ICsgZnJhbWVPZmZzZXQgKyAxOworCisJCQlpZiAoY3VycmVudFBvcyA+PSBjdHhGcmFtZUVuZCkK KwkJCXsKKwkJCQkvKiBGcmFtZSBib3VuZGFyeSBleGNlZWRlZDogZm9yY2UgbWlzbWF0Y2ggKi8K KwkJCQluZmFfbWF0Y2god2luc3RhdGUsIGN0eCwgTlVMTCk7CisJCQkJY29udGludWU7CisJCQl9 CisJCX0KKworCQluZmFfbWF0Y2god2luc3RhdGUsIGN0eCwgdmFyTWF0Y2hlZCk7CisJCWN0eC0+ bGFzdFByb2Nlc3NlZFJvdyA9IGN1cnJlbnRQb3M7CisJfQorCisJLyoKKwkgKiBQaGFzZSAyOiBB YnNvcmIgcmVkdW5kYW50IGNvbnRleHRzIEFmdGVyIG1hdGNoIHBoYXNlLCBzdGF0ZXMgaGF2ZQor CSAqIGNvbnZlcmdlZCAtIGlkZWFsIGZvciBhYnNvcnB0aW9uLiBGaXJzdCB1cGRhdGUgYWJzb3Jw dGlvbiBmbGFncyB0aGF0CisJICogbWF5IGhhdmUgY2hhbmdlZCBkdWUgdG8gc3RhdGUgcmVtb3Zh bC4KKwkgKi8KKwlpZiAod2luc3RhdGUtPnJwUGF0dGVybi0+aXNBYnNvcmJhYmxlKQorCXsKKwkJ Zm9yIChjdHggPSB3aW5zdGF0ZS0+bmZhQ29udGV4dDsgY3R4ICE9IE5VTEw7IGN0eCA9IGN0eC0+ bmV4dCkKKwkJCW5mYV91cGRhdGVfYWJzb3JwdGlvbl9mbGFncyhjdHgpOworCisJCW5mYV9hYnNv cmJfY29udGV4dHMod2luc3RhdGUpOworCX0KKworCS8qCisJICogUGhhc2UgMzogQWR2YW5jZSBh bGwgY29udGV4dHMgKGRpdmVyZ2VuY2UpIENyZWF0ZSBuZXcgc3RhdGVzCisJICogKGxvb3AvZXhp dCkgZnJvbSBzdXJ2aXZpbmcgbWF0Y2hlZCBzdGF0ZXMuCisJICovCisJZm9yIChjdHggPSB3aW5z dGF0ZS0+bmZhQ29udGV4dDsgY3R4ICE9IE5VTEw7IGN0eCA9IGN0eC0+bmV4dCkKKwl7CisJCWlm IChjdHgtPnN0YXRlcyA9PSBOVUxMKQorCQkJY29udGludWU7CisKKwkJLyoKKwkJICogUGhhc2Ug MSBhbHJlYWR5IGhhbmRsZWQgZnJhbWUgYm91bmRhcnkgZXhjZWVkZWQgY29udGV4dHMgYnkgZm9y Y2luZworCQkgKiBtaXNtYXRjaCAobmZhX21hdGNoIHdpdGggTlVMTCksIHdoaWNoIHJlbW92ZXMg YWxsIHN0YXRlcyAoYWxsCisJCSAqIHN0YXRlcyBhcmUgYXQgVkFSIHBvc2l0aW9ucyBhZnRlciBh ZHZhbmNlKS4gU28gYW55IHN1cnZpdmluZworCQkgKiBjb250ZXh0IGhlcmUgbXVzdCBiZSB3aXRo aW4gaXRzIGZyYW1lIGJvdW5kYXJ5LgorCQkgKi8KKwkJQXNzZXJ0KCFoYXNMaW1pdGVkRnJhbWUg fHwKKwkJCSAgIGN1cnJlbnRQb3MgPCBjdHgtPm1hdGNoU3RhcnRSb3cgKyBmcmFtZU9mZnNldCAr IDEpOworCisJCW5mYV9hZHZhbmNlKHdpbnN0YXRlLCBjdHgsIGN1cnJlbnRQb3MsIGZhbHNlKTsK Kwl9Cit9CisKKy8qCisgKiBuZmFfc3RhdGVfYWxsb2MKKyAqCisgKiBBbGxvY2F0ZSBhbiBORkEg c3RhdGUsIHJldXNpbmcgZnJvbSBmcmVlTGlzdCBpZiBhdmFpbGFibGUuCisgKiBmcmVlTGlzdCBp cyBzdG9yZWQgaW4gV2luZG93QWdnU3RhdGUgZm9yIHJldXNlIGFjcm9zcyBtYXRjaCBhdHRlbXB0 cy4KKyAqIFVzZXMgZmxleGlibGUgYXJyYXkgbWVtYmVyIGZvciBjb3VudHNbXS4KKyAqLworc3Rh dGljIFJQUk5GQVN0YXRlICoKK25mYV9zdGF0ZV9hbGxvYyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3Rh dGUpCit7CisJUlBSTkZBU3RhdGUgKnN0YXRlOworCisJLyogVHJ5IHRvIHJldXNlIGZyb20gZnJl ZSBsaXN0IGZpcnN0ICovCisJaWYgKHdpbnN0YXRlLT5uZmFTdGF0ZUZyZWUgIT0gTlVMTCkKKwl7 CisJCXN0YXRlID0gd2luc3RhdGUtPm5mYVN0YXRlRnJlZTsKKwkJd2luc3RhdGUtPm5mYVN0YXRl RnJlZSA9IHN0YXRlLT5uZXh0OworCX0KKwllbHNlCisJeworCQkvKiBBbGxvY2F0ZSBpbiBwYXJ0 aXRpb24gY29udGV4dCBmb3IgcHJvcGVyIGxpZmV0aW1lICovCisJCXN0YXRlID0gTWVtb3J5Q29u dGV4dEFsbG9jKHdpbnN0YXRlLT5wYXJ0Y29udGV4dCwgd2luc3RhdGUtPm5mYVN0YXRlU2l6ZSk7 CisJfQorCisJLyogSW5pdGlhbGl6ZSBlbnRpcmUgc3RhdGUgdG8gemVybyAqLworCW1lbXNldChz dGF0ZSwgMCwgd2luc3RhdGUtPm5mYVN0YXRlU2l6ZSk7CisKKwkvKiBVcGRhdGUgc3RhdGlzdGlj cyAqLworCXdpbnN0YXRlLT5uZmFTdGF0ZXNBY3RpdmUrKzsKKwl3aW5zdGF0ZS0+bmZhU3RhdGVz VG90YWxDcmVhdGVkKys7CisJaWYgKHdpbnN0YXRlLT5uZmFTdGF0ZXNBY3RpdmUgPiB3aW5zdGF0 ZS0+bmZhU3RhdGVzTWF4KQorCQl3aW5zdGF0ZS0+bmZhU3RhdGVzTWF4ID0gd2luc3RhdGUtPm5m YVN0YXRlc0FjdGl2ZTsKKworCXJldHVybiBzdGF0ZTsKK30KKworLyoKKyAqIG5mYV9zdGF0ZV9m cmVlCisgKgorICogUmV0dXJuIGEgc3RhdGUgdG8gdGhlIGZyZWUgbGlzdCBmb3IgbGF0ZXIgcmV1 c2UuCisgKi8KK3N0YXRpYyB2b2lkCituZmFfc3RhdGVfZnJlZShXaW5kb3dBZ2dTdGF0ZSAqd2lu c3RhdGUsIFJQUk5GQVN0YXRlICpzdGF0ZSkKK3sKKwl3aW5zdGF0ZS0+bmZhU3RhdGVzQWN0aXZl LS07CisJc3RhdGUtPm5leHQgPSB3aW5zdGF0ZS0+bmZhU3RhdGVGcmVlOworCXdpbnN0YXRlLT5u ZmFTdGF0ZUZyZWUgPSBzdGF0ZTsKK30KKworLyoKKyAqIG5mYV9zdGF0ZV9mcmVlX2xpc3QKKyAq CisgKiBSZXR1cm4gYWxsIHN0YXRlcyBpbiBhIGxpc3QgdG8gdGhlIGZyZWUgbGlzdC4KKyAqLwor c3RhdGljIHZvaWQKK25mYV9zdGF0ZV9mcmVlX2xpc3QoV2luZG93QWdnU3RhdGUgKndpbnN0YXRl LCBSUFJORkFTdGF0ZSAqbGlzdCkKK3sKKwlSUFJORkFTdGF0ZSAqbmV4dDsKKworCWZvciAoOyBs aXN0ICE9IE5VTEw7IGxpc3QgPSBuZXh0KQorCXsKKwkJbmV4dCA9IGxpc3QtPm5leHQ7CisJCW5m YV9zdGF0ZV9mcmVlKHdpbnN0YXRlLCBsaXN0KTsKKwl9Cit9CisKKy8qCisgKiBuZmFfc3RhdGVf Y3JlYXRlCisgKgorICogQ3JlYXRlIGEgbmV3IHN0YXRlIHdpdGggZ2l2ZW4gZWxlbUlkeCwgYWx0 UHJpb3JpdHkgYW5kIGNvdW50cy4KKyAqIGlzQWJzb3JiYWJsZSBpcyBjb21wdXRlZCBpbW1lZGlh dGVseTogaW5oZXJpdGVkIEFORCBuZXcgZWxlbWVudCdzIGZsYWcuCisgKiBNb25vdG9uaWMgcHJv cGVydHk6IG9uY2UgZmFsc2UsIHN0YXlzIGZhbHNlIHRocm91Z2ggYWxsIHRyYW5zaXRpb25zLgor ICoKKyAqIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgbGlua2luZyB0aGUgcmV0dXJuZWQgc3Rh dGUuCisgKi8KK3N0YXRpYyBSUFJORkFTdGF0ZSAqCituZmFfc3RhdGVfY3JlYXRlKFdpbmRvd0Fn Z1N0YXRlICp3aW5zdGF0ZSwgaW50MTYgZWxlbUlkeCwgaW50MTYgYWx0UHJpb3JpdHksCisJCQkJ IGludDMyICpjb3VudHMsIGJvb2wgc291cmNlQWJzb3JiYWJsZSkKK3sKKwlSUFJQYXR0ZXJuICpw YXR0ZXJuID0gd2luc3RhdGUtPnJwUGF0dGVybjsKKwlpbnQJCQltYXhEZXB0aCA9IHBhdHRlcm4t Pm1heERlcHRoOworCVJQUk5GQVN0YXRlICpzdGF0ZSA9IG5mYV9zdGF0ZV9hbGxvYyh3aW5zdGF0 ZSk7CisJUlBSUGF0dGVybkVsZW1lbnQgKmVsZW0gPSAmcGF0dGVybi0+ZWxlbWVudHNbZWxlbUlk eF07CisKKwlzdGF0ZS0+ZWxlbUlkeCA9IGVsZW1JZHg7CisJc3RhdGUtPmFsdFByaW9yaXR5ID0g YWx0UHJpb3JpdHk7CisJaWYgKGNvdW50cyAhPSBOVUxMICYmIG1heERlcHRoID4gMCkKKwkJbWVt Y3B5KHN0YXRlLT5jb3VudHMsIGNvdW50cywgc2l6ZW9mKGludDMyKSAqIG1heERlcHRoKTsKKwor CS8qCisJICogQ29tcHV0ZSBpc0Fic29yYmFibGUgaW1tZWRpYXRlbHkgYXQgdHJhbnNpdGlvbiB0 aW1lLiBpc0Fic29yYmFibGUgPQorCSAqIHNvdXJjZUFic29yYmFibGUgJiYgKGVsZW0tPmZsYWdz ICYgQUJTT1JCQUJMRV9CUkFOQ0gpIE1vbm90b25pYzogb25jZQorCSAqIGZhbHNlLCBzdGF5cyBm YWxzZSAoY2FuJ3QgcmUtZW50ZXIgYWJzb3JiYWJsZSByZWdpb24pLgorCSAqLworCXN0YXRlLT5p c0Fic29yYmFibGUgPSBzb3VyY2VBYnNvcmJhYmxlICYmIFJQUkVsZW1Jc0Fic29yYmFibGVCcmFu Y2goZWxlbSk7CisKKwlyZXR1cm4gc3RhdGU7Cit9CisKKy8qCisgKiBuZmFfc3RhdGVzX2VxdWFs CisgKgorICogQ2hlY2sgaWYgdHdvIHN0YXRlcyBhcmUgZXF1aXZhbGVudCAoc2FtZSBlbGVtSWR4 IGFuZCBjb3VudHMpLgorICovCitzdGF0aWMgYm9vbAorbmZhX3N0YXRlc19lcXVhbChXaW5kb3dB Z2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQVN0YXRlICpzMSwgUlBSTkZBU3RhdGUgKnMyKQorewor CVJQUlBhdHRlcm4gKnBhdHRlcm4gPSB3aW5zdGF0ZS0+cnBQYXR0ZXJuOworCVJQUlBhdHRlcm5F bGVtZW50ICplbGVtOworCWludAkJCWNvbXBhcmVEZXB0aDsKKworCWlmIChzMS0+ZWxlbUlkeCAh PSBzMi0+ZWxlbUlkeCkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogQ29tcGFyZSBjb3VudHMgdXAg dG8gY3VycmVudCBlbGVtZW50J3MgZGVwdGggKi8KKwllbGVtID0gJnBhdHRlcm4tPmVsZW1lbnRz W3MxLT5lbGVtSWR4XTsKKwljb21wYXJlRGVwdGggPSBlbGVtLT5kZXB0aCArIDE7IC8qIGRlcHRo IDAgbmVlZHMgMSBjb3VudCwgZXRjLiAqLworCisJaWYgKGNvbXBhcmVEZXB0aCA+IDAgJiYKKwkJ bWVtY21wKHMxLT5jb3VudHMsIHMyLT5jb3VudHMsIHNpemVvZihpbnQzMikgKiBjb21wYXJlRGVw dGgpICE9IDApCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICog bmZhX2FkZF9zdGF0ZV91bmlxdWUKKyAqCisgKiBBZGQgYSBzdGF0ZSB0byBjdHgtPnN0YXRlcyBh dCB0aGUgRU5ELCBvbmx5IGlmIG5vIGR1cGxpY2F0ZSBleGlzdHMuCisgKiBSZXR1cm5zIHRydWUg aWYgc3RhdGUgd2FzIGFkZGVkLCBmYWxzZSBpZiBkdXBsaWNhdGUgZm91bmQgKHN0YXRlIGlzIGZy ZWVkKS4KKyAqIEVhcmxpZXIgc3RhdGVzIGhhdmUgbG93ZXIgYWx0UHJpb3JpdHkgKGxleGljYWwg b3JkZXIpLCBzbyBleGlzdGluZyB3aW5zLgorICovCitzdGF0aWMgYm9vbAorbmZhX2FkZF9zdGF0 ZV91bmlxdWUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsIFJQ Uk5GQVN0YXRlICpzdGF0ZSkKK3sKKwlSUFJORkFTdGF0ZSAqczsKKwlSUFJORkFTdGF0ZSAqdGFp bCA9IE5VTEw7CisKKwkvKiBDaGVjayBmb3IgZHVwbGljYXRlIGFuZCBmaW5kIHRhaWwgKi8KKwlm b3IgKHMgPSBjdHgtPnN0YXRlczsgcyAhPSBOVUxMOyBzID0gcy0+bmV4dCkKKwl7CisJCWlmIChu ZmFfc3RhdGVzX2VxdWFsKHdpbnN0YXRlLCBzLCBzdGF0ZSkpCisJCXsKKwkJCS8qCisJCQkgKiBE dXBsaWNhdGUgZm91bmQgLSBleGlzdGluZyBoYXMgYmV0dGVyIGxleGljYWwgb3JkZXIsIGRpc2Nh cmQKKwkJCSAqIG5ldworCQkJICovCisJCQluZmFfc3RhdGVfZnJlZSh3aW5zdGF0ZSwgc3RhdGUp OworCQkJd2luc3RhdGUtPm5mYVN0YXRlc01lcmdlZCsrOworCQkJcmV0dXJuIGZhbHNlOworCQl9 CisJCXRhaWwgPSBzOworCX0KKworCS8qIE5vIGR1cGxpY2F0ZSwgYWRkIGF0IGVuZCAqLworCXN0 YXRlLT5uZXh0ID0gTlVMTDsKKwlpZiAodGFpbCA9PSBOVUxMKQorCQljdHgtPnN0YXRlcyA9IHN0 YXRlOworCWVsc2UKKwkJdGFpbC0+bmV4dCA9IHN0YXRlOworCisJcmV0dXJuIHRydWU7Cit9CisK Ky8qCisgKiBuZmFfYWRkX21hdGNoZWRfc3RhdGUKKyAqCisgKiBSZWNvcmQgYSBtYXRjaGVkIHN0 YXRlIGZvbGxvd2luZyBTUUwgc3RhbmRhcmQgc2VtYW50aWNzLgorICogTGV4aWNhbCBvcmRlciAo bG93ZXIgYWx0UHJpb3JpdHkpIHdpbnMgZmlyc3QuIEFtb25nIHNhbWUgbGV4aWNhbCBvcmRlciwK KyAqIGxvbmdlciBtYXRjaCB3aW5zIChncmVlZHkpLgorICoKKyAqIEZJWE1FOiBhbHRQcmlvcml0 eSBpcyBhIHNpbmdsZSB2YWx1ZSB0aGF0IG9ubHkgdHJhY2tzIHRoZSBsYXN0IEFMVCBjaG9pY2Uu CisgKiBGb3IgcGF0dGVybnMgd2l0aCByZXBlYXRlZCBvciBuZXN0ZWQgQUxUcyBsaWtlIChBfEIp KywgdGhpcyBjYW5ub3QgY29ycmVjdGx5CisgKiBpbXBsZW1lbnQgU1FMIHN0YW5kYXJkIGxleGlj YWwgb3JkZXIsIHdoaWNoIHJlcXVpcmVzIGNvbXBhcmluZyB0aGUgZnVsbCBwYXRoCisgKiBmcm9t IGxlZnQgdG8gcmlnaHQuIEZvciBleGFtcGxlOgorICogICBQYXR0ZXJuOiAoQSB8IEIpKworICog ICBQYXRoICJBIEIgQSIgdnMgIkIgQSBCIgorICogICBDdXJyZW50OiBjb21wYXJlcyBsYXN0IGNo b2ljZSAoQSB2cyBCKSDihpIgYWx0UHJpb3JpdHkgMTAgdnMgMjAKKyAqICAgQ29ycmVjdDogc2hv dWxkIGNvbXBhcmUgZmlyc3QgY2hvaWNlIChBIDwgQikg4oaSICJBIEIgQSIgd2lucworICoKKyAq IEEgY2xhc3NpZmllciBzdHJ1Y3R1cmUgdHJhY2tpbmcgdGhlIGVudGlyZSBBTFQgcGF0aCBpcyBy ZXF1aXJlZCBmb3IgY29ycmVjdAorICogaW1wbGVtZW50YXRpb24uIFdpdGhvdXQgaXQsIHBhdHRl cm5zIHdpdGggcmVwZWF0ZWQgb3IgbmVzdGVkIEFMVHMgd2lsbAorICogcHJvZHVjZSBpbmNvcnJl Y3QgbWF0Y2ggc2VsZWN0aW9uLgorICovCitzdGF0aWMgdm9pZAorbmZhX2FkZF9tYXRjaGVkX3N0 YXRlKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAorCQkJCQkg IFJQUk5GQVN0YXRlICpzdGF0ZSwgaW50NjQgbWF0Y2hFbmRSb3cpCit7CisJYm9vbAkJc2hvdWxk VXBkYXRlID0gZmFsc2U7CisKKwlpZiAoY3R4LT5tYXRjaGVkU3RhdGUgPT0gTlVMTCkKKwkJc2hv dWxkVXBkYXRlID0gdHJ1ZTsKKwllbHNlIGlmIChzdGF0ZS0+YWx0UHJpb3JpdHkgPCBjdHgtPm1h dGNoZWRTdGF0ZS0+YWx0UHJpb3JpdHkpCisJCXNob3VsZFVwZGF0ZSA9IHRydWU7CS8qIEJldHRl ciBsZXhpY2FsIG9yZGVyIHdpbnMgKi8KKwllbHNlIGlmIChzdGF0ZS0+YWx0UHJpb3JpdHkgPT0g Y3R4LT5tYXRjaGVkU3RhdGUtPmFsdFByaW9yaXR5ICYmCisJCQkgbWF0Y2hFbmRSb3cgPiBjdHgt Pm1hdGNoRW5kUm93KQorCQlzaG91bGRVcGRhdGUgPSB0cnVlOwkvKiBTYW1lIGxleGljYWwgb3Jk ZXIsIGxvbmdlciB3aW5zICovCisKKwlpZiAoc2hvdWxkVXBkYXRlKQorCXsKKwkJLyogRnJlZSBv bGQgbWF0Y2hlZFN0YXRlIGlmIGV4aXN0cyAqLworCQlpZiAoY3R4LT5tYXRjaGVkU3RhdGUgIT0g TlVMTCkKKwkJCW5mYV9zdGF0ZV9mcmVlKHdpbnN0YXRlLCBjdHgtPm1hdGNoZWRTdGF0ZSk7CisK KwkJLyogVGFrZSBvd25lcnNoaXAgb2YgdGhlIG5ldyBzdGF0ZSAqLworCQljdHgtPm1hdGNoZWRT dGF0ZSA9IHN0YXRlOworCQlzdGF0ZS0+bmV4dCA9IE5VTEw7CisJCWN0eC0+bWF0Y2hFbmRSb3cg PSBtYXRjaEVuZFJvdzsKKworCQkvKi0tLS0tLS0tLS0KKwkJICogU0tJUCBQQVNUIExBU1QgUk9X OiBlYWdlcmx5IHBydW5lIGNvbnRleHRzIHdpdGhpbiBtYXRjaCByYW5nZS4KKwkJICoKKwkJICog VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbmV2ZXIgYSBGSU4gc3RhdGUgaXMgcmVhY2hlZCwg aW5jbHVkaW5nCisJCSAqIGR1cmluZyBncmVlZHkgbWF0Y2hpbmcgd2hlbiBpbnRlcm1lZGlhdGUg KHNob3J0ZXIpIG1hdGNoZXMgYXJlCisJCSAqIGZvdW5kLiBFYWNoIHRpbWUgd2UgdXBkYXRlIG1h dGNoRW5kUm93ICh3aGV0aGVyIGV4dGVuZGluZyBhIGdyZWVkeQorCQkgKiBtYXRjaCBvciBmaW5k aW5nIGEgbmV3IG1hdGNoKSwgd2UgY2FuIHBydW5lIHBlbmRpbmcgY29udGV4dHMgdGhhdAorCQkg KiBzdGFydGVkIHdpdGhpbiB0aGUgY3VycmVudCBtYXRjaCByYW5nZS4KKwkJICoKKwkJICogU0tJ UCBQQVNUIExBU1QgUk9XIHVzZXMgbGV4aWNhbCBvcmRlciAobWF0Y2hTdGFydFJvdykuIFRoZXJl Zm9yZSwKKwkJICogYW55IHBlbmRpbmcgY29udGV4dCB0aGF0IHN0YXJ0ZWQgYXQgb3IgYmVmb3Jl IG1hdGNoRW5kUm93IGNhbiBuZXZlcgorCQkgKiBwcm9kdWNlIGEgdmFsaWQgb3V0cHV0IHJvdyAt IGl0IHdvdWxkIGJlIHNraXBwZWQgYW55d2F5IHBlciBTUUwKKwkJICogc3RhbmRhcmQuCisJCSAq CisJCSAqIEV4YW1wbGUgKGdyZWVkeSBtYXRjaGluZyBpbiBwcm9ncmVzcyk6CisJCSAqICAgUGF0 dGVybjogU1RBUlQgVVArCisJCSAqICAgUm93czogMSAyIDMgNCA1CisJCSAqICAgQ29udGV4dCBB IHN0YXJ0cyBhdCByb3cgMToKKwkJICogICAgIC0gTWF0Y2hlcyBTVEFSVCBVUCAocm93cyAxLTIp IOKGkiBtYXRjaEVuZFJvdz0yIOKGkiBwcnVuZSBDb250ZXh0IEIocm93IDIpCisJCSAqICAgICAt IE1hdGNoZXMgU1RBUlQgVVAgVVAgKHJvd3MgMS0zKSDihpIgbWF0Y2hFbmRSb3c9MyDihpIgcHJ1 bmUgQ29udGV4dCBDKHJvdyAzKQorCQkgKiAgICAgLSBDb250aW51ZXMgZ3JlZWR5IGV4dGVuc2lv biB3aGlsZSBwcnVuaW5nIGluY3JlbWVudGFsbHkKKwkJICotLS0tLS0tLS0tCisJCSAqLworCQlp ZiAod2luc3RhdGUtPnJwU2tpcFRvID09IFNUX1BBU1RfTEFTVF9ST1cpCisJCXsKKwkJCVJQUk5G QUNvbnRleHQgKm5leHRDdHg7CisJCQlpbnQ2NAkJc2tpcHBlZExlbjsKKworCQkJd2hpbGUgKGN0 eC0+bmV4dCAhPSBOVUxMICYmCisJCQkJICAgY3R4LT5uZXh0LT5tYXRjaFN0YXJ0Um93IDw9IG1h dGNoRW5kUm93KQorCQkJeworCQkJCW5leHRDdHggPSBjdHgtPm5leHQ7CisJCQkJY3R4LT5uZXh0 ID0gY3R4LT5uZXh0LT5uZXh0OworCisJCQkJQXNzZXJ0KG5leHRDdHgtPmxhc3RQcm9jZXNzZWRS b3cgPj0gbmV4dEN0eC0+bWF0Y2hTdGFydFJvdyk7CisJCQkJc2tpcHBlZExlbiA9IG5leHRDdHgt Pmxhc3RQcm9jZXNzZWRSb3cgLSBuZXh0Q3R4LT5tYXRjaFN0YXJ0Um93ICsgMTsKKwkJCQluZmFf cmVjb3JkX2NvbnRleHRfc2tpcHBlZCh3aW5zdGF0ZSwgc2tpcHBlZExlbik7CisKKwkJCQluZmFf Y29udGV4dF9mcmVlKHdpbnN0YXRlLCBuZXh0Q3R4KTsKKwkJCX0KKwkJCWlmIChjdHgtPm5leHQg PT0gTlVMTCkKKwkJCQl3aW5zdGF0ZS0+bmZhQ29udGV4dFRhaWwgPSBjdHg7CisJCX0KKwl9CisJ ZWxzZQorCXsKKwkJLyogVGhpcyBzdGF0ZSBkaWRuJ3Qgd2luLCBmcmVlIGl0ICovCisJCW5mYV9z dGF0ZV9mcmVlKHdpbnN0YXRlLCBzdGF0ZSk7CisJfQorfQorCisvKgorICogbmZhX2NvbnRleHRf YWxsb2MKKyAqCisgKiBBbGxvY2F0ZSBhbiBORkEgY29udGV4dCwgcmV1c2luZyBmcm9tIGZyZWUg bGlzdCBpZiBhdmFpbGFibGUuCisgKi8KK3N0YXRpYyBSUFJORkFDb250ZXh0ICoKK25mYV9jb250 ZXh0X2FsbG9jKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSkKK3sKKwlSUFJORkFDb250ZXh0ICpj dHg7CisKKwlpZiAod2luc3RhdGUtPm5mYUNvbnRleHRGcmVlICE9IE5VTEwpCisJeworCQljdHgg PSB3aW5zdGF0ZS0+bmZhQ29udGV4dEZyZWU7CisJCXdpbnN0YXRlLT5uZmFDb250ZXh0RnJlZSA9 IGN0eC0+bmV4dDsKKwl9CisJZWxzZQorCXsKKwkJLyogQWxsb2NhdGUgaW4gcGFydGl0aW9uIGNv bnRleHQgZm9yIHByb3BlciBsaWZldGltZSAqLworCQljdHggPSBNZW1vcnlDb250ZXh0QWxsb2Mo d2luc3RhdGUtPnBhcnRjb250ZXh0LCBzaXplb2YoUlBSTkZBQ29udGV4dCkpOworCX0KKworCWN0 eC0+bmV4dCA9IE5VTEw7CisJY3R4LT5wcmV2ID0gTlVMTDsKKwljdHgtPnN0YXRlcyA9IE5VTEw7 CisJY3R4LT5tYXRjaFN0YXJ0Um93ID0gLTE7CisJY3R4LT5tYXRjaEVuZFJvdyA9IC0xOworCWN0 eC0+bGFzdFByb2Nlc3NlZFJvdyA9IC0xOworCWN0eC0+bWF0Y2hlZFN0YXRlID0gTlVMTDsKKwkv KiBJbml0aWFsaXplIHR3by1mbGFnIGFic29ycHRpb24gZGVzaWduIGJhc2VkIG9uIHBhdHRlcm4g Ki8KKwljdHgtPmhhc0Fic29yYmFibGVTdGF0ZSA9ICh3aW5zdGF0ZS0+cnBQYXR0ZXJuICE9IE5V TEwgJiYKKwkJCQkJCQkgICB3aW5zdGF0ZS0+cnBQYXR0ZXJuLT5pc0Fic29yYmFibGUpOworCWN0 eC0+YWxsU3RhdGVzQWJzb3JiYWJsZSA9ICh3aW5zdGF0ZS0+cnBQYXR0ZXJuICE9IE5VTEwgJiYK KwkJCQkJCQkJd2luc3RhdGUtPnJwUGF0dGVybi0+aXNBYnNvcmJhYmxlKTsKKworCS8qIFVwZGF0 ZSBzdGF0aXN0aWNzICovCisJd2luc3RhdGUtPm5mYUNvbnRleHRzQWN0aXZlKys7CisJd2luc3Rh dGUtPm5mYUNvbnRleHRzVG90YWxDcmVhdGVkKys7CisJaWYgKHdpbnN0YXRlLT5uZmFDb250ZXh0 c0FjdGl2ZSA+IHdpbnN0YXRlLT5uZmFDb250ZXh0c01heCkKKwkJd2luc3RhdGUtPm5mYUNvbnRl eHRzTWF4ID0gd2luc3RhdGUtPm5mYUNvbnRleHRzQWN0aXZlOworCisJcmV0dXJuIGN0eDsKK30K KworLyoKKyAqIG5mYV91bmxpbmtfY29udGV4dAorICoKKyAqIFJlbW92ZSBhIGNvbnRleHQgZnJv bSB0aGUgZG91Ymx5LWxpbmtlZCBhY3RpdmUgY29udGV4dCBsaXN0LgorICogVXBkYXRlcyBoZWFk IChuZmFDb250ZXh0KSBhbmQgdGFpbCAobmZhQ29udGV4dFRhaWwpIGFzIG5lZWRlZC4KKyAqLwor c3RhdGljIHZvaWQKK25mYV91bmxpbmtfY29udGV4dChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUs IFJQUk5GQUNvbnRleHQgKmN0eCkKK3sKKwlpZiAoY3R4LT5wcmV2ICE9IE5VTEwpCisJCWN0eC0+ cHJldi0+bmV4dCA9IGN0eC0+bmV4dDsKKwllbHNlCisJCXdpbnN0YXRlLT5uZmFDb250ZXh0ID0g Y3R4LT5uZXh0OwkvKiB3YXMgaGVhZCAqLworCisJaWYgKGN0eC0+bmV4dCAhPSBOVUxMKQorCQlj dHgtPm5leHQtPnByZXYgPSBjdHgtPnByZXY7CisJZWxzZQorCQl3aW5zdGF0ZS0+bmZhQ29udGV4 dFRhaWwgPSBjdHgtPnByZXY7CS8qIHdhcyB0YWlsICovCisKKwljdHgtPm5leHQgPSBOVUxMOwor CWN0eC0+cHJldiA9IE5VTEw7Cit9CisKKy8qCisgKiBuZmFfY29udGV4dF9mcmVlCisgKgorICog VW5saW5rIGNvbnRleHQgZnJvbSBhY3RpdmUgbGlzdCBhbmQgcmV0dXJuIGl0IHRvIGZyZWUgbGlz dC4KKyAqIEFsc28gZnJlZXMgYW55IHN0YXRlcyBpbiB0aGUgY29udGV4dC4KKyAqLworc3RhdGlj IHZvaWQKK25mYV9jb250ZXh0X2ZyZWUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFD b250ZXh0ICpjdHgpCit7CisJLyogVW5saW5rIGZyb20gYWN0aXZlIGxpc3QgZmlyc3QgKi8KKwlu ZmFfdW5saW5rX2NvbnRleHQod2luc3RhdGUsIGN0eCk7CisKKwkvKiBVcGRhdGUgc3RhdGlzdGlj cyAqLworCXdpbnN0YXRlLT5uZmFDb250ZXh0c0FjdGl2ZS0tOworCisJaWYgKGN0eC0+c3RhdGVz ICE9IE5VTEwpCisJCW5mYV9zdGF0ZV9mcmVlX2xpc3Qod2luc3RhdGUsIGN0eC0+c3RhdGVzKTsK KwlpZiAoY3R4LT5tYXRjaGVkU3RhdGUgIT0gTlVMTCkKKwkJbmZhX3N0YXRlX2ZyZWUod2luc3Rh dGUsIGN0eC0+bWF0Y2hlZFN0YXRlKTsKKworCWN0eC0+c3RhdGVzID0gTlVMTDsKKwljdHgtPm1h dGNoZWRTdGF0ZSA9IE5VTEw7CisJY3R4LT5uZXh0ID0gd2luc3RhdGUtPm5mYUNvbnRleHRGcmVl OworCXdpbnN0YXRlLT5uZmFDb250ZXh0RnJlZSA9IGN0eDsKK30KKworLyoKKyAqIG5mYV9zdGFy dF9jb250ZXh0CisgKgorICogU3RhcnQgYSBuZXcgbWF0Y2ggY29udGV4dCBhdCBnaXZlbiBwb3Np dGlvbi4KKyAqIEluaXRpYWxpemVzIGNvbnRleHQsIHN0YXRlIGFic29ycHRpb24gZmxhZ3MsIGFu ZCBwZXJmb3JtcyBpbml0aWFsIGFkdmFuY2UKKyAqIHRvIGV4cGFuZCBlcHNpbG9uIHRyYW5zaXRp b25zIChBTFQgYnJhbmNoZXMsIG9wdGlvbmFsIGVsZW1lbnRzKS4KKyAqIEFkZHMgY29udGV4dCB0 byB0aGUgdGFpbCBvZiB3aW5zdGF0ZS0+bmZhQ29udGV4dCBsaXN0LgorICovCitzdGF0aWMgUlBS TkZBQ29udGV4dCAqCituZmFfc3RhcnRfY29udGV4dChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUs IGludDY0IHN0YXJ0UG9zKQoreworCVJQUk5GQUNvbnRleHQgKmN0eDsKKwlSUFJQYXR0ZXJuICpw YXR0ZXJuID0gd2luc3RhdGUtPnJwUGF0dGVybjsKKworCWN0eCA9IG5mYV9jb250ZXh0X2FsbG9j KHdpbnN0YXRlKTsKKwljdHgtPm1hdGNoU3RhcnRSb3cgPSBzdGFydFBvczsKKwljdHgtPnN0YXRl cyA9IG5mYV9zdGF0ZV9hbGxvYyh3aW5zdGF0ZSk7CS8qIGluaXRpYWwgc3RhdGUgYXQgZWxlbSAw ICovCisKKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICogSW5pdGlhbGl6ZSB0d28t ZmxhZyBhYnNvcnB0aW9uIGRlc2lnbjoKKwkgKiAgIGhhc0Fic29yYmFibGVTdGF0ZTogY2FuIHRo aXMgY29udGV4dCBhYnNvcmIgb3RoZXJzPyAoPj0gMSBhYnNvcmJhYmxlIHN0YXRlKQorCSAqICAg YWxsU3RhdGVzQWJzb3JiYWJsZTogY2FuIHRoaXMgY29udGV4dCBiZSBhYnNvcmJlZD8gKEFMTCBz dGF0ZXMgYWJzb3JiYWJsZSkKKwkgKiBCb3RoIGluaXRpYWxpemVkIGZyb20gcGF0dGVybi0+aXNB YnNvcmJhYmxlIGF0IGNvbnRleHQgc3RhcnQuCisJICovCisJY3R4LT5oYXNBYnNvcmJhYmxlU3Rh dGUgPSAocGF0dGVybiAhPSBOVUxMICYmIHBhdHRlcm4tPmlzQWJzb3JiYWJsZSk7CisJY3R4LT5h bGxTdGF0ZXNBYnNvcmJhYmxlID0gKHBhdHRlcm4gIT0gTlVMTCAmJiBwYXR0ZXJuLT5pc0Fic29y YmFibGUpOworCisJaWYgKGN0eC0+c3RhdGVzICE9IE5VTEwgJiYgcGF0dGVybiAhPSBOVUxMICYm IHBhdHRlcm4tPm51bUVsZW1lbnRzID4gMCkKKwl7CisJCVJQUlBhdHRlcm5FbGVtZW50ICplbGVt ID0gJnBhdHRlcm4tPmVsZW1lbnRzWzBdOworCisJCS8qCisJCSAqIEluaXRpYWwgc3RhdGUgYXQg ZWxlbWVudCAwLiBDaGVjayBpZiBlbGVtZW50IDAgaXMgaW4gYWJzb3JiYWJsZQorCQkgKiBicmFu Y2guCisJCSAqLworCQlpZiAoUlBSRWxlbUlzQWJzb3JiYWJsZUJyYW5jaChlbGVtKSkKKwkJewor CQkJLyogRWxlbWVudCAwIGlzIGluIGFic29yYmFibGUgYnJhbmNoIC0gZmxhZ3Mgc3RheSB0cnVl ICovCisJCQljdHgtPnN0YXRlcy0+aXNBYnNvcmJhYmxlID0gdHJ1ZTsKKwkJfQorCQllbHNlCisJ CXsKKwkJCS8qIEVsZW1lbnQgMCBpcyBOT1QgaW4gYWJzb3JiYWJsZSBicmFuY2ggLSB0dXJuIGZs YWdzIE9GRiAqLworCQkJY3R4LT5oYXNBYnNvcmJhYmxlU3RhdGUgPSBmYWxzZTsKKwkJCWN0eC0+ YWxsU3RhdGVzQWJzb3JiYWJsZSA9IGZhbHNlOworCQkJY3R4LT5zdGF0ZXMtPmlzQWJzb3JiYWJs ZSA9IGZhbHNlOworCQl9CisJfQorCisJLyogQWRkIHRvIHRhaWwgb2YgYWN0aXZlIGNvbnRleHQg bGlzdCAoZG91Ymx5LWxpbmtlZCwgb2xkZXN0LWZpcnN0KSAqLworCWN0eC0+cHJldiA9IHdpbnN0 YXRlLT5uZmFDb250ZXh0VGFpbDsKKwljdHgtPm5leHQgPSBOVUxMOworCWlmICh3aW5zdGF0ZS0+ bmZhQ29udGV4dFRhaWwgIT0gTlVMTCkKKwkJd2luc3RhdGUtPm5mYUNvbnRleHRUYWlsLT5uZXh0 ID0gY3R4OworCWVsc2UKKwkJd2luc3RhdGUtPm5mYUNvbnRleHQgPSBjdHg7IC8qIGZpcnN0IGNv bnRleHQgYmVjb21lcyBoZWFkICovCisJd2luc3RhdGUtPm5mYUNvbnRleHRUYWlsID0gY3R4Owor CisJLyoKKwkgKiBJbml0aWFsIGFkdmFuY2UgKGRpdmVyZ2VuY2UpOiBleHBhbmQgQUxUIGJyYW5j aGVzIGFuZCBjcmVhdGUgZXhpdAorCSAqIHN0YXRlcyBmb3IgVkFSIGVsZW1lbnRzIHdpdGggbWlu PTAuIFRoaXMgcHJlcGFyZXMgdGhlIGNvbnRleHQgZm9yIHRoZQorCSAqIGZpcnN0IHJvdydzIG1h dGNoIHBoYXNlLgorCSAqCisJICogUGFzcyBpbml0aWFsQWR2YW5jZT10cnVlIHRvIHByZXZlbnQg cmVjb3JkaW5nIHplcm8tbGVuZ3RoIG1hdGNoZXMgd2hlbgorCSAqIG9wdGlvbmFsIHBhdHRlcm5z IGNhbiBza2lwIGFsbCBWQVJzIHRvIHJlYWNoIEZJTiBpbW1lZGlhdGVseS4KKwkgKi8KKwluZmFf YWR2YW5jZSh3aW5zdGF0ZSwgY3R4LCBzdGFydFBvcywgdHJ1ZSk7CisKKwlyZXR1cm4gY3R4Owor fQorCisvKgorICogbmZhX2dldF9oZWFkX2NvbnRleHQKKyAqCisgKiBSZXR1cm4gdGhlIGhlYWQg Y29udGV4dCBpZiBpdHMgc3RhcnQgcG9zaXRpb24gbWF0Y2hlcyBwb3MuCisgKiBSZXR1cm5zIE5V TEwgaWYgbm8gY29udGV4dCBleGlzdHMgb3IgaGVhZCBkb2Vzbid0IG1hdGNoIHBvcy4KKyAqLwor c3RhdGljIFJQUk5GQUNvbnRleHQgKgorbmZhX2dldF9oZWFkX2NvbnRleHQoV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlLCBpbnQ2NCBwb3MpCit7CisJUlBSTkZBQ29udGV4dCAqY3R4ID0gd2luc3Rh dGUtPm5mYUNvbnRleHQ7CisKKwkvKgorCSAqIENvbnRleHRzIGFyZSBzb3J0ZWQgYnkgbWF0Y2hT dGFydFJvdyBhc2NlbmRpbmcuICBJZiB0aGUgaGVhZCBjb250ZXh0CisJICogZG9lc24ndCBtYXRj aCBwb3MsIG5vIGNvbnRleHQgZXhpc3RzIGZvciB0aGlzIHBvc2l0aW9uLgorCSAqLworCWlmIChj dHggPT0gTlVMTCB8fCBjdHgtPm1hdGNoU3RhcnRSb3cgIT0gcG9zKQorCQlyZXR1cm4gTlVMTDsK KworCXJldHVybiBjdHg7Cit9CisKKy8qCisgKiBuZmFfdXBkYXRlX2xlbmd0aF9zdGF0cworICoK KyAqIEhlbHBlciBmdW5jdGlvbiB0byB1cGRhdGUgbWluL21heC90b3RhbCBsZW5ndGggc3RhdGlz dGljcy4KKyAqIENhbGxlZCB3aGVuIHRyYWNraW5nIG1hdGNoL21pc21hdGNoL2Fic29yYmVkL3Nr aXBwZWQgbGVuZ3Rocy4KKyAqLworc3RhdGljIHZvaWQKK25mYV91cGRhdGVfbGVuZ3RoX3N0YXRz KGludDY0IGNvdW50LCBORkFMZW5ndGhTdGF0cyAqc3RhdHMsIGludDY0IG5ld0xlbikKK3sKKwlp ZiAoY291bnQgPT0gMSkKKwl7CisJCXN0YXRzLT5taW4gPSBuZXdMZW47CisJCXN0YXRzLT5tYXgg PSBuZXdMZW47CisJfQorCWVsc2UKKwl7CisJCWlmIChuZXdMZW4gPCBzdGF0cy0+bWluKQorCQkJ c3RhdHMtPm1pbiA9IG5ld0xlbjsKKwkJaWYgKG5ld0xlbiA+IHN0YXRzLT5tYXgpCisJCQlzdGF0 cy0+bWF4ID0gbmV3TGVuOworCX0KKwlzdGF0cy0+dG90YWwgKz0gbmV3TGVuOworfQorCisvKgor ICogbmZhX3JlY29yZF9jb250ZXh0X3N1Y2Nlc3MKKyAqCisgKiBSZWNvcmQgYSBzdWNjZXNzZnVs IGNvbnRleHQgaW4gc3RhdGlzdGljcy4KKyAqLworc3RhdGljIHZvaWQKK25mYV9yZWNvcmRfY29u dGV4dF9zdWNjZXNzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgbWF0Y2hMZW4pCit7 CisJd2luc3RhdGUtPm5mYU1hdGNoZXNTdWNjZWVkZWQrKzsKKwluZmFfdXBkYXRlX2xlbmd0aF9z dGF0cyh3aW5zdGF0ZS0+bmZhTWF0Y2hlc1N1Y2NlZWRlZCwKKwkJCQkJCQkmd2luc3RhdGUtPm5m YU1hdGNoTGVuLAorCQkJCQkJCW1hdGNoTGVuKTsKK30KKworLyoKKyAqIG5mYV9yZWNvcmRfY29u dGV4dF9mYWlsdXJlCisgKgorICogUmVjb3JkIGEgZmFpbGVkIGNvbnRleHQgaW4gc3RhdGlzdGlj cy4KKyAqIElmIGZhaWxlZExlbiA9PSAxLCBjb3VudCBhcyBwcnVuZWQgKGZhaWxlZCBvbiBmaXJz dCByb3cpLgorICogSWYgZmFpbGVkTGVuID4gMSwgY291bnQgYXMgbWlzbWF0Y2hlZCBhbmQgdXBk YXRlIGxlbmd0aCBzdGF0cy4KKyAqLworc3RhdGljIHZvaWQKK25mYV9yZWNvcmRfY29udGV4dF9m YWlsdXJlKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgZmFpbGVkTGVuKQoreworCWlm IChmYWlsZWRMZW4gPT0gMSkKKwl7CisJCXdpbnN0YXRlLT5uZmFDb250ZXh0c1BydW5lZCsrOwor CX0KKwllbHNlCisJeworCQl3aW5zdGF0ZS0+bmZhTWF0Y2hlc0ZhaWxlZCsrOworCQluZmFfdXBk YXRlX2xlbmd0aF9zdGF0cyh3aW5zdGF0ZS0+bmZhTWF0Y2hlc0ZhaWxlZCwKKwkJCQkJCQkJJndp bnN0YXRlLT5uZmFGYWlsTGVuLAorCQkJCQkJCQlmYWlsZWRMZW4pOworCX0KK30KKworLyoKKyAq IG5mYV9yZWNvcmRfY29udGV4dF9za2lwcGVkCisgKgorICogUmVjb3JkIGEgc2tpcHBlZCBjb250 ZXh0IGluIHN0YXRpc3RpY3MuCisgKi8KK3N0YXRpYyB2b2lkCituZmFfcmVjb3JkX2NvbnRleHRf c2tpcHBlZChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDY0IHNraXBwZWRMZW4pCit7CisJ d2luc3RhdGUtPm5mYUNvbnRleHRzU2tpcHBlZCsrOworCW5mYV91cGRhdGVfbGVuZ3RoX3N0YXRz KHdpbnN0YXRlLT5uZmFDb250ZXh0c1NraXBwZWQsCisJCQkJCQkJJndpbnN0YXRlLT5uZmFTa2lw cGVkTGVuLAorCQkJCQkJCXNraXBwZWRMZW4pOworfQorCisvKgorICogbmZhX3JlY29yZF9jb250 ZXh0X2Fic29yYmVkCisgKgorICogUmVjb3JkIGFuIGFic29yYmVkIGNvbnRleHQgaW4gc3RhdGlz dGljcy4KKyAqLworc3RhdGljIHZvaWQKK25mYV9yZWNvcmRfY29udGV4dF9hYnNvcmJlZChXaW5k b3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDY0IGFic29yYmVkTGVuKQoreworCXdpbnN0YXRlLT5u ZmFDb250ZXh0c0Fic29yYmVkKys7CisJbmZhX3VwZGF0ZV9sZW5ndGhfc3RhdHMod2luc3RhdGUt Pm5mYUNvbnRleHRzQWJzb3JiZWQsCisJCQkJCQkJJndpbnN0YXRlLT5uZmFBYnNvcmJlZExlbiwK KwkJCQkJCQlhYnNvcmJlZExlbik7Cit9CisKKy8qCisgKiBuZmFfZXZhbHVhdGVfcm93CisgKgor ICogRXZhbHVhdGUgYWxsIERFRklORSB2YXJpYWJsZXMgZm9yIGN1cnJlbnQgcm93LgorICogUmV0 dXJucyB0cnVlIGlmIHRoZSByb3cgZXhpc3RzLCBmYWxzZSBpZiBvdXQgb2YgcGFydGl0aW9uLgor ICogSWYgcm93IGV4aXN0cywgZmlsbHMgdmFyTWF0Y2hlZCBhcnJheS4KKyAqIHZhck1hdGNoZWRb aV0gPSB0cnVlIGlmIHZhcmlhYmxlIGkgbWF0Y2hlZCBhdCBjdXJyZW50IHJvdy4KKyAqLworc3Rh dGljIGJvb2wKK25mYV9ldmFsdWF0ZV9yb3coV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9z LCBib29sICp2YXJNYXRjaGVkKQoreworCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSA9IHdpbm9i ai0+d2luc3RhdGU7CisJRXhwckNvbnRleHQgKmVjb250ZXh0ID0gd2luc3RhdGUtPnNzLnBzLnBz X0V4cHJDb250ZXh0OworCWludAkJCW51bURlZmluZVZhcnMgPSBsaXN0X2xlbmd0aCh3aW5zdGF0 ZS0+ZGVmaW5lVmFyaWFibGVMaXN0KTsKKwlMaXN0Q2VsbCAgICpsYzsKKwlpbnQJCQl2YXJJZHgg PSAwOworCVR1cGxlVGFibGVTbG90ICpzbG90OworCisJLyoKKwkgKiBTZXQgdXAgc2xvdHMgZm9y IGN1cnJlbnQsIHByZXZpb3VzLCBhbmQgbmV4dCByb3dzLiBXZSBkb24ndCBjYWxsCisJICogZ2V0 X3Nsb3RzKCkgaGVyZSB0byBhdm9pZCByZWN1cnNpb24gdGhyb3VnaCByb3dfaXNfaW5fZnJhbWUg LT4KKwkgKiB1cGRhdGVfcmVkdWNlZF9mcmFtZSAtPiBuZmFfcHJvY2Vzc19yb3cuCisJICovCisK KwkvKiBDdXJyZW50IHJvdyAtPiBlY3h0X291dGVydHVwbGUgKi8KKwlzbG90ID0gd2luc3RhdGUt PnRlbXBfc2xvdF8xOworCWlmICghd2luZG93X2dldHR1cGxlc2xvdCh3aW5vYmosIHBvcywgc2xv dCkpCisJCXJldHVybiBmYWxzZTsJCQkvKiBObyByb3cgZXhpc3RzICovCisJZWNvbnRleHQtPmVj eHRfb3V0ZXJ0dXBsZSA9IHNsb3Q7CisKKwkvKiBQcmV2aW91cyByb3cgLT4gZWN4dF9zY2FudHVw bGUgKGZvciBQUkVWKSAqLworCWlmIChwb3MgPiAwKQorCXsKKwkJc2xvdCA9IHdpbnN0YXRlLT5w cmV2X3Nsb3Q7CisJCWlmICghd2luZG93X2dldHR1cGxlc2xvdCh3aW5vYmosIHBvcyAtIDEsIHNs b3QpKQorCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gd2luc3RhdGUtPm51bGxfc2xvdDsK KwkJZWxzZQorCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2xvdDsKKwl9CisJZWxzZQor CQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSB3aW5zdGF0ZS0+bnVsbF9zbG90OworCisJLyog TmV4dCByb3cgLT4gZWN4dF9pbm5lcnR1cGxlIChmb3IgTkVYVCkgKi8KKwlzbG90ID0gd2luc3Rh dGUtPm5leHRfc2xvdDsKKwlpZiAoIXdpbmRvd19nZXR0dXBsZXNsb3Qod2lub2JqLCBwb3MgKyAx LCBzbG90KSkKKwkJZWNvbnRleHQtPmVjeHRfaW5uZXJ0dXBsZSA9IHdpbnN0YXRlLT5udWxsX3Ns b3Q7CisJZWxzZQorCQllY29udGV4dC0+ZWN4dF9pbm5lcnR1cGxlID0gc2xvdDsKKworCWZvcmVh Y2gobGMsIHdpbnN0YXRlLT5kZWZpbmVDbGF1c2VMaXN0KQorCXsKKwkJRXhwclN0YXRlICAqZXhw clN0YXRlID0gKEV4cHJTdGF0ZSAqKSBsZmlyc3QobGMpOworCQlEYXR1bQkJcmVzdWx0OworCQli b29sCQlpc251bGw7CisKKwkJLyogRXZhbHVhdGUgREVGSU5FIGV4cHJlc3Npb24gKi8KKwkJcmVz dWx0ID0gRXhlY0V2YWxFeHByKGV4cHJTdGF0ZSwgZWNvbnRleHQsICZpc251bGwpOworCisJCXZh ck1hdGNoZWRbdmFySWR4XSA9ICghaXNudWxsICYmIERhdHVtR2V0Qm9vbChyZXN1bHQpKTsKKwor CQl2YXJJZHgrKzsKKwkJaWYgKHZhcklkeCA+PSBudW1EZWZpbmVWYXJzKQorCQkJYnJlYWs7CisJ fQorCisJcmV0dXJuIHRydWU7CQkJCS8qIFJvdyBleGlzdHMgKi8KK30KKworLyoKKyAqIG5mYV9j bGVhbnVwX2RlYWRfY29udGV4dHMKKyAqCisgKiBSZW1vdmUgY29udGV4dHMgdGhhdCBoYXZlIGZh aWxlZCAobm8gYWN0aXZlIHN0YXRlcyBhbmQgbm8gbWF0Y2gpLgorICogVGhlc2UgYXJlIGNvbnRl eHRzIHRoYXQgZmFpbGVkIGR1cmluZyBub3JtYWwgcHJvY2Vzc2luZyBhbmQgc2hvdWxkIGJlCisg KiBjb3VudGVkIGFzIHBydW5lZCAoaWYgbGVuZ3RoIDEpIG9yIG1pc21hdGNoZWQgKGlmIGxlbmd0 aCA+IDEpLgorICovCitzdGF0aWMgdm9pZAorbmZhX2NsZWFudXBfZGVhZF9jb250ZXh0cyhXaW5k b3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmV4Y2x1ZGVDdHgpCit7CisJUlBS TkZBQ29udGV4dCAqY3R4OworCVJQUk5GQUNvbnRleHQgKm5leHQ7CisKKwlmb3IgKGN0eCA9IHdp bnN0YXRlLT5uZmFDb250ZXh0OyBjdHggIT0gTlVMTDsgY3R4ID0gbmV4dCkKKwl7CisJCW5leHQg PSBjdHgtPm5leHQ7CisKKwkJLyogU2tpcCB0aGUgdGFyZ2V0IGNvbnRleHQgYW5kIGNvbnRleHRz IHN0aWxsIHByb2Nlc3NpbmcgKi8KKwkJaWYgKGN0eCA9PSBleGNsdWRlQ3R4IHx8IGN0eC0+c3Rh dGVzICE9IE5VTEwpCisJCQljb250aW51ZTsKKworCQkvKiBTa2lwIHN1Y2Nlc3NmdWxseSBtYXRj aGVkIGNvbnRleHRzICh3aWxsIGJlIGhhbmRsZWQgYnkgU0tJUCBsb2dpYykgKi8KKwkJaWYgKGN0 eC0+bWF0Y2hFbmRSb3cgPj0gY3R4LT5tYXRjaFN0YXJ0Um93KQorCQkJY29udGludWU7CisKKwkJ LyoKKwkJICogVGhpcyBpcyBhIGZhaWxlZCBjb250ZXh0IC0gY291bnQgYW5kIHJlbW92ZSBpdC4g T25seSBjb3VudCBpZiBpdAorCQkgKiBhY3R1YWxseSBwcm9jZXNzZWQgaXRzIHN0YXJ0IHJvdy4g Q29udGV4dHMgY3JlYXRlZCBmb3IKKwkJICogYmV5b25kLXBhcnRpdGlvbiByb3dzIGFyZSBzaWxl bnRseSByZW1vdmVkLgorCQkgKi8KKwkJaWYgKGN0eC0+bGFzdFByb2Nlc3NlZFJvdyA+PSBjdHgt Pm1hdGNoU3RhcnRSb3cpCisJCXsKKwkJCWludDY0CQlmYWlsZWRMZW4gPSBjdHgtPmxhc3RQcm9j ZXNzZWRSb3cgLSBjdHgtPm1hdGNoU3RhcnRSb3cgKyAxOworCisJCQluZmFfcmVjb3JkX2NvbnRl eHRfZmFpbHVyZSh3aW5zdGF0ZSwgZmFpbGVkTGVuKTsKKwkJfQorCQkvKiBlbHNlOiBjb250ZXh0 IHdhcyBuZXZlciBwcm9jZXNzZWQgKGJleW9uZC1wYXJ0aXRpb24pLCBqdXN0IHJlbW92ZSAqLwor CisJCW5mYV9jb250ZXh0X2ZyZWUod2luc3RhdGUsIGN0eCk7CisJfQorfQorCisvKgorICogbmZh X2ZpbmFsaXplX2FsbF9jb250ZXh0cworICoKKyAqIEZpbmFsaXplIGFsbCBhY3RpdmUgY29udGV4 dHMgd2hlbiBwYXJ0aXRpb24gZW5kcy4KKyAqIE1hdGNoIHdpdGggTlVMTCB0byBmb3JjZSBtaXNt YXRjaCwgdGhlbiBhZHZhbmNlIHRvIHByb2Nlc3MgZXBzaWxvbiB0cmFuc2l0aW9ucy4KKyAqLwor c3RhdGljIHZvaWQKK25mYV9maW5hbGl6ZV9hbGxfY29udGV4dHMoV2luZG93QWdnU3RhdGUgKndp bnN0YXRlLCBpbnQ2NCBsYXN0UG9zKQoreworCVJQUk5GQUNvbnRleHQgKmN0eDsKKworCWZvciAo Y3R4ID0gd2luc3RhdGUtPm5mYUNvbnRleHQ7IGN0eCAhPSBOVUxMOyBjdHggPSBjdHgtPm5leHQp CisJeworCQlpZiAoY3R4LT5zdGF0ZXMgIT0gTlVMTCkKKwkJeworCQkJbmZhX21hdGNoKHdpbnN0 YXRlLCBjdHgsIE5VTEwpOworCQkJbmZhX2FkdmFuY2Uod2luc3RhdGUsIGN0eCwgbGFzdFBvcywg ZmFsc2UpOworCQl9CisJfQorfQorCisvKgorICogbmZhX3VwZGF0ZV9hYnNvcnB0aW9uX2ZsYWdz CisgKgorICogVXBkYXRlIGNvbnRleHQncyBhYnNvcnB0aW9uIGZsYWdzIGFmdGVyIHN0YXRlIGNo YW5nZXMuCisgKgorICogVHdvIGZsYWdzIGNvbnRyb2wgYWJzb3JwdGlvbiBiZWhhdmlvcjoKKyAq ICAgaGFzQWJzb3JiYWJsZVN0YXRlOiB0cnVlIGlmIGNvbnRleHQgaGFzIGF0IGxlYXN0IG9uZSBh YnNvcmJhYmxlIHN0YXRlLgorICogICAgIFRoaXMgZmxhZyBpcyBtb25vdG9uaWMgKHRydWUgLT4g ZmFsc2Ugb25seSkuIE9uY2UgYWxsIGFic29yYmFibGUgc3RhdGVzCisgKiAgICAgZGllLCBubyBu ZXcgYWJzb3JiYWJsZSBzdGF0ZXMgY2FuIGJlIGNyZWF0ZWQgdGhyb3VnaCB0cmFuc2l0aW9ucy4K KyAqICAgYWxsU3RhdGVzQWJzb3JiYWJsZTogdHJ1ZSBpZiBBTEwgc3RhdGVzIGluIGNvbnRleHQg YXJlIGFic29yYmFibGUuCisgKiAgICAgVGhpcyBmbGFnIGlzIGR5bmFtaWMgYW5kIGNhbiBjaGFu Z2UgZmFsc2UgLT4gdHJ1ZSB3aGVuIG5vbi1hYnNvcmJhYmxlCisgKiAgICAgc3RhdGVzIGRpZSBv ZmYuCisgKgorICogT3B0aW1pemF0aW9uOiBPbmNlIGhhc0Fic29yYmFibGVTdGF0ZSBiZWNvbWVz IGZhbHNlLCBib3RoIGZsYWdzIHJlbWFpbiBmYWxzZQorICogcGVybWFuZW50bHksIHNvIHdlIHNr aXAgcmVjYWxjdWxhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK25mYV91cGRhdGVfYWJzb3JwdGlv bl9mbGFncyhSUFJORkFDb250ZXh0ICpjdHgpCit7CisJUlBSTkZBU3RhdGUgKnN0YXRlOworCWJv b2wJCWhhc0Fic29yYmFibGUgPSBmYWxzZTsKKwlib29sCQlhbGxBYnNvcmJhYmxlID0gdHJ1ZTsK KworCS8qCisJICogT3B0aW1pemF0aW9uOiBPbmNlIGhhc0Fic29yYmFibGVTdGF0ZSBiZWNvbWVz IGZhbHNlLCBpdCBzdGF5cyBmYWxzZS4gTm8KKwkgKiBuZWVkIHRvIHJlY2FsY3VsYXRlIC0gYm90 aCBmbGFncyByZW1haW4gZmFsc2UgcGVybWFuZW50bHkuCisJICovCisJaWYgKCFjdHgtPmhhc0Fi c29yYmFibGVTdGF0ZSkKKwl7CisJCWN0eC0+YWxsU3RhdGVzQWJzb3JiYWJsZSA9IGZhbHNlOwor CQlyZXR1cm47CisJfQorCisJLyogTm8gc3RhdGVzIG1lYW5zIG5vIGFic29yYmFibGUgc3RhdGVz ICovCisJaWYgKGN0eC0+c3RhdGVzID09IE5VTEwpCisJeworCQljdHgtPmhhc0Fic29yYmFibGVT dGF0ZSA9IGZhbHNlOworCQljdHgtPmFsbFN0YXRlc0Fic29yYmFibGUgPSBmYWxzZTsKKwkJcmV0 dXJuOworCX0KKworCS8qCisJICogSXRlcmF0ZSB0aHJvdWdoIGFsbCBzdGF0ZXMgdG8gY2hlY2sg YWJzb3JwdGlvbiBzdGF0dXMuIFVzZXMKKwkgKiBzdGF0ZS0+aXNBYnNvcmJhYmxlIHdoaWNoIHRy YWNrcyBpZiBzdGF0ZSBpcyBpbiBhYnNvcmJhYmxlIHJlZ2lvbi4gVGhpcworCSAqIGlzIGRpZmZl cmVudCBmcm9tIFJQUkVsZW1Jc0Fic29yYmFibGUoZWxlbSkgd2hpY2ggY2hlY2tzIGp1ZGdtZW50 CisJICogcG9pbnQuCisJICovCisJZm9yIChzdGF0ZSA9IGN0eC0+c3RhdGVzOyBzdGF0ZSAhPSBO VUxMOyBzdGF0ZSA9IHN0YXRlLT5uZXh0KQorCXsKKwkJaWYgKHN0YXRlLT5pc0Fic29yYmFibGUp CisJCQloYXNBYnNvcmJhYmxlID0gdHJ1ZTsKKwkJZWxzZQorCQkJYWxsQWJzb3JiYWJsZSA9IGZh bHNlOworCX0KKworCWN0eC0+aGFzQWJzb3JiYWJsZVN0YXRlID0gaGFzQWJzb3JiYWJsZTsKKwlj dHgtPmFsbFN0YXRlc0Fic29yYmFibGUgPSBhbGxBYnNvcmJhYmxlOworfQorCisvKgorICogbmZh X3N0YXRlc19jb3ZlcmVkCisgKgorICogQ2hlY2sgaWYgYWxsIHN0YXRlcyBpbiBuZXdlciBjb250 ZXh0IGFyZSAiY292ZXJlZCIgYnkgb2xkZXIgY29udGV4dC4KKyAqCisgKiBBIG5ld2VyIHN0YXRl IGlzIGNvdmVyZWQgd2hlbiBvbGRlciBjb250ZXh0IGhhcyBhbiBhYnNvcmJhYmxlIHN0YXRlIGF0 IHRoZQorICogc2FtZSBwYXR0ZXJuIGVsZW1lbnQgKGVsZW1JZHgpIHdpdGggY291bnQgPj0gbmV3 ZXIncyBjb3VudCBhdCB0aGF0IGRlcHRoLgorICogVGhlIGNvdmVyaW5nIHN0YXRlIG11c3QgYmUg YWJzb3JiYWJsZSBiZWNhdXNlIG9ubHkgYWJzb3JiYWJsZSBzdGF0ZXMgY2FuCisgKiBndWFyYW50 ZWUgdG8gcHJvZHVjZSBzdXBlcnNldCBtYXRjaGVzLgorICoKKyAqIElmIGFsbCBuZXdlciBzdGF0 ZXMgYXJlIGNvdmVyZWQsIG5ld2VyIGNvbnRleHQncyBldmVudHVhbCBtYXRjaGVzIHdpbGwgYmUK KyAqIGEgc3Vic2V0IG9mIG9sZGVyIGNvbnRleHQncyBtYXRjaGVzLCBtYWtpbmcgbmV3ZXIgcmVk dW5kYW50LgorICovCitzdGF0aWMgYm9vbAorbmZhX3N0YXRlc19jb3ZlcmVkKFJQUlBhdHRlcm4g KnBhdHRlcm4sIFJQUk5GQUNvbnRleHQgKm9sZGVyLCBSUFJORkFDb250ZXh0ICpuZXdlcikKK3sK KwlSUFJORkFTdGF0ZSAqbmV3ZXJTdGF0ZTsKKworCWZvciAobmV3ZXJTdGF0ZSA9IG5ld2VyLT5z dGF0ZXM7IG5ld2VyU3RhdGUgIT0gTlVMTDsgbmV3ZXJTdGF0ZSA9IG5ld2VyU3RhdGUtPm5leHQp CisJeworCQlSUFJORkFTdGF0ZSAqb2xkZXJTdGF0ZTsKKwkJUlBSUGF0dGVybkVsZW1lbnQgKmVs ZW07CisJCWludAkJCWRlcHRoOworCQlib29sCQlmb3VuZCA9IGZhbHNlOworCisJCS8qIEFsbCBz dGF0ZXMgYXJlIGFic29yYmFibGUgKGNhbGxlciBjaGVja3MgYWxsU3RhdGVzQWJzb3JiYWJsZSkg Ki8KKwkJZWxlbSA9ICZwYXR0ZXJuLT5lbGVtZW50c1tuZXdlclN0YXRlLT5lbGVtSWR4XTsKKwkJ ZGVwdGggPSBlbGVtLT5kZXB0aDsKKworCQlmb3IgKG9sZGVyU3RhdGUgPSBvbGRlci0+c3RhdGVz OyBvbGRlclN0YXRlICE9IE5VTEw7IG9sZGVyU3RhdGUgPSBvbGRlclN0YXRlLT5uZXh0KQorCQl7 CisJCQkvKiBDb3ZlcmluZyBzdGF0ZSBtdXN0IGFsc28gYmUgYWJzb3JiYWJsZSAqLworCQkJaWYg KG9sZGVyU3RhdGUtPmlzQWJzb3JiYWJsZSAmJgorCQkJCW9sZGVyU3RhdGUtPmVsZW1JZHggPT0g bmV3ZXJTdGF0ZS0+ZWxlbUlkeCAmJgorCQkJCW9sZGVyU3RhdGUtPmNvdW50c1tkZXB0aF0gPj0g bmV3ZXJTdGF0ZS0+Y291bnRzW2RlcHRoXSkKKwkJCXsKKwkJCQlmb3VuZCA9IHRydWU7CisJCQkJ YnJlYWs7CisJCQl9CisJCX0KKworCQlpZiAoIWZvdW5kKQorCQkJcmV0dXJuIGZhbHNlOworCX0K KworCXJldHVybiB0cnVlOworfQorCisvKgorICogbmZhX3RyeV9hYnNvcmJfY29udGV4dAorICoK KyAqIFRyeSB0byBhYnNvcmIgY3R4IChuZXdlcikgaW50byBhbiBvbGRlciBpbi1wcm9ncmVzcyBj b250ZXh0LgorICogUmV0dXJucyB0cnVlIGlmIGN0eCB3YXMgYWJzb3JiZWQgYW5kIGZyZWVkLgor ICoKKyAqIEFic29ycHRpb24gcmVxdWlyZXMgdGhyZWUgY29uZGl0aW9uczoKKyAqICAgMS4gY3R4 IG11c3QgaGF2ZSBhbGwgc3RhdGVzIGFic29yYmFibGUgKGFsbFN0YXRlc0Fic29yYmFibGUpLgor ICogICAgICBJZiBjdHggaGFzIGFueSBub24tYWJzb3JiYWJsZSBzdGF0ZSwgaXQgbWF5IHByb2R1 Y2UgdW5pcXVlIG1hdGNoZXMuCisgKiAgIDIuIG9sZGVyIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUg YWJzb3JiYWJsZSBzdGF0ZSAoaGFzQWJzb3JiYWJsZVN0YXRlKS4KKyAqICAgICAgV2l0aG91dCBh YnNvcmJhYmxlIHN0YXRlcywgb2xkZXIgY2Fubm90IGNvdmVyIG5ld2VyJ3Mgc3RhdGVzLgorICog ICAzLiBBbGwgY3R4IHN0YXRlcyBtdXN0IGJlIGNvdmVyZWQgYnkgb2xkZXIncyBhYnNvcmJhYmxl IHN0YXRlcy4KKyAqICAgICAgVGhpcyBlbnN1cmVzIG9sZGVyIHdpbGwgcHJvZHVjZSBhbGwgbWF0 Y2hlcyB0aGF0IGN0eCB3b3VsZCBwcm9kdWNlLgorICoKKyAqIENvbnRleHQgbGlzdCBpcyBvcmRl cmVkIGJ5IGNyZWF0aW9uIHRpbWUgKG9sZGVzdCBmaXJzdCB2aWEgcHJldiBjaGFpbikuCisgKiBF YWNoIHJvdyBjcmVhdGVzIGF0IG1vc3Qgb25lIGNvbnRleHQsIHNvIGVhcmxpZXIgY29udGV4dHMg aGF2ZSBzbWFsbGVyCisgKiBtYXRjaFN0YXJ0Um93IHZhbHVlcy4KKyAqLworc3RhdGljIGJvb2wK K25mYV90cnlfYWJzb3JiX2NvbnRleHQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFD b250ZXh0ICpjdHgpCit7CisJUlBSUGF0dGVybiAqcGF0dGVybiA9IHdpbnN0YXRlLT5ycFBhdHRl cm47CisJUlBSTkZBQ29udGV4dCAqb2xkZXI7CisKKwkvKiBFYXJseSBleGl0OiBjdHggbXVzdCBo YXZlIGFsbCBzdGF0ZXMgYWJzb3JiYWJsZSAqLworCWlmICghY3R4LT5hbGxTdGF0ZXNBYnNvcmJh YmxlKQorCQlyZXR1cm4gZmFsc2U7CisKKwlmb3IgKG9sZGVyID0gY3R4LT5wcmV2OyBvbGRlciAh PSBOVUxMOyBvbGRlciA9IG9sZGVyLT5wcmV2KQorCXsKKwkJLyoKKwkJICogQnkgaW52YXJpYW50 OiBjdHgtPnByZXYgY2hhaW4gaXMgaW4gY3JlYXRpb24gb3JkZXIgKG9sZGVzdCBmaXJzdCksCisJ CSAqIGFuZCBlYWNoIHJvdyBjcmVhdGVzIGF0IG1vc3Qgb25lIGNvbnRleHQuIFNvIGFsbCBjb250 ZXh0cyBpbiB0aGlzCisJCSAqIGNoYWluIGhhdmUgbWF0Y2hTdGFydFJvdyA8IGN0eC0+bWF0Y2hT dGFydFJvdy4KKwkJICovCisKKwkJLyogT2xkZXIgbXVzdCBhbHNvIGJlIGluLXByb2dyZXNzICov CisJCWlmIChvbGRlci0+c3RhdGVzID09IE5VTEwpCisJCQljb250aW51ZTsKKworCQkvKiBPbGRl ciBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGFic29yYmFibGUgc3RhdGUgKi8KKwkJaWYgKCFvbGRl ci0+aGFzQWJzb3JiYWJsZVN0YXRlKQorCQkJY29udGludWU7CisKKwkJLyogQ2hlY2sgaWYgYWxs IG5ld2VyIHN0YXRlcyBhcmUgY292ZXJlZCBieSBvbGRlciAqLworCQlpZiAobmZhX3N0YXRlc19j b3ZlcmVkKHBhdHRlcm4sIG9sZGVyLCBjdHgpKQorCQl7CisJCQlpbnQ2NAkJYWJzb3JiZWRMZW4g PSBjdHgtPmxhc3RQcm9jZXNzZWRSb3cgLSBjdHgtPm1hdGNoU3RhcnRSb3cgKyAxOworCisJCQlu ZmFfY29udGV4dF9mcmVlKHdpbnN0YXRlLCBjdHgpOworCQkJbmZhX3JlY29yZF9jb250ZXh0X2Fi c29yYmVkKHdpbnN0YXRlLCBhYnNvcmJlZExlbik7CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCX0K KworCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIG5mYV9hYnNvcmJfY29udGV4dHMKKyAqCisg KiBBYnNvcmIgcmVkdW5kYW50IGNvbnRleHRzIHRvIHJlZHVjZSBtZW1vcnkgdXNhZ2UgYW5kIGNv bXB1dGF0aW9uLgorICoKKyAqIEZvciBwYXR0ZXJucyBsaWtlIEErLCBuZXdlciBjb250ZXh0cyBz dGFydGluZyBsYXRlciB3aWxsIHByb2R1Y2Ugc3Vic2V0CisgKiBtYXRjaGVzIG9mIG9sZGVyIGNv bnRleHRzIHdpdGggaGlnaGVyIGNvdW50cy4gQnkgYWJzb3JiaW5nIHRoZXNlIHJlZHVuZGFudAor ICogY29udGV4dHMgZWFybHksIHdlIGF2b2lkIGR1cGxpY2F0ZSB3b3JrLgorICoKKyAqIEl0ZXJh dGVzIGZyb20gdGFpbCAobmV3ZXN0KSB0b3dhcmQgaGVhZCAob2xkZXN0KSB2aWEgcHJldiBjaGFp bi4KKyAqIE9ubHkgaW4tcHJvZ3Jlc3MgY29udGV4dHMgKHN0YXRlcyAhPSBOVUxMKSBhcmUgY2Fu ZGlkYXRlcyBmb3IgYWJzb3JwdGlvbjsKKyAqIGNvbXBsZXRlZCBjb250ZXh0cyByZXByZXNlbnQg dmFsaWQgbWF0Y2ggcmVzdWx0cy4KKyAqLworc3RhdGljIHZvaWQKK25mYV9hYnNvcmJfY29udGV4 dHMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKQoreworCVJQUk5GQUNvbnRleHQgKmN0eDsKKwlS UFJORkFDb250ZXh0ICpuZXh0Q3R4OworCisJZm9yIChjdHggPSB3aW5zdGF0ZS0+bmZhQ29udGV4 dFRhaWw7IGN0eCAhPSBOVUxMOyBjdHggPSBuZXh0Q3R4KQorCXsKKwkJbmV4dEN0eCA9IGN0eC0+ cHJldjsKKworCQkvKgorCQkgKiBPbmx5IGFic29yYiBpbi1wcm9ncmVzcyBjb250ZXh0czsgY29t cGxldGVkIGNvbnRleHRzIGFyZSB2YWxpZAorCQkgKiByZXN1bHRzCisJCSAqLworCQlpZiAoY3R4 LT5zdGF0ZXMgIT0gTlVMTCkKKwkJCW5mYV90cnlfYWJzb3JiX2NvbnRleHQod2luc3RhdGUsIGN0 eCk7CisJfQorfQorCisvKgorICogbmZhX2V2YWxfdmFyX21hdGNoCisgKgorICogRXZhbHVhdGUg aWYgYSBWQVIgZWxlbWVudCBtYXRjaGVzIHRoZSBjdXJyZW50IHJvdy4KKyAqIFVuZGVmaW5lZCB2 YXJpYWJsZXMgKHZhcklkID49IGRlZmluZVZhcmlhYmxlTGlzdCBsZW5ndGgpIGRlZmF1bHQgdG8g VFJVRS4KKyAqLworc3RhdGljIGlubGluZSBib29sCituZmFfZXZhbF92YXJfbWF0Y2goV2luZG93 QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSwKKwkJCQkgICBib29s ICp2YXJNYXRjaGVkKQoreworCS8qIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgY2FsbGVk IGZvciBWQVIgZWxlbWVudHMgKi8KKwlBc3NlcnQoUlBSRWxlbUlzVmFyKGVsZW0pKTsKKworCWlm ICh2YXJNYXRjaGVkID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKwlpZiAoZWxlbS0+dmFySWQg Pj0gbGlzdF9sZW5ndGgod2luc3RhdGUtPmRlZmluZVZhcmlhYmxlTGlzdCkpCisJCXJldHVybiB0 cnVlOworCXJldHVybiB2YXJNYXRjaGVkW2VsZW0tPnZhcklkXTsKK30KKworLyoKKyAqIG5mYV9t YXRjaAorICoKKyAqIE1hdGNoIHBoYXNlIChjb252ZXJnZW5jZSk6IGV2YWx1YXRlIFZBUiBlbGVt ZW50cyBhZ2FpbnN0IGN1cnJlbnQgcm93LgorICogT25seSB1cGRhdGVzIGNvdW50cyBhbmQgcmVt b3ZlcyBkZWFkIHN0YXRlcy4gTWluaW1hbCB0cmFuc2l0aW9ucy4KKyAqCisgKiBGb3IgVkFSIGVs ZW1lbnRzOgorICogICAtIG1hdGNoZWQ6IGNvdW50KyssIGtlZXAgc3RhdGUgKHVubGVzcyBjb3Vu dCA+IG1heCkKKyAqICAgLSBub3QgbWF0Y2hlZDogcmVtb3ZlIHN0YXRlIChleGl0IGFsdGVybmF0 aXZlcyBhbHJlYWR5IGV4aXN0IGZyb20KKyAqICAgICBwcmV2aW91cyBhZHZhbmNlIHdoZW4gY291 bnQgPj0gbWluIHdhcyBzYXRpc2ZpZWQpCisgKgorICogRm9yIHNpbXBsZSBWQVJzIChtaW49bWF4 PTEpIGZvbGxvd2VkIGJ5IEVORDoKKyAqICAgLSBBZHZhbmNlIHRvIEVORCBhbmQgdXBkYXRlIGdy b3VwIGNvdW50IGJlZm9yZSBhYnNvcmIgcGhhc2UKKyAqICAgLSBUaGlzIGVuc3VyZXMgYWJzb3Jw dGlvbiBjYW4gY29tcGFyZSBzdGF0ZXMgYnkgZ3JvdXAgY29tcGxldGlvbgorICoKKyAqIE5vbi1W QVIgZWxlbWVudHMgKEFMVCwgRU5ELCBGSU4pIGFyZSBrZXB0IGFzLWlzIGZvciBhZHZhbmNlIHBo YXNlLgorICovCitzdGF0aWMgdm9pZAorbmZhX21hdGNoKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0 ZSwgUlBSTkZBQ29udGV4dCAqY3R4LCBib29sICp2YXJNYXRjaGVkKQoreworCVJQUlBhdHRlcm4g KnBhdHRlcm4gPSB3aW5zdGF0ZS0+cnBQYXR0ZXJuOworCVJQUlBhdHRlcm5FbGVtZW50ICplbGVt ZW50cyA9IHBhdHRlcm4tPmVsZW1lbnRzOworCVJQUk5GQVN0YXRlICoqcHJldlB0ciA9ICZjdHgt PnN0YXRlczsKKwlSUFJORkFTdGF0ZSAqc3RhdGU7CisJUlBSTkZBU3RhdGUgKm5leHRTdGF0ZTsK KworCS8qCisJICogRXZhbHVhdGUgVkFSIGVsZW1lbnRzIGFnYWluc3QgY3VycmVudCByb3cuIEZv ciBzaW1wbGUgVkFScyB3aXRoIEVORAorCSAqIG5leHQsIGFkdmFuY2UgdG8gRU5EIGFuZCB1cGRh dGUgZ3JvdXAgY291bnQgaW5saW5lIHNvIGFic29yYiBwaGFzZSBjYW4KKwkgKiBjb21wYXJlIHN0 YXRlcyBwcm9wZXJseS4KKwkgKi8KKwlmb3IgKHN0YXRlID0gY3R4LT5zdGF0ZXM7IHN0YXRlICE9 IE5VTEw7IHN0YXRlID0gbmV4dFN0YXRlKQorCXsKKwkJUlBSUGF0dGVybkVsZW1lbnQgKmVsZW0g PSAmZWxlbWVudHNbc3RhdGUtPmVsZW1JZHhdOworCisJCW5leHRTdGF0ZSA9IHN0YXRlLT5uZXh0 OworCisJCWlmIChSUFJFbGVtSXNWYXIoZWxlbSkpCisJCXsKKwkJCWJvb2wJCW1hdGNoZWQ7CisJ CQlpbnQJCQlkZXB0aCA9IGVsZW0tPmRlcHRoOworCQkJaW50MzIJCWNvdW50ID0gc3RhdGUtPmNv dW50c1tkZXB0aF07CisKKwkJCW1hdGNoZWQgPSBuZmFfZXZhbF92YXJfbWF0Y2god2luc3RhdGUs IGVsZW0sIHZhck1hdGNoZWQpOworCisJCQlpZiAobWF0Y2hlZCkKKwkJCXsKKwkJCQkvKiBJbmNy ZW1lbnQgY291bnQgKi8KKwkJCQlpZiAoY291bnQgPCBSUFJfQ09VTlRfTUFYKQorCQkJCQljb3Vu dCsrOworCisJCQkJLyogTWF4IGNvbnN0cmFpbnQgc2hvdWxkIG5vdCBiZSBleGNlZWRlZCAqLwor CQkJCUFzc2VydChlbGVtLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORiB8fCBjb3VudCA8PSBlbGVt LT5tYXgpOworCisJCQkJc3RhdGUtPmNvdW50c1tkZXB0aF0gPSBjb3VudDsKKworCQkJCS8qCisJ CQkJICogRm9yIHNpbXBsZSBWQVIgKG1pbj1tYXg9MSkgd2l0aCBFTkQgbmV4dCwgYWR2YW5jZSB0 byBFTkQKKwkJCQkgKiBhbmQgdXBkYXRlIGdyb3VwIGNvdW50IGlubGluZS4gVGhpcyBrZWVwcyBz dGF0ZSBpbiBwbGFjZSwKKwkJCQkgKiBwcmVzZXJ2aW5nIGxleGljYWwgb3JkZXIuCisJCQkJICov CisJCQkJaWYgKGVsZW0tPm1pbiA9PSAxICYmIGVsZW0tPm1heCA9PSAxICYmCisJCQkJCVJQUkVs ZW1Jc0VuZCgmZWxlbWVudHNbZWxlbS0+bmV4dF0pKQorCQkJCXsKKwkJCQkJUlBSUGF0dGVybkVs ZW1lbnQgKmVuZEVsZW0gPSAmZWxlbWVudHNbZWxlbS0+bmV4dF07CisJCQkJCWludAkJCWVuZERl cHRoID0gZW5kRWxlbS0+ZGVwdGg7CisJCQkJCWludDMyCQllbmRDb3VudCA9IHN0YXRlLT5jb3Vu dHNbZW5kRGVwdGhdOworCisJCQkJCUFzc2VydChjb3VudCA9PSAxKTsKKworCQkJCQkvKiBJbmNy ZW1lbnQgZ3JvdXAgY291bnQgd2l0aCBvdmVyZmxvdyBwcm90ZWN0aW9uICovCisJCQkJCWlmIChl bmRDb3VudCA8IFJQUl9DT1VOVF9NQVgpCisJCQkJCQllbmRDb3VudCsrOworCisJCQkJCS8qCisJ CQkJCSAqIEVORCdzIG1heCBjYW4gbmV2ZXIgYmUgZXhjZWVkZWQgaGVyZSBiZWNhdXNlCisJCQkJ CSAqIG5mYV9hZHZhbmNlX2VuZCBvbmx5IGxvb3BzIHdoZW4gY291bnQgPCBtYXgsIHNvCisJCQkJ CSAqIGVuZENvdW50IGVudGVyaW5nIGlubGluZSBhZHZhbmNlIGlzIGF0IG1vc3QgbWF4LTEsIGFu ZAorCQkJCQkgKiBpbmNyZW1lbnRpbmcgeWllbGRzIGF0IG1vc3QgbWF4LgorCQkJCQkgKi8KKwkJ CQkJQXNzZXJ0KGVuZEVsZW0tPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GIHx8CisJCQkJCQkgICBl bmRDb3VudCA8PSBlbmRFbGVtLT5tYXgpOworCisJCQkJCXN0YXRlLT5lbGVtSWR4ID0gZWxlbS0+ bmV4dDsKKwkJCQkJc3RhdGUtPmNvdW50c1tlbmREZXB0aF0gPSBlbmRDb3VudDsKKwkJCQl9CisJ CQkJLyogZWxzZTogc3RheSBhdCBWQVIgZm9yIGFkdmFuY2UgcGhhc2UgKi8KKwkJCX0KKwkJCWVs c2UKKwkJCXsKKwkJCQkvKgorCQkJCSAqIE5vdCBtYXRjaGVkIC0gcmVtb3ZlIHN0YXRlLiBFeGl0 IGFsdGVybmF0aXZlcyB3ZXJlIGFscmVhZHkKKwkJCQkgKiBjcmVhdGVkIGJ5IGFkdmFuY2UgcGhh c2Ugd2hlbiBjb3VudCA+PSBtaW4gd2FzIHNhdGlzZmllZC4KKwkJCQkgKi8KKwkJCQkqcHJldlB0 ciA9IG5leHRTdGF0ZTsKKwkJCQluZmFfc3RhdGVfZnJlZSh3aW5zdGF0ZSwgc3RhdGUpOworCQkJ CWNvbnRpbnVlOworCQkJfQorCQl9CisJCS8qIE5vbi1WQVIgZWxlbWVudHM6IGtlZXAgYXMtaXMg Zm9yIGFkdmFuY2UgcGhhc2UgKi8KKworCQlwcmV2UHRyID0gJnN0YXRlLT5uZXh0OworCX0KK30K KworLyoKKyAqIG5mYV9yb3V0ZV90b19lbGVtCisgKgorICogUm91dGUgc3RhdGUgdG8gbmV4dCBl bGVtZW50LiBJZiBWQVIsIGFkZCB0byBjdHgtPnN0YXRlcyBhbmQgcHJvY2VzcworICogc2tpcCBw YXRoIGlmIG9wdGlvbmFsLiBPdGhlcndpc2UsIGNvbnRpbnVlIGVwc2lsb24gZXhwYW5zaW9uIHZp YSByZWN1cnNpb24uCisgKi8KK3N0YXRpYyB2b2lkCituZmFfcm91dGVfdG9fZWxlbShXaW5kb3dB Z2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKKwkJCQkgIFJQUk5GQVN0YXRl ICpzdGF0ZSwgUlBSUGF0dGVybkVsZW1lbnQgKm5leHRFbGVtLAorCQkJCSAgaW50NjQgY3VycmVu dFBvcywgYm9vbCBpbml0aWFsQWR2YW5jZSkKK3sKKwlpZiAoUlBSRWxlbUlzVmFyKG5leHRFbGVt KSkKKwl7CisJCW5mYV9hZGRfc3RhdGVfdW5pcXVlKHdpbnN0YXRlLCBjdHgsIHN0YXRlKTsKKwkJ aWYgKFJQUkVsZW1DYW5Ta2lwKG5leHRFbGVtKSkKKwkJeworCQkJUlBSTkZBU3RhdGUgKnNraXBT dGF0ZTsKKworCQkJc2tpcFN0YXRlID0gbmZhX3N0YXRlX2NyZWF0ZSh3aW5zdGF0ZSwgbmV4dEVs ZW0tPm5leHQsCisJCQkJCQkJCQkJIHN0YXRlLT5hbHRQcmlvcml0eSwgc3RhdGUtPmNvdW50cywK KwkJCQkJCQkJCQkgc3RhdGUtPmlzQWJzb3JiYWJsZSk7CisJCQluZmFfYWR2YW5jZV9zdGF0ZSh3 aW5zdGF0ZSwgY3R4LCBza2lwU3RhdGUsIGN1cnJlbnRQb3MsIGluaXRpYWxBZHZhbmNlKTsKKwkJ fQorCX0KKwllbHNlCisJeworCQluZmFfYWR2YW5jZV9zdGF0ZSh3aW5zdGF0ZSwgY3R4LCBzdGF0 ZSwgY3VycmVudFBvcywgaW5pdGlhbEFkdmFuY2UpOworCX0KK30KKworLyoKKyAqIG5mYV9hZHZh bmNlX2FsdAorICoKKyAqIEhhbmRsZSBBTFQgZWxlbWVudDogZXhwYW5kIGFsbCBicmFuY2hlcyBp biBsZXhpY2FsIG9yZGVyIChERlMpLgorICogU2V0cyBhbHRQcmlvcml0eSB0byBlbGVtZW50IGlu ZGV4IHRvIHByZXNlcnZlIGxleGljYWwgb3JkZXIgZm9yIG1hdGNoIHNlbGVjdGlvbi4KKyAqLwor c3RhdGljIHZvaWQKK25mYV9hZHZhbmNlX2FsdChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQ Uk5GQUNvbnRleHQgKmN0eCwKKwkJCQlSUFJORkFTdGF0ZSAqc3RhdGUsIFJQUlBhdHRlcm5FbGVt ZW50ICplbGVtLAorCQkJCWludDY0IGN1cnJlbnRQb3MsIGJvb2wgaW5pdGlhbEFkdmFuY2UpCit7 CisJUlBSUGF0dGVybiAqcGF0dGVybiA9IHdpbnN0YXRlLT5ycFBhdHRlcm47CisJUlBSUGF0dGVy bkVsZW1lbnQgKmVsZW1lbnRzID0gcGF0dGVybi0+ZWxlbWVudHM7CisJUlBSRWxlbUlkeAlhbHRJ ZHggPSBlbGVtLT5uZXh0OworCWJvb2wJCWZpcnN0ID0gdHJ1ZTsKKworCXdoaWxlIChhbHRJZHgg Pj0gMCAmJiBhbHRJZHggPCBwYXR0ZXJuLT5udW1FbGVtZW50cykKKwl7CisJCVJQUlBhdHRlcm5F bGVtZW50ICphbHRFbGVtID0gJmVsZW1lbnRzW2FsdElkeF07CisJCVJQUk5GQVN0YXRlICpuZXdT dGF0ZTsKKworCQkvKiBTdG9wIGlmIGVsZW1lbnQgaXMgb3V0c2lkZSBBTFQgc2NvcGUgKG5vdCBh IGJyYW5jaCkgKi8KKwkJaWYgKGFsdEVsZW0tPmRlcHRoIDw9IGVsZW0tPmRlcHRoKQorCQkJYnJl YWs7CisKKwkJaWYgKGZpcnN0KQorCQl7CisJCQlzdGF0ZS0+ZWxlbUlkeCA9IGFsdElkeDsKKwkJ CXN0YXRlLT5hbHRQcmlvcml0eSA9IGFsdElkeDsKKwkJCW5ld1N0YXRlID0gc3RhdGU7CisJCQlm aXJzdCA9IGZhbHNlOworCQl9CisJCWVsc2UKKwkJeworCQkJbmV3U3RhdGUgPSBuZmFfc3RhdGVf Y3JlYXRlKHdpbnN0YXRlLCBhbHRJZHgsIGFsdElkeCwKKwkJCQkJCQkJCQlzdGF0ZS0+Y291bnRz LCBzdGF0ZS0+aXNBYnNvcmJhYmxlKTsKKwkJfQorCisJCS8qIFJlY3Vyc2l2ZWx5IHByb2Nlc3Mg dGhpcyBicmFuY2ggYmVmb3JlIG5leHQgKi8KKwkJbmZhX2FkdmFuY2Vfc3RhdGUod2luc3RhdGUs IGN0eCwgbmV3U3RhdGUsIGN1cnJlbnRQb3MsIGluaXRpYWxBZHZhbmNlKTsKKwkJYWx0SWR4ID0g YWx0RWxlbS0+anVtcDsKKwl9CisKKwkvKiBBTFQgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBicmFu Y2ggKi8KKwlBc3NlcnQoIWZpcnN0KTsKK30KKworLyoKKyAqIG5mYV9hZHZhbmNlX2JlZ2luCisg KgorICogSGFuZGxlIEJFR0lOIGVsZW1lbnQ6IGdyb3VwIGVudHJ5IGxvZ2ljLgorICogQkVHSU4g aXMgb25seSB2aXNpdGVkIGF0IGluaXRpYWwgZ3JvdXAgZW50cnkgKGNvdW50IGlzIGFsd2F5cyAw KS4KKyAqIElmIG1pbj0wLCBjcmVhdGVzIGEgc2tpcCBwYXRoIHBhc3QgdGhlIGdyb3VwLgorICog TG9vcC1iYWNrIGZyb20gRU5EIGdvZXMgZGlyZWN0bHkgdG8gZmlyc3QgY2hpbGQsIGJ5cGFzc2lu ZyBCRUdJTi4KKyAqLworc3RhdGljIHZvaWQKK25mYV9hZHZhbmNlX2JlZ2luKFdpbmRvd0FnZ1N0 YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAorCQkJCSAgUlBSTkZBU3RhdGUgKnN0 YXRlLCBSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSwKKwkJCQkgIGludDY0IGN1cnJlbnRQb3MsIGJv b2wgaW5pdGlhbEFkdmFuY2UpCit7CisJUlBSUGF0dGVybiAqcGF0dGVybiA9IHdpbnN0YXRlLT5y cFBhdHRlcm47CisJUlBSUGF0dGVybkVsZW1lbnQgKmVsZW1lbnRzID0gcGF0dGVybi0+ZWxlbWVu dHM7CisJUlBSTkZBU3RhdGUgKnNraXBTdGF0ZSA9IE5VTEw7CisKKwlzdGF0ZS0+Y291bnRzW2Vs ZW0tPmRlcHRoXSA9IDA7CisKKwkvKiBPcHRpb25hbCBncm91cDogY3JlYXRlIHNraXAgcGF0aCAo YnV0IGRvbid0IHJvdXRlIHlldCkgKi8KKwlpZiAoZWxlbS0+bWluID09IDApCisJeworCQlza2lw U3RhdGUgPSBuZmFfc3RhdGVfY3JlYXRlKHdpbnN0YXRlLCBlbGVtLT5qdW1wLCBzdGF0ZS0+YWx0 UHJpb3JpdHksCisJCQkJCQkJCQkgc3RhdGUtPmNvdW50cywgc3RhdGUtPmlzQWJzb3JiYWJsZSk7 CisJfQorCisJLyogRW50ZXIgZ3JvdXA6IHJvdXRlIHRvIGZpcnN0IGNoaWxkIChsZXhpY2FsbHkg Zmlyc3QpICovCisJc3RhdGUtPmVsZW1JZHggPSBlbGVtLT5uZXh0OworCW5mYV9yb3V0ZV90b19l bGVtKHdpbnN0YXRlLCBjdHgsIHN0YXRlLAorCQkJCQkgICZlbGVtZW50c1tzdGF0ZS0+ZWxlbUlk eF0sIGN1cnJlbnRQb3MsIGluaXRpYWxBZHZhbmNlKTsKKworCS8qIE5vdyByb3V0ZSBza2lwIHBh dGggKGxleGljYWxseSBzZWNvbmQpICovCisJaWYgKHNraXBTdGF0ZSAhPSBOVUxMKQorCXsKKwkJ bmZhX3JvdXRlX3RvX2VsZW0od2luc3RhdGUsIGN0eCwgc2tpcFN0YXRlLAorCQkJCQkJICAmZWxl bWVudHNbZWxlbS0+anVtcF0sIGN1cnJlbnRQb3MsIGluaXRpYWxBZHZhbmNlKTsKKwl9Cit9CisK Ky8qCisgKiBuZmFfYWR2YW5jZV9lbmQKKyAqCisgKiBIYW5kbGUgRU5EIGVsZW1lbnQ6IGdyb3Vw IHJlcGV0aXRpb24gbG9naWMuCisgKiBEZWNpZGVzIHdoZXRoZXIgdG8gbG9vcCBiYWNrIG9yIGV4 aXQgYmFzZWQgb24gY291bnQgdnMgbWluL21heC4KKyAqLworc3RhdGljIHZvaWQKK25mYV9hZHZh bmNlX2VuZChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKKwkJ CQlSUFJORkFTdGF0ZSAqc3RhdGUsIFJQUlBhdHRlcm5FbGVtZW50ICplbGVtLAorCQkJCWludDY0 IGN1cnJlbnRQb3MsIGJvb2wgaW5pdGlhbEFkdmFuY2UpCit7CisJUlBSUGF0dGVybiAqcGF0dGVy biA9IHdpbnN0YXRlLT5ycFBhdHRlcm47CisJUlBSUGF0dGVybkVsZW1lbnQgKmVsZW1lbnRzID0g cGF0dGVybi0+ZWxlbWVudHM7CisJaW50CQkJZGVwdGggPSBlbGVtLT5kZXB0aDsKKwlpbnQzMgkJ Y291bnQgPSBzdGF0ZS0+Y291bnRzW2RlcHRoXTsKKworCWlmIChjb3VudCA8IGVsZW0tPm1pbikK Kwl7CisJCS8qIE11c3QgbG9vcCBiYWNrICovCisJCVJQUlBhdHRlcm5FbGVtZW50ICpqdW1wRWxl bTsKKworCQlmb3IgKGludCBkID0gZGVwdGggKyAxOyBkIDwgcGF0dGVybi0+bWF4RGVwdGg7IGQr KykKKwkJCXN0YXRlLT5jb3VudHNbZF0gPSAwOworCQlzdGF0ZS0+ZWxlbUlkeCA9IGVsZW0tPmp1 bXA7CisJCWp1bXBFbGVtID0gJmVsZW1lbnRzW3N0YXRlLT5lbGVtSWR4XTsKKworCQluZmFfcm91 dGVfdG9fZWxlbSh3aW5zdGF0ZSwgY3R4LCBzdGF0ZSwganVtcEVsZW0sIGN1cnJlbnRQb3MsIGlu aXRpYWxBZHZhbmNlKTsKKwl9CisJZWxzZSBpZiAoKGVsZW0tPm1heCAhPSBSUFJfUVVBTlRJVFlf SU5GICYmIGNvdW50ID49IGVsZW0tPm1heCkgfHwKKwkJCSAoY291bnQgPT0gMCAmJiBlbGVtLT5t aW4gPT0gMCkpCisJeworCQkvKi0tLS0tLS0tLS0KKwkJICogTXVzdCBleGl0OiBlaXRoZXIgcmVh Y2hlZCBtYXggaXRlcmF0aW9ucywgb3IgZ3JvdXAgbWF0Y2hlZCBlbXB0eS4KKwkJICoKKwkJICog RklYTUU6IFRoZSAoY291bnQgPT0gMCAmJiBtaW4gPT0gMCkgY29uZGl0aW9uIGlzIGluc3VmZmlj aWVudCBmb3IKKwkJICogY3ljbGUgcHJldmVudGlvbi4gQ3ljbGVzIGNhbiBvY2N1ciBhdCBhbnkg Y291bnQgdmFsdWUgd2hlbiBsb29wIGJhY2sKKwkJICogaGFwcGVucyB3aXRob3V0IGNvbnN1bWlu ZyByb3dzLiBGb3IgZXhhbXBsZToKKwkJICogICBQYXR0ZXJuOiAoQSopKgorCQkgKiAgIEFmdGVy IG1hdGNoaW5nIDMgQSdzIChjb3VudD0zKSwgbG9vcCBiYWNrIGF0IGEgQiByb3cKKwkJICogICBJ bm5lciBBKiBtYXRjaGVzIDAgdGltZXMgKHNraXAgcGF0aCkg4oaSIHNhbWUgKGVsZW1JZHgsIGNv dW50PTMpCisJCSAqICAgSW5maW5pdGUgY3ljbGUgYXQgY291bnQ9Mywgbm90IGNvdW50PTAKKwkJ ICoKKwkJICogQ3VycmVudGx5LCBjeWNsZXMgYXJlIHNpbGVudGx5IHByZXZlbnRlZCBieSBuZmFf YWRkX3N0YXRlX3VuaXF1ZQorCQkgKiBkZXRlY3RpbmcgZHVwbGljYXRlIHN0YXRlcywgYnV0IHRo aXMgaXMgaW1wbGljaXQgYW5kIG5vdCBndWFyYW50ZWVkCisJCSAqIGZvciBhbGwgY29kZSBwYXRo cy4gRXhwbGljaXQgY3ljbGUgZGV0ZWN0aW9uIGlzIG5lZWRlZC4KKwkJICotLS0tLS0tLS0tCisJ CSAqLworCQlSUFJQYXR0ZXJuRWxlbWVudCAqbmV4dEVsZW07CisKKwkJc3RhdGUtPmNvdW50c1tk ZXB0aF0gPSAwOworCQlzdGF0ZS0+ZWxlbUlkeCA9IGVsZW0tPm5leHQ7CisJCW5leHRFbGVtID0g JmVsZW1lbnRzW3N0YXRlLT5lbGVtSWR4XTsKKworCQkvKiBFTkQtPkVORDogaW5jcmVtZW50IG91 dGVyIEVORCdzIGNvdW50ICovCisJCWlmIChSUFJFbGVtSXNFbmQobmV4dEVsZW0pICYmIHN0YXRl LT5jb3VudHNbbmV4dEVsZW0tPmRlcHRoXSA8IFJQUl9DT1VOVF9NQVgpCisJCQlzdGF0ZS0+Y291 bnRzW25leHRFbGVtLT5kZXB0aF0rKzsKKworCQluZmFfcm91dGVfdG9fZWxlbSh3aW5zdGF0ZSwg Y3R4LCBzdGF0ZSwgbmV4dEVsZW0sIGN1cnJlbnRQb3MsIGluaXRpYWxBZHZhbmNlKTsKKwl9CisJ ZWxzZQorCXsKKwkJLyoKKwkJICogQmV0d2VlbiBtaW4gYW5kIG1heCAod2l0aCBhdCBsZWFzdCBv bmUgaXRlcmF0aW9uKSAtIGNhbiBleGl0IG9yCisJCSAqIGxvb3AKKwkJICovCisJCVJQUkVsZW1J ZHgJZXhpdEFsdFByaW9yaXR5OworCQlSUFJORkFTdGF0ZSAqZXhpdFN0YXRlOworCQlSUFJQYXR0 ZXJuRWxlbWVudCAqanVtcEVsZW07CisJCVJQUlBhdHRlcm5FbGVtZW50ICpuZXh0RWxlbTsKKwor CQkvKiBQcmVzZXJ2ZSBhbHRQcmlvcml0eSBmb3IgZ3JlZWR5IGV4dGVuc2lvbiAqLworCQlleGl0 QWx0UHJpb3JpdHkgPSBzdGF0ZS0+YWx0UHJpb3JpdHk7CisJCWlmIChjdHgtPm1hdGNoZWRTdGF0 ZSAhPSBOVUxMKQorCQkJZXhpdEFsdFByaW9yaXR5ID0gY3R4LT5tYXRjaGVkU3RhdGUtPmFsdFBy aW9yaXR5OworCisJCS8qCisJCSAqIENyZWF0ZSBleGl0IHN0YXRlIGZpcnN0IChuZWVkIG9yaWdp bmFsIGNvdW50cyBiZWZvcmUgbW9kaWZ5aW5nCisJCSAqIHN0YXRlKQorCQkgKi8KKwkJZXhpdFN0 YXRlID0gbmZhX3N0YXRlX2NyZWF0ZSh3aW5zdGF0ZSwgZWxlbS0+bmV4dCwgZXhpdEFsdFByaW9y aXR5LAorCQkJCQkJCQkJIHN0YXRlLT5jb3VudHMsIHN0YXRlLT5pc0Fic29yYmFibGUpOworCQll eGl0U3RhdGUtPmNvdW50c1tkZXB0aF0gPSAwOworCQluZXh0RWxlbSA9ICZlbGVtZW50c1tleGl0 U3RhdGUtPmVsZW1JZHhdOworCisJCS8qIEVORC0+RU5EOiBpbmNyZW1lbnQgb3V0ZXIgRU5EJ3Mg Y291bnQgKi8KKwkJaWYgKFJQUkVsZW1Jc0VuZChuZXh0RWxlbSkgJiYgZXhpdFN0YXRlLT5jb3Vu dHNbbmV4dEVsZW0tPmRlcHRoXSA8IFJQUl9DT1VOVF9NQVgpCisJCQlleGl0U3RhdGUtPmNvdW50 c1tuZXh0RWxlbS0+ZGVwdGhdKys7CisKKwkJLyogUm91dGUgbG9vcCBzdGF0ZSBmaXJzdCAoZWFy bGllciBpbiBwYXR0ZXJuID0gbGV4aWNhbCBvcmRlcikgKi8KKwkJZm9yIChpbnQgZCA9IGRlcHRo ICsgMTsgZCA8IHBhdHRlcm4tPm1heERlcHRoOyBkKyspCisJCQlzdGF0ZS0+Y291bnRzW2RdID0g MDsKKwkJc3RhdGUtPmVsZW1JZHggPSBlbGVtLT5qdW1wOworCQlqdW1wRWxlbSA9ICZlbGVtZW50 c1tzdGF0ZS0+ZWxlbUlkeF07CisKKwkJbmZhX3JvdXRlX3RvX2VsZW0od2luc3RhdGUsIGN0eCwg c3RhdGUsIGp1bXBFbGVtLCBjdXJyZW50UG9zLCBpbml0aWFsQWR2YW5jZSk7CisKKwkJLyogVGhl biByb3V0ZSBleGl0IHN0YXRlICovCisJCW5mYV9yb3V0ZV90b19lbGVtKHdpbnN0YXRlLCBjdHgs IGV4aXRTdGF0ZSwgbmV4dEVsZW0sIGN1cnJlbnRQb3MsIGluaXRpYWxBZHZhbmNlKTsKKwl9Cit9 CisKKy8qCisgKiBuZmFfYWR2YW5jZV92YXIKKyAqCisgKiBIYW5kbGUgVkFSIGVsZW1lbnQ6IGxv b3AvZXhpdCB0cmFuc2l0aW9ucy4KKyAqIEFmdGVyIG1hdGNoIHBoYXNlLCBhbGwgVkFSIHN0YXRl cyBoYXZlIG1hdGNoZWQgLSBkZWNpZGUgbmV4dCBhY3Rpb24uCisgKi8KK3N0YXRpYyB2b2lkCitu ZmFfYWR2YW5jZV92YXIoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpj dHgsCisJCQkJUlBSTkZBU3RhdGUgKnN0YXRlLCBSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSwKKwkJ CQlpbnQ2NCBjdXJyZW50UG9zLCBib29sIGluaXRpYWxBZHZhbmNlKQoreworCVJQUlBhdHRlcm4g KnBhdHRlcm4gPSB3aW5zdGF0ZS0+cnBQYXR0ZXJuOworCVJQUlBhdHRlcm5FbGVtZW50ICplbGVt ZW50cyA9IHBhdHRlcm4tPmVsZW1lbnRzOworCWludAkJCWRlcHRoID0gZWxlbS0+ZGVwdGg7CisJ aW50MzIJCWNvdW50ID0gc3RhdGUtPmNvdW50c1tkZXB0aF07CisJYm9vbAkJY2FuTG9vcCA9IChl bGVtLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORiB8fCBjb3VudCA8IGVsZW0tPm1heCk7CisJYm9v bAkJY2FuRXhpdCA9IChjb3VudCA+PSBlbGVtLT5taW4pOworCisJLyogQWZ0ZXIgYSBzdWNjZXNz ZnVsIG1hdGNoLCBjb3VudCA+PSAxLCBzbyBhdCBsZWFzdCBvbmUgbXVzdCBiZSB0cnVlICovCisJ QXNzZXJ0KGNhbkxvb3AgfHwgY2FuRXhpdCk7CisKKwlpZiAoY2FuTG9vcCAmJiBjYW5FeGl0KQor CXsKKwkJLyogQm90aDogY2xvbmUgZm9yIGxvb3AsIG1vZGlmeSBvcmlnaW5hbCBmb3IgZXhpdCAq LworCQlSUFJORkFTdGF0ZSAqbG9vcFN0YXRlOworCQlSUFJQYXR0ZXJuRWxlbWVudCAqbmV4dEVs ZW07CisKKwkJbG9vcFN0YXRlID0gbmZhX3N0YXRlX2NyZWF0ZSh3aW5zdGF0ZSwgc3RhdGUtPmVs ZW1JZHgsIHN0YXRlLT5hbHRQcmlvcml0eSwKKwkJCQkJCQkJCSBzdGF0ZS0+Y291bnRzLCBzdGF0 ZS0+aXNBYnNvcmJhYmxlKTsKKwkJbmZhX2FkZF9zdGF0ZV91bmlxdWUod2luc3RhdGUsIGN0eCwg bG9vcFN0YXRlKTsKKworCQkvKiBFeGl0OiBhZHZhbmNlIHRvIG5leHQgZWxlbWVudCAqLworCQlz dGF0ZS0+Y291bnRzW2RlcHRoXSA9IDA7CisJCXN0YXRlLT5lbGVtSWR4ID0gZWxlbS0+bmV4dDsK KwkJbmV4dEVsZW0gPSAmZWxlbWVudHNbc3RhdGUtPmVsZW1JZHhdOworCisJCW5mYV9yb3V0ZV90 b19lbGVtKHdpbnN0YXRlLCBjdHgsIHN0YXRlLCBuZXh0RWxlbSwgY3VycmVudFBvcywgaW5pdGlh bEFkdmFuY2UpOworCX0KKwllbHNlIGlmIChjYW5Mb29wKQorCXsKKwkJLyogTG9vcCBvbmx5OiBr ZWVwIHN0YXRlIGFzLWlzICovCisJCW5mYV9hZGRfc3RhdGVfdW5pcXVlKHdpbnN0YXRlLCBjdHgs IHN0YXRlKTsKKwl9CisJZWxzZSBpZiAoY2FuRXhpdCkKKwl7CisJCS8qIEV4aXQgb25seTogYWR2 YW5jZSB0byBuZXh0IGVsZW1lbnQgKi8KKwkJUlBSUGF0dGVybkVsZW1lbnQgKm5leHRFbGVtOwor CisJCXN0YXRlLT5jb3VudHNbZGVwdGhdID0gMDsKKwkJc3RhdGUtPmVsZW1JZHggPSBlbGVtLT5u ZXh0OworCQluZXh0RWxlbSA9ICZlbGVtZW50c1tzdGF0ZS0+ZWxlbUlkeF07CisKKwkJbmZhX3Jv dXRlX3RvX2VsZW0od2luc3RhdGUsIGN0eCwgc3RhdGUsIG5leHRFbGVtLCBjdXJyZW50UG9zLCBp bml0aWFsQWR2YW5jZSk7CisJfQorfQorCisvKgorICogbmZhX2FkdmFuY2Vfc3RhdGUKKyAqCisg KiBSZWN1cnNpdmVseSBwcm9jZXNzIGEgc2luZ2xlIHN0YXRlIHRocm91Z2ggZXBzaWxvbiB0cmFu c2l0aW9ucy4KKyAqIFVzZXMgREZTIHRyYXZlcnNhbCB0byBtYWludGFpbiBsZXhpY2FsIG9yZGVy OiBsb3dlciBhbHRQcmlvcml0eSBwYXRocworICogYXJlIGZ1bGx5IHByb2Nlc3NlZCBiZWZvcmUg aGlnaGVyIGFsdFByaW9yaXR5IHBhdGhzLCBlbnN1cmluZyBzdGF0ZXMKKyAqIGFyZSBhZGRlZCB0 byBjdHgtPnN0YXRlcyBpbiBsZXhpY2FsIG9yZGVyLgorICovCitzdGF0aWMgdm9pZAorbmZhX2Fk dmFuY2Vfc3RhdGUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgs CisJCQkJICBSUFJORkFTdGF0ZSAqc3RhdGUsIGludDY0IGN1cnJlbnRQb3MsIGJvb2wgaW5pdGlh bEFkdmFuY2UpCit7CisJUlBSUGF0dGVybiAqcGF0dGVybiA9IHdpbnN0YXRlLT5ycFBhdHRlcm47 CisJUlBSUGF0dGVybkVsZW1lbnQgKmVsZW07CisKKwlBc3NlcnQoc3RhdGUtPmVsZW1JZHggPj0g MCAmJiBzdGF0ZS0+ZWxlbUlkeCA8IHBhdHRlcm4tPm51bUVsZW1lbnRzKTsKKwllbGVtID0gJnBh dHRlcm4tPmVsZW1lbnRzW3N0YXRlLT5lbGVtSWR4XTsKKworCXN3aXRjaCAoZWxlbS0+dmFySWQp CisJeworCQljYXNlIFJQUl9WQVJJRF9GSU46CisJCQkvKiBGSU46IHJlY29yZCBtYXRjaCAoc2tp cCBmb3IgaW5pdGlhbCBhZHZhbmNlKSAqLworCQkJaWYgKCFpbml0aWFsQWR2YW5jZSkKKwkJCQlu ZmFfYWRkX21hdGNoZWRfc3RhdGUod2luc3RhdGUsIGN0eCwgc3RhdGUsIGN1cnJlbnRQb3MpOwor CQkJZWxzZQorCQkJCW5mYV9zdGF0ZV9mcmVlKHdpbnN0YXRlLCBzdGF0ZSk7CisJCQlicmVhazsK KworCQljYXNlIFJQUl9WQVJJRF9BTFQ6CisJCQluZmFfYWR2YW5jZV9hbHQod2luc3RhdGUsIGN0 eCwgc3RhdGUsIGVsZW0sIGN1cnJlbnRQb3MsIGluaXRpYWxBZHZhbmNlKTsKKwkJCWJyZWFrOwor CisJCWNhc2UgUlBSX1ZBUklEX0JFR0lOOgorCQkJbmZhX2FkdmFuY2VfYmVnaW4od2luc3RhdGUs IGN0eCwgc3RhdGUsIGVsZW0sIGN1cnJlbnRQb3MsIGluaXRpYWxBZHZhbmNlKTsKKwkJCWJyZWFr OworCisJCWNhc2UgUlBSX1ZBUklEX0VORDoKKwkJCW5mYV9hZHZhbmNlX2VuZCh3aW5zdGF0ZSwg Y3R4LCBzdGF0ZSwgZWxlbSwgY3VycmVudFBvcywgaW5pdGlhbEFkdmFuY2UpOworCQkJYnJlYWs7 CisKKwkJZGVmYXVsdDoKKwkJCS8qIFZBUiBlbGVtZW50ICovCisJCQluZmFfYWR2YW5jZV92YXIo d2luc3RhdGUsIGN0eCwgc3RhdGUsIGVsZW0sIGN1cnJlbnRQb3MsIGluaXRpYWxBZHZhbmNlKTsK KwkJCWJyZWFrOworCX0KK30KKworLyoKKyAqIG5mYV9hZHZhbmNlCisgKgorICogQWR2YW5jZSBw aGFzZSAoZGl2ZXJnZW5jZSk6IHRyYW5zaXRpb24gZnJvbSBhbGwgc3Vydml2aW5nIHN0YXRlcy4K KyAqIENhbGxlZCBhZnRlciBtYXRjaCBwaGFzZSB3aXRoIG1hdGNoZWQgVkFSIHN0YXRlcywgb3Ig YXQgY29udGV4dCBjcmVhdGlvbgorICogZm9yIGluaXRpYWwgZXBzaWxvbiBleHBhbnNpb24gKGlu aXRpYWxBZHZhbmNlPXRydWUgc2tpcHMgRklOIG1hdGNoZXMpLgorICoKKyAqIFByb2Nlc3NlcyBz dGF0ZXMgaW4gb3JkZXIsIHVzaW5nIHJlY3Vyc2l2ZSBERlMgdG8gbWFpbnRhaW4gbGV4aWNhbCBv cmRlci4KKyAqLworc3RhdGljIHZvaWQKK25mYV9hZHZhbmNlKFdpbmRvd0FnZ1N0YXRlICp3aW5z dGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LCBpbnQ2NCBjdXJyZW50UG9zLAorCQkJYm9vbCBpbml0 aWFsQWR2YW5jZSkKK3sKKwlSUFJORkFTdGF0ZSAqc3RhdGVzID0gY3R4LT5zdGF0ZXM7CisJUlBS TkZBU3RhdGUgKnN0YXRlOworCisJY3R4LT5zdGF0ZXMgPSBOVUxMOwkJCS8qIFdpbGwgcmVidWls ZCAqLworCisJLyogUHJvY2VzcyBlYWNoIHN0YXRlIGluIG9yZGVyICovCisJd2hpbGUgKHN0YXRl cyAhPSBOVUxMKQorCXsKKwkJc3RhdGUgPSBzdGF0ZXM7CisJCXN0YXRlcyA9IHN0YXRlcy0+bmV4 dDsKKwkJc3RhdGUtPm5leHQgPSBOVUxMOworCisJCW5mYV9hZHZhbmNlX3N0YXRlKHdpbnN0YXRl LCBjdHgsIHN0YXRlLCBjdXJyZW50UG9zLCBpbml0aWFsQWR2YW5jZSk7CisJfQorfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3dpbmRvd2Z1bmNzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvd2luZG93ZnVuY3MuYwppbmRleCA3OGI3ZjA1YWJhMi4uZWZiNjBjOTkwNTIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC93aW5kb3dmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC93aW5kb3dmdW5jcy5jCkBAIC00MSw3ICs0MSw2IEBAIHN0YXRpYyBi b29sIHJhbmtfdXAoV2luZG93T2JqZWN0IHdpbm9iaik7CiBzdGF0aWMgRGF0dW0gbGVhZGxhZ19j b21tb24oRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCiAJCQkJCQkJYm9vbCBmb3J3YXJkLCBib29s IHdpdGhvZmZzZXQsIGJvb2wgd2l0aGRlZmF1bHQpOwogCi0KIC8qCiAgKiB1dGlsaXR5IHJvdXRp bmUgZm9yICpfcmFuayBmdW5jdGlvbnMuCiAgKi8KQEAgLTY4Myw3ICs2ODIsNyBAQCB3aW5kb3df bGFzdF92YWx1ZShQR19GVU5DVElPTl9BUkdTKQogCiAJV2luQ2hlY2tBbmRJbml0aWFsaXplTnVs bFRyZWF0bWVudCh3aW5vYmosIHRydWUsIGZjaW5mbyk7CiAJcmVzdWx0ID0gV2luR2V0RnVuY0Fy Z0luRnJhbWUod2lub2JqLCAwLAotCQkJCQkJCQkgIDAsIFdJTkRPV19TRUVLX1RBSUwsIHRydWUs CisJCQkJCQkJCSAgMCwgV0lORE9XX1NFRUtfVEFJTCwgZmFsc2UsCiAJCQkJCQkJCSAgJmlzbnVs bCwgTlVMTCk7CiAJaWYgKGlzbnVsbCkKIAkJUEdfUkVUVVJOX05VTEwoKTsKQEAgLTcyNCwzICs3 MjMsMjUgQEAgd2luZG93X250aF92YWx1ZShQR19GVU5DVElPTl9BUkdTKQogCiAJUEdfUkVUVVJO X0RBVFVNKHJlc3VsdCk7CiB9CisKKy8qCisgKiBwcmV2CisgKiBEdW1teSBmdW5jdGlvbiB0byBp bnZva2UgUlBSJ3MgbmF2aWdhdGlvbiBvcGVyYXRvciAiUFJFViIuCisgKiBUaGlzIGlzICpub3Qq IGEgd2luZG93IGZ1bmN0aW9uLgorICovCitEYXR1bQord2luZG93X3ByZXYoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlQR19SRVRVUk5fREFUVU0oUEdfR0VUQVJHX0RBVFVNKDApKTsKK30KKworLyoK KyAqIG5leHQKKyAqIER1bW15IGZ1bmN0aW9uIHRvIGludm9rZSBSUFIncyBuYXZpZ2F0aW9uIG9w ZXJhdGlvbiAiTkVYVCIuCisgKiBUaGlzIGlzICpub3QqIGEgd2luZG93IGZ1bmN0aW9uLgorICov CitEYXR1bQord2luZG93X25leHQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlQR19SRVRVUk5fREFU VU0oUEdfR0VUQVJHX0RBVFVNKDApKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDgz ZjY1MDFkZjM4Li5lYTM1YjljYjFkZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMDg1 Myw2ICsxMDg1MywxMiBAQAogeyBvaWQgPT4gJzMxMTQnLCBkZXNjciA9PiAnZmV0Y2ggdGhlIE50 aCByb3cgdmFsdWUnLAogICBwcm9uYW1lID0+ICdudGhfdmFsdWUnLCBwcm9raW5kID0+ICd3Jywg cHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcsCiAgIHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50 IGludDQnLCBwcm9zcmMgPT4gJ3dpbmRvd19udGhfdmFsdWUnIH0sCit7IG9pZCA9PiAnODEyNics IGRlc2NyID0+ICdwcmV2aW91cyB2YWx1ZScsCisgIHByb25hbWUgPT4gJ3ByZXYnLCBwcm92b2xh dGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAorICBwcm9hcmd0eXBlcyA9 PiAnYW55ZWxlbWVudCcsIHByb3NyYyA9PiAnd2luZG93X3ByZXYnIH0sCit7IG9pZCA9PiAnODEy NycsIGRlc2NyID0+ICduZXh0IHZhbHVlJywKKyAgcHJvbmFtZSA9PiAnbmV4dCcsIHByb3ZvbGF0 aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcsCisgIHByb2FyZ3R5cGVzID0+ ICdhbnllbGVtZW50JywgcHJvc3JjID0+ICd3aW5kb3dfbmV4dCcgfSwKIAogIyBmdW5jdGlvbnMg Zm9yIHJhbmdlIHR5cGVzCiB7IG9pZCA9PiAnMzgzMicsIGRlc2NyID0+ICdJL08nLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaAppbmRleCA2M2MwNjdkNWFhZS4uY2Q2Zjc5NGY2MmIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAibm9kZXMvcGxhbm5vZGVzLmgiCiAj aW5jbHVkZSAibm9kZXMvdGlkYml0bWFwLmgiCiAjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRk ZWZzLmgiCisjaW5jbHVkZSAicmVnZXgvcmVnZXguaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRp dGlvbl92YXJpYWJsZS5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1 dGlscy9xdWVyeWVudmlyb25tZW50LmgiCkBAIC0yNTEzLDYgKzI1MTQsNzYgQEAgdHlwZWRlZiBl bnVtIFdpbmRvd0FnZ1N0YXR1cwogCQkJCQkJCQkJICogdHVwbGVzIGR1cmluZyBzcG9vbCAqLwog fSBXaW5kb3dBZ2dTdGF0dXM7CiAKKyNkZWZpbmUJUkZfTk9UX0RFVEVSTUlORUQJMAorI2RlZmlu ZQlSRl9GUkFNRV9IRUFECQkxCisjZGVmaW5lCVJGX1NLSVBQRUQJCQkyCisjZGVmaW5lCVJGX1VO TUFUQ0hFRAkJMworCisvKgorICogUlBSTkZBU3RhdGUgLSBzaW5nbGUgTkZBIHN0YXRlIGZvciBw YXR0ZXJuIG1hdGNoaW5nCisgKgorICogY291bnRzW10gdHJhY2tzIHJlcGV0aXRpb24gY291bnRz IGF0IGVhY2ggbmVzdGluZyBkZXB0aC4KKyAqIGFsdFByaW9yaXR5IHRyYWNrcyBsZXhpY2FsIG9y ZGVyIGZvciBhbHRlcm5hdGlvbiAobG93ZXIgPSBlYXJsaWVyIGFsdGVybmF0aXZlKS4KKyAqCisg KiBpc0Fic29yYmFibGUgdHJhY2tzIGlmIHN0YXRlIGlzIGluIGFic29yYmFibGUgcmVnaW9uIChB QlNPUkJBQkxFX0JSQU5DSCkuCisgKiBNb25vdG9uaWMgcHJvcGVydHk6IG9uY2UgZmFsc2UsIHN0 YXlzIGZhbHNlIChjYW4ndCByZS1lbnRlciByZWdpb24pLgorICoKKyAqIEFic29ycHRpb24gY29t cGFyaXNvbiB1c2VzIGVsZW1JZHggYW5kIGNvdW50c1tkZXB0aF0gZGlyZWN0bHkgYmVjYXVzZToK KyAqICAgLSBWQVIgZWxlbWVudHMgY29uc3VtZSBhIHJvdywgZm9yY2luZyBzdGF0ZXMgdG8gd2Fp dCBmb3IgbmV4dCByb3cKKyAqICAgLSBFTkQgbG9vcCBwdXRzIHN0YXRlcyBhdCBncm91cCBzdGFy dCB3aXRoIGl0ZXJhdGlvbiBjb3VudCBwcmVzZXJ2ZWQKKyAqICAgLSBBdCByb3cgZW5kLCBjb21w YXJhYmxlIHN0YXRlcyBhcmUgYXQgdGhlIHNhbWUgcG9zaXRpb24gKGVsZW1JZHgpCisgKi8KK3R5 cGVkZWYgc3RydWN0IFJQUk5GQVN0YXRlCit7CisJc3RydWN0IFJQUk5GQVN0YXRlICpuZXh0Owkv KiBuZXh0IHN0YXRlIGluIGxpbmtlZCBsaXN0ICovCisJaW50MTYJCWVsZW1JZHg7CQkvKiBjdXJy ZW50IHBhdHRlcm4gZWxlbWVudCBpbmRleCAqLworCWludDE2CQlhbHRQcmlvcml0eTsJLyogbGV4 aWNhbCBvcmRlciBwcmlvcml0eSAobG93ZXIgPSBwcmVmZXJyZWQpICovCisJYm9vbAkJaXNBYnNv cmJhYmxlOwkvKiB0cnVlIGlmIHN0YXRlIGlzIGluIGFic29yYmFibGUgcmVnaW9uICovCisJaW50 MzIJCWNvdW50c1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwkvKiByZXBldGl0aW9uIGNvdW50cyBi eSBkZXB0aCAqLworfSBSUFJORkFTdGF0ZTsKKworLyoKKyAqIFJQUk5GQUNvbnRleHQgLSBjb250 ZXh0IGZvciBORkEgcGF0dGVybiBtYXRjaGluZyBleGVjdXRpb24KKyAqCisgKiBUd28tZmxhZyBh YnNvcnB0aW9uIGRlc2lnbjoKKyAqICAgaGFzQWJzb3JiYWJsZVN0YXRlOiBjYW4gdGhpcyBjb250 ZXh0IGFic29yYiBvdGhlcnM/ICg+PTEgYWJzb3JiYWJsZSBzdGF0ZSkKKyAqICAgICAtIE1vbm90 b25pYzogdHJ1ZS0+ZmFsc2Ugb25seSwgY2Fubm90IHJlY292ZXIgb25jZSBmYWxzZQorICogICAg IC0gVXNlZCB0byBza2lwIGFic29ycHRpb24gYXR0ZW1wdHMgb25jZSBhbGwgYWJzb3JiYWJsZSBz dGF0ZXMgYXJlIGdvbmUKKyAqICAgYWxsU3RhdGVzQWJzb3JiYWJsZTogY2FuIHRoaXMgY29udGV4 dCBiZSBhYnNvcmJlZD8gKEFMTCBzdGF0ZXMgYWJzb3JiYWJsZSkKKyAqICAgICAtIER5bmFtaWM6 IGNhbiBjaGFuZ2UgZmFsc2UtPnRydWUgKHdoZW4gbm9uLWFic29yYmFibGUgc3RhdGVzIGRpZSkK KyAqICAgICAtIFVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY29udGV4dCBpcyBlbGlnaWJsZSBm b3IgYWJzb3JwdGlvbgorICovCit0eXBlZGVmIHN0cnVjdCBSUFJORkFDb250ZXh0Cit7CisJc3Ry dWN0IFJQUk5GQUNvbnRleHQgKm5leHQ7IC8qIG5leHQgY29udGV4dCBpbiBsaW5rZWQgbGlzdCAq LworCXN0cnVjdCBSUFJORkFDb250ZXh0ICpwcmV2OyAvKiBwcmV2aW91cyBjb250ZXh0IChmb3Ig cmV2ZXJzZSB0cmF2ZXJzYWwpICovCisJUlBSTkZBU3RhdGUgKnN0YXRlczsJCS8qIGFjdGl2ZSBz dGF0ZXMgKGxpbmtlZCBsaXN0KSAqLworCisJaW50NjQJCW1hdGNoU3RhcnRSb3c7CS8qIHJvdyB3 aGVyZSBtYXRjaCBzdGFydGVkICovCisJaW50NjQJCW1hdGNoRW5kUm93OwkvKiByb3cgd2hlcmUg bWF0Y2ggZW5kZWQgKC0xID0gbm8gbWF0Y2gpICovCisJaW50NjQJCWxhc3RQcm9jZXNzZWRSb3c7 CS8qIGxhc3Qgcm93IHByb2Nlc3NlZCAoZm9yIGZhaWwgZGVwdGgpICovCisJUlBSTkZBU3RhdGUg Km1hdGNoZWRTdGF0ZTsJLyogRklOIHN0YXRlIGZvciBncmVlZHkgZmFsbGJhY2sgKGNsb25lZCkg Ki8KKworCS8qIFR3by1mbGFnIGFic29ycHRpb24gb3B0aW1pemF0aW9uICovCisJYm9vbAkJaGFz QWJzb3JiYWJsZVN0YXRlOyAvKiBjYW4gYWJzb3JiIG90aGVycyAoPj0xIGFic29yYmFibGUKKwkJ CQkJCQkJCSAqIHN0YXRlKSAqLworCWJvb2wJCWFsbFN0YXRlc0Fic29yYmFibGU7CS8qIGNhbiBi ZSBhYnNvcmJlZCAoQUxMIHN0YXRlcworCQkJCQkJCQkJCSAqIGFic29yYmFibGUpICovCit9IFJQ Uk5GQUNvbnRleHQ7CisKKy8qCisgKiBORkFMZW5ndGhTdGF0cworICoKKyAqIFN0YXRpc3RpY3Mg Zm9yIGxlbmd0aCBtZWFzdXJlbWVudHMgKG1pbi9tYXgvdG90YWwpIHVzZWQgZm9yIGNvbXB1dGlu ZworICogYXZlcmFnZSBsZW5ndGhzIGluIEVYUExBSU4gQU5BTFlaRSBvdXRwdXQuCisgKi8KK3R5 cGVkZWYgc3RydWN0IE5GQUxlbmd0aFN0YXRzCit7CisJaW50NjQJCW1pbjsJCQkvKiBtaW5pbXVt IGxlbmd0aCAqLworCWludDY0CQltYXg7CQkJLyogbWF4aW11bSBsZW5ndGggKi8KKwlpbnQ2NAkJ dG90YWw7CQkJLyogdG90YWwgbGVuZ3RoIChmb3IgY29tcHV0aW5nIGF2ZXJhZ2UpICovCit9IE5G QUxlbmd0aFN0YXRzOworCiB0eXBlZGVmIHN0cnVjdCBXaW5kb3dBZ2dTdGF0ZQogewogCVNjYW5T dGF0ZQlzczsJCQkJLyogaXRzIGZpcnN0IGZpZWxkIGlzIE5vZGVUYWcgKi8KQEAgLTI1NzIsNiAr MjY0Myw0MiBAQCB0eXBlZGVmIHN0cnVjdCBXaW5kb3dBZ2dTdGF0ZQogCWludDY0CQlncm91cGhl YWRwb3M7CS8qIGN1cnJlbnQgcm93J3MgcGVlciBncm91cCBoZWFkIHBvc2l0aW9uICovCiAJaW50 NjQJCWdyb3VwdGFpbHBvczsJLyogIiAiICIgIiB0YWlsIHBvc2l0aW9uIChncm91cCBlbmQrMSkg Ki8KIAorCS8qIHRoZXNlIGZpZWxkcyBhcmUgdXNlZCBpbiBSb3cgcGF0dGVybiByZWNvZ25pdGlv bjogKi8KKwlSUFNraXBUbwlycFNraXBUbzsJCS8qIFJvdyBQYXR0ZXJuIFNraXAgVG8gdHlwZSAq LworCXN0cnVjdCBSUFJQYXR0ZXJuICpycFBhdHRlcm47CS8qIGNvbXBpbGVkIHBhdHRlcm4gZm9y IE5GQSBleGVjdXRpb24gKi8KKwlMaXN0CSAgICpkZWZpbmVWYXJpYWJsZUxpc3Q7IC8qIGxpc3Qg b2Ygcm93IHBhdHRlcm4gZGVmaW5pdGlvbgorCQkJCQkJCQkJICogdmFyaWFibGVzIChsaXN0IG9m IFN0cmluZykgKi8KKwlMaXN0CSAgICpkZWZpbmVDbGF1c2VMaXN0OwkvKiBleHByZXNzaW9uIGZv ciByb3cgcGF0dGVybiBkZWZpbml0aW9uCisJCQkJCQkJCQkgKiBzZWFyY2ggY29uZGl0aW9ucyBF eHByU3RhdGUgbGlzdCAqLworCVJQUk5GQUNvbnRleHQgKm5mYUNvbnRleHQ7CS8qIGFjdGl2ZSBt YXRjaGluZyBjb250ZXh0cyAoaGVhZCkgKi8KKwlSUFJORkFDb250ZXh0ICpuZmFDb250ZXh0VGFp bDsJLyogdGFpbCBvZiBhY3RpdmUgY29udGV4dHMgKGZvciByZXZlcnNlCisJCQkJCQkJCQkgKiB0 cmF2ZXJzYWwpICovCisJUlBSTkZBQ29udGV4dCAqbmZhQ29udGV4dEZyZWU7CS8qIHJlY3ljbGVk IE5GQSBjb250ZXh0IG5vZGVzICovCisJUlBSTkZBU3RhdGUgKm5mYVN0YXRlRnJlZTsJLyogcmVj eWNsZWQgTkZBIHN0YXRlIG5vZGVzICovCisJU2l6ZQkJbmZhU3RhdGVTaXplOwkvKiBwcmUtY2Fs Y3VsYXRlZCBSUFJORkFTdGF0ZSBzaXplICovCisJYm9vbAkgICAqbmZhVmFyTWF0Y2hlZDsJLyog cGVyLXJvdyBjYWNoZTogdmFyTWF0Y2hlZFt2YXJJZF0gZm9yIHZhcklkCisJCQkJCQkJCSAqIDwg bnVtRGVmaW5lcyAqLworCWludDY0CQluZmFMYXN0UHJvY2Vzc2VkUm93OwkvKiBsYXN0IHJvdyBw cm9jZXNzZWQgYnkgTkZBICgtMSA9CisJCQkJCQkJCQkJICogbm9uZSkgKi8KKworCS8qIE5GQSBz dGF0aXN0aWNzIGZvciBFWFBMQUlOIEFOQUxZWkUgKi8KKwlpbnQ2NAkJbmZhU3RhdGVzQWN0aXZl OwkvKiBjdXJyZW50IGFjdGl2ZSBzdGF0ZXMgKGludGVybmFsKSAqLworCWludDY0CQluZmFTdGF0 ZXNNYXg7CS8qIHBlYWsgYWN0aXZlIHN0YXRlcyAqLworCWludDY0CQluZmFTdGF0ZXNUb3RhbENy ZWF0ZWQ7CS8qIHRvdGFsIHN0YXRlcyBhbGxvY2F0ZWQgKi8KKwlpbnQ2NAkJbmZhU3RhdGVzTWVy Z2VkOwkvKiBzdGF0ZXMgbWVyZ2VkIChkZWR1cGxpY2F0ZWQpICovCisJaW50NjQJCW5mYUNvbnRl eHRzQWN0aXZlOwkvKiBjdXJyZW50IGFjdGl2ZSBjb250ZXh0cyAoaW50ZXJuYWwpICovCisJaW50 NjQJCW5mYUNvbnRleHRzTWF4OyAvKiBwZWFrIGFjdGl2ZSBjb250ZXh0cyAqLworCWludDY0CQlu ZmFDb250ZXh0c1RvdGFsQ3JlYXRlZDsJLyogdG90YWwgY29udGV4dHMgYWxsb2NhdGVkICovCisJ aW50NjQJCW5mYUNvbnRleHRzQWJzb3JiZWQ7CS8qIGNvbnRleHRzIGFic29yYmVkIChvcHRpbWl6 YXRpb24pICovCisJaW50NjQJCW5mYUNvbnRleHRzU2tpcHBlZDsgLyogY29udGV4dHMgc2tpcHBl ZCAoU0tJUCBQQVNUIExBU1QgUk9XKSAqLworCWludDY0CQluZmFDb250ZXh0c1BydW5lZDsJLyog Y29udGV4dHMgcHJ1bmVkIG9uIGZpcnN0IHJvdyAqLworCWludDY0CQluZmFNYXRjaGVzU3VjY2Vl ZGVkOwkvKiBzdWNjZXNzZnVsIHBhdHRlcm4gbWF0Y2hlcyAqLworCWludDY0CQluZmFNYXRjaGVz RmFpbGVkOwkvKiBmYWlsZWQgcGF0dGVybiBtYXRjaGVzICovCisJTkZBTGVuZ3RoU3RhdHMgbmZh TWF0Y2hMZW47IC8qIHN1Y2Nlc3NmdWwgbWF0Y2ggbGVuZ3RoIHN0YXRzICovCisJTkZBTGVuZ3Ro U3RhdHMgbmZhRmFpbExlbjsJLyogbWlzbWF0Y2ggbGVuZ3RoIHN0YXRzICovCisJTkZBTGVuZ3Ro U3RhdHMgbmZhQWJzb3JiZWRMZW47CS8qIGFic29yYmVkIGNvbnRleHQgbGVuZ3RoIHN0YXRzICov CisJTkZBTGVuZ3RoU3RhdHMgbmZhU2tpcHBlZExlbjsJLyogc2tpcHBlZCBjb250ZXh0IGxlbmd0 aCBzdGF0cyAqLworCiAJTWVtb3J5Q29udGV4dCBwYXJ0Y29udGV4dDsJLyogY29udGV4dCBmb3Ig cGFydGl0aW9uLWxpZmVzcGFuIGRhdGEgKi8KIAlNZW1vcnlDb250ZXh0IGFnZ2NvbnRleHQ7CS8q IHNoYXJlZCBjb250ZXh0IGZvciBhZ2dyZWdhdGUgd29ya2luZyBkYXRhICovCiAJTWVtb3J5Q29u dGV4dCBjdXJhZ2djb250ZXh0OwkvKiBjdXJyZW50IGFnZ3JlZ2F0ZSdzIHdvcmtpbmcgZGF0YSAq LwpAQCAtMjU5OSw2ICsyNzA2LDE4IEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd0FnZ1N0YXRlCiAJ VHVwbGVUYWJsZVNsb3QgKmFnZ19yb3dfc2xvdDsKIAlUdXBsZVRhYmxlU2xvdCAqdGVtcF9zbG90 XzE7CiAJVHVwbGVUYWJsZVNsb3QgKnRlbXBfc2xvdF8yOworCisJLyogdGVtcG9yYXJ5IHNsb3Rz IGZvciBSUFIgKi8KKwlUdXBsZVRhYmxlU2xvdCAqcHJldl9zbG90OwkvKiBQUkVWIHJvdyBuYXZp Z2F0aW9uIG9wZXJhdG9yICovCisJVHVwbGVUYWJsZVNsb3QgKm5leHRfc2xvdDsJLyogTkVYVCBy b3cgbmF2aWdhdGlvbiBvcGVyYXRvciAqLworCVR1cGxlVGFibGVTbG90ICpudWxsX3Nsb3Q7CS8q IGFsbCBOVUxMIHNsb3QgKi8KKworCS8qCisJICogRWFjaCBieXRlIGNvcnJlc3BvbmRzIHRvIGEg cm93IHBvc2l0aW9uZWQgYXQgYWJzb2x1dGUgaXRzIHBvcyBpbgorCSAqIHBhcnRpdGlvbi4gIFNl ZSBhYm92ZSBkZWZpbml0aW9uIGZvciBSRl8qLiBVc2VkIGZvciBSUFIuCisJICovCisJY2hhcgkg ICAqcmVkdWNlZF9mcmFtZV9tYXA7CisJaW50NjQJCWFsbG9jX3N6OwkJLyogc2l6ZSBvZiB0aGUg bWFwICovCiB9IFdpbmRvd0FnZ1N0YXRlOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCi0tIAoyLjQz LjAKCg== ----Next_Part(Sun_Feb_15_18_06_52_2026_930)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v43-0006-Row-pattern-recognition-patch-docs.patch" RnJvbSAxNjBiNjM2N2RmOTY4YzMyNDdhZDhhMzVhMjYxNzViMDFhY2Q4YTlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTdW4sIDE1IEZlYiAyMDI2IDE3OjQ3OjQ5ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDMg Ni84XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAoZG9jcykuCgotLS0KIGRvYy9zcmMv c2dtbC9hZHZhbmNlZC5zZ21sICAgICAgICAgfCAxNDMgKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0KIGRvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtd2luZG93LnNnbWwgfCAgNTMgKysrKysrKysr KysKIGRvYy9zcmMvc2dtbC9yZWYvc2VsZWN0LnNnbWwgICAgICAgfCAgODggKysrKysrKysrKysr KysrKystCiAzIGZpbGVzIGNoYW5nZWQsIDI3NyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9hZHZhbmNlZC5zZ21sIGIvZG9jL3NyYy9zZ21s L2FkdmFuY2VkLnNnbWwKaW5kZXggNDUxYmNiMjAyZWMuLmE3NmZiMjYzYTk0IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvYWR2YW5jZWQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvYWR2YW5jZWQu c2dtbApAQCAtNTQwLDEzICs1NDAsMTQ4IEBAIFdIRVJFIHBvcyAmbHQ7IDM7CiAgICAgdHdvIHJv d3MgZm9yIGVhY2ggZGVwYXJ0bWVudCkuCiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIFJv dyBwYXR0ZXJuIGNvbW1vbiBzeW50YXggY2FuIGJlIHVzZWQgdG8gcGVyZm9ybSByb3cgcGF0dGVy biByZWNvZ25pdGlvbgorICAgIGluIGEgcXVlcnkuIFRoZSByb3cgcGF0dGVybiBjb21tb24gc3lu dGF4IGluY2x1ZGVzIHR3byBzdWIKKyAgICBjbGF1c2VzOiA8bGl0ZXJhbD5ERUZJTkU8L2xpdGVy YWw+CisgICAgYW5kIDxsaXRlcmFsPlBBVFRFUk48L2xpdGVyYWw+LiA8bGl0ZXJhbD5ERUZJTkU8 L2xpdGVyYWw+IGRlZmluZXMKKyAgICBkZWZpbml0aW9uIHZhcmlhYmxlcyBhbG9uZyB3aXRoIGFu IGV4cHJlc3Npb24uIFRoZSBleHByZXNzaW9uIG11c3QgYmUgYQorICAgIGxvZ2ljYWwgZXhwcmVz c2lvbiwgd2hpY2ggbWVhbnMgaXQgbXVzdAorICAgIHJldHVybiA8bGl0ZXJhbD5UUlVFPC9saXRl cmFsPiwgPGxpdGVyYWw+RkFMU0U8L2xpdGVyYWw+CisgICAgb3IgPGxpdGVyYWw+TlVMTDwvbGl0 ZXJhbD4uIFRoZSBleHByZXNzaW9uIG1heSBjb21wcmlzZSBjb2x1bW4gcmVmZXJlbmNlcworICAg IGFuZCBmdW5jdGlvbnMuIFdpbmRvdyBmdW5jdGlvbnMsIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYW5k IHN1YnF1ZXJpZXMgYXJlCisgICAgbm90IGFsbG93ZWQuIEFuIGV4YW1wbGUgb2YgPGxpdGVyYWw+ REVGSU5FPC9saXRlcmFsPiBpcyBhcyBmb2xsb3dzLgorCis8cHJvZ3JhbWxpc3Rpbmc+CitERUZJ TkUKKyBMT1dQUklDRSBBUyBwcmljZSAmbHQ7PSAxMDAsCisgVVAgQVMgcHJpY2UgJmd0OyBQUkVW KHByaWNlKSwKKyBET1dOIEFTIHByaWNlICZsdDsgUFJFVihwcmljZSkKKzwvcHJvZ3JhbWxpc3Rp bmc+CisKKyAgICBOb3RlIHRoYXQgPGZ1bmN0aW9uPlBSRVY8L2Z1bmN0aW9uPiByZXR1cm5zIHRo ZSA8bGl0ZXJhbD5wcmljZTwvbGl0ZXJhbD4KKyAgICBjb2x1bW4gaW4gdGhlIHByZXZpb3VzIHJv dyBpZiBpdCdzIGNhbGxlZCBpbiBhIGNvbnRleHQgb2Ygcm93IHBhdHRlcm4KKyAgICByZWNvZ25p dGlvbi4gVGh1cyBpbiB0aGUgc2Vjb25kIGxpbmUgdGhlIGRlZmluaXRpb24gdmFyaWFibGUgIlVQ IgorICAgIGlzIDxsaXRlcmFsPlRSVUU8L2xpdGVyYWw+IHdoZW4gdGhlIHByaWNlIGNvbHVtbiBp biB0aGUgY3VycmVudCByb3cgaXMKKyAgICBncmVhdGVyIHRoYW4gdGhlIHByaWNlIGNvbHVtbiBp biB0aGUgcHJldmlvdXMgcm93LiBMaWtld2lzZSwgIkRPV04iCisgICAgaXMgPGxpdGVyYWw+VFJV RTwvbGl0ZXJhbD4gd2hlbiB0aGUKKyAgICA8bGl0ZXJhbD5wcmljZTwvbGl0ZXJhbD4gY29sdW1u IGluIHRoZSBjdXJyZW50IHJvdyBpcyBsb3dlciB0aGFuCisgICAgdGhlIDxsaXRlcmFsPnByaWNl PC9saXRlcmFsPiBjb2x1bW4gaW4gdGhlIHByZXZpb3VzIHJvdy4KKyAgIDwvcGFyYT4KKyAgIDxw YXJhPgorICAgIE9uY2UgPGxpdGVyYWw+REVGSU5FPC9saXRlcmFsPiBleGlzdHMsIDxsaXRlcmFs PlBBVFRFUk48L2xpdGVyYWw+IGNhbiBiZQorICAgIHVzZWQuIDxsaXRlcmFsPlBBVFRFUk48L2xp dGVyYWw+IGRlZmluZXMgYSBzZXF1ZW5jZSBvZiByb3dzIHRoYXQgc2F0aXNmaWVzCisgICAgY29u ZGl0aW9ucyBkZWZpbmVkIGluIHRoZSA8bGl0ZXJhbD5ERUZJTkU8L2xpdGVyYWw+IGNsYXVzZS4g IEZvciBleGFtcGxlCisgICAgZm9sbG93aW5nIDxsaXRlcmFsPlBBVFRFUk48L2xpdGVyYWw+IGRl ZmluZXMgYSBzZXF1ZW5jZSBvZiByb3dzIHN0YXJ0aW5nCisgICAgd2l0aCB0aGUgYSByb3cgc2F0 aXNmeWluZyAiTE9XUFJJQ0UiLCB0aGVuIG9uZSBvciBtb3JlIHJvd3Mgc2F0aXNmeWluZworICAg ICJVUCIgYW5kIGZpbmFsbHkgb25lIG9yIG1vcmUgcm93cyBzYXRpc2Z5aW5nICJET1dOIi4gUGF0 dGVybiB2YXJpYWJsZXMKKyAgICBjYW4gYmUgZm9sbG93ZWQgYnkgcXVhbnRpZmllcnM6ICIrIiBt ZWFucyBvbmUgb3IgbW9yZSBtYXRjaGVzLAorICAgICIqIiBtZWFucyB6ZXJvIG9yIG1vcmUgbWF0 Y2hlcywgIj8iIG1lYW5zIHplcm8gb3Igb25lIG1hdGNoIChvcHRpb25hbCksCisgICAgIntufSIg bWVhbnMgZXhhY3RseSBuIG1hdGNoZXMsICJ7bix9IiBtZWFucyBhdCBsZWFzdCBuIG1hdGNoZXMs CisgICAgInssbX0iIG1lYW5zIGF0IG1vc3QgbSBtYXRjaGVzLCBhbmQgIntuLG19IiBtZWFucyBi ZXR3ZWVuIG4gYW5kIG0gbWF0Y2hlcy4KKyAgICBQYXR0ZXJucyBjYW4gYmUgZ3JvdXBlZCB1c2lu ZyBwYXJlbnRoZXNlcyBhbmQgY29tYmluZWQgdXNpbmcgYWx0ZXJuYXRpb24KKyAgICAodGhlIHZl cnRpY2FsIGJhciAifCIgZm9yIE9SKS4gRm9yIGV4YW1wbGUsICIoVVAgRE9XTikrIiBtYXRjaGVz IG9uZSBvcgorICAgIG1vcmUgcmVwZXRpdGlvbnMgb2YgVVAgZm9sbG93ZWQgYnkgRE9XTi4KKyAg ICBJZiBhIHNlcXVlbmNlIG9mIHJvd3Mgd2hpY2ggc2F0aXNmaWVzIHRoZSBQQVRURVJOIGlzIGZv dW5kLCBpbgorICAgIHRoZSBzdGFydGluZyByb3cgYWxsIGNvbHVtbnMgb3IgZnVuY3Rpb25zIGFy ZSBzaG93biBpbiB0aGUgdGFyZ2V0CisgICAgbGlzdC4gTm90ZSB0aGF0IGFnZ3JlZ2F0aW9ucyBv bmx5IGxvb2sgaW50byB0aGUgbWF0Y2hlZCByb3dzLCByYXRoZXIgdGhhbgorICAgIHRoZSB3aG9s ZSBmcmFtZS4gT24gdGhlIHNlY29uZCBvciBzdWJzZXF1ZW50IHJvd3MgYWxsIHdpbmRvdyBmdW5j dGlvbnMgYXJlCisgICAgc2hvd24gYXMgTlVMTC4gQWdncmVnYXRlcyBhcmUgTlVMTCBvciAwIGRl cGVuZGluZyBvbiBpdHMgYWdncmVnYXRpb24KKyAgICBkZWZpbml0aW9uLiBBIGNvdW50KCkgYWdn cmVnYXRlIHNob3dzIDAuIEZvciByb3dzIHRoYXQgZG8gbm90IG1hdGNoIG9uIHRoZQorICAgIFBB VFRFUk4sIGNvbHVtbnMgYXJlIHNob3duIEFTIE5VTEwgdG9vLiBFeGFtcGxlIG9mCisgICAgYSA8 bGl0ZXJhbD5TRUxFQ1Q8L2xpdGVyYWw+IHVzaW5nIHRoZSA8bGl0ZXJhbD5ERUZJTkU8L2xpdGVy YWw+CisgICAgYW5kIDxsaXRlcmFsPlBBVFRFUk48L2xpdGVyYWw+IGNsYXVzZSBpcyBhcyBmb2xs b3dzLgorCis8cHJvZ3JhbWxpc3Rpbmc+CitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAor IGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsCisgbWF4KHByaWNlKSBPVkVSIHcsCisgY291bnQo cHJpY2UpIE9WRVIgdworRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkg Y29tcGFueQorIE9SREVSIEJZIHRkYXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgSU5J VElBTAorIFBBVFRFUk4gKExPV1BSSUNFIFVQKyBET1dOKykKKyBERUZJTkUKKyAgTE9XUFJJQ0Ug QVMgcHJpY2UgJmx0Oz0gMTAwLAorICBVUCBBUyBwcmljZSAmZ3Q7IFBSRVYocHJpY2UpLAorICBE T1dOIEFTIHByaWNlICZsdDsgUFJFVihwcmljZSkKKyk7Cis8L3Byb2dyYW1saXN0aW5nPgorPHNj cmVlbj4KKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbWF4 IHwgY291bnQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMjAyMy0wNy0wMSB8ICAgMTAwIHwgICAgICAgICAx MDAgfCAyMDAgfCAgICAgNAorIGNvbXBhbnkxIHwgMjAyMy0wNy0wMiB8ICAgMjAwIHwgICAgICAg ICAgICAgfCAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMjAyMy0wNy0wMyB8ICAgMTUwIHwgICAg ICAgICAgICAgfCAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMjAyMy0wNy0wNCB8ICAgMTQwIHwg ICAgICAgICAgICAgfCAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMjAyMy0wNy0wNSB8ICAgMTUw IHwgICAgICAgICAgICAgfCAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMjAyMy0wNy0wNiB8ICAg IDkwIHwgICAgICAgICAgOTAgfCAxMzAgfCAgICAgNAorIGNvbXBhbnkxIHwgMjAyMy0wNy0wNyB8 ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMjAyMy0wNy0w OCB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMjAyMy0w Ny0wOSB8ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMjAy My0wNy0xMCB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgfCAgICAgMAorKDEwIHJvd3MpCis8 L3NjcmVlbj4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgUm93IHBhdHRlcm4gcmVjb2du aXRpb24gaW50ZXJuYWxseSB1c2VzIGEgbm9uZGV0ZXJtaW5pc3RpYyBmaW5pdGUKKyAgICBhdXRv bWF0b24gKE5GQSkgdG8gbWF0Y2ggcGF0dGVybnMuIEZvciBwYXR0ZXJucyB3aXRoIHVuYm91bmRl ZAorICAgIHF1YW50aWZpZXJzIChlLmcuLCA8bGl0ZXJhbD5BKzwvbGl0ZXJhbD4gb3IgPGxpdGVy YWw+KEEgQikrPC9saXRlcmFsPiksCisgICAgdGhlIE5GQSBtYXkgbmVlZCB0byB0cmFjayBtYW55 IGFjdGl2ZSBtYXRjaGluZyBjb250ZXh0cyBzaW11bHRhbmVvdXNseSwKKyAgICB3aGljaCBjb3Vs ZCBwb3RlbnRpYWxseSBsZWFkIHRvIE8objxzdXBlcnNjcmlwdD4yPC9zdXBlcnNjcmlwdD4pCisg ICAgY29tcGxleGl0eSBhcyB0aGUgbnVtYmVyIG9mIHJvd3MgaW5jcmVhc2VzLgorICAgPC9wYXJh PgorCisgICA8cGFyYT4KKyAgICBCZWZvcmUgZXhlY3V0aW9uLCA8cHJvZHVjdG5hbWU+UG9zdGdy ZVNRTDwvcHJvZHVjdG5hbWU+IGF1dG9tYXRpY2FsbHkKKyAgICBvcHRpbWl6ZXMgcGF0dGVybnMg dG8gc2ltcGxpZnkgdGhlaXIgc3RydWN0dXJlLiBUaGlzIGluY2x1ZGVzIGZsYXR0ZW5pbmcKKyAg ICBuZXN0ZWQgc2VxdWVuY2VzIGFuZCBhbHRlcm5hdGlvbnMsIG1lcmdpbmcgY29uc2VjdXRpdmUg aWRlbnRpY2FsIHZhcmlhYmxlcworICAgIChlLmcuLCA8bGl0ZXJhbD5BezIsM30gQXsxLDJ9PC9s aXRlcmFsPiBiZWNvbWVzIDxsaXRlcmFsPkF7Myw1fTwvbGl0ZXJhbD4pLAorICAgIHJlbW92aW5n IGR1cGxpY2F0ZSBhbHRlcm5hdGl2ZXMKKyAgICAoZS5nLiwgPGxpdGVyYWw+KEEgfCBCIHwgQSk8 L2xpdGVyYWw+IGJlY29tZXMgPGxpdGVyYWw+KEEgfCBCKTwvbGl0ZXJhbD4pLAorICAgIGFuZCBz aW1wbGlmeWluZyBuZXN0ZWQgcXVhbnRpZmllcnMKKyAgICAoZS5nLiwgPGxpdGVyYWw+KEEqKSo8 L2xpdGVyYWw+IGJlY29tZXMgPGxpdGVyYWw+QSo8L2xpdGVyYWw+KS4KKyAgICBUaGVzZSBvcHRp bWl6YXRpb25zIHJlZHVjZSBwYXR0ZXJuIGNvbXBsZXhpdHkgYW5kIGFsc28gZGVjcmVhc2UKKyAg ICBuZXN0aW5nIGRlcHRoLCBtYWtpbmcgdGhlIDI1My1sZXZlbCBkZXB0aCBsaW1pdCByYXJlbHkg ZW5jb3VudGVyZWQuCisgICAgVGhleSBhcmUgYXBwbGllZCB0cmFuc3BhcmVudGx5IGFuZCBjYW4g YmUgb2JzZXJ2ZWQKKyAgICBpbiA8Y29tbWFuZD5FWFBMQUlOPC9jb21tYW5kPiBvdXRwdXQuCisg ICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIFRvIG1pdGlnYXRlIHRoaXMsIDxwcm9kdWN0bmFt ZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gZW1wbG95cworICAgIGEgY29udGV4dCBhYnNvcnB0 aW9uIG9wdGltaXphdGlvbi4gV2hlbiBhIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBncmVlZHkKKyAg ICB1bmJvdW5kZWQgZWxlbWVudCwgbmV3ZXIgbWF0Y2hpbmcgY29udGV4dHMgY2Fubm90IHByb2R1 Y2UgbG9uZ2VyIG1hdGNoZXMKKyAgICB0aGFuIG9sZGVyIGNvbnRleHRzLiBCeSBkZXRlY3Rpbmcg YW5kIGVsaW1pbmF0aW5nIHRoZXNlIHJlZHVuZGFudAorICAgIGNvbnRleHRzLCB0aGUgbWF0Y2hp bmcgY29tcGxleGl0eSBpcyByZWR1Y2VkIGZyb20KKyAgICBPKG48c3VwZXJzY3JpcHQ+Mjwvc3Vw ZXJzY3JpcHQ+KSB0byBPKG4pIGZvciBtYW55IGNvbW1vbiBwYXR0ZXJucy4KKyAgIDwvcGFyYT4K KworICAgPHBhcmE+CisgICAgV2hlbiBleGFtaW5pbmcgcXVlcnkgcGxhbnMgZm9yIHJvdyBwYXR0 ZXJuIHJlY29nbml0aW9uIHdpdGgKKyAgICA8Y29tbWFuZD5FWFBMQUlOPC9jb21tYW5kPiwgdGhl IHBhdHRlcm4gb3V0cHV0IG1heSBpbmNsdWRlIHNwZWNpYWwKKyAgICBtYXJrZXJzIHRoYXQgaW5k aWNhdGUgb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMuIEEgZG91YmxlIHF1b3RlCisgICAgPGxp dGVyYWw+IjwvbGl0ZXJhbD4gbWFya3Mgd2hlcmUgcGF0dGVybiBhYnNvcnB0aW9uIGNhbiBvY2N1 ciwKKyAgICBhbmQgYSBzaW5nbGUgcXVvdGUgPGxpdGVyYWw+JzwvbGl0ZXJhbD4gbWFya3MgYWJz b3JiYWJsZSBlbGVtZW50cworICAgIHdpdGhpbiBhIGJyYW5jaC4gRm9yIGV4YW1wbGUsIDxsaXRl cmFsPmErIjwvbGl0ZXJhbD4gaW5kaWNhdGVzIHRoYXQKKyAgICByZXBlYXRlZCBtYXRjaGVzIG9m IDxsaXRlcmFsPmE8L2xpdGVyYWw+IGNhbiBiZSBhYnNvcmJlZCwgd2hpbGUKKyAgICA8bGl0ZXJh bD4oYScgYicpKyI8L2xpdGVyYWw+IHNob3dzIHRoYXQgYm90aCA8bGl0ZXJhbD5hPC9saXRlcmFs PgorICAgIGFuZCA8bGl0ZXJhbD5iPC9saXRlcmFsPiB3aXRoaW4gdGhlIGdyb3VwIGFyZSBhYnNv cmJhYmxlLgorICAgIFRoZXNlIG1hcmtlcnMgYXJlIHByaW1hcmlseSB1c2VmdWwgZm9yIHVuZGVy c3RhbmRpbmcgaW50ZXJuYWwKKyAgICBvcHRpbWl6YXRpb24gYmVoYXZpb3IuCisgICA8L3BhcmE+ CisKICAgIDxwYXJhPgogICAgIFdoZW4gYSBxdWVyeSBpbnZvbHZlcyBtdWx0aXBsZSB3aW5kb3cg ZnVuY3Rpb25zLCBpdCBpcyBwb3NzaWJsZSB0byB3cml0ZQogICAgIG91dCBlYWNoIG9uZSB3aXRo IGEgc2VwYXJhdGUgPGxpdGVyYWw+T1ZFUjwvbGl0ZXJhbD4gY2xhdXNlLCBidXQgdGhpcyBpcwot ICAgIGR1cGxpY2F0aXZlIGFuZCBlcnJvci1wcm9uZSBpZiB0aGUgc2FtZSB3aW5kb3dpbmcgYmVo YXZpb3IgaXMgd2FudGVkCi0gICAgZm9yIHNldmVyYWwgZnVuY3Rpb25zLiAgSW5zdGVhZCwgZWFj aCB3aW5kb3dpbmcgYmVoYXZpb3IgY2FuIGJlIG5hbWVkCi0gICAgaW4gYSA8bGl0ZXJhbD5XSU5E T1c8L2xpdGVyYWw+IGNsYXVzZSBhbmQgdGhlbiByZWZlcmVuY2VkIGluIDxsaXRlcmFsPk9WRVI8 L2xpdGVyYWw+LgotICAgIEZvciBleGFtcGxlOgorICAgIGR1cGxpY2F0aXZlIGFuZCBlcnJvci1w cm9uZSBpZiB0aGUgc2FtZSB3aW5kb3dpbmcgYmVoYXZpb3IgaXMgd2FudGVkIGZvcgorICAgIHNl dmVyYWwgZnVuY3Rpb25zLiAgSW5zdGVhZCwgZWFjaCB3aW5kb3dpbmcgYmVoYXZpb3IgY2FuIGJl IG5hbWVkIGluCisgICAgYSA8bGl0ZXJhbD5XSU5ET1c8L2xpdGVyYWw+IGNsYXVzZSBhbmQgdGhl biByZWZlcmVuY2VkCisgICAgaW4gPGxpdGVyYWw+T1ZFUjwvbGl0ZXJhbD4uICBGb3IgZXhhbXBs ZToKIAogPHByb2dyYW1saXN0aW5nPgogU0VMRUNUIHN1bShzYWxhcnkpIE9WRVIgdywgYXZnKHNh bGFyeSkgT1ZFUiB3CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLXdpbmRvdy5z Z21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy13aW5kb3cuc2dtbAppbmRleCBiY2Y3NTVjOWVi Yy4uYWUzNmUwZjMxMzUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtd2luZG93 LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy13aW5kb3cuc2dtbApAQCAtMjc4LDYg KzI3OCw1OSBAQAogICAgPGZ1bmN0aW9uPm50aF92YWx1ZTwvZnVuY3Rpb24+LgogICA8L3BhcmE+ CiAKKyAgPHBhcmE+CisgICBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBuYXZpZ2F0aW9uIGZ1bmN0 aW9ucyBhcmUgbGlzdGVkIGluCisgICA8eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtcnByLW5hdmln YXRpb24tdGFibGUiLz4uICBUaGVzZSBmdW5jdGlvbnMKKyAgIGNhbiBiZSB1c2VkIHRvIGRlc2Ny aWJlIERFRklORSBjbGF1c2Ugb2YgUm93IHBhdHRlcm4gcmVjb2duaXRpb24uCisgIDwvcGFyYT4K KworICAgPHRhYmxlIGlkPSJmdW5jdGlvbnMtcnByLW5hdmlnYXRpb24tdGFibGUiPgorICAgIDx0 aXRsZT5Sb3cgUGF0dGVybiBOYXZpZ2F0aW9uIEZ1bmN0aW9uczwvdGl0bGU+CisgICAgPHRncm91 cCBjb2xzPSIxIj4KKyAgICAgPHRoZWFkPgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9s ZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAg ICBGdW5jdGlvbgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRGVzY3Jp cHRpb24KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwvcm93PgorICAgICA8L3RoZWFk PgorCisgICAgIDx0Ym9keT4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNf dGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4 dGVybT4KKyAgICAgICAgIDxwcmltYXJ5PnByZXY8L3ByaW1hcnk+CisgICAgICAgIDwvaW5kZXh0 ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+cHJldjwvZnVuY3Rpb24+ICggPHBhcmFtZXRlcj52YWx1 ZTwvcGFyYW1ldGVyPiA8dHlwZT5hbnllbGVtZW50PC90eXBlPiApCisgICAgICAgIDxyZXR1cm52 YWx1ZT5hbnllbGVtZW50PC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBh cmE+CisgICAgICAgIFJldHVybnMgdGhlIGNvbHVtbiB2YWx1ZSBhdCB0aGUgcHJldmlvdXMgcm93 OworICAgICAgICByZXR1cm5zIE5VTEwgaWYgdGhlcmUgaXMgbm8gcHJldmlvdXMgcm93IGluIHRo ZSB3aW5kb3cgZnJhbWUuCisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgICA8L3Jvdz4KKwor ICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHBy aW1hcnk+bmV4dDwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5j dGlvbj5uZXh0PC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0ZXI+IDx0eXBl PmFueWVsZW1lbnQ8L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPmFueWVsZW1lbnQ8L3Jl dHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUmV0dXJu cyB0aGUgY29sdW1uIHZhbHVlIGF0IHRoZSBuZXh0IHJvdzsKKyAgICAgICAgcmV0dXJucyBOVUxM IGlmIHRoZXJlIGlzIG5vIG5leHQgcm93IGluIHRoZSB3aW5kb3cgZnJhbWUuCisgICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgICA8L3Jvdz4KKworICAgICA8L3Rib2R5PgorICAgIDwvdGdyb3Vw PgorICAgPC90YWJsZT4KKwogICA8bm90ZT4KICAgIDxwYXJhPgogICAgIFRoZSBTUUwgc3RhbmRh cmQgZGVmaW5lcyBhIDxsaXRlcmFsPkZST00gRklSU1Q8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPkZS T00gTEFTVDwvbGl0ZXJhbD4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvc2VsZWN0LnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21sCmluZGV4IGNhNWRkMTRkNjI3Li5mMDY3 NmJmNmYyYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9zZWxlY3Quc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21sCkBAIC05NzksOCArOTc5LDggQEAgV0lORE9XIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53aW5kb3dfbmFtZTwvcmVwbGFjZWFibGU+IEFT ICggPHJlcGxhY2VhYmwKICAgICBUaGUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmZy YW1lX2NsYXVzZTwvcmVwbGFjZWFibGU+IGNhbiBiZSBvbmUgb2YKIAogPHN5bm9wc2lzPgoteyBS QU5HRSB8IFJPV1MgfCBHUk9VUFMgfSA8cmVwbGFjZWFibGU+ZnJhbWVfc3RhcnQ8L3JlcGxhY2Vh YmxlPiBbIDxyZXBsYWNlYWJsZT5mcmFtZV9leGNsdXNpb248L3JlcGxhY2VhYmxlPiBdCi17IFJB TkdFIHwgUk9XUyB8IEdST1VQUyB9IEJFVFdFRU4gPHJlcGxhY2VhYmxlPmZyYW1lX3N0YXJ0PC9y ZXBsYWNlYWJsZT4gQU5EIDxyZXBsYWNlYWJsZT5mcmFtZV9lbmQ8L3JlcGxhY2VhYmxlPiBbIDxy ZXBsYWNlYWJsZT5mcmFtZV9leGNsdXNpb248L3JlcGxhY2VhYmxlPiBdCit7IFJBTkdFIHwgUk9X UyB8IEdST1VQUyB9IDxyZXBsYWNlYWJsZT5mcmFtZV9zdGFydDwvcmVwbGFjZWFibGU+IFsgPHJl cGxhY2VhYmxlPmZyYW1lX2V4Y2x1c2lvbjwvcmVwbGFjZWFibGU+IF0gWyA8cmVwbGFjZWFibGU+ cm93X3BhdHRlcm5fY29tbW9uX3N5bnRheDwvcmVwbGFjZWFibGU+IF0KK3sgUkFOR0UgfCBST1dT IHwgR1JPVVBTIH0gQkVUV0VFTiA8cmVwbGFjZWFibGU+ZnJhbWVfc3RhcnQ8L3JlcGxhY2VhYmxl PiBBTkQgPHJlcGxhY2VhYmxlPmZyYW1lX2VuZDwvcmVwbGFjZWFibGU+IFsgPHJlcGxhY2VhYmxl PmZyYW1lX2V4Y2x1c2lvbjwvcmVwbGFjZWFibGU+IF0gWyA8cmVwbGFjZWFibGU+cm93X3BhdHRl cm5fY29tbW9uX3N5bnRheDwvcmVwbGFjZWFibGU+IF0KIDwvc3lub3BzaXM+CiAKICAgICB3aGVy ZSA8cmVwbGFjZWFibGU+ZnJhbWVfc3RhcnQ8L3JlcGxhY2VhYmxlPgpAQCAtMTA4Nyw5ICsxMDg3 LDkxIEBAIEVYQ0xVREUgTk8gT1RIRVJTCiAgICAgYSBnaXZlbiBwZWVyIGdyb3VwIHdpbGwgYmUg aW4gdGhlIGZyYW1lIG9yIGV4Y2x1ZGVkIGZyb20gaXQuCiAgICA8L3BhcmE+CiAKKyAgIDxwYXJh PgorICAgIFRoZQorICAgIG9wdGlvbmFsIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5y b3dfcGF0dGVybl9jb21tb25fc3ludGF4PC9yZXBsYWNlYWJsZT4KKyAgICBkZWZpbmVzIHRoZSA8 Zmlyc3R0ZXJtPnJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIGNvbmRpdGlvbjwvZmlyc3R0ZXJtPiBm b3IKKyAgICB0aGlzCisgICAgd2luZG93LiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cm93X3BhdHRlcm5fY29tbW9uX3N5bnRheDwvcmVwbGFjZWFibGU+CisgICAgaW5jbHVkZXMgZm9s bG93aW5nIHN1YmNsYXVzZXMuCisKKzxzeW5vcHNpcz4KK1sgeyBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cgfCBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XIH0gXQorWyBJTklUSUFM IHwgU0VFSyBdCitQQVRURVJOICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhdHRl cm5fdmFyaWFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgPHJlcGxhY2VhYmxlPnF1YW50aWZpZXI8 L3JlcGxhY2VhYmxlPiBdIFssIC4uLl0gKQorREVGSU5FIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5kZWZpbml0aW9uX3ZhcmlhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBBUyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0K Kzwvc3lub3BzaXM+CisgICAgPGxpdGVyYWw+QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5BRlRFUiBNQVRDSAorICAgIFNLSVAgVE8gTkVYVCBST1c8 L2xpdGVyYWw+IGNvbnRyb2xzIGhvdyB0byBwcm9jZWVkIHRvIG5leHQgcm93IHBvc2l0aW9uCisg ICAgYWZ0ZXIgYSBtYXRjaCBmb3VuZC4gV2l0aCA8bGl0ZXJhbD5BRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVAorICAgIFJPVzwvbGl0ZXJhbD4gKHRoZSBkZWZhdWx0KSBuZXh0IHJvdyBwb3NpdGlv biBpcyBuZXh0IHRvIHRoZSBsYXN0IHJvdyBvZgorICAgIHByZXZpb3VzIG1hdGNoLiBPbiB0aGUg b3RoZXIgaGFuZCwgd2l0aCA8bGl0ZXJhbD5BRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQKKyAgICBS T1c8L2xpdGVyYWw+IG5leHQgcm93IHBvc2l0aW9uIGlzIG5leHQgdG8gdGhlIGZpcnN0IHJvdyBv ZiBwcmV2aW91cworICAgIG1hdGNoLiA8bGl0ZXJhbD5JTklUSUFMPC9saXRlcmFsPiBvciA8bGl0 ZXJhbD5TRUVLPC9saXRlcmFsPiBkZWZpbmVzIGhvdyBhCisgICAgc3VjY2Vzc2Z1bCBwYXR0ZXJu IG1hdGNoaW5nIHN0YXJ0cyBmcm9tIHdoaWNoIHJvdyBpbiBhCisgICAgZnJhbWUuIElmIDxsaXRl cmFsPklOSVRJQUw8L2xpdGVyYWw+IGlzIHNwZWNpZmllZCwgdGhlIG1hdGNoIG11c3Qgc3RhcnQK KyAgICBmcm9tIHRoZSBmaXJzdCByb3cgaW4gdGhlIGZyYW1lLiBJZiA8bGl0ZXJhbD5TRUVLPC9s aXRlcmFsPiBpcyBzcGVjaWZpZWQsCisgICAgdGhlIHNldCBvZiBtYXRjaGluZyByb3dzIGRvIG5v dCBuZWNlc3NhcmlseSBzdGFydCBmcm9tIHRoZSBmaXJzdCByb3cuIFRoZQorICAgIGRlZmF1bHQg aXMgPGxpdGVyYWw+SU5JVElBTDwvbGl0ZXJhbD4uIEN1cnJlbnRseQorICAgIG9ubHkgPGxpdGVy YWw+SU5JVElBTDwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkLiA8bGl0ZXJhbD5ERUZJTkU8L2xpdGVy YWw+CisgICAgZGVmaW5lcyBkZWZpbml0aW9uIHZhcmlhYmxlcyBhbG9uZyB3aXRoIGEgYm9vbGVh bgorICAgIGV4cHJlc3Npb24uIDxsaXRlcmFsPlBBVFRFUk48L2xpdGVyYWw+IGRlZmluZXMgYSBz ZXF1ZW5jZSBvZiByb3dzIHRoYXQKKyAgICBzYXRpc2ZpZXMgY2VydGFpbiBjb25kaXRpb25zIHVz aW5nIHZhcmlhYmxlcyBkZWZpbmVkCisgICAgaW4gPGxpdGVyYWw+REVGSU5FPC9saXRlcmFsPiBj bGF1c2UuIEVhY2ggcGF0dGVybiB2YXJpYWJsZSBjYW4gYmUKKyAgICBmb2xsb3dlZCBieSBhIHF1 YW50aWZpZXIgdG8gc3BlY2lmeSBob3cgbWFueSB0aW1lcyBpdCBzaG91bGQgbWF0Y2g6CisgICAg PGxpdGVyYWw+KjwvbGl0ZXJhbD4gKHplcm8gb3IgbW9yZSksCisgICAgPGxpdGVyYWw+KzwvbGl0 ZXJhbD4gKG9uZSBvciBtb3JlKSwKKyAgICA8bGl0ZXJhbD4/PC9saXRlcmFsPiAoemVybyBvciBv bmUpLAorICAgIDxsaXRlcmFsPns8L2xpdGVyYWw+PHJlcGxhY2VhYmxlPm48L3JlcGxhY2VhYmxl PjxsaXRlcmFsPn08L2xpdGVyYWw+IChleGFjdGx5IDxyZXBsYWNlYWJsZT5uPC9yZXBsYWNlYWJs ZT4gdGltZXMpLAorICAgIDxsaXRlcmFsPns8L2xpdGVyYWw+PHJlcGxhY2VhYmxlPm48L3JlcGxh Y2VhYmxlPjxsaXRlcmFsPix9PC9saXRlcmFsPiAoYXQgbGVhc3QgPHJlcGxhY2VhYmxlPm48L3Jl cGxhY2VhYmxlPiB0aW1lcyksCisgICAgPGxpdGVyYWw+eyw8L2xpdGVyYWw+PHJlcGxhY2VhYmxl Pm08L3JlcGxhY2VhYmxlPjxsaXRlcmFsPn08L2xpdGVyYWw+IChhdCBtb3N0IDxyZXBsYWNlYWJs ZT5tPC9yZXBsYWNlYWJsZT4gdGltZXMpLCBvcgorICAgIDxsaXRlcmFsPns8L2xpdGVyYWw+PHJl cGxhY2VhYmxlPm48L3JlcGxhY2VhYmxlPjxsaXRlcmFsPiw8L2xpdGVyYWw+PHJlcGxhY2VhYmxl Pm08L3JlcGxhY2VhYmxlPjxsaXRlcmFsPn08L2xpdGVyYWw+CisgICAgKGJldHdlZW4gPHJlcGxh Y2VhYmxlPm48L3JlcGxhY2VhYmxlPiBhbmQgPHJlcGxhY2VhYmxlPm08L3JlcGxhY2VhYmxlPiB0 aW1lcykuCisgICAgUmVsdWN0YW50IHF1YW50aWZpZXJzIChlLmcuLCA8bGl0ZXJhbD4qPzwvbGl0 ZXJhbD4sIDxsaXRlcmFsPis/PC9saXRlcmFsPiwKKyAgICA8bGl0ZXJhbD4/PzwvbGl0ZXJhbD4s IDxsaXRlcmFsPns8L2xpdGVyYWw+PHJlcGxhY2VhYmxlPm48L3JlcGxhY2VhYmxlPjxsaXRlcmFs Piw8L2xpdGVyYWw+PHJlcGxhY2VhYmxlPm08L3JlcGxhY2VhYmxlPjxsaXRlcmFsPn0/PC9saXRl cmFsPikKKyAgICBhcmUgbm90IHN1cHBvcnRlZC4KKyAgICBQYXR0ZXJucyBjYW4gYmUgZ3JvdXBl ZCB1c2luZyBwYXJlbnRoZXNlcywgYW5kIGFsdGVybmF0aW9uIChPUikgY2FuIGJlCisgICAgZXhw cmVzc2VkIHVzaW5nIHRoZSB2ZXJ0aWNhbCBiYXIgPGxpdGVyYWw+fDwvbGl0ZXJhbD4uCisgICAg Rm9yIGV4YW1wbGUsIDxsaXRlcmFsPihBIEIpKzwvbGl0ZXJhbD4gbWF0Y2hlcyBvbmUgb3IgbW9y ZSByZXBldGl0aW9ucworICAgIG9mIHRoZSBzZXF1ZW5jZSBBIGZvbGxvd2VkIGJ5IEIsIGFuZCA8 bGl0ZXJhbD5BIHwgQjwvbGl0ZXJhbD4gbWF0Y2hlcworICAgIGVpdGhlciBBIG9yIEIuCisgICAg SWYgYSBwYXR0ZXJuIHZhcmlhYmxlIGlzIG5vdCBkZWZpbmVkIGluCisgICAgdGhlIDxsaXRlcmFs PkRFRklORTwvbGl0ZXJhbD4gY2xhdXNlLCBpdCBpcyBub3QgYXV0b21hdGljYWxseSBhZGRlZAor ICAgIHRvIHRoZSA8bGl0ZXJhbD5ERUZJTkU8L2xpdGVyYWw+IGNsYXVzZS4gSW5zdGVhZCwgdGhl IGV4ZWN1dG9yIGV2YWx1YXRlcworICAgIHRoZSB2YXJpYWJsZSBhcyA8bGl0ZXJhbD5UUlVFPC9s aXRlcmFsPiBhdCBleGVjdXRpb24gdGltZSwgYmVoYXZpbmcgYXMgaWYKKyAgICB0aGUgZm9sbG93 aW5nIGRlZmluaXRpb24gZXhpc3RlZC4KKworPHN5bm9wc2lzPgorPGxpdGVyYWw+dmFyaWFibGVf bmFtZTwvbGl0ZXJhbD4gQVMgVFJVRQorPC9zeW5vcHNpcz4KKworICAgIENvbnZlcnNlbHksIHZh cmlhYmxlcyBkZWZpbmVkIGluIHRoZSA8bGl0ZXJhbD5ERUZJTkU8L2xpdGVyYWw+IGNsYXVzZQor ICAgIGJ1dCBub3QgdXNlZCBpbiB0aGUgPGxpdGVyYWw+UEFUVEVSTjwvbGl0ZXJhbD4gY2xhdXNl IGFyZSBmaWx0ZXJlZCBvdXQKKyAgICBkdXJpbmcgcXVlcnkgcGxhbm5pbmcuCisgICA8L3BhcmE+ CisKKyAgIDxwYXJhPgorICAgIE5vdGUgdGhhdCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdW5pcXVl IHBhdHRlcm4gdmFyaWFibGVzCisgICAgdXNlZCBpbiA8bGl0ZXJhbD5QQVRURVJOPC9saXRlcmFs PiBjbGF1c2UgaXMgMjUxLgorICAgIElmIHRoaXMgbGltaXQgaXMgZXhjZWVkZWQsIGFuIGVycm9y IHdpbGwgYmUgcmFpc2VkLgorICAgIEFkZGl0aW9uYWxseSwgdGhlIG1heGltdW0gbmVzdGluZyBk ZXB0aCBvZiBwYXR0ZXJuIGdyb3VwcworICAgIChwYXJlbnRoZXNlcykgaXMgMjUzIGxldmVscy4K KyAgICBIb3dldmVyLCBwYXR0ZXJuIG9wdGltaXphdGlvbnMgc3VjaCBhcyBmbGF0dGVuaW5nIG5l c3RlZCBzZXF1ZW5jZXMKKyAgICBhbmQgc2ltcGxpZnlpbmcgbmVzdGVkIHF1YW50aWZpZXJzIG1h eSByZWR1Y2UgdGhlIGVmZmVjdGl2ZSBkZXB0aCwKKyAgICBzbyB0aGlzIGxpbWl0IGlzIHJhcmVs eSByZWFjaGVkIGluIHByYWN0aWNlLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBUaGUg U1FMIHN0YW5kYXJkIGRlZmluZXMgbW9yZSBzdWJjbGF1c2VzOiA8bGl0ZXJhbD5NRUFTVVJFUzwv bGl0ZXJhbD4KKyAgICBhbmQgPGxpdGVyYWw+U1VCU0VUPC9saXRlcmFsPi4gVGhleSBhcmUgbm90 IGN1cnJlbnRseSBzdXBwb3J0ZWQKKyAgICBpbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJv ZHVjdG5hbWU+LiBBbHNvIGluIHRoZSBzdGFuZGFyZCB0aGVyZSBhcmUKKyAgICBtb3JlIHZhcmlh dGlvbnMgaW4gPGxpdGVyYWw+QUZURVIgTUFUQ0g8L2xpdGVyYWw+IGNsYXVzZS4KKyAgIDwvcGFy YT4KKwogICAgPHBhcmE+CiAgICAgVGhlIHB1cnBvc2Ugb2YgYSA8bGl0ZXJhbD5XSU5ET1c8L2xp dGVyYWw+IGNsYXVzZSBpcyB0byBzcGVjaWZ5IHRoZQotICAgIGJlaGF2aW9yIG9mIDxmaXJzdHRl cm0+d2luZG93IGZ1bmN0aW9uczwvZmlyc3R0ZXJtPiBhcHBlYXJpbmcgaW4gdGhlIHF1ZXJ5J3MK KyAgICBiZWhhdmlvciBvZiA8Zmlyc3R0ZXJtPndpbmRvdyBmdW5jdGlvbnM8L2ZpcnN0dGVybT4g YXBwZWFyaW5nIGluIHRoZQorICAgIHF1ZXJ5J3MKICAgICA8bGluayBsaW5rZW5kPSJzcWwtc2Vs ZWN0LWxpc3QiPjxjb21tYW5kPlNFTEVDVDwvY29tbWFuZD4gbGlzdDwvbGluaz4gb3IKICAgICA8 bGluayBsaW5rZW5kPSJzcWwtb3JkZXJieSI+PGxpdGVyYWw+T1JERVIgQlk8L2xpdGVyYWw+PC9s aW5rPiBjbGF1c2UuCiAgICAgVGhlc2UgZnVuY3Rpb25zCi0tIAoyLjQzLjAKCg== ----Next_Part(Sun_Feb_15_18_06_52_2026_930)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v43-0007-Row-pattern-recognition-patch-tests.patch" RnJvbSA2OGM3NDdhYmQ5NTU2MWRhMWM0OGI0ZDQ5MmQ1OTlkZjg5NzU3ODIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTdW4sIDE1IEZlYiAyMDI2IDE3OjQ3OjQ5ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDMg Ny84XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAodGVzdHMpLgoKLS0tCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQgICAgICAgICB8IDQwMDYgKysrKysrKysrKysrKysr CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dCAgICB8IDU1MzggKysrKysr KysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91 dCB8IDM4NjMgKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX25m YS5vdXQgICAgIHwgMjUyNCArKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlICAgICAgICB8ICAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbCAgICAg ICAgICAgICAgfCAyMTgwICsrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5z cWwgICAgICAgICB8IDM2NTggKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jw cl9leHBsYWluLnNxbCAgICAgIHwgMjI1NCArKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3Jwcl9uZmEuc3FsICAgICAgICAgIHwgMTg2NSArKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDI1 ODkzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3Jwci5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Jwcl9iYXNlLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnByX2V4cGxhaW4ub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ycHJfbmZhLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3Jwci5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9y cHJfYmFzZS5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJf ZXhwbGFpbi5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJf bmZhLnNxbAoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uYzkyMWJhZGIwMDYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQKQEAgLTAsMCArMSw0MDA2IEBACistLQorLS0gVGVz dCBmb3Igcm93IHBhdHRlcm4gZGVmaW5pdGlvbiBjbGF1c2UKKy0tCitDUkVBVEUgVEVNUCBUQUJM RSBzdG9jayAoCisgICAgICAgY29tcGFueSBURVhULAorICAgICAgIHRkYXRlIERBVEUsCisgICAg ICAgcHJpY2UgSU5URUdFUgorKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkx JywgJzIwMjMtMDctMDEnLCAxMDApOworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFu eTEnLCAnMjAyMy0wNy0wMicsIDIwMCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21w YW55MScsICcyMDIzLTA3LTAzJywgMTUwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2Nv bXBhbnkxJywgJzIwMjMtMDctMDQnLCAxNDApOworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgn Y29tcGFueTEnLCAnMjAyMy0wNy0wNScsIDE1MCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMg KCdjb21wYW55MScsICcyMDIzLTA3LTA2JywgOTApOworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVT ICgnY29tcGFueTEnLCAnMjAyMy0wNy0wNycsIDExMCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxV RVMgKCdjb21wYW55MScsICcyMDIzLTA3LTA4JywgMTMwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZB TFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDknLCAxMjApOworSU5TRVJUIElOVE8gc3RvY2sg VkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0xMCcsIDEzMCk7CitJTlNFUlQgSU5UTyBzdG9j ayBWQUxVRVMgKCdjb21wYW55MicsICcyMDIzLTA3LTAxJywgNTApOworSU5TRVJUIElOVE8gc3Rv Y2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0wMicsIDIwMDApOworSU5TRVJUIElOVE8g c3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0wMycsIDE1MDApOworSU5TRVJUIElO VE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0wNCcsIDE0MDApOworSU5TRVJU IElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0wNScsIDE1MDApOworSU5T RVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0wNicsIDYwKTsKK0lO U0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMtMDctMDcnLCAxMTAwKTsK K0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMtMDctMDgnLCAxMzAw KTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMtMDctMDknLCAx MjAwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMtMDctMTAn LCAxMzAwKTsKK1NFTEVDVCAqIEZST00gc3RvY2s7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwg cHJpY2UgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCisgY29tcGFueTEgfCAwNy0w MS0yMDIzIHwgICAxMDAKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMAorIGNvbXBhbnkx IHwgMDctMDMtMjAyMyB8ICAgMTUwCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAKKyBj b21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAg IDkwCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAKKyBjb21wYW55MSB8IDA3LTA4LTIw MjMgfCAgIDEzMAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwCisgY29tcGFueTEgfCAw Ny0xMC0yMDIzIHwgICAxMzAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MAorIGNvbXBh bnkyIHwgMDctMDItMjAyMyB8ICAyMDAwCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAK KyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8 ICAxNTAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAKKyBjb21wYW55MiB8IDA3LTA3 LTIwMjMgfCAgMTEwMAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwCisgY29tcGFueTIg fCAwNy0wOS0yMDIzIHwgIDEyMDAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMAorKDIw IHJvd3MpCisKKy0tIGJhc2ljIHRlc3QgdXNpbmcgUFJFVgorU0VMRUNUIGNvbXBhbnksIHRkYXRl LCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZF UiB3LAorIG50aF92YWx1ZSh0ZGF0ZSwgMikgT1ZFUiB3IEFTIG50aF9zZWNvbmQKKyBGUk9NIHN0 b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4g KFNUQVJUIFVQKyBET1dOKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJp Y2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworIGNv bXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwg bnRoX3NlY29uZCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAx MDAgfCAgICAgICAgIDEwMCB8ICAgICAgICAxNDAgfCAwNy0wMi0yMDIzCisgY29tcGFueTEgfCAw Ny0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55 MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNv bXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg CisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgIDkwIHwgICAg ICAgIDEyMCB8IDA3LTA3LTIwMjMKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwg ICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTEwLTIw MjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDct MDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAgfCAgICAgICAxNDAwIHwgMDctMDItMjAyMwor IGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAg ICAgICA2MCB8ICAgICAgIDEyMDAgfCAwNy0wNy0yMDIzCisgY29tcGFueTIgfCAwNy0wNy0yMDIz IHwgIDExMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA4 LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwg MDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFu eTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKygy MCByb3dzKQorCistLSBiYXNpYyB0ZXN0IHVzaW5nIFBSRVYuIFVQIGFwcGVhcnMgdHdpY2UKK1NF TEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxh c3RfdmFsdWUocHJpY2UpIE9WRVIgdywKKyBudGhfdmFsdWUodGRhdGUsIDIpIE9WRVIgdyBBUyBu dGhfc2Vjb25kCisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29t cGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor IElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBVUCsgRE9XTisgVVArKQorIERFRklORQorICBTVEFS VCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNl IDwgUFJFVihwcmljZSkKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJz dF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBudGhfc2Vjb25kIAorLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBjb21w YW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgMTAwIHwgICAgICAgIDE1MCB8IDA3 LTAyLTIwMjMKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAg IDkwIHwgICAgICAgICAgOTAgfCAgICAgICAgMTMwIHwgMDctMDctMjAyMworIGNvbXBhbnkxIHwg MDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFu eTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBj b21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 IAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICA1MCB8ICAg ICAgIDE1MDAgfCAwNy0wMi0yMDIzCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8 ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wNS0y MDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3 LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgIDYwIHwgICAgICAgMTMwMCB8IDA3LTA3LTIwMjMK KyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8IAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8IAorKDIwIHJvd3MpCisKKy0tIGJhc2ljIHRlc3QgdXNpbmcgUFJF Vi4gVXNlICcqJworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJp Y2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LAorIG50aF92YWx1ZSh0ZGF0ZSwg MikgT1ZFUiB3IEFTIG50aF9zZWNvbmQKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBB UlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIFVQKiBET1dOKykKKyBERUZJ TkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9X TiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHBy aWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwgbnRoX3NlY29uZCAKKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAg ICAxNDAgfCAwNy0wMi0yMDIzCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAg MTQwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wNS0yMDIz IHwgICAxNTAgfCAgICAgICAgIDE1MCB8ICAgICAgICAgOTAgfCAwNy0wNi0yMDIzCisgY29tcGFu eTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBj b21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgMTEwIHwgICAgICAgIDEyMCB8 IDA3LTA4LTIwMjMKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1 MCB8ICAgICAgICAgIDUwIHwgICAgICAgMTQwMCB8IDA3LTAyLTIwMjMKKyBjb21wYW55MiB8IDA3 LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnky IHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29t cGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAK KyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAxNTAwIHwgICAgICAgICA2 MCB8IDA3LTA2LTIwMjMKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAg ICAgIDExMDAgfCAgICAgICAxMjAwIHwgMDctMDgtMjAyMworIGNvbXBhbnkyIHwgMDctMDgtMjAy MyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0w OS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8 IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorKDIwIHJv d3MpCisKKy0tIGJhc2ljIHRlc3QgdXNpbmcgUFJFVi4gVXNlICc/JworU0VMRUNUIGNvbXBhbnks IHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmlj ZSkgT1ZFUiB3LAorIG50aF92YWx1ZSh0ZGF0ZSwgMikgT1ZFUiB3IEFTIG50aF9zZWNvbmQKKyBG Uk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBB VFRFUk4gKFNUQVJUIFVQPyBET1dOKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAg QVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCisp OworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3Zh bHVlIHwgbnRoX3NlY29uZCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIz IHwgICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAgICAxNDAgfCAwNy0wMi0yMDIzCisgY29tcGFu eTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBj b21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 IAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgIDE1MCB8ICAg ICAgICAgOTAgfCAwNy0wNi0yMDIzCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDEx MCB8ICAgICAgICAgMTEwIHwgICAgICAgIDEyMCB8IDA3LTA4LTIwMjMKKyBjb21wYW55MSB8IDA3 LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkx IHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29t cGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAK KyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgIDUwIHwgICAgICAgMTQw MCB8IDA3LTAyLTIwMjMKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAg MTUwMCB8ICAgICAgICAxNTAwIHwgICAgICAgICA2MCB8IDA3LTA2LTIwMjMKKyBjb21wYW55MiB8 IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBh bnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgIDExMDAgfCAgICAgICAxMjAwIHwgMDct MDgtMjAyMworIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8IAorKDIwIHJvd3MpCisKKy0tIHRlc3QgdXNpbmcgYWx0ZXJu YXRpb24gKHwpIHdpdGggc2VxdWVuY2UKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZp cnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00g c3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVS TiAoU1RBUlQgKFVQIHwgRE9XTikpCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQIEFT IHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsK KyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1 ZSAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgMTAwIHwgICAg ICAgIDIwMAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgIDE1MCB8 ICAgICAgICAxNDAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgICAg IHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAx NTAgfCAgICAgICAgIDkwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAg ICAgMTEwIHwgICAgICAgIDEzMAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAg ICAgICAgIDEyMCB8ICAgICAgICAxMzAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUw IHwgICAgICAgICAgNTAgfCAgICAgICAyMDAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIw MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAg MTUwMCB8ICAgICAgICAxNTAwIHwgICAgICAgMTQwMAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8 ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNS0yMDIz IHwgIDE1MDAgfCAgICAgICAgMTUwMCB8ICAgICAgICAgNjAKKyBjb21wYW55MiB8IDA3LTA2LTIw MjMgfCAgICA2MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDct MjAyMyB8ICAxMTAwIHwgICAgICAgIDExMDAgfCAgICAgICAxMzAwCisgY29tcGFueTIgfCAwNy0w OC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3 LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgICAxMjAwIHwgICAgICAgMTMwMAorIGNvbXBhbnkyIHwg MDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisoMjAgcm93cykK KworLS0gdGVzdCB1c2luZyBhbHRlcm5hdGlvbiAofCkgd2l0aCBncm91cCBxdWFudGlmaWVyCitT RUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBs YXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBB UlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIChVUCB8IERPV04pKykKKyBE RUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAg RE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8 IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIAorLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEt MjAyMyB8ICAgMTAwIHwgICAgICAgICAxMDAgfCAgICAgICAgMTMwCisgY29tcGFueTEgfCAwNy0w Mi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3 LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwg MDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEg fCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55 MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBh bnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29t cGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBj b21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAor IGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg CisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICA1MCB8ICAgICAgIDEz MDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgIAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAKKygyMCByb3dzKQorCistLSB0ZXN0IHVzaW5nIG5lc3RlZCBh bHRlcm5hdGlvbgorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJp Y2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRP VyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCAoKFVQ IERPV04pIHwgRkxBVCkrKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmlj ZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSksCisgIEZMQVQg QVMgcHJpY2UgPSBQUkVWKHByaWNlKQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmlj ZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMg fCAgIDEwMCB8ICAgICAgICAgMTAwIHwgICAgICAgIDE1MAorIGNvbXBhbnkxIHwgMDctMDItMjAy MyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wMy0y MDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA0 LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgMTQwIHwgICAgICAgICA5MAorIGNvbXBhbnkxIHwgMDct MDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAw Ny0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8 IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgMTEwIHwgICAgICAgIDEyMAorIGNvbXBhbnkx IHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFu eTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21w YW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNv bXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAgfCAgICAgICAxNTAwCisg Y29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAK KyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg IAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgIDE0MDAgfCAgICAgICAg IDYwCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgIDExMDAgfCAg ICAgICAxMjAwCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgCisoMjAgcm93cykKKworLS0gdGVzdCB1c2luZyBncm91cCB3aXRoIHF1 YW50aWZpZXIKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNl KSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cg dyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoKFVQIERPV04pKykK KyBERUZJTkUKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8 IFBSRVYocHJpY2UpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3Rf dmFsdWUgfCBsYXN0X3ZhbHVlIAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAg fCAgICAgICAgIDIwMCB8ICAgICAgICAxNTAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1 MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAg MTQwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwg ICAxNTAgfCAgICAgICAgIDE1MCB8ICAgICAgICAgOTAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMg fCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDctMjAy MyB8ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wOC0y MDIzIHwgICAxMzAgfCAgICAgICAgIDEzMCB8ICAgICAgICAxMjAKKyBjb21wYW55MSB8IDA3LTA5 LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDct MTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAw Ny0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8 IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAyMDAwIHwgICAgICAgMTUwMAorIGNvbXBhbnky IHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFu eTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21w YW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAxNTAwIHwgICAgICAgICA2MAorIGNv bXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisg Y29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAK KyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAxMzAwIHwgICAgICAgMTIw MAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAKKygyMCByb3dzKQorCistLSB0ZXN0IHVzaW5nIGFic29sdXRlIHRocmVzaG9sZCB2YWx1 ZXMgKG5vdCByZWxhdGl2ZSBQUkVWKQorLS0gSElHSDogcHJpY2UgPiAxNTAsIExPVzogcHJpY2Ug PCAxMDAsIE1JRDogbmV1dHJhbCByYW5nZQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwg Zmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3CisgRlJP TSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRU RVJOIChMT1cgTUlEKiBISUdIKQorIERFRklORQorICBMT1cgQVMgcHJpY2UgPCAxMDAsCisgIE1J RCBBUyBwcmljZSA+PSAxMDAgQU5EIHByaWNlIDw9IDE1MCwKKyAgSElHSCBBUyBwcmljZSA+IDE1 MAorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFz dF92YWx1ZSAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAx MjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAg IDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8 ICAgIDUwIHwgICAgICAgICAgNTAgfCAgICAgICAyMDAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIz IHwgIDIwMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTAzLTIw MjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDQt MjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0w NS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3 LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgIDYwIHwgICAgICAgMTEwMAorIGNvbXBhbnkyIHwg MDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIg fCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55 MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBh bnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisoMjAg cm93cykKKworLS0gdGVzdCB0aHJlc2hvbGQtYmFzZWQgcGF0dGVybiB3aXRoIGFsdGVybmF0aW9u CitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3 LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAor IFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKExPVyAoTUlEIHwgSElHSCkrKQor IERFRklORQorICBMT1cgQVMgcHJpY2UgPCAxMDAsCisgIE1JRCBBUyBwcmljZSA+PSAxMDAgQU5E IHByaWNlIDw9IDE1MCwKKyAgSElHSCBBUyBwcmljZSA+IDE1MAorKTsKKyBjb21wYW55ICB8ICAg dGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSAKKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBjb21wYW55 MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBh bnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29t cGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBj b21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAor IGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg CisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICA5MCB8ICAgICAgICAx MzAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgIAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAg fCAgICAgICAxNTAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAg ICAgICAgIDYwIHwgICAgICAgMTMwMAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAx MzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisoMjAgcm93cykKKworLS0gYmFzaWMgdGVz dCB3aXRoIG5vbmUtZ3JlZWR5IHBhdHRlcm4KK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2Us IGNvdW50KCopIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9O IEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoQSBBIEEpCisgREVGSU5FCisgIEEgQVMgcHJpY2Ug Pj0gMTQwIEFORCBwcmljZSA8PSAxNTAKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJp Y2UgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLQorIGNv bXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAyLTIw MjMgfCAgIDIwMCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAg MworIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3 LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAg fCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgIDAKKyBjb21wYW55 MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwg ICAxMjAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgIDAKKyBj b21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMi0y MDIzIHwgIDIwMDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAg IDAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAwCisgY29tcGFueTIgfCAw Ny0wNS0yMDIzIHwgIDE1MDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYw IHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAwCisgY29tcGFu eTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8 ICAxMjAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAwCiso MjAgcm93cykKKworLS0gdGVzdCB1c2luZyB7bn0gcXVhbnRpZmllciAoQSBBIEEgc2hvdWxkIGJl IG9wdGltaXplZCB0byBBezN9KQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQo KikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29t cGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor IElOSVRJQUwKKyBQQVRURVJOIChBezN9KQorIERFRklORQorICBBIEFTIHByaWNlID49IDE0MCBB TkQgcHJpY2UgPD0gMTUwCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgY291 bnQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0KKyBjb21wYW55MSB8 IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAy MDAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAgIDMKKyBjb21w YW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNS0yMDIz IHwgICAxNTAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgIDAK KyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0w OC0yMDIzIHwgICAxMzAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwg ICAgIDAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAwCisgY29tcGFueTIg fCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAy MDAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAwCisgY29t cGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDUtMjAy MyB8ICAxNTAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAw CisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDct MDgtMjAyMyB8ICAxMzAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8 ICAgICAwCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgMAorKDIwIHJvd3Mp CisKKy0tIHRlc3QgdXNpbmcge24sfSBxdWFudGlmaWVyICgyIG9yIG1vcmUpCitTRUxFQ1QgY29t cGFueSwgdGRhdGUsIHByaWNlLCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9X IHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKEF7Mix9KQorIERF RklORQorICBBIEFTIHByaWNlID4gMTAwCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHBy aWNlIHwgY291bnQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0KKyBj b21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wMi0y MDIzIHwgICAyMDAgfCAgICAgNAorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAg IDAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAwCisgY29tcGFueTEgfCAw Ny0wNS0yMDIzIHwgICAxNTAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkw IHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICA0CisgY29tcGFu eTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8 ICAgMTIwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAwCisg Y29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDIt MjAyMyB8ICAyMDAwIHwgICAgIDQKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgMAorIGNvbXBhbnkyIHwg MDctMDUtMjAyMyB8ICAxNTAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2 MCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgNAorIGNvbXBh bnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMg fCAgMTIwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgMAor KDIwIHJvd3MpCisKKy0tIHRlc3QgdXNpbmcge24sbX0gcXVhbnRpZmllciAoMiB0byA0KQorU0VM RUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jawor IFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChBezIs NH0pCisgREVGSU5FCisgIEEgQVMgcHJpY2UgPiAxMDAKKyk7CisgY29tcGFueSAgfCAgIHRkYXRl ICAgIHwgcHJpY2UgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgIDAKKyBjb21wYW55MSB8 IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICA0CisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAx NTAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgIDAKKyBjb21w YW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIz IHwgICAgOTAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgIDQK KyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0w OS0yMDIzIHwgICAxMjAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwg ICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAwCisgY29tcGFueTIg fCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgNAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAx NTAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAwCisgY29t cGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAy MyB8ICAgIDYwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICA0 CisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDct MDktMjAyMyB8ICAxMjAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8 ICAgICAwCisoMjAgcm93cykKKworLS0gbGFzdF92YWx1ZSgpIHNob3VsZCByZW1haW4gY29uc2lz dGVudAorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgbGFzdF92YWx1ZShwcmljZSkgT1ZF UiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQor IE9SREVSIEJZIHRkYXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKKyBERUZJTkUK KyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBB UyBwcmljZSA8IFBSRVYocHJpY2UpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNl IHwgbGFzdF92YWx1ZSAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0t LS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgMTQwCisgY29tcGFu eTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wMy0y MDIzIHwgICAxNTAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAg fCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAg CisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgMTIwCisgY29tcGFueTEg fCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wOC0yMDIz IHwgICAxMzAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAg ICAgICAgICAgCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgCisg Y29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAxNDAwCisgY29tcGFueTIgfCAw Ny0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwg IDE1MDAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAg ICAgICAgCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgCisgY29t cGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAxMjAwCisgY29tcGFueTIgfCAwNy0w Ny0yMDIzIHwgIDExMDAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEz MDAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAg ICAgCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgCisoMjAgcm93 cykKKworLS0gb21pdCAiU1RBUlQiIGluIERFRklORSBidXQgaXQgaXMgb2sgYmVjYXVzZSAiU1RB UlQgQVMgVFJVRSIgaXMKKy0tIGltcGxpY2l0bHkgZGVmaW5lZC4gcGVyIHNwZWMuCitTRUxFQ1Qg Y29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3Zh bHVlKHByaWNlKSBPVkVSIHcsCisgbnRoX3ZhbHVlKHRkYXRlLCAyKSBPVkVSIHcgQVMgbnRoX3Nl Y29uZAorIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkK KyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklU SUFMCisgUEFUVEVSTiAoU1RBUlQgVVArIERPV04rKQorIERFRklORQorICBVUCBBUyBwcmljZSA+ IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisgY29tcGFu eSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBudGhf c2Vjb25kIAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8 ICAgICAgICAgMTAwIHwgICAgICAgIDE0MCB8IDA3LTAyLTIwMjMKKyBjb21wYW55MSB8IDA3LTAy LTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwg MDctMDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFu eTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBj b21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 IAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgOTAgfCAgICAgICAg MTIwIHwgMDctMDctMjAyMworIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEy MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8 ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wMS0y MDIzIHwgICAgNTAgfCAgICAgICAgICA1MCB8ICAgICAgIDE0MDAgfCAwNy0wMi0yMDIzCisgY29t cGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAK KyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8IAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAg IDYwIHwgICAgICAgMTIwMCB8IDA3LTA3LTIwMjMKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAg MTEwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDgtMjAy MyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0w OS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8 IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorKDIwIHJv d3MpCisKKy0tIHRoZSBmaXJzdCByb3cgc3RhcnQgd2l0aCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8g MTAwCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZF UiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMg KAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKExPV1BSSUNFIFVQKyBET1dO KykKKyBERUZJTkUKKyAgTE9XUFJJQ0UgQVMgcHJpY2UgPD0gMTAwLAorICBVUCBBUyBwcmljZSA+ IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisgY29tcGFu eSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgCistLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg Y29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAgICAxNDAK KyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg IAorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgOTAgfCAg ICAgICAgMTIwCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAg ICAgIDUwIHwgICAgICAgMTQwMAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAg NjAgfCAgICAgICAgICA2MCB8ICAgICAgIDEyMDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAg MTEwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8 ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wOS0yMDIz IHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTEwLTIw MjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorKDIwIHJvd3MpCisKKy0tIHNl Y29uZCByb3cgcmFpc2VzIDEyMCUKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0 X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3Rv Y2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAo TE9XUFJJQ0UgVVArIERPV04rKQorIERFRklORQorICBMT1dQUklDRSBBUyBwcmljZSA8PSAxMDAs CisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSkgKiAxLjIsCisgIERPV04gQVMgcHJpY2UgPCBQ UkVWKHByaWNlKQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3Zh bHVlIHwgbGFzdF92YWx1ZSAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAg ICAgICAgMTAwIHwgICAgICAgIDE0MAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0 MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAg MTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwg ICAgOTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMg fCAgIDExMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDgtMjAy MyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wOS0y MDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTEw LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDct MDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAgfCAgICAgICAxNDAwCisgY29tcGFueTIgfCAw Ny0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8 IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnky IHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFu eTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21w YW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNv bXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisg Y29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAK KyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg IAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgCisoMjAgcm93cykKKworLS0gdXNpbmcgTkVYVAorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBw cmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3 CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwK KyBQQVRURVJOIChTVEFSVCBVUERPV04pCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQ RE9XTiBBUyBwcmljZSA+IFBSRVYocHJpY2UpIEFORCBwcmljZSA+IE5FWFQocHJpY2UpCispOwor IGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVl IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAxMDAgfCAgICAg ICAgMjAwCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAxNDAg fCAgICAgICAgMTUwCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAg ICAxMTAgfCAgICAgICAgMTMwCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAg fCAgICAgICAgICA1MCB8ICAgICAgIDIwMDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAx NTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwg IDE0MDAgfCAgICAgICAgMTQwMCB8ICAgICAgIDE1MDAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMg fCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDYtMjAy MyB8ICAgIDYwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNy0y MDIzIHwgIDExMDAgfCAgICAgICAgMTEwMCB8ICAgICAgIDEzMDAKKyBjb21wYW55MiB8IDA3LTA4 LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDct MDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAw Ny0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKygyMCByb3dzKQor CistLSB1c2luZyBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCitTRUxFQ1QgY29tcGFueSwg dGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNl KSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21w YW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg QUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBV UERPV04pCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQRE9XTiBBUyBwcmljZSA+IFBS RVYocHJpY2UpIEFORCBwcmljZSA+IE5FWFQocHJpY2UpCispOworIGNvbXBhbnkgIHwgICB0ZGF0 ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIAorLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIGNvbXBhbnkxIHwg MDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAxMDAgfCAgICAgICAgMjAwCisgY29tcGFueTEg fCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55 MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBh bnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAxNDAgfCAgICAgICAgMTUwCisgY29t cGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBj b21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAor IGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAxMTAgfCAgICAgICAgMTMw CisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgIAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICA1MCB8ICAg ICAgIDIwMDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgMTQw MCB8ICAgICAgIDE1MDAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAg ICAgMTEwMCB8ICAgICAgIDEzMDAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAKKygyMCByb3dzKQorCistLSBtYXRjaCBldmVyeXRo aW5nCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZF UiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMg KAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgT1JERVIgQlkgdGRhdGUKKyBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyBJTklUSUFMCisgUEFUVEVSTiAoQSspCisgREVGSU5FCisgIEEgQVMgVFJV RQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFz dF92YWx1ZSAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgMTAw IHwgICAgICAgIDEzMAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAx MjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAg IDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8 ICAgIDUwIHwgICAgICAgICAgNTAgfCAgICAgICAxMzAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIz IHwgIDIwMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTAzLTIw MjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDQt MjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0w NS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3 LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwg MDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIg fCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55 MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBh bnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisoMjAg cm93cykKKworLS0gbnRoX3ZhbHVlIGJleW9uZCByZWR1Y2VkIGZyYW1lIChubyBJR05PUkUgTlVM TFMpCistLSBUZXN0cyBXaW5HZXRTbG90SW5GcmFtZS9XaW5HZXRGdW5jQXJnSW5GcmFtZSBvdXQt b2YtZnJhbWUgd2l0aCBSUFIKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgbnRoX3Zh bHVlKHByaWNlLCA1KSBPVkVSIHcgQVMgbnRoXzUKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgK KyBQQVJUSVRJT04gQlkgY29tcGFueQorIE9SREVSIEJZIHRkYXRlCisgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgUEFUVEVSTiAoU1RBUlQgVVArIERPV04rKQorIERFRklORQorICBTVEFSVCBB UyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwg UFJFVihwcmljZSkKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBudGhfNSAK Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDct MDEtMjAyMyB8ICAgMTAwIHwgICAgICAKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8 ICAgICAgCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgIAorIGNvbXBhbnkx IHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAg IDE1MCB8ICAgICAgCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgIAorIGNv bXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAKKyBjb21wYW55MSB8IDA3LTA4LTIw MjMgfCAgIDEzMCB8ICAgICAgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAg IAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAKKyBjb21wYW55MiB8IDA3 LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAg fCAgICAgIAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAKKyBjb21wYW55 MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwg IDE1MDAgfCAgICAgIAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAKKyBj b21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgCisgY29tcGFueTIgfCAwNy0wOC0y MDIzIHwgIDEzMDAgfCAgICAgIAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAg ICAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgCisoMjAgcm93cykKKwor LS0gYmFja3RyYWNraW5nIHdpdGggcmVjbGFzc2lmaWNhdGlvbiBvZiByb3dzCistLSB1c2luZyBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJp Y2UsIGZpcnN0X3ZhbHVlKHRkYXRlKSBPVkVSIHcsIGxhc3RfdmFsdWUodGRhdGUpIE9WRVIgdwor IEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRF UiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworIElOSVRJQUwKKyBQQVRURVJO IChBKyBCKykKKyBERUZJTkUKKyAgQSBBUyBwcmljZSA+IDEwMCwKKyAgQiBBUyBwcmljZSA+IDEw MAorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFz dF92YWx1ZSAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgICAg IHwgCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAwNy0wMi0yMDIzICB8IDA3LTA1 LTIwMjMKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgCisg Y29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8IAorIGNvbXBhbnkx IHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA2 LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwg ICAxMTAgfCAwNy0wNy0yMDIzICB8IDA3LTEwLTIwMjMKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMg fCAgIDEzMCB8ICAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAg fCAgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAg ICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgICAgIHwg CisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAwNy0wMi0yMDIzICB8IDA3LTA1LTIw MjMKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgCisgY29t cGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwg MDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA2LTIw MjMgfCAgICA2MCB8ICAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDEx MDAgfCAwNy0wNy0yMDIzICB8IDA3LTEwLTIwMjMKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAg MTMwMCB8ICAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAg ICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAg ICAgfCAKKygyMCByb3dzKQorCistLSBiYWNrdHJhY2tpbmcgd2l0aCByZWNsYXNzaWZpY2F0aW9u IG9mIHJvd3MKKy0tIHVzaW5nIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKK1NFTEVDVCBj b21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHRkYXRlKSBPVkVSIHcsIGxhc3RfdmFs dWUodGRhdGUpIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9O IEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyBJ TklUSUFMCisgUEFUVEVSTiAoQSsgQispCisgREVGSU5FCisgIEEgQVMgcHJpY2UgPiAxMDAsCisg IEIgQVMgcHJpY2UgPiAxMDAKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBm aXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAx MDAgfCAgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgMDct MDItMjAyMyAgfCAwNy0wNS0yMDIzCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAw Ny0wMy0yMDIzICB8IDA3LTA1LTIwMjMKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8 IDA3LTA0LTIwMjMgIHwgMDctMDUtMjAyMworIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUw IHwgICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAg ICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAwNy0wNy0yMDIzICB8 IDA3LTEwLTIwMjMKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8IDA3LTA4LTIwMjMg IHwgMDctMTAtMjAyMworIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgMDctMDktMjAy MyAgfCAwNy0xMC0yMDIzCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAg ICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgICAgfCAK KyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8IDA3LTAyLTIwMjMgIHwgMDctMDUtMjAy MworIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgMDctMDMtMjAyMyAgfCAwNy0wNS0y MDIzCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAwNy0wNC0yMDIzICB8IDA3LTA1 LTIwMjMKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgCisg Y29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICAgICB8IAorIGNvbXBhbnky IHwgMDctMDctMjAyMyB8ICAxMTAwIHwgMDctMDctMjAyMyAgfCAwNy0xMC0yMDIzCisgY29tcGFu eTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAwNy0wOC0yMDIzICB8IDA3LTEwLTIwMjMKKyBjb21w YW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8IDA3LTA5LTIwMjMgIHwgMDctMTAtMjAyMworIGNv bXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAKKygyMCByb3dzKQor CistLSBTS0lQIFRPIE5FWFQgUk9XIHdpdGggbGltaXRlZCBmcmFtZSAoSXNoaWktc2FuJ3MgdGVz dCBjYXNlKQorLS0gRWFjaCByb3cgc2hvdWxkIHByb2R1Y2UgaXRzIG93biBtYXRjaCB3aXRoaW4g aXRzIGZyYW1lCitXSVRIIGRhdGEgQVMgKAorIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAoJ0En LCAxKSwgKCdBJywgMiksCisgICgnQicsIDMpLCAoJ0InLCA0KQorICkgQVMgdChnaWQsIGlkKQor KQorU0VMRUNUIGdpZCwgaWQsIGFycmF5X2FnZyhpZCkgT1ZFUiB3CitGUk9NIGRhdGEKK1dJTkRP VyB3IEFTICgKKyBQQVJUSVRJT04gQlkgZ2lkCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCAyIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyBQQVRURVJOIChB KykKKyBERUZJTkUgQSBBUyBpZCA8IDEwCispOworIGdpZCB8IGlkIHwgYXJyYXlfYWdnIAorLS0t LS0rLS0tLSstLS0tLS0tLS0tLQorIEEgICB8ICAxIHwgezEsMn0KKyBBICAgfCAgMiB8IHsyfQor IEIgICB8ICAzIHwgezMsNH0KKyBCICAgfCAgNCB8IHs0fQorKDQgcm93cykKKworLS0gTGltaXRl ZCBmcmFtZSB3aXRoIGFic29ycHRpb24gdGVzdAorLS0gUm93IDA6IGZyYW1lIFswLDJdLCBjYW4n dCBzZWUgQiBhdCByb3cgMyAtPiBubyBtYXRjaAorLS0gUm93IDE6IGZyYW1lIFsxLDNdLCBjYW4g c2VlIEEgQSBCIC0+IHNob3VsZCBtYXRjaCByb3dzIDEtMworV0lUSCBmcmFtZV9hYnNvcmJfdGVz dCBBUyAoCisgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICgwLCAnQScpLCAoMSwgJ0EnKSwgKDIs ICdBJyksICgzLCAnQicpCisgKSBBUyB0KGlkLCBmbGFnKQorKQorU0VMRUNUIGlkLCBmbGFnLCBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCitGUk9NIGZyYW1lX2Fic29yYl90ZXN0CitXSU5ET1cgdyBBUyAoCisg T1JERVIgQlkgaWQKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDIgRk9MTE9XSU5HCisg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgUEFUVEVSTiAoQSsgQikKKyBERUZJTkUK KyAgQSBBUyBmbGFnID0gJ0EnLAorICBCIEFTIGZsYWcgPSAnQicKKyk7CisgaWQgfCBmbGFnIHwg bWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgIDAgfCBBICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMSB8IEEgICAg fCAgICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwgQSAgICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDMgfCBCICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisK Ky0tIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgb2Zmc2V0IEZPTExPV0lORworU0VMRUNU IGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUodGRhdGUpIE9WRVIgdywgbGFzdF92 YWx1ZSh0ZGF0ZSkgT1ZFUiB3LAorIGNvdW50KCopIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5E T1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMiBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyBQQVRURVJOIChTVEFSVCBVUCsgRE9XTispCisgREVGSU5FCisgIFNUQVJU IEFTIFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2Ug PCBQUkVWKHByaWNlKQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0 X3ZhbHVlIHwgbGFzdF92YWx1ZSB8IGNvdW50IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCisgY29tcGFueTEgfCAwNy0w MS0yMDIzIHwgICAxMDAgfCAwNy0wMS0yMDIzICB8IDA3LTAzLTIwMjMgfCAgICAgMworIGNvbXBh bnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAwNy0wNC0yMDIz ICB8IDA3LTA2LTIwMjMgfCAgICAgMworIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMg fCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAw Ny0wNy0yMDIzIHwgICAxMTAgfCAwNy0wNy0yMDIzICB8IDA3LTA5LTIwMjMgfCAgICAgMworIGNv bXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUw IHwgMDctMDEtMjAyMyAgfCAwNy0wMy0yMDIzIHwgICAgIDMKKyBjb21wYW55MiB8IDA3LTAyLTIw MjMgfCAgMjAwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIg fCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAor IGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgMDctMDQtMjAyMyAgfCAwNy0wNi0yMDIz IHwgICAgIDMKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAx MTAwIHwgMDctMDctMjAyMyAgfCAwNy0wOS0yMDIzIHwgICAgIDMKKyBjb21wYW55MiB8IDA3LTA4 LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgIDAKKygyMCByb3dzKQorCistLQorLS0gQWdncmVnYXRlcworLS0KKy0tIHVzaW5n IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBw cmljZSwKKyBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LAorIGxhc3RfdmFsdWUocHJpY2UpIE9W RVIgdywKKyBtYXgocHJpY2UpIE9WRVIgdywKKyBtaW4ocHJpY2UpIE9WRVIgdywKKyBzdW0ocHJp Y2UpIE9WRVIgdywKKyBhdmcocHJpY2UpIE9WRVIgdywKKyBjb3VudChwcmljZSkgT1ZFUiB3CitG Uk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCitQQVJUSVRJT04gQlkgY29tcGFueQorUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCitBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKK0lOSVRJQUwKK1BBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKK0RFRklO RQorU1RBUlQgQVMgVFJVRSwKK1VQIEFTIHByaWNlID4gUFJFVihwcmljZSksCitET1dOIEFTIHBy aWNlIDwgUFJFVihwcmljZSkKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBm aXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBtYXggIHwgbWluIHwgc3VtICB8ICAgICAgICAgIGF2 ZyAgICAgICAgICB8IGNvdW50IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAg ICAgMTAwIHwgICAgICAgIDE0MCB8ICAyMDAgfCAxMDAgfCAgNTkwIHwgIDE0Ny41MDAwMDAwMDAw MDAwMDAwIHwgICAgIDQKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg IHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAg IDAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgIDkwIHwgICAgICAg IDEyMCB8ICAxMzAgfCAgOTAgfCAgNDUwIHwgIDExMi41MDAwMDAwMDAwMDAwMDAwIHwgICAgIDQK KyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBj b21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21w YW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55 MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAg fCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8 IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgIDUwIHwgICAgICAgMTQwMCB8IDIwMDAgfCAg NTAgfCA0OTUwIHwgMTIzNy41MDAwMDAwMDAwMDAwMDAwIHwgICAgIDQKKyBjb21wYW55MiB8IDA3 LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAg fCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAz LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA0LTIw MjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMg fCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAg ICA2MCB8ICAgICAgICAgIDYwIHwgICAgICAgMTIwMCB8IDEzMDAgfCAgNjAgfCAzNjYwIHwgIDkx NS4wMDAwMDAwMDAwMDAwMDAwIHwgICAgIDQKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgIDAKKygyMCByb3dzKQorCistLSB1c2luZyBBRlRFUiBNQVRDSCBTS0lQIFRP IE5FWFQgUk9XCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorIGZpcnN0X3ZhbHVlKHBy aWNlKSBPVkVSIHcsCisgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LAorIG1heChwcmljZSkgT1ZF UiB3LAorIG1pbihwcmljZSkgT1ZFUiB3LAorIHN1bShwcmljZSkgT1ZFUiB3LAorIGF2Zyhwcmlj ZSkgT1ZFUiB3LAorIGNvdW50KHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFT ICgKK1BBUlRJVElPTiBCWSBjb21wYW55CitST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKK0FGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKK0lOSVRJQUwK K1BBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKK0RFRklORQorU1RBUlQgQVMgVFJVRSwKK1VQIEFT IHByaWNlID4gUFJFVihwcmljZSksCitET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7Cisg Y29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUg fCBtYXggIHwgbWluICB8IHN1bSAgfCAgICAgICAgICBhdmcgICAgICAgICAgfCBjb3VudCAKKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNv bXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAxMDAgfCAgICAgICAgMTQwIHwg IDIwMCB8ICAxMDAgfCAgNTkwIHwgIDE0Ny41MDAwMDAwMDAwMDAwMDAwIHwgICAgIDQKKyBjb21w YW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAgfCAgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg IHwgICAgICB8ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkx IHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAxNDAgfCAgICAgICAgIDkwIHwgIDE1MCB8 ICAgOTAgfCAgMzgwIHwgIDEyNi42NjY2NjY2NjY2NjY2NjY3IHwgICAgIDMKKyBjb21wYW55MSB8 IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAg ICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAw Ny0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICA5MCB8ICAgICAgICAxMjAgfCAgMTMwIHwgICA5 MCB8ICA0NTAgfCAgMTEyLjUwMDAwMDAwMDAwMDAwMDAgfCAgICAgNAorIGNvbXBhbnkxIHwgMDct MDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAxMTAgfCAgICAgICAgMTIwIHwgIDEzMCB8ICAxMTAg fCAgMzYwIHwgIDEyMC4wMDAwMDAwMDAwMDAwMDAwIHwgICAgIDMKKyBjb21wYW55MSB8IDA3LTA4 LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgIHwg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOS0y MDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgICB8ICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAy MyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICB8ICAgICAgfCAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMg fCAgICA1MCB8ICAgICAgICAgIDUwIHwgICAgICAgMTQwMCB8IDIwMDAgfCAgIDUwIHwgNDk1MCB8 IDEyMzcuNTAwMDAwMDAwMDAwMDAwMCB8ICAgICA0CisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwg IDIwMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAx NTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICB8ICAgICAgfCAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQw MCB8ICAgICAgICAxNDAwIHwgICAgICAgICA2MCB8IDE1MDAgfCAgIDYwIHwgMjk2MCB8ICA5ODYu NjY2NjY2NjY2NjY2NjY2NyB8ICAgICAzCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwg ICAgICAgICAgNjAgfCAgICAgICAxMjAwIHwgMTMwMCB8ICAgNjAgfCAzNjYwIHwgIDkxNS4wMDAw MDAwMDAwMDAwMDAwIHwgICAgIDQKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAg ICAgICAxMTAwIHwgICAgICAgMTIwMCB8IDEzMDAgfCAxMTAwIHwgMzYwMCB8IDEyMDAuMDAwMDAw MDAwMDAwMDAwMCB8ICAgICAzCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgICAgICB8ICAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAwCisoMjAgcm93cykKKworLS0gSk9JTiBjYXNlCitDUkVBVEUgVEVNUCBUQUJM RSB0MSAoaSBpbnQsIHYxIGludCk7CitDUkVBVEUgVEVNUCBUQUJMRSB0MiAoaiBpbnQsIHYyIGlu dCk7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMoMSwxMCk7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMo MSwxMSk7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMoMSwxMik7CitJTlNFUlQgSU5UTyB0MiBWQUxV RVMoMiwxMCk7CitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMiwxMSk7CitJTlNFUlQgSU5UTyB0MiBW QUxVRVMoMiwxMik7CitTRUxFQ1QgKiBGUk9NIHQxLCB0MiBXSEVSRSB0MS52MSA8PSAxMSBBTkQg dDIudjIgPD0gMTE7CisgaSB8IHYxIHwgaiB8IHYyIAorLS0tKy0tLS0rLS0tKy0tLS0KKyAxIHwg MTAgfCAyIHwgMTAKKyAxIHwgMTAgfCAyIHwgMTEKKyAxIHwgMTEgfCAyIHwgMTAKKyAxIHwgMTEg fCAyIHwgMTEKKyg0IHJvd3MpCisKK1NFTEVDVCAqLCBjb3VudCgqKSBPVkVSIHcgRlJPTSB0MSwg dDIKK1dJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgdDEuaQorIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChBKQor IERFRklORQorIEEgQVMgdjEgPD0gMTEgQU5EIHYyIDw9IDExCispOworIGkgfCB2MSB8IGogfCB2 MiB8IGNvdW50IAorLS0tKy0tLS0rLS0tKy0tLS0rLS0tLS0tLQorIDEgfCAxMCB8IDIgfCAxMCB8 ICAgICAxCisgMSB8IDEwIHwgMiB8IDExIHwgICAgIDEKKyAxIHwgMTAgfCAyIHwgMTIgfCAgICAg MAorIDEgfCAxMSB8IDIgfCAxMCB8ICAgICAxCisgMSB8IDExIHwgMiB8IDExIHwgICAgIDEKKyAx IHwgMTEgfCAyIHwgMTIgfCAgICAgMAorIDEgfCAxMiB8IDIgfCAxMCB8ICAgICAwCisgMSB8IDEy IHwgMiB8IDExIHwgICAgIDAKKyAxIHwgMTIgfCAyIHwgMTIgfCAgICAgMAorKDkgcm93cykKKwor LS0gV0lUSCBjYXNlCitXSVRIIHdzdG9jayBBUyAoCisgIFNFTEVDVCAqIEZST00gc3RvY2sgV0hF UkUgdGRhdGUgPCAnMjAyMy0wNy0wOCcKKykKK1NFTEVDVCB0ZGF0ZSwgcHJpY2UsCitmaXJzdF92 YWx1ZSh0ZGF0ZSkgT1ZFUiB3LAorY291bnQoKikgT1ZFUiB3CisgRlJPTSB3c3RvY2sKKyBXSU5E T1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQ QVRURVJOIChTVEFSVCBVUCsgRE9XTispCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQ IEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQor KTsKKyAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGNvdW50IAorLS0tLS0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgMDctMDEtMjAyMyB8ICAgMTAwIHwg MDctMDEtMjAyMyAgfCAgICAgNAorIDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwg ICAgIDAKKyAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAwCisgMDctMDQt MjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgMAorIDA3LTA1LTIwMjMgfCAgIDE1MCB8 ICAgICAgICAgICAgIHwgICAgIDAKKyAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICAgICB8 ICAgICAwCisgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAgMAorIDA3LTAx LTIwMjMgfCAgICA1MCB8IDA3LTAxLTIwMjMgIHwgICAgIDQKKyAwNy0wMi0yMDIzIHwgIDIwMDAg fCAgICAgICAgICAgICB8ICAgICAwCisgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAg fCAgICAgMAorIDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgIDAKKyAwNy0w NS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAwCisgMDctMDYtMjAyMyB8ICAgIDYw IHwgICAgICAgICAgICAgfCAgICAgMAorIDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgICAgICAg IHwgICAgIDAKKygxNCByb3dzKQorCistLSBSZVNjYW4gdGVzdDogTEFURVJBTCBqb2luIGZvcmNl cyBXaW5kb3dBZ2cgcmVzY2FuIHdpdGggUlBSCistLSBUZXN0cyBFeGVjUmVTY2FuV2luZG93QWdn IGNsZWFyaW5nIHByZXZfc2xvdC9uZXh0X3Nsb3QKK1NFTEVDVCBnLngsIHN1Yi4qCitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAyKSBnKHgpLAorTEFURVJBTCAoCisgIFNFTEVDVCBpZCwgcHJpY2Us IGNvdW50KCopIE9WRVIgdyBBUyBjCisgIEZST00gKFZBTFVFUyAoMSwgMTAwKSwgKDIsIDIwMCks ICgzLCAxNTApKSBBUyB0KGlkLCBwcmljZSkKKyAgV0hFUkUgaWQgPD0gZy54ICsgMQorICBXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChTVEFSVCBVUCspCisgICAgREVG SU5FCisgICAgICBTVEFSVCBBUyBUUlVFLAorICAgICAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNl KQorICApCispIHN1YgorT1JERVIgQlkgZy54LCBzdWIuaWQ7CisgeCB8IGlkIHwgcHJpY2UgfCBj IAorLS0tKy0tLS0rLS0tLS0tLSstLS0KKyAxIHwgIDEgfCAgIDEwMCB8IDIKKyAxIHwgIDIgfCAg IDIwMCB8IDAKKyAyIHwgIDEgfCAgIDEwMCB8IDIKKyAyIHwgIDIgfCAgIDIwMCB8IDAKKyAyIHwg IDMgfCAgIDE1MCB8IDAKKyg1IHJvd3MpCisKKy0tIFBSRVYgaGFzIG11bHRpcGxlIGNvbHVtbiBy ZWZlcmVuY2UKK0NSRUFURSBURU1QIFRBQkxFIHJwcjEgKGlkIElOVEVHRVIsIGkgU0VSSUFMLCBq IElOVEVHRVIpOworSU5TRVJUIElOVE8gcnByMShpZCwgaikgU0VMRUNUIDEsIGcqMiBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAxMCkgQVMgZzsKK1NFTEVDVCBpZCwgaSwgaiwgY291bnQoKikgT1ZF UiB3CisgRlJPTSBycHIxCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBpZAorIE9SREVS IEJZIGkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RB UlQgQ09ORCspCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIENPTkQgQVMgUFJFVihpICsg aiArIDEpIDwgMTAKKyk7CisgaWQgfCBpICB8IGogIHwgY291bnQgCistLS0tKy0tLS0rLS0tLSst LS0tLS0tCisgIDEgfCAgMSB8ICAyIHwgICAgIDMKKyAgMSB8ICAyIHwgIDQgfCAgICAgMAorICAx IHwgIDMgfCAgNiB8ICAgICAwCisgIDEgfCAgNCB8ICA4IHwgICAgIDAKKyAgMSB8ICA1IHwgMTAg fCAgICAgMAorICAxIHwgIDYgfCAxMiB8ICAgICAwCisgIDEgfCAgNyB8IDE0IHwgICAgIDAKKyAg MSB8ICA4IHwgMTYgfCAgICAgMAorICAxIHwgIDkgfCAxOCB8ICAgICAwCisgIDEgfCAxMCB8IDIw IHwgICAgIDAKKygxMCByb3dzKQorCistLSBTbW9rZSB0ZXN0IGZvciBsYXJnZXIgcGFydGl0aW9u cy4KK1dJVEggcyBBUyAoCisgU0VMRUNUIHYsIGNvdW50KCopIE9WRVIgdyBBUyBjCisgRlJPTSAo U0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSB2KQorIFdJTkRPVyB3IEFTICgKKyAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICBJTklUSUFMCisgIFBBVFRFUk4gKCByKyApCisgIERF RklORSByIEFTIFRSVUUKKyApCispCistLSBTaG91bGQgYmUgZXhhY3RseSBvbmUgbG9uZyBtYXRj aCBhY3Jvc3MgYWxsIHJvd3MuCitTRUxFQ1QgKiBGUk9NIHMgV0hFUkUgYyA+IDA7CisgdiB8ICBj ICAgCistLS0rLS0tLS0tCisgMSB8IDUwMDAKKygxIHJvdykKKworV0lUSCBzIEFTICgKKyBTRUxF Q1QgdiwgY291bnQoKikgT1ZFUiB3IEFTIGMKKyBGUk9NIChTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVz KDEsIDUwMDApIHYpCisgV0lORE9XIHcgQVMgKAorICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgIElOSVRJQUwKKyAgUEFUVEVSTiAoIHIgKQorICBERUZJTkUgciBBUyBUUlVFCisgKQorKQor LS0gRXZlcnkgcm93IHNob3VsZCBiZSBpdHMgb3duIG1hdGNoLgorU0VMRUNUIGNvdW50KCopIEZS T00gcyBXSEVSRSBjID4gMDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgNTAwMAorKDEgcm93KQorCist LSBMYXJnZSBwYXJ0aXRpb24gdGVzdDogMTAwSyByb3dzIHdpdGggQSsgQiogQ3sxMDAwMCx9IHBh dHRlcm4KKy0tIFRlc3RzIHRoYXQgaW50MzIgY291bnQgZG9lc24ndCBvdmVyZmxvdyB3aXRoIGxh cmdlIHJlcGV0aXRpb25zCitXSVRIIGRhdGEgQVMgKAorIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMo MCwgMTAwMDAwKSBBUyB2CispLAorcmVzdWx0IEFTICgKKyBTRUxFQ1QgdiwKKyAgICAgICAgY291 bnQoKikgT1ZFUiB3IEFTIG1hdGNoX2xlbiwKKyAgICAgICAgZmlyc3RfdmFsdWUodikgT1ZFUiB3 IEFTIG1hdGNoX2ZpcnN0LAorICAgICAgICBsYXN0X3ZhbHVlKHYpIE9WRVIgdyBBUyBtYXRjaF9s YXN0CisgRlJPTSBkYXRhCisgV0lORE9XIHcgQVMgKAorICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgIElOSVRJQUwKKyAgUEFUVEVSTiAoQSsgQiogQ3sxMDAwMCx9KQorICBERUZJTkUKKyAg IEEgQVMgdiA8IDMzMzMzLAorICAgQiBBUyB2ID49IDMzMzMzIEFORCB2IDwgNjY2NjYsCisgICBD IEFTIHYgPj0gNjY2NjYgQU5EIHYgPCA5OTk5OQorICkKKykKKy0tIFNob3VsZCBtYXRjaDogQSAo MzMzMzMgcm93cykgKyBCICgzMzMzMyByb3dzKSArIEMgKDMzMzMzIHJvd3MpID0gOTk5OTkgcm93 cworU0VMRUNUIG1hdGNoX2ZpcnN0LCBtYXRjaF9sYXN0LCBtYXRjaF9sZW4gRlJPTSByZXN1bHQg V0hFUkUgbWF0Y2hfbGVuID4gMDsKKyBtYXRjaF9maXJzdCB8IG1hdGNoX2xhc3QgfCBtYXRjaF9s ZW4gCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAgICAgICAgICAw IHwgICAgICA5OTk5OCB8ICAgICA5OTk5OQorKDEgcm93KQorCistLQorLS0gVXNpbmcgSUdOT1JF IE5VTExTCistLQorLS0gbm8gTlVMTCByb3dzIGNhc2UuIFRoZSByZXN1bHQgc2hvdWxkIGJlIGlk ZW50aWNhbCB3aXRoICJiYXNpYyB0ZXN0IHVzaW5nIFBSRVYiCitTRUxFQ1QgY29tcGFueSwgdGRh dGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgSUdOT1JFIE5VTExTIE9WRVIgdywKKyBsYXN0 X3ZhbHVlKHByaWNlKSBJR05PUkUgTlVMTFMgT1ZFUiB3LAorIG50aF92YWx1ZSh0ZGF0ZSwgMikg SUdOT1JFIE5VTExTIE9WRVIgdyBBUyBudGhfc2Vjb25kCisgRlJPTSBzdG9jaworIFdJTkRPVyB3 IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBVUCsgRE9X TispCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmlj ZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKyBjb21wYW55ICB8ICAgdGRh dGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSB8IG50aF9zZWNvbmQgCist LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAx MDAgfCAgICAgICAgMTQwIHwgMDctMDItMjAyMworIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAg MjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wMy0yMDIz IHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA0 LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwg MDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFu eTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICA5MCB8ICAgICAgICAxMjAgfCAwNy0w Ny0yMDIzCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1 MCB8ICAgICAgICAgIDUwIHwgICAgICAgMTQwMCB8IDA3LTAyLTIwMjMKKyBjb21wYW55MiB8IDA3 LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnky IHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29t cGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAK KyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8IAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgNjAgfCAgICAg ICAxMjAwIHwgMDctMDctMjAyMworIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAg MTIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMTAtMjAy MyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisoMjAgcm93cykKKworLS0g bnRoX3ZhbHVlIHdpdGggSUdOT1JFIE5VTExTIG9wdGlvbiB3YW50cyB0byBmaW5kIHRoZSBzZWNv bmQgcm93IGJ1dAorLS0gZHVlIGEgTlVMTCBpbiB0aGUgbWlkbGxlLCBpdCByZXR1cm5zIHRoZSB0 aGlyZCByb3cuCitXSVRIIGRhdGEgQVMgKAorIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAoMTAs IDEpLCAoMTEsIE5VTEwpLCAoMTIsIDMpLCAoMTMsIDQpCisgICkgQVMgdChnaWQsIGlkKSkKKyAg U0VMRUNUIGdpZCwgaWQsIG50aF92YWx1ZShpZCwgMikgSUdOT1JFIE5VTExTIE9WRVIgdyBBUyBz ZWNvbmRfdmFsLAorICBhcnJheV9hZ2coaWQpIE9WRVIgdworICBGUk9NIGRhdGEKKyAgV0lORE9X IHcgQVMgKAorICAgT1JERVIgQlkgZ2lkCisgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgUEFUVEVSTiAoQSspCisgICBERUZJTkUgQSBBUyBnaWQgPCAxMworICApOworIGdpZCB8IGlk IHwgc2Vjb25kX3ZhbCB8IGFycmF5X2FnZyAgCistLS0tLSstLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgMTAgfCAgMSB8ICAgICAgICAgIDMgfCB7MSxOVUxMLDN9CisgIDExIHwgICAg fCAgICAgICAgICAgIHwgCisgIDEyIHwgIDMgfCAgICAgICAgICAgIHwgCisgIDEzIHwgIDQgfCAg ICAgICAgICAgIHwgCisoNCByb3dzKQorCistLSBudGhfdmFsdWUgd2l0aCBJR05PUkUgTlVMTFMg b3B0aW9uIHdhbnRzIHRvIGZpbmQgdGhlIHRoaXJkIHJvdyBidXQKKy0tIGR1ZSBhIE5VTEwgaW4g dGhlIG1pZGxsZSwgaXQgcmVhY2hlcyB0aGUgZW5kIG9mIHJlZHVjZWQgZnJhbWUgYW5kCistLSBy ZXR1cm4gTlVMTAorV0lUSCBkYXRhIEFTICgKKyBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgKDEw LCAxKSwgKDExLCBOVUxMKSwgKDEyLCAzKSwgKDEzLCA0KQorICApIEFTIHQoZ2lkLCBpZCkpCisg IFNFTEVDVCBnaWQsIGlkLCBudGhfdmFsdWUoaWQsIDMpIElHTk9SRSBOVUxMUyBPVkVSIHcgQVMg dGhyaWRfdmFsLAorICBhcnJheV9hZ2coaWQpIE9WRVIgdworICBGUk9NIGRhdGEKKyAgV0lORE9X IHcgQVMgKAorICAgT1JERVIgQlkgZ2lkCisgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgUEFUVEVSTiAoQSspCisgICBERUZJTkUgQSBBUyBnaWQgPCAxMworICApOworIGdpZCB8IGlk IHwgdGhyaWRfdmFsIHwgYXJyYXlfYWdnICAKKy0tLS0tKy0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgIDEwIHwgIDEgfCAgICAgICAgICAgfCB7MSxOVUxMLDN9CisgIDExIHwgICAgfCAg ICAgICAgICAgfCAKKyAgMTIgfCAgMyB8ICAgICAgICAgICB8IAorICAxMyB8ICA0IHwgICAgICAg ICAgIHwgCisoNCByb3dzKQorCistLSBudGhfdmFsdWUgYmV5b25kIHJlZHVjZWQgZnJhbWUgd2l0 aCBJR05PUkUgTlVMTFMKKy0tIFRlc3RzIGlnbm9yZW51bGxzX2dldGZ1bmNhcmdpbmZyYW1lIGVh cmx5IG91dC1vZi1mcmFtZSBjaGVjaworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyBu dGhfdmFsdWUocHJpY2UsIDUpIElHTk9SRSBOVUxMUyBPVkVSIHcgQVMgbnRoXzVfaW4KK0ZST00g c3RvY2sKK1dJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIE9SREVSIEJZIHRk YXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgUEFUVEVSTiAoU1RBUlQgVVArIERPV04r KQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2Up LAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisgY29tcGFueSAgfCAgIHRkYXRl ICAgIHwgcHJpY2UgfCBudGhfNV9pbiAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0r LS0tLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAKKyBj b21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgCisgY29tcGFueTEgfCAwNy0w My0yMDIzIHwgICAxNTAgfCAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQw IHwgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgCisg Y29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgIAorIGNvbXBhbnkxIHwgMDct MDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEz MCB8ICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgIAor IGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAKKyBjb21wYW55MiB8IDA3 LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIw MDAgfCAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAK KyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgCisgY29tcGFueTIgfCAw Ny0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAg IDYwIHwgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgICAg CisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgIAorIGNvbXBhbnkyIHwg MDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAg MTMwMCB8ICAgICAgICAgCisoMjAgcm93cykKKworLS0gVmlldyBhbmQgcGdfZ2V0X3ZpZXdkZWYg dGVzdHMuCitDUkVBVEUgVEVNUCBWSUVXIHZfd2luZG93IEFTCitTRUxFQ1QgY29tcGFueSwgdGRh dGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBP VkVSIHcsCisgbnRoX3ZhbHVlKHRkYXRlLCAyKSBPVkVSIHcgQVMgbnRoX3NlY29uZAorIEZST00g c3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVS TiAoU1RBUlQgVVArIERPV04rKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBw cmljZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CitT RUxFQ1QgKiBGUk9NIHZfd2luZG93OworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwg Zmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwgbnRoX3NlY29uZCAKKy0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg Y29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAgICAxNDAg fCAwNy0wMi0yMDIzCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAx NTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMg fCAgICA5MCB8ICAgICAgICAgIDkwIHwgICAgICAgIDEyMCB8IDA3LTA3LTIwMjMKKyBjb21wYW55 MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNv bXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg CisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAg fCAgICAgICAxNDAwIHwgMDctMDItMjAyMworIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwg IDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA0LTIw MjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDct MDUtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIg fCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICA2MCB8ICAgICAgIDEyMDAgfCAwNy0wNy0y MDIzCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAgfCAKKygyMCByb3dzKQorCitTRUxFQ1QgcGdfZ2V0X3ZpZXdk ZWYoJ3Zfd2luZG93Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19n ZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgY29tcGFueSwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgIHRkYXRlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgcHJpY2UsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFTIGZpcnN0X3ZhbHVlLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGxhc3RfdmFsdWUocHJp Y2UpIE9WRVIgdyBBUyBsYXN0X3ZhbHVlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgbnRoX3ZhbHVlKHRkYXRlLCAyKSBPVkVSIHcgQVMgbnRoX3NlY29u ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIEZST00gc3Rv Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGNvbXBhbnkg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HICsKKyAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICBQQVRURVJOIChzdGFydCB1cCsgZG93bispICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIERFRklORSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgc3RhcnQgQVMgdHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICB1cCBBUyAocHJpY2Ug PiBwcmV2KHByaWNlKSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgIGRvd24gQVMgKHByaWNlIDwgcHJldihwcmljZSkpICk7CisoMSBy b3cpCisKKy0tCistLSBQYXR0ZXJuIG9wdGltaXphdGlvbiB0ZXN0cworLS0gVklFVyBzaG93cyBv cmlnaW5hbCBwYXR0ZXJuLCBFWFBMQUlOIHNob3dzIG9wdGltaXplZCBwYXR0ZXJuCistLQorLS0g VGVzdDogZHVwbGljYXRlIGFsdGVybmF0aXZlcyByZW1vdmFsIChBIHwgQiB8IEEpKyAtPiAoQSB8 IEIpKworQ1JFQVRFIFRFTVAgVklFVyB2X29wdF9kdXAgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0 ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisg UEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoKEEgfCBCIHwgQSkrKQorIERFRklO RQorICBBIEFTIHByaWNlID4gMTAwLAorICBCIEFTIHByaWNlIDw9IDEwMAorKTsKK1NFTEVDVCBw Z19nZXRfdmlld2RlZigndl9vcHRfZHVwJyk7ICAtLSBvcmlnaW5hbDogKChhIHwgYiB8IGEpKykK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgIFNFTEVDVCBjb21wYW55LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgdGRhdGUsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICBwcmljZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNvdW50 KCopIE9WRVIgdyBBUyBjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHN0b2NrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg V0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBjb21wYW55IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAoKGEgfCBiIHwg YSkrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEgQVMgKHByaWNl ID4gMTAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgYiBBUyAocHJpY2UgPD0gMTAwKSApOworKDEgcm93KQorCitF WFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gdl9vcHRfZHVwOyAgLS0gb3B0aW1pemVk OiAoKGEgfCBiKSspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU3VicXVlcnkg U2NhbiBvbiB2X29wdF9kdXAKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdyBB UyAoUEFSVElUSU9OIEJZIHN0b2NrLmNvbXBhbnkgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgICAgICAgUGF0dGVybjogKGEgfCBiKSsKKyAgICAg ICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0IEtleTogc3RvY2suY29tcGFueQorICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHN0b2NrCisoNyByb3dzKQorCistLSBUZXN0OiBk dXBsaWNhdGUgZ3JvdXAgcmVtb3ZhbCAoKEEgfCBCKSsgfCAoQSB8IEIpKykgLT4gKEEgfCBCKSsK K0NSRUFURSBURU1QIFZJRVcgdl9vcHRfZHVwX2dyb3VwIEFTCitTRUxFQ1QgY29tcGFueSwgdGRh dGUsIHByaWNlLCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAor IFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKChBIHwgQikrIHwgKEEgfCBCKSsp CisgREVGSU5FCisgIEEgQVMgcHJpY2UgPiAxMDAsCisgIEIgQVMgcHJpY2UgPD0gMTAwCispOwor U0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9kdXBfZ3JvdXAnKTsgIC0tIG9yaWdpbmFsOiAo KGEgfCBiKSsgfCAoYSB8IGIpKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBjb21wYW55LCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgdGRhdGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBwcmljZSwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjb3VudCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHN0b2Nr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBjb21wYW55IFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyArCisgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgUEFUVEVSTiAoKGEgfCBiKSsgfCAoYSB8IGIpKykgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgIGEgQVMgKHByaWNlID4gMTAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYiBBUyAocHJpY2UgPD0g MTAwKSApOworKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gdl9v cHRfZHVwX2dyb3VwOyAgLS0gb3B0aW1pemVkOiAoKGEgfCBiKSspCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgU3VicXVlcnkgU2NhbiBvbiB2X29wdF9kdXBfZ3JvdXAKKyAgIC0+ ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdyBBUyAoUEFSVElUSU9OIEJZIHN0b2NrLmNv bXBhbnkgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgICAgICAgUGF0dGVybjogKGEgfCBiKSsKKyAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAg ICAgICBTb3J0IEtleTogc3RvY2suY29tcGFueQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHN0b2NrCisoNyByb3dzKQorCistLSBUZXN0OiBjb25zZWN1dGl2ZSB2YXJzIG1lcmdlIChB IEEgQSkgLT4gQXszfQorQ1JFQVRFIFRFTVAgVklFVyB2X29wdF9tZXJnZSBBUworU0VMRUNUIGNv bXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRP VyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChBIEEgQSkKKyBE RUZJTkUKKyAgQSBBUyBwcmljZSA+PSAxNDAgQU5EIHByaWNlIDw9IDE1MAorKTsKK1NFTEVDVCBw Z19nZXRfdmlld2RlZigndl9vcHRfbWVyZ2UnKTsgIC0tIG9yaWdpbmFsOiAoYSBhIGEpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICBTRUxFQ1QgY29tcGFueSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIHRkYXRlLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgcHJpY2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBP VkVSIHcgQVMgY291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgRlJPTSBzdG9jayAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRP VyB3IEFTIChQQVJUSVRJT04gQlkgY29tcGFueSBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICBJTklUSUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4gKGEgYSBhKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBhIEFTICgocHJpY2UgPj0g MTQwKSBBTkQgKHByaWNlIDw9IDE1MCkpICk7CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9G RikgU0VMRUNUICogRlJPTSB2X29wdF9tZXJnZTsgIC0tIG9wdGltaXplZDogYXszfQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4gb24gdl9vcHRfbWVyZ2UK KyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdyBBUyAoUEFSVElUSU9OIEJZIHN0 b2NrLmNvbXBhbnkgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgICAgICAgUGF0dGVybjogYXszfQorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAg ICAgICAgIFNvcnQgS2V5OiBzdG9jay5jb21wYW55CisgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gc3RvY2sKKyg3IHJvd3MpCisKKy0tIFRlc3Q6IHF1YW50aWZpZWQgdmFycyBtZXJnZSAo QSBBKyBBKSAtPiBBezMsfQorQ1JFQVRFIFRFTVAgVklFVyB2X29wdF9tZXJnZV9xdWFudCBBUwor U0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9j aworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChB IEErIEEpCisgREVGSU5FCisgIEEgQVMgcHJpY2UgPiAxMDAKKyk7CitTRUxFQ1QgcGdfZ2V0X3Zp ZXdkZWYoJ3Zfb3B0X21lcmdlX3F1YW50Jyk7ICAtLSBvcmlnaW5hbDogKGEgYSsgYSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgIFNFTEVDVCBjb21wYW55LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgdGRhdGUsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICBwcmljZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9W RVIgdyBBUyBjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICBGUk9NIHN0b2NrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9X IHcgQVMgKFBBUlRJVElPTiBCWSBjb21wYW55IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg IElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAoYSBhKyBhKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICBERUZJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEgQVMgKHByaWNlID4gMTAw KSApOworKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gdl9vcHRf bWVyZ2VfcXVhbnQ7ICAtLSBvcHRpbWl6ZWQ6IGF7Myx9CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgU3VicXVlcnkgU2NhbiBvbiB2X29wdF9tZXJnZV9xdWFudAorICAgLT4gIFdp bmRvd0FnZworICAgICAgICAgV2luZG93OiB3IEFTIChQQVJUSVRJT04gQlkgc3RvY2suY29tcGFu eSBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICAg ICAgICBQYXR0ZXJuOiBhezMsfSIKKyAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBT b3J0IEtleTogc3RvY2suY29tcGFueQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHN0 b2NrCisoNyByb3dzKQorCistLSBUZXN0OiBtZXJnZSB0d28gdW5ib3VuZGVkIChBKyBBKykgLT4g QXsyLH0KK0NSRUFURSBURU1QIFZJRVcgdl9vcHRfbWVyZ2VfdW5ib3VuZGVkIEFTCitTRUxFQ1Qg Y29tcGFueSwgdGRhdGUsIHByaWNlLCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lO RE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKEErIEErKQor IERFRklORQorICBBIEFTIHByaWNlID4gMTAwCispOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2 X29wdF9tZXJnZV91bmJvdW5kZWQnKTsgIC0tIG9yaWdpbmFsOiAoYSsgYSspCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBT RUxFQ1QgY29tcGFueSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIHRkYXRlLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgcHJpY2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcg QVMgY291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgRlJPTSBzdG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFT IChQQVJUSVRJT04gQlkgY29tcGFueSBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJTklU SUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4gKGErIGErKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBhIEFTIChwcmljZSA+IDEwMCkgKTsK KygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHZfb3B0X21lcmdl X3VuYm91bmRlZDsgIC0tIG9wdGltaXplZDogYXsyLH0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBTdWJxdWVyeSBTY2FuIG9uIHZfb3B0X21lcmdlX3VuYm91bmRlZAorICAgLT4g IFdpbmRvd0FnZworICAgICAgICAgV2luZG93OiB3IEFTIChQQVJUSVRJT04gQlkgc3RvY2suY29t cGFueSBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisg ICAgICAgICBQYXR0ZXJuOiBhezIsfSIKKyAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAg ICBTb3J0IEtleTogc3RvY2suY29tcGFueQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHN0b2NrCisoNyByb3dzKQorCistLSBUZXN0OiBtZXJnZSB3aXRoIHplcm8tbWluIChBKiBBKykg LT4gQSsKK0NSRUFURSBURU1QIFZJRVcgdl9vcHRfbWVyZ2Vfc3RhciBBUworU0VMRUNUIGNvbXBh bnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3 IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChBKiBBKykKKyBERUZJ TkUKKyAgQSBBUyBwcmljZSA+IDEwMAorKTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigndl9vcHRf bWVyZ2Vfc3RhcicpOyAgLS0gb3JpZ2luYWw6IChhKiBhKykKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBjb21w YW55LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgdGRhdGUsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBw cmljZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjb3VudCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICBGUk9NIHN0b2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKFBBUlRJVElP TiBCWSBjb21wYW55IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgUEFUVEVSTiAoYSogYSspICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJTkUg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgIGEgQVMgKHByaWNlID4gMTAwKSApOworKDEgcm93KQor CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gdl9vcHRfbWVyZ2Vfc3RhcjsgIC0t IG9wdGltaXplZDogYSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVy eSBTY2FuIG9uIHZfb3B0X21lcmdlX3N0YXIKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdp bmRvdzogdyBBUyAoUEFSVElUSU9OIEJZIHN0b2NrLmNvbXBhbnkgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgICAgICAgUGF0dGVybjogYSsiCisg ICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgU29ydCBLZXk6IHN0b2NrLmNvbXBhbnkK KyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzdG9jaworKDcgcm93cykKKworLS0gVGVz dDogY29tcGxleCBtZXJnZSAoQSBBezJ9IEErIEF7M30pIC0+IEF7Nyx9CitDUkVBVEUgVEVNUCBW SUVXIHZfb3B0X21lcmdlX2NvbXBsZXggQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2Us IGNvdW50KCopIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9O IEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoQSBBezJ9IEErIEF7M30pCisgREVGSU5FCisgIEEg QVMgcHJpY2UgPiAxMDAKKyk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Zfb3B0X21lcmdlX2Nv bXBsZXgnKTsgIC0tIG9yaWdpbmFsOiAoYSBhezJ9IGErIGF7M30pCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1Qg Y29tcGFueSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgIHRkYXRlLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgcHJpY2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY291 bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgRlJPTSBzdG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChQQVJU SVRJT04gQlkgY29tcGFueSBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJTklUSUFMICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4gKGEgYXsyfSBhKyBhezN9KSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgREVG SU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICBhIEFTIChwcmljZSA+IDEwMCkgKTsKKygxIHJv dykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHZfb3B0X21lcmdlX2NvbXBs ZXg7ICAtLSBvcHRpbWl6ZWQ6IGF7Nyx9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgU3VicXVlcnkgU2NhbiBvbiB2X29wdF9tZXJnZV9jb21wbGV4CisgICAtPiAgV2luZG93QWdn CisgICAgICAgICBXaW5kb3c6IHcgQVMgKFBBUlRJVElPTiBCWSBzdG9jay5jb21wYW55IFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgIFBh dHRlcm46IGF7Nyx9IgorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5 OiBzdG9jay5jb21wYW55CisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc3RvY2sKKyg3 IHJvd3MpCisKKy0tIFRlc3Q6IGdyb3VwIG1lcmdlICgoQSBCKSAoQSBCKSspIC0+IChBIEIpezIs fQorQ1JFQVRFIFRFTVAgVklFVyB2X29wdF9tZXJnZV9ncm91cCBBUworU0VMRUNUIGNvbXBhbnks IHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFT ICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOICgoQSBCKSAoQSBCKSspCisg REVGSU5FCisgIEEgQVMgcHJpY2UgPiAxMDAsCisgIEIgQVMgcHJpY2UgPD0gMTAwCispOworU0VM RUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9tZXJnZV9ncm91cCcpOyAgLS0gb3JpZ2luYWw6ICgo YSBiKSAoYSBiKSspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRf dmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgY29tcGFueSwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg IHRkYXRlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgcHJpY2UsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY291bnQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgRlJPTSBzdG9jayAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgY29tcGFueSBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgKworICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICBJTklUSUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBBVFRF Uk4gKChhIGIpIChhIGIpKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICBhIEFTIChwcmljZSA+IDEwMCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGIgQVMgKHByaWNlIDw9IDEwMCkgKTsK KygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHZfb3B0X21lcmdl X2dyb3VwOyAgLS0gZXhwZWN0ZWQ6IChhIGIpezIsfQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4gb24gdl9vcHRfbWVyZ2VfZ3JvdXAKKyAgIC0+ICBXaW5k b3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdyBBUyAoUEFSVElUSU9OIEJZIHN0b2NrLmNvbXBhbnkg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgICAg ICAgUGF0dGVybjogKGEnIGInKXsyLH0iCisgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAg ICAgU29ydCBLZXk6IHN0b2NrLmNvbXBhbnkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBzdG9jaworKDcgcm93cykKKworLS0gVGVzdDogZ3JvdXAgbWVyZ2UgQSBCIChBIEIpKyAtPiAo QSBCKXsyLH0KK0NSRUFURSBURU1QIFZJRVcgdl9vcHRfbWVyZ2VfZ3JvdXAyIEFTCitTRUxFQ1Qg Y29tcGFueSwgdGRhdGUsIHByaWNlLCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lO RE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKEEgQiAoQSBC KSspCisgREVGSU5FCisgIEEgQVMgcHJpY2UgPiAxMDAsCisgIEIgQVMgcHJpY2UgPD0gMTAwCisp OworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9tZXJnZV9ncm91cDInKTsgIC0tIG9yaWdp bmFsOiAoYSBiIChhIGIpKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBn X2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBjb21wYW55LCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgdGRhdGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBwcmljZSwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjb3VudCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHN0b2NrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBjb21wYW55IFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyArCisgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg UEFUVEVSTiAoYSBiIChhIGIpKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgIGEgQVMgKHByaWNlID4gMTAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYiBBUyAocHJpY2UgPD0gMTAw KSApOworKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gdl9vcHRf bWVyZ2VfZ3JvdXAyOyAgLS0gZXhwZWN0ZWQ6IChhIGIpezIsfQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4gb24gdl9vcHRfbWVyZ2VfZ3JvdXAyCisgICAt PiAgV2luZG93QWdnCisgICAgICAgICBXaW5kb3c6IHcgQVMgKFBBUlRJVElPTiBCWSBzdG9jay5j b21wYW55IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykK KyAgICAgICAgIFBhdHRlcm46IChhJyBiJyl7Mix9IgorICAgICAgICAgLT4gIFNvcnQKKyAgICAg ICAgICAgICAgIFNvcnQgS2V5OiBzdG9jay5jb21wYW55CisgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gc3RvY2sKKyg3IHJvd3MpCisKKy0tIFRlc3Q6IGdyb3VwIG1lcmdlIChBIEIpIChB IEIpKyAoQSBCKSAtPiAoQSBCKXszLH0KK0NSRUFURSBURU1QIFZJRVcgdl9vcHRfbWVyZ2VfZ3Jv dXAzIEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBjb3VudCgqKSBPVkVSIHcKKyBG Uk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBB VFRFUk4gKChBIEIpIChBIEIpKyAoQSBCKSkKKyBERUZJTkUKKyAgQSBBUyBwcmljZSA+IDEwMCwK KyAgQiBBUyBwcmljZSA8PSAxMDAKKyk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Zfb3B0X21l cmdlX2dyb3VwMycpOyAgLS0gb3JpZ2luYWw6ICgoYSBiKSAoYSBiKSsgKGEgYikpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICBTRUxFQ1QgY29tcGFueSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIHRkYXRlLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgcHJpY2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVS IHcgQVMgY291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgRlJPTSBzdG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3 IEFTIChQQVJUSVRJT04gQlkgY29tcGFueSBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJ TklUSUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4gKChhIGIpIChhIGIpKyAoYSBi KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBhIEFTIChwcmljZSA+IDEwMCks ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgIGIgQVMgKHByaWNlIDw9IDEwMCkgKTsKKygxIHJvdykKKworRVhQTEFJTiAo Q09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHZfb3B0X21lcmdlX2dyb3VwMzsgIC0tIGV4cGVjdGVk OiAoYSBiKXszLH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVyeSBT Y2FuIG9uIHZfb3B0X21lcmdlX2dyb3VwMworICAgLT4gIFdpbmRvd0FnZworICAgICAgICAgV2lu ZG93OiB3IEFTIChQQVJUSVRJT04gQlkgc3RvY2suY29tcGFueSBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICAgICAgICBQYXR0ZXJuOiAoYScgYicp ezMsfSIKKyAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0IEtleTogc3RvY2su Y29tcGFueQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHN0b2NrCisoNyByb3dzKQor CistLSBUZXN0OiBncm91cCBtZXJnZSBBIEIgQSBCIChBIEIpKyBBIEIgQSBCIC0+IChBIEIpezUs fQorQ1JFQVRFIFRFTVAgVklFVyB2X29wdF9tZXJnZV9ncm91cDQgQVMKK1NFTEVDVCBjb21wYW55 LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBB UyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoQSBCIEEgQiAoQSBCKSsg QSBCIEEgQikKKyBERUZJTkUKKyAgQSBBUyBwcmljZSA+IDEwMCwKKyAgQiBBUyBwcmljZSA8PSAx MDAKKyk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Zfb3B0X21lcmdlX2dyb3VwNCcpOyAgLS0g b3JpZ2luYWw6IChhIGIgYSBiIChhIGIpKyBhIGIgYSBiKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGNvbXBh bnksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICB0ZGF0ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIHBy aWNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3IEFTIGNvdW50ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgIEZST00gc3RvY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoUEFSVElUSU9O IEJZIGNvbXBhbnkgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HICsKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgSU5JVElBTCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICBQQVRURVJOIChhIGIgYSBiIChhIGIpKyBhIGIgYSBiKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIERFRklORSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgYSBBUyAocHJpY2UgPiAxMDApLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBi IEFTIChwcmljZSA8PSAxMDApICk7CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VM RUNUICogRlJPTSB2X29wdF9tZXJnZV9ncm91cDQ7ICAtLSBleHBlY3RlZDogKGEgYil7NSx9Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU3VicXVlcnkgU2NhbiBvbiB2X29wdF9t ZXJnZV9ncm91cDQKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdyBBUyAoUEFS VElUSU9OIEJZIHN0b2NrLmNvbXBhbnkgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgICAgICAgUGF0dGVybjogKGEnIGInKXs1LH0iCisgICAgICAg ICAtPiAgU29ydAorICAgICAgICAgICAgICAgU29ydCBLZXk6IHN0b2NrLmNvbXBhbnkKKyAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzdG9jaworKDcgcm93cykKKworLS0gVGVzdDogZ3Jv dXAgbWVyZ2UgQyBBIEIgKEEgQikrIEEgQiBDIC0+IEMgKEEgQil7Myx9IEMKK0NSRUFURSBURU1Q IFZJRVcgdl9vcHRfbWVyZ2VfZ3JvdXA1IEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNl LCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElP TiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKEMgQSBCIChBIEIpKyBBIEIgQykKKyBERUZJTkUK KyAgQSBBUyBwcmljZSA+IDEwMCwKKyAgQiBBUyBwcmljZSA8PSAxMDAsCisgIEMgQVMgcHJpY2Ug PiAyMDAKKyk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Zfb3B0X21lcmdlX2dyb3VwNScpOyAg LS0gb3JpZ2luYWw6IChjIGEgYiAoYSBiKSsgYSBiIGMpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgY29tcGFu eSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgIHRkYXRlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgcHJp Y2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY291bnQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgRlJPTSBzdG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04g QlkgY29tcGFueSBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJTklUSUFMICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgIFBBVFRFUk4gKGMgYSBiIChhIGIpKyBhIGIgYykgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5FICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICBhIEFTIChwcmljZSA+IDEwMCksICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGIg QVMgKHByaWNlIDw9IDEwMCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYyBBUyAocHJpY2UgPiAyMDApICk7CisoMSBy b3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSB2X29wdF9tZXJnZV9ncm91 cDU7ICAtLSBleHBlY3RlZDogYyAoYSBiKXszLH0gYworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4gb24gdl9vcHRfbWVyZ2VfZ3JvdXA1CisgICAtPiAgV2lu ZG93QWdnCisgICAgICAgICBXaW5kb3c6IHcgQVMgKFBBUlRJVElPTiBCWSBzdG9jay5jb21wYW55 IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAg ICAgIFBhdHRlcm46IGMgKGEgYil7Myx9IGMKKyAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAg ICAgICBTb3J0IEtleTogc3RvY2suY29tcGFueQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHN0b2NrCisoNyByb3dzKQorCistLSBUZXN0OiBjb25zZWN1dGl2ZSBHUk9VUCBtZXJnZSAo QSBCKSsgKEEgQikrIC0+IChBIEIpezIsfQorQ1JFQVRFIFRFTVAgVklFVyB2X29wdF9tZXJnZV9j b25zZWNfZ3JvdXAgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9W RVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkK KyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklU SUFMCisgUEFUVEVSTiAoKEEgQikrIChBIEIpKykKKyBERUZJTkUKKyAgQSBBUyBwcmljZSA+IDEw MCwKKyAgQiBBUyBwcmljZSA8PSAxMDAKKyk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Zfb3B0 X21lcmdlX2NvbnNlY19ncm91cCcpOyAgLS0gb3JpZ2luYWw6ICgoYSBiKSsgKGEgYikrKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgU0VMRUNUIGNvbXBhbnksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICB0ZGF0ZSwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgIHByaWNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgY291bnQoKikg T1ZFUiB3IEFTIGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgIEZST00gc3RvY2sgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBXSU5E T1cgdyBBUyAoUEFSVElUSU9OIEJZIGNvbXBhbnkgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HICsKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBQQVRURVJOICgoYSBiKSsgKGEgYikr KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgIERFRklORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYSBBUyAocHJpY2UgPiAx MDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICBiIEFTIChwcmljZSA8PSAxMDApICk7CisoMSByb3cpCisKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSB2X29wdF9tZXJnZV9jb25zZWNfZ3JvdXA7ICAt LSBleHBlY3RlZDogKGEgYil7Mix9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg U3VicXVlcnkgU2NhbiBvbiB2X29wdF9tZXJnZV9jb25zZWNfZ3JvdXAKKyAgIC0+ICBXaW5kb3dB Z2cKKyAgICAgICAgIFdpbmRvdzogdyBBUyAoUEFSVElUSU9OIEJZIHN0b2NrLmNvbXBhbnkgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgICAgICAg UGF0dGVybjogKGEnIGInKXsyLH0iCisgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAg U29ydCBLZXk6IHN0b2NrLmNvbXBhbnkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBz dG9jaworKDcgcm93cykKKworLS0gVGVzdDogY29uc2VjdXRpdmUgR1JPVVAgbWVyZ2Ugd2l0aCBk aWZmZXJlbnQgcXVhbnRpZmllcnMgKEEgQil7Mn0gKEEgQil7M30gLT4gKEEgQil7NX0KK0NSRUFU RSBURU1QIFZJRVcgdl9vcHRfbWVyZ2VfY29uc2VjX2dyb3VwMiBBUworU0VMRUNUIGNvbXBhbnks IHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFT ICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOICgoQSBCKXsyfSAoQSBCKXsz fSkKKyBERUZJTkUKKyAgQSBBUyBwcmljZSA+IDEwMCwKKyAgQiBBUyBwcmljZSA8PSAxMDAKKyk7 CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Zfb3B0X21lcmdlX2NvbnNlY19ncm91cDInKTsgIC0t IG9yaWdpbmFsOiAoKGEgYil7Mn0gKGEgYil7M30pCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgY29tcGFueSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgIHRkYXRlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgcHJpY2Us ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY291bnQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg RlJPTSBzdG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkg Y29tcGFueSBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcg KworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJTklUSUFMICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgIFBBVFRFUk4gKChhIGIpezJ9IChhIGIpezN9KSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5FICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICBhIEFTIChwcmljZSA+IDEwMCksICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGIgQVMg KHByaWNlIDw9IDEwMCkgKTsKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg KiBGUk9NIHZfb3B0X21lcmdlX2NvbnNlY19ncm91cDI7ICAtLSBleHBlY3RlZDogKGEgYil7NX0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVyeSBTY2FuIG9uIHZfb3B0 X21lcmdlX2NvbnNlY19ncm91cDIKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzog dyBBUyAoUEFSVElUSU9OIEJZIHN0b2NrLmNvbXBhbnkgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgICAgICAgUGF0dGVybjogKGEgYil7NX0KKyAg ICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0IEtleTogc3RvY2suY29tcGFueQor ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHN0b2NrCisoNyByb3dzKQorCistLSBUZXN0 IHtufSBxdWFudGlmaWVyIGRpc3BsYXkKK0NSRUFURSBURU1QIFZJRVcgdl9xdWFudGlmaWVyX24g QVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIgdworIEZST00g c3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVS TiAoQXszfSkKKyBERUZJTkUKKyAgQSBBUyBwcmljZSA+IDEwMAorKTsKK1NFTEVDVCBwZ19nZXRf dmlld2RlZigndl9xdWFudGlmaWVyX24nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBjb21wYW55LCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgdGRhdGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBwcmljZSwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjb3VudCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9N IHN0b2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBjb21w YW55IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyArCisg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgUEFUVEVSTiAoYXszfSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgIGEgQVMgKHByaWNlID4gMTAwKSApOworKDEgcm93KQorCistLSBUZXN0 IHtuLH0gcXVhbnRpZmllciBkaXNwbGF5CitDUkVBVEUgVEVNUCBWSUVXIHZfcXVhbnRpZmllcl9u X3BsdXMgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIgdwor IEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisg UEFUVEVSTiAoQXsyLH0pCisgREVGSU5FCisgIEEgQVMgcHJpY2UgPiAxMDAKKyk7CitTRUxFQ1Qg cGdfZ2V0X3ZpZXdkZWYoJ3ZfcXVhbnRpZmllcl9uX3BsdXMnKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBj b21wYW55LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgdGRhdGUsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICBwcmljZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjb3Vu dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICBGUk9NIHN0b2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKFBBUlRJ VElPTiBCWSBjb21wYW55IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAoYXsyLH0pICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJ TkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEgQVMgKHByaWNlID4gMTAwKSApOworKDEgcm93 KQorCistLSBUZXN0OiBmbGF0dGVuIG5lc3RlZCBTRVEgKEEgKEIgQykpIC0+IEEgQiBDCitDUkVB VEUgVEVNUCBWSUVXIHZfb3B0X2ZsYXR0ZW5fc2VxIEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUs IHByaWNlLCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBB UlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKEEgKEIgQykpCisgREVGSU5FCisgIEEg QVMgcHJpY2UgPiAxMDAsCisgIEIgQVMgcHJpY2UgPiAxNTAsCisgIEMgQVMgcHJpY2UgPCAxNTAK Kyk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Zfb3B0X2ZsYXR0ZW5fc2VxJyk7ICAtLSBvcmln aW5hbDogKGEgKGIgYykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19n ZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgY29tcGFueSwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgIHRkYXRlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgcHJpY2UsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY291bnQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgRlJPTSBzdG9jayAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgY29tcGFueSBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgKworICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICBJTklUSUFMICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBB VFRFUk4gKGEgKGIgYykpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICBhIEFTIChwcmljZSA+IDEwMCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGIgQVMgKHByaWNlID4gMTUwKSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgYyBBUyAocHJpY2UgPCAxNTApICk7CisoMSByb3cpCisKK0VYUExBSU4gKENP U1RTIE9GRikgU0VMRUNUICogRlJPTSB2X29wdF9mbGF0dGVuX3NlcTsgIC0tIG9wdGltaXplZDog YSBiIGMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVyeSBTY2FuIG9u IHZfb3B0X2ZsYXR0ZW5fc2VxCisgICAtPiAgV2luZG93QWdnCisgICAgICAgICBXaW5kb3c6IHcg QVMgKFBBUlRJVElPTiBCWSBzdG9jay5jb21wYW55IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgIFBhdHRlcm46IGEgYiBjCisgICAgICAg ICAtPiAgU29ydAorICAgICAgICAgICAgICAgU29ydCBLZXk6IHN0b2NrLmNvbXBhbnkKKyAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzdG9jaworKDcgcm93cykKKworLS0gVGVzdDogZmxh dHRlbiBuZXN0ZWQgQUxUIChBIHwgKEIgfCBDKSkgLT4gKEEgfCBCIHwgQykKK0NSRUFURSBURU1Q IFZJRVcgdl9vcHRfZmxhdHRlbl9hbHQgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2Us IGNvdW50KCopIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9O IEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoKEEgfCAoQiB8IEMpKSspCisgREVGSU5FCisgIEEg QVMgcHJpY2UgPiAyMDAsCisgIEIgQVMgcHJpY2UgPiAxMDAsCisgIEMgQVMgcHJpY2UgPD0gMTAw CispOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9mbGF0dGVuX2FsdCcpOyAgLS0gb3Jp Z2luYWw6ICgoYSB8IChiIHwgYykpKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBjb21wYW55LCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgdGRhdGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBwcmljZSwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjb3VudCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHN0 b2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBjb21wYW55 IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyArCisgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgUEFUVEVSTiAoKGEgfCAoYiB8IGMpKSspICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgIGEgQVMgKHByaWNlID4gMjAwKSwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYiBBUyAocHJpY2Ug PiAxMDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICBjIEFTIChwcmljZSA8PSAxMDApICk7CisoMSByb3cpCisKK0VY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSB2X29wdF9mbGF0dGVuX2FsdDsgIC0tIG9w dGltaXplZDogKChhIHwgYiB8IGMpKSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBTdWJxdWVyeSBTY2FuIG9uIHZfb3B0X2ZsYXR0ZW5fYWx0CisgICAtPiAgV2luZG93QWdnCisg ICAgICAgICBXaW5kb3c6IHcgQVMgKFBBUlRJVElPTiBCWSBzdG9jay5jb21wYW55IFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgIFBhdHRl cm46IChhIHwgYiB8IGMpKworICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQg S2V5OiBzdG9jay5jb21wYW55CisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc3RvY2sK Kyg3IHJvd3MpCisKKy0tIFRlc3Q6IHVud3JhcCBHUk9VUHsxLDF9ICgoQSkpIC0+IEEKK0NSRUFU RSBURU1QIFZJRVcgdl9vcHRfdW53cmFwX2dyb3VwIEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUs IHByaWNlLCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBB UlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKCgoQSkpKQorIERFRklORQorICBBIEFT IHByaWNlID4gMTAwCispOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF91bndyYXBfZ3Jv dXAnKTsgIC0tIG9yaWdpbmFsOiAoKChhKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgY29tcGFueSwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgIHRkYXRlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgcHJpY2UsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY291bnQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgRlJP TSBzdG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgY29t cGFueSBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgKwor ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJTklUSUFMICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgIFBBVFRFUk4gKCgoYSkpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5FICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICBhIEFTIChwcmljZSA+IDEwMCkgKTsKKygxIHJvdykKKworRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHZfb3B0X3Vud3JhcF9ncm91cDsgIC0tIG9wdGlt aXplZDogYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4g b24gdl9vcHRfdW53cmFwX2dyb3VwCisgICAtPiAgV2luZG93QWdnCisgICAgICAgICBXaW5kb3c6 IHcgQVMgKFBBUlRJVElPTiBCWSBzdG9jay5jb21wYW55IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgIFBhdHRlcm46IGEKKyAgICAgICAg IC0+ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0IEtleTogc3RvY2suY29tcGFueQorICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHN0b2NrCisoNyByb3dzKQorCistLSBUZXN0OiBxdWFu dGlmaWVyIG11bHRpcGxpY2F0aW9uIChBezJ9KXszfSAtPiBBezZ9CitDUkVBVEUgVEVNUCBWSUVX IHZfb3B0X3F1YW50X211bHQgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50 KCopIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNv bXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyBJTklUSUFMCisgUEFUVEVSTiAoKEF7Mn0pezN9KQorIERFRklORQorICBBIEFTIHByaWNlID4g MTAwCispOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9xdWFudF9tdWx0Jyk7ICAtLSBv cmlnaW5hbDogKChhezJ9KXszfSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBjb21wYW55LCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgdGRhdGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBwcmljZSwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjb3VudCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHN0b2Nr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBjb21wYW55IFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyArCisgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgUEFUVEVSTiAoKGF7Mn0pezN9KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgIGEgQVMgKHByaWNlID4gMTAwKSApOworKDEgcm93KQorCitFWFBMQUlOIChDT1NU UyBPRkYpIFNFTEVDVCAqIEZST00gdl9vcHRfcXVhbnRfbXVsdDsgIC0tIG9wdGltaXplZDogYXs2 fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4gb24gdl9v cHRfcXVhbnRfbXVsdAorICAgLT4gIFdpbmRvd0FnZworICAgICAgICAgV2luZG93OiB3IEFTIChQ QVJUSVRJT04gQlkgc3RvY2suY29tcGFueSBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICAgICAgICBQYXR0ZXJuOiBhezZ9CisgICAgICAgICAtPiAg U29ydAorICAgICAgICAgICAgICAgU29ydCBLZXk6IHN0b2NrLmNvbXBhbnkKKyAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBzdG9jaworKDcgcm93cykKKworLS0gVGVzdDogcXVhbnRpZmll ciBtdWx0aXBsaWNhdGlvbiAoQXsyLDR9KXszfSAtPiBBezYsMTJ9CitDUkVBVEUgVEVNUCBWSUVX IHZfb3B0X3F1YW50X211bHRfcmFuZ2UgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2Us IGNvdW50KCopIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9O IEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoKEF7Miw0fSl7M30pCisgREVGSU5FCisgIEEgQVMg cHJpY2UgPiAxMDAKKyk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Zfb3B0X3F1YW50X211bHRf cmFuZ2UnKTsgIC0tIG9yaWdpbmFsOiAoKGF7Miw0fSl7M30pCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgY29t cGFueSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgIHRkYXRlLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg cHJpY2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY291bnQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgRlJPTSBzdG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChQQVJUSVRJ T04gQlkgY29tcGFueSBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJTklUSUFMICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4gKChhezIsNH0pezN9KSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5F ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICBhIEFTIChwcmljZSA+IDEwMCkgKTsKKygxIHJvdykK KworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHZfb3B0X3F1YW50X211bHRfcmFu Z2U7ICAtLSBvcHRpbWl6ZWQ6IGF7NiwxMn0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBTdWJxdWVyeSBTY2FuIG9uIHZfb3B0X3F1YW50X211bHRfcmFuZ2UKKyAgIC0+ICBXaW5k b3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdyBBUyAoUEFSVElUSU9OIEJZIHN0b2NrLmNvbXBhbnkg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgICAg ICAgUGF0dGVybjogYXs2LDEyfQorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNv cnQgS2V5OiBzdG9jay5jb21wYW55CisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc3Rv Y2sKKyg3IHJvd3MpCisKKy0tIFRlc3Q6IHF1YW50aWZpZXIgbXVsdGlwbGljYXRpb24gYmxvY2tl ZCAoQXsyfSl7Myw1fSAtPiBubyBjaGFuZ2UKKy0tIG91dGVyIHJhbmdlIHdpdGggY2hpbGQgZXhh Y3QgPiAxIGNhdXNlcyBnYXBzICg2LDgsMTAgbm90IDYsNyw4LDksMTApCitDUkVBVEUgVEVNUCBW SUVXIHZfb3B0X3F1YW50X211bHRfcmFuZ2UyIEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHBy aWNlLCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJ VElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKChBezJ9KXszLDV9KQorIERFRklORQorICBB IEFTIHByaWNlID4gMTAwCispOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9xdWFudF9t dWx0X3JhbmdlMicpOyAgLS0gb3JpZ2luYWw6ICgoYXsyfSl7Myw1fSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVD VCBjb21wYW55LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgdGRhdGUsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICBwcmljZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBj b3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICBGUk9NIHN0b2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKFBB UlRJVElPTiBCWSBjb21wYW55IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAoKGF7Mn0pezMsNX0pICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBE RUZJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEgQVMgKHByaWNlID4gMTAwKSApOworKDEg cm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gdl9vcHRfcXVhbnRfbXVs dF9yYW5nZTI7ICAtLSBOT1Qgb3B0aW1pemVkOiAoYXsyfSl7Myw1fQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4gb24gdl9vcHRfcXVhbnRfbXVsdF9yYW5n ZTIKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdyBBUyAoUEFSVElUSU9OIEJZ IHN0b2NrLmNvbXBhbnkgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HKQorICAgICAgICAgUGF0dGVybjogKGF7Mn0pezMsNX0KKyAgICAgICAgIC0+ICBTb3J0 CisgICAgICAgICAgICAgICBTb3J0IEtleTogc3RvY2suY29tcGFueQorICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHN0b2NrCisoNyByb3dzKQorCistLSBUZXN0OiBxdWFudGlmaWVyIG11 bHRpcGxpY2F0aW9uIGJsb2NrZWQgYnkgSU5GIChBKyl7M30gLT4gbm8gY2hhbmdlCitDUkVBVEUg VEVNUCBWSUVXIHZfb3B0X3F1YW50X211bHRfaW5mIEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUs IHByaWNlLCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBB UlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKChBKyl7M30pCisgREVGSU5FCisgIEEg QVMgcHJpY2UgPiAxMDAKKyk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Zfb3B0X3F1YW50X211 bHRfaW5mJyk7ICAtLSBvcmlnaW5hbDogKChhKyl7M30pCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgY29tcGFu eSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgIHRkYXRlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgcHJp Y2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY291bnQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgRlJPTSBzdG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04g QlkgY29tcGFueSBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJTklUSUFMICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgIFBBVFRFUk4gKChhKyl7M30pICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5FICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICBhIEFTIChwcmljZSA+IDEwMCkgKTsKKygxIHJvdykKKwor RVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHZfb3B0X3F1YW50X211bHRfaW5mOyAg LS0gbm8gbXVsdGlwbHk6IChhKyl7M30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBTdWJxdWVyeSBTY2FuIG9uIHZfb3B0X3F1YW50X211bHRfaW5mCisgICAtPiAgV2luZG93QWdn CisgICAgICAgICBXaW5kb3c6IHcgQVMgKFBBUlRJVElPTiBCWSBzdG9jay5jb21wYW55IFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgIFBh dHRlcm46IChhKyIpezN9CisgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgU29ydCBL ZXk6IHN0b2NrLmNvbXBhbnkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzdG9jawor KDcgcm93cykKKworLS0gVGVzdDogdW53cmFwIHNpbmdsZS1pdGVtIEFMVCBhZnRlciBkdXBsaWNh dGUgcmVtb3ZhbCAoQSB8IEEpIC0+IEEKK0NSRUFURSBURU1QIFZJRVcgdl9vcHRfdW53cmFwX2Fs dCBBUworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJP TSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRU RVJOICgoQSB8IEEpKykKKyBERUZJTkUKKyAgQSBBUyBwcmljZSA+IDEwMAorKTsKK1NFTEVDVCBw Z19nZXRfdmlld2RlZigndl9vcHRfdW53cmFwX2FsdCcpOyAgLS0gb3JpZ2luYWw6ICgoYSB8IGEp KykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgIFNFTEVDVCBjb21wYW55LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgdGRhdGUsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICBwcmljZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNv dW50KCopIE9WRVIgdyBBUyBjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHN0b2NrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBjb21wYW55IFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAoKGEgfCBh KSspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEgQVMgKHBy aWNlID4gMTAwKSApOworKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZS T00gdl9vcHRfdW53cmFwX2FsdDsgIC0tIG9wdGltaXplZDogYSsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVyeSBTY2FuIG9uIHZfb3B0X3Vud3JhcF9hbHQKKyAgIC0+ ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdyBBUyAoUEFSVElUSU9OIEJZIHN0b2NrLmNv bXBhbnkgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgICAgICAgUGF0dGVybjogYSsiCisgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAg U29ydCBLZXk6IHN0b2NrLmNvbXBhbnkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBz dG9jaworKDcgcm93cykKKworLS0gVGVzdDogR1JPVVB7MSwxfSB0byBTRVEgd2l0aCBmbGF0dGVu ICgoQSBCKShDIEQpKSAtPiBBIEIgQyBECitDUkVBVEUgVEVNUCBWSUVXIHZfb3B0X2dyb3VwX3Rv X3NlcSBBUworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3Cisg RlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQ QVRURVJOICgoKEEgQikoQyBEKSkpCisgREVGSU5FCisgIEEgQVMgcHJpY2UgPiAyMDAsCisgIEIg QVMgcHJpY2UgPiAxNTAsCisgIEMgQVMgcHJpY2UgPiAxMDAsCisgIEQgQVMgcHJpY2UgPD0gMTAw CispOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9ncm91cF90b19zZXEnKTsgIC0tIG9y aWdpbmFsOiAoKChhIGIpKGMgZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGNvbXBhbnksICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICB0ZGF0ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIHByaWNlLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3IEFTIGNvdW50ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIEZST00gc3Rv Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGNvbXBhbnkg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HICsKKyAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICBQQVRURVJOICgoKGEgYikgKGMgZCkpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIERFRklORSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgYSBBUyAocHJpY2UgPiAyMDApLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBiIEFTIChwcmljZSA+ IDE1MCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgIGMgQVMgKHByaWNlID4gMTAwKSwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgZCBBUyAo cHJpY2UgPD0gMTAwKSApOworKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAq IEZST00gdl9vcHRfZ3JvdXBfdG9fc2VxOyAgLS0gb3B0aW1pemVkOiBhIGIgYyBkCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU3VicXVlcnkgU2NhbiBvbiB2X29wdF9ncm91cF90 b19zZXEKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdyBBUyAoUEFSVElUSU9O IEJZIHN0b2NrLmNvbXBhbnkgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HKQorICAgICAgICAgUGF0dGVybjogYSBiIGMgZAorICAgICAgICAgLT4gIFNvcnQK KyAgICAgICAgICAgICAgIFNvcnQgS2V5OiBzdG9jay5jb21wYW55CisgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gc3RvY2sKKyg3IHJvd3MpCisKKy0tIFRlc3Q6IGNvbWJpbmVkIGNvbnNl Y3V0aXZlIEdST1VQICsgcHJlZml4IG1lcmdlIEEgQiAoQSBCKSsgKEEgQikrIC0+IChBIEIpezMs fQorQ1JFQVRFIFRFTVAgVklFVyB2X29wdF9jb21iaW5lZF9tZXJnZSBBUworU0VMRUNUIGNvbXBh bnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3 IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChBIEIgKEEgQikrIChB IEIpKykKKyBERUZJTkUKKyAgQSBBUyBwcmljZSA+IDEwMCwKKyAgQiBBUyBwcmljZSA8PSAxMDAK Kyk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Zfb3B0X2NvbWJpbmVkX21lcmdlJyk7ICAtLSBv cmlnaW5hbDogKGEgYiAoYSBiKSsgKGEgYikrKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGNvbXBhbnksICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICB0ZGF0ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIHByaWNlLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3IEFTIGNvdW50ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIEZS T00gc3RvY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGNv bXBhbnkgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HICsK KyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgSU5JVElBTCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICBQQVRURVJOIChhIGIgKGEgYikrIChhIGIpKykgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIERFRklORSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgYSBBUyAocHJpY2UgPiAxMDApLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBiIEFTIChw cmljZSA8PSAxMDApICk7CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICog RlJPTSB2X29wdF9jb21iaW5lZF9tZXJnZTsgIC0tIGV4cGVjdGVkOiAoYSBiKXszLH0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVyeSBTY2FuIG9uIHZfb3B0X2NvbWJp bmVkX21lcmdlCisgICAtPiAgV2luZG93QWdnCisgICAgICAgICBXaW5kb3c6IHcgQVMgKFBBUlRJ VElPTiBCWSBzdG9jay5jb21wYW55IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKKyAgICAgICAgIFBhdHRlcm46IChhJyBiJyl7Myx9IgorICAgICAgICAg LT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiBzdG9jay5jb21wYW55CisgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gc3RvY2sKKyg3IHJvd3MpCisKKy0tIFRlc3Q6IG5lc3Rl ZCBBTFQgcGF0dGVybiAtIGJ1ZyByZXByb2R1Y3Rpb24KK0NSRUFURSBURU1QIFZJRVcgdl9vcHRf bmVzdGVkX2FsdCBBUworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZF UiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQor IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJ QUwKKyBQQVRURVJOICgoKEEgQikgfCBDKSBEIHwgQSBCIEMpCisgREVGSU5FCisgIEEgQVMgcHJp Y2UgPD0gMTAwLAorICBCIEFTIHByaWNlIDw9IDE1MCwKKyAgQyBBUyBwcmljZSA8PSAyMDAsCisg IEQgQVMgcHJpY2UgPiAyMDAKKyk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Zfb3B0X25lc3Rl ZF9hbHQnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3 ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBjb21wYW55LCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgdGRh dGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICBwcmljZSwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgIGNvdW50KCopIE9WRVIgdyBBUyBjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHN0b2NrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBjb21wYW55IFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAo KChhIGIpIHwgYykgZCB8IGEgYiBjKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEg QVMgKHByaWNlIDw9IDEwMCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYiBBUyAocHJpY2UgPD0gMTUwKSwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICBjIEFTIChwcmljZSA8PSAyMDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGQgQVMgKHByaWNlID4gMjAwKSAp OworKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gdl9vcHRfbmVz dGVkX2FsdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVyeSBTY2Fu IG9uIHZfb3B0X25lc3RlZF9hbHQKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzog dyBBUyAoUEFSVElUSU9OIEJZIHN0b2NrLmNvbXBhbnkgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgICAgICAgUGF0dGVybjogKChhIGIgfCBjKSBk IHwgYSBiIGMpCisgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgU29ydCBLZXk6IHN0 b2NrLmNvbXBhbnkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzdG9jaworKDcgcm93 cykKKworLS0gVGVzdDogbmVzdGVkIEFMVCB3aXRoIHVuYm91bmRlZCAtIEErIGluc2lkZQorQ1JF QVRFIFRFTVAgVklFVyB2X29wdF9uZXN0ZWRfYWx0MiBBUworU0VMRUNUIGNvbXBhbnksIHRkYXRl LCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQ QVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOICgoKEErIEIpIHwgQykgRCB8IEEgQiBD KQorIERFRklORQorICBBIEFTIHByaWNlIDw9IDEwMCwKKyAgQiBBUyBwcmljZSA8PSAxNTAsCisg IEMgQVMgcHJpY2UgPD0gMjAwLAorICBEIEFTIHByaWNlID4gMjAwCispOworU0VMRUNUIHBnX2dl dF92aWV3ZGVmKCd2X29wdF9uZXN0ZWRfYWx0MicpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGNvbXBhbnks ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICB0ZGF0ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIHByaWNl LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3IEFTIGNvdW50ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg IEZST00gc3RvY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZ IGNvbXBhbnkgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H ICsKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgSU5JVElBTCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICBQQVRURVJOICgoKGErIGIpIHwgYykgZCB8IGEgYiBjKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIERFRklORSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgYSBBUyAocHJpY2UgPD0gMTAwKSwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBiIEFT IChwcmljZSA8PSAxNTApLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGMgQVMgKHByaWNlIDw9IDIwMCksICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgZCBBUyAocHJpY2UgPiAyMDApICk7CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikg U0VMRUNUICogRlJPTSB2X29wdF9uZXN0ZWRfYWx0MjsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBTdWJxdWVyeSBTY2FuIG9uIHZfb3B0X25lc3RlZF9hbHQyCisgICAtPiAgV2lu ZG93QWdnCisgICAgICAgICBXaW5kb3c6IHcgQVMgKFBBUlRJVElPTiBCWSBzdG9jay5jb21wYW55 IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAg ICAgIFBhdHRlcm46ICgoYSsiIGIgfCBjKSBkIHwgYSBiIGMpCisgICAgICAgICAtPiAgU29ydAor ICAgICAgICAgICAgICAgU29ydCBLZXk6IHN0b2NrLmNvbXBhbnkKKyAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBzdG9jaworKDcgcm93cykKKworLS0KKy0tIEVycm9yIGNhc2VzCistLQor LS0gcm93IHBhdHRlcm4gZGVmaW5pdGlvbiB2YXJpYWJsZSBuYW1lIG11c3Qgbm90IGFwcGVhciBt b3JlIHRoYW4gb25jZQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUo cHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJ TkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIE9SREVSIEJZIHRkYXRlCisgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAor IFBBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAg VVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2Up LAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpCispOworRVJST1I6ICByb3cgcGF0dGVybiBk ZWZpbml0aW9uIHZhcmlhYmxlIG5hbWUgInVwIiBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlIGluIERF RklORSBjbGF1c2UKK0xJTkUgMTE6ICAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgICAg ICAgICAgXgorLS0gc3VicXVlcmllcyBpbiBERUZJTkUgY2xhdXNlIGFyZSBub3Qgc3VwcG9ydGVk CitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3 LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAor IFBBUlRJVElPTiBCWSBjb21wYW55CisgT1JERVIgQlkgdGRhdGUKKyBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RB UlQgTE9XUFJJQ0UpCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIExPV1BSSUNFIEFTIHBy aWNlIDwgKFNFTEVDVCAxMDApCispOworRVJST1I6ICBjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIERF RklORSBleHByZXNzaW9uCitMSU5FIDExOiAgIExPV1BSSUNFIEFTIHByaWNlIDwgKFNFTEVDVCAx MDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gYWdncmVnYXRlcyBpbiBE RUZJTkUgY2xhdXNlIGFyZSBub3Qgc3VwcG9ydGVkCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHBy aWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcK KyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgT1JE RVIgQlkgdGRhdGUKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgTE9XUFJJQ0UpCisgREVGSU5FCisgIFNU QVJUIEFTIFRSVUUsCisgIExPV1BSSUNFIEFTIHByaWNlIDwgY291bnQoKikKKyk7CitFUlJPUjog IGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRklORQorTElORSAxMTog ICBMT1dQUklDRSBBUyBwcmljZSA8IGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gRlJBTUUgbXVzdCBzdGFydCBhdCBjdXJyZW50IHJvdyB3aGVuIHJvdyBwYXR0 ZXJuIHJlY29nbml0aW9uIGlzIHVzZWQKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZp cnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00g c3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0 ZGF0ZQorIFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKKyBERUZJTkUKKyAg U1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBw cmljZSA8IFBSRVYocHJpY2UpCispOworRVJST1I6ICBGUkFNRSBtdXN0IHN0YXJ0IGF0IENVUlJF TlQgUk9XIHdoZW4gcm93IHBhdHRlcm4gcmVjb2duaXRpb24gaXMgdXNlZAorTElORSA2OiAgUk9X UyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICAgICAgIF4KK0RFVEFJTDogIEN1cnJlbnQgZnJhbWUgc3RhcnRzIHdpdGggVU5CT1VOREVEIFBS RUNFRElORy4KK0hJTlQ6ICBVc2U6IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgLi4uCist LSBFWENMVURFIGlzIG5vdCBwZXJtaXR0ZWQKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2Us IGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZS T00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBC WSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworIEVYQ0xVREUgQ1VSUkVOVCBST1cKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgVVArIERP V04rKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJp Y2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CitFUlJPUjogIEVYQ0xVREUg b3B0aW9ucyBhcmUgbm90IHBlcm1pdHRlZCB3aGVuIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIGlz IHVzZWQKK0xJTkUgNzogIEVYQ0xVREUgQ1VSUkVOVCBST1cKKyAgICAgICAgIF4KK0RFVEFJTDog IEZyYW1lIGRlZmluaXRpb24gaW5jbHVkZXMgRVhDTFVERSBDVVJSRU5UIFJPVy4KK0hJTlQ6ICBS ZW1vdmUgdGhlIEVYQ0xVREUgY2xhdXNlIGZyb20gdGhlIHdpbmRvdyBkZWZpbml0aW9uLgorLS0g U0VFSyBpcyBub3Qgc3VwcG9ydGVkCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJz dF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0 b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgT1JERVIgQlkgdGRh dGUKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgU0VFSworIFBBVFRFUk4gKFNUQVJUIFVQKyBE T1dOKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHBy aWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworRVJST1I6ICBTRUVLIGlz IG5vdCBzdXBwb3J0ZWQKK0xJTkUgODogIFNFRUsKKyAgICAgICAgIF4KK0hJTlQ6ICBVc2UgSU5J VElBTCBpbnN0ZWFkLgorLS0gUFJFVidzIGFyZ3VtZW50IG11c3QgaGF2ZSBhdCBsZWFzdCAxIGNv bHVtbiByZWZlcmVuY2UKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVl KHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sKKyBX SU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgVVArIERPV04r KQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYoMSksCisg IERPV04gQVMgcHJpY2UgPCBQUkVWKDEpCispOworRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0 aW9uIG9wZXJhdGlvbidzIGFyZ3VtZW50IG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgY29sdW1u IHJlZmVyZW5jZQorLS0gVW5zdXBwb3J0ZWQgcXVhbnRpZmllcgorU0VMRUNUIGNvbXBhbnksIHRk YXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkg T1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFu eQorIE9SREVSIEJZIHRkYXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworIElOSVRJQUwKKyBQ QVRURVJOIChTVEFSVCBVUH4gRE9XTispCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQ IEFTIHByaWNlID4gUFJFVigxKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYoMSkKKyk7CitFUlJP UjogIHVuc3VwcG9ydGVkIHF1YW50aWZpZXIgIn4iCitMSU5FIDk6ICBQQVRURVJOIChTVEFSVCBV UH4gRE9XTispCisgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBWYWxpZCBxdWFu dGlmaWVycyBhcmU6ICosICssID8sICo/LCArPywgPz8sIHtufSwge24sfSwgeyxtfSwge24sbX0g YW5kIHRoZWlyIHJlbHVjdGFudCB2ZXJzaW9ucy4KK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJp Y2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdwor IEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRF UiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyBJTklUSUFMCisgUEFUVEVSTiAo U1RBUlQgVVArPyBET1dOKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJp Y2UgPiBQUkVWKDEpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVigxKQorKTsKK0VSUk9SOiAgcmVs dWN0YW50IHF1YW50aWZpZXJzIGFyZSBub3QgeWV0IHN1cHBvcnRlZAorTElORSA5OiAgUEFUVEVS TiAoU1RBUlQgVVArPyBET1dOKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIE1h eGltdW0gcGF0dGVybiB2YXJpYWJsZXMgaXMgMjUxIChSUFJfVkFSSURfTUFYKQorLS0gRXJyb3I6 IDI1MiB2YXJpYWJsZXMgZXhjZWVkcyBsaW1pdCBvZiAyNTEKK0RPICQkCitERUNMQVJFCisgICAg cGF0dGVybl92YXJzIHRleHQ7CisgICAgZGVmaW5lX3ZhcnMgdGV4dDsKKyAgICBxdWVyeSB0ZXh0 OworQkVHSU4KKyAgICBTRUxFQ1Qgc3RyaW5nX2FnZygndicgfHwgbHBhZChpOjp0ZXh0LCAzLCAn MCcpLCAnICcpLAorICAgICAgICAgICBzdHJpbmdfYWdnKCd2JyB8fCBscGFkKGk6OnRleHQsIDMs ICcwJykgfHwgJyBBUyBUUlVFJywgJywgJykKKyAgICBJTlRPIHBhdHRlcm5fdmFycywgZGVmaW5l X3ZhcnMKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyNTIpIGk7CisKKyAgICBxdWVyeSA6 PSBmb3JtYXQoJ1NFTEVDVCAqIEZST00gKFNFTEVDVCAxIEFTIHgpIHQgV0lORE9XIHcgQVMgKAor ICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgUEFUVEVSTiAoJXMpCisgICAgICAgIERFRklORSAlcyknLCBwYXR0ZXJuX3ZhcnMs IGRlZmluZV92YXJzKTsKKworICAgIEVYRUNVVEUgcXVlcnk7CitFTkQ7CiskJDsKK0VSUk9SOiAg dG9vIG1hbnkgcGF0dGVybiB2YXJpYWJsZXMKK0RFVEFJTDogIE1heGltdW0gaXMgMjUxLgorQ09O VEVYVDogIFNRTCBzdGF0ZW1lbnQgIlNFTEVDVCAqIEZST00gKFNFTEVDVCAxIEFTIHgpIHQgV0lO RE9XIHcgQVMgKAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAodjAwMSB2MDAyIHYwMDMgdjAwNCB2MDA1IHYw MDYgdjAwNyB2MDA4IHYwMDkgdjAxMCB2MDExIHYwMTIgdjAxMyB2MDE0IHYwMTUgdjAxNiB2MDE3 IHYwMTggdjAxOSB2MDIwIHYwMjEgdjAyMiB2MDIzIHYwMjQgdjAyNSB2MDI2IHYwMjcgdjAyOCB2 MDI5IHYwMzAgdjAzMSB2MDMyIHYwMzMgdjAzNCB2MDM1IHYwMzYgdjAzNyB2MDM4IHYwMzkgdjA0 MCB2MDQxIHYwNDIgdjA0MyB2MDQ0IHYwNDUgdjA0NiB2MDQ3IHYwNDggdjA0OSB2MDUwIHYwNTEg djA1MiB2MDUzIHYwNTQgdjA1NSB2MDU2IHYwNTcgdjA1OCB2MDU5IHYwNjAgdjA2MSB2MDYyIHYw NjMgdjA2NCB2MDY1IHYwNjYgdjA2NyB2MDY4IHYwNjkgdjA3MCB2MDcxIHYwNzIgdjA3MyB2MDc0 IHYwNzUgdjA3NiB2MDc3IHYwNzggdjA3OSB2MDgwIHYwODEgdjA4MiB2MDgzIHYwODQgdjA4NSB2 MDg2IHYwODcgdjA4OCB2MDg5IHYwOTAgdjA5MSB2MDkyIHYwOTMgdjA5NCB2MDk1IHYwOTYgdjA5 NyB2MDk4IHYwOTkgdjEwMCB2MTAxIHYxMDIgdjEwMyB2MTA0IHYxMDUgdjEwNiB2MTA3IHYxMDgg djEwOSB2MTEwIHYxMTEgdjExMiB2MTEzIHYxMTQgdjExNSB2MTE2IHYxMTcgdjExOCB2MTE5IHYx MjAgdjEyMSB2MTIyIHYxMjMgdjEyNCB2MTI1IHYxMjYgdjEyNyB2MTI4IHYxMjkgdjEzMCB2MTMx IHYxMzIgdjEzMyB2MTM0IHYxMzUgdjEzNiB2MTM3IHYxMzggdjEzOSB2MTQwIHYxNDEgdjE0MiB2 MTQzIHYxNDQgdjE0NSB2MTQ2IHYxNDcgdjE0OCB2MTQ5IHYxNTAgdjE1MSB2MTUyIHYxNTMgdjE1 NCB2MTU1IHYxNTYgdjE1NyB2MTU4IHYxNTkgdjE2MCB2MTYxIHYxNjIgdjE2MyB2MTY0IHYxNjUg djE2NiB2MTY3IHYxNjggdjE2OSB2MTcwIHYxNzEgdjE3MiB2MTczIHYxNzQgdjE3NSB2MTc2IHYx NzcgdjE3OCB2MTc5IHYxODAgdjE4MSB2MTgyIHYxODMgdjE4NCB2MTg1IHYxODYgdjE4NyB2MTg4 IHYxODkgdjE5MCB2MTkxIHYxOTIgdjE5MyB2MTk0IHYxOTUgdjE5NiB2MTk3IHYxOTggdjE5OSB2 MjAwIHYyMDEgdjIwMiB2MjAzIHYyMDQgdjIwNSB2MjA2IHYyMDcgdjIwOCB2MjA5IHYyMTAgdjIx MSB2MjEyIHYyMTMgdjIxNCB2MjE1IHYyMTYgdjIxNyB2MjE4IHYyMTkgdjIyMCB2MjIxIHYyMjIg djIyMyB2MjI0IHYyMjUgdjIyNiB2MjI3IHYyMjggdjIyOSB2MjMwIHYyMzEgdjIzMiB2MjMzIHYy MzQgdjIzNSB2MjM2IHYyMzcgdjIzOCB2MjM5IHYyNDAgdjI0MSB2MjQyIHYyNDMgdjI0NCB2MjQ1 IHYyNDYgdjI0NyB2MjQ4IHYyNDkgdjI1MCB2MjUxIHYyNTIpCisgICAgICAgIERFRklORSB2MDAx IEFTIFRSVUUsIHYwMDIgQVMgVFJVRSwgdjAwMyBBUyBUUlVFLCB2MDA0IEFTIFRSVUUsIHYwMDUg QVMgVFJVRSwgdjAwNiBBUyBUUlVFLCB2MDA3IEFTIFRSVUUsIHYwMDggQVMgVFJVRSwgdjAwOSBB UyBUUlVFLCB2MDEwIEFTIFRSVUUsIHYwMTEgQVMgVFJVRSwgdjAxMiBBUyBUUlVFLCB2MDEzIEFT IFRSVUUsIHYwMTQgQVMgVFJVRSwgdjAxNSBBUyBUUlVFLCB2MDE2IEFTIFRSVUUsIHYwMTcgQVMg VFJVRSwgdjAxOCBBUyBUUlVFLCB2MDE5IEFTIFRSVUUsIHYwMjAgQVMgVFJVRSwgdjAyMSBBUyBU UlVFLCB2MDIyIEFTIFRSVUUsIHYwMjMgQVMgVFJVRSwgdjAyNCBBUyBUUlVFLCB2MDI1IEFTIFRS VUUsIHYwMjYgQVMgVFJVRSwgdjAyNyBBUyBUUlVFLCB2MDI4IEFTIFRSVUUsIHYwMjkgQVMgVFJV RSwgdjAzMCBBUyBUUlVFLCB2MDMxIEFTIFRSVUUsIHYwMzIgQVMgVFJVRSwgdjAzMyBBUyBUUlVF LCB2MDM0IEFTIFRSVUUsIHYwMzUgQVMgVFJVRSwgdjAzNiBBUyBUUlVFLCB2MDM3IEFTIFRSVUUs IHYwMzggQVMgVFJVRSwgdjAzOSBBUyBUUlVFLCB2MDQwIEFTIFRSVUUsIHYwNDEgQVMgVFJVRSwg djA0MiBBUyBUUlVFLCB2MDQzIEFTIFRSVUUsIHYwNDQgQVMgVFJVRSwgdjA0NSBBUyBUUlVFLCB2 MDQ2IEFTIFRSVUUsIHYwNDcgQVMgVFJVRSwgdjA0OCBBUyBUUlVFLCB2MDQ5IEFTIFRSVUUsIHYw NTAgQVMgVFJVRSwgdjA1MSBBUyBUUlVFLCB2MDUyIEFTIFRSVUUsIHYwNTMgQVMgVFJVRSwgdjA1 NCBBUyBUUlVFLCB2MDU1IEFTIFRSVUUsIHYwNTYgQVMgVFJVRSwgdjA1NyBBUyBUUlVFLCB2MDU4 IEFTIFRSVUUsIHYwNTkgQVMgVFJVRSwgdjA2MCBBUyBUUlVFLCB2MDYxIEFTIFRSVUUsIHYwNjIg QVMgVFJVRSwgdjA2MyBBUyBUUlVFLCB2MDY0IEFTIFRSVUUsIHYwNjUgQVMgVFJVRSwgdjA2NiBB UyBUUlVFLCB2MDY3IEFTIFRSVUUsIHYwNjggQVMgVFJVRSwgdjA2OSBBUyBUUlVFLCB2MDcwIEFT IFRSVUUsIHYwNzEgQVMgVFJVRSwgdjA3MiBBUyBUUlVFLCB2MDczIEFTIFRSVUUsIHYwNzQgQVMg VFJVRSwgdjA3NSBBUyBUUlVFLCB2MDc2IEFTIFRSVUUsIHYwNzcgQVMgVFJVRSwgdjA3OCBBUyBU UlVFLCB2MDc5IEFTIFRSVUUsIHYwODAgQVMgVFJVRSwgdjA4MSBBUyBUUlVFLCB2MDgyIEFTIFRS VUUsIHYwODMgQVMgVFJVRSwgdjA4NCBBUyBUUlVFLCB2MDg1IEFTIFRSVUUsIHYwODYgQVMgVFJV RSwgdjA4NyBBUyBUUlVFLCB2MDg4IEFTIFRSVUUsIHYwODkgQVMgVFJVRSwgdjA5MCBBUyBUUlVF LCB2MDkxIEFTIFRSVUUsIHYwOTIgQVMgVFJVRSwgdjA5MyBBUyBUUlVFLCB2MDk0IEFTIFRSVUUs IHYwOTUgQVMgVFJVRSwgdjA5NiBBUyBUUlVFLCB2MDk3IEFTIFRSVUUsIHYwOTggQVMgVFJVRSwg djA5OSBBUyBUUlVFLCB2MTAwIEFTIFRSVUUsIHYxMDEgQVMgVFJVRSwgdjEwMiBBUyBUUlVFLCB2 MTAzIEFTIFRSVUUsIHYxMDQgQVMgVFJVRSwgdjEwNSBBUyBUUlVFLCB2MTA2IEFTIFRSVUUsIHYx MDcgQVMgVFJVRSwgdjEwOCBBUyBUUlVFLCB2MTA5IEFTIFRSVUUsIHYxMTAgQVMgVFJVRSwgdjEx MSBBUyBUUlVFLCB2MTEyIEFTIFRSVUUsIHYxMTMgQVMgVFJVRSwgdjExNCBBUyBUUlVFLCB2MTE1 IEFTIFRSVUUsIHYxMTYgQVMgVFJVRSwgdjExNyBBUyBUUlVFLCB2MTE4IEFTIFRSVUUsIHYxMTkg QVMgVFJVRSwgdjEyMCBBUyBUUlVFLCB2MTIxIEFTIFRSVUUsIHYxMjIgQVMgVFJVRSwgdjEyMyBB UyBUUlVFLCB2MTI0IEFTIFRSVUUsIHYxMjUgQVMgVFJVRSwgdjEyNiBBUyBUUlVFLCB2MTI3IEFT IFRSVUUsIHYxMjggQVMgVFJVRSwgdjEyOSBBUyBUUlVFLCB2MTMwIEFTIFRSVUUsIHYxMzEgQVMg VFJVRSwgdjEzMiBBUyBUUlVFLCB2MTMzIEFTIFRSVUUsIHYxMzQgQVMgVFJVRSwgdjEzNSBBUyBU UlVFLCB2MTM2IEFTIFRSVUUsIHYxMzcgQVMgVFJVRSwgdjEzOCBBUyBUUlVFLCB2MTM5IEFTIFRS VUUsIHYxNDAgQVMgVFJVRSwgdjE0MSBBUyBUUlVFLCB2MTQyIEFTIFRSVUUsIHYxNDMgQVMgVFJV RSwgdjE0NCBBUyBUUlVFLCB2MTQ1IEFTIFRSVUUsIHYxNDYgQVMgVFJVRSwgdjE0NyBBUyBUUlVF LCB2MTQ4IEFTIFRSVUUsIHYxNDkgQVMgVFJVRSwgdjE1MCBBUyBUUlVFLCB2MTUxIEFTIFRSVUUs IHYxNTIgQVMgVFJVRSwgdjE1MyBBUyBUUlVFLCB2MTU0IEFTIFRSVUUsIHYxNTUgQVMgVFJVRSwg djE1NiBBUyBUUlVFLCB2MTU3IEFTIFRSVUUsIHYxNTggQVMgVFJVRSwgdjE1OSBBUyBUUlVFLCB2 MTYwIEFTIFRSVUUsIHYxNjEgQVMgVFJVRSwgdjE2MiBBUyBUUlVFLCB2MTYzIEFTIFRSVUUsIHYx NjQgQVMgVFJVRSwgdjE2NSBBUyBUUlVFLCB2MTY2IEFTIFRSVUUsIHYxNjcgQVMgVFJVRSwgdjE2 OCBBUyBUUlVFLCB2MTY5IEFTIFRSVUUsIHYxNzAgQVMgVFJVRSwgdjE3MSBBUyBUUlVFLCB2MTcy IEFTIFRSVUUsIHYxNzMgQVMgVFJVRSwgdjE3NCBBUyBUUlVFLCB2MTc1IEFTIFRSVUUsIHYxNzYg QVMgVFJVRSwgdjE3NyBBUyBUUlVFLCB2MTc4IEFTIFRSVUUsIHYxNzkgQVMgVFJVRSwgdjE4MCBB UyBUUlVFLCB2MTgxIEFTIFRSVUUsIHYxODIgQVMgVFJVRSwgdjE4MyBBUyBUUlVFLCB2MTg0IEFT IFRSVUUsIHYxODUgQVMgVFJVRSwgdjE4NiBBUyBUUlVFLCB2MTg3IEFTIFRSVUUsIHYxODggQVMg VFJVRSwgdjE4OSBBUyBUUlVFLCB2MTkwIEFTIFRSVUUsIHYxOTEgQVMgVFJVRSwgdjE5MiBBUyBU UlVFLCB2MTkzIEFTIFRSVUUsIHYxOTQgQVMgVFJVRSwgdjE5NSBBUyBUUlVFLCB2MTk2IEFTIFRS VUUsIHYxOTcgQVMgVFJVRSwgdjE5OCBBUyBUUlVFLCB2MTk5IEFTIFRSVUUsIHYyMDAgQVMgVFJV RSwgdjIwMSBBUyBUUlVFLCB2MjAyIEFTIFRSVUUsIHYyMDMgQVMgVFJVRSwgdjIwNCBBUyBUUlVF LCB2MjA1IEFTIFRSVUUsIHYyMDYgQVMgVFJVRSwgdjIwNyBBUyBUUlVFLCB2MjA4IEFTIFRSVUUs IHYyMDkgQVMgVFJVRSwgdjIxMCBBUyBUUlVFLCB2MjExIEFTIFRSVUUsIHYyMTIgQVMgVFJVRSwg djIxMyBBUyBUUlVFLCB2MjE0IEFTIFRSVUUsIHYyMTUgQVMgVFJVRSwgdjIxNiBBUyBUUlVFLCB2 MjE3IEFTIFRSVUUsIHYyMTggQVMgVFJVRSwgdjIxOSBBUyBUUlVFLCB2MjIwIEFTIFRSVUUsIHYy MjEgQVMgVFJVRSwgdjIyMiBBUyBUUlVFLCB2MjIzIEFTIFRSVUUsIHYyMjQgQVMgVFJVRSwgdjIy NSBBUyBUUlVFLCB2MjI2IEFTIFRSVUUsIHYyMjcgQVMgVFJVRSwgdjIyOCBBUyBUUlVFLCB2MjI5 IEFTIFRSVUUsIHYyMzAgQVMgVFJVRSwgdjIzMSBBUyBUUlVFLCB2MjMyIEFTIFRSVUUsIHYyMzMg QVMgVFJVRSwgdjIzNCBBUyBUUlVFLCB2MjM1IEFTIFRSVUUsIHYyMzYgQVMgVFJVRSwgdjIzNyBB UyBUUlVFLCB2MjM4IEFTIFRSVUUsIHYyMzkgQVMgVFJVRSwgdjI0MCBBUyBUUlVFLCB2MjQxIEFT IFRSVUUsIHYyNDIgQVMgVFJVRSwgdjI0MyBBUyBUUlVFLCB2MjQ0IEFTIFRSVUUsIHYyNDUgQVMg VFJVRSwgdjI0NiBBUyBUUlVFLCB2MjQ3IEFTIFRSVUUsIHYyNDggQVMgVFJVRSwgdjI0OSBBUyBU UlVFLCB2MjUwIEFTIFRSVUUsIHYyNTEgQVMgVFJVRSwgdjI1MiBBUyBUUlVFKSIKK1BML3BnU1FM IGZ1bmN0aW9uIGlubGluZV9jb2RlX2Jsb2NrIGxpbmUgMTcgYXQgRVhFQ1VURQorLS0gRXJyb3I6 IDI1MyB2YXJpYWJsZXMgZXhjZWVkcyBsaW1pdCBvZiAyNTEKK0RPICQkCitERUNMQVJFCisgICAg cGF0dGVybl92YXJzIHRleHQ7CisgICAgZGVmaW5lX3ZhcnMgdGV4dDsKKyAgICBxdWVyeSB0ZXh0 OworQkVHSU4KKyAgICBTRUxFQ1Qgc3RyaW5nX2FnZygndicgfHwgbHBhZChpOjp0ZXh0LCAzLCAn MCcpLCAnICcpLAorICAgICAgICAgICBzdHJpbmdfYWdnKCd2JyB8fCBscGFkKGk6OnRleHQsIDMs ICcwJykgfHwgJyBBUyBUUlVFJywgJywgJykKKyAgICBJTlRPIHBhdHRlcm5fdmFycywgZGVmaW5l X3ZhcnMKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyNTMpIGk7CisKKyAgICBxdWVyeSA6 PSBmb3JtYXQoJ1NFTEVDVCAqIEZST00gKFNFTEVDVCAxIEFTIHgpIHQgV0lORE9XIHcgQVMgKAor ICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgUEFUVEVSTiAoJXMpCisgICAgICAgIERFRklORSAlcyknLCBwYXR0ZXJuX3ZhcnMs IGRlZmluZV92YXJzKTsKKworICAgIEVYRUNVVEUgcXVlcnk7CitFTkQ7CiskJDsKK0VSUk9SOiAg dG9vIG1hbnkgcGF0dGVybiB2YXJpYWJsZXMKK0RFVEFJTDogIE1heGltdW0gaXMgMjUxLgorQ09O VEVYVDogIFNRTCBzdGF0ZW1lbnQgIlNFTEVDVCAqIEZST00gKFNFTEVDVCAxIEFTIHgpIHQgV0lO RE9XIHcgQVMgKAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAodjAwMSB2MDAyIHYwMDMgdjAwNCB2MDA1IHYw MDYgdjAwNyB2MDA4IHYwMDkgdjAxMCB2MDExIHYwMTIgdjAxMyB2MDE0IHYwMTUgdjAxNiB2MDE3 IHYwMTggdjAxOSB2MDIwIHYwMjEgdjAyMiB2MDIzIHYwMjQgdjAyNSB2MDI2IHYwMjcgdjAyOCB2 MDI5IHYwMzAgdjAzMSB2MDMyIHYwMzMgdjAzNCB2MDM1IHYwMzYgdjAzNyB2MDM4IHYwMzkgdjA0 MCB2MDQxIHYwNDIgdjA0MyB2MDQ0IHYwNDUgdjA0NiB2MDQ3IHYwNDggdjA0OSB2MDUwIHYwNTEg djA1MiB2MDUzIHYwNTQgdjA1NSB2MDU2IHYwNTcgdjA1OCB2MDU5IHYwNjAgdjA2MSB2MDYyIHYw NjMgdjA2NCB2MDY1IHYwNjYgdjA2NyB2MDY4IHYwNjkgdjA3MCB2MDcxIHYwNzIgdjA3MyB2MDc0 IHYwNzUgdjA3NiB2MDc3IHYwNzggdjA3OSB2MDgwIHYwODEgdjA4MiB2MDgzIHYwODQgdjA4NSB2 MDg2IHYwODcgdjA4OCB2MDg5IHYwOTAgdjA5MSB2MDkyIHYwOTMgdjA5NCB2MDk1IHYwOTYgdjA5 NyB2MDk4IHYwOTkgdjEwMCB2MTAxIHYxMDIgdjEwMyB2MTA0IHYxMDUgdjEwNiB2MTA3IHYxMDgg djEwOSB2MTEwIHYxMTEgdjExMiB2MTEzIHYxMTQgdjExNSB2MTE2IHYxMTcgdjExOCB2MTE5IHYx MjAgdjEyMSB2MTIyIHYxMjMgdjEyNCB2MTI1IHYxMjYgdjEyNyB2MTI4IHYxMjkgdjEzMCB2MTMx IHYxMzIgdjEzMyB2MTM0IHYxMzUgdjEzNiB2MTM3IHYxMzggdjEzOSB2MTQwIHYxNDEgdjE0MiB2 MTQzIHYxNDQgdjE0NSB2MTQ2IHYxNDcgdjE0OCB2MTQ5IHYxNTAgdjE1MSB2MTUyIHYxNTMgdjE1 NCB2MTU1IHYxNTYgdjE1NyB2MTU4IHYxNTkgdjE2MCB2MTYxIHYxNjIgdjE2MyB2MTY0IHYxNjUg djE2NiB2MTY3IHYxNjggdjE2OSB2MTcwIHYxNzEgdjE3MiB2MTczIHYxNzQgdjE3NSB2MTc2IHYx NzcgdjE3OCB2MTc5IHYxODAgdjE4MSB2MTgyIHYxODMgdjE4NCB2MTg1IHYxODYgdjE4NyB2MTg4 IHYxODkgdjE5MCB2MTkxIHYxOTIgdjE5MyB2MTk0IHYxOTUgdjE5NiB2MTk3IHYxOTggdjE5OSB2 MjAwIHYyMDEgdjIwMiB2MjAzIHYyMDQgdjIwNSB2MjA2IHYyMDcgdjIwOCB2MjA5IHYyMTAgdjIx MSB2MjEyIHYyMTMgdjIxNCB2MjE1IHYyMTYgdjIxNyB2MjE4IHYyMTkgdjIyMCB2MjIxIHYyMjIg djIyMyB2MjI0IHYyMjUgdjIyNiB2MjI3IHYyMjggdjIyOSB2MjMwIHYyMzEgdjIzMiB2MjMzIHYy MzQgdjIzNSB2MjM2IHYyMzcgdjIzOCB2MjM5IHYyNDAgdjI0MSB2MjQyIHYyNDMgdjI0NCB2MjQ1 IHYyNDYgdjI0NyB2MjQ4IHYyNDkgdjI1MCB2MjUxIHYyNTIgdjI1MykKKyAgICAgICAgREVGSU5F IHYwMDEgQVMgVFJVRSwgdjAwMiBBUyBUUlVFLCB2MDAzIEFTIFRSVUUsIHYwMDQgQVMgVFJVRSwg djAwNSBBUyBUUlVFLCB2MDA2IEFTIFRSVUUsIHYwMDcgQVMgVFJVRSwgdjAwOCBBUyBUUlVFLCB2 MDA5IEFTIFRSVUUsIHYwMTAgQVMgVFJVRSwgdjAxMSBBUyBUUlVFLCB2MDEyIEFTIFRSVUUsIHYw MTMgQVMgVFJVRSwgdjAxNCBBUyBUUlVFLCB2MDE1IEFTIFRSVUUsIHYwMTYgQVMgVFJVRSwgdjAx NyBBUyBUUlVFLCB2MDE4IEFTIFRSVUUsIHYwMTkgQVMgVFJVRSwgdjAyMCBBUyBUUlVFLCB2MDIx IEFTIFRSVUUsIHYwMjIgQVMgVFJVRSwgdjAyMyBBUyBUUlVFLCB2MDI0IEFTIFRSVUUsIHYwMjUg QVMgVFJVRSwgdjAyNiBBUyBUUlVFLCB2MDI3IEFTIFRSVUUsIHYwMjggQVMgVFJVRSwgdjAyOSBB UyBUUlVFLCB2MDMwIEFTIFRSVUUsIHYwMzEgQVMgVFJVRSwgdjAzMiBBUyBUUlVFLCB2MDMzIEFT IFRSVUUsIHYwMzQgQVMgVFJVRSwgdjAzNSBBUyBUUlVFLCB2MDM2IEFTIFRSVUUsIHYwMzcgQVMg VFJVRSwgdjAzOCBBUyBUUlVFLCB2MDM5IEFTIFRSVUUsIHYwNDAgQVMgVFJVRSwgdjA0MSBBUyBU UlVFLCB2MDQyIEFTIFRSVUUsIHYwNDMgQVMgVFJVRSwgdjA0NCBBUyBUUlVFLCB2MDQ1IEFTIFRS VUUsIHYwNDYgQVMgVFJVRSwgdjA0NyBBUyBUUlVFLCB2MDQ4IEFTIFRSVUUsIHYwNDkgQVMgVFJV RSwgdjA1MCBBUyBUUlVFLCB2MDUxIEFTIFRSVUUsIHYwNTIgQVMgVFJVRSwgdjA1MyBBUyBUUlVF LCB2MDU0IEFTIFRSVUUsIHYwNTUgQVMgVFJVRSwgdjA1NiBBUyBUUlVFLCB2MDU3IEFTIFRSVUUs IHYwNTggQVMgVFJVRSwgdjA1OSBBUyBUUlVFLCB2MDYwIEFTIFRSVUUsIHYwNjEgQVMgVFJVRSwg djA2MiBBUyBUUlVFLCB2MDYzIEFTIFRSVUUsIHYwNjQgQVMgVFJVRSwgdjA2NSBBUyBUUlVFLCB2 MDY2IEFTIFRSVUUsIHYwNjcgQVMgVFJVRSwgdjA2OCBBUyBUUlVFLCB2MDY5IEFTIFRSVUUsIHYw NzAgQVMgVFJVRSwgdjA3MSBBUyBUUlVFLCB2MDcyIEFTIFRSVUUsIHYwNzMgQVMgVFJVRSwgdjA3 NCBBUyBUUlVFLCB2MDc1IEFTIFRSVUUsIHYwNzYgQVMgVFJVRSwgdjA3NyBBUyBUUlVFLCB2MDc4 IEFTIFRSVUUsIHYwNzkgQVMgVFJVRSwgdjA4MCBBUyBUUlVFLCB2MDgxIEFTIFRSVUUsIHYwODIg QVMgVFJVRSwgdjA4MyBBUyBUUlVFLCB2MDg0IEFTIFRSVUUsIHYwODUgQVMgVFJVRSwgdjA4NiBB UyBUUlVFLCB2MDg3IEFTIFRSVUUsIHYwODggQVMgVFJVRSwgdjA4OSBBUyBUUlVFLCB2MDkwIEFT IFRSVUUsIHYwOTEgQVMgVFJVRSwgdjA5MiBBUyBUUlVFLCB2MDkzIEFTIFRSVUUsIHYwOTQgQVMg VFJVRSwgdjA5NSBBUyBUUlVFLCB2MDk2IEFTIFRSVUUsIHYwOTcgQVMgVFJVRSwgdjA5OCBBUyBU UlVFLCB2MDk5IEFTIFRSVUUsIHYxMDAgQVMgVFJVRSwgdjEwMSBBUyBUUlVFLCB2MTAyIEFTIFRS VUUsIHYxMDMgQVMgVFJVRSwgdjEwNCBBUyBUUlVFLCB2MTA1IEFTIFRSVUUsIHYxMDYgQVMgVFJV RSwgdjEwNyBBUyBUUlVFLCB2MTA4IEFTIFRSVUUsIHYxMDkgQVMgVFJVRSwgdjExMCBBUyBUUlVF LCB2MTExIEFTIFRSVUUsIHYxMTIgQVMgVFJVRSwgdjExMyBBUyBUUlVFLCB2MTE0IEFTIFRSVUUs IHYxMTUgQVMgVFJVRSwgdjExNiBBUyBUUlVFLCB2MTE3IEFTIFRSVUUsIHYxMTggQVMgVFJVRSwg djExOSBBUyBUUlVFLCB2MTIwIEFTIFRSVUUsIHYxMjEgQVMgVFJVRSwgdjEyMiBBUyBUUlVFLCB2 MTIzIEFTIFRSVUUsIHYxMjQgQVMgVFJVRSwgdjEyNSBBUyBUUlVFLCB2MTI2IEFTIFRSVUUsIHYx MjcgQVMgVFJVRSwgdjEyOCBBUyBUUlVFLCB2MTI5IEFTIFRSVUUsIHYxMzAgQVMgVFJVRSwgdjEz MSBBUyBUUlVFLCB2MTMyIEFTIFRSVUUsIHYxMzMgQVMgVFJVRSwgdjEzNCBBUyBUUlVFLCB2MTM1 IEFTIFRSVUUsIHYxMzYgQVMgVFJVRSwgdjEzNyBBUyBUUlVFLCB2MTM4IEFTIFRSVUUsIHYxMzkg QVMgVFJVRSwgdjE0MCBBUyBUUlVFLCB2MTQxIEFTIFRSVUUsIHYxNDIgQVMgVFJVRSwgdjE0MyBB UyBUUlVFLCB2MTQ0IEFTIFRSVUUsIHYxNDUgQVMgVFJVRSwgdjE0NiBBUyBUUlVFLCB2MTQ3IEFT IFRSVUUsIHYxNDggQVMgVFJVRSwgdjE0OSBBUyBUUlVFLCB2MTUwIEFTIFRSVUUsIHYxNTEgQVMg VFJVRSwgdjE1MiBBUyBUUlVFLCB2MTUzIEFTIFRSVUUsIHYxNTQgQVMgVFJVRSwgdjE1NSBBUyBU UlVFLCB2MTU2IEFTIFRSVUUsIHYxNTcgQVMgVFJVRSwgdjE1OCBBUyBUUlVFLCB2MTU5IEFTIFRS VUUsIHYxNjAgQVMgVFJVRSwgdjE2MSBBUyBUUlVFLCB2MTYyIEFTIFRSVUUsIHYxNjMgQVMgVFJV RSwgdjE2NCBBUyBUUlVFLCB2MTY1IEFTIFRSVUUsIHYxNjYgQVMgVFJVRSwgdjE2NyBBUyBUUlVF LCB2MTY4IEFTIFRSVUUsIHYxNjkgQVMgVFJVRSwgdjE3MCBBUyBUUlVFLCB2MTcxIEFTIFRSVUUs IHYxNzIgQVMgVFJVRSwgdjE3MyBBUyBUUlVFLCB2MTc0IEFTIFRSVUUsIHYxNzUgQVMgVFJVRSwg djE3NiBBUyBUUlVFLCB2MTc3IEFTIFRSVUUsIHYxNzggQVMgVFJVRSwgdjE3OSBBUyBUUlVFLCB2 MTgwIEFTIFRSVUUsIHYxODEgQVMgVFJVRSwgdjE4MiBBUyBUUlVFLCB2MTgzIEFTIFRSVUUsIHYx ODQgQVMgVFJVRSwgdjE4NSBBUyBUUlVFLCB2MTg2IEFTIFRSVUUsIHYxODcgQVMgVFJVRSwgdjE4 OCBBUyBUUlVFLCB2MTg5IEFTIFRSVUUsIHYxOTAgQVMgVFJVRSwgdjE5MSBBUyBUUlVFLCB2MTky IEFTIFRSVUUsIHYxOTMgQVMgVFJVRSwgdjE5NCBBUyBUUlVFLCB2MTk1IEFTIFRSVUUsIHYxOTYg QVMgVFJVRSwgdjE5NyBBUyBUUlVFLCB2MTk4IEFTIFRSVUUsIHYxOTkgQVMgVFJVRSwgdjIwMCBB UyBUUlVFLCB2MjAxIEFTIFRSVUUsIHYyMDIgQVMgVFJVRSwgdjIwMyBBUyBUUlVFLCB2MjA0IEFT IFRSVUUsIHYyMDUgQVMgVFJVRSwgdjIwNiBBUyBUUlVFLCB2MjA3IEFTIFRSVUUsIHYyMDggQVMg VFJVRSwgdjIwOSBBUyBUUlVFLCB2MjEwIEFTIFRSVUUsIHYyMTEgQVMgVFJVRSwgdjIxMiBBUyBU UlVFLCB2MjEzIEFTIFRSVUUsIHYyMTQgQVMgVFJVRSwgdjIxNSBBUyBUUlVFLCB2MjE2IEFTIFRS VUUsIHYyMTcgQVMgVFJVRSwgdjIxOCBBUyBUUlVFLCB2MjE5IEFTIFRSVUUsIHYyMjAgQVMgVFJV RSwgdjIyMSBBUyBUUlVFLCB2MjIyIEFTIFRSVUUsIHYyMjMgQVMgVFJVRSwgdjIyNCBBUyBUUlVF LCB2MjI1IEFTIFRSVUUsIHYyMjYgQVMgVFJVRSwgdjIyNyBBUyBUUlVFLCB2MjI4IEFTIFRSVUUs IHYyMjkgQVMgVFJVRSwgdjIzMCBBUyBUUlVFLCB2MjMxIEFTIFRSVUUsIHYyMzIgQVMgVFJVRSwg djIzMyBBUyBUUlVFLCB2MjM0IEFTIFRSVUUsIHYyMzUgQVMgVFJVRSwgdjIzNiBBUyBUUlVFLCB2 MjM3IEFTIFRSVUUsIHYyMzggQVMgVFJVRSwgdjIzOSBBUyBUUlVFLCB2MjQwIEFTIFRSVUUsIHYy NDEgQVMgVFJVRSwgdjI0MiBBUyBUUlVFLCB2MjQzIEFTIFRSVUUsIHYyNDQgQVMgVFJVRSwgdjI0 NSBBUyBUUlVFLCB2MjQ2IEFTIFRSVUUsIHYyNDcgQVMgVFJVRSwgdjI0OCBBUyBUUlVFLCB2MjQ5 IEFTIFRSVUUsIHYyNTAgQVMgVFJVRSwgdjI1MSBBUyBUUlVFLCB2MjUyIEFTIFRSVUUsIHYyNTMg QVMgVFJVRSkiCitQTC9wZ1NRTCBmdW5jdGlvbiBpbmxpbmVfY29kZV9ibG9jayBsaW5lIDE3IGF0 IEVYRUNVVEUKKyAgICBDUkVBVEUgVEVNUCBUQUJMRSBzdG9ja19udWxsIChjb21wYW55IFRFWFQs IHRkYXRlIERBVEUsIHByaWNlIElOVEVHRVIpOworICAgIElOU0VSVCBJTlRPIHN0b2NrX251bGwg VkFMVUVTICgnYzEnLCAnMjAyMy0wNy0wMScsIDEwMCk7CisgICAgSU5TRVJUIElOVE8gc3RvY2tf bnVsbCBWQUxVRVMgKCdjMScsICcyMDIzLTA3LTAyJywgTlVMTCk7ICAtLSBOVUxMIGluIG1pZGRs ZQorICAgIElOU0VSVCBJTlRPIHN0b2NrX251bGwgVkFMVUVTICgnYzEnLCAnMjAyMy0wNy0wMycs IDIwMCk7CisgICAgSU5TRVJUIElOVE8gc3RvY2tfbnVsbCBWQUxVRVMgKCdjMScsICcyMDIzLTA3 LTA0JywgMTUwKTsKKyAgICBTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBjb3VudCgqKSBP VkVSIHcgQVMgbWF0Y2hfY291bnQKKyAgICBGUk9NIHN0b2NrX251bGwKKyAgICBXSU5ET1cgdyBB UyAoCisgICAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgICAgT1JERVIgQlkgdGRhdGUKKyAg ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgUEFUVEVSTiAoU1RBUlQgVVAgRE9XTikKKyAgICAgIERFRklORSBTVEFSVCBBUyBUUlVFLCBV UCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLCBET1dOIEFTIHByaWNlIDwKK1BSRVYocHJpY2UpCisg ICAgKTsKKyBjb21wYW55IHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgbWF0Y2hfY291bnQgCistLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGMxICAgICAgfCAwNy0w MS0yMDIzIHwgICAxMDAgfCAgICAgICAgICAgMAorIGMxICAgICAgfCAwNy0wMi0yMDIzIHwgICAg ICAgfCAgICAgICAgICAgMAorIGMxICAgICAgfCAwNy0wMy0yMDIzIHwgICAyMDAgfCAgICAgICAg ICAgMAorIGMxICAgICAgfCAwNy0wNC0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgMAorKDQgcm93 cykKKworLS0gT3ZlcmxhcHBpbmcgbWF0Y2ggdGVzdHMgKHJlcXVpcmVzIG11bHRpLWNvbnRleHQg Zm9yIGNvcnJlY3QgYmVoYXZpb3IpCistLSBVc2luZyBhcnJheSBmbGFnczogJ1gnID0gQU5ZKGZs YWdzKSBmb3IgbXVsdGktVFJVRSBzdXBwb3J0CistLSBUZXN0IDE6IEEgQiBDIEQgRSB8IEIgQyBE IHwgQyBEIEUgRiAtIHRocmVlIG92ZXJsYXBwaW5nIHBhdHRlcm5zCistLSBEaWZmZXJlbnQgZW5k IHBvaW50czogQiBDIEQgKDQpLCBBIEIgQyBEIEUgKDUpLCBDIEQgRSBGICg2KQorV0lUSCB0ZXN0 X292ZXJsYXAxIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFS UkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsn QyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydEJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0UnXSks CisgICAgICAgICg2LCBBUlJBWVsnRiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxF Q1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb3ZlcmxhcDEKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSB8IEIgQyBEIHwgQyBEIEUgRikKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcg PSBBTlkoZmxhZ3MpLAorICAgICAgICBFIEFTICdFJyA9IEFOWShmbGFncyksCisgICAgICAgIEYg QVMgJ0YnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRj aF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9 ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNQorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorICAzIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwg e0R9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwge0V9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICA2IHwge0Z9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDYg cm93cykKKworV0lUSCB0ZXN0X292ZXJsYXAxIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisg ICAgICAgICgzLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydEJ10pLAorICAgICAg ICAoNSwgQVJSQVlbJ0UnXSksCisgICAgICAgICg2LCBBUlJBWVsnRiddKQorICAgICkgQVMgdChp ZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRl c3Rfb3ZlcmxhcDEKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIgQyBEIEUgfCBCIEMgRCB8IEMgRCBF IEYpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg QiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisg ICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRSBBUyAnRScgPSBBTlkoZmxh Z3MpLAorICAgICAgICBGIEFTICdGJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1h dGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDUKKyAgMiB8IHtCfSAg IHwgICAgICAgICAgIDIgfCAgICAgICAgIDQKKyAgMyB8IHtDfSAgIHwgICAgICAgICAgIDMgfCAg ICAgICAgIDYKKyAgNCB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtF fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtGfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyg2IHJvd3MpCisKKy0tIFBBU1QgTEFTVDogb25seSBvbmUgbWF0Y2gKKy0t IFRPIE5FWFQgUk9XIHdpdGggbXVsdGktY29udGV4dDogdGhyZWUgbWF0Y2hlcworLS0gICBSb3cg MTogQSBCIEMgRCBFICgxLTUpCistLSAgIFJvdyAyOiBCIEMgRCAoMi00KSA8LSBlbmRzIGZpcnN0 IQorLS0gICBSb3cgMzogQyBEIEUgRiAoMy02KSA8LSBlbmRzIGxhc3QhCistLSBUZXN0IDFiOiBM b25nZXIgcGF0dGVybiBGQUlMUywgc2hvcnRlciBwYXR0ZXJuIHNob3VsZCBzdXJ2aXZlCistLSBQ YXR0ZXJuOiBBKyBCIEMgRCBFIHwgQisgQworLS0gQSsgQiBDIEQgRSBmYWlscyAobm8gRSBmb3Vu ZCBpbiBzZXF1ZW5jZSkKKy0tIEIrIEMgbWF0Y2hlcyBhdCByb3dzIDItMworLS0gUmVzdWx0OiBt YXRjaCAyLTMgKEIrIEMpCitXSVRIIHRlc3Rfb3ZlcmxhcDFiIEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlb J0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydEJ10p LAorICAgICAgICAoNSwgQVJSQVlbJ1gnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VM RUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X292ZXJsYXAxYgorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQSsgQiBDIEQgRSB8IEIrIEMpCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgRSBBUyAnRScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBt YXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDIgfCB7Qn0g ICB8ICAgICAgICAgICAyIHwgICAgICAgICAzCisgIDMgfCB7Q30gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgIDQgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7 WH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCistLSBUZXN0IDI6IEEg QisgQyB8IEIrIEQgLSBsb25nIEIgc2VxdWVuY2Ugd2l0aCBkaWZmZXJlbnQgZW5kaW5ncworV0lU SCB0ZXN0X292ZXJsYXAyIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAg KDEsICBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMs ICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDQsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsICBB UlJBWVsnQiddKSwKKyAgICAgICAgKDYsICBBUlJBWVsnQyddKSwKKyAgICAgICAgKDcsICBBUlJB WVsnQiddKSwKKyAgICAgICAgKDgsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDksICBBUlJBWVsn QiddKSwKKyAgICAgICAgKDEwLCBBUlJBWVsnRCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCisp CitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0 LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb3ZlcmxhcDIK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVY VCBST1cKKyAgICBQQVRURVJOIChBIEIrIEMgfCBCKyBEKQorICAgIERFRklORQorICAgICAgICBB IEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFn cykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEg fCAgICAgICAgIDYKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8 IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtCfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgNSB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg NiB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtCfSAgIHwgICAgICAg ICAgIDcgfCAgICAgICAgMTAKKyAgOCB8IHtCfSAgIHwgICAgICAgICAgIDggfCAgICAgICAgMTAK KyAgOSB8IHtCfSAgIHwgICAgICAgICAgIDkgfCAgICAgICAgMTAKKyAxMCB8IHtEfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKygxMCByb3dzKQorCistLSBDdXJyZW50IHJlc3VsdCAoY29y cmVjdCk6CistLSAgIFJvdyAxOiBBIEIrIEMgKDEtNikKKy0tICAgUm93IDctOTogQisgRCAoNy0x MCwgOC0xMCwgOS0xMCkKKy0tIE5vdGU6IFJvdyAyLTYgY2Fubm90IG1hdGNoIEIrIEQgYmVjYXVz ZSBSb3cgNiBpcyBDLCBub3QgRAorLS0gV2l0aCBhYnNvcnB0aW9uOiA4LTEwIGFuZCA5LTEwIHdv dWxkIGJlIGFic29yYmVkIGJ5IDctMTAgKGVhcmxpZXIgY29udGV4dCBjb3ZlcnMgbGF0ZXIpCist LSBUZXN0IDM6IEdyZWVkeSBxdWFudGlmaWVyIHdpdGggbGF0ZSBmYWlsdXJlIC0gQSBCIEMrIEQg fCBBIEIKKy0tIFBhdHRlcm4gZXhwZWN0cyBEIGFmdGVyIEMrLCBidXQgRSBjb21lcyBpbnN0ZWFk ICgiYmV0cmF5YWwiKQorV0lUSCB0ZXN0X2JldHJheWFsIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0In XSksCisgICAgICAgICgzLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydDJ10pLAor ICAgICAgICAoNSwgQVJSQVlbJ0MnXSksCisgICAgICAgICg2LCBBUlJBWVsnRSddKQorICAgICkg QVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitG Uk9NIHRlc3RfYmV0cmF5YWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDKyBEIHwgQSBCKQor ICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMg J0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBEIEFTICdEJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwg bWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8 IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIKKyAgMiB8IHtCfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgMyB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg NCB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtDfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtFfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK Kyg2IHJvd3MpCisKKy0tIEEgQiBDKyBEIGZhaWxzIGF0IFJvdyA2IChFIGluc3RlYWQgb2YgRCkK Ky0tIFF1ZXN0aW9uOiBEb2VzIGl0IGZhbGxiYWNrIHRvIEEgQiAoMS0yKT8KKy0tIFRlc3QgNDog TGV4aWNhbCBPcmRlciB0ZXN0IC0gQSBCIEMgfCBBIEIgQyBEIEUKKy0tIFNRTCBzdGFuZGFyZDog Zmlyc3QgbWF0Y2hpbmcgYWx0ZXJuYXRpdmUgd2lucworV0lUSCB0ZXN0X2xleGljYWwgQVMgKAor ICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAg ICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAgICAo NCwgQVJSQVlbJ0QnXSksCisgICAgICAgICg1LCBBUlJBWVsnRSddKQorICAgICkgQVMgdChpZCwg ZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rf bGV4aWNhbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMgfCBBIEIgQyBEIEUpCisgICAgREVG SU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBB TlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMg J0QnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRSBBUyAnRScgPSBBTlkoZmxhZ3MpCispOworIGlk IHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAz CisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7Q30gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDUgfCB7RX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCist LSBTUUwgc3RhbmRhcmQgTGV4aWNhbCBPcmRlcjogQSBCIEMgKDEtMykgd2lucyAoZmlyc3QgYWx0 ZXJuYXRpdmUpCistLSBUZXN0IDRiOiBSZXZlcnNlZCBwYXR0ZXJuIG9yZGVyIC0gQSBCIEMgRCBF IHwgQSBCIEMKK1dJVEggdGVzdF9sZXhpY2FsMiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAor ICAgICAgICAoMywgQVJSQVlbJ0MnXSksCisgICAgICAgICg0LCBBUlJBWVsnRCddKSwKKyAgICAg ICAgKDUsIEFSUkFZWydFJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9sZXhpY2FsMgorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSBCIEMgRCBFIHwgQSBCIEMpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0En ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBD IEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgRSBBUyAnRScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFy dCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg IDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA1CisgIDIgfCB7Qn0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgIDQgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7RX0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCistLSBTUUwgc3RhbmRhcmQgTGV4aWNh bCBPcmRlcjogQSBCIEMgRCBFICgxLTUpIHdpbnMgKGZpcnN0IGFsdGVybmF0aXZlKQorLS0gVGVz dCA1OiBNdWx0aXBsZSBUUlVFIGluIHNpbmdsZSByb3cgKG92ZXJsYXBwaW5nIHBhdHRlcm4gdmFy aWFibGVzKQorLS0gRWFjaCByb3cgbWF0Y2hlcyBtdWx0aXBsZSBERUZJTkUgY29uZGl0aW9ucyBz aW11bHRhbmVvdXNseQorV0lUSCB0ZXN0X211bHRpX3RydWUgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnLCdCJ10pLCAgICAgICAgLS0gQSBhbmQg QiBib3RoIFRSVUUKKyAgICAgICAgKDIsIEFSUkFZWydCJywnQyddKSwgICAgICAgIC0tIEIgYW5k IEMgYm90aCBUUlVFCisgICAgICAgICgzLCBBUlJBWVsnQycsJ0QnXSksICAgICAgICAtLSBDIGFu ZCBEIGJvdGggVFJVRQorICAgICAgICAoNCwgQVJSQVlbJ0QnLCdFJ10pLCAgICAgICAgLS0gRCBh bmQgRSBib3RoIFRSVUUKKyAgICAgICAgKDUsIEFSUkFZWydFJywnXyddKSAgICAgICAgIC0tIEUg b25seQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfbXVsdGlfdHJ1ZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBC IEMgRCBFKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAg ICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncyksCisgICAgICAgIEUgQVMgJ0UnID0gQU5Z KGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0t Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0EsQn0gfCAgICAgICAg ICAgMSB8ICAgICAgICAgNQorICAyIHwge0IsQ30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICAzIHwge0MsRH0gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0QsRX0gfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorICA1IHwge0UsX30gfCAgICAgICAgICAgICB8ICAgICAgICAg IAorKDUgcm93cykKKworLS0gUm93IDE6IEE9VCwgQj1UIC0+IG1hdGNoZXMgQQorLS0gUm93IDI6 IEI9VCwgQz1UIC0+IG1hdGNoZXMgQgorLS0gUm93IDM6IEM9VCwgRD1UIC0+IG1hdGNoZXMgQwor LS0gUm93IDQ6IEQ9VCwgRT1UIC0+IG1hdGNoZXMgRAorLS0gUm93IDU6IEU9VCAgICAgIC0+IG1h dGNoZXMgRQorLS0gUmVzdWx0OiBtYXRjaCAxLTUgKEEgQiBDIEQgRSkKKy0tIFRlc3QgNjogRGlh Z29uYWwgcGF0dGVybiB3aXRoIG11bHRpLVRSVUUgKHNoaWZ0ZWQgb3ZlcmxhcCkKK1dJVEggdGVz dF9kaWFnb25hbCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBB UlJBWVsnQScsJ18nXSksCisgICAgICAgICgyLCBBUlJBWVsnQicsJ0EnXSksCisgICAgICAgICgz LCBBUlJBWVsnQycsJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnRCcsJ0MnXSksCisgICAgICAg ICg1LCBBUlJBWVsnXycsJ0QnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2RpYWdvbmFsCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAg UEFUVEVSTiAoQSBCIEMgRCkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxh Z3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxh Z3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgIDEgfCB7QSxffSB8ICAgICAgICAgICAxIHwgICAgICAgICA0CisgIDIg fCB7QixBfSB8ICAgICAgICAgICAyIHwgICAgICAgICA1CisgIDMgfCB7QyxCfSB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDQgfCB7RCxDfSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDUgfCB7XyxEfSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCistLSBQb3Nz aWJsZSBtYXRjaGVzOgorLS0gICBTdGFydCBSb3cgMTogQSgxKSBCKDIpIEMoMykgRCg0KSAtPiAx LTQKKy0tICAgU3RhcnQgUm93IDI6IEEoMikgQigzKSBDKDQpIEQoNSkgLT4gMi01IChiZWNhdXNl IFJvdyAyIGhhcyBBIHRvbyEpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBDb250ZXh0IEFic29ycHRpb24g VGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3QgYWJzb3JwdGlvbiAxOiBCYXNpYyBBKyBwYXR0 ZXJuIC0gbGF0ZXIgY29udGV4dHMgYWJzb3JiZWQgYnkgZWFybGllcgorV0lUSCB0ZXN0X2Fic29y Yl9iYXNpYyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0En XSksCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydCJ10pCisg ICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9l bmQKK0ZST00gdGVzdF9hYnNvcmJfYmFzaWMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBE RUZJTkUgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFy dCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg IDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA0CisgIDIgfCB7QX0gICB8ICAgICAg ICAgICAyIHwgICAgICAgICA0CisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICA0 CisgIDQgfCB7QX0gICB8ICAgICAgICAgICA0IHwgICAgICAgICA0CisgIDUgfCB7Qn0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCistLSBQYXR0ZXJuIEErIGlzIGFic29y YmFibGUgKHVuYm91bmRlZCBmaXJzdCBlbGVtZW50LCBvbmx5IG9uZSB1bmJvdW5kZWQpCistLSA0 IG1hdGNoZXM6ICgxLTQsIDItNCwgMy00LCA0LTQpCistLSBUZXN0IGFic29ycHRpb24gMjogQSsg QiBwYXR0ZXJuIC0gYWJzb3JwdGlvbiB3aXRoIGZpeGVkIHN1ZmZpeAorV0lUSCB0ZXN0X2Fic29y Yl9zdWZmaXggQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJS QVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydB J10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnWCddKQor ICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf ZW5kCitGUk9NIHRlc3RfYWJzb3JiX3N1ZmZpeAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisg ICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAn QicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2Vu ZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8 ICAgICAgICAgICAxIHwgICAgICAgICA0CisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAg ICAgICA0CisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICA0CisgIDQgfCB7Qn0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7WH0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisoNSByb3dzKQorCistLSBQYXR0ZXJuIEErIEIgaXMgYWJzb3JiYWJsZSAoQSsg dW5ib3VuZGVkIGZpcnN0LCBCIGJvdW5kZWQgc3VmZml4KQorLS0gQWxsIHBvdGVudGlhbCBtYXRj aGVzIGVuZCBhdCBzYW1lIHJvdyAocm93IDQgd2l0aCBCKQorLS0gMyBtYXRjaGVzOiAoMS00LCAy LTQsIDMtNCkKKy0tIFRlc3QgYWJzb3JwdGlvbiAzOiBQZXItYnJhbmNoIGFic29ycHRpb24gd2l0 aCBBTFQgKEIrIEMgfCBCKyBEKQorV0lUSCB0ZXN0X2Fic29yYl9hbHQgQVMgKAorICAgIFNFTEVD VCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InXSksCisgICAgICAgICgyLCBB UlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlb J0QnXSksCisgICAgICAgICg1LCBBUlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCisp CitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0 LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiX2Fs dAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBO RVhUIFJPVworICAgIFBBVFRFUk4gKEIrIEMgfCBCKyBEKQorICAgIERFRklORQorICAgICAgICBC IEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFy dCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg IDEgfCB7Qn0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA0CisgIDIgfCB7Qn0gICB8ICAgICAg ICAgICAyIHwgICAgICAgICA0CisgIDMgfCB7Qn0gICB8ICAgICAgICAgICAzIHwgICAgICAgICA0 CisgIDQgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7WH0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCistLSBCb3RoIGJyYW5jaGVzIEIrIEMg YW5kIEIrIEQgYXJlIGFic29yYmFibGUgKEIrIHVuYm91bmRlZCBmaXJzdCkKKy0tIEIrIEQgYnJh bmNoIG1hdGNoZXM6IDMgbWF0Y2hlcyAoMS00LCAyLTQsIDMtNCkKKy0tIFRlc3QgYWJzb3JwdGlv biA0OiBOb24tYWJzb3JiYWJsZSBwYXR0ZXJuIChBIEIrIC0gdW5ib3VuZGVkIG5vdCBmaXJzdCkK K1dJVEggdGVzdF9ub19hYnNvcmIgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAg KDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBB UlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfbm9fYWJzb3JiCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAo QSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwg bWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8 IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDQKKyAgMiB8IHtCfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgMyB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg NCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtYfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIFBhdHRlcm4gQSBCKyBpcyBOT1QgYWJz b3JiYWJsZSAoQSBib3VuZGVkIGZpcnN0LCBCKyB1bmJvdW5kZWQgYnV0IG5vdCBmaXJzdCkKKy0t IE9ubHkgUm93IDEgY2FuIHN0YXJ0IG1hdGNoIChvbmx5IHJvdyB3aXRoIEEpLCBzbyBvbmx5IG9u ZSBtYXRjaDogMS00CistLSBUZXN0IGFic29ycHRpb24gNTogR1JPVVAgbWVyZ2UgZW5hYmxlcyBh YnNvcnB0aW9uCitXSVRIIHRlc3RfYWJzb3JiX2dyb3VwIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0In XSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAor ICAgICAgICAoNSwgQVJSQVlbJ0EnXSksCisgICAgICAgICg2LCBBUlJBWVsnQiddKSwKKyAgICAg ICAgKDcsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcmJfZ3JvdXAKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAg ICBQQVRURVJOICgoQSBCKSAoQSBCKSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxh Z3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA2CisgIDIg fCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAgICAgICAg ICAzIHwgICAgICAgICA2CisgIDQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDUgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDYgfCB7Qn0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDcgfCB7WH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisoNyByb3dzKQorCistLSBQYXR0ZXJuIG9wdGltaXplZDogKEEgQikgKEEgQikrIC0+IChBIEIp ezIsfQorLS0gMiBtYXRjaGVzOiAxLTYgKDMgcmVwcyksIDMtNiAoMiByZXBzKQorLS0gVGVzdCBh YnNvcnB0aW9uIDY6IE11bHRpcGxlIHVuYm91bmRlZCAtIGZpcnN0IGVsZW1lbnQgdW5ib3VuZGVk IGVuYWJsZXMgYWJzb3JwdGlvbgorV0lUSCB0ZXN0X211bHRpX3VuYm91bmRlZCBBUyAoCisgICAg U0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCBB UlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFn cykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9tdWx0 aV91bmJvdW5kZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBCKykKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykK Kyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAg ICAgICAgIDQKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQKKyAgMyB8IHtC fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAgNSB8IHtYfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJv d3MpCisKKy0tIDIgbWF0Y2hlczogMS00LCAyLTQgKHNhbWUgZW5kcG9pbnQgNCkKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBKYWNvYidzIFJQUiBQ YXR0ZXJucyAoZnJvbSBqYWNvYiBicmFuY2gpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdDogQT8gKG9wdGlvbmFsLCBncmVlZHkpCitXSVRI IGphY29iX29wdGlvbmFsIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAg KDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ1gnXSkKKyAgICApIEFTIHQoaWQs IGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSBqYWNv Yl9vcHRpb25hbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQT8pCisgICAgREVGSU5FIEEgQVMgJ0En ID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQg CistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAg ICAgICAgICAgMSB8ICAgICAgICAgMQorICAyIHwge1h9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorKDIgcm93cykKKworLS0gRXhwZWN0ZWQ6IDEtMSAobWF0Y2hlcyBBKQorLS0gVGVzdDog QXsyfSAoZXhhY3QgY291bnQpCitXSVRIIGphY29iX2V4YWN0IEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlb J0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydYJ10p CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9lbmQKK0ZST00gamFjb2JfZXhhY3QKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7Mn0pCisgICAg REVGSU5FIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3Rh cnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor ICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMgorICAyIHwge0F9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorICA0IHwge1h9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDQgcm93cykKKworLS0g RXhwZWN0ZWQ6IDEtMgorLS0gVGVzdDogQXsxLDN9IChib3VuZGVkIHJhbmdlLCBncmVlZHkpCitX SVRIIGphY29iX2JvdW5kZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAg ICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMs IEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJB WVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfZW5kCitGUk9NIGphY29iX2JvdW5kZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7 MSwzfSkKKyAgICBERUZJTkUgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3Mg fCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAzCisgIDIgfCB7 QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgIDQgfCB7QX0gICB8ICAgICAgICAgICA0IHwgICAgICAgICA0CisgIDUg fCB7WH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCistLSBFeHBlY3Rl ZDogMS0zIChncmVlZHkgdGFrZXMgbWF4KSwgdGhlbiA0LTQKKy0tIFRlc3Q6IEEgfCBCIChzaW1w bGUgYWx0ZXJuYXRpb24pCitXSVRIIGphY29iX3NpbXBsZV9hbHQgQVMgKAorICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJB WVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykK KykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3Rh cnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gamFjb2Jfc2ltcGxl X2FsdAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSB8IEIpCisgICAgREVGSU5FCisgICAgICAgIEEg QVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOwor IGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAg ICAxCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAyIHwgICAgICAgICAyCisgIDMgfCB7WH0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisoMyByb3dzKQorCistLSBFeHBlY3RlZDogMS0xIChB KSwgMi0yIChCKQorLS0gVGVzdDogQSB8IEIgfCBDICh0aHJlZS13YXkgYWx0ZXJuYXRpb24pCitX SVRIIGphY29iX3RocmVlX2FsdCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAg ICAgICgxLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDIsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0 KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00g amFjb2JfdGhyZWVfYWx0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIHwgQiB8IEMpCisgICAgREVG SU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBB TlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFn cyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyAgMSB8IHtCfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEKKyAgMiB8 IHtYfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKygyIHJvd3MpCisKKy0tIEV4cGVjdGVk OiAxLTEgKEIpCistLSBUZXN0OiBBIEIgQyAoY29uY2F0ZW5hdGlvbikKK1dJVEggamFjb2JfY29u Y2F0IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydB J10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQyddKSwK KyAgICAgICAgKDQsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gamFjb2JfY29uY2F0CitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBIEIgQykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0Mn ID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQg CistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAg ICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICAzIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge1h9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDQgcm93cykKKworLS0gRXhwZWN0ZWQ6IDEtMwor LS0gVGVzdDogQSBCPyBDIChvcHRpb25hbCBtaWRkbGUpCitXSVRIIGphY29iX29wdGlvbmFsX21p ZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDIsIEFSUkFZWydDJ10pLAorICAgICAgICAoMywgQVJSQVlbJ1gnXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2Vu ZAorRlJPTSBqYWNvYl9vcHRpb25hbF9taWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQj8gQykK KyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFT ICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKyBp ZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAg MgorICAyIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge1h9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorKDMgcm93cykKKworLS0gRXhwZWN0ZWQ6IDEtMiAoQSBD LCBCIHNraXBwZWQpCistLSBUZXN0OiAoQSBCKXsyfSAobmVzdGVkIGdyb3VwIHdpdGggcXVhbnRp ZmllcikKK1dJVEggamFjb2JfbmVzdGVkX2dyb3VwIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChW QUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSks CisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAg ICAgICAoNSwgQVJSQVlbJ1gnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSBqYWNvYl9uZXN0ZWRfZ3JvdXAKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKChBIEIpezJ9KQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9 IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZs YWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNAorICAy IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICA1IHwge1h9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gRXhw ZWN0ZWQ6IDEtNCAoQSBCIEEgQikKKy0tIFRlc3Q6IChBKXszfSAocXVhbnRpZmllciBvbiBncm91 cGVkIHNpbmdsZSBlbGVtZW50KQorV0lUSCBqYWNvYl9ncm91cF9xdWFudCBBUyAoCisgICAgU0VM RUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIs IEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJB WVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfZW5kCitGUk9NIGphY29iX2dyb3VwX3F1YW50CitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO ICgoQSl7M30pCisgICAgREVGSU5FIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZs YWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMworICAy IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorICA0IHwge1h9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor KDQgcm93cykKKworLS0gRXhwZWN0ZWQ6IDEtMworLS0gVGVzdDogQSBCIEMgfCBBIEIgQyBEIEUg KGxleGljYWwgb3JkZXIgLSBmaXJzdCBhbHQgd2lucykKK1dJVEggamFjb2JfbGV4X2ZpcnN0IEFT ICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAor ICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQyddKSwKKyAgICAg ICAgKDQsIEFSUkFZWydEJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0UnXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSBq YWNvYl9sZXhfZmlyc3QKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDIHwgQSBCIEMgRCBFKQor ICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMg J0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBEIEFTICdEJyA9IEFOWShmbGFncyksCisgICAgICAgIEUgQVMgJ0UnID0gQU5ZKGZsYWdzKQor KTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAg ICAgICAgMworICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0N9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0R9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorICA1IHwge0V9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93 cykKKworLS0gRXhwZWN0ZWQ6IDEtMyAoQSBCIEMgd2lucyBieSBsZXhpY2FsIG9yZGVyKQorLS0g VGVzdDogQSBCIEMgRCBFIHwgQSBCIEMgKGxleGljYWwgb3JkZXIgLSBsb25nZXIgZmlyc3Qgd2lu cykKK1dJVEggamFjb2JfbGV4X2xvbmcgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwor ICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAg ICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0QnXSksCisgICAgICAgICg1 LCBBUlJBWVsnRSddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdz LCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIGphY29iX2xleF9sb25nCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBIEIgQyBEIEUgfCBBIEIgQykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBB TlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMg J0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBFIEFTICdFJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwg bWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8 IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDUKKyAgMiB8IHtCfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgMyB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg NCB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtFfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIEV4cGVjdGVkOiAxLTUgKEEgQiBDIEQg RSB3aW5zIGJ5IGxleGljYWwgb3JkZXIpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gQWx0ZXJuYXRpb24gd2l0aCBxdWFudGlmaWVycyAoQlVHIGNh c2VzIGZyb20gSmFjb2IncyB0ZXN0cykKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBUZXN0OiAoQSB8IEIpKyBDIC0gYWx0ZXJuYXRpb24gaW5zaWRl IHF1YW50aWZpZWQgZ3JvdXAgZm9sbG93ZWQgYnkgQworV0lUSCBqYWNvYl9hbHRfcXVhbnQgQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAg ICAoNCwgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBm bGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSBqYWNvYl9hbHRfcXVhbnQKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKChBIHwgQikrIEMpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdD JyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5k IAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwg ICAgICAgICAgIDEgfCAgICAgICAgIDQKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtDfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisKKy0tIEV4cGVjdGVkOiAxLTQg KEEgQiBBIEMpCistLSBUZXN0OiAoKEEgfCBCKSBDKSsgLSBhbHRlcm5hdGlvbiBpbnNpZGUgZ3Jv dXAgd2l0aCBvdXRlciBxdWFudGlmaWVyCitXSVRIIGphY29iX2FsdF9ncm91cCBBUyAoCisgICAg U0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDIsIEFSUkFZWydDJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCBB UlJBWVsnQyddKSwKKyAgICAgICAgKDUsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFn cykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gamFjb2JfYWx0 X2dyb3VwCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoKEEgfCBCKSBDKSspCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxh Z3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1h dGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDQKKyAgMiB8IHtDfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtCfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgNCB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtY fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIEV4cGVjdGVkOiAx LTQgKEEgQyBCIEMpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gUkVMVUNUQU5UIHF1YW50aWZpZXJzIChub3QgeWV0IHN1cHBvcnRlZCkKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0OiBBKz8g QiAocmVsdWN0YW50KSAtIHBhcnNlciByZWplY3RzIHdpdGggRVJST1IKK1dJVEggamFjb2JfcmVs dWN0YW50IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZ WydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NF TEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxh c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gamFjb2JfcmVsdWN0YW50CitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBKz8gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScg PSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CitFUlJPUjog IHJlbHVjdGFudCBxdWFudGlmaWVycyBhcmUgbm90IHlldCBzdXBwb3J0ZWQKK0xJTkUgMTU6ICAg ICBQQVRURVJOIChBKz8gQikKKyAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEV4cGVjdGVk OiBFUlJPUiAocmVsdWN0YW50IHF1YW50aWZpZXJzIG5vdCB5ZXQgc3VwcG9ydGVkKQorLS0gVGVz dDogQXsxLDN9PyBCIChyZWx1Y3RhbnQgYm91bmRlZCkgLSBwYXJzZXIgcmVqZWN0cyB3aXRoIEVS Uk9SCitXSVRIIGphY29iX3JlbHVjdGFudF9ib3VuZGVkIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0En XSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pCisg ICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9l bmQKK0ZST00gamFjb2JfcmVsdWN0YW50X2JvdW5kZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7 MSwzfT8gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CitFUlJPUjogIHJlbHVjdGFudCBxdWFudGlm aWVycyBhcmUgbm90IHlldCBzdXBwb3J0ZWQKK0xJTkUgMTU6ICAgICBQQVRURVJOIChBezEsM30/ IEIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRXhwZWN0ZWQ6IEVSUk9SIChy ZWx1Y3RhbnQgcXVhbnRpZmllcnMgbm90IHlldCBzdXBwb3J0ZWQpCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gTmVzdGVkIHF1YW50aWZpZXJzIChw YXRob2xvZ2ljYWwgcGF0dGVybnMpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gVGhlc2UgcGF0dGVybnMgcHJldmlvdXNseSBjYXVzZWQgc2VnZmF1 bHQgb3IgaW5maW5pdGUgbG9vcC4KKy0tIE5vdyB0aGV5IGFyZSBlaXRoZXIgb3B0aW1pemVkIGF0 IGNvbXBpbGUgdGltZSBvciBoYW5kbGVkIHNhZmVseSBhdCBydW50aW1lLgorLS0gVGVzdDogKEEq KSogLSBuZXN0ZWQgdW5ib3VuZGVkIHF1YW50aWZpZXJzIChvcHRpbWl6ZWQgdG8gQSopCitTRUxF Q1QgdiwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gKFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMo MSwgNSkgdikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoKEEqKSopCisgICAgREVGSU5FIEEgQVMgVFJVRQor KTsKKyB2IHwgYyAKKy0tLSstLS0KKyAxIHwgNQorIDIgfCAwCisgMyB8IDAKKyA0IHwgMAorIDUg fCAwCisoNSByb3dzKQorCistLSBUZXN0OiAoQSopKyAtIGlubmVyIG51bGxhYmxlLCBvdXRlciBy ZXF1aXJlcyBvbmUgKG9wdGltaXplZCB0byBBKikKK1NFTEVDVCB2LCBjb3VudCgqKSBPVkVSIHcg QVMgYworRlJPTSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1KSB2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIElOSVRJQUwKKyAgICBQQVRU RVJOICgoQSopKykKKyAgICBERUZJTkUgQSBBUyBUUlVFCispOworIHYgfCBjIAorLS0tKy0tLQor IDEgfCA1CisgMiB8IDAKKyAzIHwgMAorIDQgfCAwCisgNSB8IDAKKyg1IHJvd3MpCisKKy0tIFRl c3Q6IChBKykqIC0gb3V0ZXIgbnVsbGFibGUgKG9wdGltaXplZCB0byBBKikKK1NFTEVDVCB2LCBj b3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1KSB2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIElO SVRJQUwKKyAgICBQQVRURVJOICgoQSspKikKKyAgICBERUZJTkUgQSBBUyBUUlVFCispOworIHYg fCBjIAorLS0tKy0tLQorIDEgfCA1CisgMiB8IDAKKyAzIHwgMAorIDQgfCAwCisgNSB8IDAKKyg1 IHJvd3MpCisKKy0tIFRlc3Q6IChBKykrIC0gYm90aCByZXF1aXJlIG1hdGNoIChvcHRpbWl6ZWQg dG8gQSspCitTRUxFQ1QgdiwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gKFNFTEVDVCBnZW5l cmF0ZV9zZXJpZXMoMSwgNSkgdikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoKEErKSspCisgICAgREVGSU5F IEEgQVMgVFJVRQorKTsKKyB2IHwgYyAKKy0tLSstLS0KKyAxIHwgNQorIDIgfCAwCisgMyB8IDAK KyA0IHwgMAorIDUgfCAwCisoNSByb3dzKQorCistLSBUZXN0OiAoQSogQiopKiAtIGNvbXBsZXgg bmVzdGVkIHBhdHRlcm4gKHJ1bnRpbWUgcHJvdGVjdGlvbikKKy0tIE5vdCBvcHRpbWl6ZWQgYnV0 IGhhbmRsZWQgc2FmZWx5IGJ5IGVtcHR5LW1hdGNoIGxvb3AgcHJldmVudGlvbgorU0VMRUNUIHYs IGNvdW50KCopIE9WRVIgdyBBUyBjCitGUk9NIChTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDUp IHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg SU5JVElBTAorICAgIFBBVFRFUk4gKChBKiBCKikqKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIg QVMgVFJVRQorKTsKKyB2IHwgYyAKKy0tLSstLS0KKyAxIHwgNQorIDIgfCAwCisgMyB8IDAKKyA0 IHwgMAorIDUgfCAwCisoNSByb3dzKQorCistLSBUZXN0OiAoKChBKSopKikqICAtIHRyaXBsZSBu ZXN0ZWQgKG9wdGltaXplZCB0aHJvdWdoIHJlY3Vyc2l2ZSBvcHRpbWl6YXRpb24pCitTRUxFQ1Qg diwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gKFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwg MykgdikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBJTklUSUFMCisgICAgUEFUVEVSTiAoKCgoQSkqKSopKikKKyAgICBERUZJTkUgQSBBUyBUUlVF CispOworIHYgfCBjIAorLS0tKy0tLQorIDEgfCAzCisgMiB8IDAKKyAzIHwgMAorKDMgcm93cykK KwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uZWM2N2EwOTllZTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dApAQCAtMCwwICsxLDU1MzggQEAKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gUlBSIEJhc2UgVGVzdHMKKy0tIFRlc3RzIGZvciBSb3cgUGF0dGVybiBSZWNvZ25p dGlvbiAoSVNPL0lFQyAxOTA3NS01OjIwMTYpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tCistLSBQYXJzZXIgTGF5ZXI6 CistLSAgIEtleXdvcmQgVXNhZ2UgVGVzdHMKKy0tICAgREVGSU5FIENsYXVzZSBUZXN0cworLS0g ICBGUkFNRSBPcHRpb25zIFRlc3RzCistLSAgIFBBUlRJVElPTiBCWSArIEZSQU1FIFRlc3RzCist LSAgIFBBVFRFUk4gU3ludGF4IFRlc3RzCistLSAgIFF1YW50aWZpZXJzIFRlc3RzCistLSAgIE5h dmlnYXRpb24gRnVuY3Rpb25zIFRlc3RzCistLSAgIFNLSVAgVE8gLyBJTklUSUFMIFRlc3RzCist LSAgIFNlcmlhbGl6YXRpb24vRGVzZXJpYWxpemF0aW9uIFRlc3RzCistLSAgIEVycm9yIENhc2Vz IFRlc3RzCistLQorLS0gUGxhbm5lciBMYXllcjoKKy0tICAgUGF0dGVybiBPcHRpbWl6YXRpb24g VGVzdHMKKy0tICAgQWJzb3JwdGlvbiBGbGFnIERpc3BsYXkgVGVzdHMKKy0tICAgQWJzb3JwdGlv biBBbmFseXNpcyBUZXN0cworLS0gICBFZGdlIENhc2UgVGVzdHMKKy0tICAgT3B0aW1pemF0aW9u IEZhbGxiYWNrIFRlc3RzCistLSAgIFBsYW5uZXIgSW50ZWdyYXRpb24gVGVzdHMKKy0tICAgU3Vi cXVlcnkgYW5kIENURSBUZXN0cworLS0gICBKT0lOIFRlc3RzCistLSAgIENvbXBsZXggRXhwcmVz c2lvbiBUZXN0cworLS0gICBTZXQgT3BlcmF0aW9ucyBUZXN0cworLS0gICBTb3J0aW5nIGFuZCBH cm91cGluZyBUZXN0cworLS0gICBTdHJlc3MgVGVzdHMKKy0tICAgRXJyb3IgTGltaXQgVGVzdHMK Ky0tCistLSBDb250cmlidXRlZCBUZXN0czoKKy0tICAgSmFjb2IncyBQYXR0ZXJucworLS0gICBQ YXRob2xvZ2ljYWwgUGF0dGVybnMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBX QVJOSU5HOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBLZXl3b3JkIFVzYWdlIFRlc3RzCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFJQUiBr ZXl3b3JkcyBhcyBjb2x1bW4gbmFtZXMKKy0tIEtleXdvcmRzOiBkZWZpbmUsIGluaXRpYWwsIHBh c3QsIHBhdHRlcm4sIHNlZWsKK0NSRUFURSBUQUJMRSBycHJfa2V5d29yZHMgKAorICAgIGlkIElO VCwKKyAgICBkZWZpbmUgSU5ULCAgICAgIC0tIERFRklORSBrZXl3b3JkCisgICAgaW5pdGlhbCBJ TlQsICAgICAtLSBJTklUSUFMIGtleXdvcmQKKyAgICBwYXN0IElOVCwgICAgICAgIC0tIFBBU1Qg a2V5d29yZAorICAgIHBhdHRlcm4gSU5ULCAgICAgLS0gUEFUVEVSTiBrZXl3b3JkCisgICAgc2Vl ayBJTlQsICAgICAgICAtLSBTRUVLIGtleXdvcmQKKyAgICBza2lwIElOVCAgICAgICAgIC0tIFNL SVAga2V5d29yZCAocHJlLWV4aXN0aW5nKQorKTsKK0lOU0VSVCBJTlRPIHJwcl9rZXl3b3JkcyBW QUxVRVMgKDEsIDEwLCAyMCwgMzAsIDQwLCA1MCwgNjApOworU0VMRUNUIGlkLCBkZWZpbmUsIGlu aXRpYWwsIHBhc3QsIHBhdHRlcm4sIHNlZWssIHNraXAKK0ZST00gcnByX2tleXdvcmRzCitPUkRF UiBCWSBpZDsKKyBpZCB8IGRlZmluZSB8IGluaXRpYWwgfCBwYXN0IHwgcGF0dGVybiB8IHNlZWsg fCBza2lwIAorLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0r LS0tLS0tCisgIDEgfCAgICAgMTAgfCAgICAgIDIwIHwgICAzMCB8ICAgICAgNDAgfCAgIDUwIHwg ICA2MAorKDEgcm93KQorCitEUk9QIFRBQkxFIHJwcl9rZXl3b3JkczsKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gREVG SU5FIENsYXVzZSBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTaW1wbGUgY29sdW1uIHJlZmVyZW5jZXMKK0NS RUFURSBUQUJMRSBzdG9ja19wcmljZSAoCisgICAgZHQgREFURSwKKyAgICBzeW1ib2wgVEVYVCwK KyAgICBwcmljZSBOVU1FUklDLAorICAgIHZvbHVtZSBJTlQKKyk7CitJTlNFUlQgSU5UTyBzdG9j a19wcmljZSBWQUxVRVMKKyAgICAoJzIwMjQtMDEtMDEnLCAnQUFQTCcsIDE1MCwgMTAwMCksCisg ICAgKCcyMDI0LTAxLTAyJywgJ0FBUEwnLCAxNTUsIDEyMDApLAorICAgICgnMjAyNC0wMS0wMycs ICdBQVBMJywgMTUyLCA5MDApLAorICAgICgnMjAyNC0wMS0wNCcsICdBQVBMJywgMTYwLCAxNTAw KSwKKyAgICAoJzIwMjQtMDEtMDUnLCAnQUFQTCcsIDE1OCwgMTEwMCk7CistLSBTaW1wbGUgY29s dW1uIHJlZmVyZW5jZQorU0VMRUNUIGR0LCBwcmljZSwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAor RlJPTSBzdG9ja19wcmljZQorV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBzeW1ib2wK KyAgICBPUkRFUiBCWSBkdAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKFVQKykKKyAgICBERUZJTkUgVVAgQVMgcHJpY2Ug PiAxNTAKKykKK09SREVSIEJZIGR0OworICAgICBkdCAgICAgfCBwcmljZSB8IGNudCAKKy0tLS0t LS0tLS0tLSstLS0tLS0tKy0tLS0tCisgMDEtMDEtMjAyNCB8ICAgMTUwIHwgICAwCisgMDEtMDIt MjAyNCB8ICAgMTU1IHwgICA0CisgMDEtMDMtMjAyNCB8ICAgMTUyIHwgICAwCisgMDEtMDQtMjAy NCB8ICAgMTYwIHwgICAwCisgMDEtMDUtMjAyNCB8ICAgMTU4IHwgICAwCisoNSByb3dzKQorCist LSBNdWx0aXBsZSBjb2x1bW4gcmVmZXJlbmNlcworU0VMRUNUIGR0LCBwcmljZSwgdm9sdW1lLCBD T1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHN0b2NrX3ByaWNlCitXSU5ET1cgdyBBUyAoCisg ICAgUEFSVElUSU9OIEJZIHN5bWJvbAorICAgIE9SREVSIEJZIGR0CisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoR09PRCsp CisgICAgREVGSU5FIEdPT0QgQVMgcHJpY2UgPiAxNTAgQU5EIHZvbHVtZSA+IDEwMDAKKykKK09S REVSIEJZIGR0OworICAgICBkdCAgICAgfCBwcmljZSB8IHZvbHVtZSB8IGNudCAKKy0tLS0tLS0t LS0tLSstLS0tLS0tKy0tLS0tLS0tKy0tLS0tCisgMDEtMDEtMjAyNCB8ICAgMTUwIHwgICAxMDAw IHwgICAwCisgMDEtMDItMjAyNCB8ICAgMTU1IHwgICAxMjAwIHwgICAxCisgMDEtMDMtMjAyNCB8 ICAgMTUyIHwgICAgOTAwIHwgICAwCisgMDEtMDQtMjAyNCB8ICAgMTYwIHwgICAxNTAwIHwgICAy CisgMDEtMDUtMjAyNCB8ICAgMTU4IHwgICAxMTAwIHwgICAwCisoNSByb3dzKQorCistLSBFeHBy ZXNzaW9uIGluIERFRklORQorU0VMRUNUIGR0LCBwcmljZSwgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAorRlJPTSBzdG9ja19wcmljZQorV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBzeW1i b2wKKyAgICBPUkRFUiBCWSBkdAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEhJR0grKQorICAgIERFRklORSBISUdIIEFT IHByaWNlICogMS4xID4gMTY1CispCitPUkRFUiBCWSBkdDsKKyAgICAgZHQgICAgIHwgcHJpY2Ug fCBjbnQgCistLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLQorIDAxLTAxLTIwMjQgfCAgIDE1MCB8 ICAgMAorIDAxLTAyLTIwMjQgfCAgIDE1NSB8ICAgNAorIDAxLTAzLTIwMjQgfCAgIDE1MiB8ICAg MAorIDAxLTA0LTIwMjQgfCAgIDE2MCB8ICAgMAorIDAxLTA1LTIwMjQgfCAgIDE1OCB8ICAgMAor KDUgcm93cykKKworLS0gQXJpdGhtZXRpYyBhbmQgZnVuY3Rpb25zCitTRUxFQ1QgZHQsIHByaWNl LCB2b2x1bWUsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gc3RvY2tfcHJpY2UKK1dJTkRP VyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgc3ltYm9sCisgICAgT1JERVIgQlkgZHQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChDQUxDKykKKyAgICBERUZJTkUgQ0FMQyBBUyAocHJpY2UgKyB2b2x1bWUgLyAxMDApID4g MTYwCispCitPUkRFUiBCWSBkdDsKKyAgICAgZHQgICAgIHwgcHJpY2UgfCB2b2x1bWUgfCBjbnQg CistLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLSstLS0tLQorIDAxLTAxLTIwMjQgfCAgIDE1 MCB8ICAgMTAwMCB8ICAgMAorIDAxLTAyLTIwMjQgfCAgIDE1NSB8ICAgMTIwMCB8ICAgNAorIDAx LTAzLTIwMjQgfCAgIDE1MiB8ICAgIDkwMCB8ICAgMAorIDAxLTA0LTIwMjQgfCAgIDE2MCB8ICAg MTUwMCB8ICAgMAorIDAxLTA1LTIwMjQgfCAgIDE1OCB8ICAgMTEwMCB8ICAgMAorKDUgcm93cykK KworRFJPUCBUQUJMRSBzdG9ja19wcmljZTsKKy0tIEF1dG8tZ2VuZXJhdGVkIERFRklORQorQ1JF QVRFIFRBQkxFIHJwcl9hdXRvIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX2F1 dG8gVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCksICg0LCAxNSk7CistLSBPbmUgdmFy aWFibGUgdW5kZWZpbmVkIChCIGF1dG8tZ2VuZXJhdGVkIGFzICJCIElTIFRSVUUiKQorU0VMRUNU IGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2F1dG8KK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErIEIqKQorICAgIERFRklORSBBIEFT IHZhbCA+IDE1CispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0r LS0tLS0KKyAgMSB8ICAxMCB8ICAgMAorICAyIHwgIDIwIHwgICAzCisgIDMgfCAgMzAgfCAgIDAK KyAgNCB8ICAxNSB8ICAgMAorKDQgcm93cykKKworLS0gTXVsdGlwbGUgdW5kZWZpbmVkIHZhcmlh YmxlcworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2F1 dG8KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQiBDKQorICAg IERFRklORSBBIEFTIHZhbCA+IDAKKyAgICAtLSBCIGFuZCBDIGF1dG8tZ2VuZXJhdGVkIGFzICJC IElTIFRSVUUiLCAiQyBJUyBUUlVFIgorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQg CistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDMKKyAgMiB8ICAyMCB8ICAgMAorICAz IHwgIDMwIHwgICAwCisgIDQgfCAgMTUgfCAgIDAKKyg0IHJvd3MpCisKKy0tIEFsbCB2YXJpYWJs ZXMgZGVmaW5lZCBleHBsaWNpdGx5CitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFz IGNudAorRlJPTSBycHJfYXV0bworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoWCBZIFopCisgICAgREVGSU5FCisgICAgICAgIFggQVMgdmFsID4gMTAsCisgICAgICAg IFkgQVMgdmFsID4gMjAsCisgICAgICAgIFogQVMgdmFsIDwgMjAKKykKK09SREVSIEJZIGlkOwor IGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAwCisgIDIg fCAgMjAgfCAgIDMKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDE1IHwgICAwCisoNCByb3dzKQor CitEUk9QIFRBQkxFIHJwcl9hdXRvOworLS0gRHVwbGljYXRlIHZhcmlhYmxlIG5hbWVzCitDUkVB VEUgVEFCTEUgcnByX2R1cCAoaWQgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9kdXAgVkFMVUVTICgx KSwgKDIpOworLS0gRHVwbGljYXRlIERFRklORSBlbnRyaWVzCitTRUxFQ1QgQ09VTlQoKikgT1ZF UiB3CitGUk9NIHJwcl9kdXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIGlkID4gMCwgQSBBUyBpZCA8IDEwCispOworRVJST1I6 ICByb3cgcGF0dGVybiBkZWZpbml0aW9uIHZhcmlhYmxlIG5hbWUgImEiIGFwcGVhcnMgbW9yZSB0 aGFuIG9uY2UgaW4gREVGSU5FIGNsYXVzZQorTElORSA3OiAgICAgREVGSU5FIEEgQVMgaWQgPiAw LCBBIEFTIGlkIDwgMTAKKyAgICAgICAgICAgICAgICAgICBeCistLSBFeHBlY3RlZDogRVJST1I6 IHJvdyBwYXR0ZXJuIGRlZmluaXRpb24gdmFyaWFibGUgbmFtZSAiYSIgYXBwZWFycyBtb3JlIHRo YW4gb25jZSBpbiBERUZJTkUgY2xhdXNlCitEUk9QIFRBQkxFIHJwcl9kdXA7CistLSBCb29sZWFu IGNvZXJjaW9uCitDUkVBVEUgVEFCTEUgcnByX2Jvb2wgKGlkIElOVCwgZmxhZyBCT09MRUFOKTsK K0lOU0VSVCBJTlRPIHJwcl9ib29sIFZBTFVFUyAoMSwgdHJ1ZSksICgyLCBmYWxzZSk7CistLSBO b24tYm9vbGVhbiBleHByZXNzaW9uCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9i b29sCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBE RUZJTkUgQSBBUyBpZAorKTsKK0VSUk9SOiAgYXJndW1lbnQgb2YgREVGSU5FIG11c3QgYmUgdHlw ZSBib29sZWFuLCBub3QgdHlwZSBpbnRlZ2VyCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBpZAor ICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRXhwZWN0ZWQ6IEVSUk9SOiBhcmd1bWVudCBv ZiBERUZJTkUgbXVzdCBiZSB0eXBlIGJvb2xlYW4KKy0tIEJvb2xlYW4gY29sdW1uIHJlZmVyZW5j ZQorU0VMRUNUIGlkLCBmbGFnLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9ib29s CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChUKykKKyAgICBERUZJ TkUgVCBBUyBmbGFnCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IGZsYWcgfCBjbnQgCistLS0tKy0t LS0tLSstLS0tLQorICAxIHwgdCAgICB8ICAgMQorICAyIHwgZiAgICB8ICAgMAorKDIgcm93cykK KworLS0gTlVMTDo6Ym9vbGVhbgorU0VMRUNUIGlkLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitG Uk9NIHJwcl9ib29sCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChO KykKKyAgICBERUZJTkUgTiBBUyBOVUxMOjpib29sZWFuCispCitPUkRFUiBCWSBpZDsKKyBpZCB8 IGNudCAKKy0tLS0rLS0tLS0KKyAgMSB8ICAgMAorICAyIHwgICAwCisoMiByb3dzKQorCitEUk9Q IFRBQkxFIHJwcl9ib29sOworLS0gQ29tcGxleCBleHByZXNzaW9ucworQ1JFQVRFIFRBQkxFIHJw cl9jb21wbGV4IChpZCBJTlQsIHZhbDEgSU5ULCB2YWwyIElOVCk7CitJTlNFUlQgSU5UTyBycHJf Y29tcGxleCBWQUxVRVMgKDEsIDEwLCAyMCksICgyLCAxNSwgMjUpLCAoMywgMjAsIDMwKTsKKy0t IENBU0UgZXhwcmVzc2lvbgorU0VMRUNUIGlkLCB2YWwxLCB2YWwyLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CitGUk9NIHJwcl9jb21wbGV4CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChDKykKKyAgICBERUZJTkUgQyBBUyBDQVNFIFdIRU4gdmFsMSA+IDEwIFRIRU4g dmFsMiA+IDIwIEVMU0UgZmFsc2UgRU5ECispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbDEgfCB2 YWwyIHwgY250IAorLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tCisgIDEgfCAgIDEwIHwgICAyMCB8 ICAgMAorICAyIHwgICAxNSB8ICAgMjUgfCAgIDIKKyAgMyB8ICAgMjAgfCAgIDMwIHwgICAwCiso MyByb3dzKQorCitEUk9QIFRBQkxFIHJwcl9jb21wbGV4OworLS0gUGF0dGVybiB2YXJpYWJsZSBu b3QgaW4gUEFUVEVSTiAoc2hvdWxkIGJlIGlnbm9yZWQpCitDUkVBVEUgVEFCTEUgcnByX3VudXNl ZCAoaWQgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl91bnVzZWQgVkFMVUVTICgxKSwgKDIpOworLS0g RXh0cmEgREVGSU5FIHZhcmlhYmxlCitTRUxFQ1QgaWQsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK K0ZST00gcnByX3VudXNlZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSspCisgICAgREVGSU5FIEEgQVMgaWQgPiAwLCBCIEFTIGlkID4gNSAgLS0gQiBub3QgaW4g cGF0dGVybgorKQorT1JERVIgQlkgaWQ7CisgaWQgfCBjbnQgCistLS0tKy0tLS0tCisgIDEgfCAg IDIKKyAgMiB8ICAgMAorKDIgcm93cykKKworRFJPUCBUQUJMRSBycHJfdW51c2VkOworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBGUkFNRSBPcHRpb25zIFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBUQUJMRSBycHJfZnJhbWUg KGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfZnJhbWUgVkFMVUVTCisgICAgKDEs IDEwKSwgKDIsIDEwKSwgKDMsIDEwKSwgIC0tIFNhbWUgdmFsOiAxMAorICAgICg0LCAyMCksICg1 LCAyMCksICAgICAgICAgICAtLSBTYW1lIHZhbDogMjAKKyAgICAoNiwgMzApOworLS0gVmFsaWQg ZnJhbWUgb3B0aW9ucworLS0gUk9XUzogY291bnRzIHBoeXNpY2FsIHJvd3MgKDEgRk9MTE9XSU5H ID0gbmV4dCAxIHBoeXNpY2FsIHJvdykKKy0tIEV4cGVjdGVkIHJlc3VsdDogRWFjaCByb3cgY2Fu IHNlZSAxIHBoeXNpY2FsIHJvdyBhaGVhZAorLS0gaWQ9MSwyLDMgKHZhbD0xMCk6IGNhbiBzZWUg bmV4dCByb3cgLT4gY250PTIKKy0tIGlkPTQsNSAodmFsPTIwKTogY2FuIHNlZSBuZXh0IHJvdyAt PiBjbnQ9MgorLS0gaWQ9NiAodmFsPTMwKTogbm8gbmV4dCByb3cgLT4gY250PTEKKy0tIFJlc3Vs dDogWzIsMiwyLDIsMiwxXQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK K0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgdmFsCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEI/KQorICAgIERFRklORSBBIEFTIHZhbCA+ PSAwLCBCIEFTIHZhbCA+PSAwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0t LS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMgorICAyIHwgIDEwIHwgICAyCisgIDMgfCAg MTAgfCAgIDIKKyAgNCB8ICAyMCB8ICAgMgorICA1IHwgIDIwIHwgICAyCisgIDYgfCAgMzAgfCAg IDEKKyg2IHJvd3MpCisKKy0tIEludmFsaWQgZnJhbWUgc3RhcnQgcG9zaXRpb25zCistLSBOb3Qg c3RhcnRpbmcgYXQgQ1VSUkVOVCBST1cKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnBy X2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g VU5CT1VOREVEIFBSRUNFRElORyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIEZSQU1FIG11c3Qgc3Rh cnQgYXQgQ1VSUkVOVCBST1cgd2hlbiByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpcyB1c2VkCitM SU5FIDU6ICAgICBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgICAgICAgICAgXgorREVUQUlMOiAgQ3VycmVudCBmcmFtZSBzdGFydHMg d2l0aCBVTkJPVU5ERUQgUFJFQ0VESU5HLgorSElOVDogIFVzZTogUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCAuLi4KKy0tIEV4cGVjdGVkOiBFUlJPUjogRlJBTUUgbXVzdCBzdGFydCBhdCBj dXJyZW50IHJvdyB3aGVuIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIGlzIHVzZWQKKy0tIEVYQ0xV REUgb3B0aW9ucworLS0gRVhDTFVERSBub3QgcGVybWl0dGVkCitTRUxFQ1QgQ09VTlQoKikgT1ZF UiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgRVhD TFVERSBDVVJSRU5UIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+ IDAKKyk7CitFUlJPUjogIEVYQ0xVREUgb3B0aW9ucyBhcmUgbm90IHBlcm1pdHRlZCB3aGVuIHJv dyBwYXR0ZXJuIHJlY29nbml0aW9uIGlzIHVzZWQKK0xJTkUgNjogICAgIEVYQ0xVREUgQ1VSUkVO VCBST1cKKyAgICAgICAgICAgIF4KK0RFVEFJTDogIEZyYW1lIGRlZmluaXRpb24gaW5jbHVkZXMg RVhDTFVERSBDVVJSRU5UIFJPVy4KK0hJTlQ6ICBSZW1vdmUgdGhlIEVYQ0xVREUgY2xhdXNlIGZy b20gdGhlIHdpbmRvdyBkZWZpbml0aW9uLgorLS0gRXhwZWN0ZWQ6IEVSUk9SOiBFWENMVURFIG9w dGlvbnMgYXJlIG5vdCBwZXJtaXR0ZWQgd2hlbiByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpcyB1 c2VkCistLSBFWENMVURFIEdST1VQIG5vdCBwZXJtaXR0ZWQKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBFWENM VURFIEdST1VQCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsK K0VSUk9SOiAgRVhDTFVERSBvcHRpb25zIGFyZSBub3QgcGVybWl0dGVkIHdoZW4gcm93IHBhdHRl cm4gcmVjb2duaXRpb24gaXMgdXNlZAorTElORSA2OiAgICAgRVhDTFVERSBHUk9VUAorICAgICAg ICAgICAgXgorREVUQUlMOiAgRnJhbWUgZGVmaW5pdGlvbiBpbmNsdWRlcyBFWENMVURFIEdST1VQ LgorSElOVDogIFJlbW92ZSB0aGUgRVhDTFVERSBjbGF1c2UgZnJvbSB0aGUgd2luZG93IGRlZmlu aXRpb24uCistLSBFeHBlY3RlZDogRVJST1I6IEVYQ0xVREUgb3B0aW9ucyBhcmUgbm90IHBlcm1p dHRlZCB3aGVuIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIGlzIHVzZWQKKy0tIEVYQ0xVREUgVElF UyBub3QgcGVybWl0dGVkCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgRVhDTFVERSBUSUVTCisgICAgUEFUVEVS TiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VSUk9SOiAgRVhDTFVERSBvcHRp b25zIGFyZSBub3QgcGVybWl0dGVkIHdoZW4gcm93IHBhdHRlcm4gcmVjb2duaXRpb24gaXMgdXNl ZAorTElORSA2OiAgICAgRVhDTFVERSBUSUVTCisgICAgICAgICAgICBeCitERVRBSUw6ICBGcmFt ZSBkZWZpbml0aW9uIGluY2x1ZGVzIEVYQ0xVREUgVElFUy4KK0hJTlQ6ICBSZW1vdmUgdGhlIEVY Q0xVREUgY2xhdXNlIGZyb20gdGhlIHdpbmRvdyBkZWZpbml0aW9uLgorLS0gRXhwZWN0ZWQ6IEVS Uk9SOiBFWENMVURFIG9wdGlvbnMgYXJlIG5vdCBwZXJtaXR0ZWQgd2hlbiByb3cgcGF0dGVybiBy ZWNvZ25pdGlvbiBpcyB1c2VkCistLSBSQU5HRSBmcmFtZSBub3Qgc3RhcnRpbmcgYXQgQ1VSUkVO VCBST1cKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBSQU5HRSBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJ TkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyB2YWwgPiAwCispOworRVJST1I6ICBGUkFNRSBvcHRpb24gUkFOR0UgaXMgbm90IHBlcm1p dHRlZCB3aGVuIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIGlzIHVzZWQKK0xJTkUgNTogICAgIFJB TkdFIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgVU5CT1VOREVEIEZPTExPV0lOLi4u CisgICAgICAgICAgICBeCitISU5UOiAgVXNlOiBST1dTIGluc3RlYWQKKy0tIEV4cGVjdGVkOiBF UlJPUjogRlJBTUUgb3B0aW9uIFJBTkdFIGlzIG5vdCBwZXJtaXR0ZWQgd2hlbiByb3cgcGF0dGVy biByZWNvZ25pdGlvbiBpcyB1c2VkCistLSBHUk9VUFMgZnJhbWUgbm90IHN0YXJ0aW5nIGF0IENV UlJFTlQgUk9XCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBS RUNFRElORyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERF RklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIEZSQU1FIG9wdGlvbiBHUk9VUCBpcyBub3Qg cGVybWl0dGVkIHdoZW4gcm93IHBhdHRlcm4gcmVjb2duaXRpb24gaXMgdXNlZAorTElORSA1OiAg ICAgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgVU5CT1VOREVEIEZPTExP V0kuLi4KKyAgICAgICAgICAgIF4KK0hJTlQ6ICBVc2U6IFJPV1MgaW5zdGVhZAorLS0gRXhwZWN0 ZWQ6IEVSUk9SOiBGUkFNRSBvcHRpb24gR1JPVVAgaXMgbm90IHBlcm1pdHRlZCB3aGVuIHJvdyBw YXR0ZXJuIHJlY29nbml0aW9uIGlzIHVzZWQKKy0tIFN0YXJ0aW5nIHdpdGggTiBQUkVDRURJTkcK K1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gMSBQUkVDRURJTkcgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisp OworRVJST1I6ICBGUkFNRSBtdXN0IHN0YXJ0IGF0IENVUlJFTlQgUk9XIHdoZW4gcm93IHBhdHRl cm4gcmVjb2duaXRpb24gaXMgdXNlZAorTElORSA1OiAgICAgUk9XUyBCRVRXRUVOIDEgUFJFQ0VE SU5HIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICBeCitERVRBSUw6ICBDdXJy ZW50IGZyYW1lIHN0YXJ0cyB3aXRoIG9mZnNldCBQUkVDRURJTkcuCitISU5UOiAgVXNlOiBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIC4uLgorLS0gRXhwZWN0ZWQ6IEVSUk9SOiBGUkFNRSBt dXN0IHN0YXJ0IGF0IGN1cnJlbnQgcm93IHdoZW4gcm93IHBhdHRlcm4gcmVjb2duaXRpb24gaXMg dXNlZAorLS0gU3RhcnRpbmcgd2l0aCBOIEZPTExPV0lORworU0VMRUNUIENPVU5UKCopIE9WRVIg dworRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiAxIEZPTExPV0lORyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIEZSQU1FIG11c3Qg c3RhcnQgYXQgQ1VSUkVOVCBST1cgd2hlbiByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpcyB1c2Vk CitMSU5FIDU6ICAgICBST1dTIEJFVFdFRU4gMSBGT0xMT1dJTkcgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgICAgIF4KK0RFVEFJTDogIEN1cnJlbnQgZnJhbWUgc3RhcnRzIHdpdGgg b2Zmc2V0IEZPTExPV0lORy4KK0hJTlQ6ICBVc2U6IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgLi4uCistLSBFeHBlY3RlZDogRVJST1I6IEZSQU1FIG11c3Qgc3RhcnQgYXQgY3VycmVudCBy b3cgd2hlbiByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpcyB1c2VkCistLSBGcmFtZSBlbmQgYm91 bmQgZWRnZSBjYXNlcworLS0gRW5kIGJlZm9yZSBzdGFydDogQ1VSUkVOVCBST1cgQU5EIDEgUFJF Q0VESU5HCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAx IFBSRUNFRElORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7 CitFUlJPUjogIGZyYW1lIHN0YXJ0aW5nIGZyb20gY3VycmVudCByb3cgY2Fubm90IGhhdmUgcHJl Y2VkaW5nIHJvd3MKK0xJTkUgNTogICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBQ UkVDRURJTkcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0g RXhwZWN0ZWQ6IEVSUk9SOiBmcmFtZSBzdGFydGluZyBmcm9tIGN1cnJlbnQgcm93IGNhbm5vdCBo YXZlIHByZWNlZGluZyByb3dzCistLSBFbmQgYmVmb3JlIHN0YXJ0OiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIFBSRUNFRElORworU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZnJh bWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIFBSRUNFRElORworICAgIFBBVFRFUk4gKEErKQorICAgIERF RklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIGZyYW1lIGVuZCBjYW5ub3QgYmUgVU5CT1VO REVEIFBSRUNFRElORworTElORSA1OiAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgUFJFQ0VESU5HCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KKy0tIEV4cGVjdGVkOiBFUlJPUjogZnJhbWUgZW5kIGNhbm5vdCBiZSBVTkJPVU5ERUQg UFJFQ0VESU5HCistLSBTaW5nbGUgcm93IGZyYW1lOiBDVVJSRU5UIFJPVyBBTkQgQ1VSUkVOVCBS T1cKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9mcmFt ZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBDVVJSRU5UIFJPVworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cK KyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlk OworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAxCisg IDIgfCAgMTAgfCAgIDEKKyAgMyB8ICAxMCB8ICAgMQorICA0IHwgIDIwIHwgICAxCisgIDUgfCAg MjAgfCAgIDEKKyAgNiB8ICAzMCB8ICAgMQorKDYgcm93cykKKworLS0gWmVybyBvZmZzZXQ6IENV UlJFTlQgUk9XIEFORCAwIEZPTExPV0lORyAoZXF1aXZhbGVudCB0byBDVVJSRU5UIFJPVykKK1NF TEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9mcmFtZQorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCAwIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQ QVRURVJOIChBKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworIGlk IHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAxCisgIDIgfCAg MTAgfCAgIDEKKyAgMyB8ICAxMCB8ICAgMQorICA0IHwgIDIwIHwgICAxCisgIDUgfCAgMjAgfCAg IDEKKyAgNiB8ICAzMCB8ICAgMQorKDYgcm93cykKKworLS0gTGFyZ2Ugb2Zmc2V0OiBDVVJSRU5U IFJPVyBBTkQgMTAwMCBGT0xMT1dJTkcKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxMDAwIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBB UyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0r LS0tLS0KKyAgMSB8ICAxMCB8ICAgNgorICAyIHwgIDEwIHwgICA1CisgIDMgfCAgMTAgfCAgIDQK KyAgNCB8ICAyMCB8ICAgMworICA1IHwgIDIwIHwgICAyCisgIDYgfCAgMzAgfCAgIDEKKyg2IHJv d3MpCisKKy0tIE1heGltdW0gb2Zmc2V0OiBDVVJSRU5UIFJPVyBBTkQgMjE0NzQ4MzY0NiBGT0xM T1dJTkcgKElOVF9NQVggLSAxKQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBj bnQKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDIxNDc0ODM2NDYgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBB IEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0t LSstLS0tLQorICAxIHwgIDEwIHwgICA2CisgIDIgfCAgMTAgfCAgIDUKKyAgMyB8ICAxMCB8ICAg NAorICA0IHwgIDIwIHwgICAzCisgIDUgfCAgMjAgfCAgIDIKKyAgNiB8ICAzMCB8ICAgMQorKDYg cm93cykKKworLS0gUkFOR0UgZnJhbWUgd2l0aCBSUFIgKG5vdCBwZXJtaXR0ZWQpCitTRUxFQ1Qg aWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSB2YWwKKyAgICBSQU5HRSBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCAxMCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFU VEVSTiAoQSBCPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPj0gMCwgQiBBUyB2YWwgPj0gMAorKQor T1JERVIgQlkgaWQ7CitFUlJPUjogIEZSQU1FIG9wdGlvbiBSQU5HRSBpcyBub3QgcGVybWl0dGVk IHdoZW4gcm93IHBhdHRlcm4gcmVjb2duaXRpb24gaXMgdXNlZAorTElORSA1OiAgICAgUkFOR0Ug QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMTAgRk9MTE9XSU5HCisgICAgICAgICAgICBeCitISU5U OiAgVXNlOiBST1dTIGluc3RlYWQKKy0tIEV4cGVjdGVkOiBFUlJPUjogRlJBTUUgb3B0aW9uIFJB TkdFIGlzIG5vdCBwZXJtaXR0ZWQgd2hlbiByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpcyB1c2Vk CistLSBHUk9VUFMgZnJhbWUgd2l0aCBSUFIgKG5vdCBwZXJtaXR0ZWQpCitTRUxFQ1QgaWQsIHZh bCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSB2YWwKKyAgICBHUk9VUFMgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAo QSBCPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPj0gMCwgQiBBUyB2YWwgPj0gMAorKQorT1JERVIg QlkgaWQ7CitFUlJPUjogIEZSQU1FIG9wdGlvbiBHUk9VUCBpcyBub3QgcGVybWl0dGVkIHdoZW4g cm93IHBhdHRlcm4gcmVjb2duaXRpb24gaXMgdXNlZAorTElORSA1OiAgICAgR1JPVVBTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HCisgICAgICAgICAgICBeCitISU5UOiAgVXNl OiBST1dTIGluc3RlYWQKKy0tIEV4cGVjdGVkOiBFUlJPUjogRlJBTUUgb3B0aW9uIEdST1VQIGlz IG5vdCBwZXJtaXR0ZWQgd2hlbiByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpcyB1c2VkCitEUk9Q IFRBQkxFIHJwcl9mcmFtZTsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUEFSVElUSU9OIEJZICsgRlJBTUUgVGVzdHMK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gVGVzdCBQQVJUSVRJT04gQlkgd2l0aCBSUFIgdG8gZW5zdXJlIHByb3BlciBw YXJ0aXRpb25pbmcgYmVoYXZpb3IKK0NSRUFURSBUQUJMRSBycHJfcGFydGl0aW9uIChpZCBJTlQs IGdycCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3BhcnRpdGlvbiBWQUxVRVMKKyAg ICAoMSwgMSwgMTApLCAoMiwgMSwgMjApLCAoMywgMSwgMzApLAorICAgICg0LCAyLCAxNSksICg1 LCAyLCAyNSksICg2LCAyLCAzNSk7CistLSBQQVJUSVRJT04gQlkgd2l0aCBST1dTIGZyYW1lCitT RUxFQ1QgaWQsIGdycCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wYXJ0 aXRpb24KK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgZ3JwCisgICAgT1JERVIgQlkg dmFsCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisg ICAgREVGSU5FIEEgQVMgdmFsID49IDEwLCBCIEFTIHZhbCA+IDE1CispCitPUkRFUiBCWSBpZDsK KyBpZCB8IGdycCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAg MSB8ICAxMCB8ICAgMworICAyIHwgICAxIHwgIDIwIHwgICAyCisgIDMgfCAgIDEgfCAgMzAgfCAg IDAKKyAgNCB8ICAgMiB8ICAxNSB8ICAgMworICA1IHwgICAyIHwgIDI1IHwgICAyCisgIDYgfCAg IDIgfCAgMzUgfCAgIDAKKyg2IHJvd3MpCisKKy0tIEV4cGVjdGVkOiBQYXR0ZXJuIG1hdGNoaW5n IHNob3VsZCByZXNldCBmb3IgZWFjaCBwYXJ0aXRpb24KKy0tIFBBUlRJVElPTiBCWSB3aXRoIFJB TkdFIGZyYW1lCitTRUxFQ1QgaWQsIGdycCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitG Uk9NIHJwcl9wYXJ0aXRpb24KK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgZ3JwCisg ICAgT1JERVIgQlkgdmFsCisgICAgUkFOR0UgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMTAgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEg Qj8pCisgICAgREVGSU5FIEEgQVMgdmFsID49IDEwLCBCIEFTIHZhbCA+PSAyMAorKQorT1JERVIg QlkgaWQ7CitFUlJPUjogIEZSQU1FIG9wdGlvbiBSQU5HRSBpcyBub3QgcGVybWl0dGVkIHdoZW4g cm93IHBhdHRlcm4gcmVjb2duaXRpb24gaXMgdXNlZAorTElORSA2OiAgICAgUkFOR0UgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgMTAgRk9MTE9XSU5HCisgICAgICAgICAgICBeCitISU5UOiAgVXNl OiBST1dTIGluc3RlYWQKKy0tIEV4cGVjdGVkOiBFUlJPUjogRlJBTUUgb3B0aW9uIFJBTkdFIGlz IG5vdCBwZXJtaXR0ZWQgd2hlbiByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpcyB1c2VkCitEUk9Q IFRBQkxFIHJwcl9wYXJ0aXRpb247CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFBBVFRFUk4gU3ludGF4IFRlc3RzCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KK0NSRUFURSBUQUJMRSBycHJfcGF0dGVybiAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VS VCBJTlRPIHJwcl9wYXR0ZXJuIFZBTFVFUworICAgICgxLCA1KSwgKDIsIDEwKSwgKDMsIDE1KSwg KDQsIDIwKSwgKDUsIDI1KSwKKyAgICAoNiwgMzApLCAoNywgMzUpLCAoOCwgNDApLCAoOSwgNDUp LCAoMTAsIDUwKTsKKy0tIEFsdGVybmF0aW9uICh8KQorLS0gTXVsdGlwbGUgYWx0ZXJuYXRpdmVz CitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGF0dGVy bgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsgfCBCKyB8IEMr KQorICAgIERFRklORSBBIEFTIHZhbCA+IDM1LCBCIEFTIHZhbCBCRVRXRUVOIDE1IEFORCAzNSwg QyBBUyB2YWwgPCAxNQorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0t LS0tKy0tLS0tCisgIDEgfCAgIDUgfCAgIDIKKyAgMiB8ICAxMCB8ICAgMAorICAzIHwgIDE1IHwg ICA1CisgIDQgfCAgMjAgfCAgIDAKKyAgNSB8ICAyNSB8ICAgMAorICA2IHwgIDMwIHwgICAwCisg IDcgfCAgMzUgfCAgIDAKKyAgOCB8ICA0MCB8ICAgMworICA5IHwgIDQ1IHwgICAwCisgMTAgfCAg NTAgfCAgIDAKKygxMCByb3dzKQorCistLSBHcm91cGluZworLS0gTmVzdGVkIGdyb3VwaW5nIHdp dGggcXVhbnRpZmllcgorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZS T00gcnByX3BhdHRlcm4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KCgoQSBCKSBDKSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMTAsIEIgQVMgdmFsID4gMjAsIEMg QVMgdmFsID4gMzAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0t LSstLS0tLQorICAxIHwgICA1IHwgICAwCisgIDIgfCAgMTAgfCAgIDAKKyAgMyB8ICAxNSB8ICAg MAorICA0IHwgIDIwIHwgICAwCisgIDUgfCAgMjUgfCAgIDYKKyAgNiB8ICAzMCB8ICAgMAorICA3 IHwgIDM1IHwgICAwCisgIDggfCAgNDAgfCAgIDAKKyAgOSB8ICA0NSB8ICAgMAorIDEwIHwgIDUw IHwgICAwCisoMTAgcm93cykKKworLS0gU2VxdWVuY2UKKy0tIE11bHRpLWVsZW1lbnQgc2VxdWVu Y2UKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wYXR0 ZXJuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIgQyBEIEUp CisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdmFsIDwgMTUsCisgICAgICAgIEIgQVMgdmFsIEJF VFdFRU4gMTUgQU5EIDI1LAorICAgICAgICBDIEFTIHZhbCBCRVRXRUVOIDI1IEFORCAzNSwKKyAg ICAgICAgRCBBUyB2YWwgQkVUV0VFTiAzNSBBTkQgNDUsCisgICAgICAgIEUgQVMgdmFsID49IDQ1 CispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAg MSB8ICAgNSB8ICAgMAorICAyIHwgIDEwIHwgICAwCisgIDMgfCAgMTUgfCAgIDAKKyAgNCB8ICAy MCB8ICAgMAorICA1IHwgIDI1IHwgICAwCisgIDYgfCAgMzAgfCAgIDAKKyAgNyB8ICAzNSB8ICAg MAorICA4IHwgIDQwIHwgICAwCisgIDkgfCAgNDUgfCAgIDAKKyAxMCB8ICA1MCB8ICAgMAorKDEw IHJvd3MpCisKKy0tIENvbXBsZXggY29tYmluYXRpb25zCistLSBBbHRlcm5hdGlvbiB3aXRoIGdy b3VwaW5nCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJf cGF0dGVybgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgQikg fCAoQyBEKSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPCAyMCwgQiBBUyB2YWwgPj0gMjAsIEMgQVMg dmFsIDwgMzAsIEQgQVMgdmFsID49IDMwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNu dCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAgNSB8ICAgMAorICAyIHwgIDEwIHwgICAwCisg IDMgfCAgMTUgfCAgIDIKKyAgNCB8ICAyMCB8ICAgMAorICA1IHwgIDI1IHwgICAyCisgIDYgfCAg MzAgfCAgIDAKKyAgNyB8ICAzNSB8ICAgMAorICA4IHwgIDQwIHwgICAwCisgIDkgfCAgNDUgfCAg IDAKKyAxMCB8ICA1MCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIEFsdGVybmF0aW9uICsgc2VxdWVu Y2UgKyBncm91cGluZworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZS T00gcnByX3BhdHRlcm4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KFNUQVJUIChVUHsyLH0gRE9XTj8gfCBGTEFUKykgRklOSVNIKQorICAgIERFRklORQorICAgICAg ICBTVEFSVCBBUyB2YWwgPj0gMCwKKyAgICAgICAgVVAgQVMgdmFsID4gMjAsCisgICAgICAgIERP V04gQVMgdmFsIDw9IDMwLAorICAgICAgICBGTEFUIEFTIHZhbCBCRVRXRUVOIDI1IEFORCAzNSwK KyAgICAgICAgRklOSVNIIEFTIHZhbCA+IDQwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8 IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAgNSB8ICAgMAorICAyIHwgIDEwIHwgICAw CisgIDMgfCAgMTUgfCAgIDAKKyAgNCB8ICAyMCB8ICAgNworICA1IHwgIDI1IHwgICAwCisgIDYg fCAgMzAgfCAgIDAKKyAgNyB8ICAzNSB8ICAgMAorICA4IHwgIDQwIHwgICAwCisgIDkgfCAgNDUg fCAgIDAKKyAxMCB8ICA1MCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIE5lc3RlZCBhbHRlcm5hdGlv biBpbiBncm91cHMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9N IHJwcl9wYXR0ZXJuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgo QSB8IEIpIChDIHwgRCkpCisgICAgREVGSU5FIEEgQVMgdmFsIDwgMTUsIEIgQVMgdmFsIEJFVFdF RU4gMTUgQU5EIDI1LCBDIEFTIHZhbCBCRVRXRUVOIDI1IEFORCAzNSwgRCBBUyB2YWwgPiAzNQor KQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEg fCAgIDUgfCAgIDAKKyAgMiB8ICAxMCB8ICAgMAorICAzIHwgIDE1IHwgICAwCisgIDQgfCAgMjAg fCAgIDIKKyAgNSB8ICAyNSB8ICAgMAorICA2IHwgIDMwIHwgICAwCisgIDcgfCAgMzUgfCAgIDAK KyAgOCB8ICA0MCB8ICAgMAorICA5IHwgIDQ1IHwgICAwCisgMTAgfCAgNTAgfCAgIDAKKygxMCBy b3dzKQorCitEUk9QIFRBQkxFIHJwcl9wYXR0ZXJuOworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBRdWFudGlmaWVycyBU ZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgcnByX3F1YW50IChpZCBJTlQsIHZhbCBJTlQpOwor SU5TRVJUIElOVE8gcnByX3F1YW50IFZBTFVFUworICAgICgxLCAxMCksICgyLCAyMCksICgzLCAz MCksICg0LCA0MCksICg1LCA1MCksCisgICAgKDYsIDYwKSwgKDcsIDcwKSwgKDgsIDgwKSwgKDks IDkwKSwgKDEwLCAxMDApOworLS0gQmFzaWMgZ3JlZWR5IHF1YW50aWZpZXJzCistLSAqICh6ZXJv IG9yIG1vcmUpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBy cHJfcXVhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEqKQor ICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250 IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgIDEwCisgIDIgfCAgMjAgfCAgIDAKKyAg MyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICAwCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2 MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAg MAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykKKworLS0gKyAob25lIG9yIG1vcmUpCitTRUxF Q1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcXVhbnQKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFT IHZhbCA+IDUwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0r LS0tLS0KKyAgMSB8ICAxMCB8ICAgMAorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAK KyAgNCB8ICA0MCB8ICAgMAorICA1IHwgIDUwIHwgICAwCisgIDYgfCAgNjAgfCAgIDUKKyAgNyB8 ICA3MCB8ICAgMAorICA4IHwgIDgwIHwgICAwCisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8 ICAgMAorKDEwIHJvd3MpCisKKy0tID8gKHplcm8gb3Igb25lKQorU0VMRUNUIGlkLCB2YWwsIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3F1YW50CitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPSA1MAorKQor T1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAg MTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAgNDAgfCAg IDAKKyAgNSB8ICA1MCB8ICAgMQorICA2IHwgIDYwIHwgICAwCisgIDcgfCAgNzAgfCAgIDAKKyAg OCB8ICA4MCB8ICAgMAorICA5IHwgIDkwIHwgICAwCisgMTAgfCAxMDAgfCAgIDAKKygxMCByb3dz KQorCistLSBFZGdlIGNhc2UgcXVhbnRpZmllcnMKKy0tIHswfSBpcyBub3QgYWxsb3dlZCAobWlu IG11c3QgYmUgPj0gMSkKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitG Uk9NIHJwcl9xdWFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QXswfSBCKQorICAgIERFRklORSBBIEFTIHZhbCA+IDEwMDAsIEIgQVMgdmFsID4gMAorKQorT1JE RVIgQlkgaWQ7CitFUlJPUjogIHF1YW50aWZpZXIgYm91bmQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5k IDIxNDc0ODM2NDYKK0xJTkUgNjogICAgIFBBVFRFUk4gKEF7MH0gQikKKyAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gRXhwZWN0ZWQ6IEVSUk9SOiBxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUg YmV0d2VlbiAxIGFuZCAyMTQ3NDgzNjQ2CistLSB7MCwwfSBpcyBub3QgYWxsb3dlZCAobWF4IG11 c3QgYmUgPj0gMSkKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9N IHJwcl9xdWFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsw LDB9IEIpCisgICAgREVGSU5FIEEgQVMgdmFsID4gMTAwMCwgQiBBUyB2YWwgPiAwCispCitPUkRF UiBCWSBpZDsKK0VSUk9SOiAgcXVhbnRpZmllciBib3VuZHMgbXVzdCBiZSBiZXR3ZWVuIDAgYW5k IDIxNDc0ODM2NDYgd2l0aCBtYXggPj0gMQorTElORSA2OiAgICAgUEFUVEVSTiAoQXswLDB9IEIp CisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEV4cGVjdGVkOiBFUlJPUjogcXVhbnRpZmll ciBib3VuZHMgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDIxNDc0ODM2NDYgd2l0aCBtYXggPj0gMQor LS0gezAsMX0gKGVxdWl2YWxlbnQgdG8gPykKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CitGUk9NIHJwcl9xdWFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQXswLDF9KQorICAgIERFRklORSBBIEFTIHZhbCA9IDUwCispCitPUkRFUiBC WSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAg MAorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1 IHwgIDUwIHwgICAxCisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgw IHwgICAwCisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0t IEV4YWN0IHF1YW50aWZpZXJzIHtufQorLS0gezN9IChyZXByZXNlbnRhdGl2ZSBleGFjdCBxdWFu dGlmaWVyKQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnBy X3F1YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezN9KQor ICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250 IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAzCisgIDIgfCAgMjAgfCAgIDAKKyAg MyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICAzCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2 MCB8ICAgMAorICA3IHwgIDcwIHwgICAzCisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAg MAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykKKworLS0gUmFuZ2UgcXVhbnRpZmllcnMge24s fQorLS0gezIsfSAocmVwcmVzZW50YXRpdmUgbiBvciBtb3JlKQorU0VMRUNUIGlkLCB2YWwsIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3F1YW50CitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBezIsfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiA0MAor KQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEg fCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAgNDAg fCAgIDAKKyAgNSB8ICA1MCB8ICAgNgorICA2IHwgIDYwIHwgICAwCisgIDcgfCAgNzAgfCAgIDAK KyAgOCB8ICA4MCB8ICAgMAorICA5IHwgIDkwIHwgICAwCisgMTAgfCAxMDAgfCAgIDAKKygxMCBy b3dzKQorCistLSBVcHBlciBib3VuZCBxdWFudGlmaWVycyB7LG19CistLSB7LDN9IChyZXByZXNl bnRhdGl2ZSB1cCB0byBtKQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK K0ZST00gcnByX3F1YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBeywzfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8 IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMworICAyIHwgIDIw IHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMworICA1IHwgIDUwIHwgICAw CisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMworICA4IHwgIDgwIHwgICAwCisgIDkg fCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAgMQorKDEwIHJvd3MpCisKKy0tIFJhbmdlIHF1YW50 aWZpZXJzIHtuLG19CistLSB7Myw3fSAocmVwcmVzZW50YXRpdmUgcmFuZ2UpCitTRUxFQ1QgaWQs IHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcXVhbnQKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7Myw3fSkKKyAgICBERUZJTkUgQSBBUyB2 YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0t LS0KKyAgMSB8ICAxMCB8ICAgNworICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAg NCB8ICA0MCB8ICAgMAorICA1IHwgIDUwIHwgICAwCisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3 MCB8ICAgMAorICA4IHwgIDgwIHwgICAzCisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAg MAorKDEwIHJvd3MpCisKK0RST1AgVEFCTEUgcnByX3F1YW50OworLS0gUmVsdWN0YW50IHF1YW50 aWZpZXJzIChub3QgeWV0IHN1cHBvcnRlZCkKK0NSRUFURSBUQUJMRSBycHJfcmVsdWN0YW50IChp ZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3JlbHVjdGFudCBWQUxVRVMgKDEsIDEw KSwgKDIsIDIwKSwgKDMsIDMwKTsKKy0tICo/ICh6ZXJvIG9yIG1vcmUsIHJlbHVjdGFudCkKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSo/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAK Kyk7CitFUlJPUjogIHJlbHVjdGFudCBxdWFudGlmaWVycyBhcmUgbm90IHlldCBzdXBwb3J0ZWQK K0xJTkUgNjogICAgIFBBVFRFUk4gKEEqPykKKyAgICAgICAgICAgICAgICAgICAgICAgXgorLS0g RXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9y dGVkCistLSArPyAob25lIG9yIG1vcmUsIHJlbHVjdGFudCkKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSs/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHJlbHVj dGFudCBxdWFudGlmaWVycyBhcmUgbm90IHlldCBzdXBwb3J0ZWQKK0xJTkUgNjogICAgIFBBVFRF Uk4gKEErPykKKyAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRXhwZWN0ZWQ6IEVSUk9SOiBy ZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCistLSA/PyAoemVybyBv ciBvbmUsIHJlbHVjdGFudCkKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVj dGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQT8/KQorICAg IERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHJlbHVjdGFudCBxdWFudGlmaWVycyBh cmUgbm90IHlldCBzdXBwb3J0ZWQKK0xJTkUgNjogICAgIFBBVFRFUk4gKEE/PykKKyAgICAgICAg ICAgICAgICAgICAgICAgXgorLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRpZmll cnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCistLSB7bix9PyAobiBvciBtb3JlLCByZWx1Y3RhbnQp CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7Mix9PykKKyAgICBERUZJTkUgQSBBUyB2 YWwgPiAwCispOworRVJST1I6ICByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3Vw cG9ydGVkCitMSU5FIDY6ICAgICBQQVRURVJOIChBezIsfT8pCisgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KKy0tIEV4cGVjdGVkOiBFUlJPUjogcmVsdWN0YW50IHF1YW50aWZpZXJzIGFyZSBu b3QgeWV0IHN1cHBvcnRlZAorLS0ge24sbX0/IChuIHRvIG0sIHJlbHVjdGFudCkKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQXsxLDN9PykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisp OworRVJST1I6ICByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCitM SU5FIDY6ICAgICBQQVRURVJOIChBezEsM30/KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQg c3VwcG9ydGVkCistLSB7bn0/IChleGFjdGx5IG4sIHJlbHVjdGFudCkKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQXsyfT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VSUk9S OiAgcmVsdWN0YW50IHF1YW50aWZpZXJzIGFyZSBub3QgeWV0IHN1cHBvcnRlZAorTElORSA2OiAg ICAgUEFUVEVSTiAoQXsyfT8pCisgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRXhwZWN0 ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCist LSB7LG19PyAodXAgdG8gbSwgcmVsdWN0YW50KSAtIENPTVBMRVRFTFkgVU5URVNURUQgUlVMRSEK K1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXssM30/KQorICAgIERFRklORSBBIEFTIHZh bCA+IDAKKyk7CitFUlJPUjogIHJlbHVjdGFudCBxdWFudGlmaWVycyBhcmUgbm90IHlldCBzdXBw b3J0ZWQKK0xJTkUgNjogICAgIFBBVFRFUk4gKEF7LDN9PykKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5v dCB5ZXQgc3VwcG9ydGVkCistLSBJbnZhbGlkIHJlbHVjdGFudCBwYXR0ZXJucyAod3JvbmcgdG9r ZW4gYWZ0ZXIgcXVhbnRpZmllcikKKy0tIHsyfSsgKHNob3VsZCBiZSB7Mn0/IG5vdCB7Mn0rKQor U0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezJ9KykKKyAgICBERUZJTkUgQSBBUyB2YWwg PiAwCispOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiKyIKK0xJTkUgNjogICAg IFBBVFRFUk4gKEF7Mn0rKQorICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEV4cGVjdGVk OiBFUlJPUjogc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIisiCistLSB7Mix9KiAoc2hvdWxkIGJl IHsyLH0/IG5vdCB7Mix9KikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVj dGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsyLH0qKQor ICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBu ZWFyICIqIgorTElORSA2OiAgICAgUEFUVEVSTiAoQXsyLH0qKQorICAgICAgICAgICAgICAgICAg ICAgICAgICBeCistLSBFeHBlY3RlZDogRVJST1I6IHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIq IgorLS0geywzfSogKHNob3VsZCBiZSB7LDN9PyBub3QgeywzfSopCitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEF7LDN9KikKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6 ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiKiIKK0xJTkUgNjogICAgIFBBVFRFUk4gKEF7LDN9 KikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRXhwZWN0ZWQ6IEVSUk9SOiBzeW50 YXggZXJyb3IgYXQgb3IgbmVhciAiKiIKKy0tIHsxLDN9KyAoc2hvdWxkIGJlIHsxLDN9PyBub3Qg ezEsM30rKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezEsM30rKQorICAgIERFRklO RSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIrIgor TElORSA2OiAgICAgUEFUVEVSTiAoQXsxLDN9KykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KKy0tIEV4cGVjdGVkOiBFUlJPUjogc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIisiCistLSBC b3VuZGFyeSBlcnJvcnMgaW4gcmVsdWN0YW50IHF1YW50aWZpZXJzCistLSB7LTF9PyAobmVnYXRp dmUgYm91bmQpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LTF9PykKKyAgICBERUZJ TkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiLSIK K0xJTkUgNjogICAgIFBBVFRFUk4gKEF7LTF9PykKKyAgICAgICAgICAgICAgICAgICAgICAgXgor LS0gRXhwZWN0ZWQ6IEVSUk9SOiBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiLSIKKy0tIHsyMTQ3 NDgzNjQ3fT8gKElOVF9NQVgpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1 Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MjE0NzQ4 MzY0N30/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHF1YW50aWZpZXIg Ym91bmQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxNDc0ODM2NDYKK0xJTkUgNjogICAgIFBBVFRF Uk4gKEF7MjE0NzQ4MzY0N30/KQorICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFeHBlY3Rl ZDogRVJST1I6IHF1YW50aWZpZXIgYm91bmQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxNDc0ODM2 NDYKKy0tIHstMSx9PyAobmVnYXRpdmUgbG93ZXIgYm91bmQpCitTRUxFQ1QgQ09VTlQoKikgT1ZF UiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEF7LTEsfT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VSUk9SOiAg c3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIi0iCitMSU5FIDY6ICAgICBQQVRURVJOIChBey0xLH0/ KQorICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFeHBlY3RlZDogRVJST1I6IHN5bnRheCBl cnJvciBhdCBvciBuZWFyICItIgorLS0gezIxNDc0ODM2NDcsfT8gKElOVF9NQVggbG93ZXIgYm91 bmQpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MjE0NzQ4MzY0Nyx9PykKKyAgICBE RUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUg YmV0d2VlbiAwIGFuZCAyMTQ3NDgzNjQ2CitMSU5FIDY6ICAgICBQQVRURVJOIChBezIxNDc0ODM2 NDcsfT8pCisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEV4cGVjdGVkOiBFUlJPUjogcXVh bnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjE0NzQ4MzY0NgorLS0geywwfT8g KHplcm8gdXBwZXIgYm91bmQpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1 Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LDB9PykK KyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBxdWFudGlmaWVyIGJvdW5kIG11 c3QgYmUgYmV0d2VlbiAxIGFuZCAyMTQ3NDgzNjQ2CitMSU5FIDY6ICAgICBQQVRURVJOIChBeyww fT8pCisgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFeHBlY3RlZDogRVJST1I6IHF1YW50 aWZpZXIgYm91bmQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxNDc0ODM2NDYKKy0tIHssMjE0NzQ4 MzY0N30/IChJTlRfTUFYIHVwcGVyIGJvdW5kKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJP TSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBeywyMTQ3NDgzNjQ3fT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VSUk9SOiAg cXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjE0NzQ4MzY0NgorTElORSA2 OiAgICAgUEFUVEVSTiAoQXssMjE0NzQ4MzY0N30/KQorICAgICAgICAgICAgICAgICAgICAgICAg XgorLS0gRXhwZWN0ZWQ6IEVSUk9SOiBxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2VlbiAx IGFuZCAyMTQ3NDgzNjQ2CistLSB7LTEsM30/IChuZWdhdGl2ZSBsb3dlciBpbiByYW5nZSkKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXstMSwzfT8pCisgICAgREVGSU5FIEEgQVMgdmFs ID4gMAorKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIi0iCitMSU5FIDY6ICAg ICBQQVRURVJOIChBey0xLDN9PykKKyAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRXhwZWN0 ZWQ6IEVSUk9SOiBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiLSIKKy0tIHsxLDIxNDc0ODM2NDd9 PyAoSU5UX01BWCB1cHBlciBpbiByYW5nZSkKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00g cnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QXsxLDIxNDc0ODM2NDd9PykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBx dWFudGlmaWVyIGJvdW5kcyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjE0NzQ4MzY0NiB3aXRoIG1h eCA+PSAxCitMSU5FIDY6ICAgICBQQVRURVJOIChBezEsMjE0NzQ4MzY0N30/KQorICAgICAgICAg ICAgICAgICAgICAgICBeCistLSBFeHBlY3RlZDogRVJST1I6IHF1YW50aWZpZXIgYm91bmRzIG11 c3QgYmUgYmV0d2VlbiAwIGFuZCAyMTQ3NDgzNjQ2IHdpdGggbWF4ID49IDEKKy0tIHs1LDN9PyAo bWluID4gbWF4KQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezUsM30/KQorICAgIERF RklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHF1YW50aWZpZXIgbWluaW11bSBib3VuZCBt dXN0IG5vdCBleGNlZWQgbWF4aW11bQorTElORSA2OiAgICAgUEFUVEVSTiAoQXs1LDN9PykKKyAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gRXhwZWN0ZWQ6IEVSUk9SOiBxdWFudGlmaWVyIG1p bmltdW0gYm91bmQgbXVzdCBub3QgZXhjZWVkIG1heGltdW0KKy0tIFRva2VuLXNlcGFyYXRlZCBy ZWx1Y3RhbnQgcXVhbnRpZmllcnMgKHNwYWNlIGJldHdlZW4gcXVhbnRpZmllciBhbmQgPykKKy0t IFRoZXNlIG1heSBiZSB0b2tlbml6ZWQgZGlmZmVyZW50bHkgYnkgdGhlIGxleGVyCistLSAqID8g KHRva2VuIHNlcGFyYXRlZCkKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVj dGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSogPykKKyAg ICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICByZWx1Y3RhbnQgcXVhbnRpZmllcnMg YXJlIG5vdCB5ZXQgc3VwcG9ydGVkCitMSU5FIDY6ICAgICBQQVRURVJOIChBKiA/KQorICAgICAg ICAgICAgICAgICAgICAgICAgXgorLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRp ZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCistLSArID8gKHRva2VuIHNlcGFyYXRlZCkKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsgPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAw CispOworRVJST1I6ICByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVk CitMSU5FIDY6ICAgICBQQVRURVJOIChBKyA/KQorICAgICAgICAgICAgICAgICAgICAgICAgXgor LS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3Vw cG9ydGVkCistLSB7Mix9ID8gKHRva2VuIHNlcGFyYXRlZCkKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQXsyLH0gPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBy ZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCitMSU5FIDY6ICAgICBQ QVRURVJOIChBezIsfSA/KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRXhwZWN0 ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCist LSBJbnZhbGlkIHRva2VuIGNvbWJpbmF0aW9ucworLS0gKiArIChpbnZhbGlkIGNvbWJpbmF0aW9u KQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKiArKQorICAgIERFRklORSBBIEFTIHZh bCA+IDAKKyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIrIgorTElORSA2OiAg ICAgUEFUVEVSTiAoQSogKykKKyAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEV4cGVjdGVk OiBFUlJPUjogc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIisiCistLSArICogKGludmFsaWQgY29t YmluYXRpb24pCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErICopCisgICAgREVGSU5F IEEgQVMgdmFsID4gMAorKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIioiCitM SU5FIDY6ICAgICBQQVRURVJOIChBKyAqKQorICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0g RXhwZWN0ZWQ6IEVSUk9SOiBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiKiIKKy0tID8gPyAoaW52 YWxpZCBjb21iaW5hdGlvbikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVj dGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQT8gPykKKyAg ICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICByZWx1Y3RhbnQgcXVhbnRpZmllcnMg YXJlIG5vdCB5ZXQgc3VwcG9ydGVkCitMSU5FIDY6ICAgICBQQVRURVJOIChBPyA/KQorICAgICAg ICAgICAgICAgICAgICAgICAgXgorLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRp ZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCitEUk9QIFRBQkxFIHJwcl9yZWx1Y3RhbnQ7Cist LSBRdWFudGlmaWVyIGJvdW5kYXJ5IGNvbmRpdGlvbnMKK0NSRUFURSBUQUJMRSBycHJfYm91bmRz IChpZCBJTlQpOworSU5TRVJUIElOVE8gcnByX2JvdW5kcyBWQUxVRVMgKDEpLCAoMik7CistLSBt aW4gPiBtYXgKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2JvdW5kcworV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXs1LDN9KQorICAgIERFRklORSBB IEFTIGlkID4gMAorKTsKK0VSUk9SOiAgcXVhbnRpZmllciBtaW5pbXVtIGJvdW5kIG11c3Qgbm90 IGV4Y2VlZCBtYXhpbXVtCitMSU5FIDY6ICAgICBQQVRURVJOIChBezUsM30pCisgICAgICAgICAg ICAgICAgICAgICAgIF4KKy0tIEV4cGVjdGVkOiBFUlJPUjogcXVhbnRpZmllciBtaW5pbXVtIGJv dW5kIG11c3Qgbm90IGV4Y2VlZCBtYXhpbXVtCistLSBMYXJnZSBib3VuZHMKK1NFTEVDVCBDT1VO VCgqKSBPVkVSIHcKK0ZST00gcnByX2JvdW5kcworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQXsxMDAwLDIwMDB9KQorICAgIERFRklORSBBIEFTIGlkID4gMAorKTsK KyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorICAgICAwCisoMiByb3dzKQorCistLSBWZXJ5IGxh cmdlIGJvdW5kCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9ib3VuZHMKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MTAwMDAwfSkKKyAgICBERUZJ TkUgQSBBUyBpZCA+IDAKKyk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKyAgICAgMAorKDIg cm93cykKKworLS0gSU5UX01BWCAtIDEgPSAyMTQ3NDgzNjQ2IChhdCBsaW1pdCkKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2JvdW5kcworV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQXsyMTQ3NDgzNjQ2fSkKKyAgICBERUZJTkUgQSBBUyBpZCA+IDAK Kyk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKyAgICAgMAorKDIgcm93cykKKworLS0gSU5U X01BWCA9IDIxNDc0ODM2NDcgKG92ZXIgbGltaXQpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitG Uk9NIHJwcl9ib3VuZHMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEF7MjE0NzQ4MzY0N30pCisgICAgREVGSU5FIEEgQVMgaWQgPiAwCispOworRVJST1I6ICBxdWFu dGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAyMTQ3NDgzNjQ2CitMSU5FIDY6ICAg ICBQQVRURVJOIChBezIxNDc0ODM2NDd9KQorICAgICAgICAgICAgICAgICAgICAgICBeCistLSBF eHBlY3RlZDogRVJST1I6IHF1YW50aWZpZXIgYm91bmQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIx NDc0ODM2NDYKKy0tIHtuLH0gYm91bmRhcnkgZXJyb3JzCistLSBOZWdhdGl2ZSBsb3dlciBib3Vu ZCBpbiB7bix9CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9ib3VuZHMKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LTEsfSkKKyAgICBERUZJTkUg QSBBUyBpZCA+IDAKKyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICItIgorTElO RSA2OiAgICAgUEFUVEVSTiAoQXstMSx9KQorICAgICAgICAgICAgICAgICAgICAgICBeCistLSBF eHBlY3RlZDogRVJST1I6IHN5bnRheCBlcnJvciBhdCBvciBuZWFyICItIgorLS0gSU5UX01BWCBp biB7bix9CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9ib3VuZHMKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MjE0NzQ4MzY0Nyx9KQorICAgIERF RklORSBBIEFTIGlkID4gMAorKTsKK0VSUk9SOiAgcXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJl dHdlZW4gMCBhbmQgMjE0NzQ4MzY0NgorTElORSA2OiAgICAgUEFUVEVSTiAoQXsyMTQ3NDgzNjQ3 LH0pCisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEV4cGVjdGVkOiBFUlJPUjogcXVhbnRp ZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjE0NzQ4MzY0NgorLS0geyxtfSBib3Vu ZGFyeSBlcnJvcnMKKy0tIFplcm8gdXBwZXIgYm91bmQgaW4geyxtfQorU0VMRUNUIENPVU5UKCop IE9WRVIgdworRlJPTSBycHJfYm91bmRzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBeywwfSkKKyAgICBERUZJTkUgQSBBUyBpZCA+IDAKKyk7CitFUlJPUjogIHF1 YW50aWZpZXIgYm91bmQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxNDc0ODM2NDYKK0xJTkUgNjog ICAgIFBBVFRFUk4gKEF7LDB9KQorICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRXhwZWN0 ZWQ6IEVSUk9SOiBxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAyMTQ3NDgz NjQ2CistLSBJTlRfTUFYIGluIHssbX0KK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnBy X2JvdW5kcworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXssMjE0 NzQ4MzY0N30pCisgICAgREVGSU5FIEEgQVMgaWQgPiAwCispOworRVJST1I6ICBxdWFudGlmaWVy IGJvdW5kIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAyMTQ3NDgzNjQ2CitMSU5FIDY6ICAgICBQQVRU RVJOIChBeywyMTQ3NDgzNjQ3fSkKKyAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEV4cGVj dGVkOiBFUlJPUjogcXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjE0NzQ4 MzY0NgorRFJPUCBUQUJMRSBycHJfYm91bmRzOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBOYXZpZ2F0aW9uIEZ1bmN0 aW9ucyBUZXN0cyAoUFJFViAvIE5FWFQpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBUQUJMRSBycHJfbmF2IChp ZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX25hdiBWQUxVRVMKKyAgICAoMSwgMTAp LCAoMiwgMjApLCAoMywgMTUpLCAoNCwgMjUpLCAoNSwgMzApOworLS0gUFJFViBmdW5jdGlvbiAt IHJlZmVyZW5jZSBwcmV2aW91cyByb3cgaW4gcGF0dGVybgorU0VMRUNUIGlkLCB2YWwsIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX25hdgorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2YWwgPiAw LAorICAgICAgICBCIEFTIHZhbCA+IFBSRVYodmFsKQorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2 YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDIKKyAgMiB8ICAyMCB8 ICAgMAorICAzIHwgIDE1IHwgICAzCisgIDQgfCAgMjUgfCAgIDAKKyAgNSB8ICAzMCB8ICAgMAor KDUgcm93cykKKworLS0gTkVYVCBmdW5jdGlvbiAtIHJlZmVyZW5jZSBuZXh0IHJvdyBpbiBwYXR0 ZXJuCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbmF2 CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERF RklORQorICAgICAgICBBIEFTIHZhbCA8IE5FWFQodmFsKSwKKyAgICAgICAgQiBBUyB2YWwgPiAw CispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAg MSB8ICAxMCB8ICAgMgorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMTUgfCAgIDMKKyAgNCB8ICAy NSB8ICAgMAorICA1IHwgIDMwIHwgICAwCisoNSByb3dzKQorCistLSBDb21iaW5lZCBQUkVWIGFu ZCBORVhUCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJf bmF2CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIgQykKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyB2YWwgPiAwLAorICAgICAgICBCIEFTIHZhbCA+IFBSRVYo dmFsKSBBTkQgdmFsIDwgTkVYVCh2YWwpLAorICAgICAgICBDIEFTIHZhbCA+IFBSRVYodmFsKQor KQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEg fCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDE1IHwgICAzCisgIDQgfCAgMjUg fCAgIDAKKyAgNSB8ICAzMCB8ICAgMAorKDUgcm93cykKKworRFJPUCBUQUJMRSBycHJfbmF2Owor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBTS0lQIFRPIC8gSU5JVElBTCBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUg cnByX3NraXAgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfc2tpcCBWQUxVRVMK KyAgICAoMSwgMSksICgyLCAyKSwgKDMsIDMpLCAoNCwgNCksICg1LCA1KSwKKyAgICAoNiwgNiks ICg3LCA3KSwgKDgsIDgpOworLS0gU0tJUCBUTyBORVhUIFJPVworLS0gU0tJUCBUTyBORVhUIFJP VworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3NraXAK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVY VCBST1cKKyAgICBQQVRURVJOIChBIEIgQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFT IHZhbCA+IDIsIEMgQVMgdmFsID4gNAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQg CistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgIDEgfCAgIDAKKyAgMiB8ICAgMiB8ICAgMAorICAz IHwgICAzIHwgICAzCisgIDQgfCAgIDQgfCAgIDMKKyAgNSB8ICAgNSB8ICAgMworICA2IHwgICA2 IHwgICAzCisgIDcgfCAgIDcgfCAgIDAKKyAgOCB8ICAgOCB8ICAgMAorKDggcm93cykKKworLS0g U0tJUCBQQVNUIExBU1QgUk9XCistLSBTS0lQIFBBU1QgTEFTVCBST1cKK1NFTEVDVCBpZCwgdmFs LCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9za2lwCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBIEIgQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDIsIEMgQVMg dmFsID4gNAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0t LS0tCisgIDEgfCAgIDEgfCAgIDAKKyAgMiB8ICAgMiB8ICAgMAorICAzIHwgICAzIHwgICAzCisg IDQgfCAgIDQgfCAgIDAKKyAgNSB8ICAgNSB8ICAgMAorICA2IHwgICA2IHwgICAzCisgIDcgfCAg IDcgfCAgIDAKKyAgOCB8ICAgOCB8ICAgMAorKDggcm93cykKKworLS0gRGVmYXVsdCBiZWhhdmlv ciAoc2hvdWxkIGJlIFNLSVAgUEFTVCBMQVNUIFJPVykKKy0tIE5vIFNLSVAgVE8gY2xhdXNlIChk ZWZhdWx0KQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnBy X3NraXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQikKKyAg ICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDEKKykKK09SREVSIEJZIGlkOworIGlk IHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgICAxIHwgICAyCisgIDIgfCAg IDIgfCAgIDAKKyAgMyB8ICAgMyB8ICAgMgorICA0IHwgICA0IHwgICAwCisgIDUgfCAgIDUgfCAg IDIKKyAgNiB8ICAgNiB8ICAgMAorICA3IHwgICA3IHwgICAyCisgIDggfCAgIDggfCAgIDAKKyg4 IHJvd3MpCisKKy0tIENvbXBhcmUgZGVmYXVsdCB3aXRoIGV4cGxpY2l0IFBBU1QgTEFTVCBST1cK Ky0tIFJlc3VsdHMgc2hvdWxkIGJlIGlkZW50aWNhbAorV0lUSCBkZWZhdWx0X3NraXAgQVMgKAor ICAgIFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgRlJPTSBycHJf c2tpcAorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBB VFRFUk4gKEEgQiBDKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDIs IEMgQVMgdmFsID4gNAorICAgICkKKyksCitleHBsaWNpdF9za2lwIEFTICgKKyAgICBTRUxFQ1Qg aWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX3NraXAKKyAgICBX SU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICAgICAgUEFUVEVSTiAoQSBCIEMpCisgICAgICAgIERFRklO RSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsID4gMiwgQyBBUyB2YWwgPiA0CisgICAgKQorKQorU0VM RUNUICdkZWZhdWx0JyBhcyB0eXBlLCAqIEZST00gZGVmYXVsdF9za2lwCitVTklPTiBBTEwKK1NF TEVDVCAnZXhwbGljaXQnIGFzIHR5cGUsICogRlJPTSBleHBsaWNpdF9za2lwCitPUkRFUiBCWSB0 eXBlLCBpZDsKKyAgIHR5cGUgICB8IGlkIHwgdmFsIHwgY250IAorLS0tLS0tLS0tLSstLS0tKy0t LS0tKy0tLS0tCisgZGVmYXVsdCAgfCAgMSB8ICAgMSB8ICAgMAorIGRlZmF1bHQgIHwgIDIgfCAg IDIgfCAgIDAKKyBkZWZhdWx0ICB8ICAzIHwgICAzIHwgICAzCisgZGVmYXVsdCAgfCAgNCB8ICAg NCB8ICAgMAorIGRlZmF1bHQgIHwgIDUgfCAgIDUgfCAgIDAKKyBkZWZhdWx0ICB8ICA2IHwgICA2 IHwgICAzCisgZGVmYXVsdCAgfCAgNyB8ICAgNyB8ICAgMAorIGRlZmF1bHQgIHwgIDggfCAgIDgg fCAgIDAKKyBleHBsaWNpdCB8ICAxIHwgICAxIHwgICAwCisgZXhwbGljaXQgfCAgMiB8ICAgMiB8 ICAgMAorIGV4cGxpY2l0IHwgIDMgfCAgIDMgfCAgIDMKKyBleHBsaWNpdCB8ICA0IHwgICA0IHwg ICAwCisgZXhwbGljaXQgfCAgNSB8ICAgNSB8ICAgMAorIGV4cGxpY2l0IHwgIDYgfCAgIDYgfCAg IDMKKyBleHBsaWNpdCB8ICA3IHwgICA3IHwgICAwCisgZXhwbGljaXQgfCAgOCB8ICAgOCB8ICAg MAorKDE2IHJvd3MpCisKK0RST1AgVEFCTEUgcnByX3NraXA7CistLSBJTklUSUFMIGNsYXVzZQor Q1JFQVRFIFRBQkxFIHJwcl9pbml0IChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnBy X2luaXQgVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCksICg0LCA0MCk7CistLSBFeHBs aWNpdCBJTklUSUFMCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJP TSBycHJfaW5pdAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAg IFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOwor IGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICA0CisgIDIg fCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICAwCisoNCByb3dzKQor CistLSBJbXBsaWNpdCBJTklUSUFMIChkZWZhdWx0KQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCop IE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2luaXQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZ IGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICA0 CisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICAwCisoNCBy b3dzKQorCitEUk9QIFRBQkxFIHJwcl9pbml0OworLS0gU0VFSworQ1JFQVRFIFRBQkxFIHJwcl9z ZWVrIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3NlZWsgVkFMVUVTICgxLCAx MCk7CistLSBTRUVLIGtleXdvcmQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3Nl ZWsKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFNFRUsKKyAgICBQQVRURVJOIChB KykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBTRUVLIGlzIG5vdCBzdXBw b3J0ZWQKK0xJTkUgNjogICAgIFNFRUsKKyAgICAgICAgICAgIF4KK0hJTlQ6ICBVc2UgSU5JVElB TCBpbnN0ZWFkLgorLS0gRXhwZWN0ZWQ6IEVSUk9SOiBTRUVLIGlzIG5vdCBzdXBwb3J0ZWQKKy0t IEhJTlQ6IFVzZSBJTklUSUFMIGluc3RlYWQuCitEUk9QIFRBQkxFIHJwcl9zZWVrOworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBTZXJpYWxpemF0aW9uL0Rlc2VyaWFsaXphdGlvbiBUZXN0cworLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBWaWV3 IGNyZWF0aW9uIGFuZCBkZXBhcnNpbmcKK0NSRUFURSBUQUJMRSBycHJfc2VyaWFsIChpZCBJTlQs IHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3NlcmlhbCBWQUxVRVMKKyAgICAoMSwgMTApLCAo MiwgMjApLCAoMywgMTUpLCAoNCwgMjUpLCAoNSwgMzApOworLS0gU2ltcGxlIHBhdHRlcm4KK0NS RUFURSBWSUVXIHJwcl9zZXJpYWxfdjEgQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CistLSBWZXJpZnkg dmlldyB3b3JrcyAodGVzdHMgZGVzZXJpYWxpemF0aW9uKQorU0VMRUNUICogRlJPTSBycHJfc2Vy aWFsX3YxIE9SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQor ICAxIHwgIDEwIHwgICA1CisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAxNSB8ICAgMAorICA0IHwg IDI1IHwgICAwCisgIDUgfCAgMzAgfCAgIDAKKyg1IHJvd3MpCisKKy0tIFZlcmlmeSBkZXBhcnNp bmcKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX3NlcmlhbF92MSc6OnJlZ2NsYXNzKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBpZCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgdmFsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcgQVMg Y250ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgRlJPTSBycHJfc2VyaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgKworICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICBJTklUSUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4gKGErKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICBhIEFTICh2YWwgPiAwKSApOworKDEgcm93KQorCitE Uk9QIFZJRVcgcnByX3NlcmlhbF92MTsKKy0tIENvbXBsZXggcGF0dGVybiB3aXRoIGFsdGVybmF0 aW9uCitDUkVBVEUgVklFVyBycHJfc2VyaWFsX3YyIEFTCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc2VyaWFsCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChBKyB8IEIqKQorICAgIERFRklORSBBIEFTIHZhbCA+IDIwLCBC IEFTIHZhbCA8PSAyMAorKTsKK1NFTEVDVCAqIEZST00gcnByX3NlcmlhbF92MiBPUkRFUiBCWSBp ZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMwor ICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMTUgfCAgIDAKKyAgNCB8ICAyNSB8ICAgMgorICA1IHwg IDMwIHwgICAwCisoNSByb3dzKQorCitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxf djInOjpyZWdjbGFzcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92 aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICBTRUxFQ1QgaWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIHZhbCwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg Y291bnQoKikgT1ZFUiB3IEFTIGNudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgIEZST00gcnByX3NlcmlhbCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HICsKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgSU5JVElBTCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBQ QVRURVJOIChhKyB8IGIqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgIERFRklORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYSBBUyAodmFsID4g MjApLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICBiIEFTICh2YWwgPD0gMjApICk7CisoMSByb3cpCisKK0RST1AgVklFVyBycHJf c2VyaWFsX3YyOworLS0gUGF0dGVybiB3aXRoIGdyb3VwaW5nIGFuZCBxdWFudGlmaWVycworQ1JF QVRFIFZJRVcgcnByX3NlcmlhbF92MyBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIg dyBhcyBjbnQKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoKEEgQil7Miw1fSB8IEMqKQorICAgIERFRklORQorICAgICAgICBBIEFTIHZh bCA+IDEwLAorICAgICAgICBCIEFTIHZhbCA+IDIwLAorICAgICAgICBDIEFTIHZhbCA8PSAxMAor KTsKK1NFTEVDVCAqIEZST00gcnByX3NlcmlhbF92MyBPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8 IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMQorICAyIHwgIDIwIHwgICAw CisgIDMgfCAgMTUgfCAgIDAKKyAgNCB8ICAyNSB8ICAgMAorICA1IHwgIDMwIHwgICAwCisoNSBy b3dzKQorCitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfdjMnOjpyZWdjbGFzcyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1Qg aWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgIHZhbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3 IEFTIGNudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgIEZST00gcnByX3NlcmlhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HICsKKyAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBQQVRURVJOICgoYSBiKXsy LDV9IHwgYyopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgIERFRklORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYSBBUyAodmFsID4gMTApLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBiIEFT ICh2YWwgPiAyMCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgIGMgQVMgKHZhbCA8PSAxMCkgKTsKKygxIHJvdykKKworRFJPUCBW SUVXIHJwcl9zZXJpYWxfdjM7CistLSBBbGwgZmVhdHVyZXMgY29tYmluZWQKK0NSRUFURSBWSUVX IHJwcl9zZXJpYWxfdjQgQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250 CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoU1RBUlQg KE1JRHsxLDN9IHwgQUxUKykgRklOSVNIKQorICAgIERFRklORQorICAgICAgICBTVEFSVCBBUyB2 YWwgPiA1LAorICAgICAgICBNSUQgQVMgdmFsIEJFVFdFRU4gMTAgQU5EIDI1LAorICAgICAgICBB TFQgQVMgdmFsID4gMjUsCisgICAgICAgIEZJTklTSCBBUyB2YWwgPiAxNQorKTsKK1NFTEVDVCAq IEZST00gcnByX3NlcmlhbF92NCBPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0r LS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgNQorICAyIHwgIDIwIHwgICA0CisgIDMgfCAgMTUg fCAgIDMKKyAgNCB8ICAyNSB8ICAgMAorICA1IHwgIDMwIHwgICAwCisoNSByb3dzKQorCitTRUxF Q1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfdjQnOjpyZWdjbGFzcyk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgaWQsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgIHZhbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3IEFTIGNudCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIEZST00g cnByX3NlcmlhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HICsKKyAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICBQQVRURVJOIChzdGFydCAobWlkezEsM30gfCBh bHQrKSBmaW5pc2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIERFRklO RSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgc3RhcnQgQVMgKHZhbCA+IDUpLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBtaWQgQVMgKCh2YWwgPj0g MTApIEFORCAodmFsIDw9IDI1KSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgIGFsdCBBUyAodmFsID4gMjUpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgZmluaXNoIEFTICh2YWwgPiAxNSkgKTsKKygx IHJvdykKKworRFJPUCBWSUVXIHJwcl9zZXJpYWxfdjQ7CistLSBBZGRpdGlvbmFsIHF1YW50aWZp ZXJzIGZvciBkZXBhcnNpbmcgY292ZXJhZ2UKKy0tID8gcXVhbnRpZmllciAoemVybyBvciBvbmUp CitDUkVBVEUgVklFVyBycHJfc2VyaWFsX3Y1IEFTCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikg T1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc2VyaWFsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBIEI/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDEwLCBCIEFTIHZh bCA+IDIwCispOworU0VMRUNUICogRlJPTSBycHJfc2VyaWFsX3Y1IE9SREVSIEJZIGlkOworIGlk IHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAwCisgIDIgfCAg MjAgfCAgIDEKKyAgMyB8ICAxNSB8ICAgMgorICA0IHwgIDI1IHwgICAwCisgIDUgfCAgMzAgfCAg IDEKKyg1IHJvd3MpCisKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX3NlcmlhbF92NSc6OnJl Z2NsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg IFNFTEVDVCBpZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgdmFsLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgq KSBPVkVSIHcgQVMgY250ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgRlJPTSBycHJfc2VyaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgKwor ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICBJTklUSUFMICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4g KGEgYj8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBhIEFTICh2YWwgPiAxMCksICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgIGIgQVMgKHZhbCA+IDIwKSApOworKDEgcm93KQorCitEUk9QIFZJRVcgcnByX3NlcmlhbF92 NTsKKy0tIHtuLH0gcXVhbnRpZmllciAobiBvciBtb3JlKQorQ1JFQVRFIFZJRVcgcnByX3Nlcmlh bF92NiBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnBy X3NlcmlhbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsyLH0p CisgICAgREVGSU5FIEEgQVMgdmFsID4gMTUKKyk7CitTRUxFQ1QgKiBGUk9NIHJwcl9zZXJpYWxf djYgT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEg fCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDE1IHwgICAwCisgIDQgfCAgMjUg fCAgIDIKKyAgNSB8ICAzMCB8ICAgMAorKDUgcm93cykKKworU0VMRUNUIHBnX2dldF92aWV3ZGVm KCdycHJfc2VyaWFsX3Y2Jzo6cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICB2YWwsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjbnQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHJwcl9zZXJpYWwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgUEFUVEVSTiAoYXsyLH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg IGEgQVMgKHZhbCA+IDE1KSApOworKDEgcm93KQorCitEUk9QIFZJRVcgcnByX3NlcmlhbF92NjsK Ky0tIHtufSBxdWFudGlmaWVyIChleGFjdGx5IG4pCitDUkVBVEUgVklFVyBycHJfc2VyaWFsX3Y3 IEFTCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc2Vy aWFsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezN9KQorICAg IERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitTRUxFQ1QgKiBGUk9NIHJwcl9zZXJpYWxfdjcgT1JE RVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAg fCAgIDMKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDE1IHwgICAwCisgIDQgfCAgMjUgfCAgIDAK KyAgNSB8ICAzMCB8ICAgMAorKDUgcm93cykKKworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJf c2VyaWFsX3Y3Jzo6cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw Z19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICB2YWwsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHJwcl9zZXJpYWwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9X IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgUEFUVEVSTiAoYXszfSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEgQVMg KHZhbCA+IDApICk7CisoMSByb3cpCisKK0RST1AgVklFVyBycHJfc2VyaWFsX3Y3OworLS0gTmVz dGVkIEFMVCBwYXR0ZXJuICh0ZXN0cyBkZXBhcnNlIG9mIGNvbXBsZXggbmVzdGVkIHN0cnVjdHVy ZSkKK0NSRUFURSBWSUVXIHJwcl9zZXJpYWxfdjggQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKCgoQSsgQikgfCBDKSBEIHwgQSBCIEMpCisgICAgREVGSU5FIEEg QVMgdmFsIDw9IDE1LCBCIEFTIHZhbCA8PSAyNSwgQyBBUyB2YWwgPD0gMzAsIEQgQVMgdmFsID4g MzAKKyk7CitTRUxFQ1QgKiBGUk9NIHJwcl9zZXJpYWxfdjggT1JERVIgQlkgaWQ7CisgaWQgfCB2 YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDMKKyAgMiB8ICAyMCB8 ICAgMAorICAzIHwgIDE1IHwgICAwCisgIDQgfCAgMjUgfCAgIDAKKyAgNSB8ICAzMCB8ICAgMAor KDUgcm93cykKKworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfc2VyaWFsX3Y4Jzo6cmVnY2xh c3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VM RUNUIGlkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICB2YWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9W RVIgdyBBUyBjbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICBGUk9NIHJwcl9zZXJpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyArCisgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAoKChh KyBiKSB8IGMpIGQgfCBhIGIgYykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEgQVMgKHZhbCA8PSAxNSksICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg YiBBUyAodmFsIDw9IDI1KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICBjIEFTICh2YWwgPD0gMzApLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGQgQVMgKHZhbCA+ IDMwKSApOworKDEgcm93KQorCitEUk9QIFZJRVcgcnByX3NlcmlhbF92ODsKK0RST1AgVEFCTEUg cnByX3NlcmlhbDsKKy0tIE1hdGVyaWFsaXplZCB2aWV3IChpZiBzdXBwb3J0ZWQpCitDUkVBVEUg VEFCTEUgcnByX212aWV3IChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX212aWV3 IFZBTFVFUyAoMSwgMTApLCAoMiwgMjApLCAoMywgMzApOworQ1JFQVRFIE1BVEVSSUFMSVpFRCBW SUVXIHJwcl9tdmlld192MSBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBj bnQKK0ZST00gcnByX212aWV3CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworU0VMRUNUICogRlJPTSBycHJf bXZpZXdfdjEgT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0t CisgIDEgfCAgMTAgfCAgIDMKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisoMyBy b3dzKQorCitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9tdmlld192MSc6OnJlZ2NsYXNzKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBp ZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgdmFsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcg QVMgY250ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgRlJPTSBycHJfbXZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgKworICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICBJTklUSUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4gKGErKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICBhIEFTICh2YWwgPiAwKSApOworKDEgcm93KQor CistLSBSZWZyZXNoIHRlc3QKK1JFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVcgcnByX212aWV3X3Yx OworU0VMRUNUICogRlJPTSBycHJfbXZpZXdfdjEgT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBj bnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDMKKyAgMiB8ICAyMCB8ICAgMAor ICAzIHwgIDMwIHwgICAwCisoMyByb3dzKQorCitEUk9QIE1BVEVSSUFMSVpFRCBWSUVXIHJwcl9t dmlld192MTsKK0RST1AgVEFCTEUgcnByX212aWV3OworLS0gUHJlcGFyZWQgc3RhdGVtZW50cyAo dGVzdHMgb3V0ZnVuY3MuYyAvIHJlYWRmdW5jcy5jKQorQ1JFQVRFIFRBQkxFIHJwcl9wcmVwIChp ZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3ByZXAgVkFMVUVTICgxLCAxMCksICgy LCAyMCksICgzLCAzMCk7CistLSBTaW1wbGUgcHJlcGFyZWQgc3RhdGVtZW50CitQUkVQQVJFIHJw cl9wcmVwX3NpbXBsZSBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK K0ZST00gcnByX3ByZXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworRVhFQ1VURSBy cHJfcHJlcF9zaW1wbGU7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEg fCAgMTAgfCAgIDMKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisoMyByb3dzKQor CitFWEVDVVRFIHJwcl9wcmVwX3NpbXBsZTsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0r LS0tLS0KKyAgMSB8ICAxMCB8ICAgMworICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAK KygzIHJvd3MpCisKK0RFQUxMT0NBVEUgcnByX3ByZXBfc2ltcGxlOworLS0gUHJlcGFyZWQgc3Rh dGVtZW50IHdpdGggcGFyYW1ldGVycworUFJFUEFSRSBycHJfcHJlcF9wYXJhbShpbnQpIEFTCitT RUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcHJlcAorV0hF UkUgaWQgPD0gJDEKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEr KQorICAgIERFRklORSBBIEFTIHZhbCA+IDEwCispCitPUkRFUiBCWSBpZDsKK0VYRUNVVEUgcnBy X3ByZXBfcGFyYW0oMik7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEg fCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMQorKDIgcm93cykKKworRVhFQ1VURSBycHJfcHJl cF9wYXJhbSgzKTsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAx MCB8ICAgMAorICAyIHwgIDIwIHwgICAyCisgIDMgfCAgMzAgfCAgIDAKKygzIHJvd3MpCisKK0RF QUxMT0NBVEUgcnByX3ByZXBfcGFyYW07CistLSBDb21wbGV4IHByZXBhcmVkIHN0YXRlbWVudAor UFJFUEFSRSBycHJfcHJlcF9jb21wbGV4IEFTCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZF UiB3IGFzIGNudAorRlJPTSBycHJfcHJlcAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBIEIpezEsMn0g fCBDKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2YWwgPiA1LAorICAgICAgICBCIEFTIHZh bCA+IDE1LAorICAgICAgICBDIEFTIHZhbCA8PSAxNQorKQorT1JERVIgQlkgaWQ7CitFWEVDVVRF IHJwcl9wcmVwX2NvbXBsZXg7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisg IDEgfCAgMTAgfCAgIDIKKyAgMiB8ICAyMCB8ICAgMgorICAzIHwgIDMwIHwgICAwCisoMyByb3dz KQorCitFWEVDVVRFIHJwcl9wcmVwX2NvbXBsZXg7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0t LS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDIKKyAgMiB8ICAyMCB8ICAgMgorICAzIHwgIDMwIHwg ICAwCisoMyByb3dzKQorCitERUFMTE9DQVRFIHJwcl9wcmVwX2NvbXBsZXg7CitEUk9QIFRBQkxF IHJwcl9wcmVwOworLS0gQ1RFIGFuZCBTdWJxdWVyeSAodGVzdHMgY29weWZ1bmNzLmMpCitDUkVB VEUgVEFCTEUgcnByX2NvcHkgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfY29w eSBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDMwKSwgKDQsIDQwKTsKKy0tIFNpbXBsZSBD VEUKK1dJVEggcnByX2N0ZSBBUyAoCisgICAgU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIg dyBhcyBjbnQKKyAgICBGUk9NIHJwcl9jb3B5CisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBP UkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFTIHZh bCA+IDAKKyAgICApCispCitTRUxFQ1QgKiBGUk9NIHJwcl9jdGUgT1JERVIgQlkgaWQ7CisgaWQg fCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDQKKyAgMiB8ICAy MCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAgNDAgfCAgIDAKKyg0IHJvd3MpCisKKy0t IENURSB3aXRoIG11bHRpcGxlIHJlZmVyZW5jZXMgKGZvcmNlcyBub2RlIGNvcHkpCitXSVRIIHJw cl9jdGUgQVMgKAorICAgIFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250Cisg ICAgRlJPTSBycHJfY29weQorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQK KyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAxNQorICAg ICkKKykKK1NFTEVDVCBjMS5pZCwgYzEuY250IGFzIGNudDEsIGMyLmNudCBhcyBjbnQyCitGUk9N IHJwcl9jdGUgYzEKK0pPSU4gcnByX2N0ZSBjMiBPTiBjMS5pZCA9IGMyLmlkCitPUkRFUiBCWSBj MS5pZDsKKyBpZCB8IGNudDEgfCBjbnQyIAorLS0tLSstLS0tLS0rLS0tLS0tCisgIDEgfCAgICAw IHwgICAgMAorICAyIHwgICAgMyB8ICAgIDMKKyAgMyB8ICAgIDAgfCAgICAwCisgIDQgfCAgICAw IHwgICAgMAorKDQgcm93cykKKworLS0gU3VicXVlcnkgaW4gRlJPTSBjbGF1c2UKK1NFTEVDVCAq CitGUk9NICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAg IEZST00gcnByX2NvcHkKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisg ICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgICAgICBQQVRURVJOIChBIEI/KQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAxMCwgQiBB UyB2YWwgPiAyMAorICAgICkKKykgc3ViCitXSEVSRSBjbnQgPiAwCitPUkRFUiBCWSBpZDsKKyBp ZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKKy0tIE5lc3RlZCBz dWJxdWVyaWVzCitTRUxFQ1QgKgorRlJPTSAoCisgICAgU0VMRUNUICoKKyAgICBGUk9NICgKKyAg ICAgICAgU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyAgICAgICAgRlJP TSBycHJfY29weQorICAgICAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgICAgICBPUkRFUiBCWSBp ZAorICAgICAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgICAgIERFRklORSBBIEFT IHZhbCA+PSAxMAorICAgICAgICApCisgICAgKSBpbm5lcl9zdWIKKyAgICBXSEVSRSBjbnQgPiAw CispIG91dGVyX3N1YgorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0t Ky0tLS0tCisgIDEgfCAgMTAgfCAgIDQKKygxIHJvdykKKworRFJPUCBUQUJMRSBycHJfY29weTsK Ky0tIERJU1RJTkNUIGFuZCBzZXQgb3BlcmF0aW9ucyAodGVzdHMgZXF1YWxmdW5jcy5jKQorQ1JF QVRFIFRBQkxFIHJwcl9lcXVhbCAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9l cXVhbCBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDEwKSwgKDQsIDIwKTsKKy0tIERJU1RJ TkNUIHdpdGggUlBSCitTRUxFQ1QgRElTVElOQ1QgY250CitGUk9NICgKKyAgICBTRUxFQ1QgaWQs IHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX2VxdWFsCisgICAgV0lO RE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSB2YWwKKyAgICAgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFT IHZhbCA+IDAKKyAgICApCispIHN1YgorT1JERVIgQlkgY250OworIGNudCAKKy0tLS0tCisgICAx CisgICAyCisgICAzCisgICA0CisoNCByb3dzKQorCistLSBVTklPTiB3aXRoIFJQUiBpbiBib3Ro IHNpZGVzCitTRUxFQ1QgaWQsIHZhbCwgY250IEZST00gKAorICAgIFNFTEVDVCBpZCwgdmFsLCBD T1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgRlJPTSBycHJfZXF1YWwKKyAgICBXSEVSRSB2YWwg PSAxMAorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBB VFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgICAgKQorKSBzdWIxCitV TklPTgorU0VMRUNUIGlkLCB2YWwsIGNudCBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgQ09V TlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX2VxdWFsCisgICAgV0hFUkUgdmFsID0g MjAKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRU RVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICAgICkKKykgc3ViMgorT1JE RVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAg fCAgIDIKKyAgMiB8ICAyMCB8ICAgMgorICAzIHwgIDEwIHwgICAwCisgIDQgfCAgMjAgfCAgIDAK Kyg0IHJvd3MpCisKKy0tIFVOSU9OIEFMTAorU0VMRUNUIGlkLCBjbnQgRlJPTSAoCisgICAgU0VM RUNUIGlkLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgRlJPTSBycHJfZXF1YWwKKyAgICBX SU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykK KyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMTAKKyAgICApCispIHN1YgorVU5JT04gQUxMCitT RUxFQ1QgaWQsIGNudCBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIENPVU5UKCopIE9WRVIgdyBhcyBj bnQKKyAgICBGUk9NIHJwcl9lcXVhbAorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIg QlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPD0g MTAKKyAgICApCispIHN1YgorT1JERVIgQlkgaWQsIGNudDsKKyBpZCB8IGNudCAKKy0tLS0rLS0t LS0KKyAgMSB8ICAgMAorICAxIHwgICAxCisgIDIgfCAgIDAKKyAgMiB8ICAgMQorICAzIHwgICAw CisgIDMgfCAgIDEKKyAgNCB8ICAgMAorICA0IHwgICAxCisoOCByb3dzKQorCistLSBJTlRFUlNF Q1QKK1NFTEVDVCBpZCwgY250IEZST00gKAorICAgIFNFTEVDVCBpZCwgQ09VTlQoKikgT1ZFUiB3 IGFzIGNudAorICAgIEZST00gcnByX2VxdWFsCisgICAgV0hFUkUgaWQgPD0gMworICAgIFdJTkRP VyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAg ICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgICAgKQorKSBzdWIxCitJTlRFUlNFQ1QKK1NFTEVD VCBpZCwgY250IEZST00gKAorICAgIFNFTEVDVCBpZCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAor ICAgIEZST00gcnByX2VxdWFsCisgICAgV0hFUkUgaWQgPj0gMgorICAgIFdJTkRPVyB3IEFTICgK KyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJ TkUgQSBBUyB2YWwgPiAwCisgICAgKQorKSBzdWIyCitPUkRFUiBCWSBpZDsKKyBpZCB8IGNudCAK Ky0tLS0rLS0tLS0KKyAgMyB8ICAgMAorKDEgcm93KQorCitEUk9QIFRBQkxFIHJwcl9lcXVhbDsK Ky0tIFZpZXcgd2l0aCBtdWx0aXBsZSB3aW5kb3cgZGVmaW5pdGlvbnMKK0NSRUFURSBUQUJMRSBy cHJfbXVsdGl3aW4gKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfbXVsdGl3aW4g VkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCk7CitDUkVBVEUgVklFVyBycHJfbXVsdGl3 aW5fdiBBUworU0VMRUNUCisgICAgaWQsCisgICAgdmFsLAorICAgIENPVU5UKCopIE9WRVIgdzEg YXMgY250MSwKKyAgICBDT1VOVCgqKSBPVkVSIHcyIGFzIGNudDIKK0ZST00gcnByX211bHRpd2lu CitXSU5ET1cKKyAgICB3MSBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRU RVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMTUKKyAgICApLAorICAgIHcyIEFT ICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEIqKQorICAgICAgICBE RUZJTkUgQiBBUyB2YWwgPD0gMTUKKyAgICApOworU0VMRUNUICogRlJPTSBycHJfbXVsdGl3aW5f diBPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudDEgfCBjbnQyIAorLS0tLSstLS0tLSstLS0t LS0rLS0tLS0tCisgIDEgfCAgMTAgfCAgICAwIHwgICAgMQorICAyIHwgIDIwIHwgICAgMiB8ICAg IDAKKyAgMyB8ICAzMCB8ICAgIDAgfCAgICAwCisoMyByb3dzKQorCitTRUxFQ1QgcGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9tdWx0aXdpbl92Jzo6cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxF Q1QgaWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICB2YWwsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcxIEFTIGNudDEsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgq KSBPVkVSIHcyIEFTIGNudDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgIEZST00gcnByX211bHRpd2luICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgV0lORE9XIHcxIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgICAgICAgICAgICAgKworICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg UEFUVEVSTiAoYSspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5FICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgYSBBUyAodmFsID4gMTUpICksIHcyIEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgKworICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgUEFUVEVSTiAoYiopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5FICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgYiBBUyAodmFsIDw9IDE1KSApOworKDEgcm93KQorCitE Uk9QIFZJRVcgcnByX211bHRpd2luX3Y7CitEUk9QIFRBQkxFIHJwcl9tdWx0aXdpbjsKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gRXJyb3IgQ2FzZXMgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRFJPUCBUQUJMRSBJRiBFWElTVFMgcnBy X2VycjsKK0NSRUFURSBUQUJMRSBycHJfZXJyIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElO VE8gcnByX2VyciBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKKy0tIFN5bnRheCBlcnJvcnMKKy0t IEludmFsaWQgcXVhbnRpZmllciBzeW50YXgKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00g cnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSshKQor ICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHVuc3VwcG9ydGVkIHF1YW50aWZp ZXIgIishIgorTElORSA2OiAgICAgUEFUVEVSTiAoQSshKQorICAgICAgICAgICAgICAgICAgICAg IF4KK0hJTlQ6ICBWYWxpZCBxdWFudGlmaWVycyBhcmU6ICosICssID8sICo/LCArPywgPz8sIHtu fSwge24sfSwgeyxtfSwge24sbX0gYW5kIHRoZWlyIHJlbHVjdGFudCB2ZXJzaW9ucy4KKy0tIEV4 cGVjdGVkOiBTeW50YXggZXJyb3IKKy0tIFVubWF0Y2hlZCBwYXJlbnRoZXNlcworU0VUIGNsaWVu dF9taW5fbWVzc2FnZXMgPSBOT1RJQ0U7CitETyAkJAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxF Q1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX2VyciBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4g KChBIEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsID4gMTApJzsKKyAgICBSQUlTRSBO T1RJQ0UgJ1VubWF0Y2hlZCBwYXJlbnRoZXNlczogVU5FWFBFQ1RFRCBTVUNDRVNTJzsKK0VYQ0VQ VElPTgorICAgIFdIRU4gc3ludGF4X2Vycm9yIFRIRU4KKyAgICAgICAgUkFJU0UgTk9USUNFICdV bm1hdGNoZWQgcGFyZW50aGVzZXM6IEVYUEVDVEVEIEVSUk9SIC0gJScsIFNRTEVSUk07CisgICAg V0hFTiBPVEhFUlMgVEhFTgorICAgICAgICBSQUlTRSBOT1RJQ0UgJ1VubWF0Y2hlZCBwYXJlbnRo ZXNlczogVU5FWFBFQ1RFRCBFUlJPUiAtICUnLCBTUUxFUlJNOworRU5EICQkOworTk9USUNFOiAg VW5tYXRjaGVkIHBhcmVudGhlc2VzOiBFWFBFQ1RFRCBFUlJPUiAtIHN5bnRheCBlcnJvciBhdCBv ciBuZWFyICJBUyIKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gV0FSTklORzsKKy0tIEVtcHR5 IERFRklORQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUKKyk7CitFUlJP UjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIpIgorTElORSA4OiApOworICAgICAgICBeCist LSBFeHBlY3RlZDogU3ludGF4IGVycm9yCistLSBFbXB0eSBQQVRURVJOCitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKCkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBzeW50YXgg ZXJyb3IgYXQgb3IgbmVhciAiKSIKK0xJTkUgNjogICAgIFBBVFRFUk4gKCkKKyAgICAgICAgICAg ICAgICAgICAgIF4KKy0tIEV4cGVjdGVkOiBTeW50YXggZXJyb3IKKy0tIERFRklORSB3aXRob3V0 IFBBVFRFUk4gKFBBVFRFUk4gYW5kIERFRklORSBtdXN0IGJlIHVzZWQgdG9nZXRoZXIpCitTRUxF Q1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBh dCBvciBuZWFyICJERUZJTkUiCitMSU5FIDY6ICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgICAg ICAgICAgICBeCistLSBFeHBlY3RlZDogU3ludGF4IGVycm9yCistLSBRdWFsaWZpZWQgY29sdW1u IHJlZmVyZW5jZXMgKE5PVCBTVVBQT1JURUQpCistLSBQYXR0ZXJuIHZhcmlhYmxlcyBpbiBERUZJ TkUgY2xhdXNlIGNhbm5vdCB1c2UgcXVhbGlmaWVkIHJlZmVyZW5jZXMgKEEucHJpY2UpCistLSBU aGlzIGdpdmVzIGEgY29uZnVzaW5nIGVycm9yIGFib3V0IG1pc3NpbmcgRlJPTS1jbGF1c2UgZW50 cnkKKy0tIFF1YWxpZmllZCByZWZlcmVuY2UgaW4gREVGSU5FIGNsYXVzZQorU0VMRUNUIENPVU5U KCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBBLnZhbCA+IDAKKyk7CitFUlJPUjogIG1p c3NpbmcgRlJPTS1jbGF1c2UgZW50cnkgZm9yIHRhYmxlICJhIgorTElORSA3OiAgICAgREVGSU5F IEEgQVMgQS52YWwgPiAwCisgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFeHBlY3RlZDog RVJST1I6IG1pc3NpbmcgRlJPTS1jbGF1c2UgZW50cnkgZm9yIHRhYmxlICJhIgorLS0gU2VtYW50 aWMgZXJyb3JzCistLSBVbmRlZmluZWQgY29sdW1uIGluIERFRklORQorU0VMRUNUIENPVU5UKCop IE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBub25leGlzdGVudF9jb2x1bW4gPiAwCispOwor RVJST1I6ICBjb2x1bW4gIm5vbmV4aXN0ZW50X2NvbHVtbiIgZG9lcyBub3QgZXhpc3QKK0xJTkUg NzogICAgIERFRklORSBBIEFTIG5vbmV4aXN0ZW50X2NvbHVtbiA+IDAKKyAgICAgICAgICAgICAg ICAgICAgICAgIF4KKy0tIEV4cGVjdGVkOiBFUlJPUjogY29sdW1uICJub25leGlzdGVudF9jb2x1 bW4iIGRvZXMgbm90IGV4aXN0CistLSBUeXBlIG1pc21hdGNoCitTRUxFQ1QgQ09VTlQoKikgT1ZF UiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+ICdzdHJpbmcnCispOworRVJST1I6ICBpbnZh bGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAic3RyaW5nIgorTElORSA3OiAgICAg REVGSU5FIEEgQVMgdmFsID4gJ3N0cmluZycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KKy0tIEV4cGVjdGVkOiBFUlJPUjogaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50 ZWdlcjogInN0cmluZyIKKy0tIEFnZ3JlZ2F0ZSBmdW5jdGlvbiBpbiBERUZJTkUgKGlmIG5vdCBh bGxvd2VkKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBDT1VO VCgqKSA+IDAKKyk7CitFUlJPUjogIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2Vk IGluIERFRklORQorTElORSA3OiAgICAgREVGSU5FIEEgQVMgQ09VTlQoKikgPiAwCisgICAgICAg ICAgICAgICAgICAgICAgICBeCistLSBFeHBlY3RlZDogRVJST1Igb3Igd29ya3MgZGVwZW5kaW5n IG9uIGltcGxlbWVudGF0aW9uCistLSBTdWJxdWVyeSBpbiBERUZJTkUgKE5PVCBTVVBQT1JURUQp CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IChTRUxF Q1QgbWF4KHZhbCkgRlJPTSBycHJfZXJyKQorKTsKK0VSUk9SOiAgY2Fubm90IHVzZSBzdWJxdWVy eSBpbiBERUZJTkUgZXhwcmVzc2lvbgorTElORSA3OiAgICAgREVGSU5FIEEgQVMgdmFsID4gKFNF TEVDVCBtYXgodmFsKSBGUk9NIHJwcl9lcnIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCistLSBFeHBlY3RlZDogRVJST1I6IGNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gREVGSU5FIGV4 cHJlc3Npb24KKy0tIEVkZ2UgY2FzZXMKKy0tIFBhdHRlcm4gdmFyaWFibGUgbm90IHVzZWQgKHNo b3VsZCB3b3JrLCBleHRyYSB2YXJzIGlnbm9yZWQpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikg T1ZFUiB3IGFzIGNudAorRlJPTSBycHJfZXJyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDUs IEMgQVMgdmFsID4gMTAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSst LS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAyCisgIDIgfCAgMjAgfCAgIDAKKygyIHJvd3MpCisK K0RST1AgVEFCTEUgcnByX2VycjsKKy0tIE5VTEwgaGFuZGxpbmcKK0NSRUFURSBUQUJMRSBycHJf bnVsbCAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9udWxsIFZBTFVFUyAoMSwg MTApLCAoMiwgTlVMTCksICgzLCAzMCk7CistLSBOVUxMIGluIERFRklORSBleHByZXNzaW9uCitT RUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbnVsbAorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEg QVMgdmFsID4gMTUKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0t LSstLS0tLQorICAxIHwgIDEwIHwgICAwCisgIDIgfCAgICAgfCAgIDAKKyAgMyB8ICAzMCB8ICAg MQorKDMgcm93cykKKworLS0gSVMgTlVMTCBpbiBERUZJTkUKK1NFTEVDVCBpZCwgdmFsLCBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9udWxsCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChOKykKKyAgICBERUZJTkUgTiBBUyB2YWwgSVMgTlVMTAorKQor T1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAg MTAgfCAgIDAKKyAgMiB8ICAgICB8ICAgMQorICAzIHwgIDMwIHwgICAwCisoMyByb3dzKQorCist LSBJUyBOT1QgTlVMTCBpbiBERUZJTkUKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CitGUk9NIHJwcl9udWxsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChOTispCisgICAgREVGSU5FIE5OIEFTIHZhbCBJUyBOT1QgTlVMTAorKQorT1JERVIg QlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAg IDEKKyAgMiB8ICAgICB8ICAgMAorICAzIHwgIDMwIHwgICAxCisoMyByb3dzKQorCitEUk9QIFRB QkxFIHJwcl9udWxsOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBQYXR0ZXJuIE9wdGltaXphdGlvbiBUZXN0cworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBUZXN0cyBmb3IgcGF0dGVybiBvcHRpbWl6YXRpb24gaW4gb3B0aW1pemVyL3BsYW4v cnByLmMKKy0tIFVzZSBFWFBMQUlOIHRvIHZlcmlmeSBvcHRpbWl6ZWQgcGF0dGVybiAoc2hvd24g YXMgIlBhdHRlcm46IC4uLiIpCitDUkVBVEUgVEFCTEUgcnByX3BsYW4gKGlkIElOVCwgdmFsIElO VCk7CitJTlNFUlQgSU5UTyBycHJfcGxhbiBWQUxVRVMKKyAgICAoMSwgMTApLCAoMiwgMjApLCAo MywgMzApLCAoNCwgNDApLCAoNSwgNTApLAorICAgICg2LCA2MCksICg3LCA3MCksICg4LCA4MCks ICg5LCA5MCksICgxMCwgMTAwKTsKKy0tIENvbnNlY3V0aXZlIFZBUiBtZXJnZTogQSBBIEEgLT4g YXszfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJw cl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQSBBIEEpIERF RklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiBhezN9CisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcnByX3BsYW4KKyg2IHJvd3MpCisKKy0tIENvbnNlY3V0aXZlIFZBUiBtZXJn ZTogQXsyfSBBezN9IC0+IGF7NX0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBB VFRFUk4gKEF7Mn0gQXszfSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORykKKyAgIFBhdHRlcm46IGF7NX0KKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtl eTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDYgcm93cykKKworLS0g Q29uc2VjdXRpdmUgVkFSIG1lcmdlOiBBKyBBKiAtPiBhKworRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgICAgICAgUEFUVEVSTiAoQSsgQSopIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAg V2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIKKyAgIC0+ICBTb3J0CisgICAgICAg ICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDYgcm93 cykKKworLS0gQ29uc2VjdXRpdmUgVkFSIG1lcmdlOiBBIEErIC0+IGF7Mix9CistLSBUZXN0cyBs aW5lIDI1MTogY2hpbGQtPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GIGJyYW5jaCBpbiBtZXJnZUNv bnNlY3V0aXZlVmFycworLS0gcHJldjogQXsxLDF9IChmaW5pdGUpLCBjaGlsZDogQSsgKGluZmlu aXRlKSB0cmlnZ2VycyBsaW5lIDI1MSBldmFsdWF0aW9uCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICAgICAgICAgICBQQVRURVJOIChBIEErKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdp bmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYXsyLH0iCisgICAtPiAgU29ydAorICAgICAg ICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg2IHJv d3MpCisKKy0tIENvbnNlY3V0aXZlIEdST1VQIG1lcmdlIHdpdGggZmluaXRlIHF1YW50aWZpZXJz OiAoKEEgQil7NX0pICgoQSBCKXsxMH0pIC0+IG1lcmdlZAorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgICAgICAgUEFUVEVSTiAoKChBIEIpezV9KSAoKEEgQil7MTB9KSkgREVGSU5FIEEgQVMg dmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAg UGF0dGVybjogKGEgYil7MTV9CisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg2IHJvd3MpCisKKy0tIENvbnNlY3V0 aXZlIEdST1VQIG1lcmdlIHdpdGggdW5ib3VuZGVkOiAoQSBCKSsgKEEgQikrIC0+IChhIGIpezIs fQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9w bGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgQikrIChBIEIp KykgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzog dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEnIGInKXsyLH0iCisgICAtPiAgU29ydAorICAgICAg ICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg2IHJv d3MpCisKKy0tIENvbnNlY3V0aXZlIEdST1VQIG1lcmdlOiAoQSBCKXsyfSAoQSBCKSsgLT4gKGEg Yil7Myx9CistLSBUZXN0cyBsaW5lIDMyNTogY2hpbGQtPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5G IGJyYW5jaCBpbiBtZXJnZUNvbnNlY3V0aXZlR3JvdXBzCistLSBwcmV2OiAoQSBCKXsyLDJ9IChm aW5pdGUpLCBjaGlsZDogKEEgQikrIChpbmZpbml0ZSkgdHJpZ2dlcnMgbGluZSAzMjUgZXZhbHVh dGlvbgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJw cl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgQil7Mn0g KEEgQikrKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2lu ZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYScgYicpezMsfSIKKyAgIC0+ICBTb3J0Cisg ICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgor KDYgcm93cykKKworLS0gUFJFRklYIG1lcmdlOiBBIEIgKEEgQikrIC0+IChhIGIpezIsfQorRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQSBCIChBIEIpKykgREVGSU5F IEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H KQorICAgUGF0dGVybjogKGEnIGInKXsyLH0iCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBL ZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg2IHJvd3MpCisKKy0t IFBSRUZJWCBhbmQgU1VGRklYIG1lcmdlOiBBIEIgKEEgQikrIEEgQiAtPiAoYSBiKXszLH0KK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgor V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEgQiAoQSBCKSsgQSBCKSBE RUZJTkUgQSBBUyB2YWwgPD0gNDAsIEIgQVMgdmFsID4gNDApOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcpCisgICBQYXR0ZXJuOiAoYScgYicpezMsfSIKKyAgIC0+ICBTb3J0CisgICAgICAgICBT b3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDYgcm93cykK KworLS0gRmxhdHRlbiBuZXN0ZWQ6IEEgKChCKSAoQykpIC0+IGEgYiBjCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBICgoQikgKEMpKSkgREVGSU5FIEEgQVMgdmFs IDw9IDMwLCBCIEFTIHZhbCA8PSA2MCwgQyBBUyB2YWwgPiA2MCk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORykKKyAgIFBhdHRlcm46IGEgYiBjCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBL ZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg2IHJvd3MpCisKKy0t IEFMVCBmbGF0dGVuOiAoQSB8IChCIHwgQykpKyAtPiAoYSB8IGIgfCBjKSsKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIHwgKEIgfCBDKSkrKSBERUZJTkUgQSBB UyB2YWwgPD0gMzAsIEIgQVMgdmFsIDw9IDYwLCBDIEFTIHZhbCA+IDYwKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRv dzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgfCBiIHwgYykrCisgICAtPiAgU29ydAorICAg ICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg2 IHJvd3MpCisKKy0tIEFMVCBkZWR1cGxpY2F0ZTogKEEgfCBCIHwgQSkgLT4gKGEgfCBiKQorRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgfCBCIHwgQSkrKSBERUZJ TkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChP UkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcpCisgICBQYXR0ZXJuOiAoYSB8IGIpKworICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5 OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNiByb3dzKQorCistLSBR dWFudGlmaWVyIG11bHRpcGx5OiAoQXsyfSl7M30gLT4gYXs2fQorRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7Mn0pezN9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dB Z2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYXs2fQorICAgLT4gIFNvcnQK KyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFu CisoNiByb3dzKQorCistLSBRdWFudGlmaWVyIG11bHRpcGx5IHdpdGggY2hpbGQgcmFuZ2U6IChB ezIsM30pezN9IC0+IGF7Niw5fQorLS0gb3V0ZXIgZXhhY3QsIGNoaWxkIHJhbmdlIC0gb3B0aW1p emF0aW9uIGFwcGxpZXMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4g KChBezIsM30pezN9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgUGF0dGVybjogYXs2LDl9CisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6 IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg2IHJvd3MpCisKKy0tIFF1 YW50aWZpZXIgTk8gbXVsdGlwbHk6IChBezJ9KXsyLDN9IHN0YXlzIGFzIChhezJ9KXsyLDN9Cist LSBvdXRlciByYW5nZSAtIGdhcHMgd291bGQgb2NjdXIgKDQsNiBub3QgNCw1LDYpLCBubyBvcHRp bWl6YXRpb24KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJP TSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBezJ9 KXsyLDN9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogKGF7Mn0pezIsM30KKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTog aWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDYgcm93cykKKworLS0gUXVh bnRpZmllciBOTyBtdWx0aXBseTogKEF7Mn0pezIsfSBzdGF5cyBhcyAoYXsyfSl7Mix9CistLSBv dXRlciB1bmJvdW5kZWQgLSBnYXBzIHdvdWxkIG9jY3VyICg0LDYsOCwuLi4gbm90IDQsNSw2LC4u LiksIG5vIG9wdGltaXphdGlvbgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCop IE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFU VEVSTiAoKEF7Mn0pezIsfSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORykKKyAgIFBhdHRlcm46IChhezJ9KXsyLH0KKyAgIC0+ICBTb3J0CisgICAgICAgICBT b3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDYgcm93cykK KworLS0gUXVhbnRpZmllciBtdWx0aXBseTogKEEpezIsfSAtPiBhezIsfQorLS0gY2hpbGQgZXhh Y3QgMSAtIG5vIGdhcHMsIG9wdGltaXphdGlvbiBhcHBsaWVzCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgICAgICBQQVRURVJOICgoQSl7Mix9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cK KyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYXsyLH0iCisgICAtPiAgU29ydAor ICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4K Kyg2IHJvd3MpCisKKy0tIFF1YW50aWZpZXIgbXVsdGlwbHk6IChBKSsgLT4gYSsKKy0tIGNoaWxk IGV4YWN0IDEgLSBubyBnYXBzLCBvcHRpbWl6YXRpb24gYXBwbGllcworRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEpKykgREVGSU5FIEEgQVMgdmFsID4gMCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdn CisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIgorICAgLT4gIFNvcnQKKyAg ICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCiso NiByb3dzKQorCistLSBRdWFudGlmaWVyIE5PIG11bHRpcGx5OiAoQXsyfSl7Myw1fSBzdGF5cyBh cyAoYXsyfSl7Myw1fQorLS0gb3V0ZXIgcmFuZ2UsIGNoaWxkIGV4YWN0ID4gMSAtIGdhcHMgd291 bGQgb2NjdXIgKDYsOCwxMCBub3QgNiw3LDgsOSwxMCkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZ IGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICAgICAgIFBBVFRFUk4gKChBezJ9KXszLDV9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cK KyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGF7Mn0pezMsNX0KKyAgIC0+ICBT b3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJf cGxhbgorKDYgcm93cykKKworLS0gUXVhbnRpZmllciBOTyBtdWx0aXBseTogKEF7MiwzfSl7Miwz fSBzdGF5cyBhcyAoYXsyLDN9KXsyLDN9CistLSBvdXRlciByYW5nZSwgY2hpbGQgcmFuZ2UgLSBn YXBzIHBvc3NpYmxlIChlLmcuLCAoQXs0LDV9KXsyLDN9IG1pc3NlcyAxMSkKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBezIsM30pezIsM30pIERFRklORSBBIEFT IHZhbCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYXsyLDN9 KXsyLDN9CisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcnByX3BsYW4KKyg2IHJvd3MpCisKKy0tIE5lc3RlZCB1bmJvdW5kZWQ6IChB KikqIC0+IGEqCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSop KikgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBh dHRlcm46IGEqIgorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNiByb3dzKQorCistLSBOZXN0ZWQgdW5ib3VuZGVk OiAoQSspKiAtPiBhKgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIg dyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAo KEErKSopIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisg ICBQYXR0ZXJuOiBhKiIKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDYgcm93cykKKworLS0gTmVzdGVkIHVuYm91 bmRlZDogKEErKSsgLT4gYSsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBP VkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRF Uk4gKChBKykrKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H KQorICAgUGF0dGVybjogYSsiCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg2IHJvd3MpCisKKy0tIFVud3JhcCBH Uk9VUHsxLDF9OiAoQSkgLT4gYQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCop IE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFU VEVSTiAoKEEpKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H KQorICAgUGF0dGVybjogYQorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNiByb3dzKQorCistLSBVbndyYXAgR1JP VVB7MSwxfTogKEEgQikgLT4gYSBiCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQ QVRURVJOICgoQSBCKSkgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cK KyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSBiCisgICAtPiAgU29ydAorICAg ICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg2 IHJvd3MpCisKKy0tIENvbWJpbmVkIG9wdGltaXphdGlvbjogQSBBIChCIEIpKyBCIEIgQyBDIEMg LT4gYXsyfSAoYnsyfSl7Mix9IGN7M30KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VO VCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAg IFBBVFRFUk4gKEEgQSAoQiBCKSsgQiBCIEMgQyBDKQorICAgICAgICAgICAgIERFRklORSBBIEFT IHZhbCA8PSAyMCwgQiBBUyB2YWwgPiAyMCBBTkQgdmFsIDw9IDcwLCBDIEFTIHZhbCA+IDcwKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dB Z2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYXsyfSAoYnsyfSl7Mix9IGN7 M30KKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBycHJfcGxhbgorKDYgcm93cykKKworLS0gQ29uc2VjdXRpdmUgR1JPVVAgbWVyZ2Ug d2l0aCB1bmJvdW5kZWQ6IChBKykgKEErKSAtPiBhezIsfQorLS0gVGVzdHMgbWVyZ2VDb25zZWN1 dGl2ZUdyb3VwcyB3aXRoIGNoaWxkLT5tYXggPT0gSU5GCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICAgICAgICAgICBQQVRURVJOICgoQSspIChBKykpIERFRklORSBBIEFTIHZhbCA+IDApOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZwor ICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhezIsfSIKKyAgIC0+ICBTb3J0Cisg ICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgor KDYgcm93cykKKworLS0gQ29uc2VjdXRpdmUgR1JPVVAgbWVyZ2UgZmluaXRlOiAoQXsxMH0pezIw fSAtPiBhezIwMH0KKy0tIFRlc3RzIG1lcmdlQ29uc2VjdXRpdmVHcm91cHMgd2l0aCBib3RoIGZp bml0ZQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJw cl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7MTB9KXsy MH0pIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBp ZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQ YXR0ZXJuOiBhezIwMH0KKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDYgcm93cykKKworLS0gRGlmZmVyZW50IEdS T1VQIHByZXZlbnRzIG1lcmdlOiAoQSBCKXsyfSAoQyBEKXszfQorLS0gVGVzdHMgbWVyZ2VDb25z ZWN1dGl2ZUdyb3VwcyBmbHVzaCBwcmV2aW91cworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAg ICAgICAgUEFUVEVSTiAoKEEgQil7Mn0gKEMgRCl7M30pCisgICAgICAgICAgICAgREVGSU5FIEEg QVMgdmFsIDw9IDI1LCBCIEFTIHZhbCA+IDI1IEFORCB2YWwgPD0gNTAsCisgICAgICAgICAgICAg ICAgICAgIEMgQVMgdmFsID4gNTAgQU5EIHZhbCA8PSA3NSwgRCBBUyB2YWwgPiA3NSk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisg ICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIGIpezJ9IChjIGQpezN9CisgICAt PiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cnByX3BsYW4KKyg2IHJvd3MpCisKKy0tIERpZmZlcmVudCBjaGlsZHJlbiBjb3VudCBwcmV2ZW50 cyBtZXJnZTogKEEgQikrIChBIEIgQykrCistLSBUZXN0cyBycHJQYXR0ZXJuQ2hpbGRyZW5FcXVh bCBsZW5ndGggY2hlY2sKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4g KChBIEIpKyAoQSBCIEMpKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzMsIEIg QVMgdmFsID4gMzMgQU5EIHZhbCA8PSA2NiwgQyBBUyB2YWwgPiA2Nik7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6 IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhJyBiJykrIiAoYSBiIGMpKworICAgLT4gIFNvcnQK KyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFu CisoNiByb3dzKQorCistLSBQUkVGSVggb25seSBtZXJnZTogQSBCIChBIEIpKyAtPiAoYSBiKXsy LH0KKy0tIFRlc3RzIG1lcmdlR3JvdXBQcmVmaXhTdWZmaXg6IGFic29yYiBwcmVjZWRpbmcgZWxl bWVudHMgaW50byBHUk9VUCBtaW4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBB VFRFUk4gKEEgQiAoQSBCKSspIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93 QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhJyBiJyl7Mix9IgorICAg LT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHJwcl9wbGFuCisoNiByb3dzKQorCistLSBTVUZGSVggb25seSBtZXJnZTogKEEgQikrIEEgQiAt PiAoYSBiKXsyLH0KKy0tIFRlc3RzIG1lcmdlR3JvdXBQcmVmaXhTdWZmaXg6IGFic29yYiBmb2xs b3dpbmcgZWxlbWVudHMgaW50byBHUk9VUCBtaW4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAg ICAgICAgIFBBVFRFUk4gKChBIEIpKyBBIEIpIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2 YWwgPiA1MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhJyBiJyl7 Mix9IgorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHJwcl9wbGFuCisoNiByb3dzKQorCistLSBNdWx0aXBsZSBTVUZGSVggYWJzb3Jw dGlvbiB3aXRoIHNraXBVbnRpbDogKEEgQikrIEEgQiBBIEIgQworLS0gVGVzdHMgbWVyZ2VHcm91 cFByZWZpeFN1ZmZpeDogc2tpcCBhYnNvcmJlZCBzdWZmaXggZWxlbWVudHMKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIEIpKyBBIEIgQSBCIEMpCisgICAgICAg ICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwIEFORCB2YWwgPD0gNzUs IEMgQVMgdmFsID4gNzUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAo YScgYicpezMsfSIgYworICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNiByb3dzKQorCistLSBQUkVGSVggbWVyZ2Ug d2l0aCByZW1haW5pbmcgcHJlZml4OiBBIEIgQyBEIChDIEQpKworLS0gVGVzdHMgbWVyZ2VHcm91 cFByZWZpeFN1ZmZpeDogdHJpbW1lZCBsaXN0IHJlY29uc3RydWN0aW9uCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBIEIgQyBEIChDIEQpKykKKyAgICAgICAgICAg ICBERUZJTkUgQSBBUyB2YWwgPD0gMjUsIEIgQVMgdmFsID4gMjUgQU5EIHZhbCA8PSA1MCwKKyAg ICAgICAgICAgICAgICAgICAgQyBBUyB2YWwgPiA1MCBBTkQgdmFsIDw9IDc1LCBEIEFTIHZhbCA+ IDc1KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBX aW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSBiIChjIGQpezIs fQorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHJwcl9wbGFuCisoNiByb3dzKQorCistLSBQUkVGSVggbWVyZ2Ugd2l0aCBxdWFudGlm aWVyczogQSBCKiAoQSBCKikrIC0+IChhIGIqKXsyLH0KKy0tIFRlc3RzIG1lcmdlR3JvdXBQcmVm aXhTdWZmaXg6IHF1YW50aWZpZXIgY29tcGFyaXNvbiBpbiBycHJQYXR0ZXJuRXF1YWwKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lO RE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEgQiogKEEgQiopKykKKyAgICAg ICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2lu ZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSBiKil7Mix9CisgICAtPiAgU29ydAorICAg ICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg2 IHJvd3MpCisKKy0tIFBSRUZJWCBtZXJnZSB3aXRoIG11bHRpcGxlIHF1YW50aWZpZXJzOiBBKyBC KiBDPyAoQSsgQiogQz8pKyAtPiAoYSsgYiogYz8pezIsfQorLS0gVGVzdHMgbWVyZ2VHcm91cFBy ZWZpeFN1ZmZpeDogY29tcGxleCBxdWFudGlmaWVyIHBhdHRlcm5zCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChP UkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICAgICAgICAgICBQQVRURVJOIChBKyBCKiBDPyAoQSsgQiogQz8pKykKKyAgICAgICAg ICAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFsID4gMzAgQU5EIHZhbCA8PSA2MCwg QyBBUyB2YWwgPiA2MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChh KyIgYiogYz8pezIsfQorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNiByb3dzKQorCistLSBTVUZGSVggbWVyZ2Ug d2l0aCBxdWFudGlmaWVyczogKEEgQiopKyBBIEIqIC0+IChhIGIqKXsyLH0KKy0tIFRlc3RzIG1l cmdlR3JvdXBQcmVmaXhTdWZmaXg6IHN1ZmZpeCB3aXRoIHF1YW50aWZpZXJzCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3 IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSBCKikrIEEgQiopCisgICAgICAgICAg ICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzog dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgYiopezIsfQorICAgLT4gIFNvcnQKKyAgICAgICAg IFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNiByb3dz KQorCistLSBVbndyYXAgR1JPVVB7MSwxfTogKChBIHwgQiB8IEMpKSAtPiAoYSB8IGIgfCBjKQor LS0gVGVzdHMgdHJ5VW53cmFwR3JvdXAgcmVtb3ZpbmcgcmVkdW5kYW50IG91dGVyIEdST1VQCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4K K1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSB8IEIgfCBDKSkgREVG SU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA8PSA2MCwgQyBBUyB2YWwgPiA2MCk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisg ICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIHwgYiB8IGMpCisgICAtPiAgU29y dAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3Bs YW4KKyg2IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gQWJzb3JwdGlvbiBGbGFnIERpc3BsYXkgVGVzdHMK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gVGVzdHMgYWJzb3JwdGlvbiBtYXJrZXIgZGlzcGxheSBpbiBFWFBMQUlOIG91 dHB1dAorLS0gTWFya2VyczogJyA9IGJyYW5jaCBlbGVtZW50LCAiID0ganVkZ21lbnQgcG9pbnQK Ky0tIEZpbGVzOiBleHBsYWluLmMgKGFwcGVuZF9ycHJfcXVhbnRpZmllciwgZGVwYXJzZV9ycHJf cGF0dGVybikKKy0tIFNpbXBsZSBWQVI6IEErIC0+IGErIiAoanVkZ21lbnQgcG9pbnQpCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcpCisgICBQYXR0ZXJuOiBhKyIKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTog aWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDYgcm93cykKKworLS0gR1JP VVAgdW5ib3VuZGVkOiAoQSBCKSsgLT4gKGEnIGInKSsiIChicmFuY2ggKyBqdWRnbWVudCkKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgor V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVyBQQVRURVJOICgoQSBCKSspIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1 MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhJyBiJykrIgorICAg LT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHJwcl9wbGFuCisoNiByb3dzKQorCistLSBBTFQgYm90aCBhYnNvcmJhYmxlOiBBKyB8IEIrIC0+ IChhKyIgfCBiKyIpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3 IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoQSsgfCBCKykgREVGSU5FIEEgQVMgdmFsIDw9 IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVy bjogKGErIiB8IGIrIikKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDYgcm93cykKKworLS0gQUxUIG9uZSBhYnNv cmJhYmxlOiBBKyB8IEIgLT4gKGErIiB8IGIpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg ICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoQSsgfCBCKSBERUZJ TkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChP UkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcpCisgICBQYXR0ZXJuOiAoYSsiIHwgYikKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtl eTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDYgcm93cykKKworLS0g U2VxdWVuY2Ugd2l0aCBhYnNvcmJhYmxlIHN0YXJ0OiBBKyBCIC0+IGErIiBiCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3 IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFU VEVSTiAoQSsgQikgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAg IFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiIGIKKyAgIC0+ICBTb3J0CisgICAg ICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDYg cm93cykKKworLS0gQ29tcGxleCBuZXN0ZWQ6ICgoQSsgQikgfCBDKSBEIHwgQSBCIEMgLSBkZWVw bHkgbmVzdGVkIEFMVAorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIg dyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKCgoQSsgQikgfCBDKSBEIHwgQSBCIEMpCisg ICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA8PSA2MCwgQyBBUyB2 YWwgPD0gODAsIEQgQVMgdmFsID4gODApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBp ZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQ YXR0ZXJuOiAoKGErIiBiIHwgYykgZCB8IGEgYiBjKQorICAgLT4gIFNvcnQKKyAgICAgICAgIFNv cnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNiByb3dzKQor CistLSBOZXN0ZWQgdW5ib3VuZGVkOiAoQSsgfCBCKSsgLT4gKGErIiB8IGIpKyAoZmlyc3QgaXRl cmF0aW9uIGFic29yYmFibGUpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoKEErIHwgQikrKQorICAgICAgICAg ICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6 IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhKyIgfCBiKSsKKyAgIC0+ICBTb3J0CisgICAgICAg ICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDYgcm93 cykKKworLS0gQUxUIGluc2lkZSB1bmJvdW5kZWQgR1JPVVA6IChBKyBCIHwgQSBCKSogLT4gKGEr IiBiIHwgYSBiKSogKGZpcnN0IGl0ZXJhdGlvbiBhYnNvcmJhYmxlKQorRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4g KChBKyBCIHwgQSBCKSopCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFT IHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGErIiBi IHwgYSBiKSoKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDYgcm93cykKKworLS0gTm9uLWFic29yYmFibGUgKHVu Ym91bmRlZCBub3QgYXQgc3RhcnQpOiBBIEIrIC0+IGEgYisgKG5vIG1hcmtlcnMpCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRP VyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cg UEFUVEVSTiAoQSBCKykgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cK KyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSBiKworICAgLT4gIFNvcnQKKyAg ICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCiso NiByb3dzKQorCistLSBOb24tYWJzb3JiYWJsZSAobm8gdW5ib3VuZGVkIGJyYW5jaCk6IChBIHwg Qil7Mix9IC0+IChhIHwgYil7Mix9IChubyBtYXJrZXJzKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKChBIHwg Qil7Mix9KSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2lu ZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSB8IGIpezIsfQorICAgLT4gIFNvcnQKKyAg ICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCiso NiByb3dzKQorCistLSBOb24tYWJzb3JiYWJsZSAoU0tJUCBUTyBORVhUIFJPVyk6IEErIC0+IGEr IChubyBtYXJrZXJzKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIg dyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIgTUFU Q0ggU0tJUCBUTyBORVhUIFJPVyBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgdmFsID4gMCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdn CisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErCisgICAtPiAgU29ydAorICAg ICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg2 IHJvd3MpCisKKy0tIE5vbi1hYnNvcmJhYmxlIChsaW1pdGVkIGZyYW1lKTogQSsgLT4gYSsgKG5v IG1hcmtlcnMpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIDEwIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVyBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisg ICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg JzEwJzo6YmlnaW50IEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErCisgICAtPiAgU29ydAorICAg ICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg2 IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gQWJzb3JwdGlvbiBBbmFseXNpcyBUZXN0cworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBUZXN0cyBjb250ZXh0IGFic29ycHRpb24gb3B0aW1pemF0aW9uIChPKG5eMikgLT4gTyhuKSkK Ky0tIEZpbGVzOiBycHIuYyAoY29tcHV0ZUFic29yYmFiaWxpdHkpCistLSBTaW1wbGUgQWJzb3Ji YWJsZSBQYXR0ZXJuOiBBKyBCCistLSBQYXR0ZXJuIHN0YXJ0cyB3aXRoIHVuYm91bmRlZCBWQVIK K1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBB UyB2YWwgPiA1MAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0t Ky0tLS0tCisgIDEgfCAgMTAgfCAgIDYKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAw CisgIDQgfCAgNDAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwgIDYwIHwgICAwCisgIDcg fCAgNzAgfCAgIDAKKyAgOCB8ICA4MCB8ICAgMAorICA5IHwgIDkwIHwgICAwCisgMTAgfCAxMDAg fCAgIDAKKygxMCByb3dzKQorCistLSBBYnNvcmJhYmxlIEdST1VQIFBhdHRlcm46IChBIEIpKyBD CistLSBQYXR0ZXJuIHN0YXJ0cyB3aXRoIHVuYm91bmRlZCBHUk9VUAorU0VMRUNUIGlkLCB2YWws IENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKChBIEIpKyBDKQorICAgIERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2YWwgPiAzMCBB TkQgdmFsIDw9IDYwLCBDIEFTIHZhbCA+IDYwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8 IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMAorICAyIHwgIDIwIHwgICAw CisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwgIDUwIHwgICAwCisgIDYg fCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwgICAwCisgIDkgfCAgOTAg fCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIE5vbi1BYnNvcmJhYmxlOiBV bmJvdW5kZWQgTm90IGF0IFN0YXJ0CistLSBQYXR0ZXJuOiBBIEIrICh1bmJvdW5kZWQgbm90IGF0 IHN0YXJ0KQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnBy X3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgdmFsIDw9 IDUwLCBCIEFTIHZhbCA+IDUwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0t LS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMAorICAyIHwgIDIwIHwgICAwCisgIDMgfCAg MzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwgIDUwIHwgICA2CisgIDYgfCAgNjAgfCAg IDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwgICAwCisgIDkgfCAgOTAgfCAgIDAKKyAx MCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIEFMVCB3aXRoIEFic29yYmFibGUgQnJhbmNo ZXMKKy0tIFBhdHRlcm46IChBKyB8IEIrKSBDIC0gYm90aCBicmFuY2hlcyBhYnNvcmJhYmxlCitT RUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoKEErIHwgQispIEMpCisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDMw LCBCIEFTIHZhbCA+IDMwIEFORCB2YWwgPD0gNjAsIEMgQVMgdmFsID4gNjAKKykKK09SREVSIEJZ IGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAw CisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICA0CisgIDUg fCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisgIDggfCAgODAg fCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykKKworLS0g QUxUIHdpdGggTWl4ZWQgQnJhbmNoZXMKKy0tIFBhdHRlcm46IChBKyB8IEIgQykgLSBvbmx5IGZp cnN0IGJyYW5jaCBhYnNvcmJhYmxlCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFz IGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEErIHwgQiBDKSspCisg ICAgREVGSU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA+IDMwIEFORCB2YWwgPD0gNjAsIEMg QVMgdmFsID4gNjAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0t LSstLS0tLQorICAxIHwgIDEwIHwgICAwCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAg MAorICA0IHwgIDQwIHwgICAwCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMgorICA3 IHwgIDcwIHwgICAwCisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAw IHwgICAwCisoMTAgcm93cykKKworLS0gTm9uLUFic29yYmFibGU6IEFMVCBJbnNpZGUgR1JPVVAK Ky0tIFBhdHRlcm46IChBIHwgQil7Mix9IC0gQUxUIGluc2lkZSB1bmJvdW5kZWQgR1JPVVAKK1NF TEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOICgoQSB8IEIpezIsfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAs IEIgQVMgdmFsID4gNTAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSst LS0tLSstLS0tLQorICAxIHwgIDEwIHwgIDEwCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8 ICAgMAorICA0IHwgIDQwIHwgICAwCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMAor ICA3IHwgIDcwIHwgICAwCisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwg MTAwIHwgICAwCisoMTAgcm93cykKKworLS0gTm9uLUFic29yYmFibGU6IE5lc3RlZCBVbmJvdW5k ZWQKKy0tIFBhdHRlcm46ICgoQSBCKSsgQykrIC0gbmVzdGVkIEdST1VQIHN0cnVjdHVyZQorU0VM RUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKCgoQSBCKSsgQykrKQorICAgIERFRklORSBBIEFTIHZhbCA8PSAzMCwg QiBBUyB2YWwgPiAzMCBBTkQgdmFsIDw9IDYwLCBDIEFTIHZhbCA+IDYwCispCitPUkRFUiBCWSBp ZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMAor ICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwg IDUwIHwgICAwCisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwg ICAwCisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIE5v bi1BYnNvcmJhYmxlOiBVbmJvdW5kZWQgRWxlbWVudCBJbnNpZGUgR1JPVVAKKy0tIFBhdHRlcm46 IChBIEIrKXsyLH0gLSB1bmJvdW5kZWQgaW5zaWRlIEdST1VQCitTRUxFQ1QgaWQsIHZhbCwgQ09V TlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo KEEgQispezIsfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTAKKykK K09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwg IDEwIHwgICAwCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwg ICAwCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisg IDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93 cykKKworLS0gUnVudGltZSBDb25kaXRpb25zOiBTS0lQIFRPIE5FWFQgUk9XCistLSBBYnNvcnB0 aW9uIGRpc2FibGVkIHdpdGggU0tJUCBUTyBORVhUIFJPVworU0VMRUNUIGlkLCB2YWwsIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBC KQorICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MAorKQorT1JERVIgQlkg aWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDYK KyAgMiB8ICAyMCB8ICAgNQorICAzIHwgIDMwIHwgICA0CisgIDQgfCAgNDAgfCAgIDMKKyAgNSB8 ICA1MCB8ICAgMgorICA2IHwgIDYwIHwgICAwCisgIDcgfCAgNzAgfCAgIDAKKyAgOCB8ICA4MCB8 ICAgMAorICA5IHwgIDkwIHwgICAwCisgMTAgfCAxMDAgfCAgIDAKKygxMCByb3dzKQorCistLSBS dW50aW1lIENvbmRpdGlvbnM6IExpbWl0ZWQgRnJhbWUKKy0tIEFic29ycHRpb24gZGlzYWJsZWQg d2l0aCBsaW1pdGVkIGZyYW1lIGVuZAorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBh cyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgNSBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFT IHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBj bnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDYKKyAgMiB8ICAyMCB8ICAgMAor ICAzIHwgIDMwIHwgICAwCisgIDQgfCAgNDAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwg IDYwIHwgICAwCisgIDcgfCAgNzAgfCAgIDAKKyAgOCB8ICA4MCB8ICAgMAorICA5IHwgIDkwIHwg ICAwCisgMTAgfCAxMDAgfCAgIDAKKygxMCByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEVkZ2UgQ2FzZSBU ZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBUZXN0cyBib3VuZGFyeSBjb25kaXRpb25zIGFuZCBjb21wbGV4IHNj ZW5hcmlvcworLS0gRW1wdHkgTWF0Y2ggUHJldmVudGlvbgorLS0gUGF0dGVybiB0aGF0IGNvdWxk IG1hdGNoIGVtcHR5OiBBKgorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK K0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEEqKQorICAgIERFRklORSBBIEFTIHZhbCA+IDEwMDAgIC0tIE5ldmVyIG1hdGNoZXMKKykKK09S REVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEw IHwgICAwCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICAw CisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisgIDgg fCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykK KworLS0gQWxsIFJvd3MgTWF0Y2gKKy0tIFBhdHRlcm4gd2hlcmUgZXZlcnkgcm93IG1hdGNoZXMK K1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyB2YWwgPj0gMCAgLS0gQWx3YXlzIHRydWUKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFs IHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgIDEwCisgIDIgfCAgMjAgfCAg IDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICAwCisgIDUgfCAgNTAgfCAgIDAKKyAg NiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5 MCB8ICAgMAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykKKworLS0gTGFyZ2UgUXVhbnRpZmll cnMKKy0tIFBhdHRlcm46IEF7MTAwfSAobGFyZ2UgZXhhY3QgcXVhbnRpZmllcikKK1NFTEVDVCBp ZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezEwMH0pCisgICAgREVGSU5FIEEgQVMg dmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0t LS0tCisgIDEgfCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisg IDQgfCAgNDAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwgIDYwIHwgICAwCisgIDcgfCAg NzAgfCAgIDAKKyAgOCB8ICA4MCB8ICAgMAorICA5IHwgIDkwIHwgICAwCisgMTAgfCAxMDAgfCAg IDAKKygxMCByb3dzKQorCistLSBQYXR0ZXJuOiBBezEwLDIwfSAobGFyZ2UgcmFuZ2UgcXVhbnRp ZmllcikKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9w bGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezEwLDIwfSkK KyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNu dCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAxMAorICAyIHwgIDIwIHwgICAwCisg IDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwgIDUwIHwgICAwCisgIDYgfCAg NjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwgICAwCisgIDkgfCAgOTAgfCAg IDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIENvbXBsZXggTXVsdGktTGV2ZWwg TmVzdGluZworLS0gUGF0dGVybjogKCgoQSBCKSB8IEMpKyBEKSsKK1NFTEVDVCBpZCwgdmFsLCBD T1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOICgoKChBIEIpIHwgQykrIEQpKykKKyAgICBERUZJTkUgQSBB UyB2YWwgPD0gMjAsIEIgQVMgdmFsID4gMjAgQU5EIHZhbCA8PSA0MCwKKyAgICAgICAgICAgQyBB UyB2YWwgPiA0MCBBTkQgdmFsIDw9IDYwLCBEIEFTIHZhbCA+IDYwCispCitPUkRFUiBCWSBpZDsK KyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMAorICAy IHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwgIDUw IHwgICAzCisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwgICAw CisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIExvbmcg QWx0ZXJuYXRpb24gQ2hhaW4KKy0tIFBhdHRlcm46IEEgfCBCIHwgQyB8IEQgfCBFICg1LXdheSBB TFQpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxh bgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSB8IEIgfCBDIHwg RCB8IEUpCisgICAgREVGSU5FIEEgQVMgdmFsID0gMTAsIEIgQVMgdmFsID0gMzAsIEMgQVMgdmFs ID0gNTAsCisgICAgICAgICAgIEQgQVMgdmFsID0gNzAsIEUgQVMgdmFsID0gOTAKKykKK09SREVS IEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwg ICAxCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMQorICA0IHwgIDQwIHwgICAwCisg IDUgfCAgNTAgfCAgIDEKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAxCisgIDggfCAg ODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMQorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykKKwor LS0gTG9uZyBTZXF1ZW5jZQorLS0gUGF0dGVybjogQSBCIEMgRCBFIEYgRyBIICg4LWVsZW1lbnQg U0VRKQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3Bs YW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSBG IEcgSCkKKyAgICBERUZJTkUgQSBBUyB2YWwgPj0gMTAsIEIgQVMgdmFsID49IDIwLCBDIEFTIHZh bCA+PSAzMCwKKyAgICAgICAgICAgRCBBUyB2YWwgPj0gNDAsIEUgQVMgdmFsID49IDUwLCBGIEFT IHZhbCA+PSA2MCwKKyAgICAgICAgICAgRyBBUyB2YWwgPj0gNzAsIEggQVMgdmFsID49IDgwCisp CitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8 ICAxMCB8ICAgOAorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8 ICAgMAorICA1IHwgIDUwIHwgICAwCisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAor ICA4IHwgIDgwIHwgICAwCisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJv d3MpCisKKy0tIEludGVybGVhdmVkIFF1YW50aWZpZXJzCistLSBQYXR0ZXJuOiBBezJ9IEIrIEN7 Myw1fSBEKiBFezEsfQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7 Mn0gQisgQ3szLDV9IEQqIEV7MSx9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFs ID4gMCwgQyBBUyB2YWwgPiAwLAorICAgICAgICAgICBEIEFTIHZhbCA+IDAsIEUgQVMgdmFsID4g MAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisg IDEgfCAgMTAgfCAgMTAKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAg NDAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwgIDYwIHwgICAwCisgIDcgfCAgNzAgfCAg IDAKKyAgOCB8ICA4MCB8ICAgMAorICA5IHwgIDkwIHwgICAwCisgMTAgfCAxMDAgfCAgIDAKKygx MCByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tIE9wdGltaXphdGlvbiBGYWxsYmFjayBUZXN0cworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBUZXN0cyBmb3Igb3B0aW1pemF0aW9uIGVkZ2UgY2FzZXMgYW5kIGZhbGxiYWNrIGJlaGF2 aW9yCitDUkVBVEUgVEFCTEUgcnByX2ZhbGxiYWNrIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJU IElOVE8gcnByX2ZhbGxiYWNrIFZBTFVFUyAoMSwgMTApLCAoMiwgMjApOworLS0gVGVzdDogbWlu IHF1YW50aWZpZXIgb3ZlcmZsb3cgY2F1c2VzIG9wdGltaXphdGlvbiBmYWxsYmFjayAobWluID09 IG1heCBjYXNlKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9mYWxsYmFjaworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoKEF7MjAwMDAwMDAwMH0pezJ9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisg ICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhezIwMDAwMDAwMDB9KXsyfQorICAg LT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHJwcl9mYWxsYmFjaworKDYgcm93cykKKworLS0gRXhwZWN0ZWQ6IEZhbGxiYWNrIC0gcGF0dGVy biBub3QgbWVyZ2VkIGR1ZSB0byBtaW4gb3ZlcmZsb3cgKDQwMDAwMDAwMDAgPiBJTlQzMl9NQVgp CistLSBUZXN0OiBtYXgtb25seSBxdWFudGlmaWVyIG92ZXJmbG93IGNhdXNlcyBvcHRpbWl6YXRp b24gZmFsbGJhY2sKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcg RlJPTSBycHJfZmFsbGJhY2sKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKChBezEsMjAwMDAwMDAwMH0pezJ9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdn CisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhezEsMjAwMDAwMDAwMH0pezJ9 CisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcnByX2ZhbGxiYWNrCisoNiByb3dzKQorCistLSBFeHBlY3RlZDogRmFsbGJhY2sgLSBt aW4gT0sgKDIqMT0yKSwgYnV0IG1heCBvdmVyZmxvdyAoMioyMDAwMDAwMDAwID4gSU5UMzJfTUFY KQorLS0gVGVzdDogbWF4IHF1YW50aWZpZXIgZXhjZWVkcyB2YWxpZCByYW5nZSAoMjE0NzQ4MzY0 NyA9IElOVF9NQVgsIGxpbWl0IGlzIDIxNDc0ODM2NDYpCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX2ZhbGxiYWNrCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQXsyMDAwMDAwMDAwLDIxNDc0ODM2NDd9KXsyfSkK KyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBxdWFudGlmaWVyIGJvdW5kcyBt dXN0IGJlIGJldHdlZW4gMCBhbmQgMjE0NzQ4MzY0NiB3aXRoIG1heCA+PSAxCitMSU5FIDY6ICAg ICBQQVRURVJOICgoQXsyMDAwMDAwMDAwLDIxNDc0ODM2NDd9KXsyfSkKKyAgICAgICAgICAgICAg ICAgICAgICAgIF4KKy0tIEV4cGVjdGVkOiBFUlJPUiBhdCBwYXJzZSB0aW1lIGJlZm9yZSBvcHRp bWl6YXRpb24KKy0tIFRlc3Q6IG5lc3RlZCB1bmJvdW5kZWQgd2l0aCBsYXJnZSBtaW4gY2F1c2Vz IG92ZXJmbG93IGZhbGxiYWNrCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3IEZST00gcnByX2ZhbGxiYWNrCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOICgoQXsyMDAwMDAwMDAwLH0pezIwMDAwMDAwMDAsfSkKKyAgICBERUZJTkUgQSBB UyB2YWwgPiAwCispOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYXsy MDAwMDAwMDAwLH0iKXsyMDAwMDAwMDAwLH0KKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtl eTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfZmFsbGJhY2sKKyg2IHJvd3MpCisK Ky0tIEV4cGVjdGVkOiBGYWxsYmFjayAtIG1pbiBvdmVyZmxvdyAoMjAwMDAwMDAwMCAqIDIwMDAw MDAwMDAgPiBJTlQzMl9NQVgpCistLSBUZXN0OiBwcmVmaXggbWlzbWF0Y2ggY2F1c2VzIG9wdGlt aXphdGlvbiBmYWxsYmFjaworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9W RVIgdyBGUk9NIHJwcl9mYWxsYmFjaworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSBCIChDIEQpKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+ IDUsIEMgQVMgdmFsID4gMTAsIEQgQVMgdmFsID4gMTUKKyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORykKKyAgIFBhdHRlcm46IGEgYiAoYyBkKSsKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0 IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfZmFsbGJhY2sKKyg2IHJvd3Mp CisKKy0tIEV4cGVjdGVkOiBGYWxsYmFjayAtIHByZWZpeCBlbGVtZW50cyBkb24ndCBtYXRjaCBH Uk9VUCBjb250ZW50CitEUk9QIFRBQkxFIHJwcl9mYWxsYmFjazsKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUGxhbm5l ciBJbnRlZ3JhdGlvbiBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0cyBmdWxsIHBsYW5uaW5nIHBpcGVs aW5lIGFuZCBXaW5kb3dBZ2cgcGxhbiBub2RlIGNyZWF0aW9uCistLSBGaWxlczogcGxhbm5lci5j LCBjcmVhdGVwbGFuLmMKK0NSRUFURSBUQUJMRSBycHJfcGxhbm5lciAoaWQgSU5ULCBjYXRlZ29y eSBWQVJDSEFSKDEwKSwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfcGxhbm5lciBWQUxVRVMK KyAgICAoMSwgJ0EnLCAxMCksICgyLCAnQScsIDIwKSwgKDMsICdBJywgMzApLAorICAgICg0LCAn QicsIDQwKSwgKDUsICdCJywgNTApLCAoNiwgJ0InLCA2MCksCisgICAgKDcsICdDJywgNzApLCAo OCwgJ0MnLCA4MCksICg5LCAnQycsIDkwKTsKKy0tIE11bHRpcGxlIFdpbmRvdyBGdW5jdGlvbnMg aW4gU2FtZSBRdWVyeQorU0VMRUNUIGlkLCBjYXRlZ29yeSwgdmFsLAorICAgICAgIENPVU5UKCop IE9WRVIgdzEgYXMgY250MSwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcyIGFzIGNudDIKK0ZST00g cnByX3BsYW5uZXIKK1dJTkRPVyB3MSBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB KykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispLAordzIgQVMgKAorICAgIFBBUlRJVElPTiBC WSBjYXRlZ29yeQorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQispCisgICAgREVGSU5FIEIg QVMgdmFsID49IDQwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IGNhdGVnb3J5IHwgdmFsIHwgY250 MSB8IGNudDIgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0tLQorICAxIHwgQSAg ICAgICAgfCAgMTAgfCAgICA5IHwgICAgMAorICAyIHwgQSAgICAgICAgfCAgMjAgfCAgICAwIHwg ICAgMAorICAzIHwgQSAgICAgICAgfCAgMzAgfCAgICAwIHwgICAgMAorICA0IHwgQiAgICAgICAg fCAgNDAgfCAgICAwIHwgICAgMworICA1IHwgQiAgICAgICAgfCAgNTAgfCAgICAwIHwgICAgMAor ICA2IHwgQiAgICAgICAgfCAgNjAgfCAgICAwIHwgICAgMAorICA3IHwgQyAgICAgICAgfCAgNzAg fCAgICAwIHwgICAgMworICA4IHwgQyAgICAgICAgfCAgODAgfCAgICAwIHwgICAgMAorICA5IHwg QyAgICAgICAgfCAgOTAgfCAgICAwIHwgICAgMAorKDkgcm93cykKKworLS0gV2luZG93IEZ1bmN0 aW9uIHdpdGggUEFSVElUSU9OIEJZCitTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAg Q09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbm5lcgorV0lORE9XIHcgQVMgKAor ICAgIFBBUlRJVElPTiBCWSBjYXRlZ29yeQorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsp CisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgY2F0ZWdvcnksIGlkOworIGlk IHwgY2F0ZWdvcnkgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0rLS0tLS0KKyAg MSB8IEEgICAgICAgIHwgIDEwIHwgICAzCisgIDIgfCBBICAgICAgICB8ICAyMCB8ICAgMAorICAz IHwgQSAgICAgICAgfCAgMzAgfCAgIDAKKyAgNCB8IEIgICAgICAgIHwgIDQwIHwgICAzCisgIDUg fCBCICAgICAgICB8ICA1MCB8ICAgMAorICA2IHwgQiAgICAgICAgfCAgNjAgfCAgIDAKKyAgNyB8 IEMgICAgICAgIHwgIDcwIHwgICAzCisgIDggfCBDICAgICAgICB8ICA4MCB8ICAgMAorICA5IHwg QyAgICAgICAgfCAgOTAgfCAgIDAKKyg5IHJvd3MpCisKKy0tIFdpbmRvdyBGdW5jdGlvbiB3aXRo IENvbXBsZXggT1JERVIgQlkKK1NFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFubmVyCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgY2F0ZWdvcnkgREVTQywgdmFsIEFTQworICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGNhdGVnb3J5IERFU0MsIHZhbCBBU0M7CisgaWQg fCBjYXRlZ29yeSB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0tLS0tLSstLS0tLSstLS0tLQorICA3 IHwgQyAgICAgICAgfCAgNzAgfCAgIDkKKyAgOCB8IEMgICAgICAgIHwgIDgwIHwgICAwCisgIDkg fCBDICAgICAgICB8ICA5MCB8ICAgMAorICA0IHwgQiAgICAgICAgfCAgNDAgfCAgIDAKKyAgNSB8 IEIgICAgICAgIHwgIDUwIHwgICAwCisgIDYgfCBCICAgICAgICB8ICA2MCB8ICAgMAorICAxIHwg QSAgICAgICAgfCAgMTAgfCAgIDAKKyAgMiB8IEEgICAgICAgIHwgIDIwIHwgICAwCisgIDMgfCBB ICAgICAgICB8ICAzMCB8ICAgMAorKDkgcm93cykKKworLS0gTmFtZWQgV2luZG93IFJlZmVyZW5j ZQorU0VMRUNUIGlkLCBjYXRlZ29yeSwgdmFsLAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBj bnQKK0ZST00gcnByX3BsYW5uZXIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworIGlk IHwgY2F0ZWdvcnkgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0rLS0tLS0KKyAg MSB8IEEgICAgICAgIHwgIDEwIHwgICA5CisgIDIgfCBBICAgICAgICB8ICAyMCB8ICAgMAorICAz IHwgQSAgICAgICAgfCAgMzAgfCAgIDAKKyAgNCB8IEIgICAgICAgIHwgIDQwIHwgICAwCisgIDUg fCBCICAgICAgICB8ICA1MCB8ICAgMAorICA2IHwgQiAgICAgICAgfCAgNjAgfCAgIDAKKyAgNyB8 IEMgICAgICAgIHwgIDcwIHwgICAwCisgIDggfCBDICAgICAgICB8ICA4MCB8ICAgMAorICA5IHwg QyAgICAgICAgfCAgOTAgfCAgIDAKKyg5IHJvd3MpCisKKy0tIElubGluZSBXaW5kb3cgRGVmaW5p dGlvbgorU0VMRUNUIGlkLCBjYXRlZ29yeSwgdmFsLAorICAgICAgIENPVU5UKCopIE9WRVIgKAor ICAgICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgUEFUVEVSTiAoQSspCisgICAg ICAgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyAgICAgICApIGFzIGNudAorRlJPTSBycHJfcGxh bm5lcgorT1JERVIgQlkgaWQ7CisgaWQgfCBjYXRlZ29yeSB8IHZhbCB8IGNudCAKKy0tLS0rLS0t LS0tLS0tLSstLS0tLSstLS0tLQorICAxIHwgQSAgICAgICAgfCAgMTAgfCAgIDkKKyAgMiB8IEEg ICAgICAgIHwgIDIwIHwgICAwCisgIDMgfCBBICAgICAgICB8ICAzMCB8ICAgMAorICA0IHwgQiAg ICAgICAgfCAgNDAgfCAgIDAKKyAgNSB8IEIgICAgICAgIHwgIDUwIHwgICAwCisgIDYgfCBCICAg ICAgICB8ICA2MCB8ICAgMAorICA3IHwgQyAgICAgICAgfCAgNzAgfCAgIDAKKyAgOCB8IEMgICAg ICAgIHwgIDgwIHwgICAwCisgIDkgfCBDICAgICAgICB8ICA5MCB8ICAgMAorKDkgcm93cykKKwor LS0gV2luZG93IHdpdGggQWdncmVnYXRlIEZ1bmN0aW9ucworU0VMRUNUIGNhdGVnb3J5LAorICAg ICAgIENPVU5UKCopIE9WRVIgdyBhcyB3aW5kb3dfY250LAorICAgICAgIENPVU5UKCopIGFzIGFn Z19jbnQKK0ZST00gcnByX3BsYW5uZXIKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkg Y2F0ZWdvcnkKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFT IHZhbCA+IDAKKykKK0dST1VQIEJZIGNhdGVnb3J5CitPUkRFUiBCWSBjYXRlZ29yeTsKK0VSUk9S OiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIkdST1VQIgorTElORSAxMjogR1JPVVAgQlkgY2F0 ZWdvcnkKKyAgICAgICAgIF4KKy0tIEV4cGVjdGVkOiBFUlJPUiAoR1JPVVAgQlkgd2l0aCB3aW5k b3cgUlBSIG5vdCBzdXBwb3J0ZWQpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFN1YnF1ZXJ5IGFuZCBDVEUgVGVzdHMK Ky0tIEZpbGVzOiBwbGFubmVyLmMsIHByZXBqb2ludHJlZS5jCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3RzIFJQ UiB3aXRoIHN1YnF1ZXJpZXMgYW5kIENURXMKKy0tIFJQUiBpbiBTdWJxdWVyeSAoRlJPTSBjbGF1 c2UpCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAg ICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyAgICBGUk9NIHJwcl9wbGFubmVyCisgICAg V0lORE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSsp CisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyAgICApCispIHN1YgorV0hFUkUgY250ID4g NQorT1JERVIgQlkgaWQ7CisgaWQgfCBjYXRlZ29yeSB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0t LS0tLSstLS0tLSstLS0tLQorICAxIHwgQSAgICAgICAgfCAgMTAgfCAgIDkKKygxIHJvdykKKwor LS0gUlBSIHdpdGggU3VicXVlcnkgaW4gV0hFUkUKK1NFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwK KyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFubmVyCitXSEVSRSB2 YWwgPiAoU0VMRUNUIEFWRyh2YWwpIEZST00gcnByX3BsYW5uZXIpCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiA1MAor KQorT1JERVIgQlkgaWQ7CisgaWQgfCBjYXRlZ29yeSB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0t LS0tLSstLS0tLSstLS0tLQorICA2IHwgQiAgICAgICAgfCAgNjAgfCAgIDQKKyAgNyB8IEMgICAg ICAgIHwgIDcwIHwgICAwCisgIDggfCBDICAgICAgICB8ICA4MCB8ICAgMAorICA5IHwgQyAgICAg ICAgfCAgOTAgfCAgIDAKKyg0IHJvd3MpCisKKy0tIENURSB3aXRoIFJQUgorV0lUSCBycHJfY3Rl IEFTICgKKyAgICBTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAgICAgIENPVU5UKCop IE9WRVIgdyBhcyBjbnQKKyAgICBGUk9NIHJwcl9wbGFubmVyCisgICAgV0lORE9XIHcgQVMgKAor ICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklO RSBBIEFTIHZhbCA+IDAKKyAgICApCispCitTRUxFQ1QgKiBGUk9NIHJwcl9jdGUgV0hFUkUgY250 ID4gNSBPUkRFUiBCWSBpZDsKKyBpZCB8IGNhdGVnb3J5IHwgdmFsIHwgY250IAorLS0tLSstLS0t LS0tLS0tKy0tLS0tKy0tLS0tCisgIDEgfCBBICAgICAgICB8ICAxMCB8ICAgOQorKDEgcm93KQor CistLSBNdWx0aXBsZSBDVEUgUmVmZXJlbmNlcworV0lUSCBycHJfY3RlIEFTICgKKyAgICBTRUxF Q1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK KyAgICBGUk9NIHJwcl9wbGFubmVyCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBC WSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDAK KyAgICApCispCitTRUxFQ1QgYzEuaWQsIGMxLmNudCwgYzIuY250IGFzIGNudDIKK0ZST00gcnBy X2N0ZSBjMQorSk9JTiBycHJfY3RlIGMyIE9OIGMxLmlkID0gYzIuaWQKK09SREVSIEJZIGMxLmlk OworIGlkIHwgY250IHwgY250MiAKKy0tLS0rLS0tLS0rLS0tLS0tCisgIDEgfCAgIDkgfCAgICA5 CisgIDIgfCAgIDAgfCAgICAwCisgIDMgfCAgIDAgfCAgICAwCisgIDQgfCAgIDAgfCAgICAwCisg IDUgfCAgIDAgfCAgICAwCisgIDYgfCAgIDAgfCAgICAwCisgIDcgfCAgIDAgfCAgICAwCisgIDgg fCAgIDAgfCAgICAwCisgIDkgfCAgIDAgfCAgICAwCisoOSByb3dzKQorCistLSBOZXN0ZWQgQ1RF cworV0lUSCBjdGUxIEFTICgKKyAgICBTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwgRlJPTSBycHJf cGxhbm5lciBXSEVSRSB2YWwgPiAzMAorKSwKK2N0ZTIgQVMgKAorICAgIFNFTEVDVCBpZCwgY2F0 ZWdvcnksIHZhbCwKKyAgICAgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00g Y3RlMQorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBB VFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgICAgKQorKQorU0VMRUNU ICogRlJPTSBjdGUyIE9SREVSIEJZIGlkOworIGlkIHwgY2F0ZWdvcnkgfCB2YWwgfCBjbnQgCist LS0tKy0tLS0tLS0tLS0rLS0tLS0rLS0tLS0KKyAgNCB8IEIgICAgICAgIHwgIDQwIHwgICA2Cisg IDUgfCBCICAgICAgICB8ICA1MCB8ICAgMAorICA2IHwgQiAgICAgICAgfCAgNjAgfCAgIDAKKyAg NyB8IEMgICAgICAgIHwgIDcwIHwgICAwCisgIDggfCBDICAgICAgICB8ICA4MCB8ICAgMAorICA5 IHwgQyAgICAgICAgfCAgOTAgfCAgIDAKKyg2IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gSk9JTiBUZXN0 cworLS0gRmlsZXM6IHByZXBqb2ludHJlZS5jLCBzZXRyZWZzLmMKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdHMg UlBSIHdpdGggSk9JTnMgYW5kIG11bHRpcGxlIHRhYmxlIHJlZmVyZW5jZXMKK0NSRUFURSBUQUJM RSBycHJfam9pbjEgKGlkIElOVCwgdmFsMSBJTlQpOworQ1JFQVRFIFRBQkxFIHJwcl9qb2luMiAo aWQgSU5ULCB2YWwyIElOVCk7CitJTlNFUlQgSU5UTyBycHJfam9pbjEgVkFMVUVTICgxLCAxMCks ICgyLCAyMCksICgzLCAzMCksICg0LCA0MCksICg1LCA1MCk7CitJTlNFUlQgSU5UTyBycHJfam9p bjIgVkFMVUVTICgxLCAxMDApLCAoMiwgMjAwKSwgKDMsIDMwMCksICg0LCA0MDApLCAoNSwgNTAw KTsKKy0tIFJQUiBBZnRlciBJTk5FUiBKT0lOCitTRUxFQ1QgdDEuaWQsIHQxLnZhbDEsIHQyLnZh bDIsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfam9pbjEgdDEKK0lO TkVSIEpPSU4gcnByX2pvaW4yIHQyIE9OIHQxLmlkID0gdDIuaWQKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSB0MS5pZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbDEgKyB2 YWwyID4gMTAwCispCitPUkRFUiBCWSB0MS5pZDsKKyBpZCB8IHZhbDEgfCB2YWwyIHwgY250IAor LS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tCisgIDEgfCAgIDEwIHwgIDEwMCB8ICAgNQorICAyIHwg ICAyMCB8ICAyMDAgfCAgIDAKKyAgMyB8ICAgMzAgfCAgMzAwIHwgICAwCisgIDQgfCAgIDQwIHwg IDQwMCB8ICAgMAorICA1IHwgICA1MCB8ICA1MDAgfCAgIDAKKyg1IHJvd3MpCisKKy0tIFJQUiBB ZnRlciBMRUZUIEpPSU4KK1NFTEVDVCB0MS5pZCwgdDEudmFsMSwgdDIudmFsMiwKKyAgICAgICBD T1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9qb2luMSB0MQorTEVGVCBKT0lOIHJwcl9q b2luMiB0MiBPTiB0MS5pZCA9IHQyLmlkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgdDEu aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwxID4gMAorKQorT1JERVIgQlkg dDEuaWQ7CisgaWQgfCB2YWwxIHwgdmFsMiB8IGNudCAKKy0tLS0rLS0tLS0tKy0tLS0tLSstLS0t LQorICAxIHwgICAxMCB8ICAxMDAgfCAgIDUKKyAgMiB8ICAgMjAgfCAgMjAwIHwgICAwCisgIDMg fCAgIDMwIHwgIDMwMCB8ICAgMAorICA0IHwgICA0MCB8ICA0MDAgfCAgIDAKKyAgNSB8ICAgNTAg fCAgNTAwIHwgICAwCisoNSByb3dzKQorCistLSBSUFIgd2l0aCBNdWx0aXBsZSBUYWJsZXMgaW4g REVGSU5FCitTRUxFQ1QgdDEuaWQsIHQxLnZhbDEsIHQyLnZhbDIsCisgICAgICAgQ09VTlQoKikg T1ZFUiB3IGFzIGNudAorRlJPTSBycHJfam9pbjEgdDEKK0lOTkVSIEpPSU4gcnByX2pvaW4yIHQy IE9OIHQxLmlkID0gdDIuaWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSB0MS5pZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdDEudmFsMSA+IDIwLAorICAgICAgICAgICBC IEFTIHQyLnZhbDIgPiAyMDAKKykKK09SREVSIEJZIHQxLmlkOworIGlkIHwgdmFsMSB8IHZhbDIg fCBjbnQgCistLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0KKyAgMSB8ICAgMTAgfCAgMTAwIHwgICAw CisgIDIgfCAgIDIwIHwgIDIwMCB8ICAgMAorICAzIHwgICAzMCB8ICAzMDAgfCAgIDMKKyAgNCB8 ICAgNDAgfCAgNDAwIHwgICAwCisgIDUgfCAgIDUwIHwgIDUwMCB8ICAgMAorKDUgcm93cykKKwor LS0gUlBSIEFmdGVyIENyb3NzIEpvaW4KK1NFTEVDVCB0MS5pZCBhcyBpZDEsIHQyLmlkIGFzIGlk MiwgdDEudmFsMSwgdDIudmFsMiwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9N IHJwcl9qb2luMSB0MQorQ1JPU1MgSk9JTiBycHJfam9pbjIgdDIKK1dIRVJFIHQxLmlkIDw9IDIg QU5EIHQyLmlkIDw9IDIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSB0MS5pZCwgdDIuaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwxICsgdmFsMiA+IDAKKykKK09SREVS IEJZIHQxLmlkLCB0Mi5pZDsKKyBpZDEgfCBpZDIgfCB2YWwxIHwgdmFsMiB8IGNudCAKKy0tLS0t Ky0tLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0KKyAgIDEgfCAgIDEgfCAgIDEwIHwgIDEwMCB8ICAg NAorICAgMSB8ICAgMiB8ICAgMTAgfCAgMjAwIHwgICAwCisgICAyIHwgICAxIHwgICAyMCB8ICAx MDAgfCAgIDAKKyAgIDIgfCAgIDIgfCAgIDIwIHwgIDIwMCB8ICAgMAorKDQgcm93cykKKworLS0g U2VsZi1Kb2luIHdpdGggUlBSCitTRUxFQ1QgYS5pZCwgYS52YWwxLCBiLnZhbDEgYXMgdmFsMV9u ZXh0LAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2pvaW4xIGEKK0lO TkVSIEpPSU4gcnByX2pvaW4xIGIgT04gYS5pZCArIDEgPSBiLmlkCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgYS5pZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKFgrKQorICAgIERFRklORSBYIEFTIGEudmFsMSA8 IGIudmFsMQorKQorT1JERVIgQlkgYS5pZDsKKyBpZCB8IHZhbDEgfCB2YWwxX25leHQgfCBjbnQg CistLS0tKy0tLS0tLSstLS0tLS0tLS0tLSstLS0tLQorICAxIHwgICAxMCB8ICAgICAgICAyMCB8 ICAgNAorICAyIHwgICAyMCB8ICAgICAgICAzMCB8ICAgMAorICAzIHwgICAzMCB8ICAgICAgICA0 MCB8ICAgMAorICA0IHwgICA0MCB8ICAgICAgICA1MCB8ICAgMAorKDQgcm93cykKKworRFJPUCBU QUJMRSBycHJfam9pbjEsIHJwcl9qb2luMjsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQ29tcGxleCBFeHByZXNzaW9u IFRlc3RzCistLSBGaWxlczogY3JlYXRlcGxhbi5jLCBzZXRyZWZzLmMKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVz dHMgY29tcGxleCB0YXJnZXQgbGlzdCBleHByZXNzaW9ucworQ1JFQVRFIFRBQkxFIHJwcl90YXJn ZXQgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfdGFyZ2V0IFZBTFVFUyAoMSwg MTApLCAoMiwgMjApLCAoMywgMzApLCAoNCwgNDApLCAoNSwgNTApOworLS0gRXhwcmVzc2lvbnMg aW4gVGFyZ2V0IExpc3QKK1NFTEVDVCBpZCwKKyAgICAgICB2YWwgKiAyIGFzIGRvdWJsZWQsCisg ICAgICAgdmFsICsgMTAgYXMgYWRkZWQsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAor RlJPTSBycHJfdGFyZ2V0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IGRv dWJsZWQgfCBhZGRlZCB8IGNudCAKKy0tLS0rLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0KKyAgMSB8 ICAgICAgMjAgfCAgICAyMCB8ICAgNQorICAyIHwgICAgICA0MCB8ICAgIDMwIHwgICAwCisgIDMg fCAgICAgIDYwIHwgICAgNDAgfCAgIDAKKyAgNCB8ICAgICAgODAgfCAgICA1MCB8ICAgMAorICA1 IHwgICAgIDEwMCB8ICAgIDYwIHwgICAwCisoNSByb3dzKQorCistLSBDQVNFIEV4cHJlc3Npb24g aW4gVGFyZ2V0IExpc3QKK1NFTEVDVCBpZCwgdmFsLAorICAgICAgIENBU0UKKyAgICAgICAgICAg V0hFTiB2YWwgPCAzMCBUSEVOICdsb3cnCisgICAgICAgICAgIFdIRU4gdmFsIDwgNTAgVEhFTiAn bWVkaXVtJworICAgICAgICAgICBFTFNFICdoaWdoJworICAgICAgIEVORCBhcyBjYXRlZ29yeSwK KyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl90YXJnZXQKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZh bCA+IDAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY2F0ZWdvcnkgfCBjbnQgCistLS0t Ky0tLS0tKy0tLS0tLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8IGxvdyAgICAgIHwgICA1CisgIDIg fCAgMjAgfCBsb3cgICAgICB8ICAgMAorICAzIHwgIDMwIHwgbWVkaXVtICAgfCAgIDAKKyAgNCB8 ICA0MCB8IG1lZGl1bSAgIHwgICAwCisgIDUgfCAgNTAgfCBoaWdoICAgICB8ICAgMAorKDUgcm93 cykKKworLS0gU3VicXVlcnkgaW4gVGFyZ2V0IExpc3QKK1NFTEVDVCBpZCwgdmFsLAorICAgICAg IChTRUxFQ1QgTUFYKHZhbCkgRlJPTSBycHJfdGFyZ2V0KSBhcyBtYXhfdmFsLAorICAgICAgIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3RhcmdldAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQor T1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBtYXhfdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0t LS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgICAgNTAgfCAgIDUKKyAgMiB8ICAyMCB8ICAgICAg NTAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgICAgNTAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgICAgNTAg fCAgIDAKKyAgNSB8ICA1MCB8ICAgICAgNTAgfCAgIDAKKyg1IHJvd3MpCisKKy0tIEZ1bmN0aW9u IENhbGxzIGluIFRhcmdldCBMaXN0CitTRUxFQ1QgaWQsIHZhbCwKKyAgICAgICBDT0FMRVNDRSh2 YWwsIDApIGFzIGNvYWxlc2NlZCwKKyAgICAgICBBQlModmFsIC0gMzApIGFzIGRpc3RhbmNlLAor ICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3RhcmdldAorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFs ID4gMAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjb2FsZXNjZWQgfCBkaXN0YW5jZSB8 IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLQorICAxIHwgIDEw IHwgICAgICAgIDEwIHwgICAgICAgMjAgfCAgIDUKKyAgMiB8ICAyMCB8ICAgICAgICAyMCB8ICAg ICAgIDEwIHwgICAwCisgIDMgfCAgMzAgfCAgICAgICAgMzAgfCAgICAgICAgMCB8ICAgMAorICA0 IHwgIDQwIHwgICAgICAgIDQwIHwgICAgICAgMTAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgICAgICA1 MCB8ICAgICAgIDIwIHwgICAwCisoNSByb3dzKQorCistLSBDb2x1bW4gQWxpYXNlcyBhbmQgUmVm ZXJlbmNlcworU0VMRUNUIGlkIGFzIHJvd19pZCwKKyAgICAgICB2YWwgYXMgdmFsdWUsCisgICAg ICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfdGFyZ2V0CitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAw CispCitPUkRFUiBCWSByb3dfaWQ7Cisgcm93X2lkIHwgdmFsdWUgfCBjbnQgCistLS0tLS0tLSst LS0tLS0tKy0tLS0tCisgICAgICAxIHwgICAgMTAgfCAgIDUKKyAgICAgIDIgfCAgICAyMCB8ICAg MAorICAgICAgMyB8ICAgIDMwIHwgICAwCisgICAgICA0IHwgICAgNDAgfCAgIDAKKyAgICAgIDUg fCAgICA1MCB8ICAgMAorKDUgcm93cykKKworRFJPUCBUQUJMRSBycHJfdGFyZ2V0OworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBTZXQgT3BlcmF0aW9ucyBUZXN0cworLS0gRmlsZXM6IHBsYW5uZXIuYworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBUZXN0cyBSUFIgd2l0aCBVTklPTiwgSU5URVJTRUNULCBFWENFUFQKK0NSRUFURSBUQUJMRSBy cHJfc2V0MSAoaWQgSU5ULCB2YWwgSU5UKTsKK0NSRUFURSBUQUJMRSBycHJfc2V0MiAoaWQgSU5U LCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9zZXQxIFZBTFVFUyAoMSwgMTApLCAoMiwgMjAp LCAoMywgMzApOworSU5TRVJUIElOVE8gcnByX3NldDIgVkFMVUVTICgyLCAyMCksICgzLCAzMCks ICg0LCA0MCk7CistLSBVTklPTiB3aXRoIFJQUgorKFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBP VkVSIHcgYXMgY250CisgRlJPTSBycHJfc2V0MQorIFdJTkRPVyB3IEFTICgKKyAgICAgT1JERVIg QlkgaWQKKyAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgIFBBVFRFUk4gKEErKQorICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgKSkKK1VO SU9OCisoU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyBGUk9NIHJwcl9z ZXQyCisgV0lORE9XIHcgQVMgKAorICAgICBPUkRFUiBCWSBpZAorICAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgUEFUVEVSTiAoQSspCisg ICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyApKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBj bnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDMKKyAgMiB8ICAyMCB8ICAgMAor ICAyIHwgIDIwIHwgICAzCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorKDUgcm93 cykKKworLS0gVU5JT04gQUxMIHdpdGggUlBSCisoU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9W RVIgdyBhcyBjbnQKKyBGUk9NIHJwcl9zZXQxCisgV0lORE9XIHcgQVMgKAorICAgICBPUkRFUiBC WSBpZAorICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICAgUEFUVEVSTiAoQSspCisgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyApKQorVU5J T04gQUxMCisoU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyBGUk9NIHJw cl9zZXQyCisgV0lORE9XIHcgQVMgKAorICAgICBPUkRFUiBCWSBpZAorICAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgUEFUVEVSTiAoQSsp CisgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyApKQorT1JERVIgQlkgaWQsIHZhbDsKKyBpZCB8 IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMworICAyIHwgIDIw IHwgICAwCisgIDIgfCAgMjAgfCAgIDMKKyAgMyB8ICAzMCB8ICAgMAorICAzIHwgIDMwIHwgICAw CisgIDQgfCAgNDAgfCAgIDAKKyg2IHJvd3MpCisKKy0tIElOVEVSU0VDVCB3aXRoIFJQUgorKFNF TEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgRlJPTSBycHJfc2V0MQorIFdJ TkRPVyB3IEFTICgKKyAgICAgT1JERVIgQlkgaWQKKyAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgIFBBVFRFUk4gKEErKQorICAgICBERUZJ TkUgQSBBUyB2YWwgPiAwCisgKSkKK0lOVEVSU0VDVAorKFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CisgRlJPTSBycHJfc2V0MgorIFdJTkRPVyB3IEFTICgKKyAgICAgT1JE RVIgQlkgaWQKKyAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgIFBBVFRFUk4gKEErKQorICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgKSkK K09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAzIHwg IDMwIHwgICAwCisoMSByb3cpCisKKy0tIEVYQ0VQVCB3aXRoIFJQUgorKFNFTEVDVCBpZCwgdmFs LCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgRlJPTSBycHJfc2V0MQorIFdJTkRPVyB3IEFTICgK KyAgICAgT1JERVIgQlkgaWQKKyAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgIFBBVFRFUk4gKEErKQorICAgICBERUZJTkUgQSBBUyB2YWwg PiAwCisgKSkKK0VYQ0VQVAorKFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250 CisgRlJPTSBycHJfc2V0MgorIFdJTkRPVyB3IEFTICgKKyAgICAgT1JERVIgQlkgaWQKKyAgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgIFBB VFRFUk4gKEErKQorICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgKSkKK09SREVSIEJZIGlkOwor IGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAzCisgIDIg fCAgMjAgfCAgIDAKKygyIHJvd3MpCisKK0RST1AgVEFCTEUgcnByX3NldDEsIHJwcl9zZXQyOwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBTb3J0aW5nIGFuZCBHcm91cGluZyBUZXN0cworLS0gRmlsZXM6IHBsYW5uZXIu YywgY3JlYXRlcGxhbi5jCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3RzIFJQUiBpbnRlcmFjdGlvbiB3aXRoIHNv cnRpbmcgYW5kIGdyb3VwaW5nCitDUkVBVEUgVEFCTEUgcnByX3NvcnQgKGlkIElOVCwgY2F0ZWdv cnkgVkFSQ0hBUigxMCksIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3NvcnQgVkFMVUVTCisg ICAgKDEsICdBJywgMzApLCAoMiwgJ0InLCAyMCksICgzLCAnQScsIDEwKSwKKyAgICAoNCwgJ0In LCA0MCksICg1LCAnQScsIDUwKSwgKDYsICdCJywgNjApOworLS0gUlBSIHdpdGggR1JPVVAgQlkK K1NFTEVDVCBjYXRlZ29yeSwKKyAgICAgICBDT1VOVCgqKSBhcyBncm91cF9jbnQsCisgICAgICAg TUFYKHZhbCkgYXMgbWF4X3ZhbCwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgd2luZG93X2Nu dAorRlJPTSBycHJfc29ydAorR1JPVVAgQlkgY2F0ZWdvcnkKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBjYXRlZ29yeQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIENPVU5UKCop ID4gMAorKQorT1JERVIgQlkgY2F0ZWdvcnk7CitFUlJPUjogIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMg YXJlIG5vdCBhbGxvd2VkIGluIERFRklORQorTElORSAxMTogICAgIERFRklORSBBIEFTIENPVU5U KCopID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFJQUiB3aXRoIEhBVklORwor U0VMRUNUIGNhdGVnb3J5LAorICAgICAgIENPVU5UKCopIGFzIGdyb3VwX2NudCwKKyAgICAgICBD T1VOVCgqKSBPVkVSIHcgYXMgd2luZG93X2NudAorRlJPTSBycHJfc29ydAorR1JPVVAgQlkgY2F0 ZWdvcnkKK0hBVklORyBDT1VOVCgqKSA+IDIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBj YXRlZ29yeQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIENPVU5UKCopID4gMAorKQor T1JERVIgQlkgY2F0ZWdvcnk7CitFUlJPUjogIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYXJlIG5vdCBh bGxvd2VkIGluIERFRklORQorTElORSAxMTogICAgIERFRklORSBBIEFTIENPVU5UKCopID4gMAor ICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFJQUiB3aXRoIERJU1RJTkNUCitTRUxFQ1Qg RElTVElOQ1QgY2F0ZWdvcnksCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBy cHJfc29ydAorV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjYXRlZ29yeQorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JE RVIgQlkgY2F0ZWdvcnk7CisgY2F0ZWdvcnkgfCBjbnQgCistLS0tLS0tLS0tKy0tLS0tCisgQSAg ICAgICAgfCAgIDMKKyBBICAgICAgICB8ICAgMAorIEIgICAgICAgIHwgICAwCisgQiAgICAgICAg fCAgIDMKKyg0IHJvd3MpCisKKy0tIFJQUiB3aXRoIE9SREVSIEJZIChkaWZmZXJlbnQgZnJvbSB3 aW5kb3cgT1JERVIgQlkpCitTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc29ydAorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIg QlkgdmFsIERFU0M7CisgaWQgfCBjYXRlZ29yeSB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0tLS0t LSstLS0tLSstLS0tLQorICA2IHwgQiAgICAgICAgfCAgNjAgfCAgIDAKKyAgNSB8IEEgICAgICAg IHwgIDUwIHwgICAwCisgIDQgfCBCICAgICAgICB8ICA0MCB8ICAgMAorICAxIHwgQSAgICAgICAg fCAgMzAgfCAgIDYKKyAgMiB8IEIgICAgICAgIHwgIDIwIHwgICAwCisgIDMgfCBBICAgICAgICB8 ICAxMCB8ICAgMAorKDYgcm93cykKKworLS0gUlBSIHdpdGggTElNSVQgYW5kIE9GRlNFVAorU0VM RUNUIGlkLCBjYXRlZ29yeSwgdmFsLAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZS T00gcnByX3NvcnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEr KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkCitMSU1JVCAzIE9GRlNF VCAxOworIGlkIHwgY2F0ZWdvcnkgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0r LS0tLS0KKyAgMiB8IEIgICAgICAgIHwgIDIwIHwgICAwCisgIDMgfCBBICAgICAgICB8ICAxMCB8 ICAgMAorICA0IHwgQiAgICAgICAgfCAgNDAgfCAgIDAKKygzIHJvd3MpCisKK0RST1AgVEFCTEUg cnByX3NvcnQ7CitEUk9QIFRBQkxFIHJwcl9wbGFubmVyOworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTdHJlc3MgVGVz dHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gRWRnZSBjYXNlcyBhbmQgc3RyZXNzIHNjZW5hcmlvcworQ1JFQVRFIFRB QkxFIHJwcl9zdHJlc3MgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfc3RyZXNz IFNFTEVDVCBpLCBpICogMTAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIGk7CistLSBWZXJ5 IExvbmcgUXVlcnkgd2l0aCBNYW55IFdpbmRvd3MKK1NFTEVDVCBpZCwgdmFsLAorICAgICAgIENP VU5UKCopIE9WRVIgdzEgYXMgY250MSwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcyIGFzIGNudDIs CisgICAgICAgQ09VTlQoKikgT1ZFUiB3MyBhcyBjbnQzCitGUk9NIHJwcl9zdHJlc3MKK1dJTkRP VyB3MSBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBB UyB2YWwgPiAwCispLAordzIgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQispCisg ICAgREVGSU5FIEIgQVMgdmFsID4gNTAKKyksCit3MyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChDKykKKyAgICBERUZJTkUgQyBBUyB2YWwgPiAxMDAKKykKK09SREVSIEJZIGlkOwor IGlkIHwgdmFsIHwgY250MSB8IGNudDIgfCBjbnQzIAorLS0tLSstLS0tLSstLS0tLS0rLS0tLS0t Ky0tLS0tLQorICAxIHwgIDEwIHwgICAyMCB8ICAgIDAgfCAgICAwCisgIDIgfCAgMjAgfCAgICAw IHwgICAgMCB8ICAgIDAKKyAgMyB8ICAzMCB8ICAgIDAgfCAgICAwIHwgICAgMAorICA0IHwgIDQw IHwgICAgMCB8ICAgIDAgfCAgICAwCisgIDUgfCAgNTAgfCAgICAwIHwgICAgMCB8ICAgIDAKKyAg NiB8ICA2MCB8ICAgIDAgfCAgIDE1IHwgICAgMAorICA3IHwgIDcwIHwgICAgMCB8ICAgIDAgfCAg ICAwCisgIDggfCAgODAgfCAgICAwIHwgICAgMCB8ICAgIDAKKyAgOSB8ICA5MCB8ICAgIDAgfCAg ICAwIHwgICAgMAorIDEwIHwgMTAwIHwgICAgMCB8ICAgIDAgfCAgICAwCisgMTEgfCAxMTAgfCAg ICAwIHwgICAgMCB8ICAgMTAKKyAxMiB8IDEyMCB8ICAgIDAgfCAgICAwIHwgICAgMAorIDEzIHwg MTMwIHwgICAgMCB8ICAgIDAgfCAgICAwCisgMTQgfCAxNDAgfCAgICAwIHwgICAgMCB8ICAgIDAK KyAxNSB8IDE1MCB8ICAgIDAgfCAgICAwIHwgICAgMAorIDE2IHwgMTYwIHwgICAgMCB8ICAgIDAg fCAgICAwCisgMTcgfCAxNzAgfCAgICAwIHwgICAgMCB8ICAgIDAKKyAxOCB8IDE4MCB8ICAgIDAg fCAgICAwIHwgICAgMAorIDE5IHwgMTkwIHwgICAgMCB8ICAgIDAgfCAgICAwCisgMjAgfCAyMDAg fCAgICAwIHwgICAgMCB8ICAgIDAKKygyMCByb3dzKQorCistLSBEZWVwbHkgTmVzdGVkIFN1YnF1 ZXJpZXMgd2l0aCBSUFIKK1NFTEVDVCAqIEZST00gKAorICAgIFNFTEVDVCAqIEZST00gKAorICAg ICAgICBTRUxFQ1QgKiBGUk9NICgKKyAgICAgICAgICAgIFNFTEVDVCBpZCwgdmFsLAorICAgICAg ICAgICAgICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyAgICAgICAgICAgIEZST00gcnBy X3N0cmVzcworICAgICAgICAgICAgV0lORE9XIHcgQVMgKAorICAgICAgICAgICAgICAgIE9SREVS IEJZIGlkCisgICAgICAgICAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgICAg ICAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICAgICAgICAgICAgKQorICAgICAgICApIHN1YjEK KyAgICApIHN1YjIKKykgc3ViMworV0hFUkUgY250ID4gMTAKK09SREVSIEJZIGlkOworIGlkIHwg dmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgIDIwCisoMSByb3cpCisK Ky0tIENvbXBsZXggRXhwcmVzc2lvbiBpbiBERUZJTkUgQ2xhdXNlCitTRUxFQ1QgaWQsIHZhbCwK KyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9zdHJlc3MKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMg KHZhbCAlIDMgPSAwIE9SIHZhbCAlIDUgPSAwKSwKKyAgICAgICAgICAgQiBBUyAodmFsICogMiA+ IDEwMCBBTkQgdmFsIC8gMiA8IDEwMCkKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250 IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgIDE5CisgIDIgfCAgMjAgfCAgIDAKKyAg MyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICAwCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2 MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAg MAorIDEwIHwgMTAwIHwgICAwCisgMTEgfCAxMTAgfCAgIDAKKyAxMiB8IDEyMCB8ICAgMAorIDEz IHwgMTMwIHwgICAwCisgMTQgfCAxNDAgfCAgIDAKKyAxNSB8IDE1MCB8ICAgMAorIDE2IHwgMTYw IHwgICAwCisgMTcgfCAxNzAgfCAgIDAKKyAxOCB8IDE4MCB8ICAgMAorIDE5IHwgMTkwIHwgICAw CisgMjAgfCAyMDAgfCAgIDAKKygyMCByb3dzKQorCistLSBXaW5kb3cgd2l0aCBObyBNYXRjaGlu ZyBSb3dzCitTRUxFQ1QgaWQsIHZhbCwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitG Uk9NIHJwcl9zdHJlc3MKK1dIRVJFIHZhbCA+IDEwMDAgIC0tIE5vIHJvd3MgbWF0Y2gKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFT IHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSst LS0tLQorKDAgcm93cykKKworLS0gV2luZG93IG9uIFNpbmdsZSBSb3cKK1NFTEVDVCBpZCwgdmFs LAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3N0cmVzcworV0hFUkUg aWQgPSAxMAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisg ICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQg CistLS0tKy0tLS0tKy0tLS0tCisgMTAgfCAxMDAgfCAgIDEKKygxIHJvdykKKworRFJPUCBUQUJM RSBycHJfc3RyZXNzOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBFcnJvciBMaW1pdCBUZXN0cworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBU ZXN0cyBmb3IgZXJyb3IgY29uZGl0aW9ucyBpbiBycHIuYworQ1JFQVRFIFRBQkxFIHJwcl9lcnJv cnMgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfZXJyb3JzIFZBTFVFUyAoMSwg MTApLCAoMiwgMjApOworLS0gVGVzdDogUEFUVEVSTiB2YXJpYWJsZSB3aXRob3V0IERFRklORSAo QSksIERFRklORSB2YXJpYWJsZSBub3QgaW4gUEFUVEVSTiAoQikKK1NFTEVDVCBpZCwgdmFsLCBD T1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfZXJyb3JzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORQorICAgICAgQiBBUyBUUlVFCispOworIGlk IHwgdmFsIHwgY291bnQgCistLS0tKy0tLS0tKy0tLS0tLS0KKyAgMSB8ICAxMCB8ICAgICAwCisg IDIgfCAgMjAgfCAgICAgMAorKDIgcm93cykKKworLS0gRXhwZWN0ZWQ6IFN1Y2Nlc3MgLSBBIGlz IGltcGxpY2l0bHkgVFJVRSwgQiBpcyBmaWx0ZXJlZCBvdXQKKy0tIFRlc3Q6IDMgdmFyaWFibGVz IGluIFBBVFRFUk4sIDI1MyBpbiBERUZJTkUgKERFRklORSBmaWx0ZXJpbmcgdGVzdCkKK1NFTEVD VCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfZXJyb3JzCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChWMSBWMiBWMykKKyAgICBERUZJTkUKKyAgICBWMSBBUyB2YWwg PiAwLCBWMiBBUyB2YWwgPiAwLCBWMyBBUyB2YWwgPiAwLCBWNCBBUyB2YWwgPiAwLCBWNSBBUyB2 YWwgPiAwLCBWNiBBUyB2YWwgPiAwLCBWNyBBUyB2YWwgPiAwLCBWOCBBUyB2YWwgPiAwLCBWOSBB UyB2YWwgPiAwLCBWMTAgQVMgdmFsID4gMCwKKyAgICBWMTEgQVMgdmFsID4gMCwgVjEyIEFTIHZh bCA+IDAsIFYxMyBBUyB2YWwgPiAwLCBWMTQgQVMgdmFsID4gMCwgVjE1IEFTIHZhbCA+IDAsIFYx NiBBUyB2YWwgPiAwLCBWMTcgQVMgdmFsID4gMCwgVjE4IEFTIHZhbCA+IDAsIFYxOSBBUyB2YWwg PiAwLCBWMjAgQVMgdmFsID4gMCwKKyAgICBWMjEgQVMgdmFsID4gMCwgVjIyIEFTIHZhbCA+IDAs IFYyMyBBUyB2YWwgPiAwLCBWMjQgQVMgdmFsID4gMCwgVjI1IEFTIHZhbCA+IDAsIFYyNiBBUyB2 YWwgPiAwLCBWMjcgQVMgdmFsID4gMCwgVjI4IEFTIHZhbCA+IDAsIFYyOSBBUyB2YWwgPiAwLCBW MzAgQVMgdmFsID4gMCwKKyAgICBWMzEgQVMgdmFsID4gMCwgVjMyIEFTIHZhbCA+IDAsIFYzMyBB UyB2YWwgPiAwLCBWMzQgQVMgdmFsID4gMCwgVjM1IEFTIHZhbCA+IDAsIFYzNiBBUyB2YWwgPiAw LCBWMzcgQVMgdmFsID4gMCwgVjM4IEFTIHZhbCA+IDAsIFYzOSBBUyB2YWwgPiAwLCBWNDAgQVMg dmFsID4gMCwKKyAgICBWNDEgQVMgdmFsID4gMCwgVjQyIEFTIHZhbCA+IDAsIFY0MyBBUyB2YWwg PiAwLCBWNDQgQVMgdmFsID4gMCwgVjQ1IEFTIHZhbCA+IDAsIFY0NiBBUyB2YWwgPiAwLCBWNDcg QVMgdmFsID4gMCwgVjQ4IEFTIHZhbCA+IDAsIFY0OSBBUyB2YWwgPiAwLCBWNTAgQVMgdmFsID4g MCwKKyAgICBWNTEgQVMgdmFsID4gMCwgVjUyIEFTIHZhbCA+IDAsIFY1MyBBUyB2YWwgPiAwLCBW NTQgQVMgdmFsID4gMCwgVjU1IEFTIHZhbCA+IDAsIFY1NiBBUyB2YWwgPiAwLCBWNTcgQVMgdmFs ID4gMCwgVjU4IEFTIHZhbCA+IDAsIFY1OSBBUyB2YWwgPiAwLCBWNjAgQVMgdmFsID4gMCwKKyAg ICBWNjEgQVMgdmFsID4gMCwgVjYyIEFTIHZhbCA+IDAsIFY2MyBBUyB2YWwgPiAwLCBWNjQgQVMg dmFsID4gMCwgVjY1IEFTIHZhbCA+IDAsIFY2NiBBUyB2YWwgPiAwLCBWNjcgQVMgdmFsID4gMCwg VjY4IEFTIHZhbCA+IDAsIFY2OSBBUyB2YWwgPiAwLCBWNzAgQVMgdmFsID4gMCwKKyAgICBWNzEg QVMgdmFsID4gMCwgVjcyIEFTIHZhbCA+IDAsIFY3MyBBUyB2YWwgPiAwLCBWNzQgQVMgdmFsID4g MCwgVjc1IEFTIHZhbCA+IDAsIFY3NiBBUyB2YWwgPiAwLCBWNzcgQVMgdmFsID4gMCwgVjc4IEFT IHZhbCA+IDAsIFY3OSBBUyB2YWwgPiAwLCBWODAgQVMgdmFsID4gMCwKKyAgICBWODEgQVMgdmFs ID4gMCwgVjgyIEFTIHZhbCA+IDAsIFY4MyBBUyB2YWwgPiAwLCBWODQgQVMgdmFsID4gMCwgVjg1 IEFTIHZhbCA+IDAsIFY4NiBBUyB2YWwgPiAwLCBWODcgQVMgdmFsID4gMCwgVjg4IEFTIHZhbCA+ IDAsIFY4OSBBUyB2YWwgPiAwLCBWOTAgQVMgdmFsID4gMCwKKyAgICBWOTEgQVMgdmFsID4gMCwg VjkyIEFTIHZhbCA+IDAsIFY5MyBBUyB2YWwgPiAwLCBWOTQgQVMgdmFsID4gMCwgVjk1IEFTIHZh bCA+IDAsIFY5NiBBUyB2YWwgPiAwLCBWOTcgQVMgdmFsID4gMCwgVjk4IEFTIHZhbCA+IDAsIFY5 OSBBUyB2YWwgPiAwLCBWMTAwIEFTIHZhbCA+IDAsCisgICAgVjEwMSBBUyB2YWwgPiAwLCBWMTAy IEFTIHZhbCA+IDAsIFYxMDMgQVMgdmFsID4gMCwgVjEwNCBBUyB2YWwgPiAwLCBWMTA1IEFTIHZh bCA+IDAsIFYxMDYgQVMgdmFsID4gMCwgVjEwNyBBUyB2YWwgPiAwLCBWMTA4IEFTIHZhbCA+IDAs IFYxMDkgQVMgdmFsID4gMCwgVjExMCBBUyB2YWwgPiAwLAorICAgIFYxMTEgQVMgdmFsID4gMCwg VjExMiBBUyB2YWwgPiAwLCBWMTEzIEFTIHZhbCA+IDAsIFYxMTQgQVMgdmFsID4gMCwgVjExNSBB UyB2YWwgPiAwLCBWMTE2IEFTIHZhbCA+IDAsIFYxMTcgQVMgdmFsID4gMCwgVjExOCBBUyB2YWwg PiAwLCBWMTE5IEFTIHZhbCA+IDAsIFYxMjAgQVMgdmFsID4gMCwKKyAgICBWMTIxIEFTIHZhbCA+ IDAsIFYxMjIgQVMgdmFsID4gMCwgVjEyMyBBUyB2YWwgPiAwLCBWMTI0IEFTIHZhbCA+IDAsIFYx MjUgQVMgdmFsID4gMCwgVjEyNiBBUyB2YWwgPiAwLCBWMTI3IEFTIHZhbCA+IDAsIFYxMjggQVMg dmFsID4gMCwgVjEyOSBBUyB2YWwgPiAwLCBWMTMwIEFTIHZhbCA+IDAsCisgICAgVjEzMSBBUyB2 YWwgPiAwLCBWMTMyIEFTIHZhbCA+IDAsIFYxMzMgQVMgdmFsID4gMCwgVjEzNCBBUyB2YWwgPiAw LCBWMTM1IEFTIHZhbCA+IDAsIFYxMzYgQVMgdmFsID4gMCwgVjEzNyBBUyB2YWwgPiAwLCBWMTM4 IEFTIHZhbCA+IDAsIFYxMzkgQVMgdmFsID4gMCwgVjE0MCBBUyB2YWwgPiAwLAorICAgIFYxNDEg QVMgdmFsID4gMCwgVjE0MiBBUyB2YWwgPiAwLCBWMTQzIEFTIHZhbCA+IDAsIFYxNDQgQVMgdmFs ID4gMCwgVjE0NSBBUyB2YWwgPiAwLCBWMTQ2IEFTIHZhbCA+IDAsIFYxNDcgQVMgdmFsID4gMCwg VjE0OCBBUyB2YWwgPiAwLCBWMTQ5IEFTIHZhbCA+IDAsIFYxNTAgQVMgdmFsID4gMCwKKyAgICBW MTUxIEFTIHZhbCA+IDAsIFYxNTIgQVMgdmFsID4gMCwgVjE1MyBBUyB2YWwgPiAwLCBWMTU0IEFT IHZhbCA+IDAsIFYxNTUgQVMgdmFsID4gMCwgVjE1NiBBUyB2YWwgPiAwLCBWMTU3IEFTIHZhbCA+ IDAsIFYxNTggQVMgdmFsID4gMCwgVjE1OSBBUyB2YWwgPiAwLCBWMTYwIEFTIHZhbCA+IDAsCisg ICAgVjE2MSBBUyB2YWwgPiAwLCBWMTYyIEFTIHZhbCA+IDAsIFYxNjMgQVMgdmFsID4gMCwgVjE2 NCBBUyB2YWwgPiAwLCBWMTY1IEFTIHZhbCA+IDAsIFYxNjYgQVMgdmFsID4gMCwgVjE2NyBBUyB2 YWwgPiAwLCBWMTY4IEFTIHZhbCA+IDAsIFYxNjkgQVMgdmFsID4gMCwgVjE3MCBBUyB2YWwgPiAw LAorICAgIFYxNzEgQVMgdmFsID4gMCwgVjE3MiBBUyB2YWwgPiAwLCBWMTczIEFTIHZhbCA+IDAs IFYxNzQgQVMgdmFsID4gMCwgVjE3NSBBUyB2YWwgPiAwLCBWMTc2IEFTIHZhbCA+IDAsIFYxNzcg QVMgdmFsID4gMCwgVjE3OCBBUyB2YWwgPiAwLCBWMTc5IEFTIHZhbCA+IDAsIFYxODAgQVMgdmFs ID4gMCwKKyAgICBWMTgxIEFTIHZhbCA+IDAsIFYxODIgQVMgdmFsID4gMCwgVjE4MyBBUyB2YWwg PiAwLCBWMTg0IEFTIHZhbCA+IDAsIFYxODUgQVMgdmFsID4gMCwgVjE4NiBBUyB2YWwgPiAwLCBW MTg3IEFTIHZhbCA+IDAsIFYxODggQVMgdmFsID4gMCwgVjE4OSBBUyB2YWwgPiAwLCBWMTkwIEFT IHZhbCA+IDAsCisgICAgVjE5MSBBUyB2YWwgPiAwLCBWMTkyIEFTIHZhbCA+IDAsIFYxOTMgQVMg dmFsID4gMCwgVjE5NCBBUyB2YWwgPiAwLCBWMTk1IEFTIHZhbCA+IDAsIFYxOTYgQVMgdmFsID4g MCwgVjE5NyBBUyB2YWwgPiAwLCBWMTk4IEFTIHZhbCA+IDAsIFYxOTkgQVMgdmFsID4gMCwgVjIw MCBBUyB2YWwgPiAwLAorICAgIFYyMDEgQVMgdmFsID4gMCwgVjIwMiBBUyB2YWwgPiAwLCBWMjAz IEFTIHZhbCA+IDAsIFYyMDQgQVMgdmFsID4gMCwgVjIwNSBBUyB2YWwgPiAwLCBWMjA2IEFTIHZh bCA+IDAsIFYyMDcgQVMgdmFsID4gMCwgVjIwOCBBUyB2YWwgPiAwLCBWMjA5IEFTIHZhbCA+IDAs IFYyMTAgQVMgdmFsID4gMCwKKyAgICBWMjExIEFTIHZhbCA+IDAsIFYyMTIgQVMgdmFsID4gMCwg VjIxMyBBUyB2YWwgPiAwLCBWMjE0IEFTIHZhbCA+IDAsIFYyMTUgQVMgdmFsID4gMCwgVjIxNiBB UyB2YWwgPiAwLCBWMjE3IEFTIHZhbCA+IDAsIFYyMTggQVMgdmFsID4gMCwgVjIxOSBBUyB2YWwg PiAwLCBWMjIwIEFTIHZhbCA+IDAsCisgICAgVjIyMSBBUyB2YWwgPiAwLCBWMjIyIEFTIHZhbCA+ IDAsIFYyMjMgQVMgdmFsID4gMCwgVjIyNCBBUyB2YWwgPiAwLCBWMjI1IEFTIHZhbCA+IDAsIFYy MjYgQVMgdmFsID4gMCwgVjIyNyBBUyB2YWwgPiAwLCBWMjI4IEFTIHZhbCA+IDAsIFYyMjkgQVMg dmFsID4gMCwgVjIzMCBBUyB2YWwgPiAwLAorICAgIFYyMzEgQVMgdmFsID4gMCwgVjIzMiBBUyB2 YWwgPiAwLCBWMjMzIEFTIHZhbCA+IDAsIFYyMzQgQVMgdmFsID4gMCwgVjIzNSBBUyB2YWwgPiAw LCBWMjM2IEFTIHZhbCA+IDAsIFYyMzcgQVMgdmFsID4gMCwgVjIzOCBBUyB2YWwgPiAwLCBWMjM5 IEFTIHZhbCA+IDAsIFYyNDAgQVMgdmFsID4gMCwKKyAgICBWMjQxIEFTIHZhbCA+IDAsIFYyNDIg QVMgdmFsID4gMCwgVjI0MyBBUyB2YWwgPiAwLCBWMjQ0IEFTIHZhbCA+IDAsIFYyNDUgQVMgdmFs ID4gMCwgVjI0NiBBUyB2YWwgPiAwLCBWMjQ3IEFTIHZhbCA+IDAsIFYyNDggQVMgdmFsID4gMCwg VjI0OSBBUyB2YWwgPiAwLCBWMjUwIEFTIHZhbCA+IDAsCisgICAgVjI1MSBBUyB2YWwgPiAwLCBW MjUyIEFTIHZhbCA+IDAsIFYyNTMgQVMgdmFsID4gMAorKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAg ICAgMAorICAgICAwCisoMiByb3dzKQorCistLSBFeHBlY3RlZDogU3VjY2VzcyAtIHVudXNlZCBE RUZJTkUgdmFyaWFibGVzIGFyZSBmaWx0ZXJlZCBvdXQKKy0tIFRlc3Q6IDI1MSB2YXJpYWJsZXMg aW4gUEFUVEVSTiwgMjUyIGluIERFRklORSAoYm91bmRhcnkgLSBzaG91bGQgc3VjY2VlZCkKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfZXJyb3JzCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChWMSBWMiBWMyBWNCBWNSBWNiBWNyBWOCBWOSBWMTAgVjEx IFYxMiBWMTMgVjE0IFYxNSBWMTYgVjE3IFYxOCBWMTkgVjIwIFYyMSBWMjIgVjIzIFYyNCBWMjUg VjI2IFYyNyBWMjggVjI5IFYzMCBWMzEgVjMyIFYzMyBWMzQgVjM1IFYzNiBWMzcgVjM4IFYzOSBW NDAgVjQxIFY0MiBWNDMgVjQ0IFY0NSBWNDYgVjQ3IFY0OCBWNDkgVjUwIFY1MSBWNTIgVjUzIFY1 NCBWNTUgVjU2IFY1NyBWNTggVjU5IFY2MCBWNjEgVjYyIFY2MyBWNjQgVjY1IFY2NiBWNjcgVjY4 IFY2OSBWNzAgVjcxIFY3MiBWNzMgVjc0IFY3NSBWNzYgVjc3IFY3OCBWNzkgVjgwIFY4MSBWODIg VjgzIFY4NCBWODUgVjg2IFY4NyBWODggVjg5IFY5MCBWOTEgVjkyIFY5MyBWOTQgVjk1IFY5NiBW OTcgVjk4IFY5OSBWMTAwIFYxMDEgVjEwMiBWMTAzIFYxMDQgVjEwNSBWMTA2IFYxMDcgVjEwOCBW MTA5IFYxMTAgVjExMSBWMTEyIFYxMTMgVjExNCBWMTE1IFYxMTYgVjExNyBWMTE4IFYxMTkgVjEy MCBWMTIxIFYxMjIgVjEyMyBWMTI0IFYxMjUgVjEyNiBWMTI3IFYxMjggVjEyOSBWMTMwIFYxMzEg VjEzMiBWMTMzIFYxMzQgVjEzNSBWMTM2IFYxMzcgVjEzOCBWMTM5IFYxNDAgVjE0MSBWMTQyIFYx NDMgVjE0NCBWMTQ1IFYxNDYgVjE0NyBWMTQ4IFYxNDkgVjE1MCBWMTUxIFYxNTIgVjE1MyBWMTU0 IFYxNTUgVjE1NiBWMTU3IFYxNTggVjE1OSBWMTYwIFYxNjEgVjE2MiBWMTYzIFYxNjQgVjE2NSBW MTY2IFYxNjcgVjE2OCBWMTY5IFYxNzAgVjE3MSBWMTcyIFYxNzMgVjE3NCBWMTc1IFYxNzYgVjE3 NyBWMTc4IFYxNzkgVjE4MCBWMTgxIFYxODIgVjE4MyBWMTg0IFYxODUgVjE4NiBWMTg3IFYxODgg VjE4OSBWMTkwIFYxOTEgVjE5MiBWMTkzIFYxOTQgVjE5NSBWMTk2IFYxOTcgVjE5OCBWMTk5IFYy MDAgVjIwMSBWMjAyIFYyMDMgVjIwNCBWMjA1IFYyMDYgVjIwNyBWMjA4IFYyMDkgVjIxMCBWMjEx IFYyMTIgVjIxMyBWMjE0IFYyMTUgVjIxNiBWMjE3IFYyMTggVjIxOSBWMjIwIFYyMjEgVjIyMiBW MjIzIFYyMjQgVjIyNSBWMjI2IFYyMjcgVjIyOCBWMjI5IFYyMzAgVjIzMSBWMjMyIFYyMzMgVjIz NCBWMjM1IFYyMzYgVjIzNyBWMjM4IFYyMzkgVjI0MCBWMjQxIFYyNDIgVjI0MyBWMjQ0IFYyNDUg VjI0NiBWMjQ3IFYyNDggVjI0OSBWMjUwIFYyNTEpCisgICAgREVGSU5FCisgICAgVjEgQVMgdmFs ID4gMCwgVjIgQVMgdmFsID4gMCwgVjMgQVMgdmFsID4gMCwgVjQgQVMgdmFsID4gMCwgVjUgQVMg dmFsID4gMCwgVjYgQVMgdmFsID4gMCwgVjcgQVMgdmFsID4gMCwgVjggQVMgdmFsID4gMCwgVjkg QVMgdmFsID4gMCwgVjEwIEFTIHZhbCA+IDAsCisgICAgVjExIEFTIHZhbCA+IDAsIFYxMiBBUyB2 YWwgPiAwLCBWMTMgQVMgdmFsID4gMCwgVjE0IEFTIHZhbCA+IDAsIFYxNSBBUyB2YWwgPiAwLCBW MTYgQVMgdmFsID4gMCwgVjE3IEFTIHZhbCA+IDAsIFYxOCBBUyB2YWwgPiAwLCBWMTkgQVMgdmFs ID4gMCwgVjIwIEFTIHZhbCA+IDAsCisgICAgVjIxIEFTIHZhbCA+IDAsIFYyMiBBUyB2YWwgPiAw LCBWMjMgQVMgdmFsID4gMCwgVjI0IEFTIHZhbCA+IDAsIFYyNSBBUyB2YWwgPiAwLCBWMjYgQVMg dmFsID4gMCwgVjI3IEFTIHZhbCA+IDAsIFYyOCBBUyB2YWwgPiAwLCBWMjkgQVMgdmFsID4gMCwg VjMwIEFTIHZhbCA+IDAsCisgICAgVjMxIEFTIHZhbCA+IDAsIFYzMiBBUyB2YWwgPiAwLCBWMzMg QVMgdmFsID4gMCwgVjM0IEFTIHZhbCA+IDAsIFYzNSBBUyB2YWwgPiAwLCBWMzYgQVMgdmFsID4g MCwgVjM3IEFTIHZhbCA+IDAsIFYzOCBBUyB2YWwgPiAwLCBWMzkgQVMgdmFsID4gMCwgVjQwIEFT IHZhbCA+IDAsCisgICAgVjQxIEFTIHZhbCA+IDAsIFY0MiBBUyB2YWwgPiAwLCBWNDMgQVMgdmFs ID4gMCwgVjQ0IEFTIHZhbCA+IDAsIFY0NSBBUyB2YWwgPiAwLCBWNDYgQVMgdmFsID4gMCwgVjQ3 IEFTIHZhbCA+IDAsIFY0OCBBUyB2YWwgPiAwLCBWNDkgQVMgdmFsID4gMCwgVjUwIEFTIHZhbCA+ IDAsCisgICAgVjUxIEFTIHZhbCA+IDAsIFY1MiBBUyB2YWwgPiAwLCBWNTMgQVMgdmFsID4gMCwg VjU0IEFTIHZhbCA+IDAsIFY1NSBBUyB2YWwgPiAwLCBWNTYgQVMgdmFsID4gMCwgVjU3IEFTIHZh bCA+IDAsIFY1OCBBUyB2YWwgPiAwLCBWNTkgQVMgdmFsID4gMCwgVjYwIEFTIHZhbCA+IDAsCisg ICAgVjYxIEFTIHZhbCA+IDAsIFY2MiBBUyB2YWwgPiAwLCBWNjMgQVMgdmFsID4gMCwgVjY0IEFT IHZhbCA+IDAsIFY2NSBBUyB2YWwgPiAwLCBWNjYgQVMgdmFsID4gMCwgVjY3IEFTIHZhbCA+IDAs IFY2OCBBUyB2YWwgPiAwLCBWNjkgQVMgdmFsID4gMCwgVjcwIEFTIHZhbCA+IDAsCisgICAgVjcx IEFTIHZhbCA+IDAsIFY3MiBBUyB2YWwgPiAwLCBWNzMgQVMgdmFsID4gMCwgVjc0IEFTIHZhbCA+ IDAsIFY3NSBBUyB2YWwgPiAwLCBWNzYgQVMgdmFsID4gMCwgVjc3IEFTIHZhbCA+IDAsIFY3OCBB UyB2YWwgPiAwLCBWNzkgQVMgdmFsID4gMCwgVjgwIEFTIHZhbCA+IDAsCisgICAgVjgxIEFTIHZh bCA+IDAsIFY4MiBBUyB2YWwgPiAwLCBWODMgQVMgdmFsID4gMCwgVjg0IEFTIHZhbCA+IDAsIFY4 NSBBUyB2YWwgPiAwLCBWODYgQVMgdmFsID4gMCwgVjg3IEFTIHZhbCA+IDAsIFY4OCBBUyB2YWwg PiAwLCBWODkgQVMgdmFsID4gMCwgVjkwIEFTIHZhbCA+IDAsCisgICAgVjkxIEFTIHZhbCA+IDAs IFY5MiBBUyB2YWwgPiAwLCBWOTMgQVMgdmFsID4gMCwgVjk0IEFTIHZhbCA+IDAsIFY5NSBBUyB2 YWwgPiAwLCBWOTYgQVMgdmFsID4gMCwgVjk3IEFTIHZhbCA+IDAsIFY5OCBBUyB2YWwgPiAwLCBW OTkgQVMgdmFsID4gMCwgVjEwMCBBUyB2YWwgPiAwLAorICAgIFYxMDEgQVMgdmFsID4gMCwgVjEw MiBBUyB2YWwgPiAwLCBWMTAzIEFTIHZhbCA+IDAsIFYxMDQgQVMgdmFsID4gMCwgVjEwNSBBUyB2 YWwgPiAwLCBWMTA2IEFTIHZhbCA+IDAsIFYxMDcgQVMgdmFsID4gMCwgVjEwOCBBUyB2YWwgPiAw LCBWMTA5IEFTIHZhbCA+IDAsIFYxMTAgQVMgdmFsID4gMCwKKyAgICBWMTExIEFTIHZhbCA+IDAs IFYxMTIgQVMgdmFsID4gMCwgVjExMyBBUyB2YWwgPiAwLCBWMTE0IEFTIHZhbCA+IDAsIFYxMTUg QVMgdmFsID4gMCwgVjExNiBBUyB2YWwgPiAwLCBWMTE3IEFTIHZhbCA+IDAsIFYxMTggQVMgdmFs ID4gMCwgVjExOSBBUyB2YWwgPiAwLCBWMTIwIEFTIHZhbCA+IDAsCisgICAgVjEyMSBBUyB2YWwg PiAwLCBWMTIyIEFTIHZhbCA+IDAsIFYxMjMgQVMgdmFsID4gMCwgVjEyNCBBUyB2YWwgPiAwLCBW MTI1IEFTIHZhbCA+IDAsIFYxMjYgQVMgdmFsID4gMCwgVjEyNyBBUyB2YWwgPiAwLCBWMTI4IEFT IHZhbCA+IDAsIFYxMjkgQVMgdmFsID4gMCwgVjEzMCBBUyB2YWwgPiAwLAorICAgIFYxMzEgQVMg dmFsID4gMCwgVjEzMiBBUyB2YWwgPiAwLCBWMTMzIEFTIHZhbCA+IDAsIFYxMzQgQVMgdmFsID4g MCwgVjEzNSBBUyB2YWwgPiAwLCBWMTM2IEFTIHZhbCA+IDAsIFYxMzcgQVMgdmFsID4gMCwgVjEz OCBBUyB2YWwgPiAwLCBWMTM5IEFTIHZhbCA+IDAsIFYxNDAgQVMgdmFsID4gMCwKKyAgICBWMTQx IEFTIHZhbCA+IDAsIFYxNDIgQVMgdmFsID4gMCwgVjE0MyBBUyB2YWwgPiAwLCBWMTQ0IEFTIHZh bCA+IDAsIFYxNDUgQVMgdmFsID4gMCwgVjE0NiBBUyB2YWwgPiAwLCBWMTQ3IEFTIHZhbCA+IDAs IFYxNDggQVMgdmFsID4gMCwgVjE0OSBBUyB2YWwgPiAwLCBWMTUwIEFTIHZhbCA+IDAsCisgICAg VjE1MSBBUyB2YWwgPiAwLCBWMTUyIEFTIHZhbCA+IDAsIFYxNTMgQVMgdmFsID4gMCwgVjE1NCBB UyB2YWwgPiAwLCBWMTU1IEFTIHZhbCA+IDAsIFYxNTYgQVMgdmFsID4gMCwgVjE1NyBBUyB2YWwg PiAwLCBWMTU4IEFTIHZhbCA+IDAsIFYxNTkgQVMgdmFsID4gMCwgVjE2MCBBUyB2YWwgPiAwLAor ICAgIFYxNjEgQVMgdmFsID4gMCwgVjE2MiBBUyB2YWwgPiAwLCBWMTYzIEFTIHZhbCA+IDAsIFYx NjQgQVMgdmFsID4gMCwgVjE2NSBBUyB2YWwgPiAwLCBWMTY2IEFTIHZhbCA+IDAsIFYxNjcgQVMg dmFsID4gMCwgVjE2OCBBUyB2YWwgPiAwLCBWMTY5IEFTIHZhbCA+IDAsIFYxNzAgQVMgdmFsID4g MCwKKyAgICBWMTcxIEFTIHZhbCA+IDAsIFYxNzIgQVMgdmFsID4gMCwgVjE3MyBBUyB2YWwgPiAw LCBWMTc0IEFTIHZhbCA+IDAsIFYxNzUgQVMgdmFsID4gMCwgVjE3NiBBUyB2YWwgPiAwLCBWMTc3 IEFTIHZhbCA+IDAsIFYxNzggQVMgdmFsID4gMCwgVjE3OSBBUyB2YWwgPiAwLCBWMTgwIEFTIHZh bCA+IDAsCisgICAgVjE4MSBBUyB2YWwgPiAwLCBWMTgyIEFTIHZhbCA+IDAsIFYxODMgQVMgdmFs ID4gMCwgVjE4NCBBUyB2YWwgPiAwLCBWMTg1IEFTIHZhbCA+IDAsIFYxODYgQVMgdmFsID4gMCwg VjE4NyBBUyB2YWwgPiAwLCBWMTg4IEFTIHZhbCA+IDAsIFYxODkgQVMgdmFsID4gMCwgVjE5MCBB UyB2YWwgPiAwLAorICAgIFYxOTEgQVMgdmFsID4gMCwgVjE5MiBBUyB2YWwgPiAwLCBWMTkzIEFT IHZhbCA+IDAsIFYxOTQgQVMgdmFsID4gMCwgVjE5NSBBUyB2YWwgPiAwLCBWMTk2IEFTIHZhbCA+ IDAsIFYxOTcgQVMgdmFsID4gMCwgVjE5OCBBUyB2YWwgPiAwLCBWMTk5IEFTIHZhbCA+IDAsIFYy MDAgQVMgdmFsID4gMCwKKyAgICBWMjAxIEFTIHZhbCA+IDAsIFYyMDIgQVMgdmFsID4gMCwgVjIw MyBBUyB2YWwgPiAwLCBWMjA0IEFTIHZhbCA+IDAsIFYyMDUgQVMgdmFsID4gMCwgVjIwNiBBUyB2 YWwgPiAwLCBWMjA3IEFTIHZhbCA+IDAsIFYyMDggQVMgdmFsID4gMCwgVjIwOSBBUyB2YWwgPiAw LCBWMjEwIEFTIHZhbCA+IDAsCisgICAgVjIxMSBBUyB2YWwgPiAwLCBWMjEyIEFTIHZhbCA+IDAs IFYyMTMgQVMgdmFsID4gMCwgVjIxNCBBUyB2YWwgPiAwLCBWMjE1IEFTIHZhbCA+IDAsIFYyMTYg QVMgdmFsID4gMCwgVjIxNyBBUyB2YWwgPiAwLCBWMjE4IEFTIHZhbCA+IDAsIFYyMTkgQVMgdmFs ID4gMCwgVjIyMCBBUyB2YWwgPiAwLAorICAgIFYyMjEgQVMgdmFsID4gMCwgVjIyMiBBUyB2YWwg PiAwLCBWMjIzIEFTIHZhbCA+IDAsIFYyMjQgQVMgdmFsID4gMCwgVjIyNSBBUyB2YWwgPiAwLCBW MjI2IEFTIHZhbCA+IDAsIFYyMjcgQVMgdmFsID4gMCwgVjIyOCBBUyB2YWwgPiAwLCBWMjI5IEFT IHZhbCA+IDAsIFYyMzAgQVMgdmFsID4gMCwKKyAgICBWMjMxIEFTIHZhbCA+IDAsIFYyMzIgQVMg dmFsID4gMCwgVjIzMyBBUyB2YWwgPiAwLCBWMjM0IEFTIHZhbCA+IDAsIFYyMzUgQVMgdmFsID4g MCwgVjIzNiBBUyB2YWwgPiAwLCBWMjM3IEFTIHZhbCA+IDAsIFYyMzggQVMgdmFsID4gMCwgVjIz OSBBUyB2YWwgPiAwLCBWMjQwIEFTIHZhbCA+IDAsCisgICAgVjI0MSBBUyB2YWwgPiAwLCBWMjQy IEFTIHZhbCA+IDAsIFYyNDMgQVMgdmFsID4gMCwgVjI0NCBBUyB2YWwgPiAwLCBWMjQ1IEFTIHZh bCA+IDAsIFYyNDYgQVMgdmFsID4gMCwgVjI0NyBBUyB2YWwgPiAwLCBWMjQ4IEFTIHZhbCA+IDAs IFYyNDkgQVMgdmFsID4gMCwgVjI1MCBBUyB2YWwgPiAwLAorICAgIFYyNTEgQVMgdmFsID4gMCwg VjI1MiBBUyB2YWwgPiAwCispOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisgICAgIDAKKygy IHJvd3MpCisKKy0tIEV4cGVjdGVkOiBTdWNjZXNzIC0gdW51c2VkIERFRklORSB2YXJpYWJsZXMg YXJlIGZpbHRlcmVkIG91dAorLS0gVGVzdDogMjUyIHZhcmlhYmxlcyBpbiBQQVRURVJOLCAyNTEg aW4gREVGSU5FIChleGNlZWRzIGxpbWl0IHdpdGggaW1wbGljaXQgVFJVRSkKK1NFTEVDVCBDT1VO VCgqKSBPVkVSIHcgRlJPTSBycHJfZXJyb3JzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChWMSBWMiBWMyBWNCBWNSBWNiBWNyBWOCBWOSBWMTAgVjExIFYxMiBWMTMg VjE0IFYxNSBWMTYgVjE3IFYxOCBWMTkgVjIwIFYyMSBWMjIgVjIzIFYyNCBWMjUgVjI2IFYyNyBW MjggVjI5IFYzMCBWMzEgVjMyIFYzMyBWMzQgVjM1IFYzNiBWMzcgVjM4IFYzOSBWNDAgVjQxIFY0 MiBWNDMgVjQ0IFY0NSBWNDYgVjQ3IFY0OCBWNDkgVjUwIFY1MSBWNTIgVjUzIFY1NCBWNTUgVjU2 IFY1NyBWNTggVjU5IFY2MCBWNjEgVjYyIFY2MyBWNjQgVjY1IFY2NiBWNjcgVjY4IFY2OSBWNzAg VjcxIFY3MiBWNzMgVjc0IFY3NSBWNzYgVjc3IFY3OCBWNzkgVjgwIFY4MSBWODIgVjgzIFY4NCBW ODUgVjg2IFY4NyBWODggVjg5IFY5MCBWOTEgVjkyIFY5MyBWOTQgVjk1IFY5NiBWOTcgVjk4IFY5 OSBWMTAwIFYxMDEgVjEwMiBWMTAzIFYxMDQgVjEwNSBWMTA2IFYxMDcgVjEwOCBWMTA5IFYxMTAg VjExMSBWMTEyIFYxMTMgVjExNCBWMTE1IFYxMTYgVjExNyBWMTE4IFYxMTkgVjEyMCBWMTIxIFYx MjIgVjEyMyBWMTI0IFYxMjUgVjEyNiBWMTI3IFYxMjggVjEyOSBWMTMwIFYxMzEgVjEzMiBWMTMz IFYxMzQgVjEzNSBWMTM2IFYxMzcgVjEzOCBWMTM5IFYxNDAgVjE0MSBWMTQyIFYxNDMgVjE0NCBW MTQ1IFYxNDYgVjE0NyBWMTQ4IFYxNDkgVjE1MCBWMTUxIFYxNTIgVjE1MyBWMTU0IFYxNTUgVjE1 NiBWMTU3IFYxNTggVjE1OSBWMTYwIFYxNjEgVjE2MiBWMTYzIFYxNjQgVjE2NSBWMTY2IFYxNjcg VjE2OCBWMTY5IFYxNzAgVjE3MSBWMTcyIFYxNzMgVjE3NCBWMTc1IFYxNzYgVjE3NyBWMTc4IFYx NzkgVjE4MCBWMTgxIFYxODIgVjE4MyBWMTg0IFYxODUgVjE4NiBWMTg3IFYxODggVjE4OSBWMTkw IFYxOTEgVjE5MiBWMTkzIFYxOTQgVjE5NSBWMTk2IFYxOTcgVjE5OCBWMTk5IFYyMDAgVjIwMSBW MjAyIFYyMDMgVjIwNCBWMjA1IFYyMDYgVjIwNyBWMjA4IFYyMDkgVjIxMCBWMjExIFYyMTIgVjIx MyBWMjE0IFYyMTUgVjIxNiBWMjE3IFYyMTggVjIxOSBWMjIwIFYyMjEgVjIyMiBWMjIzIFYyMjQg VjIyNSBWMjI2IFYyMjcgVjIyOCBWMjI5IFYyMzAgVjIzMSBWMjMyIFYyMzMgVjIzNCBWMjM1IFYy MzYgVjIzNyBWMjM4IFYyMzkgVjI0MCBWMjQxIFYyNDIgVjI0MyBWMjQ0IFYyNDUgVjI0NiBWMjQ3 IFYyNDggVjI0OSBWMjUwIFYyNTEgVjI1MikKKyAgICBERUZJTkUKKyAgICBWMSBBUyB2YWwgPiAw LCBWMiBBUyB2YWwgPiAwLCBWMyBBUyB2YWwgPiAwLCBWNCBBUyB2YWwgPiAwLCBWNSBBUyB2YWwg PiAwLCBWNiBBUyB2YWwgPiAwLCBWNyBBUyB2YWwgPiAwLCBWOCBBUyB2YWwgPiAwLCBWOSBBUyB2 YWwgPiAwLCBWMTAgQVMgdmFsID4gMCwKKyAgICBWMTEgQVMgdmFsID4gMCwgVjEyIEFTIHZhbCA+ IDAsIFYxMyBBUyB2YWwgPiAwLCBWMTQgQVMgdmFsID4gMCwgVjE1IEFTIHZhbCA+IDAsIFYxNiBB UyB2YWwgPiAwLCBWMTcgQVMgdmFsID4gMCwgVjE4IEFTIHZhbCA+IDAsIFYxOSBBUyB2YWwgPiAw LCBWMjAgQVMgdmFsID4gMCwKKyAgICBWMjEgQVMgdmFsID4gMCwgVjIyIEFTIHZhbCA+IDAsIFYy MyBBUyB2YWwgPiAwLCBWMjQgQVMgdmFsID4gMCwgVjI1IEFTIHZhbCA+IDAsIFYyNiBBUyB2YWwg PiAwLCBWMjcgQVMgdmFsID4gMCwgVjI4IEFTIHZhbCA+IDAsIFYyOSBBUyB2YWwgPiAwLCBWMzAg QVMgdmFsID4gMCwKKyAgICBWMzEgQVMgdmFsID4gMCwgVjMyIEFTIHZhbCA+IDAsIFYzMyBBUyB2 YWwgPiAwLCBWMzQgQVMgdmFsID4gMCwgVjM1IEFTIHZhbCA+IDAsIFYzNiBBUyB2YWwgPiAwLCBW MzcgQVMgdmFsID4gMCwgVjM4IEFTIHZhbCA+IDAsIFYzOSBBUyB2YWwgPiAwLCBWNDAgQVMgdmFs ID4gMCwKKyAgICBWNDEgQVMgdmFsID4gMCwgVjQyIEFTIHZhbCA+IDAsIFY0MyBBUyB2YWwgPiAw LCBWNDQgQVMgdmFsID4gMCwgVjQ1IEFTIHZhbCA+IDAsIFY0NiBBUyB2YWwgPiAwLCBWNDcgQVMg dmFsID4gMCwgVjQ4IEFTIHZhbCA+IDAsIFY0OSBBUyB2YWwgPiAwLCBWNTAgQVMgdmFsID4gMCwK KyAgICBWNTEgQVMgdmFsID4gMCwgVjUyIEFTIHZhbCA+IDAsIFY1MyBBUyB2YWwgPiAwLCBWNTQg QVMgdmFsID4gMCwgVjU1IEFTIHZhbCA+IDAsIFY1NiBBUyB2YWwgPiAwLCBWNTcgQVMgdmFsID4g MCwgVjU4IEFTIHZhbCA+IDAsIFY1OSBBUyB2YWwgPiAwLCBWNjAgQVMgdmFsID4gMCwKKyAgICBW NjEgQVMgdmFsID4gMCwgVjYyIEFTIHZhbCA+IDAsIFY2MyBBUyB2YWwgPiAwLCBWNjQgQVMgdmFs ID4gMCwgVjY1IEFTIHZhbCA+IDAsIFY2NiBBUyB2YWwgPiAwLCBWNjcgQVMgdmFsID4gMCwgVjY4 IEFTIHZhbCA+IDAsIFY2OSBBUyB2YWwgPiAwLCBWNzAgQVMgdmFsID4gMCwKKyAgICBWNzEgQVMg dmFsID4gMCwgVjcyIEFTIHZhbCA+IDAsIFY3MyBBUyB2YWwgPiAwLCBWNzQgQVMgdmFsID4gMCwg Vjc1IEFTIHZhbCA+IDAsIFY3NiBBUyB2YWwgPiAwLCBWNzcgQVMgdmFsID4gMCwgVjc4IEFTIHZh bCA+IDAsIFY3OSBBUyB2YWwgPiAwLCBWODAgQVMgdmFsID4gMCwKKyAgICBWODEgQVMgdmFsID4g MCwgVjgyIEFTIHZhbCA+IDAsIFY4MyBBUyB2YWwgPiAwLCBWODQgQVMgdmFsID4gMCwgVjg1IEFT IHZhbCA+IDAsIFY4NiBBUyB2YWwgPiAwLCBWODcgQVMgdmFsID4gMCwgVjg4IEFTIHZhbCA+IDAs IFY4OSBBUyB2YWwgPiAwLCBWOTAgQVMgdmFsID4gMCwKKyAgICBWOTEgQVMgdmFsID4gMCwgVjky IEFTIHZhbCA+IDAsIFY5MyBBUyB2YWwgPiAwLCBWOTQgQVMgdmFsID4gMCwgVjk1IEFTIHZhbCA+ IDAsIFY5NiBBUyB2YWwgPiAwLCBWOTcgQVMgdmFsID4gMCwgVjk4IEFTIHZhbCA+IDAsIFY5OSBB UyB2YWwgPiAwLCBWMTAwIEFTIHZhbCA+IDAsCisgICAgVjEwMSBBUyB2YWwgPiAwLCBWMTAyIEFT IHZhbCA+IDAsIFYxMDMgQVMgdmFsID4gMCwgVjEwNCBBUyB2YWwgPiAwLCBWMTA1IEFTIHZhbCA+ IDAsIFYxMDYgQVMgdmFsID4gMCwgVjEwNyBBUyB2YWwgPiAwLCBWMTA4IEFTIHZhbCA+IDAsIFYx MDkgQVMgdmFsID4gMCwgVjExMCBBUyB2YWwgPiAwLAorICAgIFYxMTEgQVMgdmFsID4gMCwgVjEx MiBBUyB2YWwgPiAwLCBWMTEzIEFTIHZhbCA+IDAsIFYxMTQgQVMgdmFsID4gMCwgVjExNSBBUyB2 YWwgPiAwLCBWMTE2IEFTIHZhbCA+IDAsIFYxMTcgQVMgdmFsID4gMCwgVjExOCBBUyB2YWwgPiAw LCBWMTE5IEFTIHZhbCA+IDAsIFYxMjAgQVMgdmFsID4gMCwKKyAgICBWMTIxIEFTIHZhbCA+IDAs IFYxMjIgQVMgdmFsID4gMCwgVjEyMyBBUyB2YWwgPiAwLCBWMTI0IEFTIHZhbCA+IDAsIFYxMjUg QVMgdmFsID4gMCwgVjEyNiBBUyB2YWwgPiAwLCBWMTI3IEFTIHZhbCA+IDAsIFYxMjggQVMgdmFs ID4gMCwgVjEyOSBBUyB2YWwgPiAwLCBWMTMwIEFTIHZhbCA+IDAsCisgICAgVjEzMSBBUyB2YWwg PiAwLCBWMTMyIEFTIHZhbCA+IDAsIFYxMzMgQVMgdmFsID4gMCwgVjEzNCBBUyB2YWwgPiAwLCBW MTM1IEFTIHZhbCA+IDAsIFYxMzYgQVMgdmFsID4gMCwgVjEzNyBBUyB2YWwgPiAwLCBWMTM4IEFT IHZhbCA+IDAsIFYxMzkgQVMgdmFsID4gMCwgVjE0MCBBUyB2YWwgPiAwLAorICAgIFYxNDEgQVMg dmFsID4gMCwgVjE0MiBBUyB2YWwgPiAwLCBWMTQzIEFTIHZhbCA+IDAsIFYxNDQgQVMgdmFsID4g MCwgVjE0NSBBUyB2YWwgPiAwLCBWMTQ2IEFTIHZhbCA+IDAsIFYxNDcgQVMgdmFsID4gMCwgVjE0 OCBBUyB2YWwgPiAwLCBWMTQ5IEFTIHZhbCA+IDAsIFYxNTAgQVMgdmFsID4gMCwKKyAgICBWMTUx IEFTIHZhbCA+IDAsIFYxNTIgQVMgdmFsID4gMCwgVjE1MyBBUyB2YWwgPiAwLCBWMTU0IEFTIHZh bCA+IDAsIFYxNTUgQVMgdmFsID4gMCwgVjE1NiBBUyB2YWwgPiAwLCBWMTU3IEFTIHZhbCA+IDAs IFYxNTggQVMgdmFsID4gMCwgVjE1OSBBUyB2YWwgPiAwLCBWMTYwIEFTIHZhbCA+IDAsCisgICAg VjE2MSBBUyB2YWwgPiAwLCBWMTYyIEFTIHZhbCA+IDAsIFYxNjMgQVMgdmFsID4gMCwgVjE2NCBB UyB2YWwgPiAwLCBWMTY1IEFTIHZhbCA+IDAsIFYxNjYgQVMgdmFsID4gMCwgVjE2NyBBUyB2YWwg PiAwLCBWMTY4IEFTIHZhbCA+IDAsIFYxNjkgQVMgdmFsID4gMCwgVjE3MCBBUyB2YWwgPiAwLAor ICAgIFYxNzEgQVMgdmFsID4gMCwgVjE3MiBBUyB2YWwgPiAwLCBWMTczIEFTIHZhbCA+IDAsIFYx NzQgQVMgdmFsID4gMCwgVjE3NSBBUyB2YWwgPiAwLCBWMTc2IEFTIHZhbCA+IDAsIFYxNzcgQVMg dmFsID4gMCwgVjE3OCBBUyB2YWwgPiAwLCBWMTc5IEFTIHZhbCA+IDAsIFYxODAgQVMgdmFsID4g MCwKKyAgICBWMTgxIEFTIHZhbCA+IDAsIFYxODIgQVMgdmFsID4gMCwgVjE4MyBBUyB2YWwgPiAw LCBWMTg0IEFTIHZhbCA+IDAsIFYxODUgQVMgdmFsID4gMCwgVjE4NiBBUyB2YWwgPiAwLCBWMTg3 IEFTIHZhbCA+IDAsIFYxODggQVMgdmFsID4gMCwgVjE4OSBBUyB2YWwgPiAwLCBWMTkwIEFTIHZh bCA+IDAsCisgICAgVjE5MSBBUyB2YWwgPiAwLCBWMTkyIEFTIHZhbCA+IDAsIFYxOTMgQVMgdmFs ID4gMCwgVjE5NCBBUyB2YWwgPiAwLCBWMTk1IEFTIHZhbCA+IDAsIFYxOTYgQVMgdmFsID4gMCwg VjE5NyBBUyB2YWwgPiAwLCBWMTk4IEFTIHZhbCA+IDAsIFYxOTkgQVMgdmFsID4gMCwgVjIwMCBB UyB2YWwgPiAwLAorICAgIFYyMDEgQVMgdmFsID4gMCwgVjIwMiBBUyB2YWwgPiAwLCBWMjAzIEFT IHZhbCA+IDAsIFYyMDQgQVMgdmFsID4gMCwgVjIwNSBBUyB2YWwgPiAwLCBWMjA2IEFTIHZhbCA+ IDAsIFYyMDcgQVMgdmFsID4gMCwgVjIwOCBBUyB2YWwgPiAwLCBWMjA5IEFTIHZhbCA+IDAsIFYy MTAgQVMgdmFsID4gMCwKKyAgICBWMjExIEFTIHZhbCA+IDAsIFYyMTIgQVMgdmFsID4gMCwgVjIx MyBBUyB2YWwgPiAwLCBWMjE0IEFTIHZhbCA+IDAsIFYyMTUgQVMgdmFsID4gMCwgVjIxNiBBUyB2 YWwgPiAwLCBWMjE3IEFTIHZhbCA+IDAsIFYyMTggQVMgdmFsID4gMCwgVjIxOSBBUyB2YWwgPiAw LCBWMjIwIEFTIHZhbCA+IDAsCisgICAgVjIyMSBBUyB2YWwgPiAwLCBWMjIyIEFTIHZhbCA+IDAs IFYyMjMgQVMgdmFsID4gMCwgVjIyNCBBUyB2YWwgPiAwLCBWMjI1IEFTIHZhbCA+IDAsIFYyMjYg QVMgdmFsID4gMCwgVjIyNyBBUyB2YWwgPiAwLCBWMjI4IEFTIHZhbCA+IDAsIFYyMjkgQVMgdmFs ID4gMCwgVjIzMCBBUyB2YWwgPiAwLAorICAgIFYyMzEgQVMgdmFsID4gMCwgVjIzMiBBUyB2YWwg PiAwLCBWMjMzIEFTIHZhbCA+IDAsIFYyMzQgQVMgdmFsID4gMCwgVjIzNSBBUyB2YWwgPiAwLCBW MjM2IEFTIHZhbCA+IDAsIFYyMzcgQVMgdmFsID4gMCwgVjIzOCBBUyB2YWwgPiAwLCBWMjM5IEFT IHZhbCA+IDAsIFYyNDAgQVMgdmFsID4gMCwKKyAgICBWMjQxIEFTIHZhbCA+IDAsIFYyNDIgQVMg dmFsID4gMCwgVjI0MyBBUyB2YWwgPiAwLCBWMjQ0IEFTIHZhbCA+IDAsIFYyNDUgQVMgdmFsID4g MCwgVjI0NiBBUyB2YWwgPiAwLCBWMjQ3IEFTIHZhbCA+IDAsIFYyNDggQVMgdmFsID4gMCwgVjI0 OSBBUyB2YWwgPiAwLCBWMjUwIEFTIHZhbCA+IDAsCisgICAgVjI1MSBBUyB2YWwgPiAwCispOwor RVJST1I6ICB0b28gbWFueSBwYXR0ZXJuIHZhcmlhYmxlcworREVUQUlMOiAgTWF4aW11bSBpcyAy NTEuCistLSBFeHBlY3RlZDogRVJST1IgLSB0b28gbWFueSBwYXR0ZXJuIHZhcmlhYmxlcyAoTWF4 aW11bSBpcyAyNTEpCistLSBUZXN0OiBQYXR0ZXJuIG5lc3RpbmcgYXQgbWF4aW11bSBkZXB0aCAo ZGVwdGggMjUzKQorLS0gTm90ZTogMjUzIG5lc3RlZCBHUk9VUHszLDd9IHF1YW50aWZpZXJzIHBy b2R1Y2UgZGVwdGggMjUzIGFmdGVyIG9wdGltaXphdGlvbgorU0VMRUNUIGlkLCB2YWwsIENPVU5U KCopIE9WRVIgdyBGUk9NIHJwcl9lcnJvcnMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKChBezMsN30pezMsN30pezMsN30p ezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMs N30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30p ezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMs N30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30p ezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMs N30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30p ezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMs N30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30p ezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMs N30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30p ezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMs N30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30p ezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMs N30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30p ezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMs N30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30p ezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMs N30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30p ezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMs N30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30p ezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMs N30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30p ezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMs N30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30p ezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMs N30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30pezMsN30p ezMsN30pezMsN30pezMsN30pezMsN30pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKyBp ZCB8IHZhbCB8IGNvdW50IAorLS0tLSstLS0tLSstLS0tLS0tCisgIDEgfCAgMTAgfCAgICAgMAor ICAyIHwgIDIwIHwgICAgIDAKKygyIHJvd3MpCisKKy0tIEV4cGVjdGVkOiBTaG91bGQgc3VjY2Vl ZAorLS0gVGVzdDogUGF0dGVybiBuZXN0aW5nIGRlcHRoIGV4Y2VlZHMgbWF4aW11bSAoZGVwdGgg MjU0KQorLS0gTm90ZTogMjU0IG5lc3RlZCBHUk9VUHszLDd9IHF1YW50aWZpZXJzIHByb2R1Y2Ug ZGVwdGggMjU0IGFmdGVyIG9wdGltaXphdGlvbgorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9W RVIgdyBGUk9NIHJwcl9lcnJvcnMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoQXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitF UlJPUjogIHBhdHRlcm4gbmVzdGluZyB0b28gZGVlcAorREVUQUlMOiAgUGF0dGVybiBuZXN0aW5n IGRlcHRoIDI1NCBleGNlZWRzIG1heGltdW0gMjUzLgorLS0gRXhwZWN0ZWQ6IEVSUk9SIC0gcGF0 dGVybiBuZXN0aW5nIHRvbyBkZWVwCitEUk9QIFRBQkxFIHJwcl9lcnJvcnM7CistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IEphY29iJ3MgUGF0dGVybnMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQmFzaWMgcGF0dGVybiBtYXRjaGluZyB0ZXN0 cyBmcm9tIGphY29iIGJyYW5jaAorLS0gVGVzdDogQT8gKG9wdGlvbmFsLCBncmVlZHkpCitTRUxF Q1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKEE/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDUwCispOworIGlkIHwgdmFs IHwgYyAKKy0tLS0rLS0tLS0rLS0tCisgIDEgfCAgMTAgfCAwCisgIDIgfCAgMjAgfCAwCisgIDMg fCAgMzAgfCAwCisgIDQgfCAgNDAgfCAwCisgIDUgfCAgNTAgfCAwCisgIDYgfCAgNjAgfCAxCisg IDcgfCAgNzAgfCAxCisgIDggfCAgODAgfCAxCisgIDkgfCAgOTAgfCAxCisgMTAgfCAxMDAgfCAx CisoMTAgcm93cykKKworLS0gVGVzdDogQXsyfSAoZXhhY3QgY291bnQpCitTRUxFQ1QgaWQsIHZh bCwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKEF7Mn0pCisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwCispOworIGlkIHwgdmFsIHwgYyAK Ky0tLS0rLS0tLS0rLS0tCisgIDEgfCAgMTAgfCAyCisgIDIgfCAgMjAgfCAwCisgIDMgfCAgMzAg fCAyCisgIDQgfCAgNDAgfCAwCisgIDUgfCAgNTAgfCAwCisgIDYgfCAgNjAgfCAwCisgIDcgfCAg NzAgfCAwCisgIDggfCAgODAgfCAwCisgIDkgfCAgOTAgfCAwCisgMTAgfCAxMDAgfCAwCisoMTAg cm93cykKKworLS0gVGVzdDogQXsxLDN9IChib3VuZGVkIHJhbmdlLCBncmVlZHkpCitTRUxFQ1Qg aWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKEF7MSwzfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAKKyk7CisgaWQgfCB2 YWwgfCBjIAorLS0tLSstLS0tLSstLS0KKyAgMSB8ICAxMCB8IDMKKyAgMiB8ICAyMCB8IDAKKyAg MyB8ICAzMCB8IDAKKyAgNCB8ICA0MCB8IDIKKyAgNSB8ICA1MCB8IDAKKyAgNiB8ICA2MCB8IDAK KyAgNyB8ICA3MCB8IDAKKyAgOCB8ICA4MCB8IDAKKyAgOSB8ICA5MCB8IDAKKyAxMCB8IDEwMCB8 IDAKKygxMCByb3dzKQorCistLSBUZXN0OiBBIHwgQiAoc2ltcGxlIGFsdGVybmF0aW9uKQorU0VM RUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjCitGUk9NIHJwcl9wbGFuCitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBIHwgQikKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFs ID4gNzAKKyk7CisgaWQgfCB2YWwgfCBjIAorLS0tLSstLS0tLSstLS0KKyAgMSB8ICAxMCB8IDEK KyAgMiB8ICAyMCB8IDEKKyAgMyB8ICAzMCB8IDEKKyAgNCB8ICA0MCB8IDAKKyAgNSB8ICA1MCB8 IDAKKyAgNiB8ICA2MCB8IDAKKyAgNyB8ICA3MCB8IDAKKyAgOCB8ICA4MCB8IDEKKyAgOSB8ICA5 MCB8IDEKKyAxMCB8IDEwMCB8IDEKKygxMCByb3dzKQorCistLSBUZXN0OiBBIHwgQiB8IEMgKHRo cmVlLXdheSBhbHRlcm5hdGlvbikKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMg YworRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSB8IEIgfCBDKQorICAgIERF RklORSBBIEFTIHZhbCA8PSAyMCwgQiBBUyB2YWwgQkVUV0VFTiA0MCBBTkQgNjAsIEMgQVMgdmFs ID4gODAKKyk7CisgaWQgfCB2YWwgfCBjIAorLS0tLSstLS0tLSstLS0KKyAgMSB8ICAxMCB8IDEK KyAgMiB8ICAyMCB8IDEKKyAgMyB8ICAzMCB8IDAKKyAgNCB8ICA0MCB8IDEKKyAgNSB8ICA1MCB8 IDEKKyAgNiB8ICA2MCB8IDEKKyAgNyB8ICA3MCB8IDAKKyAgOCB8ICA4MCB8IDAKKyAgOSB8ICA5 MCB8IDEKKyAxMCB8IDEwMCB8IDEKKygxMCByb3dzKQorCistLSBUZXN0OiBBIEIgQyAoY29uY2F0 ZW5hdGlvbikKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSBycHJf cGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMpCisgICAgREVGSU5FIEEgQVMgdmFsIDw9 IDMwLCBCIEFTIHZhbCBCRVRXRUVOIDMxIEFORCA2MCwgQyBBUyB2YWwgPiA2MAorKTsKKyBpZCB8 IHZhbCB8IGMgCistLS0tKy0tLS0tKy0tLQorICAxIHwgIDEwIHwgMAorICAyIHwgIDIwIHwgMAor ICAzIHwgIDMwIHwgMAorICA0IHwgIDQwIHwgMAorICA1IHwgIDUwIHwgMAorICA2IHwgIDYwIHwg MAorICA3IHwgIDcwIHwgMAorICA4IHwgIDgwIHwgMAorICA5IHwgIDkwIHwgMAorIDEwIHwgMTAw IHwgMAorKDEwIHJvd3MpCisKKy0tIFRlc3Q6IEEgQj8gQyAob3B0aW9uYWwgbWlkZGxlKQorU0VM RUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjCitGUk9NIHJwcl9wbGFuCitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBIEI/IEMpCisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZh bCBCRVRXRUVOIDMxIEFORCA2MCwgQyBBUyB2YWwgPiA2MAorKTsKKyBpZCB8IHZhbCB8IGMgCist LS0tKy0tLS0tKy0tLQorICAxIHwgIDEwIHwgMAorICAyIHwgIDIwIHwgMAorICAzIHwgIDMwIHwg MAorICA0IHwgIDQwIHwgMAorICA1IHwgIDUwIHwgMAorICA2IHwgIDYwIHwgMAorICA3IHwgIDcw IHwgMAorICA4IHwgIDgwIHwgMAorICA5IHwgIDkwIHwgMAorIDEwIHwgMTAwIHwgMAorKDEwIHJv d3MpCisKKy0tIFRlc3Q6IChBIEIpKyAoZ3JvdXBlZCBxdWFudGlmaWVyKQorU0VMRUNUIGlkLCB2 YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjCitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOICgoQSBCKSspCisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwCisp OworIGlkIHwgdmFsIHwgYyAKKy0tLS0rLS0tLS0rLS0tCisgIDEgfCAgMTAgfCAwCisgIDIgfCAg MjAgfCAwCisgIDMgfCAgMzAgfCAwCisgIDQgfCAgNDAgfCAwCisgIDUgfCAgNTAgfCAyCisgIDYg fCAgNjAgfCAwCisgIDcgfCAgNzAgfCAwCisgIDggfCAgODAgfCAwCisgIDkgfCAgOTAgfCAwCisg MTAgfCAxMDAgfCAwCisoMTAgcm93cykKKworLS0gVGVzdDogKEEgfCBCKSsgQyAoYWx0ZXJuYXRp b24gd2l0aCBxdWFudGlmaWVyKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBj CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpKyBDKQorICAgIERF RklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2YWwgQkVUV0VFTiAzMSBBTkQgNjAsIEMgQVMgdmFs ID4gODAKKyk7CisgaWQgfCB2YWwgfCBjIAorLS0tLSstLS0tLSstLS0KKyAgMSB8ICAxMCB8IDAK KyAgMiB8ICAyMCB8IDAKKyAgMyB8ICAzMCB8IDAKKyAgNCB8ICA0MCB8IDAKKyAgNSB8ICA1MCB8 IDAKKyAgNiB8ICA2MCB8IDAKKyAgNyB8ICA3MCB8IDAKKyAgOCB8ICA4MCB8IDAKKyAgOSB8ICA5 MCB8IDAKKyAxMCB8IDEwMCB8IDAKKygxMCByb3dzKQorCistLSBUZXN0OiAoQSsgfCAoQSB8IEIp KykqIC0gbmVzdGVkIGFsdGVybmF0aW9uIGluc2lkZSBxdWFudGlmaWVkIGdyb3VwCistLSBQcmV2 aW91c2x5IGNhdXNlZCBpbmZpbml0ZSByZWN1cnNpb24gaW4gbmZhX2FkdmFuY2VfYWx0IHdoZW4g dGhlIGlubmVyCistLSBCRUdJTigrKSdzIHNraXAganVtcCB3YXMgZm9sbG93ZWQgYXMgYW4gQUxU IGJyYW5jaCBwb2ludGVyLgorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJP TSAoVkFMVUVTCisgICAgKDEsIEFSUkFZWydBJywgJ0InXSksCisgICAgKDIsIEFSUkFZWydCJ10p LAorICAgICgzLCBBUlJBWVsnQyddKQorKSBBUyB0KGlkLCBmbGFncykKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKChBKyB8IChBIHwgQikrKSopCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxh Z3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgIDEgfCB7QSxCfSB8ICAgICAgICAgICAxIHwgICAgICAgICAyCisgIDIg fCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7Q30gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisoMyByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFBhdGhvbG9naWNhbCBQYXR0 ZXJucworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBUaGVzZSBwYXR0ZXJucyBwcmV2aW91c2x5IGNhdXNlZCBpc3N1ZXMu IE5vdyBvcHRpbWl6ZWQgb3IgaGFuZGxlZCBzYWZlbHkuCistLSBUZXN0OiAoQSopKiAtIG5lc3Rl ZCB1bmJvdW5kZWQgKG9wdGltaXplZCB0byBBKikKK1NFTEVDVCB2LCBjb3VudCgqKSBPVkVSIHcg QVMgYworRlJPTSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1KSB2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIElOSVRJQUwKKyAgICBQQVRU RVJOICgoQSopKikKKyAgICBERUZJTkUgQSBBUyBUUlVFCispOworIHYgfCBjIAorLS0tKy0tLQor IDEgfCA1CisgMiB8IDAKKyAzIHwgMAorIDQgfCAwCisgNSB8IDAKKyg1IHJvd3MpCisKKy0tIFRl c3Q6IChBKikrIC0gaW5uZXIgbnVsbGFibGUgKG9wdGltaXplZCB0byBBKikKK1NFTEVDVCB2LCBj b3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1KSB2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIElO SVRJQUwKKyAgICBQQVRURVJOICgoQSopKykKKyAgICBERUZJTkUgQSBBUyBUUlVFCispOworIHYg fCBjIAorLS0tKy0tLQorIDEgfCA1CisgMiB8IDAKKyAzIHwgMAorIDQgfCAwCisgNSB8IDAKKyg1 IHJvd3MpCisKKy0tIFRlc3Q6IChBKykqIC0gb3V0ZXIgbnVsbGFibGUgKG9wdGltaXplZCB0byBB KikKK1NFTEVDVCB2LCBjb3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSAoU0VMRUNUIGdlbmVyYXRl X3NlcmllcygxLCA1KSB2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIElOSVRJQUwKKyAgICBQQVRURVJOICgoQSspKikKKyAgICBERUZJTkUgQSBB UyBUUlVFCispOworIHYgfCBjIAorLS0tKy0tLQorIDEgfCA1CisgMiB8IDAKKyAzIHwgMAorIDQg fCAwCisgNSB8IDAKKyg1IHJvd3MpCisKKy0tIFRlc3Q6IChBKykrIC0gYm90aCByZXF1aXJlIG1h dGNoIChvcHRpbWl6ZWQgdG8gQSspCitTRUxFQ1QgdiwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZS T00gKFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgdikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoKEEr KSspCisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsKKyB2IHwgYyAKKy0tLSstLS0KKyAxIHwgNQor IDIgfCAwCisgMyB8IDAKKyA0IHwgMAorIDUgfCAwCisoNSByb3dzKQorCistLSBUZXN0OiAoKChB KSopKikqICAtIHRyaXBsZSBuZXN0ZWQgKG9wdGltaXplZCB0byBBKikKK1NFTEVDVCB2LCBjb3Vu dCgqKSBPVkVSIHcgQVMgYworRlJPTSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAzKSB2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIElOSVRJ QUwKKyAgICBQQVRURVJOICgoKChBKSopKikqKQorICAgIERFRklORSBBIEFTIFRSVUUKKyk7Cisg diB8IGMgCistLS0rLS0tCisgMSB8IDMKKyAyIHwgMAorIDMgfCAwCisoMyByb3dzKQorCistLSBP cHRpb25hbCBncm91cCB3aXRoIGFsdGVybmF0aW9uOiBBICgoQiB8IEMpIChEIHwgRSkpKiBGPwor LS0gV2hlbiBvbmx5IEEgbWF0Y2hlcywgdGhlICogZ3JvdXAgbWF0Y2hlcyAwIHRpbWVzIGFuZCBG PyBtYXRjaGVzIDAgdGltZXMKK1NFTEVDVCBpZCwgdmFsLCBtYXRjaF9sZW4KK0ZST00gKFNFTEVD VCBpZCwgdmFsLAorICAgICAgICAgICAgIENPVU5UKCopIE9WRVIgdyBBUyBtYXRjaF9sZW4KKyAg ICAgIEZST00gKFZBTFVFUyAoMSwgMSksICgyLCA5OSkpIEFTIHQoaWQsIHZhbCkKKyAgICAgIFdJ TkRPVyB3IEFTICgKKyAgICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgICAgIFBBVFRFUk4gKEEgKChCIHwgQykgKEQg fCBFKSkqIEY/KQorICAgICAgICAgIERFRklORSBBIEFTIHZhbCA9IDEsCisgICAgICAgICAgICAg ICAgIEIgQVMgdmFsID0gMiwgQyBBUyB2YWwgPSAzLAorICAgICAgICAgICAgICAgICBEIEFTIHZh bCA9IDQsIEUgQVMgdmFsID0gNSwKKyAgICAgICAgICAgICAgICAgRiBBUyB2YWwgPSA2CisgICAg ICApCispIHM7CisgaWQgfCB2YWwgfCBtYXRjaF9sZW4gCistLS0tKy0tLS0tKy0tLS0tLS0tLS0t CisgIDEgfCAgIDEgfCAgICAgICAgIDEKKyAgMiB8ICA5OSB8ICAgICAgICAgMAorKDIgcm93cykK KworRFJPUCBUQUJMRSBycHJfcGxhbjsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gRW5kIG9mIHJwcl9iYXNlLnNxbAor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWlu Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mMjNkMDZmNmQ1OQotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CkBAIC0wLDAg KzEsMzg2MyBAQAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBSUFIgRVhQTEFJTiBUZXN0cworLS0gVGVzdHMgZm9yIFJv dyBQYXR0ZXJuIFJlY29nbml0aW9uIEVYUExBSU4gb3V0cHV0CistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tCistLSBUaGlz IHRlc3Qgc3VpdGUgdmFsaWRhdGVzIEVYUExBSU4gb3V0cHV0IGZvciBSUFIgcXVlcmllcywKKy0t IGluY2x1ZGluZyBORkEgc3RhdGlzdGljcyBzaG93biBpbiBFWFBMQUlOIEFOQUxZWkU6CistLSAg IC0gTkZBIFN0YXRlczogcGVhaywgdG90YWwsIG1lcmdlZAorLS0gICAtIE5GQSBDb250ZXh0czog cGVhaywgdG90YWwsIGFic29yYmVkLCBza2lwcGVkCistLSAgIC0gTkZBOiBtYXRjaGVkIChsZW4g bWluL21heC9hdmcpLCBtaXNtYXRjaGVkIChsZW4gbWluL21heC9hdmcpCistLSAgIC0gUGF0dGVy biBkZXBhcnNlIGZvcm1hdHRpbmcKKy0tICAgLSBNdWx0aXBsZSBvdXRwdXQgZm9ybWF0cyAodGV4 dCwgSlNPTiwgWE1MKQorLS0KKy0tIFRlc3QgQ292ZXJhZ2U6CistLSAgIEJhc2ljIE5GQSBTdGF0 aXN0aWNzIFRlc3RzCistLSAgIFN0YXRlIFN0YXRpc3RpY3MgVGVzdHMKKy0tICAgQ29udGV4dCBT dGF0aXN0aWNzIFRlc3RzCistLSAgIE1hdGNoIExlbmd0aCBTdGF0aXN0aWNzIFRlc3RzCistLSAg IE1pc21hdGNoIExlbmd0aCBTdGF0aXN0aWNzIFRlc3RzCistLSAgIEpTT04gRm9ybWF0IFRlc3Rz CistLSAgIFhNTCBGb3JtYXQgVGVzdHMKKy0tICAgTXVsdGlwbGUgUGFydGl0aW9ucyBUZXN0cwor LS0gICBFZGdlIENhc2VzCistLSAgIENvbXBsZXggUGF0dGVybiBUZXN0cworLS0gICBSZWFsLXdv cmxkIFBhdHRlcm4gRXhhbXBsZXMKKy0tICAgUGVyZm9ybWFuY2Utb3JpZW50ZWQgVGVzdHMKKy0t ICAgSU5JVElBTCB2cyBubyBJTklUSUFMIGNvbXBhcmlzb24KKy0tICAgUXVhbnRpZmllciBWYXJp YXRpb25zCistLSAgIFJlZ3Jlc3Npb24gVGVzdHMgZm9yIFN0YXRpc3RpY3MgQWNjdXJhY3kKKy0t ICAgQWx0ZXJuYXRpb24gUGF0dGVybiBUZXN0cworLS0gICBHcm91cCBQYXR0ZXJuIFRlc3RzCist LSAgIFdpbmRvdyBGdW5jdGlvbiBDb21iaW5hdGlvbnMKKy0tICAgREVGSU5FIEV4cHJlc3Npb24g VmFyaWF0aW9ucworLS0gICBMYXJnZSBTY2FsZSBTdGF0aXN0aWNzIFZlcmlmaWNhdGlvbgorLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBGaWx0ZXIgZnVuY3Rpb24gdG8gbm9ybWFsaXplIFN0b3JhZ2UgbWVtb3J5IHZhbHVl cyBvbmx5IChub3QgTkZBIHN0YXRpc3RpY3MpLgorLS0gTkZBIHN0YXRpc3RpY3Mgc2hvdWxkIG5v dCBjaGFuZ2UgYmV0d2VlbiBwbGF0Zm9ybXM7IGlmIHRoZXkgZG8sIGl0IGNvdWxkCistLSBpbmRp Y2F0ZSBpc3N1ZXMgc3VjaCBhcyB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuCistLSBXb3Jr cyBmb3IgdGV4dCwgSlNPTiwgYW5kIFhNTCBmb3JtYXRzLgorY3JlYXRlIGZ1bmN0aW9uIHJwcl9l eHBsYWluX2ZpbHRlcih0ZXh0KSByZXR1cm5zIHNldG9mIHRleHQKK2xhbmd1YWdlIHBscGdzcWwg YXMKKyQkCitkZWNsYXJlCisgICAgbG4gdGV4dDsKK2JlZ2luCisgICAgZm9yIGxuIGluIGV4ZWN1 dGUgJDEKKyAgICBsb29wCisgICAgICAgIC0tIE5vcm1hbGl6ZSBtZW1vcnkgc2l6ZSBpbiBTdG9y YWdlIGxpbmUgb25seSAocGxhdGZvcm0tZGVwZW5kZW50KQorICAgICAgICAtLSBLZWVwIE5GQSBz dGF0aXN0aWNzIG51bWJlcnMgdW5jaGFuZ2VkICh0aGV5IGFyZSB0ZXN0IGFzc2VydGlvbnMpCisK KyAgICAgICAgLS0gVGV4dCBmb3JtYXQ6ICJTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFn ZTogMThrQiIKKyAgICAgICAgaWYgbG4gfiAnU3RvcmFnZTouKk1heGltdW0gU3RvcmFnZTonIHRo ZW4KKyAgICAgICAgICAgIGxuIDo9IHJlZ2V4cF9yZXBsYWNlKGxuLCAnXG1cZCtrQicsICdOa0In LCAnZycpOworICAgICAgICBlbmQgaWY7CisKKyAgICAgICAgLS0gSlNPTiBmb3JtYXQ6ICJNYXhp bXVtIFN0b3JhZ2UiOiAxNyAobnVtYmVyIGluIGtCIHVuaXRzKQorICAgICAgICBpZiBsbiB+ICci TWF4aW11bSBTdG9yYWdlIjonIHRoZW4KKyAgICAgICAgICAgIGxuIDo9IHJlZ2V4cF9yZXBsYWNl KGxuLCAnIk1heGltdW0gU3RvcmFnZSI6IFxkKycsICciTWF4aW11bSBTdG9yYWdlIjogMCcsICdn Jyk7CisgICAgICAgIGVuZCBpZjsKKworICAgICAgICAtLSBYTUwgZm9ybWF0OiA8TWF4aW11bS1T dG9yYWdlPjE3PC9NYXhpbXVtLVN0b3JhZ2U+IChudW1iZXIgaW4ga0IgdW5pdHMpCisgICAgICAg IGlmIGxuIH4gJzxNYXhpbXVtLVN0b3JhZ2U+JyB0aGVuCisgICAgICAgICAgICBsbiA6PSByZWdl eHBfcmVwbGFjZShsbiwgJzxNYXhpbXVtLVN0b3JhZ2U+XGQrPC9NYXhpbXVtLVN0b3JhZ2U+Jywg JzxNYXhpbXVtLVN0b3JhZ2U+MDwvTWF4aW11bS1TdG9yYWdlPicsICdnJyk7CisgICAgICAgIGVu ZCBpZjsKKworICAgICAgICByZXR1cm4gbmV4dCBsbjsKKyAgICBlbmQgbG9vcDsKK2VuZDsKKyQk OworLS0gU2V0dXA6IENyZWF0ZSB0ZXN0IHRhYmxlcworQ1JFQVRFIFRFTVAgVEFCTEUgbmZhX3Rl c3QgKAorICAgIGlkIHNlcmlhbCwKKyAgICB2IGludCwKKyAgICBjYXQgY2hhcigxKQorKTsKKy0t IEluc2VydCB0ZXN0IGRhdGE6IDEwMCByb3dzIHdpdGggcHJlZGljdGFibGUgcGF0dGVybgorSU5T RVJUIElOVE8gbmZhX3Rlc3QgKHYsIGNhdCkKK1NFTEVDVCBpLAorICAgICAgIENBU0UKKyAgICAg ICAgICAgV0hFTiBpICUgNSA9IDEgVEhFTiAnQScKKyAgICAgICAgICAgV0hFTiBpICUgNSA9IDIg VEhFTiAnQicKKyAgICAgICAgICAgV0hFTiBpICUgNSA9IDMgVEhFTiAnQycKKyAgICAgICAgICAg V0hFTiBpICUgNSA9IDQgVEhFTiAnRCcKKyAgICAgICAgICAgRUxTRSAnRScKKyAgICAgICBFTkQK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgaTsKKy0tIEFkZGl0aW9uYWwgdGVzdCB0YWJs ZSB3aXRoIG1vcmUgY29tcGxleCBwYXR0ZXJucworQ1JFQVRFIFRFTVAgVEFCTEUgbmZhX2NvbXBs ZXggKAorICAgIGlkIHNlcmlhbCwKKyAgICBwcmljZSBpbnQsCisgICAgdHJlbmQgY2hhcigxKSAg LS0gVT11cCwgRD1kb3duLCBTPXN0YWJsZQorKTsKK0lOU0VSVCBJTlRPIG5mYV9jb21wbGV4IChw cmljZSwgdHJlbmQpCitWQUxVRVMKKyAgICAoMTAwLCAnUycpLCAoMTA1LCAnVScpLCAoMTEwLCAn VScpLCAoMTA4LCAnRCcpLCAoMTEyLCAnVScpLAorICAgICgxMTUsICdVJyksICgxMTMsICdEJyks ICgxMTEsICdEJyksICgxMDksICdEJyksICgxMTAsICdVJyksCisgICAgKDEyMCwgJ1UnKSwgKDEy NSwgJ1UnKSwgKDEzMCwgJ1UnKSwgKDEyOCwgJ0QnKSwgKDEyNiwgJ0QnKSwKKyAgICAoMTI0LCAn RCcpLCAoMTIyLCAnRCcpLCAoMTIwLCAnRCcpLCAoMTE4LCAnRCcpLCAoMTE5LCAnVScpLAorICAg ICgxMjEsICdVJyksICgxMjMsICdVJyksICgxMjUsICdVJyksICgxMjcsICdVJyksICgxMjksICdV JyksCisgICAgKDEzMSwgJ1UnKSwgKDEzMywgJ1UnKSwgKDEzMCwgJ0QnKSwgKDEyNywgJ0QnKSwg KDEyNCwgJ0QnKTsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gQmFzaWMgTkZBIFN0YXRpc3RpY3MgVGVzdHMKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gU2ltcGxlIHBhdHRlcm4gLSBzaG91bGQgc2hvdyBiYXNpYyBzdGF0aXN0aWNzCitDUkVB VEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIG5mYV90 ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQgPSAnQicK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAg ICAgIGxpbmUgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEgYikgCiso MSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIG5mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFT IGNhdCA9ICcnQScnLCBCIEFTIGNhdCA9ICcnQicnCispJyk7CisgICAgICAgICAgICAgICAgICAg ICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzog dyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogYSBiCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtC CisgICBORkEgU3RhdGVzOiAyIHBlYWssIDEwMSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250 ZXh0czogMiBwZWFrLCAxMDEgdG90YWwsIDYwIHBydW5lZAorICAgTkZBOiAyMCBtYXRjaGVkIChs ZW4gMi8yLzIuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCAyMCBza2lwcGVk IChsZW4gMS8xLzEuMCkKKyAgIC0+ICBTZXEgU2NhbiBvbiBuZmFfdGVzdCAoYWN0dWFsIHJvd3M9 MTAwLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCitEUk9QIFZJRVcgcnByX3Y7CistLSBQYXR0ZXJu IHdpdGggbm8gbWF0Y2hlcyAtIDAgbWF0Y2hlZAorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBuZmFfdGVzdAorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKFggWSBaKQorICAgIERF RklORSBYIEFTIGNhdCA9ICdYJywgWSBBUyBjYXQgPSAnWScsIFogQVMgY2F0ID0gJ1onCispOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAg bGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoeCB5IHopIAor KDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBuZmFfdGVzdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKFggWSBaKQorICAgIERFRklORSBY IEFTIGNhdCA9ICcnWCcnLCBZIEFTIGNhdCA9ICcnWScnLCBaIEFTIGNhdCA9ICcnWicnCispOycp OworICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MTAwLjAw IGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IHggeSB6CisgICBTdG9yYWdlOiBNZW1v cnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAxIHBlYWssIDEwMSB0b3Rh bCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCAxMDEgdG90YWwsIDEwMCBwcnVu ZWQKKyAgIE5GQTogMCBtYXRjaGVkLCAwIG1pc21hdGNoZWQKKyAgIC0+ICBTZXEgU2NhbiBvbiBu ZmFfdGVzdCAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisoOCByb3dzKQorCitEUk9QIFZJ RVcgcnByX3Y7CistLSBQYXR0ZXJuIG1hdGNoaW5nIGV2ZXJ5IHJvdyAtIGhpZ2ggbWF0Y2ggY291 bnQKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOIChSKQorICAgIERFRklORSBSIEFTIFRSVUUKKyk7CitTRUxFQ1QgbGlu ZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgbGluZSAgICAgIAor LS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAocikgCisoMSByb3cpCisKK1NFTEVDVCBycHJf ZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IG5mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoUikKKyAgICBERUZJTkUgUiBBUyBUUlVFCispOycpOworICAgICAgICAg ICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisg ICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORykKKyAgIFBhdHRlcm46IHIKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9y YWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDIgcGVhaywgMTAxIHRvdGFsLCAwIG1lcmdlZAorICAg TkZBIENvbnRleHRzOiAyIHBlYWssIDEwMSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMTAwIG1h dGNoZWQgKGxlbiAxLzEvMS4wKSwgMCBtaXNtYXRjaGVkCisgICAtPiAgU2VxIFNjYW4gb24gbmZh X3Rlc3QgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorKDggcm93cykKKworRFJPUCBWSUVX IHJwcl92OworLS0gUmVncmVzc2lvbiB0ZXN0OiBTcGFjZSBiZWZvcmUgcGFyZW50aGVzaXMgaW4g cGF0dGVybiBkZXBhcnNlCistLSBWZXJpZmllcyB0aGF0ICJBIChCIHwgQykiIGNvcnJlY3RseSBv dXRwdXRzIGFzICJhIChiIHwgYykiIHdpdGggc3BhY2UKK0NSRUFURSBURU1QIFZJRVcgcnByX3Yg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSAoQiB8IEMpKQorICAgIERFRklORSBB IEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCispOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicp LCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICBsaW5l ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhIChiIHwg YykpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIChCIHwgQykpCisgICAgREVGSU5FIEEgQVMg diAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7Jyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0yMC4wMCBsb29w cz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhIChiIHwgYykKKyAgIFN0b3JhZ2U6IE1lbW9y eSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgMjggdG90YWws IDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgMjEgdG90YWwsIDYgcHJ1bmVkCisg ICBORkE6IDcgbWF0Y2hlZCAobGVuIDIvMi8yLjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBh YnNvcmJlZCwgNyBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9u IGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0yMC4wMCBsb29wcz0xKQorKDkgcm93cykK KworRFJPUCBWSUVXIHJwcl92OworLS0gUmVncmVzc2lvbiB0ZXN0OiBTZXF1ZW50aWFsIGFsdGVy bmF0aW9ucyBhdCBzYW1lIGRlcHRoCistLSBWZXJpZmllcyB0aGF0ICIoKEIgfCBDKSAoRCB8IEUp KSIgY29ycmVjdGx5IG91dHB1dHMgYXMgIihiIHwgYykgKGQgfCBlKSIKKy0tIFByZXZpb3VzbHkg ZmFpbGVkIGR1ZSB0byBtaXNzaW5nIHBhcmVudGhlc2VzIG9uIEFMVCBkZXB0aCBkZWNyZWFzZQor Q1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB ICgoQiB8IEMpIChEIHwgRSkpKikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA9IDEsIEIgQVMgdiAl IDUgPSAyLCBDIEFTIHYgJSA1ID0gMywgRCBBUyB2ICUgNSA9IDQsIEUgQVMgdiAlIDUgPSAwCisp OworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAg ICAgICAgICAgIGxpbmUgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSAoKGIgfCBjKSAoZCB8IGUpKSopIAorKDEgcm93KQor CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMg T0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBICgoQiB8IEMpIChEIHwgRSkpKikKKyAgICBERUZJTkUgQSBBUyB2ICUg NSA9IDEsIEIgQVMgdiAlIDUgPSAyLCBDIEFTIHYgJSA1ID0gMywgRCBBUyB2ICUgNSA9IDQsIEUg QVMgdiAlIDUgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFp bl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRv d0FnZyAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjog YSAoKGIgfCBjKSAoZCB8IGUpKSoKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdl OiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDQgcGVhaywgNDkgdG90YWwsIDAgbWVyZ2VkCisgICBORkEg Q29udGV4dHM6IDMgcGVhaywgMzEgdG90YWwsIDI0IHBydW5lZAorICAgTkZBOiA2IG1hdGNoZWQg KGxlbiAxLzEvMS4wKSwgMCBtaXNtYXRjaGVkCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5l cmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKKyg4IHJvd3MpCisKK0RS T1AgVklFVyBycHJfdjsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gU3RhdGUgU3RhdGlzdGljcyBUZXN0cyAocGVhaywg dG90YWwsIG1lcmdlZCkKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gU2ltcGxlIHF1YW50aWZpZXIgcGF0dGVybiAtIEEr IHdpdGggc2hvcnQgbWF0Y2hlcyAobm8gbWVyZ2luZykKK0NSRUFURSBURU1QIFZJRVcgcnByX3Yg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxCispOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgIGxpbmUgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSspIAorKDEgcm93KQorCitTRUxFQ1Qg cnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NU UyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyB2ICUgMiA9IDEKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBs YWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnIChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiBhKyIKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBT dGF0ZXM6IDMgcGVhaywgNzYgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVh aywgNTEgdG90YWwsIDI1IHBydW5lZAorICAgTkZBOiAyNSBtYXRjaGVkIChsZW4gMS8xLzEuMCks IDAgbWlzbWF0Y2hlZAorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMg KGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisoOCByb3dzKQorCitEUk9QIFZJRVcgcnByX3Y7 CistLSBBbHRlcm5hdGlvbiBwYXR0ZXJuIC0gbXVsdGlwbGUgc3RhdGUgYnJhbmNoZXMKK0NSRUFU RSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gbmZhX3Rl c3QKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOICgoQSB8IEIgfCBDKSAoRCB8IEUpKQorICAgIERFRklORQorICAgICAgICBBIEFTIGNh dCA9ICdBJywgQiBBUyBjYXQgPSAnQicsIEMgQVMgY2F0ID0gJ0MnLAorICAgICAgICBEIEFTIGNh dCA9ICdEJywgRSBBUyBjYXQgPSAnRScKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgfCBiIHwg YykgKGQgfCBlKSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQ TEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFS WSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIG5mYV90ZXN0CitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBC IHwgQykgKEQgfCBFKSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBjYXQgPSAnJ0EnJywgQiBB UyBjYXQgPSAnJ0InJywgQyBBUyBjYXQgPSAnJ0MnJywKKyAgICAgICAgRCBBUyBjYXQgPSAnJ0Qn JywgRSBBUyBjYXQgPSAnJ0UnJworKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9l eHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5k b3dBZ2cgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiAoYSB8IGIgfCBjKSAoZCB8IGUpCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFn ZTogTmtCCisgICBORkEgU3RhdGVzOiA1IHBlYWssIDM2MyB0b3RhbCwgMCBtZXJnZWQKKyAgIE5G QSBDb250ZXh0czogMyBwZWFrLCAxMDEgdG90YWwsIDIwIHBydW5lZAorICAgTkZBOiAyMCBtYXRj aGVkIChsZW4gMi8yLzIuMCksIDQwIG1pc21hdGNoZWQgKGxlbiAyLzIvMi4wKQorICAgTkZBOiAw IGFic29yYmVkLCAyMCBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBTZXEgU2NhbiBvbiBu ZmFfdGVzdCAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCitEUk9QIFZJ RVcgcnByX3Y7CistLSBDb21wbGV4IHBhdHRlcm4gd2l0aCBoaWdoIHN0YXRlIGNvdW50CitDUkVB VEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKiBDKykKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyB2ICUgMyA9IDEsCisgICAgICAgIEIgQVMgdiAlIDMgPSAyLAorICAgICAgICBD IEFTIHYgJSAzID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CisgICAgICAgICBsaW5lICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgIFBBVFRFUk4gKGErIGIqIGMrKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWlu X2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1J TkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIqIEMrKQorICAgIERFRklORQorICAg ICAgICBBIEFTIHYgJSAzID0gMSwKKyAgICAgICAgQiBBUyB2ICUgMyA9IDIsCisgICAgICAgIEMg QVMgdiAlIDMgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFp bl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnIChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVy bjogYSsiIGIqIGMrCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisg ICBORkEgU3RhdGVzOiA1IHBlYWssIDIzNSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0 czogMyBwZWFrLCAxMDEgdG90YWwsIDM0IHBydW5lZAorICAgTkZBOiAzMyBtYXRjaGVkIChsZW4g My8zLzMuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCAzMyBza2lwcGVkIChs ZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChh Y3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKK0RST1AgVklFVyBycHJfdjsK Ky0tIEdyb3VwZWQgcGF0dGVybiB3aXRoIHF1YW50aWZpZXIgLSBzdGF0ZSBtZXJnaW5nCitDUkVB VEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIpKykKKyAgICBERUZJTkUgQSBBUyB2 ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgbGluZSAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICBQQVRURVJOICgoYSBiKSspIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKSspCisgICAgREVGSU5FIEEg QVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTYwLjAwIGxvb3BzPTEpCisgICBXaW5k b3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IChhJyBiJykrIgorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0 b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA5MSB0b3RhbCwgMCBtZXJnZWQKKyAg IE5GQSBDb250ZXh0czogMiBwZWFrLCA2MSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMSBtYXRj aGVkIChsZW4gNjAvNjAvNjAuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAyOSBhYnNvcmJlZCAo bGVuIDEvMS8xLjApLCAzMCBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBT Y2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz02MC4wMCBsb29wcz0xKQorKDkg cm93cykKKworRFJPUCBWSUVXIHJwcl92OworLS0gU3RhdGUgZXhwbG9zaW9uIHBhdHRlcm4gLSBt YW55IGFsdGVybmF0aW9ucworLS0gUGF0dGVybiAoQXxCKShBfEIpKEF8QikoQXxCKSBjYW4gY3Jl YXRlIG1hbnkgcGFyYWxsZWwgc3RhdGVzCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOICgoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8 IEIpIChBIHwgQikpCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEg fCBiKSAoYSB8IGIpIChhIHwgYikgKGEgfCBiKSAoYSB8IGIpIChhIHwgYikgKGEgfCBiKSAoYSB8 IGIpKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIp IChBIHwgQikgKEEgfCBCKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIg PSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChh Y3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgfCBi KXs4fQorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0 YXRlczogMTYgcGVhaywgNTQ4IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiA4IHBl YWssIDEwMSB0b3RhbCwgMSBwcnVuZWQKKyAgIE5GQTogMTIgbWF0Y2hlZCAobGVuIDgvOC84LjAp LCAzIG1pc21hdGNoZWQgKGxlbiAyLzQvMy4wKQorICAgTkZBOiAwIGFic29yYmVkLCA4NCBza2lw cGVkIChsZW4gMS83LzQuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3Nlcmll cyBzIChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKK0RST1AgVklFVyBy cHJfdjsKKy0tIENvbnNlY3V0aXZlIEFMVCBtZXJnZSBmb2xsb3dlZCBieSBkaWZmZXJlbnQgQUxU CistLSBUZXN0cyBtZXJnZUNvbnNlY3V0aXZlQWx0cyBmbHVzaCBvbiBBTFQgY2hhbmdlOiAoQXxC KXsyfSAoQ3xEKQorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIChB IHwgQikgKEMgfCBEKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAx LCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICAgICAgICBsaW5lICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQ QVRURVJOICgoYSB8IGIpIChhIHwgYikgKGMgfCBkKSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJf ZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSAoQyB8 IEQpKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAl IDQgPSAyLCBEIEFTIHYgJSA0ID0gMworKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg cnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTQwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcg QVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAg IFBhdHRlcm46IChhIHwgYil7Mn0gKGMgfCBkKQorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVt IFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNiBwZWFrLCAxMTEgdG90YWwsIDAgbWVyZ2Vk CisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgNDEgdG90YWwsIDEyIHBydW5lZAorICAgTkZBOiA5 IG1hdGNoZWQgKGxlbiAzLzMvMy4wKSwgMSBtaXNtYXRjaGVkIChsZW4gMi8yLzIuMCkKKyAgIE5G QTogMCBhYnNvcmJlZCwgMTggc2tpcHBlZCAobGVuIDEvMi8xLjUpCisgICAtPiAgRnVuY3Rpb24g U2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkKKyg5 IHJvd3MpCisKK0RST1AgVklFVyBycHJfdjsKKy0tIENvbnNlY3V0aXZlIEFMVCBtZXJnZSBmb2xs b3dlZCBieSBub24tQUxUIGVsZW1lbnQKKy0tIFRlc3RzIG1lcmdlQ29uc2VjdXRpdmVBbHRzIGZs dXNoIG9uIG5vbi1BTFQ6IChBfEIpezJ9IGMKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoKEEgfCBCKSAoQSB8IEIpIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFT IHYgJSAzID0gMSwgQyBBUyB2ICUgMyA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICAgICBsaW5lICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYSB8IGIpIChh IHwgYikgYykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSBDKQorICAgIERFRklORSBBIEFTIHYgJSAzID0g MCwgQiBBUyB2ICUgMyA9IDEsIEMgQVMgdiAlIDMgPSAyCispOycpOworICAgICAgICAgICAgICAg ICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkKKyAg IFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HKQorICAgUGF0dGVybjogKGEgfCBiKXsyfSBjCisgICBTdG9yYWdlOiBNZW1vcnkgIE1h eGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA1IHBlYWssIDEwOSB0b3RhbCwgMCBt ZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCA0MSB0b3RhbCwgMiBwcnVuZWQKKyAgIE5G QTogMTIgbWF0Y2hlZCAobGVuIDMvMy8zLjApLCAyIG1pc21hdGNoZWQgKGxlbiAyLzIvMi4wKQor ICAgTkZBOiAwIGFic29yYmVkLCAyNCBza2lwcGVkIChsZW4gMS8yLzEuNSkKKyAgIC0+ICBGdW5j dGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz00MC4wMCBsb29wcz0x KQorKDkgcm93cykKKworRFJPUCBWSUVXIHJwcl92OworLS0gQUxUIHByZWZpeC9zdWZmaXggYWJz b3JiZWQgaW50byBHUk9VUDogKEF8QikgKEF8QikrIChBfEIpIC0+IChBfEIpezMsfQorQ1JFQVRF IFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIChBIHwgQikrIChBIHwgQikpCisg ICAgREVGSU5FIEEgQVMgdiAlIDIgPSAwLCBCIEFTIHYgJSAyID0gMQorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICAgICAgIGxp bmUgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgUEFUVEVSTiAoKGEgfCBiKSAoYSB8IGIpKyAoYSB8IGIpKSAKKygxIHJvdykKKwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSAo QSB8IEIpKyAoQSB8IEIpKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMCwgQiBBUyB2ICUgMiA9 IDEKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1 YWwgcm93cz00MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSB8IGIpezMs fQorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRl czogNiBwZWFrLCAxNjEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywg NDEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEgbWF0Y2hlZCAobGVuIDQwLzQwLzQwLjApLCAw IG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwgMzkgc2tpcHBlZCAobGVuIDEvMi8xLjAp CisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9 NDAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKK0RST1AgVklFVyBycHJfdjsKKy0tIEhpZ2ggc3Rh dGUgbWVyZ2luZyAtIGFsdGVybmF0aW9uIHdpdGggcGx1cyBxdWFudGlmaWVyCitDUkVBVEUgVEVN UCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIgfCBDKSsgRCkKKyAgICBERUZJTkUgQSBB UyB2ICUgNCA9IDEsIEIgQVMgdiAlIDQgPSAyLCBDIEFTIHYgJSA0ID0gMywgRCBBUyB2ICUgNCA9 IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor ICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICBQQVRURVJOICgoYSB8IGIgfCBjKSsgZCkgCisoMSByb3cpCisKK1NFTEVDVCBycHJf ZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIgfCBDKSsgRCkKKyAg ICBERUZJTkUgQSBBUyB2ICUgNCA9IDEsIEIgQVMgdiAlIDQgPSAyLCBDIEFTIHYgJSA0ID0gMywg RCBBUyB2ICUgNCA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBs YWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBX aW5kb3dBZ2cgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0 ZXJuOiAoYSB8IGIgfCBjKSsgZAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6 IE5rQgorICAgTkZBIFN0YXRlczogMTUgcGVhaywgNzUzIHRvdGFsLCAwIG1lcmdlZAorICAgTkZB IENvbnRleHRzOiA0IHBlYWssIDEwMSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMjUgbWF0Y2hl ZCAobGVuIDQvNC80LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwgNzUgc2tp cHBlZCAobGVuIDEvMy8yLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJp ZXMgcyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCitEUk9QIFZJRVcg cnByX3Y7CistLSBOZXN0ZWQgcXVhbnRpZmllcnMgY2F1c2luZyBzdGF0ZSBncm93dGgKK0NSRUFU RSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDEwMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoKEEgfCBCKSspKykKKyAgICBERUZJTkUg QSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgbGluZSAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKChhIHwgYikrKSspIAorKDEg cm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KCgoQSB8IEIpKykrKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIK Kyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0 dWFsIHJvd3M9MTAwMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSB8IGIp KworICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRl czogNSBwZWFrLCAzMzM2IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWss IDEwMDEgdG90YWwsIDMzMyBwcnVuZWQKKyAgIE5GQTogMzM0IG1hdGNoZWQgKGxlbiAxLzIvMi4w KSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDMzMyBza2lwcGVkIChsZW4gMS8x LzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwg cm93cz0xMDAwLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCitEUk9QIFZJRVcgcnByX3Y7CistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIENvbnRleHQgU3RhdGlzdGljcyBUZXN0cyAocGVhaywgdG90YWwsIGFic29yYmVkLCBz a2lwcGVkKQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBDb250ZXh0IGFic29ycHRpb24gd2l0aCB1bmJvdW5kZWQgcXVh bnRpZmllciBhdCBzdGFydAorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBC KQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicp LCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICBsaW5lICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGErIGIpIAorKDEgcm93KQor CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMg T0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQor ICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOycpOworICAgICAg ICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9v cHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiIGIKKyAgIFN0b3JhZ2U6IE1lbW9yeSAg TWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgOTEgdG90YWwsIDAg bWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgNTEgdG90YWwsIDAgcHJ1bmVkCisgICBO RkE6IDEwIG1hdGNoZWQgKGxlbiA1LzUvNS4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDMwIGFi c29yYmVkIChsZW4gMS8xLzEuMCksIDEwIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1 bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3Bz PTEpCisoOSByb3dzKQorCitEUk9QIFZJRVcgcnByX3Y7CistLSBObyBhYnNvcnB0aW9uIC0gYm91 bmRlZCBxdWFudGlmaWVyCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7Miw0 fSBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOworU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf dicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgIGxp bmUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYXsyLDR9 IGIpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBezIsNH0gQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1 ID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVy ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFj dHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGF7Miw0fSBi CisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVz OiA3IHBlYWssIDEwMSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogNSBwZWFrLCA1 MSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMTAgbWF0Y2hlZCAobGVuIDUvNS81LjApLCAwIG1p c21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwgNDAgc2tpcHBlZCAobGVuIDEvNC8yLjUpCisg ICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAu MDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKK0RST1AgVklFVyBycHJfdjsKKy0tIENvbnRleHRzIHNr aXBwZWQgYnkgU0tJUCBQQVNUIExBU1QgUk9XCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBIEIgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPSAxLCBCIEFTIHYgJSAxMCA9 IDIsIEMgQVMgdiAlIDEwID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CisgICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgIFBBVFRFUk4gKGEgYiBjKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2Zp bHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcg T0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDKQorICAgIERFRklORSBBIEFTIHYgJSAx MCA9IDEsIEIgQVMgdiAlIDEwID0gMiwgQyBBUyB2ICUgMTAgPSAzCispOycpOworICAgICAgICAg ICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0xMDAuMDAgbG9v cHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSBiIGMKKyAgIFN0b3JhZ2U6IE1lbW9yeSAg TWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDIgcGVhaywgMTAxIHRvdGFsLCAw IG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDEwMSB0b3RhbCwgODAgcHJ1bmVkCisg ICBORkE6IDEwIG1hdGNoZWQgKGxlbiAzLzMvMy4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAg YWJzb3JiZWQsIDEwIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorKDkgcm93 cykKKworRFJPUCBWSUVXIHJwcl92OworLS0gSGlnaCBjb250ZXh0IGFic29ycHRpb24gLSB1bmJv dW5kZWQgZ3JvdXAKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIpKyBD KQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMg PSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK KyAgICAgICAgIGxpbmUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFU VEVSTiAoKGEgYikrIGMpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQikrIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAx LCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQor ICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYScgYicpKyIgYworICAgU3RvcmFnZTogTWVtb3J5ICBN YXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCAxMzQgdG90YWwsIDAg bWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgMTAxIHRvdGFsLCAzNCBwcnVuZWQKKyAg IE5GQTogMzMgbWF0Y2hlZCAobGVuIDMvMy8zLjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBh YnNvcmJlZCwgMzMgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBv biBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisoOSByb3dz KQorCitEUk9QIFZJRVcgcnByX3Y7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIE1hdGNoIExlbmd0aCBTdGF0aXN0aWNz IFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIEZpeGVkIGxlbmd0aCBtYXRjaGVzIC0gYWxsIHNhbWUgbGVuZ3Ro CitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IG5mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoQSBCIEMgRCBFKQorICAgIERFRklORQorICAgICAgICBBIEFTIGNhdCA9 ICdBJywgQiBBUyBjYXQgPSAnQicsIEMgQVMgY2F0ID0gJ0MnLAorICAgICAgICBEIEFTIGNhdCA9 ICdEJywgRSBBUyBjYXQgPSAnRScKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgIGxpbmUgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEgYiBjIGQgZSkgCisoMSByb3cpCisKK1NFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIG5mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQSBCIEMgRCBFKQorICAgIERFRklORQorICAgICAgICBBIEFTIGNh dCA9ICcnQScnLCBCIEFTIGNhdCA9ICcnQicnLCBDIEFTIGNhdCA9ICcnQycnLAorICAgICAgICBE IEFTIGNhdCA9ICcnRCcnLCBFIEFTIGNhdCA9ICcnRScnCispOycpOworICAgICAgICAgICAgICAg ICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisgICBXaW5k b3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IGEgYiBjIGQgZQorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0 b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMiBwZWFrLCAxMDEgdG90YWwsIDAgbWVyZ2VkCisg ICBORkEgQ29udGV4dHM6IDMgcGVhaywgMTAxIHRvdGFsLCA2MCBwcnVuZWQKKyAgIE5GQTogMjAg bWF0Y2hlZCAobGVuIDUvNS81LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwg MjAgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgU2VxIFNjYW4gb24gbmZhX3Rlc3QgKGFj dHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorKDkgcm93cykKKworRFJPUCBWSUVXIHJwcl92Owor LS0gVmFyaWFibGUgbGVuZ3RoIG1hdGNoZXMgLSBtaW4vbWF4L2F2ZyBkaWZmZXIKK0NSRUFURSBU RU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDEw IDw+IDAsIEIgQVMgdiAlIDEwID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tCisgICBQQVRURVJOIChhKyBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2Zp bHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcg T0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDEw IDw+IDAsIEIgQVMgdiAlIDEwID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg cnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6 IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykK KyAgIFBhdHRlcm46IGErIiBiCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTog TmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWssIDE5MSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBD b250ZXh0czogMiBwZWFrLCAxMDEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNoZWQg KGxlbiAxMC8xMC8xMC4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDgwIGFic29yYmVkIChsZW4g MS8xLzEuMCksIDEwIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorKDkgcm93 cykKKworRFJPUCBWSUVXIHJwcl92OworLS0gVmVyeSBsb25nIG1hdGNoZXMKK0NSRUFURSBURU1Q IFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDIwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiA8PSAxOTUs IEIgQVMgdiA+IDE5NQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CisgICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQ QVRURVJOIChhKyBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDIwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiA8PSAxOTUsIEIgQVMg diA+IDE5NQorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmls dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZyAoYWN0dWFsIHJvd3M9MjAwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEr IiBiCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3Rh dGVzOiAzIHBlYWssIDM5NiB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFr LCAyMDEgdG90YWwsIDQgcHJ1bmVkCisgICBORkE6IDEgbWF0Y2hlZCAobGVuIDE5Ni8xOTYvMTk2 LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMTk0IGFic29yYmVkIChsZW4gMS8xLzEuMCksIDEg c2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9z ZXJpZXMgcyAoYWN0dWFsIHJvd3M9MjAwLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCitEUk9QIFZJ RVcgcnByX3Y7CistLSBNaXggb2Ygc2hvcnQgYW5kIGxvbmcgbWF0Y2hlcworQ1JFQVRFIFRFTVAg VklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAo diAlIDIwIDw+IDApIEFORCAodiAlIDIwIDw9IDEwIE9SIHYgJSAyMCA+IDE1KSwKKyAgICAgICAg QiBBUyB2ICUgMjAgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKKyAgICAgICBsaW5lICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg IFBBVFRFUk4gKGErIGIpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAodiAl IDIwIDw+IDApIEFORCAodiAlIDIwIDw9IDEwIE9SIHYgJSAyMCA+IDE1KSwKKyAgICAgICAgQiBB UyB2ICUgMjAgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFp bl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnIChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVy bjogYSsiIGIKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5G QSBTdGF0ZXM6IDMgcGVhaywgMTcxIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAz IHBlYWssIDEwMSB0b3RhbCwgMjUgcHJ1bmVkCisgICBORkE6IDUgbWF0Y2hlZCAobGVuIDUvNS81 LjApLCA1IG1pc21hdGNoZWQgKGxlbiAxMS8xMS8xMS4wKQorICAgTkZBOiA2MCBhYnNvcmJlZCAo bGVuIDEvMS8xLjApLCA1IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNj YW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorKDkg cm93cykKKworRFJPUCBWSUVXIHJwcl92OworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBNaXNtYXRjaCBMZW5ndGggU3Rh dGlzdGljcyBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBQYXR0ZXJuIHRoYXQgY2F1c2VzIG1pc21hdGNoZXMg d2l0aCBsZW5ndGggPiAxCistLSBNaXNtYXRjaCBoYXBwZW5zIHdoZW4gcGFydGlhbCBtYXRjaCBm YWlscyBhZnRlciBwcm9jZXNzaW5nIG11bHRpcGxlIHJvd3MKK0NSRUFURSBURU1QIFZJRVcgcnBy X3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gKAorICAgIFNFTEVDVCB2LAorICAg ICAgICAgICBDQVNFIFdIRU4gdiAlIDEwIElOICgxLDIsMykgVEhFTiAnQScKKyAgICAgICAgICAg ICAgICBXSEVOIHYgJSAxMCBJTiAoNCw1KSBUSEVOICdCJworICAgICAgICAgICAgICAgIFdIRU4g diAlIDEwID0gNiBUSEVOICdDJworICAgICAgICAgICAgICAgIEVMU0UgJ1gnIEVORCBBUyBjYXQK KyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKKykgdAorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIr IEMpCisgICAgREVGSU5FIEEgQVMgY2F0ID0gJ0EnLCBCIEFTIGNhdCA9ICdCJywgQyBBUyBjYXQg PSAnQycKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OworICAgICAgICAgbGluZSAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFU VEVSTiAoYSsgYisgYykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwor RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VN TUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NICgKKyAgICBTRUxFQ1QgdiwK KyAgICAgICAgICAgQ0FTRSBXSEVOIHYgJSAxMCBJTiAoMSwyLDMpIFRIRU4gJydBJycKKyAgICAg ICAgICAgICAgICBXSEVOIHYgJSAxMCBJTiAoNCw1KSBUSEVOICcnQicnCisgICAgICAgICAgICAg ICAgV0hFTiB2ICUgMTAgPSA2IFRIRU4gJydDJycKKyAgICAgICAgICAgICAgICBFTFNFICcnWCcn IEVORCBBUyBjYXQKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKKykg dAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEErIEIrIEMpCisgICAgREVGSU5FIEEgQVMgY2F0ID0gJydBJycsIEIgQVMgY2F0ID0g JydCJycsIEMgQVMgY2F0ID0gJydDJycKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg IHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorICAgV2luZG93 OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiBhKyIgYisgYworICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3Jh Z2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCAxNTEgdG90YWwsIDAgbWVyZ2VkCisgICBO RkEgQ29udGV4dHM6IDMgcGVhaywgMTAxIHRvdGFsLCA2MCBwcnVuZWQKKyAgIE5GQTogMTAgbWF0 Y2hlZCAobGVuIDYvNi82LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMjAgYWJzb3JiZWQgKGxl biAxLzEvMS4wKSwgMTAgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2Nh biBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisoOSBy b3dzKQorCitEUk9QIFZJRVcgcnByX3Y7CistLSBMb25nIHBhcnRpYWwgbWF0Y2hlcyB0aGF0IGZh aWwKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gKAorICAgIFNFTEVDVCBpIEFTIHYsCisgICAgICAgICAgIENBU0UKKyAgICAgICAgICAgICAg IFdIRU4gaSA8PSAyMCBUSEVOICdBJworICAgICAgICAgICAgICAgV0hFTiBpIDw9IDI1IFRIRU4g J0InCisgICAgICAgICAgICAgICBXSEVOIGkgPSAyNiBUSEVOICdYJyAgLS0gYnJlYWtzIHRoZSBw YXR0ZXJuCisgICAgICAgICAgICAgICBXSEVOIGkgPD0gNTAgVEhFTiAnQScKKyAgICAgICAgICAg ICAgIFdIRU4gaSA8PSA1NSBUSEVOICdCJworICAgICAgICAgICAgICAgV0hFTiBpID0gNTYgVEhF TiAnQycgIC0tIGNvbXBsZXRlcyBwYXR0ZXJuCisgICAgICAgICAgICAgICBFTFNFICdZJworICAg ICAgICAgICBFTkQgQVMgY2F0CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIGkKKykg dAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEErIEIrIEMpCisgICAgREVGSU5FIEEgQVMgY2F0ID0gJ0EnLCBCIEFTIGNhdCA9ICdC JywgQyBBUyBjYXQgPSAnQycKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworICAgICAgICAgbGluZSAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgUEFUVEVSTiAoYSsgYisgYykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFp bl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElN SU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NICgKKyAg ICBTRUxFQ1QgaSBBUyB2LAorICAgICAgICAgICBDQVNFCisgICAgICAgICAgICAgICBXSEVOIGkg PD0gMjAgVEhFTiAnJ0EnJworICAgICAgICAgICAgICAgV0hFTiBpIDw9IDI1IFRIRU4gJydCJycK KyAgICAgICAgICAgICAgIFdIRU4gaSA9IDI2IFRIRU4gJydYJycgIC0tIGJyZWFrcyB0aGUgcGF0 dGVybgorICAgICAgICAgICAgICAgV0hFTiBpIDw9IDUwIFRIRU4gJydBJycKKyAgICAgICAgICAg ICAgIFdIRU4gaSA8PSA1NSBUSEVOICcnQicnCisgICAgICAgICAgICAgICBXSEVOIGkgPSA1NiBU SEVOICcnQycnICAtLSBjb21wbGV0ZXMgcGF0dGVybgorICAgICAgICAgICAgICAgRUxTRSAnJ1kn JworICAgICAgICAgICBFTkQgQVMgY2F0CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjAp IGkKKykgdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKEErIEIrIEMpCisgICAgREVGSU5FIEEgQVMgY2F0ID0gJydBJycsIEIgQVMg Y2F0ID0gJydCJycsIEMgQVMgY2F0ID0gJydDJycKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz02MC4wMCBsb29wcz0xKQorICAgV2lu ZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcpCisgICBQYXR0ZXJuOiBhKyIgYisgYworICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0 b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCAxMTUgdG90YWwsIDAgbWVyZ2VkCisg ICBORkEgQ29udGV4dHM6IDMgcGVhaywgNjEgdG90YWwsIDE1IHBydW5lZAorICAgTkZBOiAxIG1h dGNoZWQgKGxlbiAzMC8zMC8zMC4wKSwgMSBtaXNtYXRjaGVkIChsZW4gMjYvMjYvMjYuMCkKKyAg IE5GQTogNDIgYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgMSBza2lwcGVkIChsZW4gMS8xLzEuMCkK KyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBpIChhY3R1YWwgcm93cz02 MC4wMCBsb29wcz0xKQorKDkgcm93cykKKworRFJPUCBWSUVXIHJwcl92OworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBK U09OIEZvcm1hdCBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBKU09OIGZvcm1hdCBvdXRwdXQgd2l0aCBhbGwg c3RhdGlzdGljcworQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKykKKyAg ICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyCispOworU0VMRUNUIGxpbmUg RlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xu JykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgbGluZSAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSsgYispIAorKDEgcm93KQorCitT RUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZG LCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGLCBGT1JNQVQgSlNPTikKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQSsgQispCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMgorKScp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAiUGxhbiI6IHsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICJOb2RlIFR5cGUiOiAiV2luZG93QWdnIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICJQYXJhbGxlbCBBd2FyZSI6IGZhbHNlLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJBc3luYyBDYXBhYmxl IjogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICJBY3R1YWwgUm93cyI6IDUwLjAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICJBY3R1YWwgTG9vcHMiOiAxLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJEaXNhYmxl ZCI6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICJXaW5kb3ciOiAidyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKSIsKworICAgICAgICJQYXR0ZXJuIjogImErXCIgYisiLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJT dG9yYWdlIjogIk1lbW9yeSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICJNYXhpbXVtIFN0b3JhZ2UiOiAwLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgU3RhdGVzIFBlYWsi OiAzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICJORkEgU3RhdGVzIFRvdGFsIjogODUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICJORkEgU3RhdGVzIE1lcmdlZCI6IDAsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgQ29udGV4 dHMgUGVhayI6IDMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICJORkEgQ29udGV4dHMgVG90YWwiOiA1MSwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgQ29udGV4dHMgQWJzb3JiZWQiOiAw LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEg Q29udGV4dHMgU2tpcHBlZCI6IDE3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICJORkEgQ29udGV4dHMgUHJ1bmVkIjogMTYsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgTWF0Y2hlZCI6IDE3LCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICJORkEgTWlzbWF0Y2hlZCI6IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICJORkEgTWF0Y2ggTGVuZ3RoIE1pbiI6IDIsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgTWF0Y2ggTGVu Z3RoIE1heCI6IDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICJORkEgTWF0Y2ggTGVuZ3RoIEF2ZyI6IDIuMCwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgU2tpcHBlZCBMZW5ndGggTWluIjogMSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgU2tp cHBlZCBMZW5ndGggTWF4IjogMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICJORkEgU2tpcHBlZCBMZW5ndGggQXZnIjogMS4wLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJQbGFucyI6IFsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICAgICAiTm9kZSBUeXBlIjogIkZ1bmN0aW9uIFNjYW4iLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiUGFyZW50IFJlbGF0 aW9uc2hpcCI6ICJPdXRlciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICAgICAiUGFyYWxsZWwgQXdhcmUiOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICAgICAiQXN5bmMgQ2FwYWJsZSI6IGZhbHNlLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiRnVuY3Rp b24gTmFtZSI6ICJnZW5lcmF0ZV9zZXJpZXMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICAgICAiQWxpYXMiOiAicyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiQWN0dWFsIFJvd3MiOiA1MC4wMCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAi QWN0dWFsIExvb3BzIjogMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICAgICAiRGlzYWJsZWQiOiBmYWxzZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgfSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg IF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAiVHJpZ2dlcnMiOiBbICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIF0KKygxIHJvdykKKwor RFJPUCBWSUVXIHJwcl92OworLS0gSlNPTiBmb3JtYXQgd2l0aCBtYXRjaCBsZW5ndGggc3RhdGlz dGljcworQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJ TkUgQSBBUyB2ICUgMTAgPD4gMCwgQiBBUyB2ICUgMTAgPSAwCispOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICBsaW5lICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGErIGIpIAorKDEgcm93KQorCitTRUxFQ1Qg cnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NU UyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGLCBGT1JNQVQgSlNPTikKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEr IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwIDw+IDAsIEIgQVMgdiAlIDEwID0gMAorKScpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAiUGxhbiI6IHsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJO b2RlIFR5cGUiOiAiV2luZG93QWdnIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICJQYXJhbGxlbCBBd2FyZSI6IGZhbHNlLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJBc3luYyBDYXBhYmxlIjog ZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICJBY3R1YWwgUm93cyI6IDEwMC4wMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICJBY3R1YWwgTG9vcHMiOiAxLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJEaXNhYmxlZCI6 IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICJXaW5kb3ciOiAidyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HKSIsKworICAgICAgICJQYXR0ZXJuIjogImErXCIgYiIsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJTdG9y YWdlIjogIk1lbW9yeSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICJNYXhpbXVtIFN0b3JhZ2UiOiAwLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgU3RhdGVzIFBlYWsiOiAz LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICJORkEgU3RhdGVzIFRvdGFsIjogMTkxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICJORkEgU3RhdGVzIE1lcmdlZCI6IDAsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgQ29udGV4dHMg UGVhayI6IDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICJORkEgQ29udGV4dHMgVG90YWwiOiAxMDEsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgQ29udGV4dHMgQWJzb3JiZWQiOiA4MCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgQ29u dGV4dHMgU2tpcHBlZCI6IDEwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICJORkEgQ29udGV4dHMgUHJ1bmVkIjogMCwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgTWF0Y2hlZCI6IDEwLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJO RkEgTWlzbWF0Y2hlZCI6IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICJORkEgTWF0Y2ggTGVuZ3RoIE1pbiI6IDEwLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgTWF0Y2ggTGVuZ3Ro IE1heCI6IDEwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICJORkEgTWF0Y2ggTGVuZ3RoIEF2ZyI6IDEwLjAsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICJORkEgQWJzb3JiZWQgTGVuZ3RoIE1pbiI6IDEsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgQWJzb3Ji ZWQgTGVuZ3RoIE1heCI6IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICJORkEgQWJzb3JiZWQgTGVuZ3RoIEF2ZyI6IDEuMCwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgU2tpcHBlZCBMZW5ndGggTWluIjog MSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEg U2tpcHBlZCBMZW5ndGggTWF4IjogMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICJORkEgU2tpcHBlZCBMZW5ndGggQXZnIjogMS4wLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJQbGFucyI6IFsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICAgICAiTm9kZSBUeXBlIjogIkZ1bmN0aW9uIFNjYW4iLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiUGFyZW50IFJl bGF0aW9uc2hpcCI6ICJPdXRlciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgICAiUGFyYWxsZWwgQXdhcmUiOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiQXN5bmMgQ2FwYWJsZSI6IGZhbHNlLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiRnVu Y3Rpb24gTmFtZSI6ICJnZW5lcmF0ZV9zZXJpZXMiLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICAgICAiQWxpYXMiOiAicyIsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiQWN0dWFsIFJvd3MiOiAxMDAu MDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAg ICAiQWN0dWFsIExvb3BzIjogMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICAgICAiRGlzYWJsZWQiOiBmYWxzZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgfSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAiVHJpZ2dlcnMiOiBb ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIF0KKygxIHJvdykK KworRFJPUCBWSUVXIHJwcl92OworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBYTUwgRm9ybWF0IFRlc3RzCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIFhNTCBmb3JtYXQgb3V0cHV0CitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KEEgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOworU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf dicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICBsaW5l ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhIGIpIAorKDEgcm93KQor CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMg T0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGLCBGT1JNQVQgWE1MKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKScp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgPGV4 cGxhaW4geG1sbnM9Imh0dHA6Ly93d3cucG9zdGdyZXNxbC5vcmcvMjAwOS9leHBsYWluIj4gICAg ICAgICAgICAgICAgICAgICAgKworICAgPFF1ZXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgPFBsYW4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgPE5vZGUtVHlwZT5XaW5kb3dBZ2c8L05vZGUtVHlwZT4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgIDxQYXJhbGxlbC1B d2FyZT5mYWxzZTwvUGFyYWxsZWwtQXdhcmU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICA8QXN5bmMtQ2FwYWJsZT5mYWxzZTwvQXN5bmMtQ2FwYWJsZT4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgPEFjdHVhbC1Sb3dzPjMwLjAw PC9BY3R1YWwtUm93cz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgIDxBY3R1YWwtTG9vcHM+MTwvQWN0dWFsLUxvb3BzPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICA8RGlzYWJsZWQ+ZmFsc2U8L0Rpc2FibGVk PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg PFdpbmRvdz53IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcpPC9XaW5kb3c+KworICAgICAgIDxQYXR0ZXJuPmEgYjwvUGF0dGVybj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICA8U3RvcmFn ZT5NZW1vcnk8L1N0b3JhZ2U+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgPE1heGltdW0tU3RvcmFnZT4wPC9NYXhpbXVtLVN0b3JhZ2U+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgIDxORkEtU3RhdGVzLVBl YWs+MjwvTkZBLVN0YXRlcy1QZWFrPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICA8TkZBLVN0YXRlcy1Ub3RhbD4zMTwvTkZBLVN0YXRlcy1Ub3RhbD4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgPE5GQS1TdGF0ZXMtTWVyZ2VkPjA8 L05GQS1TdGF0ZXMtTWVyZ2VkPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgIDxORkEtQ29udGV4dHMtUGVhaz4yPC9ORkEtQ29udGV4dHMtUGVhaz4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICA8TkZBLUNvbnRleHRzLVRvdGFsPjMxPC9ORkEt Q29udGV4dHMtVG90YWw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgPE5G QS1Db250ZXh0cy1BYnNvcmJlZD4wPC9ORkEtQ29udGV4dHMtQWJzb3JiZWQ+ICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgIDxORkEtQ29udGV4dHMtU2tpcHBlZD4xNTwvTkZBLUNvbnRl eHRzLVNraXBwZWQ+ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICA8TkZBLUNvbnRl eHRzLVBydW5lZD4wPC9ORkEtQ29udGV4dHMtUHJ1bmVkPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgPE5GQS1NYXRjaGVkPjE1PC9ORkEtTWF0Y2hlZD4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgIDxORkEtTWlzbWF0Y2hlZD4w PC9ORkEtTWlzbWF0Y2hlZD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICA8TkZBLU1hdGNoLUxlbmd0aC1NaW4+MjwvTkZBLU1hdGNoLUxlbmd0aC1NaW4+ICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgPE5GQS1NYXRjaC1MZW5ndGgtTWF4PjI8 L05GQS1NYXRjaC1MZW5ndGgtTWF4PiAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg IDxORkEtTWF0Y2gtTGVuZ3RoLUF2Zz4yLjA8L05GQS1NYXRjaC1MZW5ndGgtQXZnPiAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICA8TkZBLVNraXBwZWQtTGVuZ3RoLU1pbj4xPC9ORkEt U2tpcHBlZC1MZW5ndGgtTWluPiAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgPE5GQS1T a2lwcGVkLUxlbmd0aC1NYXg+MTwvTkZBLVNraXBwZWQtTGVuZ3RoLU1heD4gICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgIDxORkEtU2tpcHBlZC1MZW5ndGgtQXZnPjEuMDwvTkZBLVNraXBw ZWQtTGVuZ3RoLUF2Zz4gICAgICAgICAgICAgICAgICAgICsKKyAgICAgICA8UGxhbnM+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgICA8UGxhbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICA8Tm9kZS1UeXBlPkZ1bmN0 aW9uIFNjYW48L05vZGUtVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAgICAgPFBhcmVudC1SZWxhdGlvbnNoaXA+T3V0ZXI8L1BhcmVudC1SZWxhdGlvbnNoaXA+ ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgIDxQYXJhbGxlbC1Bd2FyZT5mYWxzZTwv UGFyYWxsZWwtQXdhcmU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAg ICA8QXN5bmMtQ2FwYWJsZT5mYWxzZTwvQXN5bmMtQ2FwYWJsZT4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICAgPEZ1bmN0aW9uLU5hbWU+Z2VuZXJhdGVfc2VyaWVz PC9GdW5jdGlvbi1OYW1lPiAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgIDxBbGlh cz5zPC9BbGlhcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICAgICA8QWN0dWFsLVJvd3M+MzAuMDA8L0FjdHVhbC1Sb3dzPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgPEFjdHVhbC1Mb29w cz4xPC9BY3R1YWwtTG9vcHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgICAgIDxEaXNhYmxlZD5mYWxzZTwvRGlzYWJsZWQ+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgPC9QbGFuPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICA8L1BsYW5zPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgIDwvUGxhbj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICA8VHJpZ2dl cnM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgPC9UcmlnZ2Vycz4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICA8L1F1ZXJ5PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworIDwvZXhwbGFpbj4KKygxIHJvdykKKworRFJPUCBWSUVXIHJwcl92OworLS0gSlNPTiBm b3JtYXQgd2l0aCBtaXNtYXRjaCBzdGF0aXN0aWNzCistLSBQYXR0ZXJuIEEgQiBDIGV4cGVjdHMg MSwyLDMgYnV0IGdldHMgMSwyLDQgdHdpY2UgY2F1c2luZyBtaXNtYXRjaGVzCitDUkVBVEUgVEVN UCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIChWQUxVRVMgKDEp LCgyKSwoNCksICgxKSwoMiksKDQpLCAoMSksKDIpLCgzKSkgQVMgdCh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDKQor ICAgIERFRklORSBBIEFTIHYgPSAxLCBCIEFTIHYgPSAyLCBDIEFTIHYgPSAzCispOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicp LCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgbGluZSAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiIGMpIAorKDEgcm93 KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGLCBGT1JNQVQgSlNPTikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gKFZBTFVFUyAoMSksKDIpLCg0KSwgKDEpLCgy KSwoNCksICgxKSwoMiksKDMpKSBBUyB0KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMpCisgICAgREVGSU5FIEEgQVMg diA9IDEsIEIgQVMgdiA9IDIsIEMgQVMgdiA9IDMKKyknKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIHsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgIlBsYW4iOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTm9kZSBUeXBlIjogIldpbmRvd0Fn ZyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAi UGFyYWxsZWwgQXdhcmUiOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAiQXN5bmMgQ2FwYWJsZSI6IGZhbHNlLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiQWN0dWFsIFJvd3MiOiA5 LjAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAiQWN0dWFsIExvb3BzIjogMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAiRGlzYWJsZWQiOiBmYWxzZSwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiV2luZG93Ijog IncgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyki LCsKKyAgICAgICAiUGF0dGVybiI6ICJhIGIgYyIsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiU3RvcmFnZSI6ICJNZW1vcnkiLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTWF4 aW11bSBTdG9yYWdlIjogMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAiTkZBIFN0YXRlcyBQZWFrIjogMiwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIFN0YXRlcyBUb3RhbCI6 IDEwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAiTkZBIFN0YXRlcyBNZXJnZWQiOiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIENvbnRleHRzIFBlYWsiOiAzLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIENvbnRleHRz IFRvdGFsIjogMTAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAiTkZBIENvbnRleHRzIEFic29yYmVkIjogMCwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIENvbnRleHRzIFNraXBwZWQiOiAxLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIENv bnRleHRzIFBydW5lZCI6IDUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAiTkZBIE1hdGNoZWQiOiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIE1pc21hdGNoZWQiOiAyLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAi TkZBIE1hdGNoIExlbmd0aCBNaW4iOiAzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAiTkZBIE1hdGNoIExlbmd0aCBNYXgiOiAzLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIE1hdGNoIExlbmd0 aCBBdmciOiAzLjAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAiTkZBIE1pc21hdGNoIExlbmd0aCBNaW4iOiAzLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIE1pc21hdGNoIExlbmd0aCBNYXgiOiAzLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIE1pc21h dGNoIExlbmd0aCBBdmciOiAzLjAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAiTkZBIFNraXBwZWQgTGVuZ3RoIE1pbiI6IDEsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIFNraXBwZWQgTGVuZ3RoIE1heCI6 IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZB IFNraXBwZWQgTGVuZ3RoIEF2ZyI6IDEuMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAiUGxhbnMiOiBbICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIHsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgICAgIk5vZGUgVHlwZSI6ICJWYWx1ZXMgU2NhbiIsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICAgIlBhcmVudCBSZWxhdGlvbnNoaXAiOiAiT3V0ZXIi LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIlBhcmFsbGVs IEF3YXJlIjogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAgICAgIkFzeW5jIENhcGFibGUiOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIkFsaWFzIjogIipWQUxVRVMqIiwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIkFj dHVhbCBSb3dzIjogOS4wMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAgICAgIkFjdHVhbCBMb29wcyI6IDEsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIkRpc2FibGVkIjogZmFsc2Ug ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAg IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgfSwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgIlRyaWdnZXJzIjogWyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIH0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyBdCisoMSByb3cpCisKK0RST1AgVklFVyBycHJfdjsKKy0tIEpTT04gZm9ybWF0IHdpdGgg c2tpcHBlZCBjb250ZXh0IHN0YXRpc3RpY3MKKy0tIEFsdGVybmF0aW9uIHBhdHRlcm4gd2l0aCBT S0lQIFBBU1QgTEFTVCBST1cgY2F1c2VzIG1hbnkgY29udGV4dHMgdG8gYmUgc2tpcHBlZAorQ1JF QVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSAoQSB8IEIpIChBIHwgQikg KEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpKQorICAgIERFRklORSBBIEFT IHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhIHwgYikgKGEgfCBiKSAoYSB8IGIpIChhIHwgYikg KGEgfCBiKSAoYSB8IGIpIChhIHwgYikgKGEgfCBiKSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJf ZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYsIEZPUk1BVCBKU09OKQorU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBC KSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIp KQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyknKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgIlBsYW4iOiB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTm9kZSBU eXBlIjogIldpbmRvd0FnZyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAiUGFyYWxsZWwgQXdhcmUiOiBmYWxzZSwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiQXN5bmMgQ2FwYWJsZSI6IGZhbHNl LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAi QWN0dWFsIFJvd3MiOiAxMDAuMDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAiQWN0dWFsIExvb3BzIjogMSwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiRGlzYWJsZWQiOiBmYWxz ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAiV2luZG93IjogIncgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykiLCsKKyAgICAgICAiUGF0dGVybiI6ICIoYSB8IGIpezh9IiwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiU3RvcmFnZSI6 ICJNZW1vcnkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAiTWF4aW11bSBTdG9yYWdlIjogMCwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIFN0YXRlcyBQZWFrIjogMTYsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZB IFN0YXRlcyBUb3RhbCI6IDU0OCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAiTkZBIFN0YXRlcyBNZXJnZWQiOiAwLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIENvbnRleHRzIFBlYWsi OiA4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAiTkZBIENvbnRleHRzIFRvdGFsIjogMTAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIENvbnRleHRzIEFic29yYmVkIjogMCwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIENvbnRleHRz IFNraXBwZWQiOiA4NCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAiTkZBIENvbnRleHRzIFBydW5lZCI6IDEsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIE1hdGNoZWQiOiAxMiwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIE1p c21hdGNoZWQiOiAzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAiTkZBIE1hdGNoIExlbmd0aCBNaW4iOiA4LCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIE1hdGNoIExlbmd0aCBNYXgi OiA4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAi TkZBIE1hdGNoIExlbmd0aCBBdmciOiA4LjAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAiTkZBIE1pc21hdGNoIExlbmd0aCBNaW4iOiAyLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIE1pc21hdGNoIExl bmd0aCBNYXgiOiA0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAiTkZBIE1pc21hdGNoIExlbmd0aCBBdmciOiAzLjAsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIFNraXBwZWQgTGVuZ3RoIE1pbiI6IDEsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIFNraXBw ZWQgTGVuZ3RoIE1heCI6IDcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAiTkZBIFNraXBwZWQgTGVuZ3RoIEF2ZyI6IDQuMCwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiUGxhbnMiOiBbICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgICAgIk5vZGUgVHlwZSI6ICJGdW5jdGlvbiBTY2FuIiwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIlBhcmVudCBSZWxhdGlv bnNoaXAiOiAiT3V0ZXIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgICAgIlBhcmFsbGVsIEF3YXJlIjogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICAgIkFzeW5jIENhcGFibGUiOiBmYWxzZSwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIkZ1bmN0aW9u IE5hbWUiOiAiZ2VuZXJhdGVfc2VyaWVzIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAgICAgIkFsaWFzIjogInMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIkFjdHVhbCBSb3dzIjogMTAwLjAwLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIkFj dHVhbCBMb29wcyI6IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAgICAgIkRpc2FibGVkIjogZmFsc2UgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIH0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICBd ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgIlRyaWdnZXJzIjogWyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyBdCisoMSByb3cpCisKK0RS T1AgVklFVyBycHJfdjsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gTXVsdGlwbGUgUGFydGl0aW9ucyBUZXN0cworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBTdGF0aXN0aWNzIGFjcm9zcyBtdWx0aXBsZSBwYXJ0aXRpb25zCitDUkVBVEUgVEVN UCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NICgKKyAgICBTRUxF Q1QgcCwgdgorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIHAsCisgICAgICAgICBnZW5l cmF0ZV9zZXJpZXMoMSwgMzApIHYKKykgdAorV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBC WSBwCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikK KyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgbGluZSAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhKyBiKSAKKygxIHJvdykKKwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gKAorICAgIFNFTEVDVCBwLCB2CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMykgcCwKKyAgICAgICAgIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgdgorKSB0CitXSU5ET1cg dyBBUyAoCisgICAgUEFSVElUSU9OIEJZIHAKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMg diAlIDUgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4 cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTkwLjAwIGxvb3BzPTEp CisgICBXaW5kb3c6IHcgQVMgKFBBUlRJVElPTiBCWSBwLnAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiIGIKKyAgIFN0b3Jh Z2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywg MTY1IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDkzIHRvdGFsLCAw IHBydW5lZAorICAgTkZBOiAxOCBtYXRjaGVkIChsZW4gNS81LzUuMCksIDAgbWlzbWF0Y2hlZAor ICAgTkZBOiA1NCBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCAxOCBza2lwcGVkIChsZW4gMS8xLzEu MCkKKyAgIC0+ICBTb3J0IChhY3R1YWwgcm93cz05MC4wMCBsb29wcz0xKQorICAgICAgICAgU29y dCBLZXk6IHAucAorICAgICAgICAgU29ydCBNZXRob2Q6IHF1aWNrc29ydCAgTWVtb3J5OiAyN2tC CisgICAgICAgICAtPiAgTmVzdGVkIExvb3AgKGFjdHVhbCByb3dzPTkwLjAwIGxvb3BzPTEpCisg ICAgICAgICAgICAgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcCAoYWN0 dWFsIHJvd3M9My4wMCBsb29wcz0xKQorICAgICAgICAgICAgICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIHYgKGFjdHVhbCByb3dzPTMwLjAwIGxvb3BzPTMpCisoMTQgcm93 cykKKworRFJPUCBWSUVXIHJwcl92OworLS0gRGlmZmVyZW50IHBhdHRlcm4gYmVoYXZpb3IgcGVy IHBhcnRpdGlvbgorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSAoCisgICAgU0VMRUNUCisgICAgICAgIENBU0UgV0hFTiB2IDw9IDI1IFRIRU4g MSBFTFNFIDIgRU5EIEFTIHAsCisgICAgICAgIHYgJSAxMCBBUyB2YWwKKyAgICBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA1MCkgdgorKSB0CitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZ IHAKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQor ICAgIERFRklORSBBIEFTIHZhbCA8IDUsIEIgQVMgdmFsID49IDUKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgIGxpbmUgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSsgYikgCisoMSByb3cpCisKK1NFTEVD VCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENP U1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NICgKKyAgICBTRUxFQ1QKKyAgICAgICAgQ0FTRSBXSEVOIHYgPD0gMjUgVEhFTiAxIEVM U0UgMiBFTkQgQVMgcCwKKyAgICAgICAgdiAlIDEwIEFTIHZhbAorICAgIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDUwKSB2CispIHQKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgcAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAg REVGSU5FIEEgQVMgdmFsIDwgNSwgQiBBUyB2YWwgPj0gNQorKTsnKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzog dyBBUyAoUEFSVElUSU9OIEJZIChDQVNFIFdIRU4gKHYudiA8PSAyNSkgVEhFTiAxIEVMU0UgMiBF TkQpIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAg IFBhdHRlcm46IGErIiBiCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtC CisgICBORkEgU3RhdGVzOiAzIHBlYWssIDc3IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRl eHRzOiAyIHBlYWssIDUyIHRvdGFsLCAyMSBwcnVuZWQKKyAgIE5GQTogNSBtYXRjaGVkIChsZW4g NS82LzUuOCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAxOSBhYnNvcmJlZCAobGVuIDEvMS8xLjAp LCA1IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIFNvcnQgKGFjdHVhbCByb3dzPTUwLjAw IGxvb3BzPTEpCisgICAgICAgICBTb3J0IEtleTogKENBU0UgV0hFTiAodi52IDw9IDI1KSBUSEVO IDEgRUxTRSAyIEVORCkKKyAgICAgICAgIFNvcnQgTWV0aG9kOiBxdWlja3NvcnQgIE1lbW9yeTog MjZrQgorICAgICAgICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHYgKGFj dHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisoMTIgcm93cykKKworRFJPUCBWSUVXIHJwcl92Owor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBFZGdlIENhc2VzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEVtcHR5IHJlc3VsdCBzZXQKK0NSRUFU RSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgdiA9IDEs IEIgQVMgdiA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOworICAgICAgIGxpbmUgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRF Uk4gKGEgYikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFTIHYgPSAxLCBCIEFTIHYgPSAyCispOycp OworICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTAu MDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSBiCisgICAtPiAgRnVuY3Rpb24g U2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MC4wMCBsb29wcz0xKQorKDQg cm93cykKKworRFJPUCBWSUVXIHJwcl92OworLS0gU2luZ2xlIHJvdworQ1JFQVRFIFRFTVAgVklF VyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMSkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICBsaW5lICAgICAg CistLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhKSAKKygxIHJvdykKKworU0VMRUNUIHJw cl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMg T0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFT IFRSVUUKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVy ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0 dWFsIHJvd3M9MS4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhCisgICBTdG9y YWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAyIHBlYWss IDIgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgMiB0b3RhbCwgMCBw cnVuZWQKKyAgIE5GQTogMSBtYXRjaGVkIChsZW4gMS8xLzEuMCksIDAgbWlzbWF0Y2hlZAorICAg LT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEuMDAg bG9vcHM9MSkKKyg4IHJvd3MpCisKK0RST1AgVklFVyBycHJfdjsKKy0tIFBhdHRlcm4gbG9uZ2Vy IHRoYW4gZGF0YQorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSBG IEcgSCBJIEopCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdiA9IDEsIEIgQVMgdiA9IDIsIEMg QVMgdiA9IDMsIEQgQVMgdiA9IDQsIEUgQVMgdiA9IDUsCisgICAgICAgIEYgQVMgdiA9IDYsIEcg QVMgdiA9IDcsIEggQVMgdiA9IDgsIEkgQVMgdiA9IDksIEogQVMgdiA9IDEwCispOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicp LCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgICAg IGxpbmUgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgIFBBVFRFUk4gKGEgYiBjIGQgZSBmIGcgaCBpIGopIAorKDEgcm93KQorCitTRUxFQ1QgcnBy X2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSBGIEcgSCBJIEop CisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdiA9IDEsIEIgQVMgdiA9IDIsIEMgQVMgdiA9IDMs IEQgQVMgdiA9IDQsIEUgQVMgdiA9IDUsCisgICAgICAgIEYgQVMgdiA9IDYsIEcgQVMgdiA9IDcs IEggQVMgdiA9IDgsIEkgQVMgdiA9IDksIEogQVMgdiA9IDEwCispOycpOworICAgICAgICAgICAg ICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTUuMDAgbG9vcHM9MSkKKyAg IFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HKQorICAgUGF0dGVybjogYSBiIGMgZCBlIGYgZyBoIGkgagorICAgU3RvcmFnZTogTWVt b3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMiBwZWFrLCA2IHRvdGFs LCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDYgdG90YWwsIDQgcHJ1bmVkCisg ICBORkE6IDAgbWF0Y2hlZCwgMSBtaXNtYXRjaGVkIChsZW4gNS81LzUuMCkKKyAgIC0+ICBGdW5j dGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz01LjAwIGxvb3BzPTEp CisoOCByb3dzKQorCitEUk9QIFZJRVcgcnByX3Y7CistLSBBbGwgcm93cyBtYXRjaCBhcyBzaW5n bGUgbWF0Y2gKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgVFJVRQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CisgICAgICBsaW5lICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRF Uk4gKGErKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsnKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEp CisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIgorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVt IFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCAxMDEgdG90YWwsIDAgbWVyZ2Vk CisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgNTEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEg bWF0Y2hlZCAobGVuIDUwLzUwLzUwLjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogNDkgYWJzb3Ji ZWQgKGxlbiAxLzEvMS4wKSwgMCBza2lwcGVkCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5l cmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKK0RS T1AgVklFVyBycHJfdjsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gQ29tcGxleCBQYXR0ZXJuIFRlc3RzCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIE5lc3RlZCBncm91cHMKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKChB IEIpIEMpKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFT IHYgJSAzID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CisgICAgICAgICAgbGluZSAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICBQQVRURVJOICgoKGEgYikgYykrKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBs YWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBU SU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKChBIEIpIEMpKykKKyAgICBERUZJTkUg QSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAorKTsnKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTYwLjAw IGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhJyBiJyBjJykrIgorICAgU3RvcmFn ZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA4 MSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCA2MSB0b3RhbCwgMjAg cHJ1bmVkCisgICBORkE6IDEgbWF0Y2hlZCAobGVuIDYwLzYwLzYwLjApLCAwIG1pc21hdGNoZWQK KyAgIE5GQTogMTkgYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgMjAgc2tpcHBlZCAobGVuIDEvMS8x LjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJv d3M9NjAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKK0RST1AgVklFVyBycHJfdjsKKy0tIE11bHRp cGxlIGFsdGVybmF0aW9ucworQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBuZmFfdGVzdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEMgfCBEIHwgRSkpCisgICAg REVGSU5FCisgICAgICAgIEEgQVMgY2F0ID0gJ0EnLCBCIEFTIGNhdCA9ICdCJywgQyBBUyBjYXQg PSAnQycsCisgICAgICAgIEQgQVMgY2F0ID0gJ0QnLCBFIEFTIGNhdCA9ICdFJworKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3Yn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICAg ICBsaW5lICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgICBQQVRURVJOICgoYSB8IGIpIChjIHwgZCB8IGUpKSAKKygxIHJvdykKKworU0VMRUNUIHJw cl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMg T0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOICgoQSB8IEIpIChDIHwgRCB8IEUpKQorICAgIERFRklORQorICAgICAg ICBBIEFTIGNhdCA9ICcnQScnLCBCIEFTIGNhdCA9ICcnQicnLCBDIEFTIGNhdCA9ICcnQycnLAor ICAgICAgICBEIEFTIGNhdCA9ICcnRCcnLCBFIEFTIGNhdCA9ICcnRScnCispOycpOworICAgICAg ICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEp CisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIHwgYikgKGMgfCBkIHwgZSkKKyAgIFN0b3JhZ2U6 IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDUgcGVhaywgMjgy IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDEwMSB0b3RhbCwgNDAg cHJ1bmVkCisgICBORkE6IDIwIG1hdGNoZWQgKGxlbiAyLzIvMi4wKSwgMjAgbWlzbWF0Y2hlZCAo bGVuIDIvMi8yLjApCisgICBORkE6IDAgYWJzb3JiZWQsIDIwIHNraXBwZWQgKGxlbiAxLzEvMS4w KQorICAgLT4gIFNlcSBTY2FuIG9uIG5mYV90ZXN0IChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9 MSkKKyg5IHJvd3MpCisKK0RST1AgVklFVyBycHJfdjsKKy0tIE9wdGlvbmFsIGVsZW1lbnRzCitD UkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQj8gQykKKyAgICBERUZJTkUgQSBB UyB2ICUgNCA9IDEsIEIgQVMgdiAlIDQgPSAyLCBDIEFTIHYgJSA0ID0gMworKTsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgIGxpbmUgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiPyBjKSAKKygxIHJv dykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBC PyBDKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMSwgQiBBUyB2ICUgNCA9IDIsIEMgQVMgdiAl IDQgPSAzCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0 ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAo YWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSBiPyBj CisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVz OiAzIHBlYWssIDY0IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDUx IHRvdGFsLCAyNSBwcnVuZWQKKyAgIE5GQTogMTIgbWF0Y2hlZCAobGVuIDMvMy8zLjApLCAxIG1p c21hdGNoZWQgKGxlbiAyLzIvMi4wKQorICAgTkZBOiAwIGFic29yYmVkLCAxMiBza2lwcGVkIChs ZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChh Y3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorKDkgcm93cykKKworRFJPUCBWSUVXIHJwcl92Owor LS0gQm91bmRlZCBxdWFudGlmaWVycworQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQXsyLDV9IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwIDw+IDAsIEIgQVMgdiAlIDEwID0g MAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7Cisg ICAgICAgICBsaW5lICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRF Uk4gKGF7Miw1fSBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEF7Miw1fSBCKQorICAgIERFRklORSBBIEFTIHYgJSAxMCA8PiAw LCBCIEFTIHYgJSAxMCA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9l eHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFT IChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQ YXR0ZXJuOiBhezIsNX0gYgorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5r QgorICAgTkZBIFN0YXRlczogOSBwZWFrLCAzMTEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29u dGV4dHM6IDcgcGVhaywgMTAxIHRvdGFsLCAwIHBydW5lZAorICAgTkZBOiAxMCBtYXRjaGVkIChs ZW4gNi82LzYuMCksIDQwIG1pc21hdGNoZWQgKGxlbiA2LzYvNi4wKQorICAgTkZBOiAwIGFic29y YmVkLCA1MCBza2lwcGVkIChsZW4gMS81LzMuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdl bmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisK K0RST1AgVklFVyBycHJfdjsKKy0tIFN0YXIgcXVhbnRpZmllcgorQ1JFQVRFIFRFTVAgVklFVyBy cHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOIChBIEIqIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwID0gMSwgQiBB UyB2ICUgMTAgSU4gKDIsMyw0LDUsNiw3LDgpLCBDIEFTIHYgJSAxMCA9IDkKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92Jyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICBsaW5lICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEgYiogYykgCisoMSBy b3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVG RkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEg QiogQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPSAxLCBCIEFTIHYgJSAxMCBJTiAoMiwzLDQs NSw2LDcsOCksIEMgQVMgdiAlIDEwID0gOQorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6 IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykK KyAgIFBhdHRlcm46IGEgYiogYworICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6 IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA5MSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBD b250ZXh0czogMyBwZWFrLCA1MSB0b3RhbCwgNDAgcHJ1bmVkCisgICBORkE6IDUgbWF0Y2hlZCAo bGVuIDkvOS85LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwgNSBza2lwcGVk IChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBz IChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorKDkgcm93cykKKworRFJPUCBWSUVXIHJwcl92 OworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBSZWFsLXdvcmxkIFBhdHRlcm4gRXhhbXBsZXMKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gU3Rv Y2sgcHJpY2UgcGF0dGVybiAtIFYtc2hhcGUgKGRvd24gdGhlbiB1cCkKK0NSRUFURSBURU1QIFZJ RVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gbmZhX2NvbXBsZXgKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO IChEKyBVKykKKyAgICBERUZJTkUgRCBBUyB0cmVuZCA9ICdEJywgVSBBUyB0cmVuZCA9ICdVJwor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAg ICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGQrIHUr KSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gbmZhX2NvbXBsZXgKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChEKyBVKykKKyAgICBE RUZJTkUgRCBBUyB0cmVuZCA9ICcnRCcnLCBVIEFTIHRyZW5kID0gJydVJycKKyk7Jyk7CisgICAg ICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0zMC4wMCBsb29wcz0x KQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBkKyIgdSsKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4 aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDQgcGVhaywgNTggdG90YWwsIDAgbWVy Z2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgMzEgdG90YWwsIDMgcHJ1bmVkCisgICBORkE6 IDMgbWF0Y2hlZCAobGVuIDMvMTQvOC4wKSwgMSBtaXNtYXRjaGVkIChsZW4gMy8zLzMuMCkKKyAg IE5GQTogOSBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCAxNCBza2lwcGVkIChsZW4gMS8xLzEuMCkK KyAgIC0+ICBTZXEgU2NhbiBvbiBuZmFfY29tcGxleCAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9 MSkKKyg5IHJvd3MpCisKK0RST1AgVklFVyBycHJfdjsKKy0tIFN0b2NrIHByaWNlIHBhdHRlcm4g LSBwZWFrICh1cCwgc3RhYmxlLCBkb3duKQorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBuZmFfY29tcGxleAorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKFUrIFMqIEQrKQorICAg IERFRklORSBVIEFTIHRyZW5kID0gJ1UnLCBTIEFTIHRyZW5kID0gJ1MnLCBEIEFTIHRyZW5kID0g J0QnCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK KyAgICAgICAgIGxpbmUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFU VEVSTiAodSsgcyogZCspIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBuZmFfY29tcGxleAorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KFUrIFMqIEQrKQorICAgIERFRklORSBVIEFTIHRyZW5kID0gJydVJycsIFMgQVMgdHJlbmQgPSAn J1MnJywgRCBBUyB0cmVuZCA9ICcnRCcnCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAg cnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAo Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0 dGVybjogdSsiIHMqIGQrCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtC CisgICBORkEgU3RhdGVzOiA1IHBlYWssIDc2IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRl eHRzOiAzIHBlYWssIDMxIHRvdGFsLCAxIHBydW5lZAorICAgTkZBOiA0IG1hdGNoZWQgKGxlbiAz LzExLzcuMiksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAxMiBhYnNvcmJlZCAobGVuIDEvMS8xLjAp LCAxMyBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBTZXEgU2NhbiBvbiBuZmFfY29tcGxl eCAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKK0RST1AgVklFVyBycHJf djsKKy0tIENvbnNlY3V0aXZlIGluY3JlYXNpbmcgdmFsdWVzICh1c2luZyBQUkVWKQorQ1JFQVRF IFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBezMsfSkKKyAgICBERUZJTkUgQSBBUyB2ID4g UFJFVih2KSBPUiBQUkVWKHYpIElTIE5VTEwKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICBsaW5lICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICBQQVRURVJOIChhezMsfSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhw bGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwg VElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7Myx9KQorICAgIERFRklORSBBIEFT IHYgPiBQUkVWKHYpIE9SIFBSRVYodikgSVMgTlVMTAorKTsnKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisgICBX aW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORykKKyAgIFBhdHRlcm46IGF7Myx9IgorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0 b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA5OSB0b3RhbCwgMCBtZXJnZWQKKyAg IE5GQSBDb250ZXh0czogMiBwZWFrLCA1MSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMSBtYXRj aGVkIChsZW4gNTAvNTAvNTAuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiA0OSBhYnNvcmJlZCAo bGVuIDEvMS8xLjApLCAwIHNraXBwZWQKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRl X3NlcmllcyBzIChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorKDkgcm93cykKKworRFJPUCBW SUVXIHJwcl92OworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBQZXJmb3JtYW5jZS1vcmllbnRlZCBUZXN0cworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBMYXJnZSBkYXRhc2V0IHdpdGggc2ltcGxlIHBhdHRlcm4KK0NSRUFURSBURU1QIFZJRVcg cnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDEwMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFT IHYgJSAyID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CisgICAgICAgbGluZSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVS TiAoYSBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAy ID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRl ciAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdn IChhY3R1YWwgcm93cz0xMDAwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEg YgorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRl czogMiBwZWFrLCAxMDAxIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWss IDEwMDEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDUwMCBtYXRjaGVkIChsZW4gMi8yLzIuMCks IDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCA1MDAgc2tpcHBlZCAobGVuIDEvMS8x LjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJv d3M9MTAwMC4wMCBsb29wcz0xKQorKDkgcm93cykKKworRFJPUCBWSUVXIHJwcl92OworLS0gTGFy Z2UgZGF0YXNldCB3aXRoIGFic29ycHRpb24KK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSAxMDAgPD4gMCwgQiBBUyB2ICUgMTAw ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CisgICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChh KyBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSAxMDAgPD4gMCwgQiBBUyB2ICUg MTAwID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2Zp bHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93 QWdnIChhY3R1YWwgcm93cz0xMDAwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46 IGErIiBiCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEg U3RhdGVzOiAzIHBlYWssIDE5OTEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIg cGVhaywgMTAwMSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMTAgbWF0Y2hlZCAobGVuIDEwMC8x MDAvMTAwLjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogOTgwIGFic29yYmVkIChsZW4gMS8xLzEu MCksIDEwIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2Vu ZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEwMDAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisK K0RST1AgVklFVyBycHJfdjsKKy0tIEhpZ2ggc3RhdGUgbWVyZ2UgcmF0aW8KK0NSRUFURSBURU1Q IFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikrIEMpCisgICAgREVGSU5FIEEgQVMgdiAl IDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgIGxpbmUgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgfCBiKSsgYykg CisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFla RSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOICgoQSB8IEIpKyBDKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9 IDIsIEMgQVMgdiAlIDMgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJf ZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgV2luZG93QWdnIChhY3R1YWwgcm93cz01MDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBB UyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAg UGF0dGVybjogKGEgfCBiKSsgYworICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6 IE5rQgorICAgTkZBIFN0YXRlczogOCBwZWFrLCAyMDA0IHRvdGFsLCAwIG1lcmdlZAorICAgTkZB IENvbnRleHRzOiAzIHBlYWssIDUwMSB0b3RhbCwgMSBwcnVuZWQKKyAgIE5GQTogMTY2IG1hdGNo ZWQgKGxlbiAzLzMvMy4wKSwgMSBtaXNtYXRjaGVkIChsZW4gMi8yLzIuMCkKKyAgIE5GQTogMCBh YnNvcmJlZCwgMzMyIHNraXBwZWQgKGxlbiAxLzIvMS41KQorICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTUwMC4wMCBsb29wcz0xKQorKDkgcm93 cykKKworRFJPUCBWSUVXIHJwcl92OworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBJTklUSUFMIHZzIG5vIElOSVRJQUwg Y29tcGFyaXNvbgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBXaXRoIElOSVRJQUwga2V5d29yZAorQ1JFQVRFIFRFTVAg VklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBB UyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5l IFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tCisgICBQQVRURVJOIChhKyBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBs YWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBU SU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEErIEIpCisgICAg REVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7Jyk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0x KQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIgYgorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhp bXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA5MSB0b3RhbCwgMCBtZXJn ZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCA1MSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTog MTAgbWF0Y2hlZCAobGVuIDUvNS81LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMzAgYWJzb3Ji ZWQgKGxlbiAxLzEvMS4wKSwgMTAgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rp b24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkK Kyg5IHJvd3MpCisKK0RST1AgVklFVyBycHJfdjsKKy0tIFdpdGhvdXQgSU5JVElBTCBrZXl3b3Jk IChzYW1lIGJlaGF2aW9yIGN1cnJlbnRseSkKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAg ICAgbGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhKyBiKSAK KygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpF LCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsn KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dz PTUwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIiBiCisgICBTdG9yYWdl OiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWssIDkx IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDUxIHRvdGFsLCAwIHBy dW5lZAorICAgTkZBOiAxMCBtYXRjaGVkIChsZW4gNS81LzUuMCksIDAgbWlzbWF0Y2hlZAorICAg TkZBOiAzMCBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCAxMCBza2lwcGVkIChsZW4gMS8xLzEuMCkK KyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz01 MC4wMCBsb29wcz0xKQorKDkgcm93cykKKworRFJPUCBWSUVXIHJwcl92OworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBR dWFudGlmaWVyIFZhcmlhdGlvbnMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUGx1cyBxdWFudGlmaWVyCitDUkVBVEUg VEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHYgJSA0IDw+ IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor ICAgICAgbGluZSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhKykgCiso MSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KEErKQorICAgIERFRklORSBBIEFTIHYgJSA0IDw+IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz00MC4wMCBsb29wcz0xKQorICAg V2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcpCisgICBQYXR0ZXJuOiBhKyIKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9y YWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgNzEgdG90YWwsIDAgbWVyZ2VkCisgICBO RkEgQ29udGV4dHM6IDMgcGVhaywgNDEgdG90YWwsIDEwIHBydW5lZAorICAgTkZBOiAxMCBtYXRj aGVkIChsZW4gMy8zLzMuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAyMCBhYnNvcmJlZCAobGVu IDEvMS8xLjApLCAwIHNraXBwZWQKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3Nl cmllcyBzIChhY3R1YWwgcm93cz00MC4wMCBsb29wcz0xKQorKDkgcm93cykKKworRFJPUCBWSUVX IHJwcl92OworLS0gU3RhciBxdWFudGlmaWVyICh6ZXJvIG9yIG1vcmUpCitDUkVBVEUgVEVNUCBW SUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKEEqIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgSU4gKDEs IDIpLCBCIEFTIHYgJSA0ID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CisgICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t CisgICBQQVRURVJOIChhKiBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRl cignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSogQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNCBJTiAo MSwgMiksIEIgQVMgdiAlIDQgPSAzCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBy cHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBB UyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAg UGF0dGVybjogYSoiIGIKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IK KyAgIE5GQSBTdGF0ZXM6IDQgcGVhaywgMTAyIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRl eHRzOiAyIHBlYWssIDQxIHRvdGFsLCAxMCBwcnVuZWQKKyAgIE5GQTogMTAgbWF0Y2hlZCAobGVu IDMvMy8zLjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMjAgYWJzb3JiZWQgKGxlbiAxLzEvMS4w KSwgMCBza2lwcGVkCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAo YWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKK0RST1AgVklFVyBycHJfdjsK Ky0tIFF1ZXN0aW9uIG1hcmsgKHplcm8gb3Igb25lKQorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBB UworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBPyBCIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAxLCBCIEFTIHYgJSA0 ID0gMiwgQyBBUyB2ICUgNCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworICAgICAgICBsaW5lICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgIFBBVFRFUk4gKGE/IGIgYykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFp bl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElN SU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEE/IEIgQykKKyAgICBERUZJTkUgQSBBUyB2 ICUgNCA9IDEsIEIgQVMgdiAlIDQgPSAyLCBDIEFTIHYgJSA0ID0gMworKTsnKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTQwLjAwIGxvb3Bz PTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGE/IGIgYworICAgU3RvcmFnZTogTWVtb3J5ICBN YXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNCBwZWFrLCA4MiB0b3RhbCwgMCBt ZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCA0MSB0b3RhbCwgMTAgcHJ1bmVkCisgICBO RkE6IDEwIG1hdGNoZWQgKGxlbiAzLzMvMy4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJz b3JiZWQsIDIwIHNraXBwZWQgKGxlbiAxLzIvMS41KQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24g Z2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTQwLjAwIGxvb3BzPTEpCisoOSByb3dzKQor CitEUk9QIFZJRVcgcnByX3Y7CistLSBFeGFjdCBjb3VudCB7bn0KK0NSRUFURSBURU1QIFZJRVcg cnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQXszfSBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIg QVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQ QVRURVJOJzsKKyAgICAgICAgbGluZSAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICBQQVRURVJOIChhezN9IGIpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVy KCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYs IFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOIChBezN9IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4g MCwgQiBBUyB2ICUgNSA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9l eHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg V2luZG93QWdnIChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0 ZXJuOiBhezN9IGIKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAg IE5GQSBTdGF0ZXM6IDQgcGVhaywgNTEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6 IDUgcGVhaywgNTEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNoZWQgKGxlbiA0LzQv NC4wKSwgMTAgbWlzbWF0Y2hlZCAobGVuIDQvNC80LjApCisgICBORkE6IDAgYWJzb3JiZWQsIDMw IHNraXBwZWQgKGxlbiAxLzMvMi4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVf c2VyaWVzIHMgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCitEUk9QIFZJ RVcgcnByX3Y7CistLSBSYW5nZSB7bixtfQorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBezIsNH0gQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0g MAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7Cisg ICAgICAgICBsaW5lICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRF Uk4gKGF7Miw0fSBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQXsyLDR9IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwg QiBBUyB2ICUgNSA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBs YWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnIChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiBhezIsNH0gYgorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAg TkZBIFN0YXRlczogNyBwZWFrLCAxMDEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6 IDUgcGVhaywgNTEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNoZWQgKGxlbiA1LzUv NS4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDQwIHNraXBwZWQgKGxlbiAx LzQvMi41KQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVh bCByb3dzPTUwLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCitEUk9QIFZJRVcgcnByX3Y7CistLSBB dCBsZWFzdCB7bix9CitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7Myx9IEIp CisgICAgREVGSU5FIEEgQVMgdiAlIDEwIDw+IDAsIEIgQVMgdiAlIDEwID0gMAorKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3Yn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICBsaW5l ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhezMsfSBiKSAK KygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpF LCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQXszLH0gQikKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPD4gMCwgQiBBUyB2ICUgMTAgPSAw CispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFs IHJvd3M9NTAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYXszLH0iIGIKKyAg IFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMg cGVhaywgODYgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgNTEgdG90 YWwsIDAgcHJ1bmVkCisgICBORkE6IDUgbWF0Y2hlZCAobGVuIDEwLzEwLzEwLjApLCAwIG1pc21h dGNoZWQKKyAgIE5GQTogNDAgYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgNSBza2lwcGVkIChsZW4g MS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1 YWwgcm93cz01MC4wMCBsb29wcz0xKQorKDkgcm93cykKKworRFJPUCBWSUVXIHJwcl92OworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBSZWdyZXNzaW9uIFRlc3RzIGZvciBTdGF0aXN0aWNzIEFjY3VyYWN5CistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIFZlcmlmeSBzdGF0ZSBjb3VudCBhY2N1cmFjeQorLS0gUGF0dGVybiBBKyBCIHdpdGggMjAg cm93cyBzaG91bGQgc2hvdyBwcmVkaWN0YWJsZSBzdGF0ZSBiZWhhdmlvcgorQ1JFQVRFIFRFTVAg VklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAs IEIgQVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKKyAgICAgICBsaW5lICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg IFBBVFRFUk4gKGErIGIpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIg QVMgdiAlIDUgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFp bl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRv d0FnZyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjog YSsiIGIKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBT dGF0ZXM6IDMgcGVhaywgMzcgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVh aywgMjEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDQgbWF0Y2hlZCAobGVuIDUvNS81LjApLCAw IG1pc21hdGNoZWQKKyAgIE5GQTogMTIgYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgNCBza2lwcGVk IChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBz IChhY3R1YWwgcm93cz0yMC4wMCBsb29wcz0xKQorKDkgcm93cykKKworRFJPUCBWSUVXIHJwcl92 OworLS0gVmVyaWZ5IGNvbnRleHQgY291bnQgd2l0aCBrbm93biBhYnNvcnB0aW9uCitDUkVBVEUg VEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIgQykKKyAgICBERUZJTkUgQSBBUyB2ICUg MTAgSU4gKDEsMiwzLDQsNSw2LDcpLCBCIEFTIHYgJSAxMCA9IDgsIEMgQVMgdiAlIDEwID0gOQor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAg ICAgIGxpbmUgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSsg YiBjKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSsgQiBDKQorICAgIERFRklORSBBIEFTIHYgJSAxMCBJTiAoMSwyLDMsNCw1LDYs NyksIEIgQVMgdiAlIDEwID0gOCwgQyBBUyB2ICUgMTAgPSA5CispOycpOworICAgICAgICAgICAg ICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkK KyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiIGIgYworICAgU3RvcmFnZTogTWVtb3J5ICBNYXhp bXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA1MiB0b3RhbCwgMCBtZXJn ZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAzMSB0b3RhbCwgNiBwcnVuZWQKKyAgIE5GQTog MyBtYXRjaGVkIChsZW4gOS85LzkuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAxOCBhYnNvcmJl ZCAobGVuIDEvMS8xLjApLCAzIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9u IFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTMwLjAwIGxvb3BzPTEpCiso OSByb3dzKQorCitEUk9QIFZJRVcgcnByX3Y7CistLSBWZXJpZnkgbWF0Y2ggbGVuZ3RoIHdpdGgg Zml4ZWQtbGVuZ3RoIHBhdHRlcm4KK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QSBCIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2 ICUgMyA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOworICAgICAgICBsaW5lICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRU RVJOIChhIGIgYykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQ TEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFS WSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAz MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEEgQiBDKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2 ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAg ICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzog dyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogYSBiIGMKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBO a0IKKyAgIE5GQSBTdGF0ZXM6IDIgcGVhaywgMzEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29u dGV4dHM6IDMgcGVhaywgMzEgdG90YWwsIDEwIHBydW5lZAorICAgTkZBOiAxMCBtYXRjaGVkIChs ZW4gMy8zLzMuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCAxMCBza2lwcGVk IChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBz IChhY3R1YWwgcm93cz0zMC4wMCBsb29wcz0xKQorKDkgcm93cykKKworRFJPUCBWSUVXIHJwcl92 OworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBBbHRlcm5hdGlvbiBQYXR0ZXJuIFRlc3RzCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFNpbXBs ZSBhbHRlcm5hdGlvbgorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBuZmFfdGVzdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgQykKKyAgICBERUZJTkUgQSBBUyBj YXQgPSAnQScsIEIgQVMgY2F0ID0gJ0InLCBDIEFTIGNhdCA9ICdDJworKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgbGluZSAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgfCBiKSBjKSAK KygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpF LCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIEMpCisgICAgREVG SU5FIEEgQVMgY2F0ID0gJydBJycsIEIgQVMgY2F0ID0gJydCJycsIEMgQVMgY2F0ID0gJydDJycK Kyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0x MDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgfCBiKSBjCisgICBTdG9y YWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWss IDIwMiB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAxMDEgdG90YWws IDQwIHBydW5lZAorICAgTkZBOiAyMCBtYXRjaGVkIChsZW4gMi8yLzIuMCksIDIwIG1pc21hdGNo ZWQgKGxlbiAyLzIvMi4wKQorICAgTkZBOiAwIGFic29yYmVkLCAyMCBza2lwcGVkIChsZW4gMS8x LzEuMCkKKyAgIC0+ICBTZXEgU2NhbiBvbiBuZmFfdGVzdCAoYWN0dWFsIHJvd3M9MTAwLjAwIGxv b3BzPTEpCisoOSByb3dzKQorCitEUk9QIFZJRVcgcnByX3Y7CistLSBNdWx0aXBsZSBpdGVtcyBp biBhbHRlcm5hdGlvbgorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBuZmFfdGVzdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQiB8IEMgfCBEKSBFKQorICAgIERFRklO RQorICAgICAgICBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQgPSAnQicsIEMgQVMgY2F0ID0gJ0Mn LAorICAgICAgICBEIEFTIGNhdCA9ICdEJywgRSBBUyBjYXQgPSAnRScKKyk7CitTRUxFQ1QgbGlu ZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICAgICBsaW5l ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRU RVJOICgoYSB8IGIgfCBjIHwgZCkgZSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9m aWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5H IE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIG5mYV90ZXN0 CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoKEEgfCBCIHwgQyB8IEQpIEUpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgY2F0ID0g JydBJycsIEIgQVMgY2F0ID0gJydCJycsIEMgQVMgY2F0ID0gJydDJycsCisgICAgICAgIEQgQVMg Y2F0ID0gJydEJycsIEUgQVMgY2F0ID0gJydFJycKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAg ICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzog dyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogKGEgfCBiIHwgYyB8IGQpIGUKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11 bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDUgcGVhaywgNDA0IHRvdGFsLCAwIG1lcmdl ZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDEwMSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTog MjAgbWF0Y2hlZCAobGVuIDIvMi8yLjApLCA2MCBtaXNtYXRjaGVkIChsZW4gMi8yLzIuMCkKKyAg IE5GQTogMCBhYnNvcmJlZCwgMjAgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgU2VxIFNj YW4gb24gbmZhX3Rlc3QgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorKDkgcm93cykKKwor RFJPUCBWSUVXIHJwcl92OworLS0gQWx0ZXJuYXRpb24gd2l0aCBxdWFudGlmaWVycworQ1JFQVRF IFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpKyBDKQorICAgIERFRklORSBBIEFT IHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCispOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICBsaW5lICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhIHwgYikr IGMpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOICgoQSB8IEIpKyBDKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2ICUg MyA9IDIsIEMgQVMgdiAlIDMgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBy cHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBB UyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAg UGF0dGVybjogKGEgfCBiKSsgYworICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6 IE5rQgorICAgTkZBIFN0YXRlczogOCBwZWFrLCAyMDQgdG90YWwsIDAgbWVyZ2VkCisgICBORkEg Q29udGV4dHM6IDMgcGVhaywgNTEgdG90YWwsIDEgcHJ1bmVkCisgICBORkE6IDE2IG1hdGNoZWQg KGxlbiAzLzMvMy4wKSwgMSBtaXNtYXRjaGVkIChsZW4gMi8yLzIuMCkKKyAgIE5GQTogMCBhYnNv cmJlZCwgMzIgc2tpcHBlZCAobGVuIDEvMi8xLjUpCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBn ZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisK K0RST1AgVklFVyBycHJfdjsKKy0tIE11bHRpcGxlIGFsdGVybmF0aXZlcyAoNCspCitDUkVBVEUg VEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIHwgQiB8 IEMgfCBEIHwgRSkKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA9IDAsIEIgQVMgdiAlIDUgPSAxLCBD IEFTIHYgJSA1ID0gMiwgRCBBUyB2ICUgNSA9IDMsIEUgQVMgdiAlIDUgPSA0CispOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicp LCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgICAg bGluZSAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg UEFUVEVSTiAoYSB8IGIgfCBjIHwgZCB8IGUpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSB8 IEIgfCBDIHwgRCB8IEUpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPSAwLCBCIEFTIHYgJSA1ID0g MSwgQyBBUyB2ICUgNSA9IDIsIEQgQVMgdiAlIDUgPSAzLCBFIEFTIHYgJSA1ID0gNAorKTsnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9 MTAwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIHwgYiB8IGMgfCBkIHwg ZSkKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0 ZXM6IDYgcGVhaywgNTA1IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWss IDEwMSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMTAwIG1hdGNoZWQgKGxlbiAxLzEvMS4wKSwg MCBtaXNtYXRjaGVkCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAo YWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisoOCByb3dzKQorCitEUk9QIFZJRVcgcnByX3Y7 CistLSBBbHRlcm5hdGlvbiBhdCBzdGFydAorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSB8IEIpIEMgRCkKKyAgICBERUZJTkUgQSBBUyB2 ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAg ICAgICAgICBsaW5lICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQ QVRURVJOICgoYSB8IGIpIGMgZCkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0 ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9G RiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIHwgQikgQyBE KQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQg PSAyLCBEIEFTIHYgJSA0ID0gMworKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnBy X2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTYwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMg KFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBh dHRlcm46IChhIHwgYikgYyBkCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTog TmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWssIDEyMiB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBD b250ZXh0czogMyBwZWFrLCA2MSB0b3RhbCwgMTYgcHJ1bmVkCisgICBORkE6IDE1IG1hdGNoZWQg KGxlbiAzLzMvMy4wKSwgMTQgbWlzbWF0Y2hlZCAobGVuIDIvMi8yLjApCisgICBORkE6IDAgYWJz b3JiZWQsIDE1IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24g Z2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTYwLjAwIGxvb3BzPTEpCisoOSByb3dzKQor CitEUk9QIFZJRVcgcnByX3Y7CistLSBNdWx0aXBsZSBzZXF1ZW50aWFsIGFsdGVybmF0aW9ucwor Q1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo KEEgfCBCKSBDIChEIHwgRSkgRikKKyAgICBERUZJTkUgQSBBUyB2ICUgNiA9IDAsIEIgQVMgdiAl IDYgPSAxLCBDIEFTIHYgJSA2ID0gMiwgRCBBUyB2ICUgNiA9IDMsIEUgQVMgdiAlIDYgPSA0LCBG IEFTIHYgJSA2ID0gNQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CisgICAgICAgICAgICAgICBsaW5lICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYSB8IGIpIGMgKGQgfCBlKSBm KSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIHwgQikgQyAoRCB8IEUpIEYpCisgICAgREVG SU5FIEEgQVMgdiAlIDYgPSAwLCBCIEFTIHYgJSA2ID0gMSwgQyBBUyB2ICUgNiA9IDIsIEQgQVMg diAlIDYgPSAzLCBFIEFTIHYgJSA2ID0gNCwgRiBBUyB2ICUgNiA9IDUKKyk7Jyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTEwMC4wMCBs b29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSB8IGIpIGMgKGQgfCBlKSBmCisgICBT dG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA0IHBl YWssIDIxOSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAxMDEgdG90 YWwsIDY3IHBydW5lZAorICAgTkZBOiAwIG1hdGNoZWQsIDMzIG1pc21hdGNoZWQgKGxlbiAyLzQv My4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCBy b3dzPTEwMC4wMCBsb29wcz0xKQorKDggcm93cykKKworRFJPUCBWSUVXIHJwcl92OworLS0gUXVh bnRpZmllZCBhbHRlcm5hdGl2ZXMKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoKEErIHwgQispIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMg PSAwLCBCIEFTIHYgJSAzID0gMSwgQyBBUyB2ICUgMyA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICBsaW5lICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYSsgfCBiKykgYykg CisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFla RSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKChBKyB8IEIrKSBDKQorICAgIERFRklORSBBIEFTIHYg JSAzID0gMCwgQiBBUyB2ICUgMyA9IDEsIEMgQVMgdiAlIDMgPSAyCispOycpOworICAgICAgICAg ICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NjAuMDAgbG9vcHM9 MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGErIiB8IGIrIikgYworICAgU3RvcmFnZTogTWVt b3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNCBwZWFrLCAxNjIgdG90 YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgNjEgdG90YWwsIDEgcHJ1bmVk CisgICBORkE6IDIwIG1hdGNoZWQgKGxlbiAyLzIvMi4wKSwgMTkgbWlzbWF0Y2hlZCAobGVuIDIv Mi8yLjApCisgICBORkE6IDAgYWJzb3JiZWQsIDIwIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAg LT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTYwLjAw IGxvb3BzPTEpCisoOSByb3dzKQorCitEUk9QIFZJRVcgcnByX3Y7CistLSBBbHRlcm5hdGlvbiBh dCBlbmQKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSBCIChDIHwgRCkpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0 ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgbGluZSAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiIChjIHwgZCkp IAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIgKEMgfCBEKSkKKyAgICBERUZJTkUgQSBBUyB2 ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMK Kyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwg cm93cz02MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhIGIgKGMgfCBkKQor ICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczog MyBwZWFrLCA3NSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCA2MSB0 b3RhbCwgMzIgcHJ1bmVkCisgICBORkE6IDE0IG1hdGNoZWQgKGxlbiAzLzMvMy4wKSwgMCBtaXNt YXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDE0IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAg LT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTYwLjAw IGxvb3BzPTEpCisoOSByb3dzKQorCitEUk9QIFZJRVcgcnByX3Y7CistLSBOZXN0ZWQgQUxUIGF0 IHN0YXJ0IG9mIGJyYW5jaCBpbnNpZGUgb3V0ZXIgQUxUCistLSBQYXR0ZXJuOiAoQSAoKEIgfCBD KSBEIHwgRSkpIC0gcHJlY2VkaW5nIFZBUiArIGlubmVyIEFMVCBhcyBmaXJzdCBicmFuY2ggZWxl bWVudAorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBICgoQiB8IEMpIEQgfCBFKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA9IDAsIEIgQVMg diAlIDUgPSAxLCBDIEFTIHYgJSA1ID0gMiwgRCBBUyB2ICUgNSA9IDMsIEUgQVMgdiAlIDUgPSA0 CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAg ICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgUEFUVEVSTiAoYSAoKGIgfCBjKSBkIHwgZSkpIAorKDEgcm93KQorCitTRUxF Q1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBD T1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBICgoQiB8IEMpIEQgfCBFKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA9IDAsIEIg QVMgdiAlIDUgPSAxLCBDIEFTIHYgJSA1ID0gMiwgRCBBUyB2ICUgNSA9IDMsIEUgQVMgdiAlIDUg PSA0CispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0 dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSAoKGIgfCBj KSBkIHwgZSkKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5G QSBTdGF0ZXM6IDQgcGVhaywgMjkgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMg cGVhaywgMjEgdG90YWwsIDE3IHBydW5lZAorICAgTkZBOiAwIG1hdGNoZWQsIDMgbWlzbWF0Y2hl ZCAobGVuIDMvMy8zLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMg cyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyg4IHJvd3MpCisKK0RST1AgVklFVyBycHJf djsKKy0tIE5lc3RlZCBBTFQgYXQgZW5kIG9mIGJyYW5jaCBpbnNpZGUgb3V0ZXIgQUxUCistLSBQ YXR0ZXJuOiAoQyAoQSB8IEIpIHwgRCkgLSBpbm5lciBBTFQgaXMgbGFzdCBlbGVtZW50IGluIG91 dGVyIGJyYW5jaAorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChDIChBIHwgQikgfCBEKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBB UyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMworKTsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICBsaW5l ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChj IChhIHwgYikgfCBkKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQyAoQSB8IEIpIHwgRCkKKyAg ICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwg RCBBUyB2ICUgNCA9IDMKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBs YWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnIChhY3R1YWwgcm93cz0yMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiAoYyAoYSB8IGIpIHwgZCkKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBO a0IKKyAgIE5GQSBTdGF0ZXM6IDQgcGVhaywgNDcgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29u dGV4dHM6IDMgcGVhaywgMjEgdG90YWwsIDEwIHBydW5lZAorICAgTkZBOiA1IG1hdGNoZWQgKGxl biAxLzEvMS4wKSwgNSBtaXNtYXRjaGVkIChsZW4gMi8yLzIuMCkKKyAgIC0+ICBGdW5jdGlvbiBT Y2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0yMC4wMCBsb29wcz0xKQorKDgg cm93cykKKworRFJPUCBWSUVXIHJwcl92OworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBHcm91cCBQYXR0ZXJuIFRlc3Rz CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIFNpbXBsZSBncm91cAorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOICgoQSBCKSspCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAg ICAgIGxpbmUgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEg YikrKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoKEEgQikrKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9 IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1 YWwgcm93cz00MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYScgYicpKyIK KyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6 IDMgcGVhaywgNjEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgNDEg dG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEgbWF0Y2hlZCAobGVuIDQwLzQwLzQwLjApLCAwIG1p c21hdGNoZWQKKyAgIE5GQTogMTkgYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgMjAgc2tpcHBlZCAo bGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAo YWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKK0RST1AgVklFVyBycHJfdjsK Ky0tIEdyb3VwIHdpdGggYm91bmRlZCBxdWFudGlmaWVyCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92 IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKChBIEIpezIsNH0pCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFT IHYgJSAyID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CisgICAgICAgICAgbGluZSAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICBQQVRURVJOICgoYSBiKXsyLDR9KSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBs YWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBU SU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQil7Miw0fSkKKyAgICBERUZJTkUg QSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOycpOworICAgICAgICAgICAgICAgICAg ICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkKKyAgIFdp bmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgUGF0dGVybjogKGEgYil7Miw0fQorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVt IFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNCBwZWFrLCA1MSB0b3RhbCwgMCBtZXJnZWQK KyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCA0MSB0b3RhbCwgNSBwcnVuZWQKKyAgIE5GQTogNSBt YXRjaGVkIChsZW4gOC84LzguMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCAz MCBza2lwcGVkIChsZW4gMS8yLzEuNSkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRl X3NlcmllcyBzIChhY3R1YWwgcm93cz00MC4wMCBsb29wcz0xKQorKDkgcm93cykKKworRFJPUCBW SUVXIHJwcl92OworLS0gTmVzdGVkIGdyb3VwcworQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOICgoKEEgQil7Mn0pKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAl IDIgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJO JzsKKyAgICAgICAgICAgbGluZSAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgUEFUVEVSTiAoKChhIGIpezJ9KSspIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoKEEgQil7Mn0pKykKKyAgICBERUZJTkUg QSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOycpOworICAgICAgICAgICAgICAgICAg ICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NjAuMDAgbG9vcHM9MSkKKyAgIFdp bmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgUGF0dGVybjogKChhIGIpezJ9KSsKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11 bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDUgcGVhaywgNzYgdG90YWwsIDAgbWVyZ2Vk CisgICBORkEgQ29udGV4dHM6IDQgcGVhaywgNjEgdG90YWwsIDE1IHBydW5lZAorICAgTkZBOiAx IG1hdGNoZWQgKGxlbiA2MC82MC82MC4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3Ji ZWQsIDQ0IHNraXBwZWQgKGxlbiAxLzQvMi4zKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2Vu ZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTYwLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCitE Uk9QIFZJRVcgcnByX3Y7CistLSBEZWVwIG5lc3RpbmcgKDMrIGxldmVscykKK0NSRUFURSBURU1Q IFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKCgoQSB8IEIpKykr KSspCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAwLCBCIEFTIHYgJSAyID0gMQorKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3Yn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICBs aW5lICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRF Uk4gKCgoKGEgfCBiKSspKykrKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRl cignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKCgoQSB8IEIpKykr KSspCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAwLCBCIEFTIHYgJSAyID0gMQorKTsnKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTQwLjAw IGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIHwgYikrCisgICBTdG9yYWdlOiBN ZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA1IHBlYWssIDE2MiB0 b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCA0MSB0b3RhbCwgMCBwcnVu ZWQKKyAgIE5GQTogMSBtYXRjaGVkIChsZW4gNDAvNDAvNDAuMCksIDAgbWlzbWF0Y2hlZAorICAg TkZBOiAwIGFic29yYmVkLCAzOSBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlv biBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz00MC4wMCBsb29wcz0xKQor KDkgcm93cykKKworRFJPUCBWSUVXIHJwcl92OworLS0gQm91bmRlZCBxdWFudGlmaWVyIG9uIGFs dGVybmF0aW9uCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKChBIHwgQil7MiwzfSBDKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMCwgQiBB UyB2ICUgMyA9IDEsIEMgQVMgdiAlIDMgPSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUg V0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgfCBiKXsyLDN9IGMp IAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSB8IEIpezIsM30gQykKKyAgICBERUZJTkUgQSBB UyB2ICUgMyA9IDAsIEIgQVMgdiAlIDMgPSAxLCBDIEFTIHYgJSAzID0gMgorKTsnKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTYwLjAwIGxv b3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIHwgYil7MiwzfSBjCisgICBTdG9yYWdl OiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA3IHBlYWssIDIw MCB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCA2MSB0b3RhbCwgMiBw cnVuZWQKKyAgIE5GQTogMTkgbWF0Y2hlZCAobGVuIDMvMy8zLjApLCAxIG1pc21hdGNoZWQgKGxl biAyLzIvMi4wKQorICAgTkZBOiAwIGFic29yYmVkLCAzOCBza2lwcGVkIChsZW4gMS8yLzEuNSkK KyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz02 MC4wMCBsb29wcz0xKQorKDkgcm93cykKKworRFJPUCBWSUVXIHJwcl92OworLS0gTmVzdGVkIGdy b3VwcyB3aXRoIHF1YW50aWZpZXJzCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKCgoQSBCKSsgQykqKQorICAgIERFRklORSBBIEFTIHYgJSAz ID0gMCwgQiBBUyB2ICUgMyA9IDEsIEMgQVMgdiAlIDMgPSAyCispOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgbGluZSAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKChhIGIpKyBjKSop IAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKEEgQikrIEMpKikKKyAgICBERUZJTkUgQSBBUyB2 ICUgMyA9IDAsIEIgQVMgdiAlIDMgPSAxLCBDIEFTIHYgJSAzID0gMgorKTsnKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTYwLjAwIGxvb3Bz PTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46ICgoYScgYicpKyIgYykqCisgICBTdG9yYWdlOiBN ZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA3IHBlYWssIDE3OCB0 b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogNCBwZWFrLCA2MSB0b3RhbCwgMjIgcHJ1 bmVkCisgICBORkE6IDEgbWF0Y2hlZCAobGVuIDU3LzU3LzU3LjApLCAwIG1pc21hdGNoZWQKKyAg IE5GQTogMCBhYnNvcmJlZCwgMzcgc2tpcHBlZCAobGVuIDEvMy8yLjApCisgICAtPiAgRnVuY3Rp b24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NjAuMDAgbG9vcHM9MSkK Kyg5IHJvd3MpCisKK0RST1AgVklFVyBycHJfdjsKKy0tIFBhcnRpYWwgbmVzdGVkIHF1YW50aWZp Y2F0aW9uCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKChBIChCIEMpKykqKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMCwgQiBBUyB2ICUg MyA9IDEsIEMgQVMgdiAlIDMgPSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgbGluZSAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgKGIgYykrKSopIAorKDEgcm93KQorCitT RUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZG LCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOICgoQSAoQiBDKSspKikKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMg diAlIDMgPSAxLCBDIEFTIHYgJSAzID0gMgorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTYwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6 IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykK KyAgIFBhdHRlcm46IChhIChiIGMpKykqCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3Rv cmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA1IHBlYWssIDE2MCB0b3RhbCwgMCBtZXJnZWQKKyAg IE5GQSBDb250ZXh0czogNCBwZWFrLCA2MSB0b3RhbCwgMjIgcHJ1bmVkCisgICBORkE6IDEgbWF0 Y2hlZCAobGVuIDU3LzU3LzU3LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwg Mzcgc2tpcHBlZCAobGVuIDEvMy8yLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0 ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NjAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKK0RST1Ag VklFVyBycHJfdjsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gV2luZG93IEZ1bmN0aW9uIENvbWJpbmF0aW9ucworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBjb3VudCgqKSB3aXRoIHBhdHRlcm4KK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0g MAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7Cisg ICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhKyBi KSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAor KTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCBy b3dzPTMwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIiBiCisgICBTdG9y YWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWss IDU1IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDMxIHRvdGFsLCAw IHBydW5lZAorICAgTkZBOiA2IG1hdGNoZWQgKGxlbiA1LzUvNS4wKSwgMCBtaXNtYXRjaGVkCisg ICBORkE6IDE4IGFic29yYmVkIChsZW4gMS8xLzEuMCksIDYgc2tpcHBlZCAobGVuIDEvMS8xLjAp CisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9 MzAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKK0RST1AgVklFVyBycHJfdjsKKy0tIGZpcnN0X3Zh bHVlIHdpdGggcGF0dGVybgorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGZpcnN0 X3ZhbHVlKHYpIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO IChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICBs aW5lICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGErIGIpIAorKDEg cm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGZp cnN0X3ZhbHVlKHYpIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCisp OycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJv d3M9MzAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiIGIKKyAgIFN0b3Jh Z2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywg NTUgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgMzEgdG90YWwsIDAg cHJ1bmVkCisgICBORkE6IDYgbWF0Y2hlZCAobGVuIDUvNS81LjApLCAwIG1pc21hdGNoZWQKKyAg IE5GQTogMTggYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgNiBza2lwcGVkIChsZW4gMS8xLzEuMCkK KyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0z MC4wMCBsb29wcz0xKQorKDkgcm93cykKKworRFJPUCBWSUVXIHJwcl92OworLS0gbGFzdF92YWx1 ZSB3aXRoIHBhdHRlcm4KK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBsYXN0X3Zh bHVlKHYpIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChB KyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOworU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf dicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICBsaW5l ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGErIGIpIAorKDEgcm93 KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGxhc3Rf dmFsdWUodikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7Jyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0z MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIgYgorICAgU3RvcmFnZTog TWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA1NSB0 b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCAzMSB0b3RhbCwgMCBwcnVu ZWQKKyAgIE5GQTogNiBtYXRjaGVkIChsZW4gNS81LzUuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZB OiAxOCBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCA2IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAg LT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTMwLjAw IGxvb3BzPTEpCisoOSByb3dzKQorCitEUk9QIFZJRVcgcnByX3Y7CistLSBNdWx0aXBsZSB3aW5k b3cgZnVuY3Rpb25zCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QKKyAgICBjb3Vu dCgqKSBPVkVSIHcsCisgICAgZmlyc3RfdmFsdWUodikgT1ZFUiB3LAorICAgIGxhc3RfdmFsdWUo dikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIp CisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92Jyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgIGxpbmUgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSsgYikgCisoMSByb3cpCisK K1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBP RkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QKKyAgICBjb3Vu dCgqKSBPVkVSIHcsCisgICAgZmlyc3RfdmFsdWUodikgT1ZFUiB3LAorICAgIGxhc3RfdmFsdWUo dikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIp CisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7Jyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0zMC4wMCBs b29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIgYgorICAgU3RvcmFnZTogTWVtb3J5 ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA1NSB0b3RhbCwg MCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCAzMSB0b3RhbCwgMCBwcnVuZWQKKyAg IE5GQTogNiBtYXRjaGVkIChsZW4gNS81LzUuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAxOCBh YnNvcmJlZCAobGVuIDEvMS8xLjApLCA2IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1 bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTMwLjAwIGxvb3Bz PTEpCisoOSByb3dzKQorCitEUk9QIFZJRVcgcnByX3Y7CistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIERFRklORSBFeHBy ZXNzaW9uIFZhcmlhdGlvbnMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQ29tcGxleCBib29sZWFuIGV4cHJlc3Npb25z CitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgKHYgJSA1IDw+IDApIEFORCAodiAlIDMgPD4gMCksCisgICAgICAgIEIgQVMg KHYgJSA1ID0gMCkgT1IgKHYgJSAzID0gMCkKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgUEFUVEVSTiAoYSsgYikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFp bl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElN SU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgKHYgJSA1IDw+IDApIEFORCAodiAlIDMgPD4gMCksCisgICAgICAgIEIgQVMgKHYgJSA1 ID0gMCkgT1IgKHYgJSAzID0gMCkKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJw cl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgV2luZG93QWdnIChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFT IChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQ YXR0ZXJuOiBhKyIgYgorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgor ICAgTkZBIFN0YXRlczogMyBwZWFrLCA3OCB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0 czogMiBwZWFrLCA1MSB0b3RhbCwgNiBwcnVuZWQKKyAgIE5GQTogMTcgbWF0Y2hlZCAobGVuIDIv My8yLjYpLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMTAgYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwg MTcgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0 ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKK0RST1Ag VklFVyBycHJfdjsKKy0tIFVzaW5nIFBSRVYgZnVuY3Rpb24KK0NSRUFURSBURU1QIFZJRVcgcnBy X3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoUyBVKyBEKykKKyAgICBERUZJTkUKKyAgICAgICAgUyBBUyBUUlVFLAor ICAgICAgICBVIEFTIHYgPiBQUkVWKHYpLAorICAgICAgICBEIEFTIHYgPCBQUkVWKHYpCispOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAg IGxpbmUgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKHMgdSsg ZCspIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChTIFUrIEQrKQorICAgIERFRklORQorICAgICAgICBTIEFTIFRSVUUsCisgICAgICAg IFUgQVMgdiA+IFBSRVYodiksCisgICAgICAgIEQgQVMgdiA8IFBSRVYodikKKyk7Jyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0zMC4wMCBs b29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBzIHUrIGQrCisgICBTdG9yYWdlOiBNZW1v cnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA2MCBwZWFrLCA0NjYgdG90 YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMxIHBlYWssIDMxIHRvdGFsLCAxIHBydW5l ZAorICAgTkZBOiAwIG1hdGNoZWQsIDI5IG1pc21hdGNoZWQgKGxlbiAyLzMwLzE2LjApCisgICAt PiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MzAuMDAg bG9vcHM9MSkKKyg4IHJvd3MpCisKK0RST1AgVklFVyBycHJfdjsKKy0tIFVzaW5nIE5VTEwgY29t cGFyaXNvbnMKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gKAorICAgIFNFTEVDVCBDQVNFIFdIRU4gdiAlIDUgPSAwIFRIRU4gTlVMTCBFTFNF IHYgRU5EIEFTIHYKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgdgorKSB0CitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QSsgQikKKyAgICBERUZJTkUgQSBBUyB2IElTIE5PVCBOVUxMLCBCIEFTIHYgSVMgTlVMTAorKTsK K1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAg bGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhKyBiKSAKKygx IHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gKAorICAgIFNFTEVDVCBDQVNFIFdIRU4gdiAlIDUgPSAwIFRI RU4gTlVMTCBFTFNFIHYgRU5EIEFTIHYKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkg dgorKSB0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2IElTIE5PVCBOVUxMLCBCIEFTIHYg SVMgTlVMTAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmls dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cg KGFjdHVhbCByb3dzPTMwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIiBi CisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVz OiAzIHBlYWssIDU1IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDMx IHRvdGFsLCAwIHBydW5lZAorICAgTkZBOiA2IG1hdGNoZWQgKGxlbiA1LzUvNS4wKSwgMCBtaXNt YXRjaGVkCisgICBORkE6IDE4IGFic29yYmVkIChsZW4gMS8xLzEuMCksIDYgc2tpcHBlZCAobGVu IDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgdiAoYWN0 dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKK0RST1AgVklFVyBycHJfdjsKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gTGFyZ2UgU2NhbGUgU3RhdGlzdGljcyBWZXJpZmljYXRpb24KKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g NTAwIHJvd3MgLSB2ZXJpZnkgc3RhdGlzdGljcyBzY2FsZSBjb3JyZWN0bHkKK0NSRUFURSBURU1Q IFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAg PCA3LCBCIEFTIHYgJSAxMCA9IDcsIEMgQVMgdiAlIDEwID0gOAorKTsKK1NFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicp KSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgIGxpbmUgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSsgYiBjKSAKKygxIHJvdykKKwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIgQykK KyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPCA3LCBCIEFTIHYgJSAxMCA9IDcsIEMgQVMgdiAlIDEw ID0gOAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVy ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAo YWN0dWFsIHJvd3M9NTAwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIiBi IGMKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0 ZXM6IDMgcGVhaywgODUxIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWss IDUwMSB0b3RhbCwgMTAxIHBydW5lZAorICAgTkZBOiA1MCBtYXRjaGVkIChsZW4gOC85LzkuMCks IDAgbWlzbWF0Y2hlZAorICAgTkZBOiAyOTkgYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgNTAgc2tp cHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJp ZXMgcyAoYWN0dWFsIHJvd3M9NTAwLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCitEUk9QIFZJRVcg cnByX3Y7CistLSBIaWdoIG1hdGNoIGNvdW50IHNjZW5hcmlvCitDUkVBVEUgVEVNUCBWSUVXIHJw cl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1 MDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYg JSAyID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CisgICAgICAgbGluZSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAo YSBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAw CispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1 YWwgcm93cz01MDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSBiCisgICBT dG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAyIHBl YWssIDUwMSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCA1MDEgdG90 YWwsIDAgcHJ1bmVkCisgICBORkE6IDI1MCBtYXRjaGVkIChsZW4gMi8yLzIuMCksIDAgbWlzbWF0 Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCAyNTAgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAt PiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAwLjAw IGxvb3BzPTEpCisoOSByb3dzKQorCitEUk9QIFZJRVcgcnByX3Y7CistLSBIaWdoIHNraXAgY291 bnQgc2NlbmFyaW8KK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDIEQg RSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2ICUgMTAwID0gMSwKKyAgICAgICAgQiBBUyB2 ICUgMTAwID0gMiwKKyAgICAgICAgQyBBUyB2ICUgMTAwID0gMywKKyAgICAgICAgRCBBUyB2ICUg MTAwID0gNCwKKyAgICAgICAgRSBBUyB2ICUgMTAwID0gNQorKTsKK1NFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgbGluZSAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiIGMgZCBlKSAKKygxIHJv dykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEg QiBDIEQgRSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2ICUgMTAwID0gMSwKKyAgICAgICAg QiBBUyB2ICUgMTAwID0gMiwKKyAgICAgICAgQyBBUyB2ICUgMTAwID0gMywKKyAgICAgICAgRCBB UyB2ICUgMTAwID0gNCwKKyAgICAgICAgRSBBUyB2ICUgMTAwID0gNQorKTsnKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NTAwLjAwIGxv b3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEgYiBjIGQgZQorICAgU3RvcmFnZTogTWVt b3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMiBwZWFrLCA1MDEgdG90 YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgNTAxIHRvdGFsLCA0OTAgcHJ1 bmVkCisgICBORkE6IDUgbWF0Y2hlZCAobGVuIDUvNS81LjApLCAwIG1pc21hdGNoZWQKKyAgIE5G QTogMCBhYnNvcmJlZCwgNSBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBT Y2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz01MDAuMDAgbG9vcHM9MSkKKyg5 IHJvd3MpCisKK0RST1AgVklFVyBycHJfdjsKKy0tIENsZWFudXAKK0RST1AgVEFCTEUgbmZhX3Rl c3Q7CitEUk9QIFRBQkxFIG5mYV9jb21wbGV4OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ycHJfbmZhLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX25m YS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ2YTQ2M2MyNTk3 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfbmZhLm91 dApAQCAtMCwwICsxLDI1MjQgQEAKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUlBSIE5GQSBUZXN0cworLS0gVGVzdHMg Zm9yIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIE5GQSBSdW50aW1lIEV4ZWN1dGlvbgorLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLQorLS0gVGhpcyB0ZXN0IHN1aXRlIHZhbGlkYXRlcyB0aGUgTkZBIChOb24tZGV0ZXJtaW5p c3RpYyBGaW5pdGUKKy0tIEF1dG9tYXRvbikgcnVudGltZSBleGVjdXRpb24gZW5naW5lIGluIG5v ZGVXaW5kb3dBZ2cuYywKKy0tIGZvY3VzaW5nIG9uIHVwZGF0ZV9yZWR1Y2VkX2ZyYW1lIGFuZCBy ZWxhdGVkIGZ1bmN0aW9ucy4KKy0tCistLSBUZXN0IFN0cmF0ZWd5OgorLS0gICBEaWFnb25hbCBw YXR0ZXJuIHN0eWxlIHVzaW5nIEFSUkFZIGZsYWdzIHRvIGV4cGxpY2l0bHkKKy0tICAgY29udHJv bCB3aGljaCBwYXR0ZXJuIHZhcmlhYmxlcyBtYXRjaCBhdCBlYWNoIHJvdy4KKy0tCistLSBUZXN0 IENvdmVyYWdlOgorLS0gICBCYXNpYyBORkEgRmxvdyAobWF0Y2gtPmFic29yYi0+YWR2YW5jZSkK Ky0tICAgQWJzb3JwdGlvbiBPcHRpbWl6YXRpb24KKy0tICAgQ29udGV4dCBMaWZlY3ljbGUgTWFu YWdlbWVudAorLS0gICBBZHZhbmNlIFBoYXNlIChFcHNpbG9uIFRyYW5zaXRpb25zKQorLS0gICBN YXRjaCBQaGFzZSAoVmFyaWFibGUgTWF0Y2hpbmcpCistLSAgIEZyYW1lIEJvdW5kYXJ5IEhhbmRs aW5nCistLSAgIFN0YXRlIE1hbmFnZW1lbnQgKERlZHVwbGljYXRpb24pCistLSAgIFN0YXRpc3Rp Y3MgYW5kIERpYWdub3N0aWNzCistLSAgIFF1YW50aWZpZXIgUnVudGltZSBCZWhhdmlvcgorLS0g ICBQYXRob2xvZ2ljYWwgUGF0dGVybiBQcm90ZWN0aW9uCistLSAgIEFsdGVybmF0aW9uIFJ1bnRp bWUgQmVoYXZpb3IKKy0tICAgRGVlcCBOZXN0ZWQgR3JvdXBzCistLSAgIFNLSVAgT3B0aW9ucyAo UnVudGltZSkKKy0tICAgSU5JVElBTCBNb2RlIChSdW50aW1lKQorLS0gICBGcmFtZSBCb3VuZGFy eSBWYXJpYXRpb25zCistLSAgIFNwZWNpYWwgUGFydGl0aW9uIENhc2VzCistLSAgIERFRklORSBT cGVjaWFsIENhc2VzCistLSAgIEFic29ycHRpb24gRHluYW1pYyBGbGFncworLS0gICBGSVhNRSBJ c3N1ZXMgKEtub3duIExpbWl0YXRpb25zKQorLS0KKy0tIFJlc3BvbnNpYmlsaXR5OgorLS0gICAt IE5GQSBydW50aW1lIGV4ZWN1dGlvbiBwYXRocworLS0gICAtIENvbnRleHQvU3RhdGUgbGlmZWN5 Y2xlIG1hbmFnZW1lbnQKKy0tICAgLSBSdW50aW1lIGJvdW5kYXJ5IGNvbmRpdGlvbnMgYW5kIHBy b3RlY3Rpb25zCistLQorLS0gTk9UIHRlc3RlZCBoZXJlIChjb3ZlcmVkIGluIG90aGVyIGZpbGVz KToKKy0tICAgLSBQYXR0ZXJuIHBhcnNpbmcvb3B0aW1pemF0aW9uIChycHJfYmFzZS5zcWwpCist LSAgIC0gRVhQTEFJTiBvdXRwdXQgKHJwcl9leHBsYWluLnNxbCkKKy0tICAgLSBQUkVWL05FWFQg c2VtYW50aWNzIChycHIuc3FsKQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEJhc2ljIE5GQSBGbG93Cist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIFNpbXBsZSBzZXF1ZW50aWFsIHBhdHRlcm4KK1dJVEggdGVzdF9zZXF1ZW50aWFs IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10p LAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQyddKSwKKyAg ICAgICAgKDQsIEFSUkFZWydEJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkgIC0tIE5vIG1h dGNoCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAg Zmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfc2VxdWVudGlhbAorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAg IFBBVFRFUk4gKEEgQiBDIEQpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9 IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZs YWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNAorICAy IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0N9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorICA0IHwge0R9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICA1IHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gUXVh bnRpZmllZCBwYXR0ZXJuIChBKyBCKyBDKykKK1dJVEggdGVzdF9xdWFudGlmaWVkIEFTICgKKyAg ICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAg ICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQs IEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0InXSksCisgICAgICAgICg2LCBBUlJB WVsnQyddKSwKKyAgICAgICAgKDcsIEFSUkFZWydDJ10pLAorICAgICAgICAoOCwgQVJSQVlbJ18n XSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9xdWFudGlmaWVkCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAg UEFUVEVSTiAoQSsgQisgQyspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9 IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAor LS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAg ICAgICAgIDEgfCAgICAgICAgIDcKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAg IDcKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDcKKyAgNCB8IHtCfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgNiB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtDfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOCB8IHtffSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyg4IHJvd3MpCisKKy0tIE9wdGlvbmFsIHBhdHRlcm4gKEEgQj8gQykKK1dJVEgg dGVzdF9vcHRpb25hbCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydDJ10pLCAgLS0gQiBza2lwcGVkCisg ICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAg ICAoNSwgQVJSQVlbJ0MnXSksICAtLSBCIG1hdGNoZWQKKyAgICAgICAgKDYsIEFSUkFZWydfJ10p CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb3B0aW9uYWwKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOIChBIEI/IEMpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShm bGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAg IDEgfCAgICAgICAgIDIKKyAgMiB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg MyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDUKKyAgNCB8IHtCfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgNiB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg2IHJvd3MpCisKKy0tIEFs dGVybmF0aW9uIHBhdHRlcm4gKEEgKEJ8QykgRCkKK1dJVEggdGVzdF9hbHRlcm5hdGlvbiBBUyAo CisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDIsIEFSUkFZWydCJ10pLCAgLS0gRmlyc3QgYnJhbmNoCisgICAgICAgICgzLCBBUlJB WVsnRCddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0Mn XSksICAtLSBTZWNvbmQgYnJhbmNoCisgICAgICAgICg2LCBBUlJBWVsnRCddKSwKKyAgICAgICAg KDcsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAg ICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWx0ZXJuYXRp b24KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8g TkVYVCBST1cKKyAgICBQQVRURVJOIChBIChCIHwgQykgRCkKKyAgICBERUZJTkUKKyAgICAgICAg QSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisg ICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxh Z3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAx IHwgICAgICAgICAzCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMg fCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7QX0gICB8ICAgICAgICAg ICA0IHwgICAgICAgICA2CisgIDUgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDYgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDcgfCB7X30gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisoNyByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEFic29ycHRpb24gT3B0 aW1pemF0aW9uCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tIEFic29yYmFibGUgcGF0dGVybiAoQSspCitXSVRIIHRlc3Rf YWJzb3JiYWJsZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlb J0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydfJ10p CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiYWJsZQorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKEErKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7 CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAg ICAgIDQKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQKKyAgMyB8IHtBfSAg IHwgICAgICAgICAgIDMgfCAgICAgICAgIDQKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgIDQgfCAg ICAgICAgIDQKKyAgNSB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3Mp CisKKy0tIE1peGVkIGFic29yYmFibGUvbm9uLWFic29yYmFibGUgKChBKykgfCBCKQorV0lUSCB0 ZXN0X21peGVkX2Fic29ycHRpb24gQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBB UlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAor ICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X21peGVkX2Fic29ycHRp b24KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8g TkVYVCBST1cKKyAgICBQQVRURVJOICgoQSspIHwgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBB UyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7Cisg aWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAg IDMKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDMKKyAgMyB8IHtBfSAgIHwg ICAgICAgICAgIDMgfCAgICAgICAgIDMKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgIDQgfCAgICAg ICAgIDQKKyAgNSB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisK Ky0tIFN0YXRlIGNvdmVyYWdlIChzYW1lIGVsZW1JZHgsIGRpZmZlcmVudCBjb3VudCkKK1dJVEgg dGVzdF9zdGF0ZV9jb3ZlcmFnZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAg ICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAo MywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFS UkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisg ICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfc3RhdGVfY292ZXJhZ2UK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVY VCBST1cKKyAgICBQQVRURVJOIChBezIsfSBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdB JyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8 IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNAor ICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgNAorICAzIHwge0F9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorICA1IHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBDb250ZXh0IExpZmVjeWNsZQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBNdWx0aXBsZSBvdmVybGFwcGlu ZyBjb250ZXh0cyAoU0tJUCBUTyBORVhUIFJPVykKK1dJVEggdGVzdF9vdmVybGFwcGluZ19jb250 ZXh0cyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSks CisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydfJ10pCisgICAg KSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb3ZlcmxhcHBpbmdfY29udGV4dHMKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAg ICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFn cyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0 Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNAorICAyIHwge0F9ICAg fCAgICAgICAgICAgMiB8ICAgICAgICAgNAorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAg ICAgICAgNAorICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwge199 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gRmFpbGVkIGNvbnRl eHQgY2xlYW51cCAoZWFybHkgZmFpbHVyZSkKK1dJVEggdGVzdF9jb250ZXh0X2NsZWFudXAgQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ18nXSksICAt LSBQcnVuZWQgYXQgZmlyc3Qgcm93CisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDMsIEFSUkFZWydfJ10pLCAgLS0gTWlzbWF0Y2hlZCBhZnRlciByb3cgMgorICAgICAgICAoNCwg QVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2Vu ZAorRlJPTSB0ZXN0X2NvbnRleHRfY2xlYW51cAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdC JyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5k IAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtffSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgMyB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtBfSAg IHwgICAgICAgICAgIDQgfCAgICAgICAgIDUKKyAgNSB8IHtCfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyg1IHJvd3MpCisKKy0tIFBhcnRpdGlvbiBlbmQgKGluY29tcGxldGUgY29udGV4 dHMpCitXSVRIIHRlc3RfcGFydGl0aW9uX2VuZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAor ICAgICAgICAoMywgQVJSQVlbJ0EnXSkKKyAgICAgICAgLS0gUGF0dGVybiByZXF1aXJlcyBCLCBi dXQgcGFydGl0aW9uIGVuZHMKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBm bGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAg ICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9wYXJ0aXRp b25fZW5kCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBB UyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7Cisg aWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKygzIHJvd3MpCisKKy0tIENvbXBsZXRlZCBjb250ZXh0 IGVuY291bnRlcmVkIGR1cmluZyBwcm9jZXNzaW5nCistLSBQYXR0ZXJuIChBIHwgQiBDIEQpOiBD dHgxIHRha2VzIGxvbmcgQi0+Qy0+RCBwYXRoLCB3aGlsZSBDdHgyIHRha2VzCistLSBzaG9ydCBB IHBhdGggYW5kIGNvbXBsZXRlcyBmaXJzdC4gTmV4dCByb3cgc2VlcyBDdHgyCistLSB3aXRoIHN0 YXRlcz1OVUxMIGFuZCBza2lwcyBpdC4KK1dJVEggdGVzdF9jb21wbGV0ZWRfY3R4IEFTICgKKyAg ICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydCJywgJ18nXSksCisg ICAgICAgICgyLCBBUlJBWVsnQycsICdBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0QnLCAnXydd KSwKKyAgICAgICAgKDQsIEFSUkFZWydfJywgJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQor KQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZS T00gdGVzdF9jb21wbGV0ZWRfY3R4CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSB8IEIgQyBEKQorICAg IERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBE IEFTICdEJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0 Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtC LF99IHwgICAgICAgICAgIDEgfCAgICAgICAgIDMKKyAgMiB8IHtDLEF9IHwgICAgICAgICAgIDIg fCAgICAgICAgIDIKKyAgMyB8IHtELF99IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8 IHtfLF99IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g QWR2YW5jZSBQaGFzZSAoRXBzaWxvbiBUcmFuc2l0aW9ucykKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gTmVzdGVkIGdy b3VwcyAoKEEgQikrKQorV0lUSCB0ZXN0X25lc3RlZF9ncm91cHMgQVMgKAorICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJB WVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0In XSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10pLAor ICAgICAgICAoNywgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNU IGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0 LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9u ZXN0ZWRfZ3JvdXBzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEgQikrKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8 ICAgICAgICAgNgorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwg e0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgNgorICA0IHwge0J9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICA1IHwge0F9ICAgfCAgICAgICAgICAgNSB8ICAgICAgICAgNgorICA2 IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA3IHwge199ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorKDcgcm93cykKKworLS0gTXVsdGlwbGUgYWx0ZXJuYXRpb24gYnJh bmNoZXMgKEEgKEJ8Q3xEKSBFKQorV0lUSCB0ZXN0X211bHRpX2FsdCBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFS UkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0UnXSksCisgICAgICAgICg0LCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydDJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0UnXSks CisgICAgICAgICg3LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDgsIEFSUkFZWydEJ10pLAorICAg ICAgICAoOSwgQVJSQVlbJ0UnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9tdWx0 aV9hbHQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIChCIHwgQyB8IEQpIEUpCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxh Z3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgRSBBUyAnRScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxh Z3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAzCisgIDIg fCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7RX0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDQgfCB7QX0gICB8ICAgICAgICAgICA0IHwgICAgICAgICA2Cisg IDUgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDYgfCB7RX0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDcgfCB7QX0gICB8ICAgICAgICAgICA3IHwgICAgICAgICA5 CisgIDggfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDkgfCB7RX0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisoOSByb3dzKQorCistLSBPcHRpb25hbCBWQVIgYXQgc3Rh cnQgKEE/IEIgQykKK1dJVEggdGVzdF9vcHRpb25hbF92YXIgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InXSksICAtLSBBIHNraXBwZWQKKyAgICAg ICAgKDIsIEFSUkFZWydDJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksICAtLSBBIG1hdGNo ZWQKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0MnXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9vcHRpb25hbF92YXIKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOIChBPyBCIEMpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShm bGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtCfSAgIHwgICAgICAgICAg IDEgfCAgICAgICAgIDIKKyAgMiB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg MyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDUKKyAgNCB8IHtCfSAgIHwgICAgICAg ICAgIDQgfCAgICAgICAgIDUKKyAgNSB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK Kyg1IHJvd3MpCisKKy0tIE5lc3RlZCBhbHRlcm5hdGlvbiAoKEF8QikgKEN8RCkpCitXSVRIIHRl c3RfbmVzdGVkX2FsdCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydDJ10pLCAgLS0gQSBDCisgICAgICAg ICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydEJ10pLCAgLS0gQSBECisgICAg ICAgICg1LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDYsIEFSUkFZWydDJ10pLCAgLS0gQiBDCisg ICAgICAgICg3LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDgsIEFSUkFZWydEJ10pICAgLS0gQiBE CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbmVzdGVkX2FsdAorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKChBIHwgQikgKEMgfCBEKSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBB TlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMg J0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCispOworIGlk IHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAy CisgIDIgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAg ICAgICAgICAzIHwgICAgICAgICA0CisgIDQgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDUgfCB7Qn0gICB8ICAgICAgICAgICA1IHwgICAgICAgICA2CisgIDYgfCB7Q30gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDcgfCB7Qn0gICB8ICAgICAgICAgICA3IHwgICAg ICAgICA4CisgIDggfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoOCByb3dzKQor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIE1hdGNoIFBoYXNlCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFNpbXBsZSBWQVIgd2l0aCBFTkQg bmV4dCAoQSBCIEMgYWxsIG1pbj1tYXg9MSkKK1dJVEggdGVzdF9zaW1wbGVfdmFyIEFTICgKKyAg ICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAg ICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDQs IEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3Ms CisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBs YXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfc2ltcGxlX3Zhcgor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhU IFJPVworICAgIFBBVFRFUk4gKEEgQiBDKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9 IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBB UyAnQycgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNo X2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0g ICB8ICAgICAgICAgICAxIHwgICAgICAgICAzCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgIDMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7 X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNCByb3dzKQorCistLSBWQVIgbWF4IGV4 Y2VlZGVkIChBezIsM30pCitXSVRIIHRlc3RfbWF4X2V4Y2VlZGVkIEFTICgKKyAgICBTRUxFQ1Qg KiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJS QVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwgIC0tIE1heCA9IDMKKyAgICAgICAg KDQsIEFSUkFZWydBJ10pLCAgLS0gRXhjZWVkcyBtYXgsIHN0YXRlIHJlbW92ZWQKKyAgICAgICAg KDUsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAg ICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbWF4X2V4Y2Vl ZGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRP IE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQXsyLDN9IEIpCisgICAgREVGSU5FCisgICAgICAgIEEg QVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOwor IGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAgICAgICA1CisgIDMgfCB7QX0gICB8 ICAgICAgICAgICAzIHwgICAgICAgICA1CisgIDQgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDUgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQor CistLSBOb24tbWF0Y2hpbmcgVkFSIChERUZJTkUgZmFsc2UpCitXSVRIIHRlc3Rfbm9uX21hdGNo aW5nIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydB J10pLAorICAgICAgICAoMiwgQVJSQVlbJ18nXSksICAtLSBCIG5vdCBtYXRjaGVkIChERUZJTkUg ZmFsc2UpCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10p LCAgLS0gQiBtYXRjaGVkCisgICAgICAgICg1LCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwg ZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X2VuZAorRlJPTSB0ZXN0X25vbl9tYXRjaGluZworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDKQor ICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMg J0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworIGlk IHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgIDIgfCB7X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAg ICAgICAgICAzIHwgICAgICAgICA1CisgIDQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDUgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIEZyYW1lIEJvdW5kYXJ5IEhhbmRsaW5nCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIExpbWl0ZWQgZnJh bWUgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMyBGT0xMT1dJTkcpCitXSVRIIHRlc3Rf bGltaXRlZF9mcmFtZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJS QVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwgIC0tIFdpdGhpbiAzIEZPTExPV0lO RworICAgICAgICAoNSwgQVJSQVlbJ0InXSksICAtLSBCZXlvbmQgMyBGT0xMT1dJTkcgZnJvbSBy b3cgMQorICAgICAgICAoNiwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQor U0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00g dGVzdF9saW1pdGVkX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDMgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCisp OworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAg ICAgICA0CisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAgICAgICA0CisgIDMgfCB7QX0g ICB8ICAgICAgICAgICAzIHwgICAgICAgICA0CisgIDQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgIDUgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDYgfCB7 X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNiByb3dzKQorCistLSBVbmJvdW5kZWQg ZnJhbWUgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykK K1dJVEggdGVzdF91bmJvdW5kZWRfZnJhbWUgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAg ICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10pICAtLSBGYXIgZnJvbSBz dGFydCwgYnV0IHVuYm91bmRlZAorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisg ICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3VuYm91 bmRlZF9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCisp OworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAg ICAgICA2CisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAgICAgICA2CisgIDMgfCB7QX0g ICB8ICAgICAgICAgICAzIHwgICAgICAgICA2CisgIDQgfCB7QX0gICB8ICAgICAgICAgICA0IHwg ICAgICAgICA2CisgIDUgfCB7QX0gICB8ICAgICAgICAgICA1IHwgICAgICAgICA2CisgIDYgfCB7 Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNiByb3dzKQorCistLSBNYXRjaCBleGNl ZWRzIGZyYW1lIGJvdW5kYXJ5CitXSVRIIHRlc3RfZnJhbWVfZXhjZWVkZWQgQVMgKAorICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgy LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pCisgICAgICAgIC0tIEZyYW1l IGVuZHMgYXQgcm93IDMgKDIgRk9MTE9XSU5HKSwgQiBuZXZlciBhcHBlYXJzCisgICAgKSBBUyB0 KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfZnJhbWVfZXhjZWVkZWQKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMiBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdC JyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5k IAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKygzIHJvd3MpCisK Ky0tIEZyYW1lIGJvdW5kYXJ5IGZvcmNlZCBtaXNtYXRjaAorLS0gTGltaXRlZCBmcmFtZSB3aXRo IGVub3VnaCByb3dzIHNvIHRoYXQgYSBjb250ZXh0J3MgZnJhbWUgYm91bmRhcnkKKy0tIGlzIGV4 Y2VlZGVkIHdoaWxlIHN0aWxsIHByb2Nlc3NpbmcuCitXSVRIIHRlc3RfZnJhbWVfYm91bmRhcnkg QVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSks CisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAg ICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDYsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAg ICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfZnJhbWVfYm91 bmRhcnkKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgMiBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQg Uk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBB TlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFn cyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMiB8 IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgIDQgfCAgICAgICAgIDYKKyAg NSB8IHtBfSAgIHwgICAgICAgICAgIDUgfCAgICAgICAgIDYKKyAgNiB8IHtCfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyg2IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gU3RhdGUgTWFuYWdlbWVu dAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBEdXBsaWNhdGUgc3RhdGUgY3JlYXRpb24KK1dJVEggdGVzdF9kdXBsaWNh dGVfc3RhdGVzIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFS UkFZWydBJywgJ0InXSksICAtLSBCb3RoIEEgYW5kIEIgbWF0Y2ggKGNyZWF0ZXMgZHVwbGljYXRl IHN0YXRlcyB2aWEgZGlmZmVyZW50IHBhdGhzKQorICAgICAgICAoMiwgQVJSQVlbJ0MnLCAnXydd KSwKKyAgICAgICAgKDMsIEFSUkFZWydEJywgJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQor KQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZS T00gdGVzdF9kdXBsaWNhdGVfc3RhdGVzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSBDIEQp CisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBB UyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAg ICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQg fCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAx IHwge0EsQn0gfCAgICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwge0MsX30gfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorICAzIHwge0QsX30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAor KDMgcm93cykKKworLS0gTGFyZ2UgcGF0dGVybiAoc3RyZXNzIGZyZWUgbGlzdCkKK1dJVEggdGVz dF9sYXJnZV9wYXR0ZXJuIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAg KDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBB UlJBWVsnQyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydEJ10pLAorICAgICAgICAoNSwgQVJSQVlb J0UnXSksCisgICAgICAgICg2LCBBUlJBWVsnRiddKSwKKyAgICAgICAgKDcsIEFSUkFZWydHJ10p LAorICAgICAgICAoOCwgQVJSQVlbJ0gnXSksCisgICAgICAgICg5LCBBUlJBWVsnSSddKSwKKyAg ICAgICAgKDEwLCBBUlJBWVsnSiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2xh cmdlX3BhdHRlcm4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIgQyBEIEUgRiBHIEggSSBKKQorICAg IERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBE IEFTICdEJyA9IEFOWShmbGFncyksCisgICAgICAgIEUgQVMgJ0UnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgRiBBUyAnRicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBHIEFTICdHJyA9IEFOWShmbGFn cyksCisgICAgICAgIEggQVMgJ0gnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgSSBBUyAnSScgPSBB TlkoZmxhZ3MpLAorICAgICAgICBKIEFTICdKJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFn cyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgMTAKKyAgMiB8 IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtDfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgNCB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg NSB8IHtFfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtGfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtHfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgOCB8IHtIfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOSB8IHtJfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAxMCB8IHtKfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKygxMCByb3dzKQorCistLSBSZWR1Y2VkIGZyYW1lIG1hcCByZWFsbG9jYXRpb24gKD4gMTAy NCByb3dzKQorV0lUSCB0ZXN0X21hcF9yZWFsbG9jIEFTICgKKyAgICBTRUxFQ1QgaWQsIENBU0Ug V0hFTiBpZCAlIDIgPSAxIFRIRU4gQVJSQVlbJ0EnXSBFTFNFIEFSUkFZWydCJ10gRU5EIEFTIGZs YWdzCisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTEwMCkgQVMgaWQKKykKK1NFTEVDVCBj b3VudCgqKSwgbWluKG1hdGNoX3N0YXJ0KSwgbWF4KG1hdGNoX2VuZCkKK0ZST00gKAorICAgIFNF TEVDVCBpZCwgZmxhZ3MsCisgICAgICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfc3RhcnQsCisgICAgICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQK KyAgICBGUk9NIHRlc3RfbWFwX3JlYWxsb2MKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9S REVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgICAg IFBBVFRFUk4gKEEgQikKKyAgICAgICAgREVGSU5FCisgICAgICAgICAgICBBIEFTICdBJyA9IEFO WShmbGFncyksCisgICAgICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyAgICApCispIHN1 YjsKKyBjb3VudCB8IG1pbiB8IG1heCAgCistLS0tLS0tKy0tLS0tKy0tLS0tLQorICAxMTAwIHwg ICAxIHwgMTEwMAorKDEgcm93KQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFN0YXRpc3RpY3MgYW5kIERpYWdub3N0 aWNzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tIE1hdGNoZWQgY29udGV4dHMKK1dJVEggdGVzdF9tYXRjaGVkIEFTICgK KyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAg ICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDQsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAg ICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbWF0Y2hlZAor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhU IFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBB TlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFn cyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIKKyAgMiB8 IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAg IDMgfCAgICAgICAgIDQKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0 IHJvd3MpCisKKy0tIFBydW5lZCBjb250ZXh0cyAoZmFpbGVkIGF0IGZpcnN0IHJvdykKK1dJVEgg dGVzdF9wcnVuZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwg QVJSQVlbJ18nXSksICAtLSBQcnVuZWQKKyAgICAgICAgKDIsIEFSUkFZWydfJ10pLCAgLS0gUHJ1 bmVkCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pCisg ICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcHJ1bmVkCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAo QSBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAg IEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBt YXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwg e199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAyIHwge199ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgNAorICA0 IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDQgcm93cykKKworLS0gTWlzbWF0 Y2hlZCBjb250ZXh0cyAoZmFpbGVkIGFmdGVyIG11bHRpcGxlIHJvd3MpCitXSVRIIHRlc3RfbWlz bWF0Y2hlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ18n XSksICAtLSBNaXNtYXRjaGVkIGFmdGVyIDIgcm93cworICAgICAgICAoNCwgQVJSQVlbJ0EnXSks CisgICAgICAgICg1LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxF Q1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3Rh cnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0 X21pc21hdGNoZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAgICAg ICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQor KTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorICAyIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge199 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0F9ICAgfCAgICAgICAgICAgNCB8 ICAgICAgICAgNQorICA1IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93 cykKKworLS0gQWJzb3JiZWQgY29udGV4dHMKK1dJVEggdGVzdF9hYnNvcmJlZCBBUyAoCisgICAg U0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFn cykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5k CitGUk9NIHRlc3RfYWJzb3JiZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9z dGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA0CisgIDIgfCB7QX0gICB8ICAg ICAgICAgICAyIHwgICAgICAgICA0CisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAg ICA0CisgIDQgfCB7QX0gICB8ICAgICAgICAgICA0IHwgICAgICAgICA0CisgIDUgfCB7X30gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCistLSBTa2lwcGVkIGNvbnRleHRz IChTS0lQIFRPIE5FWFQgUk9XKQorV0lUSCB0ZXN0X3NraXBwZWQgQVMgKAorICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0In XSkgIC0tIENvbXBsZXRlcyBtYXRjaCBzdGFydGluZyBhdCByb3cgMQorICAgICkgQVMgdChpZCwg ZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X2VuZAorRlJPTSB0ZXN0X3NraXBwZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERF RklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0g QU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCist LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAg ICAgICAgMSB8ICAgICAgICAgNAorICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAg NAorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgNAorICA0IHwge0J9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorKDQgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBRdWFudGlmaWVy IFJ1bnRpbWUgQmVoYXZpb3IKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gTGFyZ2UgY291bnQgaGFuZGxpbmcgKEF7MTAw fSkKK1dJVEggdGVzdF9sYXJnZV9jb3VudCBBUyAoCisgICAgU0VMRUNUIGkgQVMgaWQsIEFSUkFZ WydBJ10gQVMgZmxhZ3MKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDUpIGkKKykKK1NF TEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9z dGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRl c3RfbGFyZ2VfY291bnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBezEwMH0pCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCAgfCBmbGFncyB8IG1hdGNoX3N0 YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgIDEwMAorICAgMiB8IHtBfSAgIHwg ICAgICAgICAgIDIgfCAgICAgICAxMDEKKyAgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAg ICAgMTAyCisgICA0IHwge0F9ICAgfCAgICAgICAgICAgNCB8ICAgICAgIDEwMworICAgNSB8IHtB fSAgIHwgICAgICAgICAgIDUgfCAgICAgICAxMDQKKyAgIDYgfCB7QX0gICB8ICAgICAgICAgICA2 IHwgICAgICAgMTA1CisgICA3IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAg OCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgIDkgfCB7QX0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDEwIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorICAxMSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMTIgfCB7QX0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDEzIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorICAxNCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMTUgfCB7 QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDE2IHwge0F9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICAxNyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg MTggfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDE5IHwge0F9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorICAyMCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgMjEgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDIyIHwge0F9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAyMyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgMjQgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDI1IHwg e0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAyNiB8IHtBfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgMjcgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDI4IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAyOSB8IHtBfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgMzAgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDMxIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzMiB8IHtBfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMzMgfCB7QX0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgIDM0IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzNSB8 IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMzYgfCB7QX0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDM3IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICAzOCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMzkgfCB7QX0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgIDQwIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICA0MSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNDIgfCB7QX0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQzIHwge0F9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorICA0NCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNDUg fCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQ2IHwge0F9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorICA0NyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgNDggfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQ5IHwge0F9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorICA1MCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgNTEgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUyIHwge0F9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1MyB8IHtBfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAgNTQgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDU1 IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1NiB8IHtBfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgNTcgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgIDU4IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1OSB8IHtBfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNjAgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDYxIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA2MiB8IHtB fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNjMgfCB7QX0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgIDY0IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA2 NSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNjYgfCB7QX0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDY3IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorICA2OCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNjkgfCB7QX0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDcwIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorICA3MSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNzIgfCB7 QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDczIHwge0F9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICA3NCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg NzUgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDc2IHwge0F9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorICA3NyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgNzggfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDc5IHwge0F9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA4MCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgODEgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDgyIHwg e0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA4MyB8IHtBfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgODQgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDg1IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA4NiB8IHtBfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgODcgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDg4IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA4OSB8IHtBfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOTAgfCB7QX0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgIDkxIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA5MiB8 IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOTMgfCB7QX0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDk0IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICA5NSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOTYgfCB7QX0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgIDk3IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICA5OCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOTkgfCB7QX0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTAwIHwge0F9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorIDEwMSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMDIg fCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTAzIHwge0F9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorIDEwNCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAxMDUgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoMTA1IHJvd3MpCisKKy0t IFVubGltaXRlZCBxdWFudGlmaWVyIChBezEwLH0pCitXSVRIIHRlc3RfdW5saW1pdGVkIEFTICgK KyAgICBTRUxFQ1QgaSBBUyBpZCwgQVJSQVlbJ0EnXSBBUyBmbGFncworICAgIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDE1KSBpCisgICAgVU5JT04gQUxMCisgICAgU0VMRUNUIDE2LCBBUlJBWVsn QiddCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2Vu ZAorRlJPTSB0ZXN0X3VubGltaXRlZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEF7MTAsfSBCKQorICAg IERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQg CistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAg ICAgICAgICAgMSB8ICAgICAgICAxNgorICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAg ICAxNgorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAxNgorICA0IHwge0F9ICAg fCAgICAgICAgICAgNCB8ICAgICAgICAxNgorICA1IHwge0F9ICAgfCAgICAgICAgICAgNSB8ICAg ICAgICAxNgorICA2IHwge0F9ICAgfCAgICAgICAgICAgNiB8ICAgICAgICAxNgorICA3IHwge0F9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA4IHwge0F9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorICA5IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDEwIHwg e0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDExIHwge0F9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorIDEyIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDEz IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDE0IHwge0F9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorIDE1IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor IDE2IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDE2IHJvd3MpCisKKy0tIE1p biBib3VuZGFyeSAoQXszLDV9KQorV0lUSCB0ZXN0X21pbl9ib3VuZGFyeSBBUyAoCisgICAgU0VM RUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIs IEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksICAtLSBNaW49MyByZWFjaGVk LCBleGl0IHBhdGggYXZhaWxhYmxlCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwgIC0tIE1hdGNo IGVuZHMgYXQgbWluCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZ WydBJ10pLAorICAgICAgICAoNywgQVJSQVlbJ0EnXSksCisgICAgICAgICg4LCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDksIEFSUkFZWydBJ10pLCAgLS0gQ291bnQ9NSwgbWF4IHJlYWNoZWQKKyAg ICAgICAgKDEwLCBBUlJBWVsnQiddKSAgLS0gTWF0Y2ggZW5kcyBhdCBtYXgKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF9taW5fYm91bmRhcnkKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBezMs NX0gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwg bWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8 IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDQKKyAgMiB8IHtBfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg NCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtBfSAgIHwgICAgICAg ICAgIDUgfCAgICAgICAgMTAKKyAgNiB8IHtBfSAgIHwgICAgICAgICAgIDYgfCAgICAgICAgMTAK KyAgNyB8IHtBfSAgIHwgICAgICAgICAgIDcgfCAgICAgICAgMTAKKyAgOCB8IHtBfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgOSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAxMCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKygxMCByb3dzKQorCist LSBNYXggYm91bmRhcnkgZXhjZWVkZWQgKEF7Myw1fSkKK1dJVEggdGVzdF9tYXhfYm91bmRhcnkg QVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSks CisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAg ICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDYsIEFSUkFZWydBJ10pLCAgLS0gQ291bnQ9NiA+IG1heD01LCByb3cgMSBjb250ZXh0IHJlbW92 ZWQKKyAgICAgICAgKDcsIEFSUkFZWydCJ10pICAgLS0gUm93IDEgY29udGV4dDogbm8gbWF0Y2gg KGV4Y2VlZGVkIG1heCkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFn cywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAg IGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9tYXhfYm91bmRh cnkKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8g TkVYVCBST1cKKyAgICBQQVRURVJOIChBezMsNX0gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBB UyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7Cisg aWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDcKKyAgMyB8IHtBfSAgIHwg ICAgICAgICAgIDMgfCAgICAgICAgIDcKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgIDQgfCAgICAg ICAgIDcKKyAgNSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtBfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtCfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyg3IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUGF0aG9sb2dpY2FsIFBhdHRlcm4gUnVu dGltZSBQcm90ZWN0aW9uCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIENvbXBsZXggbmVzdGVkIG51bGxhYmxlICgoQSog QiopKikgLSBSdW50aW1lIHByb3RlY3Rpb24KK1dJVEggdGVzdF9jb21wbGV4X25lc3RlZCBBUyAo CisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAg ICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydDJ10pCisgICAgKSBBUyB0KGlk LCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfZW5kCitGUk9NIHRlc3RfY29tcGxleF9uZXN0ZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQSog QiopKikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwg bWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8 IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDQKKyAgMiB8IHtBfSAgIHwgICAgICAgICAg IDIgfCAgICAgICAgIDQKKyAgMyB8IHtCfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQKKyAg NCB8IHtCfSAgIHwgICAgICAgICAgIDQgfCAgICAgICAgIDQKKyAgNSB8IHtDfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIE5lc3RlZCBudWxsYWJsZSB3aXRoIHF1 YW50aWZpZXIgKChBezAsM30pKikKK1dJVEggdGVzdF9uZXN0ZWRfcXVhbnRpZmllciBBUyAoCisg ICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0 LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdz LAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAg bGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X25lc3RlZF9xdWFu dGlmaWVyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEF7MCwzfSkqKQorICAgIERFRklORQorICAgICAg ICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwg bWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8 IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDMKKyAgMiB8IHtBfSAgIHwgICAgICAgICAg IDIgfCAgICAgICAgIDMKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMKKyAg NCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0gQWx0ZXJuYXRpb24gUnVudGltZSBCZWhhdmlvcgorLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBNdWx0aS1icmFuY2gg YWx0ZXJuYXRpb24gKEEgKEJ8Q3xEfEUpIEYpCitXSVRIIHRlc3RfbXVsdGlfYnJhbmNoIEFTICgK KyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAg ICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnRiddKSwKKyAgICAgICAg KDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0MnXSksCisgICAgICAgICg2LCBB UlJBWVsnRiddKSwKKyAgICAgICAgKDcsIEFSUkFZWydBJ10pLAorICAgICAgICAoOCwgQVJSQVlb J0QnXSksCisgICAgICAgICg5LCBBUlJBWVsnRiddKSwKKyAgICAgICAgKDEwLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDExLCBBUlJBWVsnRSddKSwKKyAgICAgICAgKDEyLCBBUlJBWVsnRiddKQor ICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X211bHRpX2JyYW5jaAorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKEEgKEIgfCBDIHwgRCB8IEUpIEYpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0En ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBD IEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgRSBBUyAnRScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBGIEFTICdGJyA9IEFOWShmbGFn cykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEg fCAgICAgICAgIDMKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8 IHtGfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtBfSAgIHwgICAgICAgICAg IDQgfCAgICAgICAgIDYKKyAgNSB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg NiB8IHtGfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtBfSAgIHwgICAgICAg ICAgIDcgfCAgICAgICAgIDkKKyAgOCB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgOSB8IHtGfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMCB8IHtBfSAgIHwgICAg ICAgICAgMTAgfCAgICAgICAgMTIKKyAxMSB8IHtFfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAxMiB8IHtGfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKygxMiByb3dzKQorCist LSBBbHRlcm5hdGlvbiB3aXRoIHF1YW50aWZpZXJzIChBKyB8IEIrIHwgQyspCitXSVRIIHRlc3Rf YWx0X3F1YW50aWZpZXJzIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAg KDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlb J0InXSksCisgICAgICAgICg2LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDcsIEFSUkFZWydDJ10p LAorICAgICAgICAoOCwgQVJSQVlbJ0MnXSksCisgICAgICAgICg5LCBBUlJBWVsnQyddKQorICAg ICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2FsdF9xdWFudGlmaWVycworV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKEErIHwgQisgfCBDKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0Mn ID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQg CistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAg ICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAg ICAgMworICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgMworICA0IHwge0J9ICAg fCAgICAgICAgICAgNCB8ICAgICAgICAgNQorICA1IHwge0J9ICAgfCAgICAgICAgICAgNSB8ICAg ICAgICAgNQorICA2IHwge0N9ICAgfCAgICAgICAgICAgNiB8ICAgICAgICAgOQorICA3IHwge0N9 ICAgfCAgICAgICAgICAgNyB8ICAgICAgICAgOQorICA4IHwge0N9ICAgfCAgICAgICAgICAgOCB8 ICAgICAgICAgOQorICA5IHwge0N9ICAgfCAgICAgICAgICAgOSB8ICAgICAgICAgOQorKDkgcm93 cykKKworLS0gYWx0UHJpb3JpdHkgcmVwbGFjZW1lbnQgKEEgQiBDIHwgRCkKKy0tIEQgYnJhbmNo IChoaWdoZXIgYWx0UHJpb3JpdHkpIG1hdGNoZXMgZmlyc3QgYXQgcm93IDEsCistLSB0aGVuIEEg QiBDIGJyYW5jaCAobG93ZXIgYWx0UHJpb3JpdHkpIHJlcGxhY2VzIGl0IGF0IHJvdyAzLgorV0lU SCB0ZXN0X2FsdF9yZXBsYWNlIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIEFSUkFZWydBJywgJ0QnXSksCisgICAgICAgICgyLCBBUlJBWVsnQicsICdfJ10pLAor ICAgICAgICAoMywgQVJSQVlbJ0MnLCAnXyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydfJywgJ18n XSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hbHRfcmVwbGFjZQorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAg IFBBVFRFUk4gKEEgQiBDIHwgRCkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0Mn ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCispOworIGlkIHwg ZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QSxEfSB8ICAgICAgICAgICAxIHwgICAgICAgICAzCisg IDIgfCB7QixffSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QyxffSB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7XyxffSB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisoNCByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIERlZXAgTmVzdGVkIEdyb3VwcworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBU aHJlZS1sZXZlbCBuZXN0aW5nICgoKChBIEIpKykrKSspCitXSVRIIHRlc3RfZGVlcF9uZXN0aW5n IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10p LAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSksCisgICAgICAg ICg2LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDcsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlk LCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfZW5kCitGUk9NIHRlc3RfZGVlcF9uZXN0aW5nCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKCgoQSBC KSspKykrKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAg ICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQg fCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAx IHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNgorICAyIHwge0J9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgNgor ICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwge0F9ICAgfCAgICAg ICAgICAgNSB8ICAgICAgICAgNgorICA2IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorICA3IHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDcgcm93cykKKworLS0g TXVsdGlwbGUgZ3JvdXBzIGluIG5lc3RpbmcgKCgoQSBCKSAoQyBEKSkrKQorV0lUSCB0ZXN0X25l c3RlZF9zZXF1ZW50aWFsIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAg KDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBB UlJBWVsnQyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydEJ10pLAorICAgICAgICAoNSwgQVJSQVlb J0EnXSksCisgICAgICAgICg2LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDcsIEFSUkFZWydDJ10p LAorICAgICAgICAoOCwgQVJSQVlbJ0QnXSksCisgICAgICAgICg5LCBBUlJBWVsnXyddKQorICAg ICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X25lc3RlZF9zZXF1ZW50aWFsCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAg UEFUVEVSTiAoKChBIEIpIChDIEQpKSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFT ICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsKKyBp ZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAg OAorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0N9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0R9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICA1IHwge0F9ICAgfCAgICAgICAgICAgNSB8ICAgICAgICAgOAorICA2IHwge0J9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA3IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorICA4IHwge0R9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA5IHwge199 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDkgcm93cykKKworLS0gTmVzdGVkIEVOROKG kkVORCBtYXggcmVhY2hlZAorLS0gSW5uZXIgZ3JvdXAgKEEgQil7Mn0gcmVhY2hlcyBtYXg9MiDi hpIgZXhpdHMgdG8gb3V0ZXIgRU5ECitXSVRIIHRlc3RfZW5kX25lc3RlZF9tYXggQVMgKAorICAg IFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAg ICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwg QVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZ WydCJ10pLAorICAgICAgICAoNywgQVJSQVlbJ0EnXSksCisgICAgICAgICg4LCBBUlJBWVsnQidd KSwKKyAgICAgICAgKDksIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NF TEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9z dGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRl c3RfZW5kX25lc3RlZF9tYXgKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoKEEgQil7Mn0pKykKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9 IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAor LS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAg ICAgICAgIDEgfCAgICAgICAgIDgKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDYKKyAgNCB8IHtCfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtBfSAgIHwgICAgICAgICAgIDUgfCAgICAg ICAgIDgKKyAgNiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtBfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgOSB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg5IHJvd3Mp CisKKy0tIE5lc3RlZCBFTkTihpJFTkQgYmV0d2VlbiBtaW4vbWF4CistLSBJbm5lciBncm91cCAo QSBCKXsxLDN9IGV4aXRzIGJldHdlZW4gbWluL21heCDihpIgb3V0ZXIgRU5EIGNvdW50KysKK1dJ VEggdGVzdF9lbmRfbmVzdGVkX21pZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisg ICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAg ICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUs IEFSUkFZWydBJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0InXSksCisgICAgICAgICg3LCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDgsIEFSUkFZWydCJ10pLAorICAgICAgICAoOSwgQVJSQVlbJ18n XSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9lbmRfbmVzdGVkX21pZAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVwor ICAgIFBBVFRFUk4gKCgoQSBCKXsxLDN9KSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0En ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwg ZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA4Cisg IDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAgICAg ICAgICAzIHwgICAgICAgICA4CisgIDQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgIDUgfCB7QX0gICB8ICAgICAgICAgICA1IHwgICAgICAgICA4CisgIDYgfCB7Qn0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgIDcgfCB7QX0gICB8ICAgICAgICAgICA3IHwgICAgICAg ICA4CisgIDggfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDkgfCB7X30gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisoOSByb3dzKQorCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFNLSVAgT3B0 aW9ucyAoUnVudGltZSkKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gU0tJUCBQQVNUIExBU1QgUk9XIChub24tb3Zlcmxh cHBpbmcgbWF0Y2hlcykKK1dJVEggdGVzdF9za2lwX3Bhc3QgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSks CisgICAgICAgICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxF Q1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3Rh cnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0 X3NraXBfcGFzdAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBt YXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwg e0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNAorICAyIHwge0F9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0 IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwge199ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gU0tJUCBUTyBORVhUIFJPVyAob3Zlcmxh cHBpbmcgbWF0Y2hlcykKK1dJVEggdGVzdF9za2lwX25leHQgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSks CisgICAgICAgICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxF Q1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3Rh cnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0 X3NraXBfbmV4dAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORQorICAgICAgICBB IEFTICdBJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0 Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtB fSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDQKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIg fCAgICAgICAgIDQKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQKKyAgNCB8 IHtBfSAgIHwgICAgICAgICAgIDQgfCAgICAgICAgIDQKKyAgNSB8IHtffSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIFNLSVAgZGlmZmVyZW5jZSB2ZXJpZmljYXRp b24KK1dJVEggdGVzdF9za2lwX2RpZmYgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwor ICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAg ICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUICdTS0lQIFBBU1QnIEFTIG1vZGUsIGlkLCBmbGFncywKKyAg ICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9za2lwX2RpZmYKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKykKK1VOSU9OIEFMTAorU0VM RUNUICdTS0lQIE5FWFQnIEFTIG1vZGUsIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9lbmQKK0ZST00gdGVzdF9za2lwX2RpZmYKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIp CisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBB UyAnQicgPSBBTlkoZmxhZ3MpCispCitPUkRFUiBCWSBtb2RlLCBpZDsKKyAgIG1vZGUgICAgfCBp ZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tLS0tLS0tLSstLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFNLSVAgTkVYVCB8ICAxIHwge0F9ICAg fCAgICAgICAgICAgMSB8ICAgICAgICAgMgorIFNLSVAgTkVYVCB8ICAyIHwge0J9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorIFNLSVAgTkVYVCB8ICAzIHwge0F9ICAgfCAgICAgICAgICAg MyB8ICAgICAgICAgNAorIFNLSVAgTkVYVCB8ICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorIFNLSVAgUEFTVCB8ICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAg MgorIFNLSVAgUEFTVCB8ICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIFNL SVAgUEFTVCB8ICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgNAorIFNLSVAgUEFT VCB8ICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDggcm93cykKKworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBJTklUSUFMIE1vZGUgKFJ1bnRpbWUpCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIElOSVRJQUwgbW9kZSAo bm90IHlldCBzdXBwb3J0ZWQgLSBwcm9kdWNlcyBzeW50YXggZXJyb3IpCitXSVRIIHRlc3RfaW5p dGlhbF9tb2RlIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFS UkFZWydfJ10pLCAgLS0gVW5tYXRjaGVkCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ18nXSksICAtLSBVbm1hdGNo ZWQKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NF TEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9z dGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRl c3RfaW5pdGlhbF9tb2RlCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFM CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAg IERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CitFUlJPUjogIHN5bnRh eCBlcnJvciBhdCBvciBuZWFyICJBRlRFUiIKK0xJTkUgMTg6ICAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgICAgICAgICAgXgorLS0gRGVmYXVsdCBtb2RlIChpbmNsdWRlIGFs bCByb3dzKQorV0lUSCB0ZXN0X2RlZmF1bHRfbW9kZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAo VkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnXyddKSwgIC0tIFVubWF0Y2hlZCwgYnV0IGluY2x1 ZGVkCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAor ICAgICAgICAoNCwgQVJSQVlbJ18nXSksICAtLSBVbm1hdGNoZWQsIGJ1dCBpbmNsdWRlZAorICAg ICAgICAoNSwgQVJSQVlbJ0EnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9kZWZh dWx0X21vZGUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBB UyAnQScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNo X2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7X30g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwg ICAgICAgICAzCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICAzCisgIDQgfCB7 X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7QX0gICB8ICAgICAgICAgICA1 IHwgICAgICAgICA1CisoNSByb3dzKQorCistLSBNb2RlIGRpZmZlcmVuY2UgdmVyaWZpY2F0aW9u IChJTklUSUFMIG5vdCB5ZXQgc3VwcG9ydGVkIC0gcHJvZHVjZXMgc3ludGF4IGVycm9yKQorV0lU SCB0ZXN0X21vZGVfZGlmZiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAg ICgxLCBBUlJBWVsnXyddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywg QVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUICdJTklUSUFMJyBB UyBtb2RlLCBDT1VOVCgqKSBBUyByb3dfY291bnQKK0ZST00gKAorICAgIFNFTEVDVCBpZCBGUk9N IHRlc3RfbW9kZV9kaWZmCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSBpZAor ICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgSU5JVElBTAorICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisg ICAgICAgIFBBVFRFUk4gKEEpCisgICAgICAgIERFRklORSBBIEFTICdBJyA9IEFOWShmbGFncykK KyAgICApCispIHN1YgorVU5JT04gQUxMCitTRUxFQ1QgJ0RFRkFVTFQnIEFTIG1vZGUsIENPVU5U KCopIEFTIHJvd19jb3VudAorRlJPTSAoCisgICAgU0VMRUNUIGlkIEZST00gdGVzdF9tb2RlX2Rp ZmYKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRF UiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgICAgIFBBVFRFUk4gKEEpCisgICAgICAgIERF RklORSBBIEFTICdBJyA9IEFOWShmbGFncykKKyAgICApCispIHN1YgorT1JERVIgQlkgbW9kZTsK K0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIkFGVEVSIgorTElORSAxNTogICAgICAg ICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgICAgICAgICAgICAgIF4KKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gRnJhbWUgQm91bmRhcnkgVmFyaWF0aW9ucworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBWZXJ5IGxpbWl0ZWQg ZnJhbWUgKDEgRk9MTE9XSU5HKQorV0lUSCB0ZXN0X29uZV9mb2xsb3dpbmcgQVMgKAorICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgy LCBBUlJBWVsnQiddKSwgIC0tIFdpdGhpbiAxIEZPTExPV0lORworICAgICAgICAoMywgQVJSQVlb J0EnXSksICAtLSBCZXlvbmQgMSBGT0xMT1dJTkcgZnJvbSByb3cgMQorICAgICAgICAoNCwgQVJS QVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAg ICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9vbmVfZm9sbG93aW5nCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIDEgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAg IFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNo X3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIKKyAgMiB8IHtCfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAg ICAgIDQKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisK Ky0tIE1lZGl1bSBmcmFtZSAoMTAgRk9MTE9XSU5HKQorV0lUSCB0ZXN0X3Rlbl9mb2xsb3dpbmcg QVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSks CisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAg ICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDYsIEFSUkFZWydBJ10pLAorICAgICAgICAoNywgQVJSQVlbJ0EnXSksCisgICAgICAgICg4LCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDksIEFSUkFZWydBJ10pLAorICAgICAgICAoMTAsIEFSUkFZ WydBJ10pLAorICAgICAgICAoMTEsIEFSUkFZWydCJ10pLCAgLS0gV2l0aGluIDEwIEZPTExPV0lO RyBmcm9tIHJvdyAxCisgICAgICAgICgxMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgxMywgQVJS QVlbJ0InXSkgICAtLSBCZXlvbmQgMTAgRk9MTE9XSU5HIGZyb20gcm93IDEKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF90ZW5fZm9sbG93aW5nCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEwIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAg IERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQg CistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAg ICAgICAgICAgMSB8ICAgICAgICAxMQorICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAg ICAxMQorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAxMQorICA0IHwge0F9ICAg fCAgICAgICAgICAgNCB8ICAgICAgICAxMQorICA1IHwge0F9ICAgfCAgICAgICAgICAgNSB8ICAg ICAgICAxMQorICA2IHwge0F9ICAgfCAgICAgICAgICAgNiB8ICAgICAgICAxMQorICA3IHwge0F9 ICAgfCAgICAgICAgICAgNyB8ICAgICAgICAxMQorICA4IHwge0F9ICAgfCAgICAgICAgICAgOCB8 ICAgICAgICAxMQorICA5IHwge0F9ICAgfCAgICAgICAgICAgOSB8ICAgICAgICAxMQorIDEwIHwg e0F9ICAgfCAgICAgICAgICAxMCB8ICAgICAgICAxMQorIDExIHwge0J9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorIDEyIHwge0F9ICAgfCAgICAgICAgICAxMiB8ICAgICAgICAxMworIDEz IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDEzIHJvd3MpCisKKy0tIEV4YWN0 IGJvdW5kYXJ5IG1hdGNoCitXSVRIIHRlc3RfZXhhY3RfYm91bmRhcnkgQVMgKAorICAgIFNFTEVD VCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlb J0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQiddKSAgIC0tIEV4YWN0bHkgYXQgNCBGT0xMT1dJ TkcgKGZyYW1lIGVuZCkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFn cywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAg IGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9leGFjdF9ib3Vu ZGFyeQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCA0IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBS T1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFO WShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdz IHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNQorICAyIHwg e0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgNQorICAzIHwge0F9ICAgfCAgICAgICAgICAg MyB8ICAgICAgICAgNQorICA0IHwge0F9ICAgfCAgICAgICAgICAgNCB8ICAgICAgICAgNQorICA1 IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBTcGVjaWFsIFBhcnRpdGlvbiBDYXNlcworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBFbXB0eSBwYXJ0aXRpb24gKDAg cm93cykKK1dJVEggdGVzdF9lbXB0eV9wYXJ0aXRpb24gQVMgKAorICAgIFNFTEVDVCAqIEZST00g KFZBTFVFUworICAgICAgICAoMSwgMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCAyLCBBUlJB WVsnXyddKSAgLS0gRGlmZmVyZW50IHBhcnRpdGlvbgorICAgICkgQVMgdChpZCwgcGFydCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIHBhcnQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX2VuZAorRlJPTSB0ZXN0X2VtcHR5X3BhcnRpdGlvbgorV0hFUkUgcGFydCA9IDk5ICAtLSBO byByb3dzIG1hdGNoCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIHBhcnQKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChB KQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBw YXJ0IHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorKDAgcm93cykKKworLS0gU2luZ2xlIHJvdyBw YXJ0aXRpb24KK1dJVEggdGVzdF9zaW5nbGVfcm93IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChW QUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykK K1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9N IHRlc3Rfc2luZ2xlX3JvdworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQg fCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAx IHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMQorKDEgcm93KQorCistLSBBbGwgcm93 cyBmYWlsIG1hdGNoaW5nIChhbGwgREVGSU5FIGZhbHNlKQorV0lUSCB0ZXN0X2FsbF9mYWlsIEFT ICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAor ICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKQorICAgICkg QVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2FsbF9mYWlsCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsp CisgICAgREVGSU5FCisgICAgICAgIEEgQVMgZmFsc2UgIC0tIEFsbCByb3dzIGZhaWwKKyk7Cisg aWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKygzIHJvd3MpCisKKy0tIFBhcnRpdGlvbiBlbmQgd2l0 aCBhYnNvcmJhYmxlIHBhdHRlcm4KKy0tIFNLSVAgUEFTVCBMQVNUIFJPVyArIHVuYm91bmRlZCBm cmFtZSArIGFsbCByb3dzIG1hdGNoIEEKKy0tIFRyaWdnZXJzIGFic29yYiBpbiAhcm93RXhpc3Rz IHBhdGggYXQgcGFydGl0aW9uIGJvdW5kYXJ5LgorV0lUSCB0ZXN0X2Fic29yYl9wYXJ0aXRpb25f ZW5kIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydB J10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSkKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcmJfcGFydGl0aW9uX2VuZAorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdz KQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8 ICAgICAgICAgNQorICAyIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwg e0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0F9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICA1IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUg cm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBERUZJTkUgU3BlY2lhbCBDYXNlcworLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBVbmRl ZmluZWQgdmFyaWFibGUgaW4gREVGSU5FCitXSVRIIHRlc3RfdW5kZWZpbmVkX3ZhciBBUyAoCisg ICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDIsIEFSUkFZWydYJ10pLCAgLS0gQiBub3QgZGVmaW5lZCwgZGVmYXVsdHMgdG8gVFJVRQor ICAgICAgICAoMywgQVJSQVlbJ0MnXSksCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDUsIEFSUkFZWydfJ10pLCAgLS0gQiBkZWZhdWx0cyB0byBUUlVFLCBidXQgbm8gZmxhZ3MK KyAgICAgICAgKDYsIEFSUkFZWydDJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFy dCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rf dW5kZWZpbmVkX3ZhcgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIC0tIEIgaXMgdW5kZWZpbmVkLCBk ZWZhdWx0cyB0byBUUlVFCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8 IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMwor ICAyIHwge1h9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0N9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0F9ICAgfCAgICAgICAgICAgNCB8ICAgICAgICAg NgorICA1IHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA2IHwge0N9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorKDYgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBBYnNvcnB0aW9u IER5bmFtaWMgRmxhZ3MKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gUGFydGlhbCBhYnNvcmJhYmxlIHBhdHRlcm4gKChB KykgQikKK1dJVEggdGVzdF9wYXJ0aWFsX2Fic29yYmFibGUgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSks CisgICAgICAgICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxF Q1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3Rh cnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0 X3BhcnRpYWxfYWJzb3JiYWJsZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBKykgQikKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0t LSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAg ICAgIDEgfCAgICAgICAgIDQKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQK KyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQKKyAgNCB8IHtCfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyg1IHJvd3MpCisKKy0tIER5bmFtaWMgZmxhZyB1cGRhdGUgKChBKykgfCBCKQorV0lUSCB0 ZXN0X2R5bmFtaWNfZmxhZ3MgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAg ICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMs IEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykK KykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitG Uk9NIHRlc3RfZHluYW1pY19mbGFncworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBKykgfCBCKQorICAg IERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQg CistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAg ICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAg ICAgMworICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgMworICA0IHwge0J9ICAg fCAgICAgICAgICAgNCB8ICAgICAgICAgNAorICA1IHwge0F9ICAgfCAgICAgICAgICAgNSB8ICAg ICAgICAgNQorICA2IHwge0J9ICAgfCAgICAgICAgICAgNiB8ICAgICAgICAgNgorKDYgcm93cykK KworLS0gTm9uLWFic29yYmFibGUgY29udGV4dCBkdXJpbmcgYWJzb3JwdGlvbgorLS0gUGF0dGVy biAoQSBCKSsgQzogQSxCIGluIGFic29yYmFibGUgZ3JvdXAsIEMgaXMgbm90LgorLS0gV2hlbiBF TkQgZXhpdHMgdG8gQyB2aWEgbmZhX3N0YXRlX2NyZWF0ZSwgaXNBYnNvcmJhYmxlIGJlY29tZXMg ZmFsc2UuCitXSVRIIHRlc3Rfbm9uX2Fic29yYmFibGUgQVMgKAorICAgIFNFTEVDVCAqIEZST00g KFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQidd KSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisg ICAgICAgICg1LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDYsIEFSUkFZWydfJ10pCisgICAgKSBB UyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfbm9uX2Fic29yYmFibGUKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKChBIEIpKyBDKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyks CisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlko ZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAg ICAxIHwgICAgICAgICA1CisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDMgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7Qn0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgIDYgfCB7X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNiByb3dzKQorCistLSBB YnNvcnB0aW9uIGZsYWdzIGVhcmx5IHJldHVybiAoIWhhc0Fic29yYmFibGVTdGF0ZSkKKy0tIFBh dHRlcm4gKEEgQikrIEMgRCB3aXRoIFNLSVAgUEFTVCBMQVNUIFJPVworLS0gQWZ0ZXIgcmVhY2hp bmcgQyAobm9uLWFic29yYmFibGUpLCBoYXNBYnNvcmJhYmxlU3RhdGUgYmVjb21lcyBmYWxzZS4K Ky0tIE9uIG5leHQgcm93IChEKSwgdGhlIGVhcmx5IHJldHVybiBmaXJlcy4KK1dJVEggdGVzdF9h YnNvcnB0aW9uX2Vhcmx5X3JldHVybiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisg ICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAg ICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUs IEFSUkFZWydDJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0QnXSksCisgICAgICAgICg3LCBBUlJB WVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAg ICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fic29ycHRpb25fZWFybHlf cmV0dXJuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKSsgQyBEKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFO WShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0t LSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAg ICAgIDEgfCAgICAgICAgIDYKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgMyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtCfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgNiB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtffSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyg3IHJvd3MpCisKKy0tIENvdmVyYWdlIGZhaWx1cmU6 IG9sZGVyIGNhbid0IGNvdmVyIG5ld2VyJ3Mgc3RhdGVzCistLSBQYXR0ZXJuIEErIHwgQisgd2l0 aCBTS0lQIFBBU1QgTEFTVCBST1cuCistLSBSb3cgMTogb25seSBBIOKGkiBDdHgxIHRha2VzIEEg YnJhbmNoIG9ubHkgKEIgZmFpbHMpLgorLS0gUm93IDI6IEEgYW5kIEIg4oaSIEN0eDIgdGFrZXMg Ym90aCBicmFuY2hlcy4KKy0tIEFic29ycHRpb246IEN0eDEgaGFzIEEgYnV0IG5vIEIg4oaSIGNh bid0IGNvdmVyIEN0eDIncyBCIHN0YXRlIOKGkiBmYWlscy4KK1dJVEggdGVzdF9jb3ZlcmFnZV9m YWlsIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydB JywgJ18nXSksCisgICAgICAgICgyLCBBUlJBWVsnQScsICdCJ10pLAorICAgICAgICAoMywgQVJS QVlbJ0EnLCAnXyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJywgJ18nXSksCisgICAgICAgICg1 LCBBUlJBWVsnXycsICdfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfY292ZXJh Z2VfZmFpbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgfCBCKykKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykK Kyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBLF99IHwgICAgICAgICAgIDEgfCAg ICAgICAgIDQKKyAgMiB8IHtBLEJ9IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtB LF99IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtBLF99IHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAgNSB8IHtfLF99IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJv d3MpCisKKy0tIEFic29yYiBza2lwcyBjb21wbGV0ZWQgY29udGV4dCAob2xkZXItPnN0YXRlcz09 TlVMTCkKKy0tIFBhdHRlcm4gQSsgfCBCKyB3aXRoIFNLSVAgUEFTVCBMQVNUIFJPVy4KKy0tIFJv dyAxOiBBIG9ubHkg4oaSIEN0eDEgdGFrZXMgQSBicmFuY2guIFJvdyAyOiBCIG9ubHkg4oaSIEN0 eDEgQSBmYWlscyAoY29tcGxldGVkKS4KKy0tIEN0eDIgdGFrZXMgQiBicmFuY2guIEFic29ycHRp b246IEN0eDEgc3RhdGVzPT1OVUxMIOKGkiBza2lwLgorV0lUSCB0ZXN0X29sZGVyX2NvbXBsZXRl ZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSksCisg ICAgICAgICg0LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X29s ZGVyX2NvbXBsZXRlZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgfCBCKykKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAg IDEgfCAgICAgICAgIDEKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDMKKyAg MyB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtffSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisKKy0tIEFic29yYiBza2lwcyBub24tYWJzb3Ji YWJsZSBjb250ZXh0ICghaGFzQWJzb3JiYWJsZVN0YXRlKQorLS0gUGF0dGVybiBBKyB8IEIgQyB3 aXRoIFNLSVAgUEFTVCBMQVNUIFJPVyAob25seSBBKyBicmFuY2ggYWJzb3JiYWJsZSkuCistLSBS b3cgMTogQiBvbmx5IOKGkiBDdHgxIHRha2VzIEIgYnJhbmNoIChub24tYWJzb3JiYWJsZSksIGFk dmFuY2VzIHRvIEMuCistLSBSb3cgMjogQyxBIOKGkiBDdHgxIEMgbWF0Y2hlcyAoaGFzQWJzb3Ji YWJsZVN0YXRlPWZhbHNlKS4gQ3R4MiB0YWtlcyBBIChhYnNvcmJhYmxlKS4KKy0tIEFic29ycHRp b246IEN0eDEgIWhhc0Fic29yYmFibGVTdGF0ZSDihpIgc2tpcC4KK1dJVEggdGVzdF9vbGRlcl9u b25fYWJzb3JiYWJsZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQicsICdfJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0MnLCAnQSddKSwKKyAgICAg ICAgKDMsIEFSUkFZWydfJywgJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnXycsICdfJ10pCisg ICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb2xkZXJfbm9uX2Fic29yYmFibGUKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEErIHwgQiBDKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9 IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBB UyAnQycgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNo X2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7Qixf fSB8ICAgICAgICAgICAxIHwgICAgICAgICAyCisgIDIgfCB7QyxBfSB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgIDMgfCB7XyxBfSB8ICAgICAgICAgICAzIHwgICAgICAgICAzCisgIDQgfCB7 XyxffSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNCByb3dzKQorCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEZJ WE1FIElzc3VlcyAtIEtub3duIExpbWl0YXRpb25zCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEZJWE1FIDEgLSBhbHRQ cmlvcml0eSBsZXhpY2FsIG9yZGVyCitXSVRIIHRlc3RfYWx0X3ByaW9yaXR5X3JlcGVhdGVkIEFT ICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywnQidd KSwgIC0tIEJvdGggQSBhbmQgQiBtYXRjaAorICAgICAgICAoMiwgQVJSQVlbJ0EnLCdCJ10pLAor ICAgICAgICAoMywgQVJSQVlbJ0EnLCdCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NF TEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9z dGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRl c3RfYWx0X3ByaW9yaXR5X3JlcGVhdGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSspCisg ICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAn QicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2Vu ZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QSxCfSB8 ICAgICAgICAgICAxIHwgICAgICAgICAzCisgIDIgfCB7QSxCfSB8ICAgICAgICAgICAyIHwgICAg ICAgICAzCisgIDMgfCB7QSxCfSB8ICAgICAgICAgICAzIHwgICAgICAgICAzCisoMyByb3dzKQor CistLSBGSVhNRSAxIC0gTmVzdGVkIEFMVCBsZXhpY2FsIG9yZGVyCitXSVRIIHRlc3RfYWx0X3By aW9yaXR5X25lc3RlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICgyLCBBUlJBWVsnQycsJ0QnXSksCisgICAgICAg ICgzLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQycsJ0QnXSkKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hbHRfcHJpb3JpdHlfbmVzdGVkCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAg UEFUVEVSTiAoKChBIHwgQikgKEMgfCBEKSkrKQorICAgIERFRklORQorICAgICAgICBBIEFTICdB JyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg QyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncykKKyk7 CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBLEJ9IHwgICAgICAgICAgIDEgfCAgICAg ICAgIDQKKyAgMiB8IHtDLER9IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBLEJ9 IHwgICAgICAgICAgIDMgfCAgICAgICAgIDQKKyAgNCB8IHtDLER9IHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyg0IHJvd3MpCisKKy0tIEZJWE1FIDIgLSBDeWNsZSBwcmV2ZW50aW9uIGF0IGNv dW50ID4gMAorV0lUSCB0ZXN0X2N5Y2xlX25vbnplcm8gQVMgKAorICAgIFNFTEVDVCAqIEZST00g KFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSkgIC0t IElubmVyIEEqIG1hdGNoZXMgMCwgY3ljbGVzIGF0IGNvdW50PTMKKyAgICApIEFTIHQoaWQsIGZs YWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9l bmQKK0ZST00gdGVzdF9jeWNsZV9ub256ZXJvCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEqKSopCisg ICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdz IHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwg e0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgMworICAzIHwge0F9ICAgfCAgICAgICAgICAg MyB8ICAgICAgICAgMworICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDQg cm93cykKKworLS0gRklYTUUgMiAtIEN5Y2xlIHdpdGggbWl4ZWQgbnVsbGFibGVzCitXSVRIIHRl c3RfY3ljbGVfbWl4ZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFS UkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdz KQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQK K0ZST00gdGVzdF9jeWNsZV9taXhlZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBKiBCKikqKQorICAg IERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQg CistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAg ICAgICAgICAgMSB8ICAgICAgICAgMgorICAyIHwge0J9ICAgfCAgICAgICAgICAgMiB8ICAgICAg ICAgMgorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgMworICA0IHwge0N9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDQgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxf c2NoZWR1bGUKaW5kZXggNTQ5ZTliMmQ3YmUuLmQ5Zjg3OWE3NjI0IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUKQEAgLTEwNCw2ICsxMDQsMTEgQEAgdGVzdDogcHVibGljYXRpb24gc3Vi c2NyaXB0aW9uCiAjIC0tLS0tLS0tLS0KIHRlc3Q6IHNlbGVjdF92aWV3cyBwb3J0YWxzX3AyIGZv cmVpZ25fa2V5IGNsdXN0ZXIgZGVwZW5kZW5jeSBndWMgYml0bWFwb3BzIGNvbWJvY2lkIHRzZWFy Y2ggdHNkaWN0cyBmb3JlaWduX2RhdGEgd2luZG93IHhtbG1hcCBmdW5jdGlvbmFsX2RlcHMgYWR2 aXNvcnlfbG9jayBpbmRpcmVjdF90b2FzdCBlcXVpdmNsYXNzIHN0YXRzX3Jld3JpdGUKIAorIyAt LS0tLS0tLS0tCisjIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIHRlc3RzCisjIC0tLS0tLS0tLS0K K3Rlc3Q6IHJwciBycHJfYmFzZSBycHJfZXhwbGFpbiBycHJfbmZhCisKICMgLS0tLS0tLS0tLQog IyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzIChKU09OIHJlbGF0ZWQpCiAjIC0tLS0t LS0tLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9ycHIuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi43NjkwYzU2MTFjMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3Jwci5zcWwKQEAgLTAsMCArMSwyMTgwIEBACistLQorLS0gVGVzdCBmb3Igcm93IHBhdHRlcm4g ZGVmaW5pdGlvbiBjbGF1c2UKKy0tCisKK0NSRUFURSBURU1QIFRBQkxFIHN0b2NrICgKKyAgICAg ICBjb21wYW55IFRFWFQsCisgICAgICAgdGRhdGUgREFURSwKKyAgICAgICBwcmljZSBJTlRFR0VS CispOworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wMScs IDEwMCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTAy JywgMjAwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDct MDMnLCAxNTApOworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0w Ny0wNCcsIDE0MCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIz LTA3LTA1JywgMTUwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIw MjMtMDctMDYnLCA5MCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MScsICcy MDIzLTA3LTA3JywgMTEwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywg JzIwMjMtMDctMDgnLCAxMzApOworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEn LCAnMjAyMy0wNy0wOScsIDEyMCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55 MScsICcyMDIzLTA3LTEwJywgMTMwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBh bnkyJywgJzIwMjMtMDctMDEnLCA1MCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21w YW55MicsICcyMDIzLTA3LTAyJywgMjAwMCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdj b21wYW55MicsICcyMDIzLTA3LTAzJywgMTUwMCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMg KCdjb21wYW55MicsICcyMDIzLTA3LTA0JywgMTQwMCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxV RVMgKCdjb21wYW55MicsICcyMDIzLTA3LTA1JywgMTUwMCk7CitJTlNFUlQgSU5UTyBzdG9jayBW QUxVRVMgKCdjb21wYW55MicsICcyMDIzLTA3LTA2JywgNjApOworSU5TRVJUIElOVE8gc3RvY2sg VkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0wNycsIDExMDApOworSU5TRVJUIElOVE8gc3Rv Y2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0wOCcsIDEzMDApOworSU5TRVJUIElOVE8g c3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0wOScsIDEyMDApOworSU5TRVJUIElO VE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0xMCcsIDEzMDApOworCitTRUxF Q1QgKiBGUk9NIHN0b2NrOworCistLSBiYXNpYyB0ZXN0IHVzaW5nIFBSRVYKK1NFTEVDVCBjb21w YW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUo cHJpY2UpIE9WRVIgdywKKyBudGhfdmFsdWUodGRhdGUsIDIpIE9WRVIgdyBBUyBudGhfc2Vjb25k CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwK KyBQQVRURVJOIChTVEFSVCBVUCsgRE9XTispCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisg IFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNl KQorKTsKKworLS0gYmFzaWMgdGVzdCB1c2luZyBQUkVWLiBVUCBhcHBlYXJzIHR3aWNlCitTRUxF Q1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0 X3ZhbHVlKHByaWNlKSBPVkVSIHcsCisgbnRoX3ZhbHVlKHRkYXRlLCAyKSBPVkVSIHcgQVMgbnRo X3NlY29uZAorIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBh bnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJ TklUSUFMCisgUEFUVEVSTiAoU1RBUlQgVVArIERPV04rIFVQKykKKyBERUZJTkUKKyAgU1RBUlQg QVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8 IFBSRVYocHJpY2UpCispOworCistLSBiYXNpYyB0ZXN0IHVzaW5nIFBSRVYuIFVzZSAnKicKK1NF TEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxh c3RfdmFsdWUocHJpY2UpIE9WRVIgdywKKyBudGhfdmFsdWUodGRhdGUsIDIpIE9WRVIgdyBBUyBu dGhfc2Vjb25kCisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29t cGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor IElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBVUCogRE9XTispCisgREVGSU5FCisgIFNUQVJUIEFT IFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQ UkVWKHByaWNlKQorKTsKKworLS0gYmFzaWMgdGVzdCB1c2luZyBQUkVWLiBVc2UgJz8nCitTRUxF Q1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0 X3ZhbHVlKHByaWNlKSBPVkVSIHcsCisgbnRoX3ZhbHVlKHRkYXRlLCAyKSBPVkVSIHcgQVMgbnRo X3NlY29uZAorIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBh bnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJ TklUSUFMCisgUEFUVEVSTiAoU1RBUlQgVVA/IERPV04rKQorIERFRklORQorICBTVEFSVCBBUyBU UlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJF VihwcmljZSkKKyk7CisKKy0tIHRlc3QgdXNpbmcgYWx0ZXJuYXRpb24gKHwpIHdpdGggc2VxdWVu Y2UKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVS IHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAo CisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgKFVQIHwgRE9XTikp CisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSks CisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKworLS0gdGVzdCB1c2luZyBhbHRl cm5hdGlvbiAofCkgd2l0aCBncm91cCBxdWFudGlmaWVyCitTRUxFQ1QgY29tcGFueSwgdGRhdGUs IHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVS IHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55Cisg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElB TAorIFBBVFRFUk4gKFNUQVJUIChVUCB8IERPV04pKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJV RSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYo cHJpY2UpCispOworCistLSB0ZXN0IHVzaW5nIG5lc3RlZCBhbHRlcm5hdGlvbgorU0VMRUNUIGNv bXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1 ZShwcmljZSkgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04g QlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCAoKFVQIERPV04pIHwgRkxBVCkrKQorIERF RklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICBE T1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSksCisgIEZMQVQgQVMgcHJpY2UgPSBQUkVWKHByaWNl KQorKTsKKworLS0gdGVzdCB1c2luZyBncm91cCB3aXRoIHF1YW50aWZpZXIKK1NFTEVDVCBjb21w YW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUo cHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZ IGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyBJTklUSUFMCisgUEFUVEVSTiAoKFVQIERPV04pKykKKyBERUZJTkUKKyAgVVAgQVMgcHJp Y2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworCist LSB0ZXN0IHVzaW5nIGFic29sdXRlIHRocmVzaG9sZCB2YWx1ZXMgKG5vdCByZWxhdGl2ZSBQUkVW KQorLS0gSElHSDogcHJpY2UgPiAxNTAsIExPVzogcHJpY2UgPCAxMDAsIE1JRDogbmV1dHJhbCBy YW5nZQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9W RVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFT ICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChMT1cgTUlEKiBISUdIKQor IERFRklORQorICBMT1cgQVMgcHJpY2UgPCAxMDAsCisgIE1JRCBBUyBwcmljZSA+PSAxMDAgQU5E IHByaWNlIDw9IDE1MCwKKyAgSElHSCBBUyBwcmljZSA+IDE1MAorKTsKKworLS0gdGVzdCB0aHJl c2hvbGQtYmFzZWQgcGF0dGVybiB3aXRoIGFsdGVybmF0aW9uCitTRUxFQ1QgY29tcGFueSwgdGRh dGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBP VkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55 CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5J VElBTAorIFBBVFRFUk4gKExPVyAoTUlEIHwgSElHSCkrKQorIERFRklORQorICBMT1cgQVMgcHJp Y2UgPCAxMDAsCisgIE1JRCBBUyBwcmljZSA+PSAxMDAgQU5EIHByaWNlIDw9IDE1MCwKKyAgSElH SCBBUyBwcmljZSA+IDE1MAorKTsKKworLS0gYmFzaWMgdGVzdCB3aXRoIG5vbmUtZ3JlZWR5IHBh dHRlcm4KK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIgdworIEZS T00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFU VEVSTiAoQSBBIEEpCisgREVGSU5FCisgIEEgQVMgcHJpY2UgPj0gMTQwIEFORCBwcmljZSA8PSAx NTAKKyk7CisKKy0tIHRlc3QgdXNpbmcge259IHF1YW50aWZpZXIgKEEgQSBBIHNob3VsZCBiZSBv cHRpbWl6ZWQgdG8gQXszfSkKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCop IE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBh bnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJ TklUSUFMCisgUEFUVEVSTiAoQXszfSkKKyBERUZJTkUKKyAgQSBBUyBwcmljZSA+PSAxNDAgQU5E IHByaWNlIDw9IDE1MAorKTsKKworLS0gdGVzdCB1c2luZyB7bix9IHF1YW50aWZpZXIgKDIgb3Ig bW9yZSkKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIgdworIEZS T00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFU VEVSTiAoQXsyLH0pCisgREVGSU5FCisgIEEgQVMgcHJpY2UgPiAxMDAKKyk7CisKKy0tIHRlc3Qg dXNpbmcge24sbX0gcXVhbnRpZmllciAoMiB0byA0KQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBw cmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJU SVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChBezIsNH0pCisgREVGSU5FCisgIEEgQVMg cHJpY2UgPiAxMDAKKyk7CisKKy0tIGxhc3RfdmFsdWUoKSBzaG91bGQgcmVtYWluIGNvbnNpc3Rl bnQKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIg dworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBP UkRFUiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBVUCsgRE9XTispCisgREVGSU5FCisg IFNUQVJUIEFTIFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMg cHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKworLS0gb21pdCAiU1RBUlQiIGluIERFRklORSBidXQg aXQgaXMgb2sgYmVjYXVzZSAiU1RBUlQgQVMgVFJVRSIgaXMKKy0tIGltcGxpY2l0bHkgZGVmaW5l ZC4gcGVyIHNwZWMuCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShw cmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsCisgbnRoX3ZhbHVlKHRkYXRl LCAyKSBPVkVSIHcgQVMgbnRoX3NlY29uZAorIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisg UEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgVVArIERPV04rKQorIERF RklORQorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJF VihwcmljZSkKKyk7CisKKy0tIHRoZSBmaXJzdCByb3cgc3RhcnQgd2l0aCBsZXNzIHRoYW4gb3Ig ZXF1YWwgdG8gMTAwCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShw cmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lO RE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKExPV1BSSUNF IFVQKyBET1dOKykKKyBERUZJTkUKKyAgTE9XUFJJQ0UgQVMgcHJpY2UgPD0gMTAwLAorICBVUCBB UyBwcmljZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7 CisKKy0tIHNlY29uZCByb3cgcmFpc2VzIDEyMCUKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJp Y2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdwor IEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisg UEFUVEVSTiAoTE9XUFJJQ0UgVVArIERPV04rKQorIERFRklORQorICBMT1dQUklDRSBBUyBwcmlj ZSA8PSAxMDAsCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSkgKiAxLjIsCisgIERPV04gQVMg cHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKworLS0gdXNpbmcgTkVYVAorU0VMRUNUIGNvbXBhbnks IHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmlj ZSkgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29t cGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor IElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBVUERPV04pCisgREVGSU5FCisgIFNUQVJUIEFTIFRS VUUsCisgIFVQRE9XTiBBUyBwcmljZSA+IFBSRVYocHJpY2UpIEFORCBwcmljZSA+IE5FWFQocHJp Y2UpCispOworCistLSB1c2luZyBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCitTRUxFQ1Qg Y29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3Zh bHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElP TiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworIElOSVRJQUwKKyBQQVRURVJO IChTVEFSVCBVUERPV04pCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQRE9XTiBBUyBw cmljZSA+IFBSRVYocHJpY2UpIEFORCBwcmljZSA+IE5FWFQocHJpY2UpCispOworCistLSBtYXRj aCBldmVyeXRoaW5nCisKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVl KHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sKKyBX SU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworIElOSVRJQUwKKyBQQVRURVJOIChBKykKKyBERUZJTkUK KyAgQSBBUyBUUlVFCispOworCistLSBudGhfdmFsdWUgYmV5b25kIHJlZHVjZWQgZnJhbWUgKG5v IElHTk9SRSBOVUxMUykKKy0tIFRlc3RzIFdpbkdldFNsb3RJbkZyYW1lL1dpbkdldEZ1bmNBcmdJ bkZyYW1lIG91dC1vZi1mcmFtZSB3aXRoIFJQUgorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmlj ZSwKKyBudGhfdmFsdWUocHJpY2UsIDUpIE9WRVIgdyBBUyBudGhfNQorRlJPTSBzdG9jaworV0lO RE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgT1JERVIgQlkgdGRhdGUKKyBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyBQQVRURVJOIChTVEFSVCBVUCsgRE9XTispCisgREVGSU5F CisgIFNUQVJUIEFTIFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04g QVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKworLS0gYmFja3RyYWNraW5nIHdpdGggcmVjbGFz c2lmaWNhdGlvbiBvZiByb3dzCistLSB1c2luZyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHRkYXRlKSBPVkVS IHcsIGxhc3RfdmFsdWUodGRhdGUpIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAo CisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworIElOSVRJQUwKKyBQQVRURVJOIChBKyBCKykKKyBERUZJTkUKKyAgQSBBUyBw cmljZSA+IDEwMCwKKyAgQiBBUyBwcmljZSA+IDEwMAorKTsKKworLS0gYmFja3RyYWNraW5nIHdp dGggcmVjbGFzc2lmaWNhdGlvbiBvZiByb3dzCistLSB1c2luZyBBRlRFUiBNQVRDSCBTS0lQIFRP IE5FWFQgUk9XCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZSh0ZGF0 ZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHRkYXRlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9X IHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgT1JERVIgQlkgdGRhdGUKKyBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBT S0lQIFRPIE5FWFQgUk9XCisgSU5JVElBTAorIFBBVFRFUk4gKEErIEIrKQorIERFRklORQorICBB IEFTIHByaWNlID4gMTAwLAorICBCIEFTIHByaWNlID4gMTAwCispOworCistLSBTS0lQIFRPIE5F WFQgUk9XIHdpdGggbGltaXRlZCBmcmFtZSAoSXNoaWktc2FuJ3MgdGVzdCBjYXNlKQorLS0gRWFj aCByb3cgc2hvdWxkIHByb2R1Y2UgaXRzIG93biBtYXRjaCB3aXRoaW4gaXRzIGZyYW1lCitXSVRI IGRhdGEgQVMgKAorIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAoJ0EnLCAxKSwgKCdBJywgMiks CisgICgnQicsIDMpLCAoJ0InLCA0KQorICkgQVMgdChnaWQsIGlkKQorKQorU0VMRUNUIGdpZCwg aWQsIGFycmF5X2FnZyhpZCkgT1ZFUiB3CitGUk9NIGRhdGEKK1dJTkRPVyB3IEFTICgKKyBQQVJU SVRJT04gQlkgZ2lkCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAyIEZPTExPV0lORwor IEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyBQQVRURVJOIChBKykKKyBERUZJTkUgQSBB UyBpZCA8IDEwCispOworCistLSBMaW1pdGVkIGZyYW1lIHdpdGggYWJzb3JwdGlvbiB0ZXN0Cist LSBSb3cgMDogZnJhbWUgWzAsMl0sIGNhbid0IHNlZSBCIGF0IHJvdyAzIC0+IG5vIG1hdGNoCist LSBSb3cgMTogZnJhbWUgWzEsM10sIGNhbiBzZWUgQSBBIEIgLT4gc2hvdWxkIG1hdGNoIHJvd3Mg MS0zCitXSVRIIGZyYW1lX2Fic29yYl90ZXN0IEFTICgKKyBTRUxFQ1QgKiBGUk9NIChWQUxVRVMK KyAgKDAsICdBJyksICgxLCAnQScpLCAoMiwgJ0EnKSwgKDMsICdCJykKKyApIEFTIHQoaWQsIGZs YWcpCispCitTRUxFQ1QgaWQsIGZsYWcsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gZnJhbWVfYWJz b3JiX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyBPUkRFUiBCWSBpZAorIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgMiBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyBQQVRURVJOIChBKyBCKQorIERFRklORQorICBBIEFTIGZsYWcgPSAnQScsCisgIEIgQVMgZmxh ZyA9ICdCJworKTsKKworLS0gUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBvZmZzZXQgRk9M TE9XSU5HCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZSh0ZGF0ZSkg T1ZFUiB3LCBsYXN0X3ZhbHVlKHRkYXRlKSBPVkVSIHcsCisgY291bnQoKikgT1ZFUiB3CisgRlJP TSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIE9SREVSIEJZ IHRkYXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAyIEZPTExPV0lORworIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworIFBBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKKyBE RUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAg RE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworCistLQorLS0gQWdncmVnYXRlcworLS0K KworLS0gdXNpbmcgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCitTRUxFQ1QgY29tcGFu eSwgdGRhdGUsIHByaWNlLAorIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsCisgbGFzdF92YWx1 ZShwcmljZSkgT1ZFUiB3LAorIG1heChwcmljZSkgT1ZFUiB3LAorIG1pbihwcmljZSkgT1ZFUiB3 LAorIHN1bShwcmljZSkgT1ZFUiB3LAorIGF2ZyhwcmljZSkgT1ZFUiB3LAorIGNvdW50KHByaWNl KSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKK1BBUlRJVElPTiBCWSBjb21wYW55 CitST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKK0FGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworSU5JVElBTAorUEFUVEVSTiAoU1RBUlQgVVArIERP V04rKQorREVGSU5FCitTVEFSVCBBUyBUUlVFLAorVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwK K0RPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKworLS0gdXNpbmcgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyBmaXJzdF92 YWx1ZShwcmljZSkgT1ZFUiB3LAorIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywKKyBtYXgocHJp Y2UpIE9WRVIgdywKKyBtaW4ocHJpY2UpIE9WRVIgdywKKyBzdW0ocHJpY2UpIE9WRVIgdywKKyBh dmcocHJpY2UpIE9WRVIgdywKKyBjb3VudChwcmljZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5E T1cgdyBBUyAoCitQQVJUSVRJT04gQlkgY29tcGFueQorUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCitBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCitJ TklUSUFMCitQQVRURVJOIChTVEFSVCBVUCsgRE9XTispCitERUZJTkUKK1NUQVJUIEFTIFRSVUUs CitVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2Up CispOworCistLSBKT0lOIGNhc2UKK0NSRUFURSBURU1QIFRBQkxFIHQxIChpIGludCwgdjEgaW50 KTsKK0NSRUFURSBURU1QIFRBQkxFIHQyIChqIGludCwgdjIgaW50KTsKK0lOU0VSVCBJTlRPIHQx IFZBTFVFUygxLDEwKTsKK0lOU0VSVCBJTlRPIHQxIFZBTFVFUygxLDExKTsKK0lOU0VSVCBJTlRP IHQxIFZBTFVFUygxLDEyKTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVFUygyLDEwKTsKK0lOU0VSVCBJ TlRPIHQyIFZBTFVFUygyLDExKTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVFUygyLDEyKTsKKworU0VM RUNUICogRlJPTSB0MSwgdDIgV0hFUkUgdDEudjEgPD0gMTEgQU5EIHQyLnYyIDw9IDExOworCitT RUxFQ1QgKiwgY291bnQoKikgT1ZFUiB3IEZST00gdDEsIHQyCitXSU5ET1cgdyBBUyAoCisgUEFS VElUSU9OIEJZIHQxLmkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoQSkKKyBERUZJTkUKKyBBIEFTIHYxIDw9IDEx IEFORCB2MiA8PSAxMQorKTsKKworLS0gV0lUSCBjYXNlCitXSVRIIHdzdG9jayBBUyAoCisgIFNF TEVDVCAqIEZST00gc3RvY2sgV0hFUkUgdGRhdGUgPCAnMjAyMy0wNy0wOCcKKykKK1NFTEVDVCB0 ZGF0ZSwgcHJpY2UsCitmaXJzdF92YWx1ZSh0ZGF0ZSkgT1ZFUiB3LAorY291bnQoKikgT1ZFUiB3 CisgRlJPTSB3c3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBP UkRFUiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBVUCsgRE9XTispCisgREVGSU5FCisg IFNUQVJUIEFTIFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMg cHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKworLS0gUmVTY2FuIHRlc3Q6IExBVEVSQUwgam9pbiBm b3JjZXMgV2luZG93QWdnIHJlc2NhbiB3aXRoIFJQUgorLS0gVGVzdHMgRXhlY1JlU2NhbldpbmRv d0FnZyBjbGVhcmluZyBwcmV2X3Nsb3QvbmV4dF9zbG90CitTRUxFQ1QgZy54LCBzdWIuKgorRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMikgZyh4KSwKK0xBVEVSQUwgKAorICBTRUxFQ1QgaWQsIHBy aWNlLCBjb3VudCgqKSBPVkVSIHcgQVMgYworICBGUk9NIChWQUxVRVMgKDEsIDEwMCksICgyLCAy MDApLCAoMywgMTUwKSkgQVMgdChpZCwgcHJpY2UpCisgIFdIRVJFIGlkIDw9IGcueCArIDEKKyAg V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoU1RBUlQgVVArKQorICAg IERFRklORQorICAgICAgU1RBUlQgQVMgVFJVRSwKKyAgICAgIFVQIEFTIHByaWNlID4gUFJFVihw cmljZSkKKyAgKQorKSBzdWIKK09SREVSIEJZIGcueCwgc3ViLmlkOworCistLSBQUkVWIGhhcyBt dWx0aXBsZSBjb2x1bW4gcmVmZXJlbmNlCitDUkVBVEUgVEVNUCBUQUJMRSBycHIxIChpZCBJTlRF R0VSLCBpIFNFUklBTCwgaiBJTlRFR0VSKTsKK0lOU0VSVCBJTlRPIHJwcjEoaWQsIGopIFNFTEVD VCAxLCBnKjIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIEFTIGc7CitTRUxFQ1QgaWQsIGks IGosIGNvdW50KCopIE9WRVIgdworIEZST00gcnByMQorIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJ T04gQlkgaWQKKyBPUkRFUiBCWSBpCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgSU5JVElB TAorIFBBVFRFUk4gKFNUQVJUIENPTkQrKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBD T05EIEFTIFBSRVYoaSArIGogKyAxKSA8IDEwCispOworCistLSBTbW9rZSB0ZXN0IGZvciBsYXJn ZXIgcGFydGl0aW9ucy4KK1dJVEggcyBBUyAoCisgU0VMRUNUIHYsIGNvdW50KCopIE9WRVIgdyBB UyBjCisgRlJPTSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSB2KQorIFdJTkRPVyB3 IEFTICgKKyAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICBJTklUSUFMCisgIFBBVFRFUk4g KCByKyApCisgIERFRklORSByIEFTIFRSVUUKKyApCispCistLSBTaG91bGQgYmUgZXhhY3RseSBv bmUgbG9uZyBtYXRjaCBhY3Jvc3MgYWxsIHJvd3MuCitTRUxFQ1QgKiBGUk9NIHMgV0hFUkUgYyA+ IDA7CisKK1dJVEggcyBBUyAoCisgU0VMRUNUIHYsIGNvdW50KCopIE9WRVIgdyBBUyBjCisgRlJP TSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSB2KQorIFdJTkRPVyB3IEFTICgKKyAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICBJTklUSUFMCisgIFBBVFRFUk4gKCByICkKKyAg REVGSU5FIHIgQVMgVFJVRQorICkKKykKKy0tIEV2ZXJ5IHJvdyBzaG91bGQgYmUgaXRzIG93biBt YXRjaC4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHMgV0hFUkUgYyA+IDA7CisKKy0tIExhcmdlIHBh cnRpdGlvbiB0ZXN0OiAxMDBLIHJvd3Mgd2l0aCBBKyBCKiBDezEwMDAwLH0gcGF0dGVybgorLS0g VGVzdHMgdGhhdCBpbnQzMiBjb3VudCBkb2Vzbid0IG92ZXJmbG93IHdpdGggbGFyZ2UgcmVwZXRp dGlvbnMKK1dJVEggZGF0YSBBUyAoCisgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygwLCAxMDAwMDAp IEFTIHYKKyksCityZXN1bHQgQVMgKAorIFNFTEVDVCB2LAorICAgICAgICBjb3VudCgqKSBPVkVS IHcgQVMgbWF0Y2hfbGVuLAorICAgICAgICBmaXJzdF92YWx1ZSh2KSBPVkVSIHcgQVMgbWF0Y2hf Zmlyc3QsCisgICAgICAgIGxhc3RfdmFsdWUodikgT1ZFUiB3IEFTIG1hdGNoX2xhc3QKKyBGUk9N IGRhdGEKKyBXSU5ET1cgdyBBUyAoCisgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgSU5J VElBTAorICBQQVRURVJOIChBKyBCKiBDezEwMDAwLH0pCisgIERFRklORQorICAgQSBBUyB2IDwg MzMzMzMsCisgICBCIEFTIHYgPj0gMzMzMzMgQU5EIHYgPCA2NjY2NiwKKyAgIEMgQVMgdiA+PSA2 NjY2NiBBTkQgdiA8IDk5OTk5CisgKQorKQorLS0gU2hvdWxkIG1hdGNoOiBBICgzMzMzMyByb3dz KSArIEIgKDMzMzMzIHJvd3MpICsgQyAoMzMzMzMgcm93cykgPSA5OTk5OSByb3dzCitTRUxFQ1Qg bWF0Y2hfZmlyc3QsIG1hdGNoX2xhc3QsIG1hdGNoX2xlbiBGUk9NIHJlc3VsdCBXSEVSRSBtYXRj aF9sZW4gPiAwOworCistLQorLS0gVXNpbmcgSUdOT1JFIE5VTExTCistLQorLS0gbm8gTlVMTCBy b3dzIGNhc2UuIFRoZSByZXN1bHQgc2hvdWxkIGJlIGlkZW50aWNhbCB3aXRoICJiYXNpYyB0ZXN0 IHVzaW5nIFBSRVYiCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShw cmljZSkgSUdOT1JFIE5VTExTIE9WRVIgdywKKyBsYXN0X3ZhbHVlKHByaWNlKSBJR05PUkUgTlVM TFMgT1ZFUiB3LAorIG50aF92YWx1ZSh0ZGF0ZSwgMikgSUdOT1JFIE5VTExTIE9WRVIgdyBBUyBu dGhfc2Vjb25kCisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29t cGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor IElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBVUCsgRE9XTispCisgREVGSU5FCisgIFNUQVJUIEFT IFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQ UkVWKHByaWNlKQorKTsKKworLS0gbnRoX3ZhbHVlIHdpdGggSUdOT1JFIE5VTExTIG9wdGlvbiB3 YW50cyB0byBmaW5kIHRoZSBzZWNvbmQgcm93IGJ1dAorLS0gZHVlIGEgTlVMTCBpbiB0aGUgbWlk bGxlLCBpdCByZXR1cm5zIHRoZSB0aGlyZCByb3cuCitXSVRIIGRhdGEgQVMgKAorIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAoMTAsIDEpLCAoMTEsIE5VTEwpLCAoMTIsIDMpLCAoMTMsIDQpCisg ICkgQVMgdChnaWQsIGlkKSkKKyAgU0VMRUNUIGdpZCwgaWQsIG50aF92YWx1ZShpZCwgMikgSUdO T1JFIE5VTExTIE9WRVIgdyBBUyBzZWNvbmRfdmFsLAorICBhcnJheV9hZ2coaWQpIE9WRVIgdwor ICBGUk9NIGRhdGEKKyAgV0lORE9XIHcgQVMgKAorICAgT1JERVIgQlkgZ2lkCisgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgUEFUVEVSTiAoQSspCisgICBERUZJTkUgQSBBUyBnaWQg PCAxMworICApOworCistLSBudGhfdmFsdWUgd2l0aCBJR05PUkUgTlVMTFMgb3B0aW9uIHdhbnRz IHRvIGZpbmQgdGhlIHRoaXJkIHJvdyBidXQKKy0tIGR1ZSBhIE5VTEwgaW4gdGhlIG1pZGxsZSwg aXQgcmVhY2hlcyB0aGUgZW5kIG9mIHJlZHVjZWQgZnJhbWUgYW5kCistLSByZXR1cm4gTlVMTAor V0lUSCBkYXRhIEFTICgKKyBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgKDEwLCAxKSwgKDExLCBO VUxMKSwgKDEyLCAzKSwgKDEzLCA0KQorICApIEFTIHQoZ2lkLCBpZCkpCisgIFNFTEVDVCBnaWQs IGlkLCBudGhfdmFsdWUoaWQsIDMpIElHTk9SRSBOVUxMUyBPVkVSIHcgQVMgdGhyaWRfdmFsLAor ICBhcnJheV9hZ2coaWQpIE9WRVIgdworICBGUk9NIGRhdGEKKyAgV0lORE9XIHcgQVMgKAorICAg T1JERVIgQlkgZ2lkCisgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgUEFUVEVSTiAo QSspCisgICBERUZJTkUgQSBBUyBnaWQgPCAxMworICApOworCistLSBudGhfdmFsdWUgYmV5b25k IHJlZHVjZWQgZnJhbWUgd2l0aCBJR05PUkUgTlVMTFMKKy0tIFRlc3RzIGlnbm9yZW51bGxzX2dl dGZ1bmNhcmdpbmZyYW1lIGVhcmx5IG91dC1vZi1mcmFtZSBjaGVjaworU0VMRUNUIGNvbXBhbnks IHRkYXRlLCBwcmljZSwKKyBudGhfdmFsdWUocHJpY2UsIDUpIElHTk9SRSBOVUxMUyBPVkVSIHcg QVMgbnRoXzVfaW4KK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29t cGFueQorIE9SREVSIEJZIHRkYXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgUEFUVEVS TiAoU1RBUlQgVVArIERPV04rKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBw cmljZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisK Ky0tIFZpZXcgYW5kIHBnX2dldF92aWV3ZGVmIHRlc3RzLgorQ1JFQVRFIFRFTVAgVklFVyB2X3dp bmRvdyBBUworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2Up IE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LAorIG50aF92YWx1ZSh0ZGF0ZSwgMikg T1ZFUiB3IEFTIG50aF9zZWNvbmQKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJ VElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKKyBERUZJTkUK KyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBB UyBwcmljZSA8IFBSRVYocHJpY2UpCispOworCitTRUxFQ1QgKiBGUk9NIHZfd2luZG93OworU0VM RUNUIHBnX2dldF92aWV3ZGVmKCd2X3dpbmRvdycpOworCistLQorLS0gUGF0dGVybiBvcHRpbWl6 YXRpb24gdGVzdHMKKy0tIFZJRVcgc2hvd3Mgb3JpZ2luYWwgcGF0dGVybiwgRVhQTEFJTiBzaG93 cyBvcHRpbWl6ZWQgcGF0dGVybgorLS0KKworLS0gVGVzdDogZHVwbGljYXRlIGFsdGVybmF0aXZl cyByZW1vdmFsIChBIHwgQiB8IEEpKyAtPiAoQSB8IEIpKworQ1JFQVRFIFRFTVAgVklFVyB2X29w dF9kdXAgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIgdwor IEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisg UEFUVEVSTiAoKEEgfCBCIHwgQSkrKQorIERFRklORQorICBBIEFTIHByaWNlID4gMTAwLAorICBC IEFTIHByaWNlIDw9IDEwMAorKTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigndl9vcHRfZHVwJyk7 ICAtLSBvcmlnaW5hbDogKChhIHwgYiB8IGEpKykKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU ICogRlJPTSB2X29wdF9kdXA7ICAtLSBvcHRpbWl6ZWQ6ICgoYSB8IGIpKykKKworLS0gVGVzdDog ZHVwbGljYXRlIGdyb3VwIHJlbW92YWwgKChBIHwgQikrIHwgKEEgfCBCKSspIC0+IChBIHwgQikr CitDUkVBVEUgVEVNUCBWSUVXIHZfb3B0X2R1cF9ncm91cCBBUworU0VMRUNUIGNvbXBhbnksIHRk YXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgK KyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOICgoQSB8IEIpKyB8IChBIHwgQikr KQorIERFRklORQorICBBIEFTIHByaWNlID4gMTAwLAorICBCIEFTIHByaWNlIDw9IDEwMAorKTsK K1NFTEVDVCBwZ19nZXRfdmlld2RlZigndl9vcHRfZHVwX2dyb3VwJyk7ICAtLSBvcmlnaW5hbDog KChhIHwgYikrIHwgKGEgfCBiKSspCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00g dl9vcHRfZHVwX2dyb3VwOyAgLS0gb3B0aW1pemVkOiAoKGEgfCBiKSspCisKKy0tIFRlc3Q6IGNv bnNlY3V0aXZlIHZhcnMgbWVyZ2UgKEEgQSBBKSAtPiBBezN9CitDUkVBVEUgVEVNUCBWSUVXIHZf b3B0X21lcmdlIEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBjb3VudCgqKSBPVkVS IHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55Cisg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElB TAorIFBBVFRFUk4gKEEgQSBBKQorIERFRklORQorICBBIEFTIHByaWNlID49IDE0MCBBTkQgcHJp Y2UgPD0gMTUwCispOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9tZXJnZScpOyAgLS0g b3JpZ2luYWw6IChhIGEgYSkKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSB2X29w dF9tZXJnZTsgIC0tIG9wdGltaXplZDogYXszfQorCistLSBUZXN0OiBxdWFudGlmaWVkIHZhcnMg bWVyZ2UgKEEgQSsgQSkgLT4gQXszLH0KK0NSRUFURSBURU1QIFZJRVcgdl9vcHRfbWVyZ2VfcXVh bnQgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIgdworIEZS T00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFU VEVSTiAoQSBBKyBBKQorIERFRklORQorICBBIEFTIHByaWNlID4gMTAwCispOworU0VMRUNUIHBn X2dldF92aWV3ZGVmKCd2X29wdF9tZXJnZV9xdWFudCcpOyAgLS0gb3JpZ2luYWw6IChhIGErIGEp CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gdl9vcHRfbWVyZ2VfcXVhbnQ7ICAt LSBvcHRpbWl6ZWQ6IGF7Myx9CisKKy0tIFRlc3Q6IG1lcmdlIHR3byB1bmJvdW5kZWQgKEErIEEr KSAtPiBBezIsfQorQ1JFQVRFIFRFTVAgVklFVyB2X29wdF9tZXJnZV91bmJvdW5kZWQgQVMKK1NF TEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIgdworIEZST00gc3RvY2sK KyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoQSsg QSspCisgREVGSU5FCisgIEEgQVMgcHJpY2UgPiAxMDAKKyk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdk ZWYoJ3Zfb3B0X21lcmdlX3VuYm91bmRlZCcpOyAgLS0gb3JpZ2luYWw6IChhKyBhKykKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSB2X29wdF9tZXJnZV91bmJvdW5kZWQ7ICAtLSBv cHRpbWl6ZWQ6IGF7Mix9CisKKy0tIFRlc3Q6IG1lcmdlIHdpdGggemVyby1taW4gKEEqIEErKSAt PiBBKworQ1JFQVRFIFRFTVAgVklFVyB2X29wdF9tZXJnZV9zdGFyIEFTCitTRUxFQ1QgY29tcGFu eSwgdGRhdGUsIHByaWNlLCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcg QVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKEEqIEErKQorIERFRklO RQorICBBIEFTIHByaWNlID4gMTAwCispOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9t ZXJnZV9zdGFyJyk7ICAtLSBvcmlnaW5hbDogKGEqIGErKQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBT RUxFQ1QgKiBGUk9NIHZfb3B0X21lcmdlX3N0YXI7ICAtLSBvcHRpbWl6ZWQ6IGErCisKKy0tIFRl c3Q6IGNvbXBsZXggbWVyZ2UgKEEgQXsyfSBBKyBBezN9KSAtPiBBezcsfQorQ1JFQVRFIFRFTVAg VklFVyB2X29wdF9tZXJnZV9jb21wbGV4IEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNl LCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElP TiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKEEgQXsyfSBBKyBBezN9KQorIERFRklORQorICBB IEFTIHByaWNlID4gMTAwCispOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9tZXJnZV9j b21wbGV4Jyk7ICAtLSBvcmlnaW5hbDogKGEgYXsyfSBhKyBhezN9KQorRVhQTEFJTiAoQ09TVFMg T0ZGKSBTRUxFQ1QgKiBGUk9NIHZfb3B0X21lcmdlX2NvbXBsZXg7ICAtLSBvcHRpbWl6ZWQ6IGF7 Nyx9CisKKy0tIFRlc3Q6IGdyb3VwIG1lcmdlICgoQSBCKSAoQSBCKSspIC0+IChBIEIpezIsfQor Q1JFQVRFIFRFTVAgVklFVyB2X29wdF9tZXJnZV9ncm91cCBBUworU0VMRUNUIGNvbXBhbnksIHRk YXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgK KyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOICgoQSBCKSAoQSBCKSspCisgREVG SU5FCisgIEEgQVMgcHJpY2UgPiAxMDAsCisgIEIgQVMgcHJpY2UgPD0gMTAwCispOworU0VMRUNU IHBnX2dldF92aWV3ZGVmKCd2X29wdF9tZXJnZV9ncm91cCcpOyAgLS0gb3JpZ2luYWw6ICgoYSBi KSAoYSBiKSspCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gdl9vcHRfbWVyZ2Vf Z3JvdXA7ICAtLSBleHBlY3RlZDogKGEgYil7Mix9CisKKy0tIFRlc3Q6IGdyb3VwIG1lcmdlIEEg QiAoQSBCKSsgLT4gKEEgQil7Mix9CitDUkVBVEUgVEVNUCBWSUVXIHZfb3B0X21lcmdlX2dyb3Vw MiBBUworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJP TSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRU RVJOIChBIEIgKEEgQikrKQorIERFRklORQorICBBIEFTIHByaWNlID4gMTAwLAorICBCIEFTIHBy aWNlIDw9IDEwMAorKTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigndl9vcHRfbWVyZ2VfZ3JvdXAy Jyk7ICAtLSBvcmlnaW5hbDogKGEgYiAoYSBiKSspCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVD VCAqIEZST00gdl9vcHRfbWVyZ2VfZ3JvdXAyOyAgLS0gZXhwZWN0ZWQ6IChhIGIpezIsfQorCist LSBUZXN0OiBncm91cCBtZXJnZSAoQSBCKSAoQSBCKSsgKEEgQikgLT4gKEEgQil7Myx9CitDUkVB VEUgVEVNUCBWSUVXIHZfb3B0X21lcmdlX2dyb3VwMyBBUworU0VMRUNUIGNvbXBhbnksIHRkYXRl LCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQ QVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOICgoQSBCKSAoQSBCKSsgKEEgQikpCisg REVGSU5FCisgIEEgQVMgcHJpY2UgPiAxMDAsCisgIEIgQVMgcHJpY2UgPD0gMTAwCispOworU0VM RUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9tZXJnZV9ncm91cDMnKTsgIC0tIG9yaWdpbmFsOiAo KGEgYikgKGEgYikrIChhIGIpKQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHZf b3B0X21lcmdlX2dyb3VwMzsgIC0tIGV4cGVjdGVkOiAoYSBiKXszLH0KKworLS0gVGVzdDogZ3Jv dXAgbWVyZ2UgQSBCIEEgQiAoQSBCKSsgQSBCIEEgQiAtPiAoQSBCKXs1LH0KK0NSRUFURSBURU1Q IFZJRVcgdl9vcHRfbWVyZ2VfZ3JvdXA0IEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNl LCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElP TiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKEEgQiBBIEIgKEEgQikrIEEgQiBBIEIpCisgREVG SU5FCisgIEEgQVMgcHJpY2UgPiAxMDAsCisgIEIgQVMgcHJpY2UgPD0gMTAwCispOworU0VMRUNU IHBnX2dldF92aWV3ZGVmKCd2X29wdF9tZXJnZV9ncm91cDQnKTsgIC0tIG9yaWdpbmFsOiAoYSBi IGEgYiAoYSBiKSsgYSBiIGEgYikKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSB2 X29wdF9tZXJnZV9ncm91cDQ7ICAtLSBleHBlY3RlZDogKGEgYil7NSx9CisKKy0tIFRlc3Q6IGdy b3VwIG1lcmdlIEMgQSBCIChBIEIpKyBBIEIgQyAtPiBDIChBIEIpezMsfSBDCitDUkVBVEUgVEVN UCBWSUVXIHZfb3B0X21lcmdlX2dyb3VwNSBBUworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmlj ZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJ T04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChDIEEgQiAoQSBCKSsgQSBCIEMpCisgREVGSU5F CisgIEEgQVMgcHJpY2UgPiAxMDAsCisgIEIgQVMgcHJpY2UgPD0gMTAwLAorICBDIEFTIHByaWNl ID4gMjAwCispOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9tZXJnZV9ncm91cDUnKTsg IC0tIG9yaWdpbmFsOiAoYyBhIGIgKGEgYikrIGEgYiBjKQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBT RUxFQ1QgKiBGUk9NIHZfb3B0X21lcmdlX2dyb3VwNTsgIC0tIGV4cGVjdGVkOiBjIChhIGIpezMs fSBjCisKKy0tIFRlc3Q6IGNvbnNlY3V0aXZlIEdST1VQIG1lcmdlIChBIEIpKyAoQSBCKSsgLT4g KEEgQil7Mix9CitDUkVBVEUgVEVNUCBWSUVXIHZfb3B0X21lcmdlX2NvbnNlY19ncm91cCBBUwor U0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9j aworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOICgo QSBCKSsgKEEgQikrKQorIERFRklORQorICBBIEFTIHByaWNlID4gMTAwLAorICBCIEFTIHByaWNl IDw9IDEwMAorKTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigndl9vcHRfbWVyZ2VfY29uc2VjX2dy b3VwJyk7ICAtLSBvcmlnaW5hbDogKChhIGIpKyAoYSBiKSspCitFWFBMQUlOIChDT1NUUyBPRkYp IFNFTEVDVCAqIEZST00gdl9vcHRfbWVyZ2VfY29uc2VjX2dyb3VwOyAgLS0gZXhwZWN0ZWQ6IChh IGIpezIsfQorCistLSBUZXN0OiBjb25zZWN1dGl2ZSBHUk9VUCBtZXJnZSB3aXRoIGRpZmZlcmVu dCBxdWFudGlmaWVycyAoQSBCKXsyfSAoQSBCKXszfSAtPiAoQSBCKXs1fQorQ1JFQVRFIFRFTVAg VklFVyB2X29wdF9tZXJnZV9jb25zZWNfZ3JvdXAyIEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUs IHByaWNlLCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBB UlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKChBIEIpezJ9IChBIEIpezN9KQorIERF RklORQorICBBIEFTIHByaWNlID4gMTAwLAorICBCIEFTIHByaWNlIDw9IDEwMAorKTsKK1NFTEVD VCBwZ19nZXRfdmlld2RlZigndl9vcHRfbWVyZ2VfY29uc2VjX2dyb3VwMicpOyAgLS0gb3JpZ2lu YWw6ICgoYSBiKXsyfSAoYSBiKXszfSkKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJP TSB2X29wdF9tZXJnZV9jb25zZWNfZ3JvdXAyOyAgLS0gZXhwZWN0ZWQ6IChhIGIpezV9CisKKy0t IFRlc3Qge259IHF1YW50aWZpZXIgZGlzcGxheQorQ1JFQVRFIFRFTVAgVklFVyB2X3F1YW50aWZp ZXJfbiBBUworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3Cisg RlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQ QVRURVJOIChBezN9KQorIERFRklORQorICBBIEFTIHByaWNlID4gMTAwCispOworU0VMRUNUIHBn X2dldF92aWV3ZGVmKCd2X3F1YW50aWZpZXJfbicpOworCistLSBUZXN0IHtuLH0gcXVhbnRpZmll ciBkaXNwbGF5CitDUkVBVEUgVEVNUCBWSUVXIHZfcXVhbnRpZmllcl9uX3BsdXMgQVMKK1NFTEVD VCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIgdworIEZST00gc3RvY2sKKyBX SU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoQXsyLH0p CisgREVGSU5FCisgIEEgQVMgcHJpY2UgPiAxMDAKKyk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYo J3ZfcXVhbnRpZmllcl9uX3BsdXMnKTsKKworLS0gVGVzdDogZmxhdHRlbiBuZXN0ZWQgU0VRIChB IChCIEMpKSAtPiBBIEIgQworQ1JFQVRFIFRFTVAgVklFVyB2X29wdF9mbGF0dGVuX3NlcSBBUwor U0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9j aworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChB IChCIEMpKQorIERFRklORQorICBBIEFTIHByaWNlID4gMTAwLAorICBCIEFTIHByaWNlID4gMTUw LAorICBDIEFTIHByaWNlIDwgMTUwCispOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9m bGF0dGVuX3NlcScpOyAgLS0gb3JpZ2luYWw6IChhIChiIGMpKQorRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgKiBGUk9NIHZfb3B0X2ZsYXR0ZW5fc2VxOyAgLS0gb3B0aW1pemVkOiBhIGIgYwor CistLSBUZXN0OiBmbGF0dGVuIG5lc3RlZCBBTFQgKEEgfCAoQiB8IEMpKSAtPiAoQSB8IEIgfCBD KQorQ1JFQVRFIFRFTVAgVklFVyB2X29wdF9mbGF0dGVuX2FsdCBBUworU0VMRUNUIGNvbXBhbnks IHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFT ICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOICgoQSB8IChCIHwgQykpKykK KyBERUZJTkUKKyAgQSBBUyBwcmljZSA+IDIwMCwKKyAgQiBBUyBwcmljZSA+IDEwMCwKKyAgQyBB UyBwcmljZSA8PSAxMDAKKyk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Zfb3B0X2ZsYXR0ZW5f YWx0Jyk7ICAtLSBvcmlnaW5hbDogKChhIHwgKGIgfCBjKSkrKQorRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgKiBGUk9NIHZfb3B0X2ZsYXR0ZW5fYWx0OyAgLS0gb3B0aW1pemVkOiAoKGEgfCBi IHwgYykpKworCistLSBUZXN0OiB1bndyYXAgR1JPVVB7MSwxfSAoKEEpKSAtPiBBCitDUkVBVEUg VEVNUCBWSUVXIHZfb3B0X3Vud3JhcF9ncm91cCBBUworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBw cmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJU SVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOICgoKEEpKSkKKyBERUZJTkUKKyAgQSBBUyBw cmljZSA+IDEwMAorKTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigndl9vcHRfdW53cmFwX2dyb3Vw Jyk7ICAtLSBvcmlnaW5hbDogKCgoYSkpKQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHZfb3B0X3Vud3JhcF9ncm91cDsgIC0tIG9wdGltaXplZDogYQorCistLSBUZXN0OiBxdWFu dGlmaWVyIG11bHRpcGxpY2F0aW9uIChBezJ9KXszfSAtPiBBezZ9CitDUkVBVEUgVEVNUCBWSUVX IHZfb3B0X3F1YW50X211bHQgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50 KCopIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNv bXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyBJTklUSUFMCisgUEFUVEVSTiAoKEF7Mn0pezN9KQorIERFRklORQorICBBIEFTIHByaWNlID4g MTAwCispOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9xdWFudF9tdWx0Jyk7ICAtLSBv cmlnaW5hbDogKChhezJ9KXszfSkKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSB2 X29wdF9xdWFudF9tdWx0OyAgLS0gb3B0aW1pemVkOiBhezZ9CisKKy0tIFRlc3Q6IHF1YW50aWZp ZXIgbXVsdGlwbGljYXRpb24gKEF7Miw0fSl7M30gLT4gQXs2LDEyfQorQ1JFQVRFIFRFTVAgVklF VyB2X29wdF9xdWFudF9tdWx0X3JhbmdlIEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNl LCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElP TiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKChBezIsNH0pezN9KQorIERFRklORQorICBBIEFT IHByaWNlID4gMTAwCispOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9xdWFudF9tdWx0 X3JhbmdlJyk7ICAtLSBvcmlnaW5hbDogKChhezIsNH0pezN9KQorRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgKiBGUk9NIHZfb3B0X3F1YW50X211bHRfcmFuZ2U7ICAtLSBvcHRpbWl6ZWQ6IGF7 NiwxMn0KKworLS0gVGVzdDogcXVhbnRpZmllciBtdWx0aXBsaWNhdGlvbiBibG9ja2VkIChBezJ9 KXszLDV9IC0+IG5vIGNoYW5nZQorLS0gb3V0ZXIgcmFuZ2Ugd2l0aCBjaGlsZCBleGFjdCA+IDEg Y2F1c2VzIGdhcHMgKDYsOCwxMCBub3QgNiw3LDgsOSwxMCkKK0NSRUFURSBURU1QIFZJRVcgdl9v cHRfcXVhbnRfbXVsdF9yYW5nZTIgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNv dW50KCopIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZ IGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyBJTklUSUFMCisgUEFUVEVSTiAoKEF7Mn0pezMsNX0pCisgREVGSU5FCisgIEEgQVMgcHJp Y2UgPiAxMDAKKyk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Zfb3B0X3F1YW50X211bHRfcmFu Z2UyJyk7ICAtLSBvcmlnaW5hbDogKChhezJ9KXszLDV9KQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBT RUxFQ1QgKiBGUk9NIHZfb3B0X3F1YW50X211bHRfcmFuZ2UyOyAgLS0gTk9UIG9wdGltaXplZDog KGF7Mn0pezMsNX0KKworLS0gVGVzdDogcXVhbnRpZmllciBtdWx0aXBsaWNhdGlvbiBibG9ja2Vk IGJ5IElORiAoQSspezN9IC0+IG5vIGNoYW5nZQorQ1JFQVRFIFRFTVAgVklFVyB2X29wdF9xdWFu dF9tdWx0X2luZiBBUworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZF UiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQor IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJ QUwKKyBQQVRURVJOICgoQSspezN9KQorIERFRklORQorICBBIEFTIHByaWNlID4gMTAwCispOwor U0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9xdWFudF9tdWx0X2luZicpOyAgLS0gb3JpZ2lu YWw6ICgoYSspezN9KQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHZfb3B0X3F1 YW50X211bHRfaW5mOyAgLS0gbm8gbXVsdGlwbHk6IChhKyl7M30KKworLS0gVGVzdDogdW53cmFw IHNpbmdsZS1pdGVtIEFMVCBhZnRlciBkdXBsaWNhdGUgcmVtb3ZhbCAoQSB8IEEpIC0+IEEKK0NS RUFURSBURU1QIFZJRVcgdl9vcHRfdW53cmFwX2FsdCBBUworU0VMRUNUIGNvbXBhbnksIHRkYXRl LCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQ QVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOICgoQSB8IEEpKykKKyBERUZJTkUKKyAg QSBBUyBwcmljZSA+IDEwMAorKTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigndl9vcHRfdW53cmFw X2FsdCcpOyAgLS0gb3JpZ2luYWw6ICgoYSB8IGEpKykKK0VYUExBSU4gKENPU1RTIE9GRikgU0VM RUNUICogRlJPTSB2X29wdF91bndyYXBfYWx0OyAgLS0gb3B0aW1pemVkOiBhKworCistLSBUZXN0 OiBHUk9VUHsxLDF9IHRvIFNFUSB3aXRoIGZsYXR0ZW4gKChBIEIpKEMgRCkpIC0+IEEgQiBDIEQK K0NSRUFURSBURU1QIFZJRVcgdl9vcHRfZ3JvdXBfdG9fc2VxIEFTCitTRUxFQ1QgY29tcGFueSwg dGRhdGUsIHByaWNlLCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMg KAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKCgoQSBCKShDIEQpKSkKKyBE RUZJTkUKKyAgQSBBUyBwcmljZSA+IDIwMCwKKyAgQiBBUyBwcmljZSA+IDE1MCwKKyAgQyBBUyBw cmljZSA+IDEwMCwKKyAgRCBBUyBwcmljZSA8PSAxMDAKKyk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdk ZWYoJ3Zfb3B0X2dyb3VwX3RvX3NlcScpOyAgLS0gb3JpZ2luYWw6ICgoKGEgYikoYyBkKSkpCitF WFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gdl9vcHRfZ3JvdXBfdG9fc2VxOyAgLS0g b3B0aW1pemVkOiBhIGIgYyBkCisKKy0tIFRlc3Q6IGNvbWJpbmVkIGNvbnNlY3V0aXZlIEdST1VQ ICsgcHJlZml4IG1lcmdlIEEgQiAoQSBCKSsgKEEgQikrIC0+IChBIEIpezMsfQorQ1JFQVRFIFRF TVAgVklFVyB2X29wdF9jb21iaW5lZF9tZXJnZSBBUworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBw cmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJU SVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChBIEIgKEEgQikrIChBIEIpKykKKyBERUZJ TkUKKyAgQSBBUyBwcmljZSA+IDEwMCwKKyAgQiBBUyBwcmljZSA8PSAxMDAKKyk7CitTRUxFQ1Qg cGdfZ2V0X3ZpZXdkZWYoJ3Zfb3B0X2NvbWJpbmVkX21lcmdlJyk7ICAtLSBvcmlnaW5hbDogKGEg YiAoYSBiKSsgKGEgYikrKQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHZfb3B0 X2NvbWJpbmVkX21lcmdlOyAgLS0gZXhwZWN0ZWQ6IChhIGIpezMsfQorCistLSBUZXN0OiBuZXN0 ZWQgQUxUIHBhdHRlcm4gLSBidWcgcmVwcm9kdWN0aW9uCitDUkVBVEUgVEVNUCBWSUVXIHZfb3B0 X25lc3RlZF9hbHQgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9W RVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkK KyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklU SUFMCisgUEFUVEVSTiAoKChBIEIpIHwgQykgRCB8IEEgQiBDKQorIERFRklORQorICBBIEFTIHBy aWNlIDw9IDEwMCwKKyAgQiBBUyBwcmljZSA8PSAxNTAsCisgIEMgQVMgcHJpY2UgPD0gMjAwLAor ICBEIEFTIHByaWNlID4gMjAwCispOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X29wdF9uZXN0 ZWRfYWx0Jyk7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gdl9vcHRfbmVzdGVk X2FsdDsKKworLS0gVGVzdDogbmVzdGVkIEFMVCB3aXRoIHVuYm91bmRlZCAtIEErIGluc2lkZQor Q1JFQVRFIFRFTVAgVklFVyB2X29wdF9uZXN0ZWRfYWx0MiBBUworU0VMRUNUIGNvbXBhbnksIHRk YXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgK KyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOICgoKEErIEIpIHwgQykgRCB8IEEg QiBDKQorIERFRklORQorICBBIEFTIHByaWNlIDw9IDEwMCwKKyAgQiBBUyBwcmljZSA8PSAxNTAs CisgIEMgQVMgcHJpY2UgPD0gMjAwLAorICBEIEFTIHByaWNlID4gMjAwCispOworU0VMRUNUIHBn X2dldF92aWV3ZGVmKCd2X29wdF9uZXN0ZWRfYWx0MicpOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBT RUxFQ1QgKiBGUk9NIHZfb3B0X25lc3RlZF9hbHQyOworCistLQorLS0gRXJyb3IgY2FzZXMKKy0t CisKKy0tIHJvdyBwYXR0ZXJuIGRlZmluaXRpb24gdmFyaWFibGUgbmFtZSBtdXN0IG5vdCBhcHBl YXIgbW9yZSB0aGFuIG9uY2UKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3Zh bHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sK KyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQor IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJ QUwKKyBQQVRURVJOIChTVEFSVCBVUCsgRE9XTispCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUs CisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHBy aWNlKSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKQorKTsKKworLS0gc3VicXVlcmllcyBp biBERUZJTkUgY2xhdXNlIGFyZSBub3Qgc3VwcG9ydGVkCitTRUxFQ1QgY29tcGFueSwgdGRhdGUs IHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVS IHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55Cisg T1JERVIgQlkgdGRhdGUKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgTE9XUFJJQ0UpCisgREVGSU5FCisg IFNUQVJUIEFTIFRSVUUsCisgIExPV1BSSUNFIEFTIHByaWNlIDwgKFNFTEVDVCAxMDApCispOwor CistLSBhZ2dyZWdhdGVzIGluIERFRklORSBjbGF1c2UgYXJlIG5vdCBzdXBwb3J0ZWQKK1NFTEVD VCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3Rf dmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElU SU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBMT1dQ UklDRSkKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgTE9XUFJJQ0UgQVMgcHJpY2UgPCBj b3VudCgqKQorKTsKKworLS0gRlJBTUUgbXVzdCBzdGFydCBhdCBjdXJyZW50IHJvdyB3aGVuIHJv dyBwYXR0ZXJuIHJlY29nbml0aW9uIGlzIHVzZWQKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJp Y2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdwor IEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRF UiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKKyBERUZJ TkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9X TiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworCistLSBFWENMVURFIGlzIG5vdCBwZXJtaXR0 ZWQKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVS IHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAo CisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEVYQ0xVREUgQ1VSUkVOVCBST1cK KyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgVVArIERPV04rKQorIERFRklORQorICBTVEFSVCBB UyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwg UFJFVihwcmljZSkKKyk7CisKKy0tIFNFRUsgaXMgbm90IHN1cHBvcnRlZAorU0VMRUNUIGNvbXBh bnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShw cmljZSkgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkg Y29tcGFueQorIE9SREVSIEJZIHRkYXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworIFNFRUsK KyBQQVRURVJOIChTVEFSVCBVUCsgRE9XTispCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisg IFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNl KQorKTsKKworLS0gUFJFVidzIGFyZ3VtZW50IG11c3QgaGF2ZSBhdCBsZWFzdCAxIGNvbHVtbiBy ZWZlcmVuY2UKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNl KSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cg dyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgVVArIERPV04rKQorIERF RklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYoMSksCisgIERPV04g QVMgcHJpY2UgPCBQUkVWKDEpCispOworCistLSBVbnN1cHBvcnRlZCBxdWFudGlmaWVyCitTRUxF Q1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0 X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJ VElPTiBCWSBjb21wYW55CisgT1JERVIgQlkgdGRhdGUKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9X CisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIFVQfiBET1dOKykKKyBERUZJTkUKKyAgU1RBUlQg QVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKDEpLAorICBET1dOIEFTIHByaWNlIDwgUFJF VigxKQorKTsKKworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJp Y2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRP VyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIE9SREVSIEJZIHRkYXRlCisgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBVUCs/IERPV04rKQor IERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYoMSksCisgIERP V04gQVMgcHJpY2UgPCBQUkVWKDEpCispOworCistLSBNYXhpbXVtIHBhdHRlcm4gdmFyaWFibGVz IGlzIDI1MSAoUlBSX1ZBUklEX01BWCkKKworLS0gRXJyb3I6IDI1MiB2YXJpYWJsZXMgZXhjZWVk cyBsaW1pdCBvZiAyNTEKK0RPICQkCitERUNMQVJFCisgICAgcGF0dGVybl92YXJzIHRleHQ7Cisg ICAgZGVmaW5lX3ZhcnMgdGV4dDsKKyAgICBxdWVyeSB0ZXh0OworQkVHSU4KKyAgICBTRUxFQ1Qg c3RyaW5nX2FnZygndicgfHwgbHBhZChpOjp0ZXh0LCAzLCAnMCcpLCAnICcpLAorICAgICAgICAg ICBzdHJpbmdfYWdnKCd2JyB8fCBscGFkKGk6OnRleHQsIDMsICcwJykgfHwgJyBBUyBUUlVFJywg JywgJykKKyAgICBJTlRPIHBhdHRlcm5fdmFycywgZGVmaW5lX3ZhcnMKKyAgICBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAyNTIpIGk7CisKKyAgICBxdWVyeSA6PSBmb3JtYXQoJ1NFTEVDVCAqIEZS T00gKFNFTEVDVCAxIEFTIHgpIHQgV0lORE9XIHcgQVMgKAorICAgICAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoJXMp CisgICAgICAgIERFRklORSAlcyknLCBwYXR0ZXJuX3ZhcnMsIGRlZmluZV92YXJzKTsKKworICAg IEVYRUNVVEUgcXVlcnk7CitFTkQ7CiskJDsKKworLS0gRXJyb3I6IDI1MyB2YXJpYWJsZXMgZXhj ZWVkcyBsaW1pdCBvZiAyNTEKK0RPICQkCitERUNMQVJFCisgICAgcGF0dGVybl92YXJzIHRleHQ7 CisgICAgZGVmaW5lX3ZhcnMgdGV4dDsKKyAgICBxdWVyeSB0ZXh0OworQkVHSU4KKyAgICBTRUxF Q1Qgc3RyaW5nX2FnZygndicgfHwgbHBhZChpOjp0ZXh0LCAzLCAnMCcpLCAnICcpLAorICAgICAg ICAgICBzdHJpbmdfYWdnKCd2JyB8fCBscGFkKGk6OnRleHQsIDMsICcwJykgfHwgJyBBUyBUUlVF JywgJywgJykKKyAgICBJTlRPIHBhdHRlcm5fdmFycywgZGVmaW5lX3ZhcnMKKyAgICBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAyNTMpIGk7CisKKyAgICBxdWVyeSA6PSBmb3JtYXQoJ1NFTEVDVCAq IEZST00gKFNFTEVDVCAxIEFTIHgpIHQgV0lORE9XIHcgQVMgKAorICAgICAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAo JXMpCisgICAgICAgIERFRklORSAlcyknLCBwYXR0ZXJuX3ZhcnMsIGRlZmluZV92YXJzKTsKKwor ICAgIEVYRUNVVEUgcXVlcnk7CitFTkQ7CiskJDsKKworICAgIENSRUFURSBURU1QIFRBQkxFIHN0 b2NrX251bGwgKGNvbXBhbnkgVEVYVCwgdGRhdGUgREFURSwgcHJpY2UgSU5URUdFUik7CisgICAg SU5TRVJUIElOVE8gc3RvY2tfbnVsbCBWQUxVRVMgKCdjMScsICcyMDIzLTA3LTAxJywgMTAwKTsK KyAgICBJTlNFUlQgSU5UTyBzdG9ja19udWxsIFZBTFVFUyAoJ2MxJywgJzIwMjMtMDctMDInLCBO VUxMKTsgIC0tIE5VTEwgaW4gbWlkZGxlCisgICAgSU5TRVJUIElOVE8gc3RvY2tfbnVsbCBWQUxV RVMgKCdjMScsICcyMDIzLTA3LTAzJywgMjAwKTsKKyAgICBJTlNFUlQgSU5UTyBzdG9ja19udWxs IFZBTFVFUyAoJ2MxJywgJzIwMjMtMDctMDQnLCAxNTApOworCisgICAgU0VMRUNUIGNvbXBhbnks IHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3IEFTIG1hdGNoX2NvdW50CisgICAgRlJPTSBz dG9ja19udWxsCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkK KyAgICAgIE9SREVSIEJZIHRkYXRlCisgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgIFBBVFRFUk4gKFNUQVJUIFVQIERPV04pCisgICAg ICBERUZJTkUgU1RBUlQgQVMgVFJVRSwgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwgRE9XTiBB UyBwcmljZSA8CitQUkVWKHByaWNlKQorICAgICk7CisKKworLS0gT3ZlcmxhcHBpbmcgbWF0Y2gg dGVzdHMgKHJlcXVpcmVzIG11bHRpLWNvbnRleHQgZm9yIGNvcnJlY3QgYmVoYXZpb3IpCistLSBV c2luZyBhcnJheSBmbGFnczogJ1gnID0gQU5ZKGZsYWdzKSBmb3IgbXVsdGktVFJVRSBzdXBwb3J0 CisKKy0tIFRlc3QgMTogQSBCIEMgRCBFIHwgQiBDIEQgfCBDIEQgRSBGIC0gdGhyZWUgb3Zlcmxh cHBpbmcgcGF0dGVybnMKKy0tIERpZmZlcmVudCBlbmQgcG9pbnRzOiBCIEMgRCAoNCksIEEgQiBD IEQgRSAoNSksIEMgRCBFIEYgKDYpCitXSVRIIHRlc3Rfb3ZlcmxhcDEgQVMgKAorICAgIFNFTEVD VCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBB UlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgQVJSQVlb J0QnXSksCisgICAgICAgICg1LCBBUlJBWVsnRSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydGJ10p CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9lbmQKK0ZST00gdGVzdF9vdmVybGFwMQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMgRCBF IHwgQiBDIEQgfCBDIEQgRSBGKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShm bGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycg PSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncyksCisgICAgICAgIEUg QVMgJ0UnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRiBBUyAnRicgPSBBTlkoZmxhZ3MpCispOwor CitXSVRIIHRlc3Rfb3ZlcmxhcDEgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAg KDMsIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0QnXSksCisgICAgICAgICg1LCBB UlJBWVsnRSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydGJ10pCisgICAgKSBBUyB0KGlkLCBmbGFn cykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9vdmVy bGFwMQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBU TyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSB8IEIgQyBEIHwgQyBEIEUgRikKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdC JyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg RCBBUyAnRCcgPSBBTlkoZmxhZ3MpLAorICAgICAgICBFIEFTICdFJyA9IEFOWShmbGFncyksCisg ICAgICAgIEYgQVMgJ0YnID0gQU5ZKGZsYWdzKQorKTsKKy0tIFBBU1QgTEFTVDogb25seSBvbmUg bWF0Y2gKKy0tIFRPIE5FWFQgUk9XIHdpdGggbXVsdGktY29udGV4dDogdGhyZWUgbWF0Y2hlcwor LS0gICBSb3cgMTogQSBCIEMgRCBFICgxLTUpCistLSAgIFJvdyAyOiBCIEMgRCAoMi00KSA8LSBl bmRzIGZpcnN0IQorLS0gICBSb3cgMzogQyBEIEUgRiAoMy02KSA8LSBlbmRzIGxhc3QhCisKKy0t IFRlc3QgMWI6IExvbmdlciBwYXR0ZXJuIEZBSUxTLCBzaG9ydGVyIHBhdHRlcm4gc2hvdWxkIHN1 cnZpdmUKKy0tIFBhdHRlcm46IEErIEIgQyBEIEUgfCBCKyBDCistLSBBKyBCIEMgRCBFIGZhaWxz IChubyBFIGZvdW5kIGluIHNlcXVlbmNlKQorLS0gQisgQyBtYXRjaGVzIGF0IHJvd3MgMi0zCist LSBSZXN1bHQ6IG1hdGNoIDItMyAoQisgQykKK1dJVEggdGVzdF9vdmVybGFwMWIgQVMgKAorICAg IFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAg ICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwg QVJSQVlbJ0QnXSksCisgICAgICAgICg1LCBBUlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb3Zl cmxhcDFiCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCIEMgRCBFIHwgQisgQykKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAn RCcgPSBBTlkoZmxhZ3MpLAorICAgICAgICBFIEFTICdFJyA9IEFOWShmbGFncykKKyk7CisKKy0t IFRlc3QgMjogQSBCKyBDIHwgQisgRCAtIGxvbmcgQiBzZXF1ZW5jZSB3aXRoIGRpZmZlcmVudCBl bmRpbmdzCitXSVRIIHRlc3Rfb3ZlcmxhcDIgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UworICAgICAgICAoMSwgIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgIEFSUkFZWydCJ10pLAor ICAgICAgICAoMywgIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgIEFSUkFZWydCJ10pLAorICAg ICAgICAoNSwgIEFSUkFZWydCJ10pLAorICAgICAgICAoNiwgIEFSUkFZWydDJ10pLAorICAgICAg ICAoNywgIEFSUkFZWydCJ10pLAorICAgICAgICAoOCwgIEFSUkFZWydCJ10pLAorICAgICAgICAo OSwgIEFSUkFZWydCJ10pLAorICAgICAgICAoMTAsIEFSUkFZWydEJ10pCisgICAgKSBBUyB0KGlk LCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVz dF9vdmVybGFwMgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQisgQyB8IEIrIEQpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0Qn ID0gQU5ZKGZsYWdzKQorKTsKKy0tIEN1cnJlbnQgcmVzdWx0IChjb3JyZWN0KToKKy0tICAgUm93 IDE6IEEgQisgQyAoMS02KQorLS0gICBSb3cgNy05OiBCKyBEICg3LTEwLCA4LTEwLCA5LTEwKQor LS0gTm90ZTogUm93IDItNiBjYW5ub3QgbWF0Y2ggQisgRCBiZWNhdXNlIFJvdyA2IGlzIEMsIG5v dCBECistLSBXaXRoIGFic29ycHRpb246IDgtMTAgYW5kIDktMTAgd291bGQgYmUgYWJzb3JiZWQg YnkgNy0xMCAoZWFybGllciBjb250ZXh0IGNvdmVycyBsYXRlcikKKworLS0gVGVzdCAzOiBHcmVl ZHkgcXVhbnRpZmllciB3aXRoIGxhdGUgZmFpbHVyZSAtIEEgQiBDKyBEIHwgQSBCCistLSBQYXR0 ZXJuIGV4cGVjdHMgRCBhZnRlciBDKywgYnV0IEUgY29tZXMgaW5zdGVhZCAoImJldHJheWFsIikK K1dJVEggdGVzdF9iZXRyYXlhbCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAg ICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAo MywgQVJSQVlbJ0MnXSksCisgICAgICAgICg0LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDUsIEFS UkFZWydDJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0UnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdz KQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9z dGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2JldHJh eWFsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIgQysgRCB8IEEgQikKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFn cyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBB TlkoZmxhZ3MpCispOworLS0gQSBCIEMrIEQgZmFpbHMgYXQgUm93IDYgKEUgaW5zdGVhZCBvZiBE KQorLS0gUXVlc3Rpb246IERvZXMgaXQgZmFsbGJhY2sgdG8gQSBCICgxLTIpPworCistLSBUZXN0 IDQ6IExleGljYWwgT3JkZXIgdGVzdCAtIEEgQiBDIHwgQSBCIEMgRCBFCistLSBTUUwgc3RhbmRh cmQ6IGZpcnN0IG1hdGNoaW5nIGFsdGVybmF0aXZlIHdpbnMKK1dJVEggdGVzdF9sZXhpY2FsIEFT ICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAor ICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQyddKSwKKyAgICAg ICAgKDQsIEFSUkFZWydEJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0UnXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0X2xleGljYWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDIHwgQSBCIEMgRCBFKQorICAg IERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBE IEFTICdEJyA9IEFOWShmbGFncyksCisgICAgICAgIEUgQVMgJ0UnID0gQU5ZKGZsYWdzKQorKTsK Ky0tIFNRTCBzdGFuZGFyZCBMZXhpY2FsIE9yZGVyOiBBIEIgQyAoMS0zKSB3aW5zIChmaXJzdCBh bHRlcm5hdGl2ZSkKKworLS0gVGVzdCA0YjogUmV2ZXJzZWQgcGF0dGVybiBvcmRlciAtIEEgQiBD IEQgRSB8IEEgQiBDCitXSVRIIHRlc3RfbGV4aWNhbDIgQVMgKAorICAgIFNFTEVDVCAqIEZST00g KFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQidd KSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0QnXSksCisg ICAgICAgICg1LCBBUlJBWVsnRSddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbGV4aWNhbDIKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKEEgQiBDIEQgRSB8IEEgQiBDKQorICAgIERFRklORQorICAgICAgICBBIEFT ICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncyks CisgICAgICAgIEUgQVMgJ0UnID0gQU5ZKGZsYWdzKQorKTsKKy0tIFNRTCBzdGFuZGFyZCBMZXhp Y2FsIE9yZGVyOiBBIEIgQyBEIEUgKDEtNSkgd2lucyAoZmlyc3QgYWx0ZXJuYXRpdmUpCisKKy0t IFRlc3QgNTogTXVsdGlwbGUgVFJVRSBpbiBzaW5nbGUgcm93IChvdmVybGFwcGluZyBwYXR0ZXJu IHZhcmlhYmxlcykKKy0tIEVhY2ggcm93IG1hdGNoZXMgbXVsdGlwbGUgREVGSU5FIGNvbmRpdGlv bnMgc2ltdWx0YW5lb3VzbHkKK1dJVEggdGVzdF9tdWx0aV90cnVlIEFTICgKKyAgICBTRUxFQ1Qg KiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywnQiddKSwgICAgICAgIC0tIEEg YW5kIEIgYm90aCBUUlVFCisgICAgICAgICgyLCBBUlJBWVsnQicsJ0MnXSksICAgICAgICAtLSBC IGFuZCBDIGJvdGggVFJVRQorICAgICAgICAoMywgQVJSQVlbJ0MnLCdEJ10pLCAgICAgICAgLS0g QyBhbmQgRCBib3RoIFRSVUUKKyAgICAgICAgKDQsIEFSUkFZWydEJywnRSddKSwgICAgICAgIC0t IEQgYW5kIEUgYm90aCBUUlVFCisgICAgICAgICg1LCBBUlJBWVsnRScsJ18nXSkgICAgICAgICAt LSBFIG9ubHkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X211bHRpX3RydWUKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KEEgQiBDIEQgRSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpLAorICAgICAgICBFIEFTICdFJyA9 IEFOWShmbGFncykKKyk7CistLSBSb3cgMTogQT1ULCBCPVQgLT4gbWF0Y2hlcyBBCistLSBSb3cg MjogQj1ULCBDPVQgLT4gbWF0Y2hlcyBCCistLSBSb3cgMzogQz1ULCBEPVQgLT4gbWF0Y2hlcyBD CistLSBSb3cgNDogRD1ULCBFPVQgLT4gbWF0Y2hlcyBECistLSBSb3cgNTogRT1UICAgICAgLT4g bWF0Y2hlcyBFCistLSBSZXN1bHQ6IG1hdGNoIDEtNSAoQSBCIEMgRCBFKQorCistLSBUZXN0IDY6 IERpYWdvbmFsIHBhdHRlcm4gd2l0aCBtdWx0aS1UUlVFIChzaGlmdGVkIG92ZXJsYXApCitXSVRI IHRlc3RfZGlhZ29uYWwgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgQVJSQVlbJ0EnLCdfJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InLCdBJ10pLAorICAgICAg ICAoMywgQVJSQVlbJ0MnLCdCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0QnLCdDJ10pLAorICAg ICAgICAoNSwgQVJSQVlbJ18nLCdEJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9kaWFnb25hbAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVwor ICAgIFBBVFRFUk4gKEEgQiBDIEQpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdD JyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsKKy0tIFBv c3NpYmxlIG1hdGNoZXM6CistLSAgIFN0YXJ0IFJvdyAxOiBBKDEpIEIoMikgQygzKSBEKDQpIC0+ IDEtNAorLS0gICBTdGFydCBSb3cgMjogQSgyKSBCKDMpIEMoNCkgRCg1KSAtPiAyLTUgKGJlY2F1 c2UgUm93IDIgaGFzIEEgdG9vISkKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQ29udGV4dCBBYnNvcnB0 aW9uIFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIFRlc3QgYWJzb3JwdGlvbiAxOiBCYXNpYyBB KyBwYXR0ZXJuIC0gbGF0ZXIgY29udGV4dHMgYWJzb3JiZWQgYnkgZWFybGllcgorV0lUSCB0ZXN0 X2Fic29yYl9iYXNpYyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJS QVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydC J10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcmJfYmFzaWMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKykK KyAgICBERUZJTkUgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworLS0gUGF0dGVybiBBKyBpcyBh YnNvcmJhYmxlICh1bmJvdW5kZWQgZmlyc3QgZWxlbWVudCwgb25seSBvbmUgdW5ib3VuZGVkKQor LS0gNCBtYXRjaGVzOiAoMS00LCAyLTQsIDMtNCwgNC00KQorCistLSBUZXN0IGFic29ycHRpb24g MjogQSsgQiBwYXR0ZXJuIC0gYWJzb3JwdGlvbiB3aXRoIGZpeGVkIHN1ZmZpeAorV0lUSCB0ZXN0 X2Fic29yYl9zdWZmaXggQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFS UkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsn WCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiX3N1ZmZpeAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEr IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg QiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworLS0gUGF0dGVybiBBKyBCIGlzIGFic29yYmFibGUg KEErIHVuYm91bmRlZCBmaXJzdCwgQiBib3VuZGVkIHN1ZmZpeCkKKy0tIEFsbCBwb3RlbnRpYWwg bWF0Y2hlcyBlbmQgYXQgc2FtZSByb3cgKHJvdyA0IHdpdGggQikKKy0tIDMgbWF0Y2hlczogKDEt NCwgMi00LCAzLTQpCisKKy0tIFRlc3QgYWJzb3JwdGlvbiAzOiBQZXItYnJhbmNoIGFic29ycHRp b24gd2l0aCBBTFQgKEIrIEMgfCBCKyBEKQorV0lUSCB0ZXN0X2Fic29yYl9hbHQgQVMgKAorICAg IFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InXSksCisgICAgICAg ICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwg QVJSQVlbJ0QnXSksCisgICAgICAgICg1LCBBUlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJz b3JiX2FsdAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEIrIEMgfCBCKyBEKQorICAgIERFRklORQorICAg ICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCispOworLS0gQm90aCBicmFuY2hlcyBC KyBDIGFuZCBCKyBEIGFyZSBhYnNvcmJhYmxlIChCKyB1bmJvdW5kZWQgZmlyc3QpCistLSBCKyBE IGJyYW5jaCBtYXRjaGVzOiAzIG1hdGNoZXMgKDEtNCwgMi00LCAzLTQpCisKKy0tIFRlc3QgYWJz b3JwdGlvbiA0OiBOb24tYWJzb3JiYWJsZSBwYXR0ZXJuIChBIEIrIC0gdW5ib3VuZGVkIG5vdCBm aXJzdCkKK1dJVEggdGVzdF9ub19hYnNvcmIgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAg ICAgICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAg ICg1LCBBUlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZs YWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfbm9fYWJzb3JiCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFU VEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CistLSBQYXR0ZXJuIEEgQisgaXMgTk9U IGFic29yYmFibGUgKEEgYm91bmRlZCBmaXJzdCwgQisgdW5ib3VuZGVkIGJ1dCBub3QgZmlyc3Qp CistLSBPbmx5IFJvdyAxIGNhbiBzdGFydCBtYXRjaCAob25seSByb3cgd2l0aCBBKSwgc28gb25s eSBvbmUgbWF0Y2g6IDEtNAorCistLSBUZXN0IGFic29ycHRpb24gNTogR1JPVVAgbWVyZ2UgZW5h YmxlcyBhYnNvcnB0aW9uCitXSVRIIHRlc3RfYWJzb3JiX2dyb3VwIEFTICgKKyAgICBTRUxFQ1Qg KiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJS QVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydC J10pLAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSksCisgICAgICAgICg2LCBBUlJBWVsnQiddKSwK KyAgICAgICAgKDcsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcmJfZ3JvdXAKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBS T1cKKyAgICBQQVRURVJOICgoQSBCKSAoQSBCKSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMg J0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworLS0g UGF0dGVybiBvcHRpbWl6ZWQ6IChBIEIpIChBIEIpKyAtPiAoQSBCKXsyLH0KKy0tIDIgbWF0Y2hl czogMS02ICgzIHJlcHMpLCAzLTYgKDIgcmVwcykKKworLS0gVGVzdCBhYnNvcnB0aW9uIDY6IE11 bHRpcGxlIHVuYm91bmRlZCAtIGZpcnN0IGVsZW1lbnQgdW5ib3VuZGVkIGVuYWJsZXMgYWJzb3Jw dGlvbgorV0lUSCB0ZXN0X211bHRpX3VuYm91bmRlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAo VkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10p LAorICAgICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAg ICAgICAgKDUsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBp ZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9tdWx0aV91bmJvdW5kZWQKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBS T1cKKyAgICBQQVRURVJOIChBKyBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBB TlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CistLSAyIG1hdGNo ZXM6IDEtNCwgMi00IChzYW1lIGVuZHBvaW50IDQpCisKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBKYWNvYidzIFJQUiBQYXR0ZXJucyAoZnJvbSBq YWNvYiBicmFuY2gpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorCistLSBUZXN0OiBBPyAob3B0aW9uYWwsIGdyZWVkeSkKK1dJVEggamFjb2Jfb3B0aW9u YWwgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0En XSksCisgICAgICAgICgyLCBBUlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitT RUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBs YXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIGphY29iX29wdGlvbmFsCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBPykKKyAgICBERUZJTkUgQSBBUyAnQScgPSBBTlkoZmxhZ3Mp CispOworLS0gRXhwZWN0ZWQ6IDEtMSAobWF0Y2hlcyBBKQorCistLSBUZXN0OiBBezJ9IChleGFj dCBjb3VudCkKK1dJVEggamFjb2JfZXhhY3QgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ1gnXSkKKyAgICApIEFT IHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJP TSBqYWNvYl9leGFjdAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXsyfSkKKyAgICBERUZJTkUgQSBB UyAnQScgPSBBTlkoZmxhZ3MpCispOworLS0gRXhwZWN0ZWQ6IDEtMgorCistLSBUZXN0OiBBezEs M30gKGJvdW5kZWQgcmFuZ2UsIGdyZWVkeSkKK1dJVEggamFjb2JfYm91bmRlZCBBUyAoCisgICAg U0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFn cykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gamFjb2JfYm91 bmRlZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXsxLDN9KQorICAgIERFRklORSBBIEFTICdBJyA9 IEFOWShmbGFncykKKyk7CistLSBFeHBlY3RlZDogMS0zIChncmVlZHkgdGFrZXMgbWF4KSwgdGhl biA0LTQKKworLS0gVGVzdDogQSB8IEIgKHNpbXBsZSBhbHRlcm5hdGlvbikKK1dJVEggamFjb2Jf c2ltcGxlX2FsdCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlb J1gnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX2VuZAorRlJPTSBqYWNvYl9zaW1wbGVfYWx0CitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChB IHwgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CistLSBFeHBlY3RlZDogMS0xIChBKSwgMi0yIChC KQorCistLSBUZXN0OiBBIHwgQiB8IEMgKHRocmVlLXdheSBhbHRlcm5hdGlvbikKK1dJVEggamFj b2JfdGhyZWVfYWx0IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEs IEFSUkFZWydCJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ1gnXSkKKyAgICApIEFTIHQoaWQsIGZs YWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSBqYWNvYl90 aHJlZV9hbHQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgfCBCIHwgQykKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFn cyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKy0tIEV4cGVjdGVkOiAxLTEg KEIpCisKKy0tIFRlc3Q6IEEgQiBDIChjb25jYXRlbmF0aW9uKQorV0lUSCBqYWNvYl9jb25jYXQg QVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSks CisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAg ICAgICAoNCwgQVJSQVlbJ1gnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSBqYWNvYl9jb25jYXQKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKEEgQiBDKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFn cyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBB TlkoZmxhZ3MpCispOworLS0gRXhwZWN0ZWQ6IDEtMworCistLSBUZXN0OiBBIEI/IEMgKG9wdGlv bmFsIG1pZGRsZSkKK1dJVEggamFjb2Jfb3B0aW9uYWxfbWlkIEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlb J0MnXSksCisgICAgICAgICgzLCBBUlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCisp CitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0 LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIGphY29iX29wdGlvbmFs X21pZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCPyBDKQorICAgIERFRklORQorICAgICAgICBB IEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworLS0gRXhwZWN0ZWQ6IDEtMiAoQSBDLCBC IHNraXBwZWQpCisKKy0tIFRlc3Q6IChBIEIpezJ9IChuZXN0ZWQgZ3JvdXAgd2l0aCBxdWFudGlm aWVyKQorV0lUSCBqYWNvYl9uZXN0ZWRfZ3JvdXAgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwK KyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAg ICAgICg1LCBBUlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIGphY29iX25lc3RlZF9ncm91cAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoKEEgQil7Mn0pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworLS0gRXhwZWN0 ZWQ6IDEtNCAoQSBCIEEgQikKKworLS0gVGVzdDogKEEpezN9IChxdWFudGlmaWVyIG9uIGdyb3Vw ZWQgc2luZ2xlIGVsZW1lbnQpCitXSVRIIGphY29iX2dyb3VwX3F1YW50IEFTICgKKyAgICBTRUxF Q1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwg QVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZ WydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9lbmQKK0ZST00gamFjb2JfZ3JvdXBfcXVhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KChBKXszfSkKKyAgICBERUZJTkUgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworLS0gRXhwZWN0 ZWQ6IDEtMworCistLSBUZXN0OiBBIEIgQyB8IEEgQiBDIEQgRSAobGV4aWNhbCBvcmRlciAtIGZp cnN0IGFsdCB3aW5zKQorV0lUSCBqYWNvYl9sZXhfZmlyc3QgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsn QiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0QnXSks CisgICAgICAgICg1LCBBUlJBWVsnRSddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxF Q1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIGphY29iX2xleF9maXJzdAorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQSBCIEMgfCBBIEIgQyBEIEUpCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgRSBBUyAnRScgPSBBTlkoZmxhZ3MpCispOworLS0gRXhwZWN0ZWQ6IDEt MyAoQSBCIEMgd2lucyBieSBsZXhpY2FsIG9yZGVyKQorCistLSBUZXN0OiBBIEIgQyBEIEUgfCBB IEIgQyAobGV4aWNhbCBvcmRlciAtIGxvbmdlciBmaXJzdCB3aW5zKQorV0lUSCBqYWNvYl9sZXhf bG9uZyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0MnXSks CisgICAgICAgICg0LCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDUsIEFSUkFZWydFJ10pCisgICAg KSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQK K0ZST00gamFjb2JfbGV4X2xvbmcKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSB8IEEg QiBDKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAg IEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncyksCisgICAgICAgIEUgQVMgJ0UnID0gQU5ZKGZs YWdzKQorKTsKKy0tIEV4cGVjdGVkOiAxLTUgKEEgQiBDIEQgRSB3aW5zIGJ5IGxleGljYWwgb3Jk ZXIpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBBbHRlcm5hdGlvbiB3aXRoIHF1YW50aWZpZXJzIChCVUcgY2FzZXMgZnJvbSBKYWNvYidzIHRl c3RzKQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor LS0gVGVzdDogKEEgfCBCKSsgQyAtIGFsdGVybmF0aW9uIGluc2lkZSBxdWFudGlmaWVkIGdyb3Vw IGZvbGxvd2VkIGJ5IEMKK1dJVEggamFjb2JfYWx0X3F1YW50IEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlb J0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydDJ10p CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9lbmQKK0ZST00gamFjb2JfYWx0X3F1YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIp KyBDKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAg IEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCisp OworLS0gRXhwZWN0ZWQ6IDEtNCAoQSBCIEEgQykKKworLS0gVGVzdDogKChBIHwgQikgQykrIC0g YWx0ZXJuYXRpb24gaW5zaWRlIGdyb3VwIHdpdGggb3V0ZXIgcXVhbnRpZmllcgorV0lUSCBqYWNv Yl9hbHRfZ3JvdXAgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwg QVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDMsIEFSUkFZ WydCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0MnXSksCisgICAgICAgICg1LCBBUlJBWVsnWCdd KQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfZW5kCitGUk9NIGphY29iX2FsdF9ncm91cAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKChBIHwg QikgQykrKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAg ICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3Mp CispOworLS0gRXhwZWN0ZWQ6IDEtNCAoQSBDIEIgQykKKworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFJFTFVDVEFOVCBxdWFudGlmaWVycyAobm90 IHlldCBzdXBwb3J0ZWQpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorCistLSBUZXN0OiBBKz8gQiAocmVsdWN0YW50KSAtIHBhcnNlciByZWplY3RzIHdp dGggRVJST1IKK1dJVEggamFjb2JfcmVsdWN0YW50IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChW QUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSks CisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pCisgICAg KSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQK K0ZST00gamFjb2JfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKz8gQikKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9 IEFOWShmbGFncykKKyk7CistLSBFeHBlY3RlZDogRVJST1IgKHJlbHVjdGFudCBxdWFudGlmaWVy cyBub3QgeWV0IHN1cHBvcnRlZCkKKworLS0gVGVzdDogQXsxLDN9PyBCIChyZWx1Y3RhbnQgYm91 bmRlZCkgLSBwYXJzZXIgcmVqZWN0cyB3aXRoIEVSUk9SCitXSVRIIGphY29iX3JlbHVjdGFudF9i b3VuZGVkIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZ WydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NF TEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxh c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gamFjb2JfcmVsdWN0YW50X2Jv dW5kZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7MSwzfT8gQikKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykK Kyk7CistLSBFeHBlY3RlZDogRVJST1IgKHJlbHVjdGFudCBxdWFudGlmaWVycyBub3QgeWV0IHN1 cHBvcnRlZCkKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIE5lc3RlZCBxdWFudGlmaWVycyAocGF0aG9sb2dpY2FsIHBhdHRlcm5zKQorLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRoZXNlIHBhdHRl cm5zIHByZXZpb3VzbHkgY2F1c2VkIHNlZ2ZhdWx0IG9yIGluZmluaXRlIGxvb3AuCistLSBOb3cg dGhleSBhcmUgZWl0aGVyIG9wdGltaXplZCBhdCBjb21waWxlIHRpbWUgb3IgaGFuZGxlZCBzYWZl bHkgYXQgcnVudGltZS4KKworLS0gVGVzdDogKEEqKSogLSBuZXN0ZWQgdW5ib3VuZGVkIHF1YW50 aWZpZXJzIChvcHRpbWl6ZWQgdG8gQSopCitTRUxFQ1QgdiwgY291bnQoKikgT1ZFUiB3IEFTIGMK K0ZST00gKFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgdikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAo KEEqKSopCisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsKKworLS0gVGVzdDogKEEqKSsgLSBpbm5l ciBudWxsYWJsZSwgb3V0ZXIgcmVxdWlyZXMgb25lIChvcHRpbWl6ZWQgdG8gQSopCitTRUxFQ1Qg diwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gKFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwg NSkgdikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBJTklUSUFMCisgICAgUEFUVEVSTiAoKEEqKSspCisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsK KworLS0gVGVzdDogKEErKSogLSBvdXRlciBudWxsYWJsZSAob3B0aW1pemVkIHRvIEEqKQorU0VM RUNUIHYsIGNvdW50KCopIE9WRVIgdyBBUyBjCitGUk9NIChTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVz KDEsIDUpIHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKChBKykqKQorICAgIERFRklORSBBIEFTIFRSVUUK Kyk7CisKKy0tIFRlc3Q6IChBKykrIC0gYm90aCByZXF1aXJlIG1hdGNoIChvcHRpbWl6ZWQgdG8g QSspCitTRUxFQ1QgdiwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gKFNFTEVDVCBnZW5lcmF0 ZV9zZXJpZXMoMSwgNSkgdikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoKEErKSspCisgICAgREVGSU5FIEEg QVMgVFJVRQorKTsKKworLS0gVGVzdDogKEEqIEIqKSogLSBjb21wbGV4IG5lc3RlZCBwYXR0ZXJu IChydW50aW1lIHByb3RlY3Rpb24pCistLSBOb3Qgb3B0aW1pemVkIGJ1dCBoYW5kbGVkIHNhZmVs eSBieSBlbXB0eS1tYXRjaCBsb29wIHByZXZlbnRpb24KK1NFTEVDVCB2LCBjb3VudCgqKSBPVkVS IHcgQVMgYworRlJPTSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1KSB2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIElOSVRJQUwKKyAgICBQ QVRURVJOICgoQSogQiopKikKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIFRSVUUKKyk7CisK Ky0tIFRlc3Q6ICgoKEEpKikqKSogIC0gdHJpcGxlIG5lc3RlZCAob3B0aW1pemVkIHRocm91Z2gg cmVjdXJzaXZlIG9wdGltaXphdGlvbikKK1NFTEVDVCB2LCBjb3VudCgqKSBPVkVSIHcgQVMgYwor RlJPTSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAzKSB2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIElOSVRJQUwKKyAgICBQQVRURVJOICgo KChBKSopKikqKQorICAgIERFRklORSBBIEFTIFRSVUUKKyk7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFz ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg3OWY1ZmU0OGEy Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsCkBA IC0wLDAgKzEsMzY1OCBAQAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBSUFIgQmFzZSBUZXN0cworLS0gVGVzdHMgZm9y IFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIChJU08vSUVDIDE5MDc1LTU6MjAxNikKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0KKy0tIFBhcnNlciBMYXllcjoKKy0tICAgS2V5d29yZCBVc2FnZSBUZXN0cworLS0gICBERUZJ TkUgQ2xhdXNlIFRlc3RzCistLSAgIEZSQU1FIE9wdGlvbnMgVGVzdHMKKy0tICAgUEFSVElUSU9O IEJZICsgRlJBTUUgVGVzdHMKKy0tICAgUEFUVEVSTiBTeW50YXggVGVzdHMKKy0tICAgUXVhbnRp ZmllcnMgVGVzdHMKKy0tICAgTmF2aWdhdGlvbiBGdW5jdGlvbnMgVGVzdHMKKy0tICAgU0tJUCBU TyAvIElOSVRJQUwgVGVzdHMKKy0tICAgU2VyaWFsaXphdGlvbi9EZXNlcmlhbGl6YXRpb24gVGVz dHMKKy0tICAgRXJyb3IgQ2FzZXMgVGVzdHMKKy0tCistLSBQbGFubmVyIExheWVyOgorLS0gICBQ YXR0ZXJuIE9wdGltaXphdGlvbiBUZXN0cworLS0gICBBYnNvcnB0aW9uIEZsYWcgRGlzcGxheSBU ZXN0cworLS0gICBBYnNvcnB0aW9uIEFuYWx5c2lzIFRlc3RzCistLSAgIEVkZ2UgQ2FzZSBUZXN0 cworLS0gICBPcHRpbWl6YXRpb24gRmFsbGJhY2sgVGVzdHMKKy0tICAgUGxhbm5lciBJbnRlZ3Jh dGlvbiBUZXN0cworLS0gICBTdWJxdWVyeSBhbmQgQ1RFIFRlc3RzCistLSAgIEpPSU4gVGVzdHMK Ky0tICAgQ29tcGxleCBFeHByZXNzaW9uIFRlc3RzCistLSAgIFNldCBPcGVyYXRpb25zIFRlc3Rz CistLSAgIFNvcnRpbmcgYW5kIEdyb3VwaW5nIFRlc3RzCistLSAgIFN0cmVzcyBUZXN0cworLS0g ICBFcnJvciBMaW1pdCBUZXN0cworLS0KKy0tIENvbnRyaWJ1dGVkIFRlc3RzOgorLS0gICBKYWNv YidzIFBhdHRlcm5zCistLSAgIFBhdGhvbG9naWNhbCBQYXR0ZXJucworLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1NFVCBj bGllbnRfbWluX21lc3NhZ2VzID0gV0FSTklORzsKKworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBLZXl3b3JkIFVzYWdl IFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKworLS0gUlBSIGtleXdvcmRzIGFzIGNvbHVtbiBuYW1lcworLS0gS2V5 d29yZHM6IGRlZmluZSwgaW5pdGlhbCwgcGFzdCwgcGF0dGVybiwgc2VlaworCitDUkVBVEUgVEFC TEUgcnByX2tleXdvcmRzICgKKyAgICBpZCBJTlQsCisgICAgZGVmaW5lIElOVCwgICAgICAtLSBE RUZJTkUga2V5d29yZAorICAgIGluaXRpYWwgSU5ULCAgICAgLS0gSU5JVElBTCBrZXl3b3JkCisg ICAgcGFzdCBJTlQsICAgICAgICAtLSBQQVNUIGtleXdvcmQKKyAgICBwYXR0ZXJuIElOVCwgICAg IC0tIFBBVFRFUk4ga2V5d29yZAorICAgIHNlZWsgSU5ULCAgICAgICAgLS0gU0VFSyBrZXl3b3Jk CisgICAgc2tpcCBJTlQgICAgICAgICAtLSBTS0lQIGtleXdvcmQgKHByZS1leGlzdGluZykKKyk7 CisKK0lOU0VSVCBJTlRPIHJwcl9rZXl3b3JkcyBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsIDQwLCA1 MCwgNjApOworCitTRUxFQ1QgaWQsIGRlZmluZSwgaW5pdGlhbCwgcGFzdCwgcGF0dGVybiwgc2Vl aywgc2tpcAorRlJPTSBycHJfa2V5d29yZHMKK09SREVSIEJZIGlkOworCitEUk9QIFRBQkxFIHJw cl9rZXl3b3JkczsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBERUZJTkUgQ2xhdXNlIFRlc3RzCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor CistLSBTaW1wbGUgY29sdW1uIHJlZmVyZW5jZXMKK0NSRUFURSBUQUJMRSBzdG9ja19wcmljZSAo CisgICAgZHQgREFURSwKKyAgICBzeW1ib2wgVEVYVCwKKyAgICBwcmljZSBOVU1FUklDLAorICAg IHZvbHVtZSBJTlQKKyk7CisKK0lOU0VSVCBJTlRPIHN0b2NrX3ByaWNlIFZBTFVFUworICAgICgn MjAyNC0wMS0wMScsICdBQVBMJywgMTUwLCAxMDAwKSwKKyAgICAoJzIwMjQtMDEtMDInLCAnQUFQ TCcsIDE1NSwgMTIwMCksCisgICAgKCcyMDI0LTAxLTAzJywgJ0FBUEwnLCAxNTIsIDkwMCksCisg ICAgKCcyMDI0LTAxLTA0JywgJ0FBUEwnLCAxNjAsIDE1MDApLAorICAgICgnMjAyNC0wMS0wNScs ICdBQVBMJywgMTU4LCAxMTAwKTsKKworLS0gU2ltcGxlIGNvbHVtbiByZWZlcmVuY2UKK1NFTEVD VCBkdCwgcHJpY2UsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gc3RvY2tfcHJpY2UKK1dJ TkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgc3ltYm9sCisgICAgT1JERVIgQlkgZHQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChVUCspCisgICAgREVGSU5FIFVQIEFTIHByaWNlID4gMTUwCispCitPUkRFUiBCWSBk dDsKKworLS0gTXVsdGlwbGUgY29sdW1uIHJlZmVyZW5jZXMKK1NFTEVDVCBkdCwgcHJpY2UsIHZv bHVtZSwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBzdG9ja19wcmljZQorV0lORE9XIHcg QVMgKAorICAgIFBBUlRJVElPTiBCWSBzeW1ib2wKKyAgICBPUkRFUiBCWSBkdAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEdPT0QrKQorICAgIERFRklORSBHT09EIEFTIHByaWNlID4gMTUwIEFORCB2b2x1bWUgPiAxMDAw CispCitPUkRFUiBCWSBkdDsKKworLS0gRXhwcmVzc2lvbiBpbiBERUZJTkUKK1NFTEVDVCBkdCwg cHJpY2UsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gc3RvY2tfcHJpY2UKK1dJTkRPVyB3 IEFTICgKKyAgICBQQVJUSVRJT04gQlkgc3ltYm9sCisgICAgT1JERVIgQlkgZHQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChISUdIKykKKyAgICBERUZJTkUgSElHSCBBUyBwcmljZSAqIDEuMSA+IDE2NQorKQorT1JERVIg QlkgZHQ7CisKKy0tIEFyaXRobWV0aWMgYW5kIGZ1bmN0aW9ucworU0VMRUNUIGR0LCBwcmljZSwg dm9sdW1lLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHN0b2NrX3ByaWNlCitXSU5ET1cg dyBBUyAoCisgICAgUEFSVElUSU9OIEJZIHN5bWJvbAorICAgIE9SREVSIEJZIGR0CisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQ0FMQyspCisgICAgREVGSU5FIENBTEMgQVMgKHByaWNlICsgdm9sdW1lIC8gMTAwKSA+IDE2 MAorKQorT1JERVIgQlkgZHQ7CisKK0RST1AgVEFCTEUgc3RvY2tfcHJpY2U7CisKKy0tIEF1dG8t Z2VuZXJhdGVkIERFRklORQorQ1JFQVRFIFRBQkxFIHJwcl9hdXRvIChpZCBJTlQsIHZhbCBJTlQp OworSU5TRVJUIElOVE8gcnByX2F1dG8gVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCks ICg0LCAxNSk7CisKKy0tIE9uZSB2YXJpYWJsZSB1bmRlZmluZWQgKEIgYXV0by1nZW5lcmF0ZWQg YXMgIkIgSVMgVFJVRSIpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAor RlJPTSBycHJfYXV0bworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSsgQiopCisgICAgREVGSU5FIEEgQVMgdmFsID4gMTUKKykKK09SREVSIEJZIGlkOworCistLSBN dWx0aXBsZSB1bmRlZmluZWQgdmFyaWFibGVzCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZF UiB3IGFzIGNudAorRlJPTSBycHJfYXV0bworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQSBCIEMpCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICAgIC0tIEIgYW5k IEMgYXV0by1nZW5lcmF0ZWQgYXMgIkIgSVMgVFJVRSIsICJDIElTIFRSVUUiCispCitPUkRFUiBC WSBpZDsKKworLS0gQWxsIHZhcmlhYmxlcyBkZWZpbmVkIGV4cGxpY2l0bHkKK1NFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9hdXRvCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChYIFkgWikKKyAgICBERUZJTkUKKyAgICAgICAg WCBBUyB2YWwgPiAxMCwKKyAgICAgICAgWSBBUyB2YWwgPiAyMCwKKyAgICAgICAgWiBBUyB2YWwg PCAyMAorKQorT1JERVIgQlkgaWQ7CisKK0RST1AgVEFCTEUgcnByX2F1dG87CisKKy0tIER1cGxp Y2F0ZSB2YXJpYWJsZSBuYW1lcworQ1JFQVRFIFRBQkxFIHJwcl9kdXAgKGlkIElOVCk7CitJTlNF UlQgSU5UTyBycHJfZHVwIFZBTFVFUyAoMSksICgyKTsKKworLS0gRHVwbGljYXRlIERFRklORSBl bnRyaWVzCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9kdXAKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIGlkID4g MCwgQSBBUyBpZCA8IDEwCispOworLS0gRXhwZWN0ZWQ6IEVSUk9SOiByb3cgcGF0dGVybiBkZWZp bml0aW9uIHZhcmlhYmxlIG5hbWUgImEiIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UgaW4gREVGSU5F IGNsYXVzZQorCitEUk9QIFRBQkxFIHJwcl9kdXA7CisKKy0tIEJvb2xlYW4gY29lcmNpb24KK0NS RUFURSBUQUJMRSBycHJfYm9vbCAoaWQgSU5ULCBmbGFnIEJPT0xFQU4pOworSU5TRVJUIElOVE8g cnByX2Jvb2wgVkFMVUVTICgxLCB0cnVlKSwgKDIsIGZhbHNlKTsKKworLS0gTm9uLWJvb2xlYW4g ZXhwcmVzc2lvbgorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfYm9vbAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMg aWQKKyk7CistLSBFeHBlY3RlZDogRVJST1I6IGFyZ3VtZW50IG9mIERFRklORSBtdXN0IGJlIHR5 cGUgYm9vbGVhbgorCistLSBCb29sZWFuIGNvbHVtbiByZWZlcmVuY2UKK1NFTEVDVCBpZCwgZmxh ZywgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfYm9vbAorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoVCspCisgICAgREVGSU5FIFQgQVMgZmxhZworKQor T1JERVIgQlkgaWQ7CisKKy0tIE5VTEw6OmJvb2xlYW4KK1NFTEVDVCBpZCwgQ09VTlQoKikgT1ZF UiB3IGFzIGNudAorRlJPTSBycHJfYm9vbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoTispCisgICAgREVGSU5FIE4gQVMgTlVMTDo6Ym9vbGVhbgorKQorT1JERVIg QlkgaWQ7CisKK0RST1AgVEFCTEUgcnByX2Jvb2w7CisKKy0tIENvbXBsZXggZXhwcmVzc2lvbnMK K0NSRUFURSBUQUJMRSBycHJfY29tcGxleCAoaWQgSU5ULCB2YWwxIElOVCwgdmFsMiBJTlQpOwor SU5TRVJUIElOVE8gcnByX2NvbXBsZXggVkFMVUVTICgxLCAxMCwgMjApLCAoMiwgMTUsIDI1KSwg KDMsIDIwLCAzMCk7CisKKy0tIENBU0UgZXhwcmVzc2lvbgorU0VMRUNUIGlkLCB2YWwxLCB2YWwy LCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9jb21wbGV4CitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChDKykKKyAgICBERUZJTkUgQyBBUyBDQVNFIFdI RU4gdmFsMSA+IDEwIFRIRU4gdmFsMiA+IDIwIEVMU0UgZmFsc2UgRU5ECispCitPUkRFUiBCWSBp ZDsKKworRFJPUCBUQUJMRSBycHJfY29tcGxleDsKKworLS0gUGF0dGVybiB2YXJpYWJsZSBub3Qg aW4gUEFUVEVSTiAoc2hvdWxkIGJlIGlnbm9yZWQpCitDUkVBVEUgVEFCTEUgcnByX3VudXNlZCAo aWQgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl91bnVzZWQgVkFMVUVTICgxKSwgKDIpOworCistLSBF eHRyYSBERUZJTkUgdmFyaWFibGUKK1NFTEVDVCBpZCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAor RlJPTSBycHJfdW51c2VkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBKykKKyAgICBERUZJTkUgQSBBUyBpZCA+IDAsIEIgQVMgaWQgPiA1ICAtLSBCIG5vdCBpbiBw YXR0ZXJuCispCitPUkRFUiBCWSBpZDsKKworRFJPUCBUQUJMRSBycHJfdW51c2VkOworCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIEZSQU1FIE9wdGlvbnMgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKK0NSRUFURSBUQUJMRSBycHJf ZnJhbWUgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfZnJhbWUgVkFMVUVTCisg ICAgKDEsIDEwKSwgKDIsIDEwKSwgKDMsIDEwKSwgIC0tIFNhbWUgdmFsOiAxMAorICAgICg0LCAy MCksICg1LCAyMCksICAgICAgICAgICAtLSBTYW1lIHZhbDogMjAKKyAgICAoNiwgMzApOworCist LSBWYWxpZCBmcmFtZSBvcHRpb25zCisKKy0tIFJPV1M6IGNvdW50cyBwaHlzaWNhbCByb3dzICgx IEZPTExPV0lORyA9IG5leHQgMSBwaHlzaWNhbCByb3cpCistLSBFeHBlY3RlZCByZXN1bHQ6IEVh Y2ggcm93IGNhbiBzZWUgMSBwaHlzaWNhbCByb3cgYWhlYWQKKy0tIGlkPTEsMiwzICh2YWw9MTAp OiBjYW4gc2VlIG5leHQgcm93IC0+IGNudD0yCistLSBpZD00LDUgKHZhbD0yMCk6IGNhbiBzZWUg bmV4dCByb3cgLT4gY250PTIKKy0tIGlkPTYgKHZhbD0zMCk6IG5vIG5leHQgcm93IC0+IGNudD0x CistLSBSZXN1bHQ6IFsyLDIsMiwyLDIsMV0KK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIHZh bAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCPykKKyAgICBERUZJTkUg QSBBUyB2YWwgPj0gMCwgQiBBUyB2YWwgPj0gMAorKQorT1JERVIgQlkgaWQ7CisKKy0tIEludmFs aWQgZnJhbWUgc3RhcnQgcG9zaXRpb25zCisKKy0tIE5vdCBzdGFydGluZyBhdCBDVVJSRU5UIFJP VworU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMg dmFsID4gMAorKTsKKy0tIEV4cGVjdGVkOiBFUlJPUjogRlJBTUUgbXVzdCBzdGFydCBhdCBjdXJy ZW50IHJvdyB3aGVuIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIGlzIHVzZWQKKworLS0gRVhDTFVE RSBvcHRpb25zCisKKy0tIEVYQ0xVREUgbm90IHBlcm1pdHRlZAorU0VMRUNUIENPVU5UKCopIE9W RVIgdworRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEVY Q0xVREUgQ1VSUkVOVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwg PiAwCispOworLS0gRXhwZWN0ZWQ6IEVSUk9SOiBFWENMVURFIG9wdGlvbnMgYXJlIG5vdCBwZXJt aXR0ZWQgd2hlbiByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpcyB1c2VkCisKKy0tIEVYQ0xVREUg R1JPVVAgbm90IHBlcm1pdHRlZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZnJh bWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEVYQ0xVREUgR1JPVVAKKyAgICBQ QVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6IEVS Uk9SOiBFWENMVURFIG9wdGlvbnMgYXJlIG5vdCBwZXJtaXR0ZWQgd2hlbiByb3cgcGF0dGVybiBy ZWNvZ25pdGlvbiBpcyB1c2VkCisKKy0tIEVYQ0xVREUgVElFUyBub3QgcGVybWl0dGVkCitTRUxF Q1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgRVhDTFVERSBUSUVTCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEg QVMgdmFsID4gMAorKTsKKy0tIEV4cGVjdGVkOiBFUlJPUjogRVhDTFVERSBvcHRpb25zIGFyZSBu b3QgcGVybWl0dGVkIHdoZW4gcm93IHBhdHRlcm4gcmVjb2duaXRpb24gaXMgdXNlZAorCistLSBS QU5HRSBmcmFtZSBub3Qgc3RhcnRpbmcgYXQgQ1VSUkVOVCBST1cKK1NFTEVDVCBDT1VOVCgqKSBP VkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBSQU5HRSBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworLS0gRXhw ZWN0ZWQ6IEVSUk9SOiBGUkFNRSBvcHRpb24gUkFOR0UgaXMgbm90IHBlcm1pdHRlZCB3aGVuIHJv dyBwYXR0ZXJuIHJlY29nbml0aW9uIGlzIHVzZWQKKworLS0gR1JPVVBTIGZyYW1lIG5vdCBzdGFy dGluZyBhdCBDVVJSRU5UIFJPVworU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZnJh bWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIEdST1VQUyBCRVRXRUVOIFVO Qk9VTkRFRCBQUkVDRURJTkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB KykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6IEVSUk9SOiBGUkFN RSBvcHRpb24gR1JPVVAgaXMgbm90IHBlcm1pdHRlZCB3aGVuIHJvdyBwYXR0ZXJuIHJlY29nbml0 aW9uIGlzIHVzZWQKKworLS0gU3RhcnRpbmcgd2l0aCBOIFBSRUNFRElORworU0VMRUNUIENPVU5U KCopIE9WRVIgdworRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiAxIFBSRUNFRElORyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CistLSBFeHBlY3Rl ZDogRVJST1I6IEZSQU1FIG11c3Qgc3RhcnQgYXQgY3VycmVudCByb3cgd2hlbiByb3cgcGF0dGVy biByZWNvZ25pdGlvbiBpcyB1c2VkCisKKy0tIFN0YXJ0aW5nIHdpdGggTiBGT0xMT1dJTkcKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gMSBGT0xMT1dJTkcgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOwor LS0gRXhwZWN0ZWQ6IEVSUk9SOiBGUkFNRSBtdXN0IHN0YXJ0IGF0IGN1cnJlbnQgcm93IHdoZW4g cm93IHBhdHRlcm4gcmVjb2duaXRpb24gaXMgdXNlZAorCistLSBGcmFtZSBlbmQgYm91bmQgZWRn ZSBjYXNlcworCistLSBFbmQgYmVmb3JlIHN0YXJ0OiBDVVJSRU5UIFJPVyBBTkQgMSBQUkVDRURJ TkcKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgUFJF Q0VESU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKy0t IEV4cGVjdGVkOiBFUlJPUjogZnJhbWUgc3RhcnRpbmcgZnJvbSBjdXJyZW50IHJvdyBjYW5ub3Qg aGF2ZSBwcmVjZWRpbmcgcm93cworCistLSBFbmQgYmVmb3JlIHN0YXJ0OiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIFBSRUNFRElORworU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJf ZnJhbWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIFBSRUNFRElORworICAgIFBBVFRFUk4gKEErKQorICAg IERFRklORSBBIEFTIHZhbCA+IDAKKyk7CistLSBFeHBlY3RlZDogRVJST1I6IGZyYW1lIGVuZCBj YW5ub3QgYmUgVU5CT1VOREVEIFBSRUNFRElORworCistLSBTaW5nbGUgcm93IGZyYW1lOiBDVVJS RU5UIFJPVyBBTkQgQ1VSUkVOVCBST1cKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBDVVJSRU5UIFJPVworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIHZh bCA+IDAKKykKK09SREVSIEJZIGlkOworCistLSBaZXJvIG9mZnNldDogQ1VSUkVOVCBST1cgQU5E IDAgRk9MTE9XSU5HIChlcXVpdmFsZW50IHRvIENVUlJFTlQgUk9XKQorU0VMRUNUIGlkLCB2YWws IENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDAgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEpCisg ICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisKKy0tIExhcmdlIG9mZnNl dDogQ1VSUkVOVCBST1cgQU5EIDEwMDAgRk9MTE9XSU5HCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMTAwMCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAg REVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisKKy0tIE1heGltdW0gb2Zmc2V0 OiBDVVJSRU5UIFJPVyBBTkQgMjE0NzQ4MzY0NiBGT0xMT1dJTkcgKElOVF9NQVggLSAxKQorU0VM RUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2ZyYW1lCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIDIxNDc0ODM2NDYgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJP VworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZ IGlkOworCistLSBSQU5HRSBmcmFtZSB3aXRoIFJQUiAobm90IHBlcm1pdHRlZCkKK1NFTEVDVCBp ZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIHZhbAorICAgIFJBTkdFIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IDEwIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOIChBIEI/KQorICAgIERFRklORSBBIEFTIHZhbCA+PSAwLCBCIEFTIHZhbCA+PSAwCispCitP UkRFUiBCWSBpZDsKKy0tIEV4cGVjdGVkOiBFUlJPUjogRlJBTUUgb3B0aW9uIFJBTkdFIGlzIG5v dCBwZXJtaXR0ZWQgd2hlbiByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpcyB1c2VkCisKKy0tIEdS T1VQUyBmcmFtZSB3aXRoIFJQUiAobm90IHBlcm1pdHRlZCkKK1NFTEVDVCBpZCwgdmFsLCBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIHZhbAorICAgIEdST1VQUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEI/KQor ICAgIERFRklORSBBIEFTIHZhbCA+PSAwLCBCIEFTIHZhbCA+PSAwCispCitPUkRFUiBCWSBpZDsK Ky0tIEV4cGVjdGVkOiBFUlJPUjogRlJBTUUgb3B0aW9uIEdST1VQIGlzIG5vdCBwZXJtaXR0ZWQg d2hlbiByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpcyB1c2VkCisKK0RST1AgVEFCTEUgcnByX2Zy YW1lOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIFBBUlRJVElPTiBCWSArIEZSQU1FIFRlc3RzCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor LS0gVGVzdCBQQVJUSVRJT04gQlkgd2l0aCBSUFIgdG8gZW5zdXJlIHByb3BlciBwYXJ0aXRpb25p bmcgYmVoYXZpb3IKK0NSRUFURSBUQUJMRSBycHJfcGFydGl0aW9uIChpZCBJTlQsIGdycCBJTlQs IHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3BhcnRpdGlvbiBWQUxVRVMKKyAgICAoMSwgMSwg MTApLCAoMiwgMSwgMjApLCAoMywgMSwgMzApLAorICAgICg0LCAyLCAxNSksICg1LCAyLCAyNSks ICg2LCAyLCAzNSk7CisKKy0tIFBBUlRJVElPTiBCWSB3aXRoIFJPV1MgZnJhbWUKK1NFTEVDVCBp ZCwgZ3JwLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BhcnRpdGlvbgor V0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBncnAKKyAgICBPUkRFUiBCWSB2YWwKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJ TkUgQSBBUyB2YWwgPj0gMTAsIEIgQVMgdmFsID4gMTUKKykKK09SREVSIEJZIGlkOworLS0gRXhw ZWN0ZWQ6IFBhdHRlcm4gbWF0Y2hpbmcgc2hvdWxkIHJlc2V0IGZvciBlYWNoIHBhcnRpdGlvbgor CistLSBQQVJUSVRJT04gQlkgd2l0aCBSQU5HRSBmcmFtZQorU0VMRUNUIGlkLCBncnAsIHZhbCwg Q09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGFydGl0aW9uCitXSU5ET1cgdyBBUyAo CisgICAgUEFSVElUSU9OIEJZIGdycAorICAgIE9SREVSIEJZIHZhbAorICAgIFJBTkdFIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIDEwIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8g TkVYVCBST1cKKyAgICBQQVRURVJOIChBIEI/KQorICAgIERFRklORSBBIEFTIHZhbCA+PSAxMCwg QiBBUyB2YWwgPj0gMjAKKykKK09SREVSIEJZIGlkOworLS0gRXhwZWN0ZWQ6IEVSUk9SOiBGUkFN RSBvcHRpb24gUkFOR0UgaXMgbm90IHBlcm1pdHRlZCB3aGVuIHJvdyBwYXR0ZXJuIHJlY29nbml0 aW9uIGlzIHVzZWQKKworRFJPUCBUQUJMRSBycHJfcGFydGl0aW9uOworCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFBB VFRFUk4gU3ludGF4IFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCitDUkVBVEUgVEFCTEUgcnByX3BhdHRlcm4g KGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfcGF0dGVybiBWQUxVRVMKKyAgICAo MSwgNSksICgyLCAxMCksICgzLCAxNSksICg0LCAyMCksICg1LCAyNSksCisgICAgKDYsIDMwKSwg KDcsIDM1KSwgKDgsIDQwKSwgKDksIDQ1KSwgKDEwLCA1MCk7CisKKy0tIEFsdGVybmF0aW9uICh8 KQorCistLSBNdWx0aXBsZSBhbHRlcm5hdGl2ZXMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBP VkVSIHcgYXMgY250CitGUk9NIHJwcl9wYXR0ZXJuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBKyB8IEIrIHwgQyspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMzUs IEIgQVMgdmFsIEJFVFdFRU4gMTUgQU5EIDM1LCBDIEFTIHZhbCA8IDE1CispCitPUkRFUiBCWSBp ZDsKKworLS0gR3JvdXBpbmcKKworLS0gTmVzdGVkIGdyb3VwaW5nIHdpdGggcXVhbnRpZmllcgor U0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BhdHRlcm4K K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoQSBCKSBDKSspCisg ICAgREVGSU5FIEEgQVMgdmFsID4gMTAsIEIgQVMgdmFsID4gMjAsIEMgQVMgdmFsID4gMzAKKykK K09SREVSIEJZIGlkOworCistLSBTZXF1ZW5jZQorCistLSBNdWx0aS1lbGVtZW50IHNlcXVlbmNl CitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGF0dGVy bgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCIEMgRCBFKQor ICAgIERFRklORQorICAgICAgICBBIEFTIHZhbCA8IDE1LAorICAgICAgICBCIEFTIHZhbCBCRVRX RUVOIDE1IEFORCAyNSwKKyAgICAgICAgQyBBUyB2YWwgQkVUV0VFTiAyNSBBTkQgMzUsCisgICAg ICAgIEQgQVMgdmFsIEJFVFdFRU4gMzUgQU5EIDQ1LAorICAgICAgICBFIEFTIHZhbCA+PSA0NQor KQorT1JERVIgQlkgaWQ7CisKKy0tIENvbXBsZXggY29tYmluYXRpb25zCisKKy0tIEFsdGVybmF0 aW9uIHdpdGggZ3JvdXBpbmcKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250 CitGUk9NIHJwcl9wYXR0ZXJuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOICgoQSBCKSB8IChDIEQpKQorICAgIERFRklORSBBIEFTIHZhbCA8IDIwLCBCIEFTIHZhbCA+ PSAyMCwgQyBBUyB2YWwgPCAzMCwgRCBBUyB2YWwgPj0gMzAKKykKK09SREVSIEJZIGlkOworCist LSBBbHRlcm5hdGlvbiArIHNlcXVlbmNlICsgZ3JvdXBpbmcKK1NFTEVDVCBpZCwgdmFsLCBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wYXR0ZXJuCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChTVEFSVCAoVVB7Mix9IERPV04/IHwgRkxBVCspIEZJTklT SCkKKyAgICBERUZJTkUKKyAgICAgICAgU1RBUlQgQVMgdmFsID49IDAsCisgICAgICAgIFVQIEFT IHZhbCA+IDIwLAorICAgICAgICBET1dOIEFTIHZhbCA8PSAzMCwKKyAgICAgICAgRkxBVCBBUyB2 YWwgQkVUV0VFTiAyNSBBTkQgMzUsCisgICAgICAgIEZJTklTSCBBUyB2YWwgPiA0MAorKQorT1JE RVIgQlkgaWQ7CisKKy0tIE5lc3RlZCBhbHRlcm5hdGlvbiBpbiBncm91cHMKK1NFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wYXR0ZXJuCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSB8IEIpIChDIHwgRCkpCisgICAgREVG SU5FIEEgQVMgdmFsIDwgMTUsIEIgQVMgdmFsIEJFVFdFRU4gMTUgQU5EIDI1LCBDIEFTIHZhbCBC RVRXRUVOIDI1IEFORCAzNSwgRCBBUyB2YWwgPiAzNQorKQorT1JERVIgQlkgaWQ7CisKK0RST1Ag VEFCTEUgcnByX3BhdHRlcm47CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUXVhbnRpZmllcnMgVGVzdHMKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorCisKK0NSRUFURSBUQUJMRSBycHJfcXVhbnQgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQg SU5UTyBycHJfcXVhbnQgVkFMVUVTCisgICAgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDMwKSwgKDQs IDQwKSwgKDUsIDUwKSwKKyAgICAoNiwgNjApLCAoNywgNzApLCAoOCwgODApLCAoOSwgOTApLCAo MTAsIDEwMCk7CisKKy0tIEJhc2ljIGdyZWVkeSBxdWFudGlmaWVycworCistLSAqICh6ZXJvIG9y IG1vcmUpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJf cXVhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEqKQorICAg IERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworCistLSArIChvbmUgb3IgbW9y ZSkKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9xdWFu dAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgdmFsID4gNTAKKykKK09SREVSIEJZIGlkOworCistLSA/ICh6ZXJvIG9yIG9uZSkK K1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9xdWFudAor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQT8pCisgICAgREVGSU5F IEEgQVMgdmFsID0gNTAKKykKK09SREVSIEJZIGlkOworCistLSBFZGdlIGNhc2UgcXVhbnRpZmll cnMKKworLS0gezB9IGlzIG5vdCBhbGxvd2VkIChtaW4gbXVzdCBiZSA+PSAxKQorU0VMRUNUIGlk LCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3F1YW50CitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezB9IEIpCisgICAgREVGSU5FIEEgQVMg dmFsID4gMTAwMCwgQiBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKy0tIEV4cGVjdGVkOiBF UlJPUjogcXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjE0NzQ4MzY0Ngor CistLSB7MCwwfSBpcyBub3QgYWxsb3dlZCAobWF4IG11c3QgYmUgPj0gMSkKK1NFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9xdWFudAorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXswLDB9IEIpCisgICAgREVGSU5FIEEgQVMg dmFsID4gMTAwMCwgQiBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKy0tIEV4cGVjdGVkOiBF UlJPUjogcXVhbnRpZmllciBib3VuZHMgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDIxNDc0ODM2NDYg d2l0aCBtYXggPj0gMQorCistLSB7MCwxfSAoZXF1aXZhbGVudCB0byA/KQorU0VMRUNUIGlkLCB2 YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3F1YW50CitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezAsMX0pCisgICAgREVGSU5FIEEgQVMgdmFs ID0gNTAKKykKK09SREVSIEJZIGlkOworCistLSBFeGFjdCBxdWFudGlmaWVycyB7bn0KKworLS0g ezN9IChyZXByZXNlbnRhdGl2ZSBleGFjdCBxdWFudGlmaWVyKQorU0VMRUNUIGlkLCB2YWwsIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3F1YW50CitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBezN9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykK K09SREVSIEJZIGlkOworCistLSBSYW5nZSBxdWFudGlmaWVycyB7bix9CisKKy0tIHsyLH0gKHJl cHJlc2VudGF0aXZlIG4gb3IgbW9yZSkKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CitGUk9NIHJwcl9xdWFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQXsyLH0pCisgICAgREVGSU5FIEEgQVMgdmFsID4gNDAKKykKK09SREVSIEJZIGlk OworCistLSBVcHBlciBib3VuZCBxdWFudGlmaWVycyB7LG19CisKKy0tIHssM30gKHJlcHJlc2Vu dGF0aXZlIHVwIHRvIG0pCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAor RlJPTSBycHJfcXVhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEF7LDN9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworCistLSBS YW5nZSBxdWFudGlmaWVycyB7bixtfQorCistLSB7Myw3fSAocmVwcmVzZW50YXRpdmUgcmFuZ2Up CitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcXVhbnQK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7Myw3fSkKKyAgICBE RUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKworRFJPUCBUQUJMRSBycHJfcXVh bnQ7CisKKy0tIFJlbHVjdGFudCBxdWFudGlmaWVycyAobm90IHlldCBzdXBwb3J0ZWQpCitDUkVB VEUgVEFCTEUgcnByX3JlbHVjdGFudCAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJw cl9yZWx1Y3RhbnQgVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCk7CisKKy0tICo/ICh6 ZXJvIG9yIG1vcmUsIHJlbHVjdGFudCkKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnBy X3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSo/ KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CistLSBFeHBlY3RlZDogRVJST1I6IHJlbHVj dGFudCBxdWFudGlmaWVycyBhcmUgbm90IHlldCBzdXBwb3J0ZWQKKworLS0gKz8gKG9uZSBvciBt b3JlLCByZWx1Y3RhbnQpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3Rh bnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErPykKKyAgICBE RUZJTkUgQSBBUyB2YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVh bnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCisKKy0tID8/ICh6ZXJvIG9yIG9uZSwgcmVs dWN0YW50KQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBPz8pCisgICAgREVGSU5FIEEg QVMgdmFsID4gMAorKTsKKy0tIEV4cGVjdGVkOiBFUlJPUjogcmVsdWN0YW50IHF1YW50aWZpZXJz IGFyZSBub3QgeWV0IHN1cHBvcnRlZAorCistLSB7bix9PyAobiBvciBtb3JlLCByZWx1Y3RhbnQp CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7Mix9PykKKyAgICBERUZJTkUgQSBBUyB2 YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJl IG5vdCB5ZXQgc3VwcG9ydGVkCisKKy0tIHtuLG19PyAobiB0byBtLCByZWx1Y3RhbnQpCitTRUxF Q1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MSwzfT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4g MAorKTsKKy0tIEV4cGVjdGVkOiBFUlJPUjogcmVsdWN0YW50IHF1YW50aWZpZXJzIGFyZSBub3Qg eWV0IHN1cHBvcnRlZAorCistLSB7bn0/IChleGFjdGx5IG4sIHJlbHVjdGFudCkKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQXsyfT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsK Ky0tIEV4cGVjdGVkOiBFUlJPUjogcmVsdWN0YW50IHF1YW50aWZpZXJzIGFyZSBub3QgeWV0IHN1 cHBvcnRlZAorCistLSB7LG19PyAodXAgdG8gbSwgcmVsdWN0YW50KSAtIENPTVBMRVRFTFkgVU5U RVNURUQgUlVMRSEKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXssM30/KQorICAgIERF RklORSBBIEFTIHZhbCA+IDAKKyk7CistLSBFeHBlY3RlZDogRVJST1I6IHJlbHVjdGFudCBxdWFu dGlmaWVycyBhcmUgbm90IHlldCBzdXBwb3J0ZWQKKworLS0gSW52YWxpZCByZWx1Y3RhbnQgcGF0 dGVybnMgKHdyb25nIHRva2VuIGFmdGVyIHF1YW50aWZpZXIpCisKKy0tIHsyfSsgKHNob3VsZCBi ZSB7Mn0/IG5vdCB7Mn0rKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0 YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezJ9KykKKyAg ICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6IEVSUk9SOiBzeW50YXggZXJy b3IgYXQgb3IgbmVhciAiKyIKKworLS0gezIsfSogKHNob3VsZCBiZSB7Mix9PyBub3QgezIsfSop CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7Mix9KikKKyAgICBERUZJTkUgQSBBUyB2 YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6IEVSUk9SOiBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAi KiIKKworLS0geywzfSogKHNob3VsZCBiZSB7LDN9PyBub3QgeywzfSopCitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEF7LDN9KikKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworLS0g RXhwZWN0ZWQ6IEVSUk9SOiBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiKiIKKworLS0gezEsM30r IChzaG91bGQgYmUgezEsM30/IG5vdCB7MSwzfSspCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitG Uk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEF7MSwzfSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKy0tIEV4cGVjdGVkOiBF UlJPUjogc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIisiCisKKy0tIEJvdW5kYXJ5IGVycm9ycyBp biByZWx1Y3RhbnQgcXVhbnRpZmllcnMKKworLS0gey0xfT8gKG5lZ2F0aXZlIGJvdW5kKQorU0VM RUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBey0xfT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4g MAorKTsKKy0tIEV4cGVjdGVkOiBFUlJPUjogc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIi0iCisK Ky0tIHsyMTQ3NDgzNjQ3fT8gKElOVF9NQVgpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9N IHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEF7MjE0NzQ4MzY0N30/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CistLSBFeHBlY3Rl ZDogRVJST1I6IHF1YW50aWZpZXIgYm91bmQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxNDc0ODM2 NDYKKworLS0gey0xLH0/IChuZWdhdGl2ZSBsb3dlciBib3VuZCkKK1NFTEVDVCBDT1VOVCgqKSBP VkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQXstMSx9PykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworLS0gRXhw ZWN0ZWQ6IEVSUk9SOiBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiLSIKKworLS0gezIxNDc0ODM2 NDcsfT8gKElOVF9NQVggbG93ZXIgYm91bmQpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9N IHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEF7MjE0NzQ4MzY0Nyx9PykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworLS0gRXhwZWN0 ZWQ6IEVSUk9SOiBxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMTQ3NDgz NjQ2CisKKy0tIHssMH0/ICh6ZXJvIHVwcGVyIGJvdW5kKQorU0VMRUNUIENPVU5UKCopIE9WRVIg dworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBeywwfT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKy0tIEV4cGVjdGVk OiBFUlJPUjogcXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjE0NzQ4MzY0 NgorCistLSB7LDIxNDc0ODM2NDd9PyAoSU5UX01BWCB1cHBlciBib3VuZCkKK1NFTEVDVCBDT1VO VCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQXssMjE0NzQ4MzY0N30/KQorICAgIERFRklORSBBIEFTIHZhbCA+ IDAKKyk7CistLSBFeHBlY3RlZDogRVJST1I6IHF1YW50aWZpZXIgYm91bmQgbXVzdCBiZSBiZXR3 ZWVuIDEgYW5kIDIxNDc0ODM2NDYKKworLS0gey0xLDN9PyAobmVnYXRpdmUgbG93ZXIgaW4gcmFu Z2UpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LTEsM30/KQorICAgIERFRklORSBB IEFTIHZhbCA+IDAKKyk7CistLSBFeHBlY3RlZDogRVJST1I6IHN5bnRheCBlcnJvciBhdCBvciBu ZWFyICItIgorCistLSB7MSwyMTQ3NDgzNjQ3fT8gKElOVF9NQVggdXBwZXIgaW4gcmFuZ2UpCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MSwyMTQ3NDgzNjQ3fT8pCisgICAgREVGSU5F IEEgQVMgdmFsID4gMAorKTsKKy0tIEV4cGVjdGVkOiBFUlJPUjogcXVhbnRpZmllciBib3VuZHMg bXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDIxNDc0ODM2NDYgd2l0aCBtYXggPj0gMQorCistLSB7NSwz fT8gKG1pbiA+IG1heCkKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFu dAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXs1LDN9PykKKyAg ICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6IEVSUk9SOiBxdWFudGlmaWVy IG1pbmltdW0gYm91bmQgbXVzdCBub3QgZXhjZWVkIG1heGltdW0KKworLS0gVG9rZW4tc2VwYXJh dGVkIHJlbHVjdGFudCBxdWFudGlmaWVycyAoc3BhY2UgYmV0d2VlbiBxdWFudGlmaWVyIGFuZCA/ KQorLS0gVGhlc2UgbWF5IGJlIHRva2VuaXplZCBkaWZmZXJlbnRseSBieSB0aGUgbGV4ZXIKKwor LS0gKiA/ICh0b2tlbiBzZXBhcmF0ZWQpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJw cl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEq ID8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKy0tIEV4cGVjdGVkOiBFUlJPUjogcmVs dWN0YW50IHF1YW50aWZpZXJzIGFyZSBub3QgeWV0IHN1cHBvcnRlZAorCistLSArID8gKHRva2Vu IHNlcGFyYXRlZCkKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsgPykKKyAgICBERUZJ TkUgQSBBUyB2YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRp ZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCisKKy0tIHsyLH0gPyAodG9rZW4gc2VwYXJhdGVk KQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezIsfSA/KQorICAgIERFRklORSBBIEFT IHZhbCA+IDAKKyk7CistLSBFeHBlY3RlZDogRVJST1I6IHJlbHVjdGFudCBxdWFudGlmaWVycyBh cmUgbm90IHlldCBzdXBwb3J0ZWQKKworLS0gSW52YWxpZCB0b2tlbiBjb21iaW5hdGlvbnMKKwor LS0gKiArIChpbnZhbGlkIGNvbWJpbmF0aW9uKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJP TSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBKiArKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CistLSBFeHBlY3RlZDogRVJST1I6 IHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIrIgorCistLSArICogKGludmFsaWQgY29tYmluYXRp b24pCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErICopCisgICAgREVGSU5FIEEgQVMg dmFsID4gMAorKTsKKy0tIEV4cGVjdGVkOiBFUlJPUjogc3ludGF4IGVycm9yIGF0IG9yIG5lYXIg IioiCisKKy0tID8gPyAoaW52YWxpZCBjb21iaW5hdGlvbikKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQT8gPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6 IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCisKK0RS T1AgVEFCTEUgcnByX3JlbHVjdGFudDsKKworLS0gUXVhbnRpZmllciBib3VuZGFyeSBjb25kaXRp b25zCisKK0NSRUFURSBUQUJMRSBycHJfYm91bmRzIChpZCBJTlQpOworSU5TRVJUIElOVE8gcnBy X2JvdW5kcyBWQUxVRVMgKDEpLCAoMik7CisKKy0tIG1pbiA+IG1heAorU0VMRUNUIENPVU5UKCop IE9WRVIgdworRlJPTSBycHJfYm91bmRzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBezUsM30pCisgICAgREVGSU5FIEEgQVMgaWQgPiAwCispOworLS0gRXhwZWN0 ZWQ6IEVSUk9SOiBxdWFudGlmaWVyIG1pbmltdW0gYm91bmQgbXVzdCBub3QgZXhjZWVkIG1heGlt dW0KKworLS0gTGFyZ2UgYm91bmRzCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9i b3VuZHMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MTAwMCwy MDAwfSkKKyAgICBERUZJTkUgQSBBUyBpZCA+IDAKKyk7CisKKy0tIFZlcnkgbGFyZ2UgYm91bmQK K1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2JvdW5kcworV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsxMDAwMDB9KQorICAgIERFRklORSBBIEFTIGlk ID4gMAorKTsKKworLS0gSU5UX01BWCAtIDEgPSAyMTQ3NDgzNjQ2IChhdCBsaW1pdCkKK1NFTEVD VCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2JvdW5kcworV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQXsyMTQ3NDgzNjQ2fSkKKyAgICBERUZJTkUgQSBBUyBpZCA+ IDAKKyk7CisKKy0tIElOVF9NQVggPSAyMTQ3NDgzNjQ3IChvdmVyIGxpbWl0KQorU0VMRUNUIENP VU5UKCopIE9WRVIgdworRlJPTSBycHJfYm91bmRzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBezIxNDc0ODM2NDd9KQorICAgIERFRklORSBBIEFTIGlkID4gMAor KTsKKy0tIEV4cGVjdGVkOiBFUlJPUjogcXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4g MSBhbmQgMjE0NzQ4MzY0NgorCistLSB7bix9IGJvdW5kYXJ5IGVycm9ycworCistLSBOZWdhdGl2 ZSBsb3dlciBib3VuZCBpbiB7bix9CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9i b3VuZHMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LTEsfSkK KyAgICBERUZJTkUgQSBBUyBpZCA+IDAKKyk7CistLSBFeHBlY3RlZDogRVJST1I6IHN5bnRheCBl cnJvciBhdCBvciBuZWFyICItIgorCistLSBJTlRfTUFYIGluIHtuLH0KK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcKK0ZST00gcnByX2JvdW5kcworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQXsyMTQ3NDgzNjQ3LH0pCisgICAgREVGSU5FIEEgQVMgaWQgPiAwCispOwor LS0gRXhwZWN0ZWQ6IEVSUk9SOiBxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2VlbiAwIGFu ZCAyMTQ3NDgzNjQ2CisKKy0tIHssbX0gYm91bmRhcnkgZXJyb3JzCisKKy0tIFplcm8gdXBwZXIg Ym91bmQgaW4geyxtfQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfYm91bmRzCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBeywwfSkKKyAgICBERUZJ TkUgQSBBUyBpZCA+IDAKKyk7CistLSBFeHBlY3RlZDogRVJST1I6IHF1YW50aWZpZXIgYm91bmQg bXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxNDc0ODM2NDYKKworLS0gSU5UX01BWCBpbiB7LG19CitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9ib3VuZHMKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LDIxNDc0ODM2NDd9KQorICAgIERFRklORSBBIEFT IGlkID4gMAorKTsKKy0tIEV4cGVjdGVkOiBFUlJPUjogcXVhbnRpZmllciBib3VuZCBtdXN0IGJl IGJldHdlZW4gMSBhbmQgMjE0NzQ4MzY0NgorCitEUk9QIFRBQkxFIHJwcl9ib3VuZHM7CisKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gTmF2aWdhdGlvbiBGdW5jdGlvbnMgVGVzdHMgKFBSRVYgLyBORVhUKQorLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CisKKworQ1JFQVRFIFRBQkxFIHJwcl9uYXYgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5U TyBycHJfbmF2IFZBTFVFUworICAgICgxLCAxMCksICgyLCAyMCksICgzLCAxNSksICg0LCAyNSks ICg1LCAzMCk7CisKKy0tIFBSRVYgZnVuY3Rpb24gLSByZWZlcmVuY2UgcHJldmlvdXMgcm93IGlu IHBhdHRlcm4KK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJw cl9uYXYKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisg ICAgREVGSU5FCisgICAgICAgIEEgQVMgdmFsID4gMCwKKyAgICAgICAgQiBBUyB2YWwgPiBQUkVW KHZhbCkKKykKK09SREVSIEJZIGlkOworCistLSBORVhUIGZ1bmN0aW9uIC0gcmVmZXJlbmNlIG5l eHQgcm93IGluIHBhdHRlcm4KK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250 CitGUk9NIHJwcl9uYXYKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEErIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdmFsIDwgTkVYVCh2YWwpLAorICAgICAg ICBCIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworCistLSBDb21iaW5lZCBQUkVWIGFuZCBO RVhUCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbmF2 CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIgQykKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyB2YWwgPiAwLAorICAgICAgICBCIEFTIHZhbCA+IFBSRVYodmFs KSBBTkQgdmFsIDwgTkVYVCh2YWwpLAorICAgICAgICBDIEFTIHZhbCA+IFBSRVYodmFsKQorKQor T1JERVIgQlkgaWQ7CisKK0RST1AgVEFCTEUgcnByX25hdjsKKworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTS0lQIFRP IC8gSU5JVElBTCBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisKKworQ1JFQVRFIFRBQkxFIHJwcl9za2lwIChpZCBJ TlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3NraXAgVkFMVUVTCisgICAgKDEsIDEpLCAo MiwgMiksICgzLCAzKSwgKDQsIDQpLCAoNSwgNSksCisgICAgKDYsIDYpLCAoNywgNyksICg4LCA4 KTsKKworLS0gU0tJUCBUTyBORVhUIFJPVworCistLSBTS0lQIFRPIE5FWFQgUk9XCitTRUxFQ1Qg aWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc2tpcAorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAg IFBBVFRFUk4gKEEgQiBDKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsID4gMiwg QyBBUyB2YWwgPiA0CispCitPUkRFUiBCWSBpZDsKKworLS0gU0tJUCBQQVNUIExBU1QgUk9XCisK Ky0tIFNLSVAgUEFTVCBMQVNUIFJPVworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBh cyBjbnQKK0ZST00gcnByX3NraXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDKQorICAgIERF RklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsID4gMiwgQyBBUyB2YWwgPiA0CispCitPUkRFUiBC WSBpZDsKKworLS0gRGVmYXVsdCBiZWhhdmlvciAoc2hvdWxkIGJlIFNLSVAgUEFTVCBMQVNUIFJP VykKKworLS0gTm8gU0tJUCBUTyBjbGF1c2UgKGRlZmF1bHQpCitTRUxFQ1QgaWQsIHZhbCwgQ09V TlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc2tpcAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMg dmFsID4gMQorKQorT1JERVIgQlkgaWQ7CisKKy0tIENvbXBhcmUgZGVmYXVsdCB3aXRoIGV4cGxp Y2l0IFBBU1QgTEFTVCBST1cKKy0tIFJlc3VsdHMgc2hvdWxkIGJlIGlkZW50aWNhbAorV0lUSCBk ZWZhdWx0X3NraXAgQVMgKAorICAgIFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMg Y250CisgICAgRlJPTSBycHJfc2tpcAorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIg QlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQiBDKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwg PiAwLCBCIEFTIHZhbCA+IDIsIEMgQVMgdmFsID4gNAorICAgICkKKyksCitleHBsaWNpdF9za2lw IEFTICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZS T00gcnByX3NraXAKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAg ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgICAgUEFUVEVSTiAoQSBC IEMpCisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsID4gMiwgQyBBUyB2YWwg PiA0CisgICAgKQorKQorU0VMRUNUICdkZWZhdWx0JyBhcyB0eXBlLCAqIEZST00gZGVmYXVsdF9z a2lwCitVTklPTiBBTEwKK1NFTEVDVCAnZXhwbGljaXQnIGFzIHR5cGUsICogRlJPTSBleHBsaWNp dF9za2lwCitPUkRFUiBCWSB0eXBlLCBpZDsKKworRFJPUCBUQUJMRSBycHJfc2tpcDsKKworLS0g SU5JVElBTCBjbGF1c2UKKworQ1JFQVRFIFRBQkxFIHJwcl9pbml0IChpZCBJTlQsIHZhbCBJTlQp OworSU5TRVJUIElOVE8gcnByX2luaXQgVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCks ICg0LCA0MCk7CisKKy0tIEV4cGxpY2l0IElOSVRJQUwKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9pbml0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4g MAorKQorT1JERVIgQlkgaWQ7CisKKy0tIEltcGxpY2l0IElOSVRJQUwgKGRlZmF1bHQpCitTRUxF Q1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfaW5pdAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMg dmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisKK0RST1AgVEFCTEUgcnByX2luaXQ7CisKKy0tIFNF RUsKKworQ1JFQVRFIFRBQkxFIHJwcl9zZWVrIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElO VE8gcnByX3NlZWsgVkFMVUVTICgxLCAxMCk7CisKKy0tIFNFRUsga2V5d29yZAorU0VMRUNUIENP VU5UKCopIE9WRVIgdworRlJPTSBycHJfc2VlaworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgU0VFSworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7 CistLSBFeHBlY3RlZDogRVJST1I6IFNFRUsgaXMgbm90IHN1cHBvcnRlZAorLS0gSElOVDogVXNl IElOSVRJQUwgaW5zdGVhZC4KKworRFJPUCBUQUJMRSBycHJfc2VlazsKKworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBT ZXJpYWxpemF0aW9uL0Rlc2VyaWFsaXphdGlvbiBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworLS0gVmlldyBj cmVhdGlvbiBhbmQgZGVwYXJzaW5nCisKK0NSRUFURSBUQUJMRSBycHJfc2VyaWFsIChpZCBJTlQs IHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3NlcmlhbCBWQUxVRVMKKyAgICAoMSwgMTApLCAo MiwgMjApLCAoMywgMTUpLCAoNCwgMjUpLCAoNSwgMzApOworCistLSBTaW1wbGUgcGF0dGVybgor Q1JFQVRFIFZJRVcgcnByX3NlcmlhbF92MSBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9W RVIgdyBhcyBjbnQKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworLS0gVmVy aWZ5IHZpZXcgd29ya3MgKHRlc3RzIGRlc2VyaWFsaXphdGlvbikKK1NFTEVDVCAqIEZST00gcnBy X3NlcmlhbF92MSBPUkRFUiBCWSBpZDsKKworLS0gVmVyaWZ5IGRlcGFyc2luZworU0VMRUNUIHBn X2dldF92aWV3ZGVmKCdycHJfc2VyaWFsX3YxJzo6cmVnY2xhc3MpOworCitEUk9QIFZJRVcgcnBy X3NlcmlhbF92MTsKKworLS0gQ29tcGxleCBwYXR0ZXJuIHdpdGggYWx0ZXJuYXRpb24KK0NSRUFU RSBWSUVXIHJwcl9zZXJpYWxfdjIgQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEErIHwgQiopCisgICAgREVGSU5FIEEgQVMgdmFsID4gMjAsIEIgQVMgdmFsIDw9 IDIwCispOworCitTRUxFQ1QgKiBGUk9NIHJwcl9zZXJpYWxfdjIgT1JERVIgQlkgaWQ7CitTRUxF Q1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfdjInOjpyZWdjbGFzcyk7CisKK0RST1AgVklF VyBycHJfc2VyaWFsX3YyOworCistLSBQYXR0ZXJuIHdpdGggZ3JvdXBpbmcgYW5kIHF1YW50aWZp ZXJzCitDUkVBVEUgVklFVyBycHJfc2VyaWFsX3YzIEFTCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc2VyaWFsCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOICgoQSBCKXsyLDV9IHwgQyopCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgdmFsID4gMTAsCisgICAgICAgIEIgQVMgdmFsID4gMjAsCisgICAgICAgIEMgQVMgdmFs IDw9IDEwCispOworCitTRUxFQ1QgKiBGUk9NIHJwcl9zZXJpYWxfdjMgT1JERVIgQlkgaWQ7CitT RUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfdjMnOjpyZWdjbGFzcyk7CisKK0RST1Ag VklFVyBycHJfc2VyaWFsX3YzOworCistLSBBbGwgZmVhdHVyZXMgY29tYmluZWQKK0NSRUFURSBW SUVXIHJwcl9zZXJpYWxfdjQgQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMg Y250CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoU1RB UlQgKE1JRHsxLDN9IHwgQUxUKykgRklOSVNIKQorICAgIERFRklORQorICAgICAgICBTVEFSVCBB UyB2YWwgPiA1LAorICAgICAgICBNSUQgQVMgdmFsIEJFVFdFRU4gMTAgQU5EIDI1LAorICAgICAg ICBBTFQgQVMgdmFsID4gMjUsCisgICAgICAgIEZJTklTSCBBUyB2YWwgPiAxNQorKTsKKworU0VM RUNUICogRlJPTSBycHJfc2VyaWFsX3Y0IE9SREVSIEJZIGlkOworU0VMRUNUIHBnX2dldF92aWV3 ZGVmKCdycHJfc2VyaWFsX3Y0Jzo6cmVnY2xhc3MpOworCitEUk9QIFZJRVcgcnByX3NlcmlhbF92 NDsKKworLS0gQWRkaXRpb25hbCBxdWFudGlmaWVycyBmb3IgZGVwYXJzaW5nIGNvdmVyYWdlCisK Ky0tID8gcXVhbnRpZmllciAoemVybyBvciBvbmUpCitDUkVBVEUgVklFVyBycHJfc2VyaWFsX3Y1 IEFTCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc2Vy aWFsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEI/KQorICAg IERFRklORSBBIEFTIHZhbCA+IDEwLCBCIEFTIHZhbCA+IDIwCispOworCitTRUxFQ1QgKiBGUk9N IHJwcl9zZXJpYWxfdjUgT1JERVIgQlkgaWQ7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9z ZXJpYWxfdjUnOjpyZWdjbGFzcyk7CisKK0RST1AgVklFVyBycHJfc2VyaWFsX3Y1OworCistLSB7 bix9IHF1YW50aWZpZXIgKG4gb3IgbW9yZSkKK0NSRUFURSBWSUVXIHJwcl9zZXJpYWxfdjYgQVMK K1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9zZXJpYWwK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7Mix9KQorICAgIERF RklORSBBIEFTIHZhbCA+IDE1CispOworCitTRUxFQ1QgKiBGUk9NIHJwcl9zZXJpYWxfdjYgT1JE RVIgQlkgaWQ7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfdjYnOjpyZWdjbGFz cyk7CisKK0RST1AgVklFVyBycHJfc2VyaWFsX3Y2OworCistLSB7bn0gcXVhbnRpZmllciAoZXhh Y3RseSBuKQorQ1JFQVRFIFZJRVcgcnByX3NlcmlhbF92NyBBUworU0VMRUNUIGlkLCB2YWwsIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXszfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisp OworCitTRUxFQ1QgKiBGUk9NIHJwcl9zZXJpYWxfdjcgT1JERVIgQlkgaWQ7CitTRUxFQ1QgcGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfdjcnOjpyZWdjbGFzcyk7CisKK0RST1AgVklFVyBycHJf c2VyaWFsX3Y3OworCistLSBOZXN0ZWQgQUxUIHBhdHRlcm4gKHRlc3RzIGRlcGFyc2Ugb2YgY29t cGxleCBuZXN0ZWQgc3RydWN0dXJlKQorQ1JFQVRFIFZJRVcgcnByX3NlcmlhbF92OCBBUworU0VM RUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3NlcmlhbAorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKChBKyBCKSB8IEMpIEQgfCBB IEIgQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMTUsIEIgQVMgdmFsIDw9IDI1LCBDIEFTIHZh bCA8PSAzMCwgRCBBUyB2YWwgPiAzMAorKTsKKworU0VMRUNUICogRlJPTSBycHJfc2VyaWFsX3Y4 IE9SREVSIEJZIGlkOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfc2VyaWFsX3Y4Jzo6cmVn Y2xhc3MpOworCitEUk9QIFZJRVcgcnByX3NlcmlhbF92ODsKKworRFJPUCBUQUJMRSBycHJfc2Vy aWFsOworCistLSBNYXRlcmlhbGl6ZWQgdmlldyAoaWYgc3VwcG9ydGVkKQorCitDUkVBVEUgVEFC TEUgcnByX212aWV3IChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX212aWV3IFZB TFVFUyAoMSwgMTApLCAoMiwgMjApLCAoMywgMzApOworCitDUkVBVEUgTUFURVJJQUxJWkVEIFZJ RVcgcnByX212aWV3X3YxIEFTCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAorRlJPTSBycHJfbXZpZXcKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKK1NFTEVDVCAqIEZST00gcnBy X212aWV3X3YxIE9SREVSIEJZIGlkOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfbXZpZXdf djEnOjpyZWdjbGFzcyk7CisKKy0tIFJlZnJlc2ggdGVzdAorUkVGUkVTSCBNQVRFUklBTElaRUQg VklFVyBycHJfbXZpZXdfdjE7CitTRUxFQ1QgKiBGUk9NIHJwcl9tdmlld192MSBPUkRFUiBCWSBp ZDsKKworRFJPUCBNQVRFUklBTElaRUQgVklFVyBycHJfbXZpZXdfdjE7CitEUk9QIFRBQkxFIHJw cl9tdmlldzsKKworLS0gUHJlcGFyZWQgc3RhdGVtZW50cyAodGVzdHMgb3V0ZnVuY3MuYyAvIHJl YWRmdW5jcy5jKQorCitDUkVBVEUgVEFCTEUgcnByX3ByZXAgKGlkIElOVCwgdmFsIElOVCk7CitJ TlNFUlQgSU5UTyBycHJfcHJlcCBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDMwKTsKKwor LS0gU2ltcGxlIHByZXBhcmVkIHN0YXRlbWVudAorUFJFUEFSRSBycHJfcHJlcF9zaW1wbGUgQVMK K1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wcmVwCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKworRVhFQ1VURSBycHJfcHJlcF9zaW1wbGU7 CitFWEVDVVRFIHJwcl9wcmVwX3NpbXBsZTsKKworREVBTExPQ0FURSBycHJfcHJlcF9zaW1wbGU7 CisKKy0tIFByZXBhcmVkIHN0YXRlbWVudCB3aXRoIHBhcmFtZXRlcnMKK1BSRVBBUkUgcnByX3By ZXBfcGFyYW0oaW50KSBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK K0ZST00gcnByX3ByZXAKK1dIRVJFIGlkIDw9ICQxCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAxMAorKQorT1JERVIg QlkgaWQ7CisKK0VYRUNVVEUgcnByX3ByZXBfcGFyYW0oMik7CitFWEVDVVRFIHJwcl9wcmVwX3Bh cmFtKDMpOworCitERUFMTE9DQVRFIHJwcl9wcmVwX3BhcmFtOworCistLSBDb21wbGV4IHByZXBh cmVkIHN0YXRlbWVudAorUFJFUEFSRSBycHJfcHJlcF9jb21wbGV4IEFTCitTRUxFQ1QgaWQsIHZh bCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcHJlcAorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRF Uk4gKChBIEIpezEsMn0gfCBDKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2YWwgPiA1LAor ICAgICAgICBCIEFTIHZhbCA+IDE1LAorICAgICAgICBDIEFTIHZhbCA8PSAxNQorKQorT1JERVIg QlkgaWQ7CisKK0VYRUNVVEUgcnByX3ByZXBfY29tcGxleDsKK0VYRUNVVEUgcnByX3ByZXBfY29t cGxleDsKKworREVBTExPQ0FURSBycHJfcHJlcF9jb21wbGV4OworCitEUk9QIFRBQkxFIHJwcl9w cmVwOworCistLSBDVEUgYW5kIFN1YnF1ZXJ5ICh0ZXN0cyBjb3B5ZnVuY3MuYykKKworQ1JFQVRF IFRBQkxFIHJwcl9jb3B5IChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX2NvcHkg VkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCksICg0LCA0MCk7CisKKy0tIFNpbXBsZSBD VEUKK1dJVEggcnByX2N0ZSBBUyAoCisgICAgU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIg dyBhcyBjbnQKKyAgICBGUk9NIHJwcl9jb3B5CisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBP UkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFTIHZh bCA+IDAKKyAgICApCispCitTRUxFQ1QgKiBGUk9NIHJwcl9jdGUgT1JERVIgQlkgaWQ7CisKKy0t IENURSB3aXRoIG11bHRpcGxlIHJlZmVyZW5jZXMgKGZvcmNlcyBub2RlIGNvcHkpCitXSVRIIHJw cl9jdGUgQVMgKAorICAgIFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250Cisg ICAgRlJPTSBycHJfY29weQorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQK KyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAxNQorICAg ICkKKykKK1NFTEVDVCBjMS5pZCwgYzEuY250IGFzIGNudDEsIGMyLmNudCBhcyBjbnQyCitGUk9N IHJwcl9jdGUgYzEKK0pPSU4gcnByX2N0ZSBjMiBPTiBjMS5pZCA9IGMyLmlkCitPUkRFUiBCWSBj MS5pZDsKKworLS0gU3VicXVlcnkgaW4gRlJPTSBjbGF1c2UKK1NFTEVDVCAqCitGUk9NICgKKyAg ICBTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX2Nv cHkKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRU RVJOIChBIEI/KQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAxMCwgQiBBUyB2YWwgPiAyMAor ICAgICkKKykgc3ViCitXSEVSRSBjbnQgPiAwCitPUkRFUiBCWSBpZDsKKworLS0gTmVzdGVkIHN1 YnF1ZXJpZXMKK1NFTEVDVCAqCitGUk9NICgKKyAgICBTRUxFQ1QgKgorICAgIEZST00gKAorICAg ICAgICBTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgICAgICBGUk9N IHJwcl9jb3B5CisgICAgICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgICAgIE9SREVSIEJZIGlk CisgICAgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICAgICAgREVGSU5FIEEgQVMg dmFsID49IDEwCisgICAgICAgICkKKyAgICApIGlubmVyX3N1YgorICAgIFdIRVJFIGNudCA+IDAK Kykgb3V0ZXJfc3ViCitPUkRFUiBCWSBpZDsKKworRFJPUCBUQUJMRSBycHJfY29weTsKKworLS0g RElTVElOQ1QgYW5kIHNldCBvcGVyYXRpb25zICh0ZXN0cyBlcXVhbGZ1bmNzLmMpCisKK0NSRUFU RSBUQUJMRSBycHJfZXF1YWwgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfZXF1 YWwgVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAxMCksICg0LCAyMCk7CisKKy0tIERJU1RJ TkNUIHdpdGggUlBSCitTRUxFQ1QgRElTVElOQ1QgY250CitGUk9NICgKKyAgICBTRUxFQ1QgaWQs IHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX2VxdWFsCisgICAgV0lO RE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSB2YWwKKyAgICAgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFT IHZhbCA+IDAKKyAgICApCispIHN1YgorT1JERVIgQlkgY250OworCistLSBVTklPTiB3aXRoIFJQ UiBpbiBib3RoIHNpZGVzCitTRUxFQ1QgaWQsIHZhbCwgY250IEZST00gKAorICAgIFNFTEVDVCBp ZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgRlJPTSBycHJfZXF1YWwKKyAgICBX SEVSRSB2YWwgPSAxMAorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAg ICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgICAgKQor KSBzdWIxCitVTklPTgorU0VMRUNUIGlkLCB2YWwsIGNudCBGUk9NICgKKyAgICBTRUxFQ1QgaWQs IHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX2VxdWFsCisgICAgV0hF UkUgdmFsID0gMjAKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAg ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICAgICkKKykg c3ViMgorT1JERVIgQlkgaWQ7CisKKy0tIFVOSU9OIEFMTAorU0VMRUNUIGlkLCBjbnQgRlJPTSAo CisgICAgU0VMRUNUIGlkLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgRlJPTSBycHJfZXF1 YWwKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRU RVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMTAKKyAgICApCispIHN1YgorVU5J T04gQUxMCitTRUxFQ1QgaWQsIGNudCBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIENPVU5UKCopIE9W RVIgdyBhcyBjbnQKKyAgICBGUk9NIHJwcl9lcXVhbAorICAgIFdJTkRPVyB3IEFTICgKKyAgICAg ICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEIrKQorICAgICAgICBERUZJTkUgQiBB UyB2YWwgPD0gMTAKKyAgICApCispIHN1YgorT1JERVIgQlkgaWQsIGNudDsKKworLS0gSU5URVJT RUNUCitTRUxFQ1QgaWQsIGNudCBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIENPVU5UKCopIE9WRVIg dyBhcyBjbnQKKyAgICBGUk9NIHJwcl9lcXVhbAorICAgIFdIRVJFIGlkIDw9IDMKKyAgICBXSU5E T1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAg ICAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICAgICkKKykgc3ViMQorSU5URVJTRUNUCitTRUxF Q1QgaWQsIGNudCBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK KyAgICBGUk9NIHJwcl9lcXVhbAorICAgIFdIRVJFIGlkID49IDIKKyAgICBXSU5ET1cgdyBBUyAo CisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVG SU5FIEEgQVMgdmFsID4gMAorICAgICkKKykgc3ViMgorT1JERVIgQlkgaWQ7CisKK0RST1AgVEFC TEUgcnByX2VxdWFsOworCistLSBWaWV3IHdpdGggbXVsdGlwbGUgd2luZG93IGRlZmluaXRpb25z CisKK0NSRUFURSBUQUJMRSBycHJfbXVsdGl3aW4gKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQg SU5UTyBycHJfbXVsdGl3aW4gVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCk7CisKK0NS RUFURSBWSUVXIHJwcl9tdWx0aXdpbl92IEFTCitTRUxFQ1QKKyAgICBpZCwKKyAgICB2YWwsCisg ICAgQ09VTlQoKikgT1ZFUiB3MSBhcyBjbnQxLAorICAgIENPVU5UKCopIE9WRVIgdzIgYXMgY250 MgorRlJPTSBycHJfbXVsdGl3aW4KK1dJTkRPVworICAgIHcxIEFTICgKKyAgICAgICAgT1JERVIg QlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAx NQorICAgICksCisgICAgdzIgQVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFU VEVSTiAoQiopCisgICAgICAgIERFRklORSBCIEFTIHZhbCA8PSAxNQorICAgICk7CisKK1NFTEVD VCAqIEZST00gcnByX211bHRpd2luX3YgT1JERVIgQlkgaWQ7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9tdWx0aXdpbl92Jzo6cmVnY2xhc3MpOworCitEUk9QIFZJRVcgcnByX211bHRpd2lu X3Y7CitEUk9QIFRBQkxFIHJwcl9tdWx0aXdpbjsKKworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBFcnJvciBDYXNlcyBU ZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CisKKworRFJPUCBUQUJMRSBJRiBFWElTVFMgcnByX2VycjsKK0NSRUFURSBU QUJMRSBycHJfZXJyIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX2VyciBWQUxV RVMgKDEsIDEwKSwgKDIsIDIwKTsKKworLS0gU3ludGF4IGVycm9ycworCistLSBJbnZhbGlkIHF1 YW50aWZpZXIgc3ludGF4CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErISkKKyAgICBERUZJTkUg QSBBUyB2YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6IFN5bnRheCBlcnJvcgorCistLSBVbm1hdGNo ZWQgcGFyZW50aGVzZXMKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gTk9USUNFOworRE8gJCQK K0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9lcnIg V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORyBQQVRURVJOICgoQSBCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFT IHZhbCA+IDEwKSc7CisgICAgUkFJU0UgTk9USUNFICdVbm1hdGNoZWQgcGFyZW50aGVzZXM6IFVO RVhQRUNURUQgU1VDQ0VTUyc7CitFWENFUFRJT04KKyAgICBXSEVOIHN5bnRheF9lcnJvciBUSEVO CisgICAgICAgIFJBSVNFIE5PVElDRSAnVW5tYXRjaGVkIHBhcmVudGhlc2VzOiBFWFBFQ1RFRCBF UlJPUiAtICUnLCBTUUxFUlJNOworICAgIFdIRU4gT1RIRVJTIFRIRU4KKyAgICAgICAgUkFJU0Ug Tk9USUNFICdVbm1hdGNoZWQgcGFyZW50aGVzZXM6IFVORVhQRUNURUQgRVJST1IgLSAlJywgU1FM RVJSTTsKK0VORCAkJDsKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gV0FSTklORzsKKworLS0g RW1wdHkgREVGSU5FCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORQorKTsK Ky0tIEV4cGVjdGVkOiBTeW50YXggZXJyb3IKKworLS0gRW1wdHkgUEFUVEVSTgorU0VMRUNUIENP VU5UKCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOICgpCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKy0tIEV4cGVjdGVk OiBTeW50YXggZXJyb3IKKworLS0gREVGSU5FIHdpdGhvdXQgUEFUVEVSTiAoUEFUVEVSTiBhbmQg REVGSU5FIG11c3QgYmUgdXNlZCB0b2dldGhlcikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZS T00gcnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgREVGSU5FIEEgQVMg dmFsID4gMAorKTsKKy0tIEV4cGVjdGVkOiBTeW50YXggZXJyb3IKKworLS0gUXVhbGlmaWVkIGNv bHVtbiByZWZlcmVuY2VzIChOT1QgU1VQUE9SVEVEKQorLS0gUGF0dGVybiB2YXJpYWJsZXMgaW4g REVGSU5FIGNsYXVzZSBjYW5ub3QgdXNlIHF1YWxpZmllZCByZWZlcmVuY2VzIChBLnByaWNlKQor LS0gVGhpcyBnaXZlcyBhIGNvbmZ1c2luZyBlcnJvciBhYm91dCBtaXNzaW5nIEZST00tY2xhdXNl IGVudHJ5CisKKy0tIFF1YWxpZmllZCByZWZlcmVuY2UgaW4gREVGSU5FIGNsYXVzZQorU0VMRUNU IENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBBLnZhbCA+IDAKKyk7CistLSBF eHBlY3RlZDogRVJST1I6IG1pc3NpbmcgRlJPTS1jbGF1c2UgZW50cnkgZm9yIHRhYmxlICJhIgor CistLSBTZW1hbnRpYyBlcnJvcnMKKworLS0gVW5kZWZpbmVkIGNvbHVtbiBpbiBERUZJTkUKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgbm9uZXhpc3RlbnRfY29s dW1uID4gMAorKTsKKy0tIEV4cGVjdGVkOiBFUlJPUjogY29sdW1uICJub25leGlzdGVudF9jb2x1 bW4iIGRvZXMgbm90IGV4aXN0CisKKy0tIFR5cGUgbWlzbWF0Y2gKK1NFTEVDVCBDT1VOVCgqKSBP VkVSIHcKK0ZST00gcnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gJ3N0cmluZycKKyk7CistLSBFeHBlY3Rl ZDogRVJST1I6IGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6ICJzdHJpbmci CisKKy0tIEFnZ3JlZ2F0ZSBmdW5jdGlvbiBpbiBERUZJTkUgKGlmIG5vdCBhbGxvd2VkKQorU0VM RUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBDT1VOVCgqKSA+IDAKKyk7 CistLSBFeHBlY3RlZDogRVJST1Igb3Igd29ya3MgZGVwZW5kaW5nIG9uIGltcGxlbWVudGF0aW9u CisKKy0tIFN1YnF1ZXJ5IGluIERFRklORSAoTk9UIFNVUFBPUlRFRCkKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcKK0ZST00gcnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gKFNFTEVDVCBtYXgodmFsKSBGUk9N IHJwcl9lcnIpCispOworLS0gRXhwZWN0ZWQ6IEVSUk9SOiBjYW5ub3QgdXNlIHN1YnF1ZXJ5IGlu IERFRklORSBleHByZXNzaW9uCisKKy0tIEVkZ2UgY2FzZXMKKworLS0gUGF0dGVybiB2YXJpYWJs ZSBub3QgdXNlZCAoc2hvdWxkIHdvcmssIGV4dHJhIHZhcnMgaWdub3JlZCkKK1NFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAs IEIgQVMgdmFsID4gNSwgQyBBUyB2YWwgPiAxMAorKQorT1JERVIgQlkgaWQ7CisKK0RST1AgVEFC TEUgcnByX2VycjsKKworLS0gTlVMTCBoYW5kbGluZworCitDUkVBVEUgVEFCTEUgcnByX251bGwg KGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfbnVsbCBWQUxVRVMgKDEsIDEwKSwg KDIsIE5VTEwpLCAoMywgMzApOworCistLSBOVUxMIGluIERFRklORSBleHByZXNzaW9uCitTRUxF Q1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbnVsbAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMg dmFsID4gMTUKKykKK09SREVSIEJZIGlkOworCistLSBJUyBOVUxMIGluIERFRklORQorU0VMRUNU IGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX251bGwKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKE4rKQorICAgIERFRklORSBOIEFTIHZh bCBJUyBOVUxMCispCitPUkRFUiBCWSBpZDsKKworLS0gSVMgTk9UIE5VTEwgaW4gREVGSU5FCitT RUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbnVsbAorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoTk4rKQorICAgIERFRklORSBO TiBBUyB2YWwgSVMgTk9UIE5VTEwKKykKK09SREVSIEJZIGlkOworCitEUk9QIFRBQkxFIHJwcl9u dWxsOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIFBhdHRlcm4gT3B0aW1pemF0aW9uIFRlc3RzCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IFRlc3RzIGZvciBwYXR0ZXJuIG9wdGltaXphdGlvbiBpbiBvcHRpbWl6ZXIvcGxhbi9ycHIuYwor LS0gVXNlIEVYUExBSU4gdG8gdmVyaWZ5IG9wdGltaXplZCBwYXR0ZXJuIChzaG93biBhcyAiUGF0 dGVybjogLi4uIikKKworQ1JFQVRFIFRBQkxFIHJwcl9wbGFuIChpZCBJTlQsIHZhbCBJTlQpOwor SU5TRVJUIElOVE8gcnByX3BsYW4gVkFMVUVTCisgICAgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDMw KSwgKDQsIDQwKSwgKDUsIDUwKSwKKyAgICAoNiwgNjApLCAoNywgNzApLCAoOCwgODApLCAoOSwg OTApLCAoMTAsIDEwMCk7CisKKy0tIENvbnNlY3V0aXZlIFZBUiBtZXJnZTogQSBBIEEgLT4gYXsz fQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9w bGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQSBBIEEpIERFRklO RSBBIEFTIHZhbCA+IDApOworCistLSBDb25zZWN1dGl2ZSBWQVIgbWVyZ2U6IEF7Mn0gQXszfSAt PiBhezV9CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00g cnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBezJ9IEF7 M30pIERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBDb25zZWN1dGl2ZSBWQVIgbWVyZ2U6IEEr IEEqIC0+IGErCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBKyBB KikgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIENvbnNlY3V0aXZlIFZBUiBtZXJnZTogQSBB KyAtPiBhezIsfQorLS0gVGVzdHMgbGluZSAyNTE6IGNoaWxkLT5tYXggPT0gUlBSX1FVQU5USVRZ X0lORiBicmFuY2ggaW4gbWVyZ2VDb25zZWN1dGl2ZVZhcnMKKy0tIHByZXY6IEF7MSwxfSAoZmlu aXRlKSwgY2hpbGQ6IEErIChpbmZpbml0ZSkgdHJpZ2dlcnMgbGluZSAyNTEgZXZhbHVhdGlvbgor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFu CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQSBBKykgREVGSU5FIEEg QVMgdmFsID4gMCk7CisKKy0tIENvbnNlY3V0aXZlIEdST1VQIG1lcmdlIHdpdGggZmluaXRlIHF1 YW50aWZpZXJzOiAoKEEgQil7NX0pICgoQSBCKXsxMH0pIC0+IG1lcmdlZAorRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBB UyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKChBIEIpezV9KSAoKEEgQil7MTB9KSkgREVG SU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gQ29uc2VjdXRpdmUgR1JP VVAgbWVyZ2Ugd2l0aCB1bmJvdW5kZWQ6IChBIEIpKyAoQSBCKSsgLT4gKGEgYil7Mix9CitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSBCKSsgKEEgQikrKSBERUZJ TkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBDb25zZWN1dGl2ZSBHUk9V UCBtZXJnZTogKEEgQil7Mn0gKEEgQikrIC0+IChhIGIpezMsfQorLS0gVGVzdHMgbGluZSAzMjU6 IGNoaWxkLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORiBicmFuY2ggaW4gbWVyZ2VDb25zZWN1dGl2 ZUdyb3VwcworLS0gcHJldjogKEEgQil7MiwyfSAoZmluaXRlKSwgY2hpbGQ6IChBIEIpKyAoaW5m aW5pdGUpIHRyaWdnZXJzIGxpbmUgMzI1IGV2YWx1YXRpb24KK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVS IEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgICAgICAgICAgIFBBVFRFUk4gKChBIEIpezJ9IChBIEIpKykgREVGSU5FIEEgQVMgdmFsIDw9 IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gUFJFRklYIG1lcmdlOiBBIEIgKEEgQikrIC0+IChh IGIpezIsfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9N IHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQSBCIChB IEIpKykgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gUFJFRklY IGFuZCBTVUZGSVggbWVyZ2U6IEEgQiAoQSBCKSsgQSBCIC0+IChhIGIpezMsfQorRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQSBCIChBIEIpKyBBIEIpIERFRklORSBB IEFTIHZhbCA8PSA0MCwgQiBBUyB2YWwgPiA0MCk7CisKKy0tIEZsYXR0ZW4gbmVzdGVkOiBBICgo QikgKEMpKSAtPiBhIGIgYworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9W RVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVS TiAoQSAoKEIpIChDKSkpIERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2YWwgPD0gNjAsIEMg QVMgdmFsID4gNjApOworCistLSBBTFQgZmxhdHRlbjogKEEgfCAoQiB8IEMpKSsgLT4gKGEgfCBi IHwgYykrCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00g cnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSB8IChC IHwgQykpKykgREVGSU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA8PSA2MCwgQyBBUyB2YWwg PiA2MCk7CisKKy0tIEFMVCBkZWR1cGxpY2F0ZTogKEEgfCBCIHwgQSkgLT4gKGEgfCBiKQorRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgfCBCIHwgQSkrKSBERUZJ TkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBRdWFudGlmaWVyIG11bHRp cGx5OiAoQXsyfSl7M30gLT4gYXs2fQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAg UEFUVEVSTiAoKEF7Mn0pezN9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gUXVhbnRpZmll ciBtdWx0aXBseSB3aXRoIGNoaWxkIHJhbmdlOiAoQXsyLDN9KXszfSAtPiBhezYsOX0KKy0tIG91 dGVyIGV4YWN0LCBjaGlsZCByYW5nZSAtIG9wdGltaXphdGlvbiBhcHBsaWVzCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3 IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQXsyLDN9KXszfSkgREVGSU5FIEEgQVMg dmFsID4gMCk7CisKKy0tIFF1YW50aWZpZXIgTk8gbXVsdGlwbHk6IChBezJ9KXsyLDN9IHN0YXlz IGFzIChhezJ9KXsyLDN9CistLSBvdXRlciByYW5nZSAtIGdhcHMgd291bGQgb2NjdXIgKDQsNiBu b3QgNCw1LDYpLCBubyBvcHRpbWl6YXRpb24KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAg ICAgIFBBVFRFUk4gKChBezJ9KXsyLDN9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gUXVh bnRpZmllciBOTyBtdWx0aXBseTogKEF7Mn0pezIsfSBzdGF5cyBhcyAoYXsyfSl7Mix9CistLSBv dXRlciB1bmJvdW5kZWQgLSBnYXBzIHdvdWxkIG9jY3VyICg0LDYsOCwuLi4gbm90IDQsNSw2LC4u LiksIG5vIG9wdGltaXphdGlvbgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCop IE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFU VEVSTiAoKEF7Mn0pezIsfSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIFF1YW50aWZpZXIg bXVsdGlwbHk6IChBKXsyLH0gLT4gYXsyLH0KKy0tIGNoaWxkIGV4YWN0IDEgLSBubyBnYXBzLCBv cHRpbWl6YXRpb24gYXBwbGllcworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCop IE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFU VEVSTiAoKEEpezIsfSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIFF1YW50aWZpZXIgbXVs dGlwbHk6IChBKSsgLT4gYSsKKy0tIGNoaWxkIGV4YWN0IDEgLSBubyBnYXBzLCBvcHRpbWl6YXRp b24gYXBwbGllcworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEp KykgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIFF1YW50aWZpZXIgTk8gbXVsdGlwbHk6IChB ezJ9KXszLDV9IHN0YXlzIGFzIChhezJ9KXszLDV9CistLSBvdXRlciByYW5nZSwgY2hpbGQgZXhh Y3QgPiAxIC0gZ2FwcyB3b3VsZCBvY2N1ciAoNiw4LDEwIG5vdCA2LDcsOCw5LDEwKQorRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5E T1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7Mn0pezMsNX0pIERFRklORSBB IEFTIHZhbCA+IDApOworCistLSBRdWFudGlmaWVyIE5PIG11bHRpcGx5OiAoQXsyLDN9KXsyLDN9 IHN0YXlzIGFzIChhezIsM30pezIsM30KKy0tIG91dGVyIHJhbmdlLCBjaGlsZCByYW5nZSAtIGdh cHMgcG9zc2libGUgKGUuZy4sIChBezQsNX0pezIsM30gbWlzc2VzIDExKQorRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBB UyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7MiwzfSl7MiwzfSkgREVGSU5FIEEgQVMg dmFsID4gMCk7CisKKy0tIE5lc3RlZCB1bmJvdW5kZWQ6IChBKikqIC0+IGEqCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3 IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSopKikgREVGSU5FIEEgQVMgdmFsID4g MCk7CisKKy0tIE5lc3RlZCB1bmJvdW5kZWQ6IChBKykqIC0+IGEqCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChP UkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSspKikgREVGSU5FIEEgQVMgdmFsID4gMCk7CisK Ky0tIE5lc3RlZCB1bmJvdW5kZWQ6IChBKykrIC0+IGErCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICAgICAgICAgICBQQVRURVJOICgoQSspKykgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIFVu d3JhcCBHUk9VUHsxLDF9OiAoQSkgLT4gYQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENP VU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAg ICAgUEFUVEVSTiAoKEEpKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gVW53cmFwIEdST1VQ ezEsMX06IChBIEIpIC0+IGEgYgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCop IE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFU VEVSTiAoKEEgQikpIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0t IENvbWJpbmVkIG9wdGltaXphdGlvbjogQSBBIChCIEIpKyBCIEIgQyBDIEMgLT4gYXsyfSAoYnsy fSl7Mix9IGN7M30KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcg RlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEg QSAoQiBCKSsgQiBCIEMgQyBDKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSAyMCwg QiBBUyB2YWwgPiAyMCBBTkQgdmFsIDw9IDcwLCBDIEFTIHZhbCA+IDcwKTsKKworLS0gQ29uc2Vj dXRpdmUgR1JPVVAgbWVyZ2Ugd2l0aCB1bmJvdW5kZWQ6IChBKykgKEErKSAtPiBhezIsfQorLS0g VGVzdHMgbWVyZ2VDb25zZWN1dGl2ZUdyb3VwcyB3aXRoIGNoaWxkLT5tYXggPT0gSU5GCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSspIChBKykpIERFRklORSBB IEFTIHZhbCA+IDApOworCistLSBDb25zZWN1dGl2ZSBHUk9VUCBtZXJnZSBmaW5pdGU6IChBezEw fSl7MjB9IC0+IGF7MjAwfQorLS0gVGVzdHMgbWVyZ2VDb25zZWN1dGl2ZUdyb3VwcyB3aXRoIGJv dGggZmluaXRlCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQXsx MH0pezIwfSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIERpZmZlcmVudCBHUk9VUCBwcmV2 ZW50cyBtZXJnZTogKEEgQil7Mn0gKEMgRCl7M30KKy0tIFRlc3RzIG1lcmdlQ29uc2VjdXRpdmVH cm91cHMgZmx1c2ggcHJldmlvdXMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBB VFRFUk4gKChBIEIpezJ9IChDIEQpezN9KQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8 PSAyNSwgQiBBUyB2YWwgPiAyNSBBTkQgdmFsIDw9IDUwLAorICAgICAgICAgICAgICAgICAgICBD IEFTIHZhbCA+IDUwIEFORCB2YWwgPD0gNzUsIEQgQVMgdmFsID4gNzUpOworCistLSBEaWZmZXJl bnQgY2hpbGRyZW4gY291bnQgcHJldmVudHMgbWVyZ2U6IChBIEIpKyAoQSBCIEMpKworLS0gVGVz dHMgcnByUGF0dGVybkNoaWxkcmVuRXF1YWwgbGVuZ3RoIGNoZWNrCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChP UkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSBCKSsgKEEgQiBDKSspCisgICAgICAgICAgICAg REVGSU5FIEEgQVMgdmFsIDw9IDMzLCBCIEFTIHZhbCA+IDMzIEFORCB2YWwgPD0gNjYsIEMgQVMg dmFsID4gNjYpOworCistLSBQUkVGSVggb25seSBtZXJnZTogQSBCIChBIEIpKyAtPiAoYSBiKXsy LH0KKy0tIFRlc3RzIG1lcmdlR3JvdXBQcmVmaXhTdWZmaXg6IGFic29yYiBwcmVjZWRpbmcgZWxl bWVudHMgaW50byBHUk9VUCBtaW4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBB VFRFUk4gKEEgQiAoQSBCKSspIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7 CisKKy0tIFNVRkZJWCBvbmx5IG1lcmdlOiAoQSBCKSsgQSBCIC0+IChhIGIpezIsfQorLS0gVGVz dHMgbWVyZ2VHcm91cFByZWZpeFN1ZmZpeDogYWJzb3JiIGZvbGxvd2luZyBlbGVtZW50cyBpbnRv IEdST1VQIG1pbgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEg QikrIEEgQikgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gTXVs dGlwbGUgU1VGRklYIGFic29ycHRpb24gd2l0aCBza2lwVW50aWw6IChBIEIpKyBBIEIgQSBCIEMK Ky0tIFRlc3RzIG1lcmdlR3JvdXBQcmVmaXhTdWZmaXg6IHNraXAgYWJzb3JiZWQgc3VmZml4IGVs ZW1lbnRzCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00g cnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSBCKSsg QSBCIEEgQiBDKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwg PiA1MCBBTkQgdmFsIDw9IDc1LCBDIEFTIHZhbCA+IDc1KTsKKworLS0gUFJFRklYIG1lcmdlIHdp dGggcmVtYWluaW5nIHByZWZpeDogQSBCIEMgRCAoQyBEKSsKKy0tIFRlc3RzIG1lcmdlR3JvdXBQ cmVmaXhTdWZmaXg6IHRyaW1tZWQgbGlzdCByZWNvbnN0cnVjdGlvbgorRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQSBCIEMgRCAoQyBEKSspCisgICAgICAgICAgICAg REVGSU5FIEEgQVMgdmFsIDw9IDI1LCBCIEFTIHZhbCA+IDI1IEFORCB2YWwgPD0gNTAsCisgICAg ICAgICAgICAgICAgICAgIEMgQVMgdmFsID4gNTAgQU5EIHZhbCA8PSA3NSwgRCBBUyB2YWwgPiA3 NSk7CisKKy0tIFBSRUZJWCBtZXJnZSB3aXRoIHF1YW50aWZpZXJzOiBBIEIqIChBIEIqKSsgLT4g KGEgYiopezIsfQorLS0gVGVzdHMgbWVyZ2VHcm91cFByZWZpeFN1ZmZpeDogcXVhbnRpZmllciBj b21wYXJpc29uIGluIHJwclBhdHRlcm5FcXVhbAorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAg ICAgICAgUEFUVEVSTiAoQSBCKiAoQSBCKikrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZh bCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIFBSRUZJWCBtZXJnZSB3aXRoIG11bHRpcGxl IHF1YW50aWZpZXJzOiBBKyBCKiBDPyAoQSsgQiogQz8pKyAtPiAoYSsgYiogYz8pezIsfQorLS0g VGVzdHMgbWVyZ2VHcm91cFByZWZpeFN1ZmZpeDogY29tcGxleCBxdWFudGlmaWVyIHBhdHRlcm5z CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3Bs YW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBKyBCKiBDPyAoQSsg QiogQz8pKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFsID4g MzAgQU5EIHZhbCA8PSA2MCwgQyBBUyB2YWwgPiA2MCk7CisKKy0tIFNVRkZJWCBtZXJnZSB3aXRo IHF1YW50aWZpZXJzOiAoQSBCKikrIEEgQiogLT4gKGEgYiopezIsfQorLS0gVGVzdHMgbWVyZ2VH cm91cFByZWZpeFN1ZmZpeDogc3VmZml4IHdpdGggcXVhbnRpZmllcnMKK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIEIqKSsgQSBCKikKKyAgICAgICAgICAgICBE RUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBVbndyYXAgR1JPVVB7 MSwxfTogKChBIHwgQiB8IEMpKSAtPiAoYSB8IGIgfCBjKQorLS0gVGVzdHMgdHJ5VW53cmFwR3Jv dXAgcmVtb3ZpbmcgcmVkdW5kYW50IG91dGVyIEdST1VQCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICAgICAgICAgICBQQVRURVJOICgoQSB8IEIgfCBDKSkgREVGSU5FIEEgQVMgdmFsIDw9IDMwLCBC IEFTIHZhbCA8PSA2MCwgQyBBUyB2YWwgPiA2MCk7CisKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQWJzb3JwdGlvbiBG bGFnIERpc3BsYXkgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdHMgYWJzb3JwdGlvbiBtYXJrZXIgZGlz cGxheSBpbiBFWFBMQUlOIG91dHB1dAorLS0gTWFya2VyczogJyA9IGJyYW5jaCBlbGVtZW50LCAi ID0ganVkZ21lbnQgcG9pbnQKKy0tIEZpbGVzOiBleHBsYWluLmMgKGFwcGVuZF9ycHJfcXVhbnRp ZmllciwgZGVwYXJzZV9ycHJfcGF0dGVybikKKworLS0gU2ltcGxlIFZBUjogQSsgLT4gYSsiIChq dWRnbWVudCBwb2ludCkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgdmFsID4gMCk7 CisKKy0tIEdST1VQIHVuYm91bmRlZDogKEEgQikrIC0+IChhJyBiJykrIiAoYnJhbmNoICsganVk Z21lbnQpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00g cnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoKEEgQikrKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIg QVMgdmFsID4gNTApOworCistLSBBTFQgYm90aCBhYnNvcmJhYmxlOiBBKyB8IEIrIC0+IChhKyIg fCBiKyIpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00g cnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoQSsgfCBCKykgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBC IEFTIHZhbCA+IDUwKTsKKworLS0gQUxUIG9uZSBhYnNvcmJhYmxlOiBBKyB8IEIgLT4gKGErIiB8 IGIpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnBy X3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cgUEFUVEVSTiAoQSsgfCBCKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMg dmFsID4gNTApOworCistLSBTZXF1ZW5jZSB3aXRoIGFic29yYmFibGUgc3RhcnQ6IEErIEIgLT4g YSsiIGIKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBy cHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVyBQQVRURVJOIChBKyBCKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMg dmFsID4gNTApOworCistLSBDb21wbGV4IG5lc3RlZDogKChBKyBCKSB8IEMpIEQgfCBBIEIgQyAt IGRlZXBseSBuZXN0ZWQgQUxUCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoKChBKyBCKSB8IEMpIEQgfCBBIEIg QykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFsIDw9IDYwLCBD IEFTIHZhbCA8PSA4MCwgRCBBUyB2YWwgPiA4MCk7CisKKy0tIE5lc3RlZCB1bmJvdW5kZWQ6IChB KyB8IEIpKyAtPiAoYSsiIHwgYikrIChmaXJzdCBpdGVyYXRpb24gYWJzb3JiYWJsZSkKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lO RE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VyBQQVRURVJOICgoQSsgfCBCKSspCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUw LCBCIEFTIHZhbCA+IDUwKTsKKworLS0gQUxUIGluc2lkZSB1bmJvdW5kZWQgR1JPVVA6IChBKyBC IHwgQSBCKSogLT4gKGErIiBiIHwgYSBiKSogKGZpcnN0IGl0ZXJhdGlvbiBhYnNvcmJhYmxlKQor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFu CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XIFBBVFRFUk4gKChBKyBCIHwgQSBCKSopCisgICAgICAgICAgICAgREVGSU5FIEEgQVMg dmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gTm9uLWFic29yYmFibGUgKHVuYm91bmRl ZCBub3QgYXQgc3RhcnQpOiBBIEIrIC0+IGEgYisgKG5vIG1hcmtlcnMpCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVS TiAoQSBCKykgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gTm9u LWFic29yYmFibGUgKG5vIHVuYm91bmRlZCBicmFuY2gpOiAoQSB8IEIpezIsfSAtPiAoYSB8IGIp ezIsfSAobm8gbWFya2VycykKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBP VkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOICgoQSB8IEIpezIsfSkgREVGSU5FIEEg QVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gTm9uLWFic29yYmFibGUgKFNLSVAg VE8gTkVYVCBST1cpOiBBKyAtPiBhKyAobm8gbWFya2VycykKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVS IEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgICAgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cgUEFUVEVSTiAoQSspIERF RklORSBBIEFTIHZhbCA+IDApOworCistLSBOb24tYWJzb3JiYWJsZSAobGltaXRlZCBmcmFtZSk6 IEErIC0+IGErIChubyBtYXJrZXJzKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCAxMCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIHZhbCA+IDAp OworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tIEFic29ycHRpb24gQW5hbHlzaXMgVGVzdHMKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVz dHMgY29udGV4dCBhYnNvcnB0aW9uIG9wdGltaXphdGlvbiAoTyhuXjIpIC0+IE8obikpCistLSBG aWxlczogcnByLmMgKGNvbXB1dGVBYnNvcmJhYmlsaXR5KQorCistLSBTaW1wbGUgQWJzb3JiYWJs ZSBQYXR0ZXJuOiBBKyBCCistLSBQYXR0ZXJuIHN0YXJ0cyB3aXRoIHVuYm91bmRlZCBWQVIKKwor U0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFT IHZhbCA+IDUwCispCitPUkRFUiBCWSBpZDsKKworLS0gQWJzb3JiYWJsZSBHUk9VUCBQYXR0ZXJu OiAoQSBCKSsgQworLS0gUGF0dGVybiBzdGFydHMgd2l0aCB1bmJvdW5kZWQgR1JPVVAKKworU0VM RUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKChBIEIpKyBDKQorICAgIERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBB UyB2YWwgPiAzMCBBTkQgdmFsIDw9IDYwLCBDIEFTIHZhbCA+IDYwCispCitPUkRFUiBCWSBpZDsK KworLS0gTm9uLUFic29yYmFibGU6IFVuYm91bmRlZCBOb3QgYXQgU3RhcnQKKy0tIFBhdHRlcm46 IEEgQisgKHVuYm91bmRlZCBub3QgYXQgc3RhcnQpCisKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIr KQorICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MAorKQorT1JERVIgQlkg aWQ7CisKKy0tIEFMVCB3aXRoIEFic29yYmFibGUgQnJhbmNoZXMKKy0tIFBhdHRlcm46IChBKyB8 IEIrKSBDIC0gYm90aCBicmFuY2hlcyBhYnNvcmJhYmxlCisKK1NFTEVDVCBpZCwgdmFsLCBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgo QSsgfCBCKykgQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFsID4gMzAgQU5E IHZhbCA8PSA2MCwgQyBBUyB2YWwgPiA2MAorKQorT1JERVIgQlkgaWQ7CisKKy0tIEFMVCB3aXRo IE1peGVkIEJyYW5jaGVzCistLSBQYXR0ZXJuOiAoQSsgfCBCIEMpIC0gb25seSBmaXJzdCBicmFu Y2ggYWJzb3JiYWJsZQorCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAor RlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEErIHwgQiBDKSspCisgICAgREVG SU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA+IDMwIEFORCB2YWwgPD0gNjAsIEMgQVMgdmFs ID4gNjAKKykKK09SREVSIEJZIGlkOworCistLSBOb24tQWJzb3JiYWJsZTogQUxUIEluc2lkZSBH Uk9VUAorLS0gUGF0dGVybjogKEEgfCBCKXsyLH0gLSBBTFQgaW5zaWRlIHVuYm91bmRlZCBHUk9V UAorCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxh bgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKXsyLH0pCisgICAgREVGSU5FIEEgQVMgdmFs IDw9IDUwLCBCIEFTIHZhbCA+IDUwCispCitPUkRFUiBCWSBpZDsKKworLS0gTm9uLUFic29yYmFi bGU6IE5lc3RlZCBVbmJvdW5kZWQKKy0tIFBhdHRlcm46ICgoQSBCKSsgQykrIC0gbmVzdGVkIEdS T1VQIHN0cnVjdHVyZQorCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAor RlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKChBIEIpKyBDKSspCisgICAgREVG SU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA+IDMwIEFORCB2YWwgPD0gNjAsIEMgQVMgdmFs ID4gNjAKKykKK09SREVSIEJZIGlkOworCistLSBOb24tQWJzb3JiYWJsZTogVW5ib3VuZGVkIEVs ZW1lbnQgSW5zaWRlIEdST1VQCistLSBQYXR0ZXJuOiAoQSBCKyl7Mix9IC0gdW5ib3VuZGVkIGlu c2lkZSBHUk9VUAorCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJP TSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQispezIsfSkKKyAgICBERUZJTkUg QSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTAKKykKK09SREVSIEJZIGlkOworCistLSBSdW50 aW1lIENvbmRpdGlvbnM6IFNLSVAgVE8gTkVYVCBST1cKKy0tIEFic29ycHRpb24gZGlzYWJsZWQg d2l0aCBTS0lQIFRPIE5FWFQgUk9XCisKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJ TkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTAKKykKK09SREVSIEJZIGlkOworCistLSBS dW50aW1lIENvbmRpdGlvbnM6IExpbWl0ZWQgRnJhbWUKKy0tIEFic29ycHRpb24gZGlzYWJsZWQg d2l0aCBsaW1pdGVkIGZyYW1lIGVuZAorCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3 IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCA1IEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEg QVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwCispCitPUkRFUiBCWSBpZDsKKworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBFZGdlIENhc2UgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdHMgYm91bmRhcnkgY29uZGl0aW9ucyBh bmQgY29tcGxleCBzY2VuYXJpb3MKKworLS0gRW1wdHkgTWF0Y2ggUHJldmVudGlvbgorLS0gUGF0 dGVybiB0aGF0IGNvdWxkIG1hdGNoIGVtcHR5OiBBKgorCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQSopCisgICAgREVGSU5FIEEgQVMgdmFsID4gMTAwMCAgLS0gTmV2 ZXIgbWF0Y2hlcworKQorT1JERVIgQlkgaWQ7CisKKy0tIEFsbCBSb3dzIE1hdGNoCistLSBQYXR0 ZXJuIHdoZXJlIGV2ZXJ5IHJvdyBtYXRjaGVzCisKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBP VkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPj0gMCAgLS0gQWx3YXlzIHRy dWUKKykKK09SREVSIEJZIGlkOworCistLSBMYXJnZSBRdWFudGlmaWVycworLS0gUGF0dGVybjog QXsxMDB9IChsYXJnZSBleGFjdCBxdWFudGlmaWVyKQorCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQXsxMDB9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09S REVSIEJZIGlkOworCistLSBQYXR0ZXJuOiBBezEwLDIwfSAobGFyZ2UgcmFuZ2UgcXVhbnRpZmll cikKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFu CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezEwLDIwfSkKKyAg ICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKworLS0gQ29tcGxleCBNdWx0 aS1MZXZlbCBOZXN0aW5nCistLSBQYXR0ZXJuOiAoKChBIEIpIHwgQykrIEQpKworCitTRUxFQ1Qg aWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKCgoQSBCKSB8IEMpKyBEKSspCisgICAg REVGSU5FIEEgQVMgdmFsIDw9IDIwLCBCIEFTIHZhbCA+IDIwIEFORCB2YWwgPD0gNDAsCisgICAg ICAgICAgIEMgQVMgdmFsID4gNDAgQU5EIHZhbCA8PSA2MCwgRCBBUyB2YWwgPiA2MAorKQorT1JE RVIgQlkgaWQ7CisKKy0tIExvbmcgQWx0ZXJuYXRpb24gQ2hhaW4KKy0tIFBhdHRlcm46IEEgfCBC IHwgQyB8IEQgfCBFICg1LXdheSBBTFQpCisKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBIHwgQiB8IEMgfCBEIHwgRSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPSAxMCwg QiBBUyB2YWwgPSAzMCwgQyBBUyB2YWwgPSA1MCwKKyAgICAgICAgICAgRCBBUyB2YWwgPSA3MCwg RSBBUyB2YWwgPSA5MAorKQorT1JERVIgQlkgaWQ7CisKKy0tIExvbmcgU2VxdWVuY2UKKy0tIFBh dHRlcm46IEEgQiBDIEQgRSBGIEcgSCAoOC1lbGVtZW50IFNFUSkKKworU0VMRUNUIGlkLCB2YWws IENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSBGIEcgSCkKKyAgICBERUZJTkUgQSBB UyB2YWwgPj0gMTAsIEIgQVMgdmFsID49IDIwLCBDIEFTIHZhbCA+PSAzMCwKKyAgICAgICAgICAg RCBBUyB2YWwgPj0gNDAsIEUgQVMgdmFsID49IDUwLCBGIEFTIHZhbCA+PSA2MCwKKyAgICAgICAg ICAgRyBBUyB2YWwgPj0gNzAsIEggQVMgdmFsID49IDgwCispCitPUkRFUiBCWSBpZDsKKworLS0g SW50ZXJsZWF2ZWQgUXVhbnRpZmllcnMKKy0tIFBhdHRlcm46IEF7Mn0gQisgQ3szLDV9IEQqIEV7 MSx9CisKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9w bGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezJ9IEIrIEN7 Myw1fSBEKiBFezEsfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDAsIEMg QVMgdmFsID4gMCwKKyAgICAgICAgICAgRCBBUyB2YWwgPiAwLCBFIEFTIHZhbCA+IDAKKykKK09S REVSIEJZIGlkOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIE9wdGltaXphdGlvbiBGYWxsYmFjayBUZXN0cworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBUZXN0cyBmb3Igb3B0aW1pemF0aW9uIGVkZ2UgY2FzZXMgYW5kIGZhbGxiYWNrIGJl aGF2aW9yCisKK0NSRUFURSBUQUJMRSBycHJfZmFsbGJhY2sgKGlkIElOVCwgdmFsIElOVCk7CitJ TlNFUlQgSU5UTyBycHJfZmFsbGJhY2sgVkFMVUVTICgxLCAxMCksICgyLCAyMCk7CisKKy0tIFRl c3Q6IG1pbiBxdWFudGlmaWVyIG92ZXJmbG93IGNhdXNlcyBvcHRpbWl6YXRpb24gZmFsbGJhY2sg KG1pbiA9PSBtYXggY2FzZSkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBP VkVSIHcgRlJPTSBycHJfZmFsbGJhY2sKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKChBezIwMDAwMDAwMDB9KXsyfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisp OworLS0gRXhwZWN0ZWQ6IEZhbGxiYWNrIC0gcGF0dGVybiBub3QgbWVyZ2VkIGR1ZSB0byBtaW4g b3ZlcmZsb3cgKDQwMDAwMDAwMDAgPiBJTlQzMl9NQVgpCisKKy0tIFRlc3Q6IG1heC1vbmx5IHF1 YW50aWZpZXIgb3ZlcmZsb3cgY2F1c2VzIG9wdGltaXphdGlvbiBmYWxsYmFjaworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9mYWxsYmFjaworV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEF7MSwyMDAwMDAwMDAwfSl7 Mn0pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKy0tIEV4cGVjdGVkOiBGYWxsYmFjayAt IG1pbiBPSyAoMioxPTIpLCBidXQgbWF4IG92ZXJmbG93ICgyKjIwMDAwMDAwMDAgPiBJTlQzMl9N QVgpCisKKy0tIFRlc3Q6IG1heCBxdWFudGlmaWVyIGV4Y2VlZHMgdmFsaWQgcmFuZ2UgKDIxNDc0 ODM2NDcgPSBJTlRfTUFYLCBsaW1pdCBpcyAyMTQ3NDgzNjQ2KQorRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9mYWxsYmFjaworV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEF7MjAwMDAwMDAwMCwyMTQ3NDgzNjQ3fSl7 Mn0pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKy0tIEV4cGVjdGVkOiBFUlJPUiBhdCBw YXJzZSB0aW1lIGJlZm9yZSBvcHRpbWl6YXRpb24KKworLS0gVGVzdDogbmVzdGVkIHVuYm91bmRl ZCB3aXRoIGxhcmdlIG1pbiBjYXVzZXMgb3ZlcmZsb3cgZmFsbGJhY2sKK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfZmFsbGJhY2sKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBezIwMDAwMDAwMDAsfSl7MjAwMDAw MDAwMCx9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CistLSBFeHBlY3RlZDogRmFsbGJh Y2sgLSBtaW4gb3ZlcmZsb3cgKDIwMDAwMDAwMDAgKiAyMDAwMDAwMDAwID4gSU5UMzJfTUFYKQor CistLSBUZXN0OiBwcmVmaXggbWlzbWF0Y2ggY2F1c2VzIG9wdGltaXphdGlvbiBmYWxsYmFjawor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9mYWxs YmFjaworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCIChDIEQp KykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDUsIEMgQVMgdmFsID4gMTAs IEQgQVMgdmFsID4gMTUKKyk7CistLSBFeHBlY3RlZDogRmFsbGJhY2sgLSBwcmVmaXggZWxlbWVu dHMgZG9uJ3QgbWF0Y2ggR1JPVVAgY29udGVudAorCitEUk9QIFRBQkxFIHJwcl9mYWxsYmFjazsK KworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBQbGFubmVyIEludGVncmF0aW9uIFRlc3RzCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3Rz IGZ1bGwgcGxhbm5pbmcgcGlwZWxpbmUgYW5kIFdpbmRvd0FnZyBwbGFuIG5vZGUgY3JlYXRpb24K Ky0tIEZpbGVzOiBwbGFubmVyLmMsIGNyZWF0ZXBsYW4uYworCitDUkVBVEUgVEFCTEUgcnByX3Bs YW5uZXIgKGlkIElOVCwgY2F0ZWdvcnkgVkFSQ0hBUigxMCksIHZhbCBJTlQpOworSU5TRVJUIElO VE8gcnByX3BsYW5uZXIgVkFMVUVTCisgICAgKDEsICdBJywgMTApLCAoMiwgJ0EnLCAyMCksICgz LCAnQScsIDMwKSwKKyAgICAoNCwgJ0InLCA0MCksICg1LCAnQicsIDUwKSwgKDYsICdCJywgNjAp LAorICAgICg3LCAnQycsIDcwKSwgKDgsICdDJywgODApLCAoOSwgJ0MnLCA5MCk7CisKKy0tIE11 bHRpcGxlIFdpbmRvdyBGdW5jdGlvbnMgaW4gU2FtZSBRdWVyeQorU0VMRUNUIGlkLCBjYXRlZ29y eSwgdmFsLAorICAgICAgIENPVU5UKCopIE9WRVIgdzEgYXMgY250MSwKKyAgICAgICBDT1VOVCgq KSBPVkVSIHcyIGFzIGNudDIKK0ZST00gcnByX3BsYW5uZXIKK1dJTkRPVyB3MSBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispLAor dzIgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjYXRlZ29yeQorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQispCisgICAgREVGSU5FIEIgQVMgdmFsID49IDQwCispCitPUkRFUiBCWSBpZDsKKwor LS0gV2luZG93IEZ1bmN0aW9uIHdpdGggUEFSVElUSU9OIEJZCisKK1NFTEVDVCBpZCwgY2F0ZWdv cnksIHZhbCwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFubmVy CitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNhdGVnb3J5CisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBj YXRlZ29yeSwgaWQ7CisKKy0tIFdpbmRvdyBGdW5jdGlvbiB3aXRoIENvbXBsZXggT1JERVIgQlkK KworU0VMRUNUIGlkLCBjYXRlZ29yeSwgdmFsLAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBj bnQKK0ZST00gcnByX3BsYW5uZXIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBjYXRlZ29y eSBERVNDLCB2YWwgQVNDCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAor KQorT1JERVIgQlkgY2F0ZWdvcnkgREVTQywgdmFsIEFTQzsKKworLS0gTmFtZWQgV2luZG93IFJl ZmVyZW5jZQorCitTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAgQ09VTlQoKikgT1ZF UiB3IGFzIGNudAorRlJPTSBycHJfcGxhbm5lcgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkg aWQ7CisKKy0tIElubGluZSBXaW5kb3cgRGVmaW5pdGlvbgorCitTRUxFQ1QgaWQsIGNhdGVnb3J5 LCB2YWwsCisgICAgICAgQ09VTlQoKikgT1ZFUiAoCisgICAgICAgICAgIE9SREVSIEJZIGlkCisg ICAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsID4g MAorICAgICAgICkgYXMgY250CitGUk9NIHJwcl9wbGFubmVyCitPUkRFUiBCWSBpZDsKKworLS0g V2luZG93IHdpdGggQWdncmVnYXRlIEZ1bmN0aW9ucworU0VMRUNUIGNhdGVnb3J5LAorICAgICAg IENPVU5UKCopIE9WRVIgdyBhcyB3aW5kb3dfY250LAorICAgICAgIENPVU5UKCopIGFzIGFnZ19j bnQKK0ZST00gcnByX3BsYW5uZXIKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY2F0 ZWdvcnkKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZh bCA+IDAKKykKK0dST1VQIEJZIGNhdGVnb3J5CitPUkRFUiBCWSBjYXRlZ29yeTsKKy0tIEV4cGVj dGVkOiBFUlJPUiAoR1JPVVAgQlkgd2l0aCB3aW5kb3cgUlBSIG5vdCBzdXBwb3J0ZWQpCisKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gU3VicXVlcnkgYW5kIENURSBUZXN0cworLS0gRmlsZXM6IHBsYW5uZXIuYywgcHJl cGpvaW50cmVlLmMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdHMgUlBSIHdpdGggc3VicXVlcmllcyBhbmQgQ1RF cworCistLSBSUFIgaW4gU3VicXVlcnkgKEZST00gY2xhdXNlKQorCitTRUxFQ1QgKiBGUk9NICgK KyAgICBTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAgICAgIENPVU5UKCopIE9WRVIg dyBhcyBjbnQKKyAgICBGUk9NIHJwcl9wbGFubmVyCisgICAgV0lORE9XIHcgQVMgKAorICAgICAg ICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFT IHZhbCA+IDAKKyAgICApCispIHN1YgorV0hFUkUgY250ID4gNQorT1JERVIgQlkgaWQ7CisKKy0t IFJQUiB3aXRoIFN1YnF1ZXJ5IGluIFdIRVJFCisKK1NFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwK KyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFubmVyCitXSEVSRSB2 YWwgPiAoU0VMRUNUIEFWRyh2YWwpIEZST00gcnByX3BsYW5uZXIpCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiA1MAor KQorT1JERVIgQlkgaWQ7CisKKy0tIENURSB3aXRoIFJQUgorCitXSVRIIHJwcl9jdGUgQVMgKAor ICAgIFNFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICAgICAgQ09VTlQoKikgT1ZFUiB3 IGFzIGNudAorICAgIEZST00gcnByX3BsYW5uZXIKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAg IE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMg dmFsID4gMAorICAgICkKKykKK1NFTEVDVCAqIEZST00gcnByX2N0ZSBXSEVSRSBjbnQgPiA1IE9S REVSIEJZIGlkOworCistLSBNdWx0aXBsZSBDVEUgUmVmZXJlbmNlcworCitXSVRIIHJwcl9jdGUg QVMgKAorICAgIFNFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICAgICAgQ09VTlQoKikg T1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX3BsYW5uZXIKKyAgICBXSU5ET1cgdyBBUyAoCisg ICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5F IEEgQVMgdmFsID4gMAorICAgICkKKykKK1NFTEVDVCBjMS5pZCwgYzEuY250LCBjMi5jbnQgYXMg Y250MgorRlJPTSBycHJfY3RlIGMxCitKT0lOIHJwcl9jdGUgYzIgT04gYzEuaWQgPSBjMi5pZAor T1JERVIgQlkgYzEuaWQ7CisKKy0tIE5lc3RlZCBDVEVzCisKK1dJVEggY3RlMSBBUyAoCisgICAg U0VMRUNUIGlkLCBjYXRlZ29yeSwgdmFsIEZST00gcnByX3BsYW5uZXIgV0hFUkUgdmFsID4gMzAK KyksCitjdGUyIEFTICgKKyAgICBTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAgICAg IENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyAgICBGUk9NIGN0ZTEKKyAgICBXSU5ET1cgdyBBUyAo CisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVG SU5FIEEgQVMgdmFsID4gMAorICAgICkKKykKK1NFTEVDVCAqIEZST00gY3RlMiBPUkRFUiBCWSBp ZDsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBKT0lOIFRlc3RzCistLSBGaWxlczogcHJlcGpvaW50cmVlLmMsIHNl dHJlZnMuYworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBUZXN0cyBSUFIgd2l0aCBKT0lOcyBhbmQgbXVsdGlwbGUgdGFi bGUgcmVmZXJlbmNlcworCitDUkVBVEUgVEFCTEUgcnByX2pvaW4xIChpZCBJTlQsIHZhbDEgSU5U KTsKK0NSRUFURSBUQUJMRSBycHJfam9pbjIgKGlkIElOVCwgdmFsMiBJTlQpOworCitJTlNFUlQg SU5UTyBycHJfam9pbjEgVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCksICg0LCA0MCks ICg1LCA1MCk7CitJTlNFUlQgSU5UTyBycHJfam9pbjIgVkFMVUVTICgxLCAxMDApLCAoMiwgMjAw KSwgKDMsIDMwMCksICg0LCA0MDApLCAoNSwgNTAwKTsKKworLS0gUlBSIEFmdGVyIElOTkVSIEpP SU4KKworU0VMRUNUIHQxLmlkLCB0MS52YWwxLCB0Mi52YWwyLAorICAgICAgIENPVU5UKCopIE9W RVIgdyBhcyBjbnQKK0ZST00gcnByX2pvaW4xIHQxCitJTk5FUiBKT0lOIHJwcl9qb2luMiB0MiBP TiB0MS5pZCA9IHQyLmlkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgdDEuaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwxICsgdmFsMiA+IDEwMAorKQorT1JERVIgQlkg dDEuaWQ7CisKKy0tIFJQUiBBZnRlciBMRUZUIEpPSU4KKworU0VMRUNUIHQxLmlkLCB0MS52YWwx LCB0Mi52YWwyLAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2pvaW4x IHQxCitMRUZUIEpPSU4gcnByX2pvaW4yIHQyIE9OIHQxLmlkID0gdDIuaWQKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSB0MS5pZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZh bDEgPiAwCispCitPUkRFUiBCWSB0MS5pZDsKKworLS0gUlBSIHdpdGggTXVsdGlwbGUgVGFibGVz IGluIERFRklORQorCitTRUxFQ1QgdDEuaWQsIHQxLnZhbDEsIHQyLnZhbDIsCisgICAgICAgQ09V TlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfam9pbjEgdDEKK0lOTkVSIEpPSU4gcnByX2pv aW4yIHQyIE9OIHQxLmlkID0gdDIuaWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSB0MS5p ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdDEudmFsMSA+IDIwLAorICAgICAg ICAgICBCIEFTIHQyLnZhbDIgPiAyMDAKKykKK09SREVSIEJZIHQxLmlkOworCistLSBSUFIgQWZ0 ZXIgQ3Jvc3MgSm9pbgorCitTRUxFQ1QgdDEuaWQgYXMgaWQxLCB0Mi5pZCBhcyBpZDIsIHQxLnZh bDEsIHQyLnZhbDIsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfam9p bjEgdDEKK0NST1NTIEpPSU4gcnByX2pvaW4yIHQyCitXSEVSRSB0MS5pZCA8PSAyIEFORCB0Mi5p ZCA8PSAyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgdDEuaWQsIHQyLmlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsMSArIHZhbDIgPiAwCispCitPUkRFUiBCWSB0MS5p ZCwgdDIuaWQ7CisKKy0tIFNlbGYtSm9pbiB3aXRoIFJQUgorCitTRUxFQ1QgYS5pZCwgYS52YWwx LCBiLnZhbDEgYXMgdmFsMV9uZXh0LAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZS T00gcnByX2pvaW4xIGEKK0lOTkVSIEpPSU4gcnByX2pvaW4xIGIgT04gYS5pZCArIDEgPSBiLmlk CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgYS5pZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKFgrKQorICAgIERF RklORSBYIEFTIGEudmFsMSA8IGIudmFsMQorKQorT1JERVIgQlkgYS5pZDsKKworRFJPUCBUQUJM RSBycHJfam9pbjEsIHJwcl9qb2luMjsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBDb21wbGV4IEV4cHJlc3Npb24g VGVzdHMKKy0tIEZpbGVzOiBjcmVhdGVwbGFuLmMsIHNldHJlZnMuYworLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0 cyBjb21wbGV4IHRhcmdldCBsaXN0IGV4cHJlc3Npb25zCisKK0NSRUFURSBUQUJMRSBycHJfdGFy Z2V0IChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3RhcmdldCBWQUxVRVMgKDEs IDEwKSwgKDIsIDIwKSwgKDMsIDMwKSwgKDQsIDQwKSwgKDUsIDUwKTsKKworLS0gRXhwcmVzc2lv bnMgaW4gVGFyZ2V0IExpc3QKKworU0VMRUNUIGlkLAorICAgICAgIHZhbCAqIDIgYXMgZG91Ymxl ZCwKKyAgICAgICB2YWwgKyAxMCBhcyBhZGRlZCwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMg Y250CitGUk9NIHJwcl90YXJnZXQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworCist LSBDQVNFIEV4cHJlc3Npb24gaW4gVGFyZ2V0IExpc3QKKworU0VMRUNUIGlkLCB2YWwsCisgICAg ICAgQ0FTRQorICAgICAgICAgICBXSEVOIHZhbCA8IDMwIFRIRU4gJ2xvdycKKyAgICAgICAgICAg V0hFTiB2YWwgPCA1MCBUSEVOICdtZWRpdW0nCisgICAgICAgICAgIEVMU0UgJ2hpZ2gnCisgICAg ICAgRU5EIGFzIGNhdGVnb3J5LAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00g cnByX3RhcmdldAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsp CisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisKKy0tIFN1YnF1ZXJ5 IGluIFRhcmdldCBMaXN0CisKK1NFTEVDVCBpZCwgdmFsLAorICAgICAgIChTRUxFQ1QgTUFYKHZh bCkgRlJPTSBycHJfdGFyZ2V0KSBhcyBtYXhfdmFsLAorICAgICAgIENPVU5UKCopIE9WRVIgdyBh cyBjbnQKK0ZST00gcnByX3RhcmdldAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisK Ky0tIEZ1bmN0aW9uIENhbGxzIGluIFRhcmdldCBMaXN0CisKK1NFTEVDVCBpZCwgdmFsLAorICAg ICAgIENPQUxFU0NFKHZhbCwgMCkgYXMgY29hbGVzY2VkLAorICAgICAgIEFCUyh2YWwgLSAzMCkg YXMgZGlzdGFuY2UsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfdGFy Z2V0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBE RUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKworLS0gQ29sdW1uIEFsaWFzZXMg YW5kIFJlZmVyZW5jZXMKKworU0VMRUNUIGlkIGFzIHJvd19pZCwKKyAgICAgICB2YWwgYXMgdmFs dWUsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfdGFyZ2V0CitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBB UyB2YWwgPiAwCispCitPUkRFUiBCWSByb3dfaWQ7CisKK0RST1AgVEFCTEUgcnByX3RhcmdldDsK KworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBTZXQgT3BlcmF0aW9ucyBUZXN0cworLS0gRmlsZXM6IHBsYW5uZXIuYwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBUZXN0cyBSUFIgd2l0aCBVTklPTiwgSU5URVJTRUNULCBFWENFUFQKKworQ1JF QVRFIFRBQkxFIHJwcl9zZXQxIChpZCBJTlQsIHZhbCBJTlQpOworQ1JFQVRFIFRBQkxFIHJwcl9z ZXQyIChpZCBJTlQsIHZhbCBJTlQpOworCitJTlNFUlQgSU5UTyBycHJfc2V0MSBWQUxVRVMgKDEs IDEwKSwgKDIsIDIwKSwgKDMsIDMwKTsKK0lOU0VSVCBJTlRPIHJwcl9zZXQyIFZBTFVFUyAoMiwg MjApLCAoMywgMzApLCAoNCwgNDApOworCistLSBVTklPTiB3aXRoIFJQUgorCisoU0VMRUNUIGlk LCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyBGUk9NIHJwcl9zZXQxCisgV0lORE9XIHcg QVMgKAorICAgICBPUkRFUiBCWSBpZAorICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgUEFUVEVSTiAoQSspCisgICAgIERFRklORSBBIEFT IHZhbCA+IDAKKyApKQorVU5JT04KKyhTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFz IGNudAorIEZST00gcnByX3NldDIKKyBXSU5ET1cgdyBBUyAoCisgICAgIE9SREVSIEJZIGlkCisg ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICBQQVRURVJOIChBKykKKyAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICkpCitPUkRFUiBCWSBp ZDsKKworLS0gVU5JT04gQUxMIHdpdGggUlBSCisKKyhTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikg T1ZFUiB3IGFzIGNudAorIEZST00gcnByX3NldDEKKyBXSU5ET1cgdyBBUyAoCisgICAgIE9SREVS IEJZIGlkCisgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgICBQQVRURVJOIChBKykKKyAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICkpCitV TklPTiBBTEwKKyhTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorIEZST00g cnByX3NldDIKKyBXSU5ET1cgdyBBUyAoCisgICAgIE9SREVSIEJZIGlkCisgICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICBQQVRURVJOIChB KykKKyAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICkpCitPUkRFUiBCWSBpZCwgdmFsOworCist LSBJTlRFUlNFQ1Qgd2l0aCBSUFIKKworKFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CisgRlJPTSBycHJfc2V0MQorIFdJTkRPVyB3IEFTICgKKyAgICAgT1JERVIgQlkgaWQK KyAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgIFBBVFRFUk4gKEErKQorICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgKSkKK0lOVEVSU0VD VAorKFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgRlJPTSBycHJfc2V0 MgorIFdJTkRPVyB3IEFTICgKKyAgICAgT1JERVIgQlkgaWQKKyAgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgIFBBVFRFUk4gKEErKQorICAg ICBERUZJTkUgQSBBUyB2YWwgPiAwCisgKSkKK09SREVSIEJZIGlkOworCistLSBFWENFUFQgd2l0 aCBSUFIKKworKFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgRlJPTSBy cHJfc2V0MQorIFdJTkRPVyB3IEFTICgKKyAgICAgT1JERVIgQlkgaWQKKyAgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgIFBBVFRFUk4gKEEr KQorICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgKSkKK0VYQ0VQVAorKFNFTEVDVCBpZCwgdmFs LCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgRlJPTSBycHJfc2V0MgorIFdJTkRPVyB3IEFTICgK KyAgICAgT1JERVIgQlkgaWQKKyAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgIFBBVFRFUk4gKEErKQorICAgICBERUZJTkUgQSBBUyB2YWwg PiAwCisgKSkKK09SREVSIEJZIGlkOworCitEUk9QIFRBQkxFIHJwcl9zZXQxLCBycHJfc2V0MjsK KworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBTb3J0aW5nIGFuZCBHcm91cGluZyBUZXN0cworLS0gRmlsZXM6IHBsYW5u ZXIuYywgY3JlYXRlcGxhbi5jCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3RzIFJQUiBpbnRlcmFjdGlvbiB3aXRo IHNvcnRpbmcgYW5kIGdyb3VwaW5nCisKK0NSRUFURSBUQUJMRSBycHJfc29ydCAoaWQgSU5ULCBj YXRlZ29yeSBWQVJDSEFSKDEwKSwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfc29ydCBWQUxV RVMKKyAgICAoMSwgJ0EnLCAzMCksICgyLCAnQicsIDIwKSwgKDMsICdBJywgMTApLAorICAgICg0 LCAnQicsIDQwKSwgKDUsICdBJywgNTApLCAoNiwgJ0InLCA2MCk7CisKKy0tIFJQUiB3aXRoIEdS T1VQIEJZCisKK1NFTEVDVCBjYXRlZ29yeSwKKyAgICAgICBDT1VOVCgqKSBhcyBncm91cF9jbnQs CisgICAgICAgTUFYKHZhbCkgYXMgbWF4X3ZhbCwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMg d2luZG93X2NudAorRlJPTSBycHJfc29ydAorR1JPVVAgQlkgY2F0ZWdvcnkKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBjYXRlZ29yeQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFT IENPVU5UKCopID4gMAorKQorT1JERVIgQlkgY2F0ZWdvcnk7CisKKy0tIFJQUiB3aXRoIEhBVklO RworCitTRUxFQ1QgY2F0ZWdvcnksCisgICAgICAgQ09VTlQoKikgYXMgZ3JvdXBfY250LAorICAg ICAgIENPVU5UKCopIE9WRVIgdyBhcyB3aW5kb3dfY250CitGUk9NIHJwcl9zb3J0CitHUk9VUCBC WSBjYXRlZ29yeQorSEFWSU5HIENPVU5UKCopID4gMgorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGNhdGVnb3J5CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgQ09VTlQoKikgPiAw CispCitPUkRFUiBCWSBjYXRlZ29yeTsKKworLS0gUlBSIHdpdGggRElTVElOQ1QKKworU0VMRUNU IERJU1RJTkNUIGNhdGVnb3J5LAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00g cnByX3NvcnQKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY2F0ZWdvcnkKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09S REVSIEJZIGNhdGVnb3J5OworCistLSBSUFIgd2l0aCBPUkRFUiBCWSAoZGlmZmVyZW50IGZyb20g d2luZG93IE9SREVSIEJZKQorCitTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAgQ09V TlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc29ydAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JE RVIgQlkgdmFsIERFU0M7CisKKy0tIFJQUiB3aXRoIExJTUlUIGFuZCBPRkZTRVQKKworU0VMRUNU IGlkLCBjYXRlZ29yeSwgdmFsLAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00g cnByX3NvcnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQor ICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkCitMSU1JVCAzIE9GRlNFVCAx OworCitEUk9QIFRBQkxFIHJwcl9zb3J0OworCitEUk9QIFRBQkxFIHJwcl9wbGFubmVyOworCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIFN0cmVzcyBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBFZGdlIGNhc2VzIGFuZCBzdHJlc3Mg c2NlbmFyaW9zCisKK0NSRUFURSBUQUJMRSBycHJfc3RyZXNzIChpZCBJTlQsIHZhbCBJTlQpOwor SU5TRVJUIElOVE8gcnByX3N0cmVzcyBTRUxFQ1QgaSwgaSAqIDEwIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDIwKSBpOworCistLSBWZXJ5IExvbmcgUXVlcnkgd2l0aCBNYW55IFdpbmRvd3MKK1NF TEVDVCBpZCwgdmFsLAorICAgICAgIENPVU5UKCopIE9WRVIgdzEgYXMgY250MSwKKyAgICAgICBD T1VOVCgqKSBPVkVSIHcyIGFzIGNudDIsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3MyBhcyBjbnQz CitGUk9NIHJwcl9zdHJlc3MKK1dJTkRPVyB3MSBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispLAordzIgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQispCisgICAgREVGSU5FIEIgQVMgdmFsID4gNTAKKyksCit3MyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChDKykKKyAgICBERUZJTkUgQyBBUyB2YWwg PiAxMDAKKykKK09SREVSIEJZIGlkOworCistLSBEZWVwbHkgTmVzdGVkIFN1YnF1ZXJpZXMgd2l0 aCBSUFIKKworU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUICogRlJPTSAoCisgICAgICAgIFNF TEVDVCAqIEZST00gKAorICAgICAgICAgICAgU0VMRUNUIGlkLCB2YWwsCisgICAgICAgICAgICAg ICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgICAgICAgICAgRlJPTSBycHJfc3RyZXNz CisgICAgICAgICAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgICAgICAgICAgT1JERVIgQlkgaWQK KyAgICAgICAgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICAgICAgICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgICAgICAgICBE RUZJTkUgQSBBUyB2YWwgPiAwCisgICAgICAgICAgICApCisgICAgICAgICkgc3ViMQorICAgICkg c3ViMgorKSBzdWIzCitXSEVSRSBjbnQgPiAxMAorT1JERVIgQlkgaWQ7CisKKy0tIENvbXBsZXgg RXhwcmVzc2lvbiBpbiBERUZJTkUgQ2xhdXNlCisKK1NFTEVDVCBpZCwgdmFsLAorICAgICAgIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3N0cmVzcworV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyAodmFsICUgMyA9 IDAgT1IgdmFsICUgNSA9IDApLAorICAgICAgICAgICBCIEFTICh2YWwgKiAyID4gMTAwIEFORCB2 YWwgLyAyIDwgMTAwKQorKQorT1JERVIgQlkgaWQ7CisKKy0tIFdpbmRvdyB3aXRoIE5vIE1hdGNo aW5nIFJvd3MKKworU0VMRUNUIGlkLCB2YWwsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAorRlJPTSBycHJfc3RyZXNzCitXSEVSRSB2YWwgPiAxMDAwICAtLSBObyByb3dzIG1hdGNoCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKworLS0gV2luZG93IG9uIFNpbmdsZSBSb3cK KworU0VMRUNUIGlkLCB2YWwsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBy cHJfc3RyZXNzCitXSEVSRSBpZCA9IDEwCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsK KworRFJPUCBUQUJMRSBycHJfc3RyZXNzOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEVycm9yIExpbWl0IFRlc3Rz CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIFRlc3RzIGZvciBlcnJvciBjb25kaXRpb25zIGluIHJwci5jCisKK0NSRUFU RSBUQUJMRSBycHJfZXJyb3JzIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX2Vy cm9ycyBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKKworLS0gVGVzdDogUEFUVEVSTiB2YXJpYWJs ZSB3aXRob3V0IERFRklORSAoQSksIERFRklORSB2YXJpYWJsZSBub3QgaW4gUEFUVEVSTiAoQikK K1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfZXJyb3JzCitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORQorICAgICAg QiBBUyBUUlVFCispOworLS0gRXhwZWN0ZWQ6IFN1Y2Nlc3MgLSBBIGlzIGltcGxpY2l0bHkgVFJV RSwgQiBpcyBmaWx0ZXJlZCBvdXQKKworLS0gVGVzdDogMyB2YXJpYWJsZXMgaW4gUEFUVEVSTiwg MjUzIGluIERFRklORSAoREVGSU5FIGZpbHRlcmluZyB0ZXN0KQorU0VMRUNUIENPVU5UKCopIE9W RVIgdyBGUk9NIHJwcl9lcnJvcnMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKFYxIFYyIFYzKQorICAgIERFRklORQorICAgIFYxIEFTIHZhbCA+IDAsIFYyIEFTIHZh bCA+IDAsIFYzIEFTIHZhbCA+IDAsIFY0IEFTIHZhbCA+IDAsIFY1IEFTIHZhbCA+IDAsIFY2IEFT IHZhbCA+IDAsIFY3IEFTIHZhbCA+IDAsIFY4IEFTIHZhbCA+IDAsIFY5IEFTIHZhbCA+IDAsIFYx MCBBUyB2YWwgPiAwLAorICAgIFYxMSBBUyB2YWwgPiAwLCBWMTIgQVMgdmFsID4gMCwgVjEzIEFT IHZhbCA+IDAsIFYxNCBBUyB2YWwgPiAwLCBWMTUgQVMgdmFsID4gMCwgVjE2IEFTIHZhbCA+IDAs IFYxNyBBUyB2YWwgPiAwLCBWMTggQVMgdmFsID4gMCwgVjE5IEFTIHZhbCA+IDAsIFYyMCBBUyB2 YWwgPiAwLAorICAgIFYyMSBBUyB2YWwgPiAwLCBWMjIgQVMgdmFsID4gMCwgVjIzIEFTIHZhbCA+ IDAsIFYyNCBBUyB2YWwgPiAwLCBWMjUgQVMgdmFsID4gMCwgVjI2IEFTIHZhbCA+IDAsIFYyNyBB UyB2YWwgPiAwLCBWMjggQVMgdmFsID4gMCwgVjI5IEFTIHZhbCA+IDAsIFYzMCBBUyB2YWwgPiAw LAorICAgIFYzMSBBUyB2YWwgPiAwLCBWMzIgQVMgdmFsID4gMCwgVjMzIEFTIHZhbCA+IDAsIFYz NCBBUyB2YWwgPiAwLCBWMzUgQVMgdmFsID4gMCwgVjM2IEFTIHZhbCA+IDAsIFYzNyBBUyB2YWwg PiAwLCBWMzggQVMgdmFsID4gMCwgVjM5IEFTIHZhbCA+IDAsIFY0MCBBUyB2YWwgPiAwLAorICAg IFY0MSBBUyB2YWwgPiAwLCBWNDIgQVMgdmFsID4gMCwgVjQzIEFTIHZhbCA+IDAsIFY0NCBBUyB2 YWwgPiAwLCBWNDUgQVMgdmFsID4gMCwgVjQ2IEFTIHZhbCA+IDAsIFY0NyBBUyB2YWwgPiAwLCBW NDggQVMgdmFsID4gMCwgVjQ5IEFTIHZhbCA+IDAsIFY1MCBBUyB2YWwgPiAwLAorICAgIFY1MSBB UyB2YWwgPiAwLCBWNTIgQVMgdmFsID4gMCwgVjUzIEFTIHZhbCA+IDAsIFY1NCBBUyB2YWwgPiAw LCBWNTUgQVMgdmFsID4gMCwgVjU2IEFTIHZhbCA+IDAsIFY1NyBBUyB2YWwgPiAwLCBWNTggQVMg dmFsID4gMCwgVjU5IEFTIHZhbCA+IDAsIFY2MCBBUyB2YWwgPiAwLAorICAgIFY2MSBBUyB2YWwg PiAwLCBWNjIgQVMgdmFsID4gMCwgVjYzIEFTIHZhbCA+IDAsIFY2NCBBUyB2YWwgPiAwLCBWNjUg QVMgdmFsID4gMCwgVjY2IEFTIHZhbCA+IDAsIFY2NyBBUyB2YWwgPiAwLCBWNjggQVMgdmFsID4g MCwgVjY5IEFTIHZhbCA+IDAsIFY3MCBBUyB2YWwgPiAwLAorICAgIFY3MSBBUyB2YWwgPiAwLCBW NzIgQVMgdmFsID4gMCwgVjczIEFTIHZhbCA+IDAsIFY3NCBBUyB2YWwgPiAwLCBWNzUgQVMgdmFs ID4gMCwgVjc2IEFTIHZhbCA+IDAsIFY3NyBBUyB2YWwgPiAwLCBWNzggQVMgdmFsID4gMCwgVjc5 IEFTIHZhbCA+IDAsIFY4MCBBUyB2YWwgPiAwLAorICAgIFY4MSBBUyB2YWwgPiAwLCBWODIgQVMg dmFsID4gMCwgVjgzIEFTIHZhbCA+IDAsIFY4NCBBUyB2YWwgPiAwLCBWODUgQVMgdmFsID4gMCwg Vjg2IEFTIHZhbCA+IDAsIFY4NyBBUyB2YWwgPiAwLCBWODggQVMgdmFsID4gMCwgVjg5IEFTIHZh bCA+IDAsIFY5MCBBUyB2YWwgPiAwLAorICAgIFY5MSBBUyB2YWwgPiAwLCBWOTIgQVMgdmFsID4g MCwgVjkzIEFTIHZhbCA+IDAsIFY5NCBBUyB2YWwgPiAwLCBWOTUgQVMgdmFsID4gMCwgVjk2IEFT IHZhbCA+IDAsIFY5NyBBUyB2YWwgPiAwLCBWOTggQVMgdmFsID4gMCwgVjk5IEFTIHZhbCA+IDAs IFYxMDAgQVMgdmFsID4gMCwKKyAgICBWMTAxIEFTIHZhbCA+IDAsIFYxMDIgQVMgdmFsID4gMCwg VjEwMyBBUyB2YWwgPiAwLCBWMTA0IEFTIHZhbCA+IDAsIFYxMDUgQVMgdmFsID4gMCwgVjEwNiBB UyB2YWwgPiAwLCBWMTA3IEFTIHZhbCA+IDAsIFYxMDggQVMgdmFsID4gMCwgVjEwOSBBUyB2YWwg PiAwLCBWMTEwIEFTIHZhbCA+IDAsCisgICAgVjExMSBBUyB2YWwgPiAwLCBWMTEyIEFTIHZhbCA+ IDAsIFYxMTMgQVMgdmFsID4gMCwgVjExNCBBUyB2YWwgPiAwLCBWMTE1IEFTIHZhbCA+IDAsIFYx MTYgQVMgdmFsID4gMCwgVjExNyBBUyB2YWwgPiAwLCBWMTE4IEFTIHZhbCA+IDAsIFYxMTkgQVMg dmFsID4gMCwgVjEyMCBBUyB2YWwgPiAwLAorICAgIFYxMjEgQVMgdmFsID4gMCwgVjEyMiBBUyB2 YWwgPiAwLCBWMTIzIEFTIHZhbCA+IDAsIFYxMjQgQVMgdmFsID4gMCwgVjEyNSBBUyB2YWwgPiAw LCBWMTI2IEFTIHZhbCA+IDAsIFYxMjcgQVMgdmFsID4gMCwgVjEyOCBBUyB2YWwgPiAwLCBWMTI5 IEFTIHZhbCA+IDAsIFYxMzAgQVMgdmFsID4gMCwKKyAgICBWMTMxIEFTIHZhbCA+IDAsIFYxMzIg QVMgdmFsID4gMCwgVjEzMyBBUyB2YWwgPiAwLCBWMTM0IEFTIHZhbCA+IDAsIFYxMzUgQVMgdmFs ID4gMCwgVjEzNiBBUyB2YWwgPiAwLCBWMTM3IEFTIHZhbCA+IDAsIFYxMzggQVMgdmFsID4gMCwg VjEzOSBBUyB2YWwgPiAwLCBWMTQwIEFTIHZhbCA+IDAsCisgICAgVjE0MSBBUyB2YWwgPiAwLCBW MTQyIEFTIHZhbCA+IDAsIFYxNDMgQVMgdmFsID4gMCwgVjE0NCBBUyB2YWwgPiAwLCBWMTQ1IEFT IHZhbCA+IDAsIFYxNDYgQVMgdmFsID4gMCwgVjE0NyBBUyB2YWwgPiAwLCBWMTQ4IEFTIHZhbCA+ IDAsIFYxNDkgQVMgdmFsID4gMCwgVjE1MCBBUyB2YWwgPiAwLAorICAgIFYxNTEgQVMgdmFsID4g MCwgVjE1MiBBUyB2YWwgPiAwLCBWMTUzIEFTIHZhbCA+IDAsIFYxNTQgQVMgdmFsID4gMCwgVjE1 NSBBUyB2YWwgPiAwLCBWMTU2IEFTIHZhbCA+IDAsIFYxNTcgQVMgdmFsID4gMCwgVjE1OCBBUyB2 YWwgPiAwLCBWMTU5IEFTIHZhbCA+IDAsIFYxNjAgQVMgdmFsID4gMCwKKyAgICBWMTYxIEFTIHZh bCA+IDAsIFYxNjIgQVMgdmFsID4gMCwgVjE2MyBBUyB2YWwgPiAwLCBWMTY0IEFTIHZhbCA+IDAs IFYxNjUgQVMgdmFsID4gMCwgVjE2NiBBUyB2YWwgPiAwLCBWMTY3IEFTIHZhbCA+IDAsIFYxNjgg QVMgdmFsID4gMCwgVjE2OSBBUyB2YWwgPiAwLCBWMTcwIEFTIHZhbCA+IDAsCisgICAgVjE3MSBB UyB2YWwgPiAwLCBWMTcyIEFTIHZhbCA+IDAsIFYxNzMgQVMgdmFsID4gMCwgVjE3NCBBUyB2YWwg PiAwLCBWMTc1IEFTIHZhbCA+IDAsIFYxNzYgQVMgdmFsID4gMCwgVjE3NyBBUyB2YWwgPiAwLCBW MTc4IEFTIHZhbCA+IDAsIFYxNzkgQVMgdmFsID4gMCwgVjE4MCBBUyB2YWwgPiAwLAorICAgIFYx ODEgQVMgdmFsID4gMCwgVjE4MiBBUyB2YWwgPiAwLCBWMTgzIEFTIHZhbCA+IDAsIFYxODQgQVMg dmFsID4gMCwgVjE4NSBBUyB2YWwgPiAwLCBWMTg2IEFTIHZhbCA+IDAsIFYxODcgQVMgdmFsID4g MCwgVjE4OCBBUyB2YWwgPiAwLCBWMTg5IEFTIHZhbCA+IDAsIFYxOTAgQVMgdmFsID4gMCwKKyAg ICBWMTkxIEFTIHZhbCA+IDAsIFYxOTIgQVMgdmFsID4gMCwgVjE5MyBBUyB2YWwgPiAwLCBWMTk0 IEFTIHZhbCA+IDAsIFYxOTUgQVMgdmFsID4gMCwgVjE5NiBBUyB2YWwgPiAwLCBWMTk3IEFTIHZh bCA+IDAsIFYxOTggQVMgdmFsID4gMCwgVjE5OSBBUyB2YWwgPiAwLCBWMjAwIEFTIHZhbCA+IDAs CisgICAgVjIwMSBBUyB2YWwgPiAwLCBWMjAyIEFTIHZhbCA+IDAsIFYyMDMgQVMgdmFsID4gMCwg VjIwNCBBUyB2YWwgPiAwLCBWMjA1IEFTIHZhbCA+IDAsIFYyMDYgQVMgdmFsID4gMCwgVjIwNyBB UyB2YWwgPiAwLCBWMjA4IEFTIHZhbCA+IDAsIFYyMDkgQVMgdmFsID4gMCwgVjIxMCBBUyB2YWwg PiAwLAorICAgIFYyMTEgQVMgdmFsID4gMCwgVjIxMiBBUyB2YWwgPiAwLCBWMjEzIEFTIHZhbCA+ IDAsIFYyMTQgQVMgdmFsID4gMCwgVjIxNSBBUyB2YWwgPiAwLCBWMjE2IEFTIHZhbCA+IDAsIFYy MTcgQVMgdmFsID4gMCwgVjIxOCBBUyB2YWwgPiAwLCBWMjE5IEFTIHZhbCA+IDAsIFYyMjAgQVMg dmFsID4gMCwKKyAgICBWMjIxIEFTIHZhbCA+IDAsIFYyMjIgQVMgdmFsID4gMCwgVjIyMyBBUyB2 YWwgPiAwLCBWMjI0IEFTIHZhbCA+IDAsIFYyMjUgQVMgdmFsID4gMCwgVjIyNiBBUyB2YWwgPiAw LCBWMjI3IEFTIHZhbCA+IDAsIFYyMjggQVMgdmFsID4gMCwgVjIyOSBBUyB2YWwgPiAwLCBWMjMw IEFTIHZhbCA+IDAsCisgICAgVjIzMSBBUyB2YWwgPiAwLCBWMjMyIEFTIHZhbCA+IDAsIFYyMzMg QVMgdmFsID4gMCwgVjIzNCBBUyB2YWwgPiAwLCBWMjM1IEFTIHZhbCA+IDAsIFYyMzYgQVMgdmFs ID4gMCwgVjIzNyBBUyB2YWwgPiAwLCBWMjM4IEFTIHZhbCA+IDAsIFYyMzkgQVMgdmFsID4gMCwg VjI0MCBBUyB2YWwgPiAwLAorICAgIFYyNDEgQVMgdmFsID4gMCwgVjI0MiBBUyB2YWwgPiAwLCBW MjQzIEFTIHZhbCA+IDAsIFYyNDQgQVMgdmFsID4gMCwgVjI0NSBBUyB2YWwgPiAwLCBWMjQ2IEFT IHZhbCA+IDAsIFYyNDcgQVMgdmFsID4gMCwgVjI0OCBBUyB2YWwgPiAwLCBWMjQ5IEFTIHZhbCA+ IDAsIFYyNTAgQVMgdmFsID4gMCwKKyAgICBWMjUxIEFTIHZhbCA+IDAsIFYyNTIgQVMgdmFsID4g MCwgVjI1MyBBUyB2YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6IFN1Y2Nlc3MgLSB1bnVzZWQgREVG SU5FIHZhcmlhYmxlcyBhcmUgZmlsdGVyZWQgb3V0CisKKy0tIFRlc3Q6IDI1MSB2YXJpYWJsZXMg aW4gUEFUVEVSTiwgMjUyIGluIERFRklORSAoYm91bmRhcnkgLSBzaG91bGQgc3VjY2VlZCkKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfZXJyb3JzCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChWMSBWMiBWMyBWNCBWNSBWNiBWNyBWOCBWOSBWMTAgVjEx IFYxMiBWMTMgVjE0IFYxNSBWMTYgVjE3IFYxOCBWMTkgVjIwIFYyMSBWMjIgVjIzIFYyNCBWMjUg VjI2IFYyNyBWMjggVjI5IFYzMCBWMzEgVjMyIFYzMyBWMzQgVjM1IFYzNiBWMzcgVjM4IFYzOSBW NDAgVjQxIFY0MiBWNDMgVjQ0IFY0NSBWNDYgVjQ3IFY0OCBWNDkgVjUwIFY1MSBWNTIgVjUzIFY1 NCBWNTUgVjU2IFY1NyBWNTggVjU5IFY2MCBWNjEgVjYyIFY2MyBWNjQgVjY1IFY2NiBWNjcgVjY4 IFY2OSBWNzAgVjcxIFY3MiBWNzMgVjc0IFY3NSBWNzYgVjc3IFY3OCBWNzkgVjgwIFY4MSBWODIg VjgzIFY4NCBWODUgVjg2IFY4NyBWODggVjg5IFY5MCBWOTEgVjkyIFY5MyBWOTQgVjk1IFY5NiBW OTcgVjk4IFY5OSBWMTAwIFYxMDEgVjEwMiBWMTAzIFYxMDQgVjEwNSBWMTA2IFYxMDcgVjEwOCBW MTA5IFYxMTAgVjExMSBWMTEyIFYxMTMgVjExNCBWMTE1IFYxMTYgVjExNyBWMTE4IFYxMTkgVjEy MCBWMTIxIFYxMjIgVjEyMyBWMTI0IFYxMjUgVjEyNiBWMTI3IFYxMjggVjEyOSBWMTMwIFYxMzEg VjEzMiBWMTMzIFYxMzQgVjEzNSBWMTM2IFYxMzcgVjEzOCBWMTM5IFYxNDAgVjE0MSBWMTQyIFYx NDMgVjE0NCBWMTQ1IFYxNDYgVjE0NyBWMTQ4IFYxNDkgVjE1MCBWMTUxIFYxNTIgVjE1MyBWMTU0 IFYxNTUgVjE1NiBWMTU3IFYxNTggVjE1OSBWMTYwIFYxNjEgVjE2MiBWMTYzIFYxNjQgVjE2NSBW MTY2IFYxNjcgVjE2OCBWMTY5IFYxNzAgVjE3MSBWMTcyIFYxNzMgVjE3NCBWMTc1IFYxNzYgVjE3 NyBWMTc4IFYxNzkgVjE4MCBWMTgxIFYxODIgVjE4MyBWMTg0IFYxODUgVjE4NiBWMTg3IFYxODgg VjE4OSBWMTkwIFYxOTEgVjE5MiBWMTkzIFYxOTQgVjE5NSBWMTk2IFYxOTcgVjE5OCBWMTk5IFYy MDAgVjIwMSBWMjAyIFYyMDMgVjIwNCBWMjA1IFYyMDYgVjIwNyBWMjA4IFYyMDkgVjIxMCBWMjEx IFYyMTIgVjIxMyBWMjE0IFYyMTUgVjIxNiBWMjE3IFYyMTggVjIxOSBWMjIwIFYyMjEgVjIyMiBW MjIzIFYyMjQgVjIyNSBWMjI2IFYyMjcgVjIyOCBWMjI5IFYyMzAgVjIzMSBWMjMyIFYyMzMgVjIz NCBWMjM1IFYyMzYgVjIzNyBWMjM4IFYyMzkgVjI0MCBWMjQxIFYyNDIgVjI0MyBWMjQ0IFYyNDUg VjI0NiBWMjQ3IFYyNDggVjI0OSBWMjUwIFYyNTEpCisgICAgREVGSU5FCisgICAgVjEgQVMgdmFs ID4gMCwgVjIgQVMgdmFsID4gMCwgVjMgQVMgdmFsID4gMCwgVjQgQVMgdmFsID4gMCwgVjUgQVMg dmFsID4gMCwgVjYgQVMgdmFsID4gMCwgVjcgQVMgdmFsID4gMCwgVjggQVMgdmFsID4gMCwgVjkg QVMgdmFsID4gMCwgVjEwIEFTIHZhbCA+IDAsCisgICAgVjExIEFTIHZhbCA+IDAsIFYxMiBBUyB2 YWwgPiAwLCBWMTMgQVMgdmFsID4gMCwgVjE0IEFTIHZhbCA+IDAsIFYxNSBBUyB2YWwgPiAwLCBW MTYgQVMgdmFsID4gMCwgVjE3IEFTIHZhbCA+IDAsIFYxOCBBUyB2YWwgPiAwLCBWMTkgQVMgdmFs ID4gMCwgVjIwIEFTIHZhbCA+IDAsCisgICAgVjIxIEFTIHZhbCA+IDAsIFYyMiBBUyB2YWwgPiAw LCBWMjMgQVMgdmFsID4gMCwgVjI0IEFTIHZhbCA+IDAsIFYyNSBBUyB2YWwgPiAwLCBWMjYgQVMg dmFsID4gMCwgVjI3IEFTIHZhbCA+IDAsIFYyOCBBUyB2YWwgPiAwLCBWMjkgQVMgdmFsID4gMCwg VjMwIEFTIHZhbCA+IDAsCisgICAgVjMxIEFTIHZhbCA+IDAsIFYzMiBBUyB2YWwgPiAwLCBWMzMg QVMgdmFsID4gMCwgVjM0IEFTIHZhbCA+IDAsIFYzNSBBUyB2YWwgPiAwLCBWMzYgQVMgdmFsID4g MCwgVjM3IEFTIHZhbCA+IDAsIFYzOCBBUyB2YWwgPiAwLCBWMzkgQVMgdmFsID4gMCwgVjQwIEFT IHZhbCA+IDAsCisgICAgVjQxIEFTIHZhbCA+IDAsIFY0MiBBUyB2YWwgPiAwLCBWNDMgQVMgdmFs ID4gMCwgVjQ0IEFTIHZhbCA+IDAsIFY0NSBBUyB2YWwgPiAwLCBWNDYgQVMgdmFsID4gMCwgVjQ3 IEFTIHZhbCA+IDAsIFY0OCBBUyB2YWwgPiAwLCBWNDkgQVMgdmFsID4gMCwgVjUwIEFTIHZhbCA+ IDAsCisgICAgVjUxIEFTIHZhbCA+IDAsIFY1MiBBUyB2YWwgPiAwLCBWNTMgQVMgdmFsID4gMCwg VjU0IEFTIHZhbCA+IDAsIFY1NSBBUyB2YWwgPiAwLCBWNTYgQVMgdmFsID4gMCwgVjU3IEFTIHZh bCA+IDAsIFY1OCBBUyB2YWwgPiAwLCBWNTkgQVMgdmFsID4gMCwgVjYwIEFTIHZhbCA+IDAsCisg ICAgVjYxIEFTIHZhbCA+IDAsIFY2MiBBUyB2YWwgPiAwLCBWNjMgQVMgdmFsID4gMCwgVjY0IEFT IHZhbCA+IDAsIFY2NSBBUyB2YWwgPiAwLCBWNjYgQVMgdmFsID4gMCwgVjY3IEFTIHZhbCA+IDAs IFY2OCBBUyB2YWwgPiAwLCBWNjkgQVMgdmFsID4gMCwgVjcwIEFTIHZhbCA+IDAsCisgICAgVjcx IEFTIHZhbCA+IDAsIFY3MiBBUyB2YWwgPiAwLCBWNzMgQVMgdmFsID4gMCwgVjc0IEFTIHZhbCA+ IDAsIFY3NSBBUyB2YWwgPiAwLCBWNzYgQVMgdmFsID4gMCwgVjc3IEFTIHZhbCA+IDAsIFY3OCBB UyB2YWwgPiAwLCBWNzkgQVMgdmFsID4gMCwgVjgwIEFTIHZhbCA+IDAsCisgICAgVjgxIEFTIHZh bCA+IDAsIFY4MiBBUyB2YWwgPiAwLCBWODMgQVMgdmFsID4gMCwgVjg0IEFTIHZhbCA+IDAsIFY4 NSBBUyB2YWwgPiAwLCBWODYgQVMgdmFsID4gMCwgVjg3IEFTIHZhbCA+IDAsIFY4OCBBUyB2YWwg PiAwLCBWODkgQVMgdmFsID4gMCwgVjkwIEFTIHZhbCA+IDAsCisgICAgVjkxIEFTIHZhbCA+IDAs IFY5MiBBUyB2YWwgPiAwLCBWOTMgQVMgdmFsID4gMCwgVjk0IEFTIHZhbCA+IDAsIFY5NSBBUyB2 YWwgPiAwLCBWOTYgQVMgdmFsID4gMCwgVjk3IEFTIHZhbCA+IDAsIFY5OCBBUyB2YWwgPiAwLCBW OTkgQVMgdmFsID4gMCwgVjEwMCBBUyB2YWwgPiAwLAorICAgIFYxMDEgQVMgdmFsID4gMCwgVjEw MiBBUyB2YWwgPiAwLCBWMTAzIEFTIHZhbCA+IDAsIFYxMDQgQVMgdmFsID4gMCwgVjEwNSBBUyB2 YWwgPiAwLCBWMTA2IEFTIHZhbCA+IDAsIFYxMDcgQVMgdmFsID4gMCwgVjEwOCBBUyB2YWwgPiAw LCBWMTA5IEFTIHZhbCA+IDAsIFYxMTAgQVMgdmFsID4gMCwKKyAgICBWMTExIEFTIHZhbCA+IDAs IFYxMTIgQVMgdmFsID4gMCwgVjExMyBBUyB2YWwgPiAwLCBWMTE0IEFTIHZhbCA+IDAsIFYxMTUg QVMgdmFsID4gMCwgVjExNiBBUyB2YWwgPiAwLCBWMTE3IEFTIHZhbCA+IDAsIFYxMTggQVMgdmFs ID4gMCwgVjExOSBBUyB2YWwgPiAwLCBWMTIwIEFTIHZhbCA+IDAsCisgICAgVjEyMSBBUyB2YWwg PiAwLCBWMTIyIEFTIHZhbCA+IDAsIFYxMjMgQVMgdmFsID4gMCwgVjEyNCBBUyB2YWwgPiAwLCBW MTI1IEFTIHZhbCA+IDAsIFYxMjYgQVMgdmFsID4gMCwgVjEyNyBBUyB2YWwgPiAwLCBWMTI4IEFT IHZhbCA+IDAsIFYxMjkgQVMgdmFsID4gMCwgVjEzMCBBUyB2YWwgPiAwLAorICAgIFYxMzEgQVMg dmFsID4gMCwgVjEzMiBBUyB2YWwgPiAwLCBWMTMzIEFTIHZhbCA+IDAsIFYxMzQgQVMgdmFsID4g MCwgVjEzNSBBUyB2YWwgPiAwLCBWMTM2IEFTIHZhbCA+IDAsIFYxMzcgQVMgdmFsID4gMCwgVjEz OCBBUyB2YWwgPiAwLCBWMTM5IEFTIHZhbCA+IDAsIFYxNDAgQVMgdmFsID4gMCwKKyAgICBWMTQx IEFTIHZhbCA+IDAsIFYxNDIgQVMgdmFsID4gMCwgVjE0MyBBUyB2YWwgPiAwLCBWMTQ0IEFTIHZh bCA+IDAsIFYxNDUgQVMgdmFsID4gMCwgVjE0NiBBUyB2YWwgPiAwLCBWMTQ3IEFTIHZhbCA+IDAs IFYxNDggQVMgdmFsID4gMCwgVjE0OSBBUyB2YWwgPiAwLCBWMTUwIEFTIHZhbCA+IDAsCisgICAg VjE1MSBBUyB2YWwgPiAwLCBWMTUyIEFTIHZhbCA+IDAsIFYxNTMgQVMgdmFsID4gMCwgVjE1NCBB UyB2YWwgPiAwLCBWMTU1IEFTIHZhbCA+IDAsIFYxNTYgQVMgdmFsID4gMCwgVjE1NyBBUyB2YWwg PiAwLCBWMTU4IEFTIHZhbCA+IDAsIFYxNTkgQVMgdmFsID4gMCwgVjE2MCBBUyB2YWwgPiAwLAor ICAgIFYxNjEgQVMgdmFsID4gMCwgVjE2MiBBUyB2YWwgPiAwLCBWMTYzIEFTIHZhbCA+IDAsIFYx NjQgQVMgdmFsID4gMCwgVjE2NSBBUyB2YWwgPiAwLCBWMTY2IEFTIHZhbCA+IDAsIFYxNjcgQVMg dmFsID4gMCwgVjE2OCBBUyB2YWwgPiAwLCBWMTY5IEFTIHZhbCA+IDAsIFYxNzAgQVMgdmFsID4g MCwKKyAgICBWMTcxIEFTIHZhbCA+IDAsIFYxNzIgQVMgdmFsID4gMCwgVjE3MyBBUyB2YWwgPiAw LCBWMTc0IEFTIHZhbCA+IDAsIFYxNzUgQVMgdmFsID4gMCwgVjE3NiBBUyB2YWwgPiAwLCBWMTc3 IEFTIHZhbCA+IDAsIFYxNzggQVMgdmFsID4gMCwgVjE3OSBBUyB2YWwgPiAwLCBWMTgwIEFTIHZh bCA+IDAsCisgICAgVjE4MSBBUyB2YWwgPiAwLCBWMTgyIEFTIHZhbCA+IDAsIFYxODMgQVMgdmFs ID4gMCwgVjE4NCBBUyB2YWwgPiAwLCBWMTg1IEFTIHZhbCA+IDAsIFYxODYgQVMgdmFsID4gMCwg VjE4NyBBUyB2YWwgPiAwLCBWMTg4IEFTIHZhbCA+IDAsIFYxODkgQVMgdmFsID4gMCwgVjE5MCBB UyB2YWwgPiAwLAorICAgIFYxOTEgQVMgdmFsID4gMCwgVjE5MiBBUyB2YWwgPiAwLCBWMTkzIEFT IHZhbCA+IDAsIFYxOTQgQVMgdmFsID4gMCwgVjE5NSBBUyB2YWwgPiAwLCBWMTk2IEFTIHZhbCA+ IDAsIFYxOTcgQVMgdmFsID4gMCwgVjE5OCBBUyB2YWwgPiAwLCBWMTk5IEFTIHZhbCA+IDAsIFYy MDAgQVMgdmFsID4gMCwKKyAgICBWMjAxIEFTIHZhbCA+IDAsIFYyMDIgQVMgdmFsID4gMCwgVjIw MyBBUyB2YWwgPiAwLCBWMjA0IEFTIHZhbCA+IDAsIFYyMDUgQVMgdmFsID4gMCwgVjIwNiBBUyB2 YWwgPiAwLCBWMjA3IEFTIHZhbCA+IDAsIFYyMDggQVMgdmFsID4gMCwgVjIwOSBBUyB2YWwgPiAw LCBWMjEwIEFTIHZhbCA+IDAsCisgICAgVjIxMSBBUyB2YWwgPiAwLCBWMjEyIEFTIHZhbCA+IDAs IFYyMTMgQVMgdmFsID4gMCwgVjIxNCBBUyB2YWwgPiAwLCBWMjE1IEFTIHZhbCA+IDAsIFYyMTYg QVMgdmFsID4gMCwgVjIxNyBBUyB2YWwgPiAwLCBWMjE4IEFTIHZhbCA+IDAsIFYyMTkgQVMgdmFs ID4gMCwgVjIyMCBBUyB2YWwgPiAwLAorICAgIFYyMjEgQVMgdmFsID4gMCwgVjIyMiBBUyB2YWwg PiAwLCBWMjIzIEFTIHZhbCA+IDAsIFYyMjQgQVMgdmFsID4gMCwgVjIyNSBBUyB2YWwgPiAwLCBW MjI2IEFTIHZhbCA+IDAsIFYyMjcgQVMgdmFsID4gMCwgVjIyOCBBUyB2YWwgPiAwLCBWMjI5IEFT IHZhbCA+IDAsIFYyMzAgQVMgdmFsID4gMCwKKyAgICBWMjMxIEFTIHZhbCA+IDAsIFYyMzIgQVMg dmFsID4gMCwgVjIzMyBBUyB2YWwgPiAwLCBWMjM0IEFTIHZhbCA+IDAsIFYyMzUgQVMgdmFsID4g MCwgVjIzNiBBUyB2YWwgPiAwLCBWMjM3IEFTIHZhbCA+IDAsIFYyMzggQVMgdmFsID4gMCwgVjIz OSBBUyB2YWwgPiAwLCBWMjQwIEFTIHZhbCA+IDAsCisgICAgVjI0MSBBUyB2YWwgPiAwLCBWMjQy IEFTIHZhbCA+IDAsIFYyNDMgQVMgdmFsID4gMCwgVjI0NCBBUyB2YWwgPiAwLCBWMjQ1IEFTIHZh bCA+IDAsIFYyNDYgQVMgdmFsID4gMCwgVjI0NyBBUyB2YWwgPiAwLCBWMjQ4IEFTIHZhbCA+IDAs IFYyNDkgQVMgdmFsID4gMCwgVjI1MCBBUyB2YWwgPiAwLAorICAgIFYyNTEgQVMgdmFsID4gMCwg VjI1MiBBUyB2YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6IFN1Y2Nlc3MgLSB1bnVzZWQgREVGSU5F IHZhcmlhYmxlcyBhcmUgZmlsdGVyZWQgb3V0CisKKy0tIFRlc3Q6IDI1MiB2YXJpYWJsZXMgaW4g UEFUVEVSTiwgMjUxIGluIERFRklORSAoZXhjZWVkcyBsaW1pdCB3aXRoIGltcGxpY2l0IFRSVUUp CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX2Vycm9ycworV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoVjEgVjIgVjMgVjQgVjUgVjYgVjcgVjggVjkgVjEw IFYxMSBWMTIgVjEzIFYxNCBWMTUgVjE2IFYxNyBWMTggVjE5IFYyMCBWMjEgVjIyIFYyMyBWMjQg VjI1IFYyNiBWMjcgVjI4IFYyOSBWMzAgVjMxIFYzMiBWMzMgVjM0IFYzNSBWMzYgVjM3IFYzOCBW MzkgVjQwIFY0MSBWNDIgVjQzIFY0NCBWNDUgVjQ2IFY0NyBWNDggVjQ5IFY1MCBWNTEgVjUyIFY1 MyBWNTQgVjU1IFY1NiBWNTcgVjU4IFY1OSBWNjAgVjYxIFY2MiBWNjMgVjY0IFY2NSBWNjYgVjY3 IFY2OCBWNjkgVjcwIFY3MSBWNzIgVjczIFY3NCBWNzUgVjc2IFY3NyBWNzggVjc5IFY4MCBWODEg VjgyIFY4MyBWODQgVjg1IFY4NiBWODcgVjg4IFY4OSBWOTAgVjkxIFY5MiBWOTMgVjk0IFY5NSBW OTYgVjk3IFY5OCBWOTkgVjEwMCBWMTAxIFYxMDIgVjEwMyBWMTA0IFYxMDUgVjEwNiBWMTA3IFYx MDggVjEwOSBWMTEwIFYxMTEgVjExMiBWMTEzIFYxMTQgVjExNSBWMTE2IFYxMTcgVjExOCBWMTE5 IFYxMjAgVjEyMSBWMTIyIFYxMjMgVjEyNCBWMTI1IFYxMjYgVjEyNyBWMTI4IFYxMjkgVjEzMCBW MTMxIFYxMzIgVjEzMyBWMTM0IFYxMzUgVjEzNiBWMTM3IFYxMzggVjEzOSBWMTQwIFYxNDEgVjE0 MiBWMTQzIFYxNDQgVjE0NSBWMTQ2IFYxNDcgVjE0OCBWMTQ5IFYxNTAgVjE1MSBWMTUyIFYxNTMg VjE1NCBWMTU1IFYxNTYgVjE1NyBWMTU4IFYxNTkgVjE2MCBWMTYxIFYxNjIgVjE2MyBWMTY0IFYx NjUgVjE2NiBWMTY3IFYxNjggVjE2OSBWMTcwIFYxNzEgVjE3MiBWMTczIFYxNzQgVjE3NSBWMTc2 IFYxNzcgVjE3OCBWMTc5IFYxODAgVjE4MSBWMTgyIFYxODMgVjE4NCBWMTg1IFYxODYgVjE4NyBW MTg4IFYxODkgVjE5MCBWMTkxIFYxOTIgVjE5MyBWMTk0IFYxOTUgVjE5NiBWMTk3IFYxOTggVjE5 OSBWMjAwIFYyMDEgVjIwMiBWMjAzIFYyMDQgVjIwNSBWMjA2IFYyMDcgVjIwOCBWMjA5IFYyMTAg VjIxMSBWMjEyIFYyMTMgVjIxNCBWMjE1IFYyMTYgVjIxNyBWMjE4IFYyMTkgVjIyMCBWMjIxIFYy MjIgVjIyMyBWMjI0IFYyMjUgVjIyNiBWMjI3IFYyMjggVjIyOSBWMjMwIFYyMzEgVjIzMiBWMjMz IFYyMzQgVjIzNSBWMjM2IFYyMzcgVjIzOCBWMjM5IFYyNDAgVjI0MSBWMjQyIFYyNDMgVjI0NCBW MjQ1IFYyNDYgVjI0NyBWMjQ4IFYyNDkgVjI1MCBWMjUxIFYyNTIpCisgICAgREVGSU5FCisgICAg VjEgQVMgdmFsID4gMCwgVjIgQVMgdmFsID4gMCwgVjMgQVMgdmFsID4gMCwgVjQgQVMgdmFsID4g MCwgVjUgQVMgdmFsID4gMCwgVjYgQVMgdmFsID4gMCwgVjcgQVMgdmFsID4gMCwgVjggQVMgdmFs ID4gMCwgVjkgQVMgdmFsID4gMCwgVjEwIEFTIHZhbCA+IDAsCisgICAgVjExIEFTIHZhbCA+IDAs IFYxMiBBUyB2YWwgPiAwLCBWMTMgQVMgdmFsID4gMCwgVjE0IEFTIHZhbCA+IDAsIFYxNSBBUyB2 YWwgPiAwLCBWMTYgQVMgdmFsID4gMCwgVjE3IEFTIHZhbCA+IDAsIFYxOCBBUyB2YWwgPiAwLCBW MTkgQVMgdmFsID4gMCwgVjIwIEFTIHZhbCA+IDAsCisgICAgVjIxIEFTIHZhbCA+IDAsIFYyMiBB UyB2YWwgPiAwLCBWMjMgQVMgdmFsID4gMCwgVjI0IEFTIHZhbCA+IDAsIFYyNSBBUyB2YWwgPiAw LCBWMjYgQVMgdmFsID4gMCwgVjI3IEFTIHZhbCA+IDAsIFYyOCBBUyB2YWwgPiAwLCBWMjkgQVMg dmFsID4gMCwgVjMwIEFTIHZhbCA+IDAsCisgICAgVjMxIEFTIHZhbCA+IDAsIFYzMiBBUyB2YWwg PiAwLCBWMzMgQVMgdmFsID4gMCwgVjM0IEFTIHZhbCA+IDAsIFYzNSBBUyB2YWwgPiAwLCBWMzYg QVMgdmFsID4gMCwgVjM3IEFTIHZhbCA+IDAsIFYzOCBBUyB2YWwgPiAwLCBWMzkgQVMgdmFsID4g MCwgVjQwIEFTIHZhbCA+IDAsCisgICAgVjQxIEFTIHZhbCA+IDAsIFY0MiBBUyB2YWwgPiAwLCBW NDMgQVMgdmFsID4gMCwgVjQ0IEFTIHZhbCA+IDAsIFY0NSBBUyB2YWwgPiAwLCBWNDYgQVMgdmFs ID4gMCwgVjQ3IEFTIHZhbCA+IDAsIFY0OCBBUyB2YWwgPiAwLCBWNDkgQVMgdmFsID4gMCwgVjUw IEFTIHZhbCA+IDAsCisgICAgVjUxIEFTIHZhbCA+IDAsIFY1MiBBUyB2YWwgPiAwLCBWNTMgQVMg dmFsID4gMCwgVjU0IEFTIHZhbCA+IDAsIFY1NSBBUyB2YWwgPiAwLCBWNTYgQVMgdmFsID4gMCwg VjU3IEFTIHZhbCA+IDAsIFY1OCBBUyB2YWwgPiAwLCBWNTkgQVMgdmFsID4gMCwgVjYwIEFTIHZh bCA+IDAsCisgICAgVjYxIEFTIHZhbCA+IDAsIFY2MiBBUyB2YWwgPiAwLCBWNjMgQVMgdmFsID4g MCwgVjY0IEFTIHZhbCA+IDAsIFY2NSBBUyB2YWwgPiAwLCBWNjYgQVMgdmFsID4gMCwgVjY3IEFT IHZhbCA+IDAsIFY2OCBBUyB2YWwgPiAwLCBWNjkgQVMgdmFsID4gMCwgVjcwIEFTIHZhbCA+IDAs CisgICAgVjcxIEFTIHZhbCA+IDAsIFY3MiBBUyB2YWwgPiAwLCBWNzMgQVMgdmFsID4gMCwgVjc0 IEFTIHZhbCA+IDAsIFY3NSBBUyB2YWwgPiAwLCBWNzYgQVMgdmFsID4gMCwgVjc3IEFTIHZhbCA+ IDAsIFY3OCBBUyB2YWwgPiAwLCBWNzkgQVMgdmFsID4gMCwgVjgwIEFTIHZhbCA+IDAsCisgICAg VjgxIEFTIHZhbCA+IDAsIFY4MiBBUyB2YWwgPiAwLCBWODMgQVMgdmFsID4gMCwgVjg0IEFTIHZh bCA+IDAsIFY4NSBBUyB2YWwgPiAwLCBWODYgQVMgdmFsID4gMCwgVjg3IEFTIHZhbCA+IDAsIFY4 OCBBUyB2YWwgPiAwLCBWODkgQVMgdmFsID4gMCwgVjkwIEFTIHZhbCA+IDAsCisgICAgVjkxIEFT IHZhbCA+IDAsIFY5MiBBUyB2YWwgPiAwLCBWOTMgQVMgdmFsID4gMCwgVjk0IEFTIHZhbCA+IDAs IFY5NSBBUyB2YWwgPiAwLCBWOTYgQVMgdmFsID4gMCwgVjk3IEFTIHZhbCA+IDAsIFY5OCBBUyB2 YWwgPiAwLCBWOTkgQVMgdmFsID4gMCwgVjEwMCBBUyB2YWwgPiAwLAorICAgIFYxMDEgQVMgdmFs ID4gMCwgVjEwMiBBUyB2YWwgPiAwLCBWMTAzIEFTIHZhbCA+IDAsIFYxMDQgQVMgdmFsID4gMCwg VjEwNSBBUyB2YWwgPiAwLCBWMTA2IEFTIHZhbCA+IDAsIFYxMDcgQVMgdmFsID4gMCwgVjEwOCBB UyB2YWwgPiAwLCBWMTA5IEFTIHZhbCA+IDAsIFYxMTAgQVMgdmFsID4gMCwKKyAgICBWMTExIEFT IHZhbCA+IDAsIFYxMTIgQVMgdmFsID4gMCwgVjExMyBBUyB2YWwgPiAwLCBWMTE0IEFTIHZhbCA+ IDAsIFYxMTUgQVMgdmFsID4gMCwgVjExNiBBUyB2YWwgPiAwLCBWMTE3IEFTIHZhbCA+IDAsIFYx MTggQVMgdmFsID4gMCwgVjExOSBBUyB2YWwgPiAwLCBWMTIwIEFTIHZhbCA+IDAsCisgICAgVjEy MSBBUyB2YWwgPiAwLCBWMTIyIEFTIHZhbCA+IDAsIFYxMjMgQVMgdmFsID4gMCwgVjEyNCBBUyB2 YWwgPiAwLCBWMTI1IEFTIHZhbCA+IDAsIFYxMjYgQVMgdmFsID4gMCwgVjEyNyBBUyB2YWwgPiAw LCBWMTI4IEFTIHZhbCA+IDAsIFYxMjkgQVMgdmFsID4gMCwgVjEzMCBBUyB2YWwgPiAwLAorICAg IFYxMzEgQVMgdmFsID4gMCwgVjEzMiBBUyB2YWwgPiAwLCBWMTMzIEFTIHZhbCA+IDAsIFYxMzQg QVMgdmFsID4gMCwgVjEzNSBBUyB2YWwgPiAwLCBWMTM2IEFTIHZhbCA+IDAsIFYxMzcgQVMgdmFs ID4gMCwgVjEzOCBBUyB2YWwgPiAwLCBWMTM5IEFTIHZhbCA+IDAsIFYxNDAgQVMgdmFsID4gMCwK KyAgICBWMTQxIEFTIHZhbCA+IDAsIFYxNDIgQVMgdmFsID4gMCwgVjE0MyBBUyB2YWwgPiAwLCBW MTQ0IEFTIHZhbCA+IDAsIFYxNDUgQVMgdmFsID4gMCwgVjE0NiBBUyB2YWwgPiAwLCBWMTQ3IEFT IHZhbCA+IDAsIFYxNDggQVMgdmFsID4gMCwgVjE0OSBBUyB2YWwgPiAwLCBWMTUwIEFTIHZhbCA+ IDAsCisgICAgVjE1MSBBUyB2YWwgPiAwLCBWMTUyIEFTIHZhbCA+IDAsIFYxNTMgQVMgdmFsID4g MCwgVjE1NCBBUyB2YWwgPiAwLCBWMTU1IEFTIHZhbCA+IDAsIFYxNTYgQVMgdmFsID4gMCwgVjE1 NyBBUyB2YWwgPiAwLCBWMTU4IEFTIHZhbCA+IDAsIFYxNTkgQVMgdmFsID4gMCwgVjE2MCBBUyB2 YWwgPiAwLAorICAgIFYxNjEgQVMgdmFsID4gMCwgVjE2MiBBUyB2YWwgPiAwLCBWMTYzIEFTIHZh bCA+IDAsIFYxNjQgQVMgdmFsID4gMCwgVjE2NSBBUyB2YWwgPiAwLCBWMTY2IEFTIHZhbCA+IDAs IFYxNjcgQVMgdmFsID4gMCwgVjE2OCBBUyB2YWwgPiAwLCBWMTY5IEFTIHZhbCA+IDAsIFYxNzAg QVMgdmFsID4gMCwKKyAgICBWMTcxIEFTIHZhbCA+IDAsIFYxNzIgQVMgdmFsID4gMCwgVjE3MyBB UyB2YWwgPiAwLCBWMTc0IEFTIHZhbCA+IDAsIFYxNzUgQVMgdmFsID4gMCwgVjE3NiBBUyB2YWwg PiAwLCBWMTc3IEFTIHZhbCA+IDAsIFYxNzggQVMgdmFsID4gMCwgVjE3OSBBUyB2YWwgPiAwLCBW MTgwIEFTIHZhbCA+IDAsCisgICAgVjE4MSBBUyB2YWwgPiAwLCBWMTgyIEFTIHZhbCA+IDAsIFYx ODMgQVMgdmFsID4gMCwgVjE4NCBBUyB2YWwgPiAwLCBWMTg1IEFTIHZhbCA+IDAsIFYxODYgQVMg dmFsID4gMCwgVjE4NyBBUyB2YWwgPiAwLCBWMTg4IEFTIHZhbCA+IDAsIFYxODkgQVMgdmFsID4g MCwgVjE5MCBBUyB2YWwgPiAwLAorICAgIFYxOTEgQVMgdmFsID4gMCwgVjE5MiBBUyB2YWwgPiAw LCBWMTkzIEFTIHZhbCA+IDAsIFYxOTQgQVMgdmFsID4gMCwgVjE5NSBBUyB2YWwgPiAwLCBWMTk2 IEFTIHZhbCA+IDAsIFYxOTcgQVMgdmFsID4gMCwgVjE5OCBBUyB2YWwgPiAwLCBWMTk5IEFTIHZh bCA+IDAsIFYyMDAgQVMgdmFsID4gMCwKKyAgICBWMjAxIEFTIHZhbCA+IDAsIFYyMDIgQVMgdmFs ID4gMCwgVjIwMyBBUyB2YWwgPiAwLCBWMjA0IEFTIHZhbCA+IDAsIFYyMDUgQVMgdmFsID4gMCwg VjIwNiBBUyB2YWwgPiAwLCBWMjA3IEFTIHZhbCA+IDAsIFYyMDggQVMgdmFsID4gMCwgVjIwOSBB UyB2YWwgPiAwLCBWMjEwIEFTIHZhbCA+IDAsCisgICAgVjIxMSBBUyB2YWwgPiAwLCBWMjEyIEFT IHZhbCA+IDAsIFYyMTMgQVMgdmFsID4gMCwgVjIxNCBBUyB2YWwgPiAwLCBWMjE1IEFTIHZhbCA+ IDAsIFYyMTYgQVMgdmFsID4gMCwgVjIxNyBBUyB2YWwgPiAwLCBWMjE4IEFTIHZhbCA+IDAsIFYy MTkgQVMgdmFsID4gMCwgVjIyMCBBUyB2YWwgPiAwLAorICAgIFYyMjEgQVMgdmFsID4gMCwgVjIy MiBBUyB2YWwgPiAwLCBWMjIzIEFTIHZhbCA+IDAsIFYyMjQgQVMgdmFsID4gMCwgVjIyNSBBUyB2 YWwgPiAwLCBWMjI2IEFTIHZhbCA+IDAsIFYyMjcgQVMgdmFsID4gMCwgVjIyOCBBUyB2YWwgPiAw LCBWMjI5IEFTIHZhbCA+IDAsIFYyMzAgQVMgdmFsID4gMCwKKyAgICBWMjMxIEFTIHZhbCA+IDAs IFYyMzIgQVMgdmFsID4gMCwgVjIzMyBBUyB2YWwgPiAwLCBWMjM0IEFTIHZhbCA+IDAsIFYyMzUg QVMgdmFsID4gMCwgVjIzNiBBUyB2YWwgPiAwLCBWMjM3IEFTIHZhbCA+IDAsIFYyMzggQVMgdmFs ID4gMCwgVjIzOSBBUyB2YWwgPiAwLCBWMjQwIEFTIHZhbCA+IDAsCisgICAgVjI0MSBBUyB2YWwg PiAwLCBWMjQyIEFTIHZhbCA+IDAsIFYyNDMgQVMgdmFsID4gMCwgVjI0NCBBUyB2YWwgPiAwLCBW MjQ1IEFTIHZhbCA+IDAsIFYyNDYgQVMgdmFsID4gMCwgVjI0NyBBUyB2YWwgPiAwLCBWMjQ4IEFT IHZhbCA+IDAsIFYyNDkgQVMgdmFsID4gMCwgVjI1MCBBUyB2YWwgPiAwLAorICAgIFYyNTEgQVMg dmFsID4gMAorKTsKKy0tIEV4cGVjdGVkOiBFUlJPUiAtIHRvbyBtYW55IHBhdHRlcm4gdmFyaWFi bGVzIChNYXhpbXVtIGlzIDI1MSkKKworLS0gVGVzdDogUGF0dGVybiBuZXN0aW5nIGF0IG1heGlt dW0gZGVwdGggKGRlcHRoIDI1MykKKy0tIE5vdGU6IDI1MyBuZXN0ZWQgR1JPVVB7Myw3fSBxdWFu dGlmaWVycyBwcm9kdWNlIGRlcHRoIDI1MyBhZnRlciBvcHRpbWl6YXRpb24KK1NFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfZXJyb3JzCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOICgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoQXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KQorICAgIERFRklORSBBIEFTIHZhbCA+ IDAKKyk7CistLSBFeHBlY3RlZDogU2hvdWxkIHN1Y2NlZWQKKworLS0gVGVzdDogUGF0dGVybiBu ZXN0aW5nIGRlcHRoIGV4Y2VlZHMgbWF4aW11bSAoZGVwdGggMjU0KQorLS0gTm90ZTogMjU0IG5l c3RlZCBHUk9VUHszLDd9IHF1YW50aWZpZXJzIHByb2R1Y2UgZGVwdGggMjU0IGFmdGVyIG9wdGlt aXphdGlvbgorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9lcnJvcnMK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoQXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9 KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXszLDd9KXsz LDd9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CistLSBFeHBlY3RlZDogRVJST1IgLSBw YXR0ZXJuIG5lc3RpbmcgdG9vIGRlZXAKKworRFJPUCBUQUJMRSBycHJfZXJyb3JzOworCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIEphY29iJ3MgUGF0dGVybnMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQmFzaWMgcGF0dGVybiBtYXRjaGlu ZyB0ZXN0cyBmcm9tIGphY29iIGJyYW5jaAorCistLSBUZXN0OiBBPyAob3B0aW9uYWwsIGdyZWVk eSkKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSBycHJfcGxhbgor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gNTAKKyk7CisK Ky0tIFRlc3Q6IEF7Mn0gKGV4YWN0IGNvdW50KQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9W RVIgdyBBUyBjCitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBezJ9KQorICAg IERFRklORSBBIEFTIHZhbCA8PSA1MAorKTsKKworLS0gVGVzdDogQXsxLDN9IChib3VuZGVkIHJh bmdlLCBncmVlZHkpCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00g cnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7MSwzfSkKKyAgICBERUZJTkUgQSBBUyB2 YWwgPD0gNTAKKyk7CisKKy0tIFRlc3Q6IEEgfCBCIChzaW1wbGUgYWx0ZXJuYXRpb24pCitTRUxF Q1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKEEgfCBCKQorICAgIERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2YWwg PiA3MAorKTsKKworLS0gVGVzdDogQSB8IEIgfCBDICh0aHJlZS13YXkgYWx0ZXJuYXRpb24pCitT RUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gcnByX3BsYW4KK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEEgfCBCIHwgQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMjAsIEIg QVMgdmFsIEJFVFdFRU4gNDAgQU5EIDYwLCBDIEFTIHZhbCA+IDgwCispOworCistLSBUZXN0OiBB IEIgQyAoY29uY2F0ZW5hdGlvbikKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMg YworRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMpCisgICAgREVGSU5F IEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCBCRVRXRUVOIDMxIEFORCA2MCwgQyBBUyB2YWwgPiA2 MAorKTsKKworLS0gVGVzdDogQSBCPyBDIChvcHRpb25hbCBtaWRkbGUpCitTRUxFQ1QgaWQsIHZh bCwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKEEgQj8gQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFsIEJFVFdFRU4g MzEgQU5EIDYwLCBDIEFTIHZhbCA+IDYwCispOworCistLSBUZXN0OiAoQSBCKSsgKGdyb3VwZWQg cXVhbnRpZmllcikKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSBy cHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQikrKQorICAgIERFRklORSBBIEFTIHZh bCA8PSA1MCwgQiBBUyB2YWwgPiA1MAorKTsKKworLS0gVGVzdDogKEEgfCBCKSsgQyAoYWx0ZXJu YXRpb24gd2l0aCBxdWFudGlmaWVyKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBB UyBjCitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpKyBDKQorICAg IERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2YWwgQkVUV0VFTiAzMSBBTkQgNjAsIEMgQVMg dmFsID4gODAKKyk7CisKKy0tIFRlc3Q6IChBKyB8IChBIHwgQikrKSogLSBuZXN0ZWQgYWx0ZXJu YXRpb24gaW5zaWRlIHF1YW50aWZpZWQgZ3JvdXAKKy0tIFByZXZpb3VzbHkgY2F1c2VkIGluZmlu aXRlIHJlY3Vyc2lvbiBpbiBuZmFfYWR2YW5jZV9hbHQgd2hlbiB0aGUgaW5uZXIKKy0tIEJFR0lO KCspJ3Mgc2tpcCBqdW1wIHdhcyBmb2xsb3dlZCBhcyBhbiBBTFQgYnJhbmNoIHBvaW50ZXIuCitT RUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBs YXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIChWQUxVRVMKKyAgICAoMSwg QVJSQVlbJ0EnLCAnQiddKSwKKyAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgKDMsIEFSUkFZWydD J10pCispIEFTIHQoaWQsIGZsYWdzKQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEErIHwgKEEgfCBC KSspKikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUGF0aG9sb2dpY2FsIFBh dHRlcm5zCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIFRoZXNlIHBhdHRlcm5zIHByZXZpb3VzbHkgY2F1c2VkIGlzc3Vl cy4gTm93IG9wdGltaXplZCBvciBoYW5kbGVkIHNhZmVseS4KKworLS0gVGVzdDogKEEqKSogLSBu ZXN0ZWQgdW5ib3VuZGVkIChvcHRpbWl6ZWQgdG8gQSopCitTRUxFQ1QgdiwgY291bnQoKikgT1ZF UiB3IEFTIGMKK0ZST00gKFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgdikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBJTklUSUFMCisgICAg UEFUVEVSTiAoKEEqKSopCisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsKKworLS0gVGVzdDogKEEq KSsgLSBpbm5lciBudWxsYWJsZSAob3B0aW1pemVkIHRvIEEqKQorU0VMRUNUIHYsIGNvdW50KCop IE9WRVIgdyBBUyBjCitGUk9NIChTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDUpIHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgSU5JVElBTAor ICAgIFBBVFRFUk4gKChBKikrKQorICAgIERFRklORSBBIEFTIFRSVUUKKyk7CisKKy0tIFRlc3Q6 IChBKykqIC0gb3V0ZXIgbnVsbGFibGUgKG9wdGltaXplZCB0byBBKikKK1NFTEVDVCB2LCBjb3Vu dCgqKSBPVkVSIHcgQVMgYworRlJPTSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1KSB2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIElOSVRJ QUwKKyAgICBQQVRURVJOICgoQSspKikKKyAgICBERUZJTkUgQSBBUyBUUlVFCispOworCistLSBU ZXN0OiAoQSspKyAtIGJvdGggcmVxdWlyZSBtYXRjaCAob3B0aW1pemVkIHRvIEErKQorU0VMRUNU IHYsIGNvdW50KCopIE9WRVIgdyBBUyBjCitGUk9NIChTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEs IDUpIHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgSU5JVElBTAorICAgIFBBVFRFUk4gKChBKykrKQorICAgIERFRklORSBBIEFTIFRSVUUKKyk7 CisKKy0tIFRlc3Q6ICgoKEEpKikqKSogIC0gdHJpcGxlIG5lc3RlZCAob3B0aW1pemVkIHRvIEEq KQorU0VMRUNUIHYsIGNvdW50KCopIE9WRVIgdyBBUyBjCitGUk9NIChTRUxFQ1QgZ2VuZXJhdGVf c2VyaWVzKDEsIDMpIHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKCgoKEEpKikqKSopCisgICAgREVGSU5F IEEgQVMgVFJVRQorKTsKKworLS0gT3B0aW9uYWwgZ3JvdXAgd2l0aCBhbHRlcm5hdGlvbjogQSAo KEIgfCBDKSAoRCB8IEUpKSogRj8KKy0tIFdoZW4gb25seSBBIG1hdGNoZXMsIHRoZSAqIGdyb3Vw IG1hdGNoZXMgMCB0aW1lcyBhbmQgRj8gbWF0Y2hlcyAwIHRpbWVzCitTRUxFQ1QgaWQsIHZhbCwg bWF0Y2hfbGVuCitGUk9NIChTRUxFQ1QgaWQsIHZhbCwKKyAgICAgICAgICAgICBDT1VOVCgqKSBP VkVSIHcgQVMgbWF0Y2hfbGVuCisgICAgICBGUk9NIChWQUxVRVMgKDEsIDEpLCAoMiwgOTkpKSBB UyB0KGlkLCB2YWwpCisgICAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgICAgT1JERVIgQlkgaWQK KyAgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgICAgICBQ QVRURVJOIChBICgoQiB8IEMpIChEIHwgRSkpKiBGPykKKyAgICAgICAgICBERUZJTkUgQSBBUyB2 YWwgPSAxLAorICAgICAgICAgICAgICAgICBCIEFTIHZhbCA9IDIsIEMgQVMgdmFsID0gMywKKyAg ICAgICAgICAgICAgICAgRCBBUyB2YWwgPSA0LCBFIEFTIHZhbCA9IDUsCisgICAgICAgICAgICAg ICAgIEYgQVMgdmFsID0gNgorICAgICAgKQorKSBzOworCitEUk9QIFRBQkxFIHJwcl9wbGFuOwor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIEVuZCBvZiBycHJfYmFzZS5zcWwKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4cGxhaW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cnByX2V4cGxhaW4uc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5m OGM4ZjYyZTU5NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9l eHBsYWluLnNxbApAQCAtMCwwICsxLDIyNTQgQEAKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUlBSIEVYUExBSU4gVGVz dHMKKy0tIFRlc3RzIGZvciBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiBFWFBMQUlOIG91dHB1dAor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLQorLS0gVGhpcyB0ZXN0IHN1aXRlIHZhbGlkYXRlcyBFWFBMQUlOIG91dHB1dCBm b3IgUlBSIHF1ZXJpZXMsCistLSBpbmNsdWRpbmcgTkZBIHN0YXRpc3RpY3Mgc2hvd24gaW4gRVhQ TEFJTiBBTkFMWVpFOgorLS0gICAtIE5GQSBTdGF0ZXM6IHBlYWssIHRvdGFsLCBtZXJnZWQKKy0t ICAgLSBORkEgQ29udGV4dHM6IHBlYWssIHRvdGFsLCBhYnNvcmJlZCwgc2tpcHBlZAorLS0gICAt IE5GQTogbWF0Y2hlZCAobGVuIG1pbi9tYXgvYXZnKSwgbWlzbWF0Y2hlZCAobGVuIG1pbi9tYXgv YXZnKQorLS0gICAtIFBhdHRlcm4gZGVwYXJzZSBmb3JtYXR0aW5nCistLSAgIC0gTXVsdGlwbGUg b3V0cHV0IGZvcm1hdHMgKHRleHQsIEpTT04sIFhNTCkKKy0tCistLSBUZXN0IENvdmVyYWdlOgor LS0gICBCYXNpYyBORkEgU3RhdGlzdGljcyBUZXN0cworLS0gICBTdGF0ZSBTdGF0aXN0aWNzIFRl c3RzCistLSAgIENvbnRleHQgU3RhdGlzdGljcyBUZXN0cworLS0gICBNYXRjaCBMZW5ndGggU3Rh dGlzdGljcyBUZXN0cworLS0gICBNaXNtYXRjaCBMZW5ndGggU3RhdGlzdGljcyBUZXN0cworLS0g ICBKU09OIEZvcm1hdCBUZXN0cworLS0gICBYTUwgRm9ybWF0IFRlc3RzCistLSAgIE11bHRpcGxl IFBhcnRpdGlvbnMgVGVzdHMKKy0tICAgRWRnZSBDYXNlcworLS0gICBDb21wbGV4IFBhdHRlcm4g VGVzdHMKKy0tICAgUmVhbC13b3JsZCBQYXR0ZXJuIEV4YW1wbGVzCistLSAgIFBlcmZvcm1hbmNl LW9yaWVudGVkIFRlc3RzCistLSAgIElOSVRJQUwgdnMgbm8gSU5JVElBTCBjb21wYXJpc29uCist LSAgIFF1YW50aWZpZXIgVmFyaWF0aW9ucworLS0gICBSZWdyZXNzaW9uIFRlc3RzIGZvciBTdGF0 aXN0aWNzIEFjY3VyYWN5CistLSAgIEFsdGVybmF0aW9uIFBhdHRlcm4gVGVzdHMKKy0tICAgR3Jv dXAgUGF0dGVybiBUZXN0cworLS0gICBXaW5kb3cgRnVuY3Rpb24gQ29tYmluYXRpb25zCistLSAg IERFRklORSBFeHByZXNzaW9uIFZhcmlhdGlvbnMKKy0tICAgTGFyZ2UgU2NhbGUgU3RhdGlzdGlj cyBWZXJpZmljYXRpb24KKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorCistLSBGaWx0ZXIgZnVuY3Rpb24gdG8gbm9ybWFsaXpl IFN0b3JhZ2UgbWVtb3J5IHZhbHVlcyBvbmx5IChub3QgTkZBIHN0YXRpc3RpY3MpLgorLS0gTkZB IHN0YXRpc3RpY3Mgc2hvdWxkIG5vdCBjaGFuZ2UgYmV0d2VlbiBwbGF0Zm9ybXM7IGlmIHRoZXkg ZG8sIGl0IGNvdWxkCistLSBpbmRpY2F0ZSBpc3N1ZXMgc3VjaCBhcyB1bmluaXRpYWxpemVkIG1l bW9yeSBhY2Nlc3MuCistLSBXb3JrcyBmb3IgdGV4dCwgSlNPTiwgYW5kIFhNTCBmb3JtYXRzLgor Y3JlYXRlIGZ1bmN0aW9uIHJwcl9leHBsYWluX2ZpbHRlcih0ZXh0KSByZXR1cm5zIHNldG9mIHRl eHQKK2xhbmd1YWdlIHBscGdzcWwgYXMKKyQkCitkZWNsYXJlCisgICAgbG4gdGV4dDsKK2JlZ2lu CisgICAgZm9yIGxuIGluIGV4ZWN1dGUgJDEKKyAgICBsb29wCisgICAgICAgIC0tIE5vcm1hbGl6 ZSBtZW1vcnkgc2l6ZSBpbiBTdG9yYWdlIGxpbmUgb25seSAocGxhdGZvcm0tZGVwZW5kZW50KQor ICAgICAgICAtLSBLZWVwIE5GQSBzdGF0aXN0aWNzIG51bWJlcnMgdW5jaGFuZ2VkICh0aGV5IGFy ZSB0ZXN0IGFzc2VydGlvbnMpCisKKyAgICAgICAgLS0gVGV4dCBmb3JtYXQ6ICJTdG9yYWdlOiBN ZW1vcnkgIE1heGltdW0gU3RvcmFnZTogMThrQiIKKyAgICAgICAgaWYgbG4gfiAnU3RvcmFnZTou Kk1heGltdW0gU3RvcmFnZTonIHRoZW4KKyAgICAgICAgICAgIGxuIDo9IHJlZ2V4cF9yZXBsYWNl KGxuLCAnXG1cZCtrQicsICdOa0InLCAnZycpOworICAgICAgICBlbmQgaWY7CisKKyAgICAgICAg LS0gSlNPTiBmb3JtYXQ6ICJNYXhpbXVtIFN0b3JhZ2UiOiAxNyAobnVtYmVyIGluIGtCIHVuaXRz KQorICAgICAgICBpZiBsbiB+ICciTWF4aW11bSBTdG9yYWdlIjonIHRoZW4KKyAgICAgICAgICAg IGxuIDo9IHJlZ2V4cF9yZXBsYWNlKGxuLCAnIk1heGltdW0gU3RvcmFnZSI6IFxkKycsICciTWF4 aW11bSBTdG9yYWdlIjogMCcsICdnJyk7CisgICAgICAgIGVuZCBpZjsKKworICAgICAgICAtLSBY TUwgZm9ybWF0OiA8TWF4aW11bS1TdG9yYWdlPjE3PC9NYXhpbXVtLVN0b3JhZ2U+IChudW1iZXIg aW4ga0IgdW5pdHMpCisgICAgICAgIGlmIGxuIH4gJzxNYXhpbXVtLVN0b3JhZ2U+JyB0aGVuCisg ICAgICAgICAgICBsbiA6PSByZWdleHBfcmVwbGFjZShsbiwgJzxNYXhpbXVtLVN0b3JhZ2U+XGQr PC9NYXhpbXVtLVN0b3JhZ2U+JywgJzxNYXhpbXVtLVN0b3JhZ2U+MDwvTWF4aW11bS1TdG9yYWdl PicsICdnJyk7CisgICAgICAgIGVuZCBpZjsKKworICAgICAgICByZXR1cm4gbmV4dCBsbjsKKyAg ICBlbmQgbG9vcDsKK2VuZDsKKyQkOworCistLSBTZXR1cDogQ3JlYXRlIHRlc3QgdGFibGVzCitD UkVBVEUgVEVNUCBUQUJMRSBuZmFfdGVzdCAoCisgICAgaWQgc2VyaWFsLAorICAgIHYgaW50LAor ICAgIGNhdCBjaGFyKDEpCispOworCistLSBJbnNlcnQgdGVzdCBkYXRhOiAxMDAgcm93cyB3aXRo IHByZWRpY3RhYmxlIHBhdHRlcm4KK0lOU0VSVCBJTlRPIG5mYV90ZXN0ICh2LCBjYXQpCitTRUxF Q1QgaSwKKyAgICAgICBDQVNFCisgICAgICAgICAgIFdIRU4gaSAlIDUgPSAxIFRIRU4gJ0EnCisg ICAgICAgICAgIFdIRU4gaSAlIDUgPSAyIFRIRU4gJ0InCisgICAgICAgICAgIFdIRU4gaSAlIDUg PSAzIFRIRU4gJ0MnCisgICAgICAgICAgIFdIRU4gaSAlIDUgPSA0IFRIRU4gJ0QnCisgICAgICAg ICAgIEVMU0UgJ0UnCisgICAgICAgRU5ECitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIGk7 CisKKy0tIEFkZGl0aW9uYWwgdGVzdCB0YWJsZSB3aXRoIG1vcmUgY29tcGxleCBwYXR0ZXJucwor Q1JFQVRFIFRFTVAgVEFCTEUgbmZhX2NvbXBsZXggKAorICAgIGlkIHNlcmlhbCwKKyAgICBwcmlj ZSBpbnQsCisgICAgdHJlbmQgY2hhcigxKSAgLS0gVT11cCwgRD1kb3duLCBTPXN0YWJsZQorKTsK KworSU5TRVJUIElOVE8gbmZhX2NvbXBsZXggKHByaWNlLCB0cmVuZCkKK1ZBTFVFUworICAgICgx MDAsICdTJyksICgxMDUsICdVJyksICgxMTAsICdVJyksICgxMDgsICdEJyksICgxMTIsICdVJyks CisgICAgKDExNSwgJ1UnKSwgKDExMywgJ0QnKSwgKDExMSwgJ0QnKSwgKDEwOSwgJ0QnKSwgKDEx MCwgJ1UnKSwKKyAgICAoMTIwLCAnVScpLCAoMTI1LCAnVScpLCAoMTMwLCAnVScpLCAoMTI4LCAn RCcpLCAoMTI2LCAnRCcpLAorICAgICgxMjQsICdEJyksICgxMjIsICdEJyksICgxMjAsICdEJyks ICgxMTgsICdEJyksICgxMTksICdVJyksCisgICAgKDEyMSwgJ1UnKSwgKDEyMywgJ1UnKSwgKDEy NSwgJ1UnKSwgKDEyNywgJ1UnKSwgKDEyOSwgJ1UnKSwKKyAgICAoMTMxLCAnVScpLCAoMTMzLCAn VScpLCAoMTMwLCAnRCcpLCAoMTI3LCAnRCcpLCAoMTI0LCAnRCcpOworCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEJh c2ljIE5GQSBTdGF0aXN0aWNzIFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gU2ltcGxlIHBhdHRlcm4gLSBz aG91bGQgc2hvdyBiYXNpYyBzdGF0aXN0aWNzCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIG5mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklO RSBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQgPSAnQicKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcign CitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBT VU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gbmZhX3Rlc3QKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChB IEIpCisgICAgREVGSU5FIEEgQVMgY2F0ID0gJydBJycsIEIgQVMgY2F0ID0gJydCJycKKyknKTsK K0RST1AgVklFVyBycHJfdjsKKworLS0gUGF0dGVybiB3aXRoIG5vIG1hdGNoZXMgLSAwIG1hdGNo ZWQKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOIChYIFkgWikKKyAgICBERUZJTkUgWCBBUyBjYXQgPSAnWCcsIFkgQVMg Y2F0ID0gJ1knLCBaIEFTIGNhdCA9ICdaJworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExB SU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkg T0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBuZmFfdGVzdAorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKFggWSBaKQor ICAgIERFRklORSBYIEFTIGNhdCA9ICcnWCcnLCBZIEFTIGNhdCA9ICcnWScnLCBaIEFTIGNhdCA9 ICcnWicnCispOycpOworRFJPUCBWSUVXIHJwcl92OworCistLSBQYXR0ZXJuIG1hdGNoaW5nIGV2 ZXJ5IHJvdyAtIGhpZ2ggbWF0Y2ggY291bnQKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChSKQorICAgIERFRklORSBS IEFTIFRSVUUKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChSKQorICAgIERFRklORSBSIEFTIFRSVUUK Kyk7Jyk7CitEUk9QIFZJRVcgcnByX3Y7CisKKy0tIFJlZ3Jlc3Npb24gdGVzdDogU3BhY2UgYmVm b3JlIHBhcmVudGhlc2lzIGluIHBhdHRlcm4gZGVwYXJzZQorLS0gVmVyaWZpZXMgdGhhdCAiQSAo QiB8IEMpIiBjb3JyZWN0bHkgb3V0cHV0cyBhcyAiYSAoYiB8IGMpIiB3aXRoIHNwYWNlCitDUkVB VEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgKEIg fCBDKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYg JSAzID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBIChCIHwgQykpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBC IEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7Jyk7CitEUk9QIFZJRVcgcnByX3Y7CisK Ky0tIFJlZ3Jlc3Npb24gdGVzdDogU2VxdWVudGlhbCBhbHRlcm5hdGlvbnMgYXQgc2FtZSBkZXB0 aAorLS0gVmVyaWZpZXMgdGhhdCAiKChCIHwgQykgKEQgfCBFKSkiIGNvcnJlY3RseSBvdXRwdXRz IGFzICIoYiB8IGMpIChkIHwgZSkiCistLSBQcmV2aW91c2x5IGZhaWxlZCBkdWUgdG8gbWlzc2lu ZyBwYXJlbnRoZXNlcyBvbiBBTFQgZGVwdGggZGVjcmVhc2UKK0NSRUFURSBURU1QIFZJRVcgcnBy X3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSAoKEIgfCBDKSAoRCB8IEUpKSop CisgICAgREVGSU5FIEEgQVMgdiAlIDUgPSAxLCBCIEFTIHYgJSA1ID0gMiwgQyBBUyB2ICUgNSA9 IDMsIEQgQVMgdiAlIDUgPSA0LCBFIEFTIHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVy KCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYs IFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBICgoQiB8IEMpIChE IHwgRSkpKikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA9IDEsIEIgQVMgdiAlIDUgPSAyLCBDIEFT IHYgJSA1ID0gMywgRCBBUyB2ICUgNSA9IDQsIEUgQVMgdiAlIDUgPSAwCispOycpOworRFJPUCBW SUVXIHJwcl92OworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIFN0YXRlIFN0YXRpc3RpY3MgVGVzdHMgKHBlYWssIHRv dGFsLCBtZXJnZWQpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKworLS0gU2ltcGxlIHF1YW50aWZpZXIgcGF0dGVybiAtIEEr IHdpdGggc2hvcnQgbWF0Y2hlcyAobm8gbWVyZ2luZykKK0NSRUFURSBURU1QIFZJRVcgcnByX3Yg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxCispOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFp bl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElN SU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHYgJSAy ID0gMQorKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gQWx0ZXJuYXRpb24gcGF0dGVybiAt IG11bHRpcGxlIHN0YXRlIGJyYW5jaGVzCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIG5mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCIHwgQykgKEQgfCBF KSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBjYXQgPSAnQScsIEIgQVMgY2F0ID0gJ0InLCBD IEFTIGNhdCA9ICdDJywKKyAgICAgICAgRCBBUyBjYXQgPSAnRCcsIEUgQVMgY2F0ID0gJ0UnCisp OworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVD VCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENP U1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIG5mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCIHwgQykgKEQgfCBFKSkKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyBjYXQgPSAnJ0EnJywgQiBBUyBjYXQgPSAnJ0InJywgQyBBUyBjYXQgPSAnJ0Mn JywKKyAgICAgICAgRCBBUyBjYXQgPSAnJ0QnJywgRSBBUyBjYXQgPSAnJ0UnJworKTsnKTsKK0RS T1AgVklFVyBycHJfdjsKKworLS0gQ29tcGxleCBwYXR0ZXJuIHdpdGggaGlnaCBzdGF0ZSBjb3Vu dAorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQiogQyspCisgICAgREVG SU5FCisgICAgICAgIEEgQVMgdiAlIDMgPSAxLAorICAgICAgICBCIEFTIHYgJSAzID0gMiwKKyAg ICAgICAgQyBBUyB2ICUgMyA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKEErIEIqIEMrKQorICAgIERFRklORQorICAgICAgICBBIEFTIHYgJSAzID0gMSwK KyAgICAgICAgQiBBUyB2ICUgMyA9IDIsCisgICAgICAgIEMgQVMgdiAlIDMgPSAwCispOycpOwor RFJPUCBWSUVXIHJwcl92OworCistLSBHcm91cGVkIHBhdHRlcm4gd2l0aCBxdWFudGlmaWVyIC0g c3RhdGUgbWVyZ2luZworQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKSsp CisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKTsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKSspCisgICAgREVGSU5FIEEgQVMg diAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0g U3RhdGUgZXhwbG9zaW9uIHBhdHRlcm4gLSBtYW55IGFsdGVybmF0aW9ucworLS0gUGF0dGVybiAo QXxCKShBfEIpKEF8QikoQXxCKSBjYW4gY3JlYXRlIG1hbnkgcGFyYWxsZWwgc3RhdGVzCitDUkVB VEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAo QSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikpCisgICAgREVGSU5FIEEgQVMg diAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExB SU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkg T0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChB IHwgQikgKEEgfCBCKSAoQSB8IEIpKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2 ICUgMiA9IDAKKyk7Jyk7CitEUk9QIFZJRVcgcnByX3Y7CisKKy0tIENvbnNlY3V0aXZlIEFMVCBt ZXJnZSBmb2xsb3dlZCBieSBkaWZmZXJlbnQgQUxUCistLSBUZXN0cyBtZXJnZUNvbnNlY3V0aXZl QWx0cyBmbHVzaCBvbiBBTFQgY2hhbmdlOiAoQXxCKXsyfSAoQ3xEKQorQ1JFQVRFIFRFTVAgVklF VyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIChBIHwgQikgKEMgfCBEKSkKKyAgICBERUZJTkUg QSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUg NCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJT IE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBC KSAoQSB8IEIpIChDIHwgRCkpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0 ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOycpOworRFJPUCBWSUVXIHJw cl92OworCistLSBDb25zZWN1dGl2ZSBBTFQgbWVyZ2UgZm9sbG93ZWQgYnkgbm9uLUFMVCBlbGVt ZW50CistLSBUZXN0cyBtZXJnZUNvbnNlY3V0aXZlQWx0cyBmbHVzaCBvbiBub24tQUxUOiAoQXxC KXsyfSBjCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBC KSBDKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMCwgQiBBUyB2ICUgMyA9IDEsIEMgQVMgdiAl IDMgPSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJO JzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwg QikgKEEgfCBCKSBDKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMCwgQiBBUyB2ICUgMyA9IDEs IEMgQVMgdiAlIDMgPSAyCispOycpOworRFJPUCBWSUVXIHJwcl92OworCistLSBBTFQgcHJlZml4 L3N1ZmZpeCBhYnNvcmJlZCBpbnRvIEdST1VQOiAoQXxCKSAoQXxCKSsgKEF8QikgLT4gKEF8Qil7 Myx9CitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSsg KEEgfCBCKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDAsIEIgQVMgdiAlIDIgPSAxCispOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSsg KEEgfCBCKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDAsIEIgQVMgdiAlIDIgPSAxCispOycp OworRFJPUCBWSUVXIHJwcl92OworCistLSBIaWdoIHN0YXRlIG1lcmdpbmcgLSBhbHRlcm5hdGlv biB3aXRoIHBsdXMgcXVhbnRpZmllcgorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoKEEgfCBCIHwgQykrIEQpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAxLCBCIEFTIHYgJSA0 ID0gMiwgQyBBUyB2ICUgNCA9IDMsIEQgQVMgdiAlIDQgPSAwCispOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0 ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9G RiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIgfCBDKSsgRCkKKyAgICBERUZJTkUgQSBB UyB2ICUgNCA9IDEsIEIgQVMgdiAlIDQgPSAyLCBDIEFTIHYgJSA0ID0gMywgRCBBUyB2ICUgNCA9 IDAKKyk7Jyk7CitEUk9QIFZJRVcgcnByX3Y7CisKKy0tIE5lc3RlZCBxdWFudGlmaWVycyBjYXVz aW5nIHN0YXRlIGdyb3d0aAorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKCgo QSB8IEIpKykrKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIKKyk7 CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNU IHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09T VFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoKEEgfCBCKSspKykK KyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyCispOycpOworRFJPUCBW SUVXIHJwcl92OworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIENvbnRleHQgU3RhdGlzdGljcyBUZXN0cyAocGVhaywg dG90YWwsIGFic29yYmVkLCBza2lwcGVkKQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIENvbnRleHQgYWJzb3JwdGlv biB3aXRoIHVuYm91bmRlZCBxdWFudGlmaWVyIGF0IHN0YXJ0CitDUkVBVEUgVEVNUCBWSUVXIHJw cl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1 MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2 ICUgNSA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsg QikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsnKTsKK0RS T1AgVklFVyBycHJfdjsKKworLS0gTm8gYWJzb3JwdGlvbiAtIGJvdW5kZWQgcXVhbnRpZmllcgor Q1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBezIsNH0gQikKKyAgICBERUZJTkUg QSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBezIsNH0gQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAw LCBCIEFTIHYgJSA1ID0gMAorKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gQ29udGV4dHMg c2tpcHBlZCBieSBTS0lQIFBBU1QgTEFTVCBST1cKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKEEgQiBDKQorICAgIERFRklORSBBIEFTIHYgJSAxMCA9IDEsIEIgQVMgdiAlIDEw ID0gMiwgQyBBUyB2ICUgMTAgPSAzCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBIEIgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPSAxLCBCIEFTIHYgJSAx MCA9IDIsIEMgQVMgdiAlIDEwID0gMworKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gSGln aCBjb250ZXh0IGFic29ycHRpb24gLSB1bmJvdW5kZWQgZ3JvdXAKK0NSRUFURSBURU1QIFZJRVcg cnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKChBIEIpKyBDKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwg QiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwor RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VN TUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOICgoQSBCKSsgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEs IEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAorKTsnKTsKK0RST1AgVklFVyBycHJfdjsK KworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBNYXRjaCBMZW5ndGggU3RhdGlzdGljcyBUZXN0cworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0t IEZpeGVkIGxlbmd0aCBtYXRjaGVzIC0gYWxsIHNhbWUgbGVuZ3RoCitDUkVBVEUgVEVNUCBWSUVX IHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIG5mYV90ZXN0CitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBC IEMgRCBFKQorICAgIERFRklORQorICAgICAgICBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQgPSAn QicsIEMgQVMgY2F0ID0gJ0MnLAorICAgICAgICBEIEFTIGNhdCA9ICdEJywgRSBBUyBjYXQgPSAn RScKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIgQyBEIEUpCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgY2F0ID0gJydBJycsIEIgQVMgY2F0ID0gJydCJycsIEMgQVMgY2F0ID0gJydDJycsCisg ICAgICAgIEQgQVMgY2F0ID0gJydEJycsIEUgQVMgY2F0ID0gJydFJycKKyk7Jyk7CitEUk9QIFZJ RVcgcnByX3Y7CisKKy0tIFZhcmlhYmxlIGxlbmd0aCBtYXRjaGVzIC0gbWluL21heC9hdmcgZGlm ZmVyCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklO RSBBIEFTIHYgJSAxMCA8PiAwLCBCIEFTIHYgJSAxMCA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRl cignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwIDw+ IDAsIEIgQVMgdiAlIDEwID0gMAorKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gVmVyeSBs b25nIG1hdGNoZXMKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisg ICAgREVGSU5FIEEgQVMgdiA8PSAxOTUsIEIgQVMgdiA+IDE5NQorKTsKK1NFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicp KSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmls dGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBP RkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMjAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2IDw9IDE5 NSwgQiBBUyB2ID4gMTk1CispOycpOworRFJPUCBWSUVXIHJwcl92OworCistLSBNaXggb2Ygc2hv cnQgYW5kIGxvbmcgbWF0Y2hlcworQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAodiAlIDIwIDw+IDApIEFORCAodiAlIDIw IDw9IDEwIE9SIHYgJSAyMCA+IDE1KSwKKyAgICAgICAgQiBBUyB2ICUgMjAgPSAwCispOworU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf dicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJf ZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQor ICAgICAgICBBIEFTICh2ICUgMjAgPD4gMCkgQU5EICh2ICUgMjAgPD0gMTAgT1IgdiAlIDIwID4g MTUpLAorICAgICAgICBCIEFTIHYgJSAyMCA9IDAKKyk7Jyk7CitEUk9QIFZJRVcgcnByX3Y7CisK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gTWlzbWF0Y2ggTGVuZ3RoIFN0YXRpc3RpY3MgVGVzdHMKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCist LSBQYXR0ZXJuIHRoYXQgY2F1c2VzIG1pc21hdGNoZXMgd2l0aCBsZW5ndGggPiAxCistLSBNaXNt YXRjaCBoYXBwZW5zIHdoZW4gcGFydGlhbCBtYXRjaCBmYWlscyBhZnRlciBwcm9jZXNzaW5nIG11 bHRpcGxlIHJvd3MKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gKAorICAgIFNFTEVDVCB2LAorICAgICAgICAgICBDQVNFIFdIRU4gdiAlIDEw IElOICgxLDIsMykgVEhFTiAnQScKKyAgICAgICAgICAgICAgICBXSEVOIHYgJSAxMCBJTiAoNCw1 KSBUSEVOICdCJworICAgICAgICAgICAgICAgIFdIRU4gdiAlIDEwID0gNiBUSEVOICdDJworICAg ICAgICAgICAgICAgIEVMU0UgJ1gnIEVORCBBUyBjYXQKKyAgICBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAxMDApIEFTIHModikKKykgdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIrIEMpCisgICAgREVGSU5FIEEgQVMgY2F0 ID0gJ0EnLCBCIEFTIGNhdCA9ICdCJywgQyBBUyBjYXQgPSAnQycKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2Zp bHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcg T0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gKAorICAgIFNF TEVDVCB2LAorICAgICAgICAgICBDQVNFIFdIRU4gdiAlIDEwIElOICgxLDIsMykgVEhFTiAnJ0En JworICAgICAgICAgICAgICAgIFdIRU4gdiAlIDEwIElOICg0LDUpIFRIRU4gJydCJycKKyAgICAg ICAgICAgICAgICBXSEVOIHYgJSAxMCA9IDYgVEhFTiAnJ0MnJworICAgICAgICAgICAgICAgIEVM U0UgJydYJycgRU5EIEFTIGNhdAorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMg cyh2KQorKSB0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoQSsgQisgQykKKyAgICBERUZJTkUgQSBBUyBjYXQgPSAnJ0EnJywgQiBB UyBjYXQgPSAnJ0InJywgQyBBUyBjYXQgPSAnJ0MnJworKTsnKTsKK0RST1AgVklFVyBycHJfdjsK KworLS0gTG9uZyBwYXJ0aWFsIG1hdGNoZXMgdGhhdCBmYWlsCitDUkVBVEUgVEVNUCBWSUVXIHJw cl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NICgKKyAgICBTRUxFQ1QgaSBBUyB2 LAorICAgICAgICAgICBDQVNFCisgICAgICAgICAgICAgICBXSEVOIGkgPD0gMjAgVEhFTiAnQScK KyAgICAgICAgICAgICAgIFdIRU4gaSA8PSAyNSBUSEVOICdCJworICAgICAgICAgICAgICAgV0hF TiBpID0gMjYgVEhFTiAnWCcgIC0tIGJyZWFrcyB0aGUgcGF0dGVybgorICAgICAgICAgICAgICAg V0hFTiBpIDw9IDUwIFRIRU4gJ0EnCisgICAgICAgICAgICAgICBXSEVOIGkgPD0gNTUgVEhFTiAn QicKKyAgICAgICAgICAgICAgIFdIRU4gaSA9IDU2IFRIRU4gJ0MnICAtLSBjb21wbGV0ZXMgcGF0 dGVybgorICAgICAgICAgICAgICAgRUxTRSAnWScKKyAgICAgICAgICAgRU5EIEFTIGNhdAorICAg IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBpCispIHQKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKyBDKQorICAgIERF RklORSBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQgPSAnQicsIEMgQVMgY2F0ID0gJ0MnCispOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NICgKKyAgICBTRUxFQ1QgaSBBUyB2LAorICAgICAgICAgICBDQVNFCisgICAgICAgICAgICAg ICBXSEVOIGkgPD0gMjAgVEhFTiAnJ0EnJworICAgICAgICAgICAgICAgV0hFTiBpIDw9IDI1IFRI RU4gJydCJycKKyAgICAgICAgICAgICAgIFdIRU4gaSA9IDI2IFRIRU4gJydYJycgIC0tIGJyZWFr cyB0aGUgcGF0dGVybgorICAgICAgICAgICAgICAgV0hFTiBpIDw9IDUwIFRIRU4gJydBJycKKyAg ICAgICAgICAgICAgIFdIRU4gaSA8PSA1NSBUSEVOICcnQicnCisgICAgICAgICAgICAgICBXSEVO IGkgPSA1NiBUSEVOICcnQycnICAtLSBjb21wbGV0ZXMgcGF0dGVybgorICAgICAgICAgICAgICAg RUxTRSAnJ1knJworICAgICAgICAgICBFTkQgQVMgY2F0CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNjApIGkKKykgdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIrIEMpCisgICAgREVGSU5FIEEgQVMgY2F0ID0gJydB JycsIEIgQVMgY2F0ID0gJydCJycsIEMgQVMgY2F0ID0gJydDJycKKyk7Jyk7CitEUk9QIFZJRVcg cnByX3Y7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gSlNPTiBGb3JtYXQgVGVzdHMKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCistLSBKU09O IGZvcm1hdCBvdXRwdXQgd2l0aCBhbGwgc3RhdGlzdGljcworQ1JFQVRFIFRFTVAgVklFVyBycHJf diBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBKyBCKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAl IDMgPSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJO JzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYsIEZPUk1BVCBKU09OKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBKyBCKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAy CispJyk7CitEUk9QIFZJRVcgcnByX3Y7CisKKy0tIEpTT04gZm9ybWF0IHdpdGggbWF0Y2ggbGVu Z3RoIHN0YXRpc3RpY3MKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIp CisgICAgREVGSU5FIEEgQVMgdiAlIDEwIDw+IDAsIEIgQVMgdiAlIDEwID0gMAorKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3Yn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGLCBGT1JNQVQgSlNPTikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisg ICAgREVGSU5FIEEgQVMgdiAlIDEwIDw+IDAsIEIgQVMgdiAlIDEwID0gMAorKScpOworRFJPUCBW SUVXIHJwcl92OworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIFhNTCBGb3JtYXQgVGVzdHMKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCistLSBY TUwgZm9ybWF0IG91dHB1dAorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIp CisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKTsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGLCBGT1JNQVQgWE1MKQorU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVG SU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKScpOworRFJPUCBWSUVXIHJwcl92 OworCistLSBKU09OIGZvcm1hdCB3aXRoIG1pc21hdGNoIHN0YXRpc3RpY3MKKy0tIFBhdHRlcm4g QSBCIEMgZXhwZWN0cyAxLDIsMyBidXQgZ2V0cyAxLDIsNCB0d2ljZSBjYXVzaW5nIG1pc21hdGNo ZXMKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gKFZBTFVFUyAoMSksKDIpLCg0KSwgKDEpLCgyKSwoNCksICgxKSwoMiksKDMpKSBBUyB0KHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSBCIEMpCisgICAgREVGSU5FIEEgQVMgdiA9IDEsIEIgQVMgdiA9IDIsIEMgQVMgdiA9 IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRiwgRk9STUFUIEpTT04pCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIChWQUxVRVMgKDEpLCgyKSwoNCksICgxKSwoMiksKDQp LCAoMSksKDIpLCgzKSkgQVMgdCh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDKQorICAgIERFRklORSBBIEFTIHYgPSAx LCBCIEFTIHYgPSAyLCBDIEFTIHYgPSAzCispJyk7CitEUk9QIFZJRVcgcnByX3Y7CisKKy0tIEpT T04gZm9ybWF0IHdpdGggc2tpcHBlZCBjb250ZXh0IHN0YXRpc3RpY3MKKy0tIEFsdGVybmF0aW9u IHBhdHRlcm4gd2l0aCBTS0lQIFBBU1QgTEFTVCBST1cgY2F1c2VzIG1hbnkgY29udGV4dHMgdG8g YmUgc2tpcHBlZAorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSAo QSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpKQor ICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7CitTRUxFQ1QgbGlu ZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWlu X2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1J TkcgT0ZGLCBTVU1NQVJZIE9GRiwgRk9STUFUIEpTT04pCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIChBIHwg QikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikpCisgICAg REVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKScpOworRFJPUCBWSUVXIHJw cl92OworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIE11bHRpcGxlIFBhcnRpdGlvbnMgVGVzdHMKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCist LSBTdGF0aXN0aWNzIGFjcm9zcyBtdWx0aXBsZSBwYXJ0aXRpb25zCitDUkVBVEUgVEVNUCBWSUVX IHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NICgKKyAgICBTRUxFQ1QgcCwg dgorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIHAsCisgICAgICAgICBnZW5lcmF0ZV9z ZXJpZXMoMSwgMzApIHYKKykgdAorV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBwCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBE RUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicp KSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmls dGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBP RkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSAoCisgICAgU0VM RUNUIHAsIHYKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBwLAorICAgICAgICAgZ2Vu ZXJhdGVfc2VyaWVzKDEsIDMwKSB2CispIHQKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04g QlkgcAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIp CisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7Jyk7CitEUk9Q IFZJRVcgcnByX3Y7CisKKy0tIERpZmZlcmVudCBwYXR0ZXJuIGJlaGF2aW9yIHBlciBwYXJ0aXRp b24KK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gKAorICAgIFNFTEVDVAorICAgICAgICBDQVNFIFdIRU4gdiA8PSAyNSBUSEVOIDEgRUxTRSAy IEVORCBBUyBwLAorICAgICAgICB2ICUgMTAgQVMgdmFsCisgICAgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNTApIHYKKykgdAorV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBwCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJ TkUgQSBBUyB2YWwgPCA1LCBCIEFTIHZhbCA+PSA1CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwor RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VN TUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NICgKKyAgICBTRUxFQ1QKKyAg ICAgICAgQ0FTRSBXSEVOIHYgPD0gMjUgVEhFTiAxIEVMU0UgMiBFTkQgQVMgcCwKKyAgICAgICAg diAlIDEwIEFTIHZhbAorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSB2CispIHQKK1dJ TkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgcAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdmFsIDwgNSwgQiBB UyB2YWwgPj0gNQorKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBFZGdlIENh c2VzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKworLS0gRW1wdHkgcmVzdWx0IHNldAorQ1JFQVRFIFRFTVAgVklFVyBycHJf diBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUgQSBBUyB2ID0gMSwgQiBBUyB2ID0gMgorKTsK K1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1Qg cnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NU UyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUg QSBBUyB2ID0gMSwgQiBBUyB2ID0gMgorKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gU2lu Z2xlIHJvdworQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMSkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5F IEEgQVMgVFJVRQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMSkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEp CisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gUGF0 dGVybiBsb25nZXIgdGhhbiBkYXRhCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1KSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QSBCIEMgRCBFIEYgRyBIIEkgSikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2ID0gMSwgQiBB UyB2ID0gMiwgQyBBUyB2ID0gMywgRCBBUyB2ID0gNCwgRSBBUyB2ID0gNSwKKyAgICAgICAgRiBB UyB2ID0gNiwgRyBBUyB2ID0gNywgSCBBUyB2ID0gOCwgSSBBUyB2ID0gOSwgSiBBUyB2ID0gMTAK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VM RUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwg Q09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIgQyBEIEUgRiBH IEggSSBKKQorICAgIERFRklORQorICAgICAgICBBIEFTIHYgPSAxLCBCIEFTIHYgPSAyLCBDIEFT IHYgPSAzLCBEIEFTIHYgPSA0LCBFIEFTIHYgPSA1LAorICAgICAgICBGIEFTIHYgPSA2LCBHIEFT IHYgPSA3LCBIIEFTIHYgPSA4LCBJIEFTIHYgPSA5LCBKIEFTIHYgPSAxMAorKTsnKTsKK0RST1Ag VklFVyBycHJfdjsKKworLS0gQWxsIHJvd3MgbWF0Y2ggYXMgc2luZ2xlIG1hdGNoCitDUkVBVEUg VEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFRSVUUKKyk7 CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNU IHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09T VFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5F IEEgQVMgVFJVRQorKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBDb21wbGV4 IFBhdHRlcm4gVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorCistLSBOZXN0ZWQgZ3JvdXBzCitDUkVBVEUgVEVNUCBW SUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKCgoQSBCKSBDKSspCisgICAgREVGSU5FIEEgQVMgdiAlIDMg PSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRl cignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoKChBIEIpIEMpKykKKyAgICBERUZJTkUgQSBBUyB2ICUg MyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAorKTsnKTsKK0RST1AgVklFVyBy cHJfdjsKKworLS0gTXVsdGlwbGUgYWx0ZXJuYXRpb25zCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92 IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIG5mYV90ZXN0CitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSAo QyB8IEQgfCBFKSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBjYXQgPSAnQScsIEIgQVMgY2F0 ID0gJ0InLCBDIEFTIGNhdCA9ICdDJywKKyAgICAgICAgRCBBUyBjYXQgPSAnRCcsIEUgQVMgY2F0 ID0gJ0UnCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJO JzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIG5mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSAoQyB8IEQgfCBFKSkKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyBjYXQgPSAnJ0EnJywgQiBBUyBjYXQgPSAnJ0InJywgQyBBUyBj YXQgPSAnJ0MnJywKKyAgICAgICAgRCBBUyBjYXQgPSAnJ0QnJywgRSBBUyBjYXQgPSAnJ0UnJwor KTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gT3B0aW9uYWwgZWxlbWVudHMKK0NSRUFURSBU RU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCPyBDKQorICAgIERFRklORSBBIEFTIHYgJSA0 ID0gMSwgQiBBUyB2ICUgNCA9IDIsIEMgQVMgdiAlIDQgPSAzCispOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0 ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9G RiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQj8gQykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9 IDEsIEIgQVMgdiAlIDQgPSAyLCBDIEFTIHYgJSA0ID0gMworKTsnKTsKK0RST1AgVklFVyBycHJf djsKKworLS0gQm91bmRlZCBxdWFudGlmaWVycworQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQXsyLDV9IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwIDw+IDAsIEIgQVMgdiAl IDEwID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXsy LDV9IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwIDw+IDAsIEIgQVMgdiAlIDEwID0gMAorKTsn KTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gU3RhciBxdWFudGlmaWVyCitDUkVBVEUgVEVNUCBW SUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiogQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPSAx LCBCIEFTIHYgJSAxMCBJTiAoMiwzLDQsNSw2LDcsOCksIEMgQVMgdiAlIDEwID0gOQorKTsKK1NF TEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnBy X3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnBy X2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIqIEMpCisgICAgREVGSU5F IEEgQVMgdiAlIDEwID0gMSwgQiBBUyB2ICUgMTAgSU4gKDIsMyw0LDUsNiw3LDgpLCBDIEFTIHYg JSAxMCA9IDkKKyk7Jyk7CitEUk9QIFZJRVcgcnByX3Y7CisKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUmVhbC13b3Js ZCBQYXR0ZXJuIEV4YW1wbGVzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gU3RvY2sgcHJpY2UgcGF0dGVybiAtIFYt c2hhcGUgKGRvd24gdGhlbiB1cCkKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gbmZhX2NvbXBsZXgKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChEKyBVKykKKyAgICBERUZJTkUg RCBBUyB0cmVuZCA9ICdEJywgVSBBUyB0cmVuZCA9ICdVJworKTsKK1NFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVy KCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYs IFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBuZmFfY29tcGxleAor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKEQrIFUrKQorICAgIERFRklORSBEIEFTIHRyZW5kID0gJydEJycsIFUgQVMgdHJlbmQgPSAn J1UnJworKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gU3RvY2sgcHJpY2UgcGF0dGVybiAt IHBlYWsgKHVwLCBzdGFibGUsIGRvd24pCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIG5mYV9jb21wbGV4CitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoVSsgUyogRCspCisgICAg REVGSU5FIFUgQVMgdHJlbmQgPSAnVScsIFMgQVMgdHJlbmQgPSAnUycsIEQgQVMgdHJlbmQgPSAn RCcKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gbmZhX2NvbXBsZXgKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChVKyBTKiBEKykKKyAgICBERUZJTkUgVSBBUyB0 cmVuZCA9ICcnVScnLCBTIEFTIHRyZW5kID0gJydTJycsIEQgQVMgdHJlbmQgPSAnJ0QnJworKTsn KTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gQ29uc2VjdXRpdmUgaW5jcmVhc2luZyB2YWx1ZXMg KHVzaW5nIFBSRVYpCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7Myx9KQor ICAgIERFRklORSBBIEFTIHYgPiBQUkVWKHYpIE9SIFBSRVYodikgSVMgTlVMTAorKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3Yn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBezMsfSkKKyAgICBERUZJTkUgQSBB UyB2ID4gUFJFVih2KSBPUiBQUkVWKHYpIElTIE5VTEwKKyk7Jyk7CitEUk9QIFZJRVcgcnByX3Y7 CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gUGVyZm9ybWFuY2Utb3JpZW50ZWQgVGVzdHMKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCistLSBM YXJnZSBkYXRhc2V0IHdpdGggc2ltcGxlIHBhdHRlcm4KK0NSRUFURSBURU1QIFZJRVcgcnByX3Yg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAy ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMg T0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQikK KyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOycpOworRFJPUCBW SUVXIHJwcl92OworCistLSBMYXJnZSBkYXRhc2V0IHdpdGggYWJzb3JwdGlvbgorQ1JFQVRFIFRF TVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMTAwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDEw MCA8PiAwLCBCIEFTIHYgJSAxMDAgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAwIDw+IDAsIEIgQVMg diAlIDEwMCA9IDAKKyk7Jyk7CitEUk9QIFZJRVcgcnByX3Y7CisKKy0tIEhpZ2ggc3RhdGUgbWVy Z2UgcmF0aW8KK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikrIEMp CisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9 IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikr IEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUg MyA9IDAKKyk7Jyk7CitEUk9QIFZJRVcgcnByX3Y7CisKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gSU5JVElBTCB2cyBu byBJTklUSUFMIGNvbXBhcmlzb24KKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCistLSBXaXRoIElOSVRJQUwga2V5d29yZAor Q1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSsgQikKKyAg ICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5f ZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlO RyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJ TkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsnKTsKK0RST1AgVklFVyBycHJf djsKKworLS0gV2l0aG91dCBJTklUSUFMIGtleXdvcmQgKHNhbWUgYmVoYXZpb3IgY3VycmVudGx5 KQorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBB IEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwor RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VN TUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBB UyB2ICUgNSA9IDAKKyk7Jyk7CitEUk9QIFZJRVcgcnByX3Y7CisKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUXVhbnRp ZmllciBWYXJpYXRpb25zCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gUGx1cyBxdWFudGlmaWVyCitDUkVBVEUgVEVN UCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHYgJSA0IDw+IDAK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VM RUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwg Q09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgdiAlIDQgPD4gMAorKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gU3RhciBx dWFudGlmaWVyICh6ZXJvIG9yIG1vcmUpCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKEEqIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgSU4gKDEsIDIpLCBCIEFTIHYgJSA0ID0g MworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitT RUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZG LCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKiBCKQorICAg IERFRklORSBBIEFTIHYgJSA0IElOICgxLCAyKSwgQiBBUyB2ICUgNCA9IDMKKyk7Jyk7CitEUk9Q IFZJRVcgcnByX3Y7CisKKy0tIFF1ZXN0aW9uIG1hcmsgKHplcm8gb3Igb25lKQorQ1JFQVRFIFRF TVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBPyBCIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDQg PSAxLCBCIEFTIHYgJSA0ID0gMiwgQyBBUyB2ICUgNCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRl cignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoQT8gQiBDKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0g MSwgQiBBUyB2ICUgNCA9IDIsIEMgQVMgdiAlIDQgPSAzCispOycpOworRFJPUCBWSUVXIHJwcl92 OworCistLSBFeGFjdCBjb3VudCB7bn0KK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQXszfSBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCisp OworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVD VCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENP U1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7M30gQikKKyAgICBE RUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsnKTsKK0RST1AgVklFVyBy cHJfdjsKKworLS0gUmFuZ2Uge24sbX0KK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQXsyLDR9IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VM RUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwg Q09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXsyLDR9IEIpCisg ICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7Jyk7CitEUk9QIFZJ RVcgcnByX3Y7CisKKy0tIEF0IGxlYXN0IHtuLH0KK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQXszLH0gQikKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPD4gMCwgQiBBUyB2ICUg MTAgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJO JzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7Myx9 IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwIDw+IDAsIEIgQVMgdiAlIDEwID0gMAorKTsnKTsK K0RST1AgVklFVyBycHJfdjsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBSZWdyZXNzaW9uIFRlc3RzIGZvciBTdGF0 aXN0aWNzIEFjY3VyYWN5CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gVmVyaWZ5IHN0YXRlIGNvdW50IGFjY3VyYWN5 CistLSBQYXR0ZXJuIEErIEIgd2l0aCAyMCByb3dzIHNob3VsZCBzaG93IHByZWRpY3RhYmxlIHN0 YXRlIGJlaGF2aW9yCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisg ICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7CitTRUxFQ1QgbGlu ZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWlu X2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1J TkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUg NSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gVmVy aWZ5IGNvbnRleHQgY291bnQgd2l0aCBrbm93biBhYnNvcnB0aW9uCitDUkVBVEUgVEVNUCBWSUVX IHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEErIEIgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgSU4gKDEs MiwzLDQsNSw2LDcpLCBCIEFTIHYgJSAxMCA9IDgsIEMgQVMgdiAlIDEwID0gOQorKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3Yn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCIEMpCisgICAgREVGSU5FIEEg QVMgdiAlIDEwIElOICgxLDIsMyw0LDUsNiw3KSwgQiBBUyB2ICUgMTAgPSA4LCBDIEFTIHYgJSAx MCA9IDkKKyk7Jyk7CitEUk9QIFZJRVcgcnByX3Y7CisKKy0tIFZlcmlmeSBtYXRjaCBsZW5ndGgg d2l0aCBmaXhlZC1sZW5ndGggcGF0dGVybgorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBIEIgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBD IEFTIHYgJSAzID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO IChBIEIgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFT IHYgJSAzID0gMAorKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBBbHRlcm5h dGlvbiBQYXR0ZXJuIFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gU2ltcGxlIGFsdGVybmF0aW9uCitDUkVB VEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIG5mYV90 ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoKEEgfCBCKSBDKQorICAgIERFRklORSBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQg PSAnQicsIEMgQVMgY2F0ID0gJ0MnCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIG5mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSBDKQor ICAgIERFRklORSBBIEFTIGNhdCA9ICcnQScnLCBCIEFTIGNhdCA9ICcnQicnLCBDIEFTIGNhdCA9 ICcnQycnCispOycpOworRFJPUCBWSUVXIHJwcl92OworCistLSBNdWx0aXBsZSBpdGVtcyBpbiBh bHRlcm5hdGlvbgorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBuZmFfdGVzdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQiB8IEMgfCBEKSBFKQorICAgIERFRklORQor ICAgICAgICBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQgPSAnQicsIEMgQVMgY2F0ID0gJ0MnLAor ICAgICAgICBEIEFTIGNhdCA9ICdEJywgRSBBUyBjYXQgPSAnRScKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2Zp bHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcg T0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gbmZhX3Rlc3QK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOICgoQSB8IEIgfCBDIHwgRCkgRSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBjYXQgPSAn J0EnJywgQiBBUyBjYXQgPSAnJ0InJywgQyBBUyBjYXQgPSAnJ0MnJywKKyAgICAgICAgRCBBUyBj YXQgPSAnJ0QnJywgRSBBUyBjYXQgPSAnJ0UnJworKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKwor LS0gQWx0ZXJuYXRpb24gd2l0aCBxdWFudGlmaWVycworQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBB UworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOICgoQSB8IEIpKyBDKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2 ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKChBIHwgQikrIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFT IHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7Jyk7CitEUk9QIFZJRVcgcnByX3Y7CisKKy0t IE11bHRpcGxlIGFsdGVybmF0aXZlcyAoNCspCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIHwgQiB8IEMgfCBEIHwgRSkKKyAgICBERUZJ TkUgQSBBUyB2ICUgNSA9IDAsIEIgQVMgdiAlIDUgPSAxLCBDIEFTIHYgJSA1ID0gMiwgRCBBUyB2 ICUgNSA9IDMsIEUgQVMgdiAlIDUgPSA0CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIHwgQiB8IEMgfCBEIHwgRSkKKyAg ICBERUZJTkUgQSBBUyB2ICUgNSA9IDAsIEIgQVMgdiAlIDUgPSAxLCBDIEFTIHYgJSA1ID0gMiwg RCBBUyB2ICUgNSA9IDMsIEUgQVMgdiAlIDUgPSA0CispOycpOworRFJPUCBWSUVXIHJwcl92Owor CistLSBBbHRlcm5hdGlvbiBhdCBzdGFydAorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSB8IEIpIEMgRCkKKyAgICBERUZJTkUgQSBBUyB2 ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VM RUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwg Q09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoKEEgfCBCKSBDIEQpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYg JSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOycpOworRFJPUCBWSUVX IHJwcl92OworCistLSBNdWx0aXBsZSBzZXF1ZW50aWFsIGFsdGVybmF0aW9ucworQ1JFQVRFIFRF TVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgfCBCKSBD IChEIHwgRSkgRikKKyAgICBERUZJTkUgQSBBUyB2ICUgNiA9IDAsIEIgQVMgdiAlIDYgPSAxLCBD IEFTIHYgJSA2ID0gMiwgRCBBUyB2ICUgNiA9IDMsIEUgQVMgdiAlIDYgPSA0LCBGIEFTIHYgJSA2 ID0gNQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMg T0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoKEEgfCBCKSBDIChEIHwgRSkgRikKKyAgICBERUZJTkUgQSBBUyB2ICUg NiA9IDAsIEIgQVMgdiAlIDYgPSAxLCBDIEFTIHYgJSA2ID0gMiwgRCBBUyB2ICUgNiA9IDMsIEUg QVMgdiAlIDYgPSA0LCBGIEFTIHYgJSA2ID0gNQorKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKwor LS0gUXVhbnRpZmllZCBhbHRlcm5hdGl2ZXMKK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEErIHwgQispIEMpCisgICAgREVGSU5FIEEgQVMg diAlIDMgPSAwLCBCIEFTIHYgJSAzID0gMSwgQyBBUyB2ICUgMyA9IDIKKyk7CitTRUxFQ1QgbGlu ZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWlu X2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1J TkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEErIHwg QispIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFTIHYgJSAzID0gMSwgQyBBUyB2 ICUgMyA9IDIKKyk7Jyk7CitEUk9QIFZJRVcgcnByX3Y7CisKKy0tIEFsdGVybmF0aW9uIGF0IGVu ZAorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBIEIgKEMgfCBEKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAx LCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcign CitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBT VU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCIChDIHwgRCkpCisg ICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIs IEQgQVMgdiAlIDQgPSAzCispOycpOworRFJPUCBWSUVXIHJwcl92OworCistLSBOZXN0ZWQgQUxU IGF0IHN0YXJ0IG9mIGJyYW5jaCBpbnNpZGUgb3V0ZXIgQUxUCistLSBQYXR0ZXJuOiAoQSAoKEIg fCBDKSBEIHwgRSkpIC0gcHJlY2VkaW5nIFZBUiArIGlubmVyIEFMVCBhcyBmaXJzdCBicmFuY2gg ZWxlbWVudAorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBICgoQiB8IEMpIEQgfCBFKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA9IDAsIEIg QVMgdiAlIDUgPSAxLCBDIEFTIHYgJSA1ID0gMiwgRCBBUyB2ICUgNSA9IDMsIEUgQVMgdiAlIDUg PSA0CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK K1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBP RkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEEgKChCIHwgQykgRCB8IEUpKQorICAgIERFRklORSBBIEFTIHYgJSA1ID0g MCwgQiBBUyB2ICUgNSA9IDEsIEMgQVMgdiAlIDUgPSAyLCBEIEFTIHYgJSA1ID0gMywgRSBBUyB2 ICUgNSA9IDQKKyk7Jyk7CitEUk9QIFZJRVcgcnByX3Y7CisKKy0tIE5lc3RlZCBBTFQgYXQgZW5k IG9mIGJyYW5jaCBpbnNpZGUgb3V0ZXIgQUxUCistLSBQYXR0ZXJuOiAoQyAoQSB8IEIpIHwgRCkg LSBpbm5lciBBTFQgaXMgbGFzdCBlbGVtZW50IGluIG91dGVyIGJyYW5jaAorQ1JFQVRFIFRFTVAg VklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChDIChBIHwgQikgfCBE KQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQg PSAyLCBEIEFTIHYgJSA0ID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChDIChBIHwgQikgfCBEKQorICAgIERFRklORSBB IEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0 ID0gMworKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBHcm91cCBQYXR0ZXJu IFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKworLS0gU2ltcGxlIGdyb3VwCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92 IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKChBIEIpKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAl IDIgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJO JzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIp KykKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOycpOworRFJP UCBWSUVXIHJwcl92OworCistLSBHcm91cCB3aXRoIGJvdW5kZWQgcXVhbnRpZmllcgorQ1JFQVRF IFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKXsyLDR9KQorICAgIERFRklORSBBIEFT IHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBM QUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZ IE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoKEEgQil7Miw0fSkKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIg QVMgdiAlIDIgPSAwCispOycpOworRFJPUCBWSUVXIHJwcl92OworCistLSBOZXN0ZWQgZ3JvdXBz CitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKCgoQSBCKXsyfSkrKQorICAgIERF RklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRl cignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoKChBIEIpezJ9KSspCisgICAgREVGSU5FIEEgQVMgdiAl IDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gRGVl cCBuZXN0aW5nICgzKyBsZXZlbHMpCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKCgoKEEgfCBCKSspKykrKQorICAgIERFRklORSBBIEFTIHYg JSAyID0gMCwgQiBBUyB2ICUgMiA9IDEKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKCgoQSB8IEIpKykrKSspCisgICAgREVG SU5FIEEgQVMgdiAlIDIgPSAwLCBCIEFTIHYgJSAyID0gMQorKTsnKTsKK0RST1AgVklFVyBycHJf djsKKworLS0gQm91bmRlZCBxdWFudGlmaWVyIG9uIGFsdGVybmF0aW9uCitDUkVBVEUgVEVNUCBW SUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIHwgQil7MiwzfSBD KQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMCwgQiBBUyB2ICUgMyA9IDEsIEMgQVMgdiAlIDMg PSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK K1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBP RkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKChBIHwgQil7MiwzfSBDKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMCwg QiBBUyB2ICUgMyA9IDEsIEMgQVMgdiAlIDMgPSAyCispOycpOworRFJPUCBWSUVXIHJwcl92Owor CistLSBOZXN0ZWQgZ3JvdXBzIHdpdGggcXVhbnRpZmllcnMKK0NSRUFURSBURU1QIFZJRVcgcnBy X3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKChBIEIpKyBDKSopCisgICAgREVG SU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFTIHYgJSAzID0gMSwgQyBBUyB2ICUgMyA9IDIKKyk7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJw cl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMg T0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoKChBIEIpKyBDKSopCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFTIHYgJSAzID0g MSwgQyBBUyB2ICUgMyA9IDIKKyk7Jyk7CitEUk9QIFZJRVcgcnByX3Y7CisKKy0tIFBhcnRpYWwg bmVzdGVkIHF1YW50aWZpY2F0aW9uCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKChBIChCIEMpKykqKQorICAgIERFRklORSBBIEFTIHYgJSAz ID0gMCwgQiBBUyB2ICUgMyA9IDEsIEMgQVMgdiAlIDMgPSAyCispOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfdicpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0 ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9G RiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIChCIEMpKykq KQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMCwgQiBBUyB2ICUgMyA9IDEsIEMgQVMgdiAlIDMg PSAyCispOycpOworRFJPUCBWSUVXIHJwcl92OworCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFdpbmRvdyBGdW5jdGlv biBDb21iaW5hdGlvbnMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorCistLSBjb3VudCgqKSB3aXRoIHBhdHRlcm4KK0NSRUFU RSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUg NSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZG KQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUg PSAwCispOycpOworRFJPUCBWSUVXIHJwcl92OworCistLSBmaXJzdF92YWx1ZSB3aXRoIHBhdHRl cm4KK0NSRUFURSBURU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBmaXJzdF92YWx1ZSh2KSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBE RUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX3YnKSwgRSdcbicp KSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmls dGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBP RkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGZpcnN0X3ZhbHVlKHYpIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYg JSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOycpOworRFJPUCBWSUVXIHJwcl92OworCistLSBs YXN0X3ZhbHVlIHdpdGggcGF0dGVybgorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNU IGxhc3RfdmFsdWUodikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VM RUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwg Q09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBsYXN0X3ZhbHVlKHYp IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQor ICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOycpOworRFJPUCBW SUVXIHJwcl92OworCistLSBNdWx0aXBsZSB3aW5kb3cgZnVuY3Rpb25zCitDUkVBVEUgVEVNUCBW SUVXIHJwcl92IEFTCitTRUxFQ1QKKyAgICBjb3VudCgqKSBPVkVSIHcsCisgICAgZmlyc3RfdmFs dWUodikgT1ZFUiB3LAorICAgIGxhc3RfdmFsdWUodikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4g MCwgQiBBUyB2ICUgNSA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NF TEVDVAorICAgIGNvdW50KCopIE9WRVIgdywKKyAgICBmaXJzdF92YWx1ZSh2KSBPVkVSIHcsCisg ICAgbGFzdF92YWx1ZSh2KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0g MAorKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBERUZJTkUgRXhwcmVzc2lv biBWYXJpYXRpb25zCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKworLS0gQ29tcGxleCBib29sZWFuIGV4cHJlc3Npb25zCitD UkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgKHYgJSA1IDw+IDApIEFORCAodiAlIDMgPD4gMCksCisgICAgICAgIEIgQVMgKHYg JSA1ID0gMCkgT1IgKHYgJSAzID0gMCkKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAodiAlIDUgPD4gMCkg QU5EICh2ICUgMyA8PiAwKSwKKyAgICAgICAgQiBBUyAodiAlIDUgPSAwKSBPUiAodiAlIDMgPSAw KQorKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gVXNpbmcgUFJFViBmdW5jdGlvbgorQ1JF QVRFIFRFTVAgVklFVyBycHJfdiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChTIFUrIEQrKQorICAgIERFRklORQorICAg ICAgICBTIEFTIFRSVUUsCisgICAgICAgIFUgQVMgdiA+IFBSRVYodiksCisgICAgICAgIEQgQVMg diA8IFBSRVYodikKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo UyBVKyBEKykKKyAgICBERUZJTkUKKyAgICAgICAgUyBBUyBUUlVFLAorICAgICAgICBVIEFTIHYg PiBQUkVWKHYpLAorICAgICAgICBEIEFTIHYgPCBQUkVWKHYpCispOycpOworRFJPUCBWSUVXIHJw cl92OworCistLSBVc2luZyBOVUxMIGNvbXBhcmlzb25zCitDUkVBVEUgVEVNUCBWSUVXIHJwcl92 IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NICgKKyAgICBTRUxFQ1QgQ0FTRSBXSEVO IHYgJSA1ID0gMCBUSEVOIE5VTEwgRUxTRSB2IEVORCBBUyB2CisgICAgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMzApIHYKKykgdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiBJUyBOT1Qg TlVMTCwgQiBBUyB2IElTIE5VTEwKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gKAorICAgIFNFTEVDVCBDQVNFIFdIRU4gdiAl IDUgPSAwIFRIRU4gTlVMTCBFTFNFIHYgRU5EIEFTIHYKKyAgICBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAzMCkgdgorKSB0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2IElTIE5PVCBOVUxM LCBCIEFTIHYgSVMgTlVMTAorKTsnKTsKK0RST1AgVklFVyBycHJfdjsKKworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBM YXJnZSBTY2FsZSBTdGF0aXN0aWNzIFZlcmlmaWNhdGlvbgorLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIDUwMCByb3dz IC0gdmVyaWZ5IHN0YXRpc3RpY3Mgc2NhbGUgY29ycmVjdGx5CitDUkVBVEUgVEVNUCBWSUVXIHJw cl92IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1 MDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOIChBKyBCIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwIDwgNywgQiBB UyB2ICUgMTAgPSA3LCBDIEFTIHYgJSAxMCA9IDgKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVz dChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGlu ZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDUwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEErIEIgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPCA3LCBC IEFTIHYgJSAxMCA9IDcsIEMgQVMgdiAlIDEwID0gOAorKTsnKTsKK0RST1AgVklFVyBycHJfdjsK KworLS0gSGlnaCBtYXRjaCBjb3VudCBzY2VuYXJpbworQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBB UworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9 IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAg ICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOycpOworRFJPUCBWSUVX IHJwcl92OworCistLSBIaWdoIHNraXAgY291bnQgc2NlbmFyaW8KK0NSRUFURSBURU1QIFZJRVcg cnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDUwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2 ICUgMTAwID0gMSwKKyAgICAgICAgQiBBUyB2ICUgMTAwID0gMiwKKyAgICAgICAgQyBBUyB2ICUg MTAwID0gMywKKyAgICAgICAgRCBBUyB2ICUgMTAwID0gNCwKKyAgICAgICAgRSBBUyB2ICUgMTAw ID0gNQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMg T0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMg RCBFKQorICAgIERFRklORQorICAgICAgICBBIEFTIHYgJSAxMDAgPSAxLAorICAgICAgICBCIEFT IHYgJSAxMDAgPSAyLAorICAgICAgICBDIEFTIHYgJSAxMDAgPSAzLAorICAgICAgICBEIEFTIHYg JSAxMDAgPSA0LAorICAgICAgICBFIEFTIHYgJSAxMDAgPSA1CispOycpOworRFJPUCBWSUVXIHJw cl92OworCistLSBDbGVhbnVwCitEUk9QIFRBQkxFIG5mYV90ZXN0OworRFJPUCBUQUJMRSBuZmFf Y29tcGxleDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9uZmEuc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX25mYS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjk1NzNkMWRhYjNiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcnByX25mYS5zcWwKQEAgLTAsMCArMSwxODY1IEBACistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFJQ UiBORkEgVGVzdHMKKy0tIFRlc3RzIGZvciBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiBORkEgUnVu dGltZSBFeGVjdXRpb24KKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0KKy0tIFRoaXMgdGVzdCBzdWl0ZSB2YWxpZGF0ZXMg dGhlIE5GQSAoTm9uLWRldGVybWluaXN0aWMgRmluaXRlCistLSBBdXRvbWF0b24pIHJ1bnRpbWUg ZXhlY3V0aW9uIGVuZ2luZSBpbiBub2RlV2luZG93QWdnLmMsCistLSBmb2N1c2luZyBvbiB1cGRh dGVfcmVkdWNlZF9mcmFtZSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuCistLQorLS0gVGVzdCBTdHJh dGVneToKKy0tICAgRGlhZ29uYWwgcGF0dGVybiBzdHlsZSB1c2luZyBBUlJBWSBmbGFncyB0byBl eHBsaWNpdGx5CistLSAgIGNvbnRyb2wgd2hpY2ggcGF0dGVybiB2YXJpYWJsZXMgbWF0Y2ggYXQg ZWFjaCByb3cuCistLQorLS0gVGVzdCBDb3ZlcmFnZToKKy0tICAgQmFzaWMgTkZBIEZsb3cgKG1h dGNoLT5hYnNvcmItPmFkdmFuY2UpCistLSAgIEFic29ycHRpb24gT3B0aW1pemF0aW9uCistLSAg IENvbnRleHQgTGlmZWN5Y2xlIE1hbmFnZW1lbnQKKy0tICAgQWR2YW5jZSBQaGFzZSAoRXBzaWxv biBUcmFuc2l0aW9ucykKKy0tICAgTWF0Y2ggUGhhc2UgKFZhcmlhYmxlIE1hdGNoaW5nKQorLS0g ICBGcmFtZSBCb3VuZGFyeSBIYW5kbGluZworLS0gICBTdGF0ZSBNYW5hZ2VtZW50IChEZWR1cGxp Y2F0aW9uKQorLS0gICBTdGF0aXN0aWNzIGFuZCBEaWFnbm9zdGljcworLS0gICBRdWFudGlmaWVy IFJ1bnRpbWUgQmVoYXZpb3IKKy0tICAgUGF0aG9sb2dpY2FsIFBhdHRlcm4gUHJvdGVjdGlvbgor LS0gICBBbHRlcm5hdGlvbiBSdW50aW1lIEJlaGF2aW9yCistLSAgIERlZXAgTmVzdGVkIEdyb3Vw cworLS0gICBTS0lQIE9wdGlvbnMgKFJ1bnRpbWUpCistLSAgIElOSVRJQUwgTW9kZSAoUnVudGlt ZSkKKy0tICAgRnJhbWUgQm91bmRhcnkgVmFyaWF0aW9ucworLS0gICBTcGVjaWFsIFBhcnRpdGlv biBDYXNlcworLS0gICBERUZJTkUgU3BlY2lhbCBDYXNlcworLS0gICBBYnNvcnB0aW9uIER5bmFt aWMgRmxhZ3MKKy0tICAgRklYTUUgSXNzdWVzIChLbm93biBMaW1pdGF0aW9ucykKKy0tCistLSBS ZXNwb25zaWJpbGl0eToKKy0tICAgLSBORkEgcnVudGltZSBleGVjdXRpb24gcGF0aHMKKy0tICAg LSBDb250ZXh0L1N0YXRlIGxpZmVjeWNsZSBtYW5hZ2VtZW50CistLSAgIC0gUnVudGltZSBib3Vu ZGFyeSBjb25kaXRpb25zIGFuZCBwcm90ZWN0aW9ucworLS0KKy0tIE5PVCB0ZXN0ZWQgaGVyZSAo Y292ZXJlZCBpbiBvdGhlciBmaWxlcyk6CistLSAgIC0gUGF0dGVybiBwYXJzaW5nL29wdGltaXph dGlvbiAocnByX2Jhc2Uuc3FsKQorLS0gICAtIEVYUExBSU4gb3V0cHV0IChycHJfZXhwbGFpbi5z cWwpCistLSAgIC0gUFJFVi9ORVhUIHNlbWFudGljcyAocnByLnNxbCkKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIEJhc2ljIE5GQSBGbG93CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gU2ltcGxlIHNlcXVlbnRpYWwgcGF0 dGVybgorV0lUSCB0ZXN0X3NlcXVlbnRpYWwgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAg ICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0QnXSksCisgICAgICAg ICg1LCBBUlJBWVsnXyddKSAgLS0gTm8gbWF0Y2gKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQor U0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00g dGVzdF9zZXF1ZW50aWFsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMgRCkKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcg PSBBTlkoZmxhZ3MpCispOworCistLSBRdWFudGlmaWVkIHBhdHRlcm4gKEErIEIrIEMrKQorV0lU SCB0ZXN0X3F1YW50aWZpZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAg ICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMs IEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJB WVsnQiddKSwKKyAgICAgICAgKDYsIEFSUkFZWydDJ10pLAorICAgICAgICAoNywgQVJSQVlbJ0Mn XSksCisgICAgICAgICg4LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitT RUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0X3F1YW50aWZpZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBCKyBDKykKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gT3B0aW9uYWwg cGF0dGVybiAoQSBCPyBDKQorV0lUSCB0ZXN0X29wdGlvbmFsIEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlb J0MnXSksICAtLSBCIHNraXBwZWQKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAo NCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnQyddKSwgIC0tIEIgbWF0Y2hlZAor ICAgICAgICAoNiwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNU IGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0 LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9v cHRpb25hbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQj8gQykKKyAgICBERUZJTkUKKyAgICAgICAg QSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisg ICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gQWx0ZXJuYXRpb24gcGF0dGVy biAoQSAoQnxDKSBEKQorV0lUSCB0ZXN0X2FsdGVybmF0aW9uIEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlb J0InXSksICAtLSBGaXJzdCBicmFuY2gKKyAgICAgICAgKDMsIEFSUkFZWydEJ10pLAorICAgICAg ICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQyddKSwgIC0tIFNlY29uZCBi cmFuY2gKKyAgICAgICAgKDYsIEFSUkFZWydEJ10pLAorICAgICAgICAoNywgQVJSQVlbJ18nXSkK KyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hbHRlcm5hdGlvbgorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKEEgKEIgfCBDKSBEKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShm bGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycg PSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncykKKyk7CisKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gQWJzb3JwdGlvbiBPcHRpbWl6YXRpb24KKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCistLSBBYnNvcmJhYmxlIHBh dHRlcm4gKEErKQorV0lUSCB0ZXN0X2Fic29yYmFibGUgQVMgKAorICAgIFNFTEVDVCAqIEZST00g KFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisg ICAgICAgICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fi c29yYmFibGUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBB UyAnQScgPSBBTlkoZmxhZ3MpCispOworCistLSBNaXhlZCBhYnNvcmJhYmxlL25vbi1hYnNvcmJh YmxlICgoQSspIHwgQikKK1dJVEggdGVzdF9taXhlZF9hYnNvcnB0aW9uIEFTICgKKyAgICBTRUxF Q1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwg QVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZ WydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQor KQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZS T00gdGVzdF9taXhlZF9hYnNvcnB0aW9uCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEErKSB8IEIpCisg ICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAn QicgPSBBTlkoZmxhZ3MpCispOworCistLSBTdGF0ZSBjb3ZlcmFnZSAoc2FtZSBlbGVtSWR4LCBk aWZmZXJlbnQgY291bnQpCitXSVRIIHRlc3Rfc3RhdGVfY292ZXJhZ2UgQVMgKAorICAgIFNFTEVD VCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlb J0InXSksCisgICAgICAgICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCisp CitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJP TSB0ZXN0X3N0YXRlX2NvdmVyYWdlCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQXsyLH0gQikKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9 IEFOWShmbGFncykKKyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQ29udGV4dCBMaWZlY3ljbGUKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor CistLSBNdWx0aXBsZSBvdmVybGFwcGluZyBjb250ZXh0cyAoU0tJUCBUTyBORVhUIFJPVykKK1dJ VEggdGVzdF9vdmVybGFwcGluZ19jb250ZXh0cyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAor ICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAg ICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb3Zlcmxh cHBpbmdfY29udGV4dHMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KQorKTsKKworLS0gRmFpbGVkIGNvbnRleHQgY2xlYW51cCAoZWFybHkgZmFpbHVyZSkKK1dJVEgg dGVzdF9jb250ZXh0X2NsZWFudXAgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ18nXSksICAtLSBQcnVuZWQgYXQgZmlyc3Qgcm93CisgICAgICAgICgy LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydfJ10pLCAgLS0gTWlzbWF0Y2hlZCBh ZnRlciByb3cgMgorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsn QiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAg IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2NvbnRleHRfY2xlYW51cAorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJP VworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIFBhcnRpdGlv biBlbmQgKGluY29tcGxldGUgY29udGV4dHMpCitXSVRIIHRlc3RfcGFydGl0aW9uX2VuZCBBUyAo CisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSkKKyAgICAgICAg LS0gUGF0dGVybiByZXF1aXJlcyBCLCBidXQgcGFydGl0aW9uIGVuZHMKKyAgICApIEFTIHQoaWQs IGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9lbmQKK0ZST00gdGVzdF9wYXJ0aXRpb25fZW5kCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikK KyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFT ICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIENvbXBsZXRlZCBjb250ZXh0IGVuY291bnRlcmVk IGR1cmluZyBwcm9jZXNzaW5nCistLSBQYXR0ZXJuIChBIHwgQiBDIEQpOiBDdHgxIHRha2VzIGxv bmcgQi0+Qy0+RCBwYXRoLCB3aGlsZSBDdHgyIHRha2VzCistLSBzaG9ydCBBIHBhdGggYW5kIGNv bXBsZXRlcyBmaXJzdC4gTmV4dCByb3cgc2VlcyBDdHgyCistLSB3aXRoIHN0YXRlcz1OVUxMIGFu ZCBza2lwcyBpdC4KK1dJVEggdGVzdF9jb21wbGV0ZWRfY3R4IEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydCJywgJ18nXSksCisgICAgICAgICgyLCBB UlJBWVsnQycsICdBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0QnLCAnXyddKSwKKyAgICAgICAg KDQsIEFSUkFZWydfJywgJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9jb21w bGV0ZWRfY3R4CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSB8IEIgQyBEKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFO WShmbGFncykKKyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gQWR2YW5jZSBQaGFzZSAoRXBzaWxvbiBUcmFuc2l0 aW9ucykKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorCistLSBOZXN0ZWQgZ3JvdXBzICgoQSBCKSspCitXSVRIIHRlc3RfbmVz dGVkX2dyb3VwcyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlb J0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10p LAorICAgICAgICAoNiwgQVJSQVlbJ0InXSksCisgICAgICAgICg3LCBBUlJBWVsnXyddKQorICAg ICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X25lc3RlZF9ncm91cHMKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOICgoQSBCKSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBNdWx0aXBsZSBhbHRlcm5h dGlvbiBicmFuY2hlcyAoQSAoQnxDfEQpIEUpCitXSVRIIHRlc3RfbXVsdGlfYWx0IEFTICgKKyAg ICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAg ICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnRSddKSwKKyAgICAgICAgKDQs IEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0MnXSksCisgICAgICAgICg2LCBBUlJB WVsnRSddKSwKKyAgICAgICAgKDcsIEFSUkFZWydBJ10pLAorICAgICAgICAoOCwgQVJSQVlbJ0Qn XSksCisgICAgICAgICg5LCBBUlJBWVsnRSddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitT RUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0X211bHRpX2FsdAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgKEIgfCBDIHwgRCkgRSkKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9 IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBB UyAnRCcgPSBBTlkoZmxhZ3MpLAorICAgICAgICBFIEFTICdFJyA9IEFOWShmbGFncykKKyk7CisK Ky0tIE9wdGlvbmFsIFZBUiBhdCBzdGFydCAoQT8gQiBDKQorV0lUSCB0ZXN0X29wdGlvbmFsX3Zh ciBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQidd KSwgIC0tIEEgc2tpcHBlZAorICAgICAgICAoMiwgQVJSQVlbJ0MnXSksCisgICAgICAgICgzLCBB UlJBWVsnQSddKSwgIC0tIEEgbWF0Y2hlZAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAg ICAgICg1LCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisg ICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X29wdGlv bmFsX3ZhcgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEE/IEIgQykKKyAgICBERUZJTkUKKyAgICAgICAg QSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisg ICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gTmVzdGVkIGFsdGVybmF0aW9u ICgoQXxCKSAoQ3xEKSkKK1dJVEggdGVzdF9uZXN0ZWRfYWx0IEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlb J0MnXSksICAtLSBBIEMKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJS QVlbJ0QnXSksICAtLSBBIEQKKyAgICAgICAgKDUsIEFSUkFZWydCJ10pLAorICAgICAgICAoNiwg QVJSQVlbJ0MnXSksICAtLSBCIEMKKyAgICAgICAgKDcsIEFSUkFZWydCJ10pLAorICAgICAgICAo OCwgQVJSQVlbJ0QnXSkgICAtLSBCIEQKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNU IGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0 LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9u ZXN0ZWRfYWx0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSAoQyB8IEQpKQorICAgIERFRklO RQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdE JyA9IEFOWShmbGFncykKKyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gTWF0Y2ggUGhhc2UKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCist LSBTaW1wbGUgVkFSIHdpdGggRU5EIG5leHQgKEEgQiBDIGFsbCBtaW49bWF4PTEpCitXSVRIIHRl c3Rfc2ltcGxlX3ZhciBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJS QVlbJ0MnXSksCisgICAgICAgICg0LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3Mp CispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAor RlJPTSB0ZXN0X3NpbXBsZV92YXIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIgQykKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gVkFSIG1h eCBleGNlZWRlZCAoQXsyLDN9KQorV0lUSCB0ZXN0X21heF9leGNlZWRlZCBBUyAoCisgICAgU0VM RUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIs IEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksICAtLSBNYXggPSAzCisgICAg ICAgICg0LCBBUlJBWVsnQSddKSwgIC0tIEV4Y2VlZHMgbWF4LCBzdGF0ZSByZW1vdmVkCisgICAg ICAgICg1LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisg ICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X21heF9l eGNlZWRlZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEF7MiwzfSBCKQorICAgIERFRklORQorICAgICAg ICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQor KTsKKworLS0gTm9uLW1hdGNoaW5nIFZBUiAoREVGSU5FIGZhbHNlKQorV0lUSCB0ZXN0X25vbl9t YXRjaGluZyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydfJ10pLCAgLS0gQiBub3QgbWF0Y2hlZCAoREVG SU5FIGZhbHNlKQorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsn QiddKSwgIC0tIEIgbWF0Y2hlZAorICAgICAgICAoNSwgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF9ub25fbWF0Y2hpbmcKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIg QykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBC IEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsK KworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBGcmFtZSBCb3VuZGFyeSBIYW5kbGluZworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIExpbWl0 ZWQgZnJhbWUgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMyBGT0xMT1dJTkcpCitXSVRI IHRlc3RfbGltaXRlZF9mcmFtZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAg ICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAo MywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwgIC0tIFdpdGhpbiAzIEZP TExPV0lORworICAgICAgICAoNSwgQVJSQVlbJ0InXSksICAtLSBCZXlvbmQgMyBGT0xMT1dJTkcg ZnJvbSByb3cgMQorICAgICAgICAoNiwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdz KQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQK K0ZST00gdGVzdF9saW1pdGVkX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDMgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxh Z3MpCispOworCistLSBVbmJvdW5kZWQgZnJhbWUgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKK1dJVEggdGVzdF91bmJvdW5kZWRfZnJhbWUgQVMgKAor ICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAg ICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAo NCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFS UkFZWydCJ10pICAtLSBGYXIgZnJvbSBzdGFydCwgYnV0IHVuYm91bmRlZAorICAgICkgQVMgdChp ZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX2VuZAorRlJPTSB0ZXN0X3VuYm91bmRlZF9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEr IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg QiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBNYXRjaCBleGNlZWRzIGZyYW1lIGJvdW5k YXJ5CitXSVRIIHRlc3RfZnJhbWVfZXhjZWVkZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDMsIEFSUkFZWydBJ10pCisgICAgICAgIC0tIEZyYW1lIGVuZHMgYXQgcm93IDMg KDIgRk9MTE9XSU5HKSwgQiBuZXZlciBhcHBlYXJzCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykK K1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9N IHRlc3RfZnJhbWVfZXhjZWVkZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMiBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykK Kyk7CisKKy0tIEZyYW1lIGJvdW5kYXJ5IGZvcmNlZCBtaXNtYXRjaAorLS0gTGltaXRlZCBmcmFt ZSB3aXRoIGVub3VnaCByb3dzIHNvIHRoYXQgYSBjb250ZXh0J3MgZnJhbWUgYm91bmRhcnkKKy0t IGlzIGV4Y2VlZGVkIHdoaWxlIHN0aWxsIHByb2Nlc3NpbmcuCitXSVRIIHRlc3RfZnJhbWVfYm91 bmRhcnkgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlb J0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10p LAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDYsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBp ZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwK KyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfZnJh bWVfYm91bmRhcnkKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgMiBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRP IE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gU3RhdGUgTWFuYWdlbWVudAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIER1cGxpY2F0ZSBzdGF0ZSBj cmVhdGlvbgorV0lUSCB0ZXN0X2R1cGxpY2F0ZV9zdGF0ZXMgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnLCAnQiddKSwgIC0tIEJvdGggQSBhbmQg QiBtYXRjaCAoY3JlYXRlcyBkdXBsaWNhdGUgc3RhdGVzIHZpYSBkaWZmZXJlbnQgcGF0aHMpCisg ICAgICAgICgyLCBBUlJBWVsnQycsICdfJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0QnLCAnXydd KQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZp cnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2R1cGxpY2F0ZV9zdGF0ZXMKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cK KyAgICBQQVRURVJOICgoQSB8IEIpIEMgRCkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScg PSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMg QVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCispOwor CistLSBMYXJnZSBwYXR0ZXJuIChzdHJlc3MgZnJlZSBsaXN0KQorV0lUSCB0ZXN0X2xhcmdlX3Bh dHRlcm4gQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlb J0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10p LAorICAgICAgICAoNCwgQVJSQVlbJ0QnXSksCisgICAgICAgICg1LCBBUlJBWVsnRSddKSwKKyAg ICAgICAgKDYsIEFSUkFZWydGJ10pLAorICAgICAgICAoNywgQVJSQVlbJ0cnXSksCisgICAgICAg ICg4LCBBUlJBWVsnSCddKSwKKyAgICAgICAgKDksIEFSUkFZWydJJ10pLAorICAgICAgICAoMTAs IEFSUkFZWydKJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3Ms CisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBs YXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbGFyZ2VfcGF0dGVy bgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBO RVhUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSBGIEcgSCBJIEopCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxh Z3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgRSBBUyAnRScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBGIEFT ICdGJyA9IEFOWShmbGFncyksCisgICAgICAgIEcgQVMgJ0cnID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgSCBBUyAnSCcgPSBBTlkoZmxhZ3MpLAorICAgICAgICBJIEFTICdJJyA9IEFOWShmbGFncyks CisgICAgICAgIEogQVMgJ0onID0gQU5ZKGZsYWdzKQorKTsKKworLS0gUmVkdWNlZCBmcmFtZSBt YXAgcmVhbGxvY2F0aW9uICg+IDEwMjQgcm93cykKK1dJVEggdGVzdF9tYXBfcmVhbGxvYyBBUyAo CisgICAgU0VMRUNUIGlkLCBDQVNFIFdIRU4gaWQgJSAyID0gMSBUSEVOIEFSUkFZWydBJ10gRUxT RSBBUlJBWVsnQiddIEVORCBBUyBmbGFncworICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEx MDApIEFTIGlkCispCitTRUxFQ1QgY291bnQoKiksIG1pbihtYXRjaF9zdGFydCksIG1heChtYXRj aF9lbmQpCitGUk9NICgKKyAgICBTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgICAgICBsYXN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfZW5kCisgICAgRlJPTSB0ZXN0X21hcF9yZWFsbG9jCisgICAgV0lO RE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgQUZURVIgTUFUQ0ggU0tJ UCBUTyBORVhUIFJPVworICAgICAgICBQQVRURVJOIChBIEIpCisgICAgICAgIERFRklORQorICAg ICAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICAgICAgQiBBUyAnQicgPSBB TlkoZmxhZ3MpCisgICAgKQorKSBzdWI7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gU3RhdGlzdGljcyBhbmQgRGlh Z25vc3RpY3MKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorCistLSBNYXRjaGVkIGNvbnRleHRzCitXSVRIIHRlc3RfbWF0Y2hl ZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisg ICAgICAgICg0LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X21h dGNoZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMg J0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCist LSBQcnVuZWQgY29udGV4dHMgKGZhaWxlZCBhdCBmaXJzdCByb3cpCitXSVRIIHRlc3RfcHJ1bmVk IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydfJ10p LCAgLS0gUHJ1bmVkCisgICAgICAgICgyLCBBUlJBWVsnXyddKSwgIC0tIFBydW5lZAorICAgICAg ICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChp ZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX2VuZAorRlJPTSB0ZXN0X3BydW5lZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9 IEFOWShmbGFncykKKyk7CisKKy0tIE1pc21hdGNoZWQgY29udGV4dHMgKGZhaWxlZCBhZnRlciBt dWx0aXBsZSByb3dzKQorV0lUSCB0ZXN0X21pc21hdGNoZWQgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydfJ10pLCAgLS0gTWlzbWF0Y2hlZCBhZnRlciAyIHJv d3MKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0InXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9taXNtYXRjaGVkCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVS TiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIEFic29yYmVkIGNvbnRleHRzCitX SVRIIHRlc3RfYWJzb3JiZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAg ICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMs IEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJB WVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAg ICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fic29yYmVkCitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisg ICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdz KQorKTsKKworLS0gU2tpcHBlZCBjb250ZXh0cyAoU0tJUCBUTyBORVhUIFJPVykKK1dJVEggdGVz dF9za2lwcGVkIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFS UkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pICAtLSBDb21wbGV0ZXMgbWF0Y2ggc3RhcnRp bmcgYXQgcm93IDEKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywK KyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxh c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9za2lwcGVkCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9X CisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g UXVhbnRpZmllciBSdW50aW1lIEJlaGF2aW9yCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gTGFyZ2UgY291bnQgaGFu ZGxpbmcgKEF7MTAwfSkKK1dJVEggdGVzdF9sYXJnZV9jb3VudCBBUyAoCisgICAgU0VMRUNUIGkg QVMgaWQsIEFSUkFZWydBJ10gQVMgZmxhZ3MKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MDUpIGkKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf ZW5kCitGUk9NIHRlc3RfbGFyZ2VfY291bnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBezEwMH0pCisg ICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gVW5saW1p dGVkIHF1YW50aWZpZXIgKEF7MTAsfSkKK1dJVEggdGVzdF91bmxpbWl0ZWQgQVMgKAorICAgIFNF TEVDVCBpIEFTIGlkLCBBUlJBWVsnQSddIEFTIGZsYWdzCisgICAgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMTUpIGkKKyAgICBVTklPTiBBTEwKKyAgICBTRUxFQ1QgMTYsIEFSUkFZWydCJ10KKykK K1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9N IHRlc3RfdW5saW1pdGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQXsxMCx9IEIpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpCispOworCistLSBNaW4gYm91bmRhcnkgKEF7Myw1fSkKK1dJVEggdGVzdF9taW5fYm91 bmRhcnkgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlb J0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10p LCAgLS0gTWluPTMgcmVhY2hlZCwgZXhpdCBwYXRoIGF2YWlsYWJsZQorICAgICAgICAoNCwgQVJS QVlbJ0InXSksICAtLSBNYXRjaCBlbmRzIGF0IG1pbgorICAgICAgICAoNSwgQVJSQVlbJ0EnXSks CisgICAgICAgICg2LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDcsIEFSUkFZWydBJ10pLAorICAg ICAgICAoOCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg5LCBBUlJBWVsnQSddKSwgIC0tIENvdW50 PTUsIG1heCByZWFjaGVkCisgICAgICAgICgxMCwgQVJSQVlbJ0InXSkgIC0tIE1hdGNoIGVuZHMg YXQgbWF4CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAg ICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbWluX2JvdW5kYXJ5CitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9X CisgICAgUEFUVEVSTiAoQXszLDV9IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBNYXgg Ym91bmRhcnkgZXhjZWVkZWQgKEF7Myw1fSkKK1dJVEggdGVzdF9tYXhfYm91bmRhcnkgQVMgKAor ICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAg ICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAo NCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFS UkFZWydBJ10pLCAgLS0gQ291bnQ9NiA+IG1heD01LCByb3cgMSBjb250ZXh0IHJlbW92ZWQKKyAg ICAgICAgKDcsIEFSUkFZWydCJ10pICAgLS0gUm93IDEgY29udGV4dDogbm8gbWF0Y2ggKGV4Y2Vl ZGVkIG1heCkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAg ICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9tYXhfYm91bmRhcnkKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBS T1cKKyAgICBQQVRURVJOIChBezMsNX0gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScg PSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gUGF0aG9sb2dpY2FsIFBhdHRlcm4gUnVudGltZSBQcm90ZWN0aW9uCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor LS0gQ29tcGxleCBuZXN0ZWQgbnVsbGFibGUgKChBKiBCKikqKSAtIFJ1bnRpbWUgcHJvdGVjdGlv bgorV0lUSCB0ZXN0X2NvbXBsZXhfbmVzdGVkIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgzLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAg ICAoNSwgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBm bGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAg ICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9jb21wbGV4 X25lc3RlZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBKiBCKikqKQorICAgIERFRklORQorICAgICAg ICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQor KTsKKworLS0gTmVzdGVkIG51bGxhYmxlIHdpdGggcXVhbnRpZmllciAoKEF7MCwzfSkqKQorV0lU SCB0ZXN0X25lc3RlZF9xdWFudGlmaWVyIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMK KyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAg ICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0 KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfbmVzdGVkX3F1YW50aWZpZXIKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJO ICgoQXswLDN9KSopCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQor KTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBBbHRlcm5hdGlvbiBSdW50aW1lIEJlaGF2aW9yCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor LS0gTXVsdGktYnJhbmNoIGFsdGVybmF0aW9uIChBIChCfEN8RHxFKSBGKQorV0lUSCB0ZXN0X211 bHRpX2JyYW5jaCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlb J0YnXSksCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydDJ10p LAorICAgICAgICAoNiwgQVJSQVlbJ0YnXSksCisgICAgICAgICg3LCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDgsIEFSUkFZWydEJ10pLAorICAgICAgICAoOSwgQVJSQVlbJ0YnXSksCisgICAgICAg ICgxMCwgQVJSQVlbJ0EnXSksCisgICAgICAgICgxMSwgQVJSQVlbJ0UnXSksCisgICAgICAgICgx MiwgQVJSQVlbJ0YnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFn cywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAg IGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9tdWx0aV9icmFu Y2gKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8g TkVYVCBST1cKKyAgICBQQVRURVJOIChBIChCIHwgQyB8IEQgfCBFKSBGKQorICAgIERFRklORQor ICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9 IEFOWShmbGFncyksCisgICAgICAgIEUgQVMgJ0UnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRiBB UyAnRicgPSBBTlkoZmxhZ3MpCispOworCistLSBBbHRlcm5hdGlvbiB3aXRoIHF1YW50aWZpZXJz IChBKyB8IEIrIHwgQyspCitXSVRIIHRlc3RfYWx0X3F1YW50aWZpZXJzIEFTICgKKyAgICBTRUxF Q1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwg QVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZ WydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0InXSksCisgICAgICAgICg2LCBBUlJBWVsnQydd KSwKKyAgICAgICAgKDcsIEFSUkFZWydDJ10pLAorICAgICAgICAoOCwgQVJSQVlbJ0MnXSksCisg ICAgICAgICg5LCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fs dF9xdWFudGlmaWVycworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIHwgQisgfCBDKykKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gYWx0UHJp b3JpdHkgcmVwbGFjZW1lbnQgKEEgQiBDIHwgRCkKKy0tIEQgYnJhbmNoIChoaWdoZXIgYWx0UHJp b3JpdHkpIG1hdGNoZXMgZmlyc3QgYXQgcm93IDEsCistLSB0aGVuIEEgQiBDIGJyYW5jaCAobG93 ZXIgYWx0UHJpb3JpdHkpIHJlcGxhY2VzIGl0IGF0IHJvdyAzLgorV0lUSCB0ZXN0X2FsdF9yZXBs YWNlIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydB JywgJ0QnXSksCisgICAgICAgICgyLCBBUlJBWVsnQicsICdfJ10pLAorICAgICAgICAoMywgQVJS QVlbJ0MnLCAnXyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydfJywgJ18nXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF9hbHRfcmVwbGFjZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQiBD IHwgRCkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCispOworCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIERlZXAgTmVz dGVkIEdyb3VwcworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CisKKy0tIFRocmVlLWxldmVsIG5lc3RpbmcgKCgoKEEgQikrKSsp KykKK1dJVEggdGVzdF9kZWVwX25lc3RpbmcgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAg ICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAg ICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10pLAorICAgICAgICAoNywg QVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywK KyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxh c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9kZWVwX25lc3RpbmcK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVY VCBST1cKKyAgICBQQVRURVJOICgoKChBIEIpKykrKSspCisgICAgREVGSU5FCisgICAgICAgIEEg QVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOwor CistLSBNdWx0aXBsZSBncm91cHMgaW4gbmVzdGluZyAoKChBIEIpIChDIEQpKSspCitXSVRIIHRl c3RfbmVzdGVkX3NlcXVlbnRpYWwgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAg KDMsIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0QnXSksCisgICAgICAgICg1LCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10pLAorICAgICAgICAoNywgQVJSQVlb J0MnXSksCisgICAgICAgICg4LCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDksIEFSUkFZWydfJ10p CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbmVzdGVkX3NlcXVlbnRpYWwKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cK KyAgICBQQVRURVJOICgoKEEgQikgKEMgRCkpKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAg IEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCisp OworCistLSBOZXN0ZWQgRU5E4oaSRU5EIG1heCByZWFjaGVkCistLSBJbm5lciBncm91cCAoQSBC KXsyfSByZWFjaGVzIG1heD0yIOKGkiBleGl0cyB0byBvdXRlciBFTkQKK1dJVEggdGVzdF9lbmRf bmVzdGVkX21heCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlb J0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10p LAorICAgICAgICAoNiwgQVJSQVlbJ0InXSksCisgICAgICAgICg3LCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDgsIEFSUkFZWydCJ10pLAorICAgICAgICAoOSwgQVJSQVlbJ18nXSkKKyAgICApIEFT IHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9lbmQKK0ZST00gdGVzdF9lbmRfbmVzdGVkX21heAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4g KCgoQSBCKXsyfSkrKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyks CisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gTmVzdGVkIEVOROKGkkVO RCBiZXR3ZWVuIG1pbi9tYXgKKy0tIElubmVyIGdyb3VwIChBIEIpezEsM30gZXhpdHMgYmV0d2Vl biBtaW4vbWF4IOKGkiBvdXRlciBFTkQgY291bnQrKworV0lUSCB0ZXN0X2VuZF9uZXN0ZWRfbWlk IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10p LAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSksCisgICAgICAg ICg2LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDcsIEFSUkFZWydBJ10pLAorICAgICAgICAoOCwg QVJSQVlbJ0InXSksCisgICAgICAgICg5LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2Vu ZAorRlJPTSB0ZXN0X2VuZF9uZXN0ZWRfbWlkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKChBIEIpezEs M30pKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gU0tJUCBPcHRpb25zIChS dW50aW1lKQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CisKKy0tIFNLSVAgUEFTVCBMQVNUIFJPVyAobm9uLW92ZXJsYXBwaW5n IG1hdGNoZXMpCitXSVRIIHRlc3Rfc2tpcF9wYXN0IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChW QUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSks CisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAg ICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9za2lw X3Bhc3QKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORQorICAgICAgICBBIEFT ICdBJyA9IEFOWShmbGFncykKKyk7CisKKy0tIFNLSVAgVE8gTkVYVCBST1cgKG92ZXJsYXBwaW5n IG1hdGNoZXMpCitXSVRIIHRlc3Rfc2tpcF9uZXh0IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChW QUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSks CisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAg ICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9za2lw X25leHQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpCispOworCistLSBTS0lQIGRpZmZlcmVuY2UgdmVyaWZpY2F0aW9uCitX SVRIIHRlc3Rfc2tpcF9kaWZmIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgz LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBm bGFncykKKykKK1NFTEVDVCAnU0tJUCBQQVNUJyBBUyBtb2RlLCBpZCwgZmxhZ3MsCisgICAgICAg Zmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfc2tpcF9kaWZmCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispCitVTklPTiBBTEwKK1NFTEVDVCAn U0tJUCBORVhUJyBBUyBtb2RlLCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfZW5kCitGUk9NIHRlc3Rfc2tpcF9kaWZmCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAg IERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKQorKQorT1JERVIgQlkgbW9kZSwgaWQ7CisKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gSU5JVElB TCBNb2RlIChSdW50aW1lKQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIElOSVRJQUwgbW9kZSAobm90IHlldCBzdXBw b3J0ZWQgLSBwcm9kdWNlcyBzeW50YXggZXJyb3IpCitXSVRIIHRlc3RfaW5pdGlhbF9tb2RlIEFT ICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydfJ10pLCAg LS0gVW5tYXRjaGVkCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZ WydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ18nXSksICAtLSBVbm1hdGNoZWQKKyAgICAgICAg KDUsIEFSUkFZWydBJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAg ICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfaW5pdGlhbF9t b2RlCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgQUZURVIg TUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisKKy0tIERlZmF1bHQgbW9kZSAoaW5jbHVk ZSBhbGwgcm93cykKK1dJVEggdGVzdF9kZWZhdWx0X21vZGUgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ18nXSksICAtLSBVbm1hdGNoZWQsIGJ1dCBp bmNsdWRlZAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDQsIEFSUkFZWydfJ10pLCAgLS0gVW5tYXRjaGVkLCBidXQgaW5jbHVkZWQK KyAgICAgICAgKDUsIEFSUkFZWydBJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFy dCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rf ZGVmYXVsdF9tb2RlCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gTW9kZSBkaWZmZXJlbmNlIHZlcmlmaWNh dGlvbiAoSU5JVElBTCBub3QgeWV0IHN1cHBvcnRlZCAtIHByb2R1Y2VzIHN5bnRheCBlcnJvcikK K1dJVEggdGVzdF9tb2RlX2RpZmYgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ18nXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDMsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCAnSU5JVElB TCcgQVMgbW9kZSwgQ09VTlQoKikgQVMgcm93X2NvdW50CitGUk9NICgKKyAgICBTRUxFQ1QgaWQg RlJPTSB0ZXN0X21vZGVfZGlmZgorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkg aWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgIElOSVRJQUwKKyAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJP VworICAgICAgICBQQVRURVJOIChBKQorICAgICAgICBERUZJTkUgQSBBUyAnQScgPSBBTlkoZmxh Z3MpCisgICAgKQorKSBzdWIKK1VOSU9OIEFMTAorU0VMRUNUICdERUZBVUxUJyBBUyBtb2RlLCBD T1VOVCgqKSBBUyByb3dfY291bnQKK0ZST00gKAorICAgIFNFTEVDVCBpZCBGUk9NIHRlc3RfbW9k ZV9kaWZmCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg QUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgICAgICBQQVRURVJOIChBKQorICAgICAg ICBERUZJTkUgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCisgICAgKQorKSBzdWIKK09SREVSIEJZIG1v ZGU7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gRnJhbWUgQm91bmRhcnkgVmFyaWF0aW9ucworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0t IFZlcnkgbGltaXRlZCBmcmFtZSAoMSBGT0xMT1dJTkcpCitXSVRIIHRlc3Rfb25lX2ZvbGxvd2lu ZyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLCAgLS0gV2l0aGluIDEgRk9MTE9XSU5HCisgICAg ICAgICgzLCBBUlJBWVsnQSddKSwgIC0tIEJleW9uZCAxIEZPTExPV0lORyBmcm9tIHJvdyAxCisg ICAgICAgICg0LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X29u ZV9mb2xsb3dpbmcKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRP IE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdB JyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0g TWVkaXVtIGZyYW1lICgxMCBGT0xMT1dJTkcpCitXSVRIIHRlc3RfdGVuX2ZvbGxvd2luZyBBUyAo CisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAg ICg0LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAorICAgICAgICAoNiwg QVJSQVlbJ0EnXSksCisgICAgICAgICg3LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDgsIEFSUkFZ WydBJ10pLAorICAgICAgICAoOSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgxMCwgQVJSQVlbJ0En XSksCisgICAgICAgICgxMSwgQVJSQVlbJ0InXSksICAtLSBXaXRoaW4gMTAgRk9MTE9XSU5HIGZy b20gcm93IDEKKyAgICAgICAgKDEyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDEzLCBBUlJBWVsn QiddKSAgIC0tIEJleW9uZCAxMCBGT0xMT1dJTkcgZnJvbSByb3cgMQorICAgICkgQVMgdChpZCwg ZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X2VuZAorRlJPTSB0ZXN0X3Rlbl9mb2xsb3dpbmcKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMTAgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVG SU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBB TlkoZmxhZ3MpCispOworCistLSBFeGFjdCBib3VuZGFyeSBtYXRjaAorV0lUSCB0ZXN0X2V4YWN0 X2JvdW5kYXJ5IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFS UkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0InXSkg ICAtLSBFeGFjdGx5IGF0IDQgRk9MTE9XSU5HIChmcmFtZSBlbmQpCisgICAgKSBBUyB0KGlkLCBm bGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf ZW5kCitGUk9NIHRlc3RfZXhhY3RfYm91bmRhcnkKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgNCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncykKKyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gU3BlY2lhbCBQYXJ0aXRpb24gQ2FzZXMKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorCistLSBFbXB0eSBwYXJ0aXRpb24gKDAgcm93cykKK1dJVEggdGVzdF9lbXB0eV9wYXJ0aXRp b24gQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgMSwgQVJSQVlb J0EnXSksCisgICAgICAgICgyLCAyLCBBUlJBWVsnXyddKSAgLS0gRGlmZmVyZW50IHBhcnRpdGlv bgorICAgICkgQVMgdChpZCwgcGFydCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIHBhcnQsIGZsYWdz LAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAg bGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2VtcHR5X3BhcnRp dGlvbgorV0hFUkUgcGFydCA9IDk5ICAtLSBObyByb3dzIG1hdGNoCitXSU5ET1cgdyBBUyAoCisg ICAgUEFSVElUSU9OIEJZIHBhcnQKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORQorICAgICAgICBBIEFTICdB JyA9IEFOWShmbGFncykKKyk7CisKKy0tIFNpbmdsZSByb3cgcGFydGl0aW9uCitXSVRIIHRlc3Rf c2luZ2xlX3JvdyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBB UlJBWVsnQSddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAor ICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3NpbmdsZV9yb3cKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBS T1cKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShm bGFncykKKyk7CisKKy0tIEFsbCByb3dzIGZhaWwgbWF0Y2hpbmcgKGFsbCBERUZJTkUgZmFsc2Up CitXSVRIIHRlc3RfYWxsX2ZhaWwgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDMsIEFSUkFZWydBJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAg ICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWxsX2ZhaWwK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVY VCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBmYWxzZSAg LS0gQWxsIHJvd3MgZmFpbAorKTsKKworLS0gUGFydGl0aW9uIGVuZCB3aXRoIGFic29yYmFibGUg cGF0dGVybgorLS0gU0tJUCBQQVNUIExBU1QgUk9XICsgdW5ib3VuZGVkIGZyYW1lICsgYWxsIHJv d3MgbWF0Y2ggQQorLS0gVHJpZ2dlcnMgYWJzb3JiIGluICFyb3dFeGlzdHMgcGF0aCBhdCBwYXJ0 aXRpb24gYm91bmRhcnkuCitXSVRIIHRlc3RfYWJzb3JiX3BhcnRpdGlvbl9lbmQgQVMgKAorICAg IFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAg ICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwg QVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKQorICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2Vu ZAorRlJPTSB0ZXN0X2Fic29yYl9wYXJ0aXRpb25fZW5kCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChB KykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIERFRklORSBTcGVjaWFsIENhc2VzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gVW5kZWZpbmVkIHZhcmlh YmxlIGluIERFRklORQorV0lUSCB0ZXN0X3VuZGVmaW5lZF92YXIgQVMgKAorICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJB WVsnWCddKSwgIC0tIEIgbm90IGRlZmluZWQsIGRlZmF1bHRzIHRvIFRSVUUKKyAgICAgICAgKDMs IEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJB WVsnXyddKSwgIC0tIEIgZGVmYXVsdHMgdG8gVFJVRSwgYnV0IG5vIGZsYWdzCisgICAgICAgICg2 LCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdz LAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAg bGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3VuZGVmaW5lZF92 YXIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8g TkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIgQykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpLAorICAgICAgICAtLSBCIGlzIHVuZGVmaW5lZCwgZGVmYXVsdHMgdG8g VFJVRQorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQWJz b3JwdGlvbiBEeW5hbWljIEZsYWdzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gUGFydGlhbCBhYnNvcmJhYmxlIHBh dHRlcm4gKChBKykgQikKK1dJVEggdGVzdF9wYXJ0aWFsX2Fic29yYmFibGUgQVMgKAorICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgy LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJS QVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3Mp CispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAor RlJPTSB0ZXN0X3BhcnRpYWxfYWJzb3JiYWJsZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBKykgQikK KyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFT ICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIER5bmFtaWMgZmxhZyB1cGRhdGUgKChBKykgfCBC KQorV0lUSCB0ZXN0X2R5bmFtaWNfZmxhZ3MgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAg ICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlk LCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfZW5kCitGUk9NIHRlc3RfZHluYW1pY19mbGFncworV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBKykg fCBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAg IEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gTm9uLWFic29yYmFibGUgY29udGV4dCBk dXJpbmcgYWJzb3JwdGlvbgorLS0gUGF0dGVybiAoQSBCKSsgQzogQSxCIGluIGFic29yYmFibGUg Z3JvdXAsIEMgaXMgbm90LgorLS0gV2hlbiBFTkQgZXhpdHMgdG8gQyB2aWEgbmZhX3N0YXRlX2Ny ZWF0ZSwgaXNBYnNvcmJhYmxlIGJlY29tZXMgZmFsc2UuCitXSVRIIHRlc3Rfbm9uX2Fic29yYmFi bGUgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0En XSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAor ICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnQyddKSwKKyAgICAg ICAgKDYsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfbm9uX2Fi c29yYmFibGUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIpKyBDKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworCistLSBBYnNvcnB0aW9uIGZs YWdzIGVhcmx5IHJldHVybiAoIWhhc0Fic29yYmFibGVTdGF0ZSkKKy0tIFBhdHRlcm4gKEEgQikr IEMgRCB3aXRoIFNLSVAgUEFTVCBMQVNUIFJPVworLS0gQWZ0ZXIgcmVhY2hpbmcgQyAobm9uLWFi c29yYmFibGUpLCBoYXNBYnNvcmJhYmxlU3RhdGUgYmVjb21lcyBmYWxzZS4KKy0tIE9uIG5leHQg cm93IChEKSwgdGhlIGVhcmx5IHJldHVybiBmaXJlcy4KK1dJVEggdGVzdF9hYnNvcnB0aW9uX2Vh cmx5X3JldHVybiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlb J0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydDJ10p LAorICAgICAgICAoNiwgQVJSQVlbJ0QnXSksCisgICAgICAgICg3LCBBUlJBWVsnXyddKQorICAg ICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fic29ycHRpb25fZWFybHlfcmV0dXJuCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOICgoQSBCKSsgQyBEKQorICAgIERFRklORQorICAgICAgICBBIEFTICdB JyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg QyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncykKKyk7 CisKKy0tIENvdmVyYWdlIGZhaWx1cmU6IG9sZGVyIGNhbid0IGNvdmVyIG5ld2VyJ3Mgc3RhdGVz CistLSBQYXR0ZXJuIEErIHwgQisgd2l0aCBTS0lQIFBBU1QgTEFTVCBST1cuCistLSBSb3cgMTog b25seSBBIOKGkiBDdHgxIHRha2VzIEEgYnJhbmNoIG9ubHkgKEIgZmFpbHMpLgorLS0gUm93IDI6 IEEgYW5kIEIg4oaSIEN0eDIgdGFrZXMgYm90aCBicmFuY2hlcy4KKy0tIEFic29ycHRpb246IEN0 eDEgaGFzIEEgYnV0IG5vIEIg4oaSIGNhbid0IGNvdmVyIEN0eDIncyBCIHN0YXRlIOKGkiBmYWls cy4KK1dJVEggdGVzdF9jb3ZlcmFnZV9mYWlsIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywgJ18nXSksCisgICAgICAgICgyLCBBUlJBWVsnQScs ICdCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnLCAnXyddKSwKKyAgICAgICAgKDQsIEFSUkFZ WydBJywgJ18nXSksCisgICAgICAgICg1LCBBUlJBWVsnXycsICdfJ10pCisgICAgKSBBUyB0KGlk LCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfZW5kCitGUk9NIHRlc3RfY292ZXJhZ2VfZmFpbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsg fCBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIEFic29yYiBza2lwcyBjb21wbGV0ZWQg Y29udGV4dCAob2xkZXItPnN0YXRlcz09TlVMTCkKKy0tIFBhdHRlcm4gQSsgfCBCKyB3aXRoIFNL SVAgUEFTVCBMQVNUIFJPVy4KKy0tIFJvdyAxOiBBIG9ubHkg4oaSIEN0eDEgdGFrZXMgQSBicmFu Y2guIFJvdyAyOiBCIG9ubHkg4oaSIEN0eDEgQSBmYWlscyAoY29tcGxldGVkKS4KKy0tIEN0eDIg dGFrZXMgQiBicmFuY2guIEFic29ycHRpb246IEN0eDEgc3RhdGVzPT1OVUxMIOKGkiBza2lwLgor V0lUSCB0ZXN0X29sZGVyX2NvbXBsZXRlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAg ICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnXyddKQorICAgICkgQVMg dChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX2VuZAorRlJPTSB0ZXN0X29sZGVyX2NvbXBsZXRlZAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQSsgfCBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIEFic29yYiBza2lwcyBub24t YWJzb3JiYWJsZSBjb250ZXh0ICghaGFzQWJzb3JiYWJsZVN0YXRlKQorLS0gUGF0dGVybiBBKyB8 IEIgQyB3aXRoIFNLSVAgUEFTVCBMQVNUIFJPVyAob25seSBBKyBicmFuY2ggYWJzb3JiYWJsZSku CistLSBSb3cgMTogQiBvbmx5IOKGkiBDdHgxIHRha2VzIEIgYnJhbmNoIChub24tYWJzb3JiYWJs ZSksIGFkdmFuY2VzIHRvIEMuCistLSBSb3cgMjogQyxBIOKGkiBDdHgxIEMgbWF0Y2hlcyAoaGFz QWJzb3JiYWJsZVN0YXRlPWZhbHNlKS4gQ3R4MiB0YWtlcyBBIChhYnNvcmJhYmxlKS4KKy0tIEFi c29ycHRpb246IEN0eDEgIWhhc0Fic29yYmFibGVTdGF0ZSDihpIgc2tpcC4KK1dJVEggdGVzdF9v bGRlcl9ub25fYWJzb3JiYWJsZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAg ICAgICgxLCBBUlJBWVsnQicsICdfJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0MnLCAnQSddKSwK KyAgICAgICAgKDMsIEFSUkFZWydfJywgJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnXycsICdf J10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAg Zmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb2xkZXJfbm9uX2Fic29yYmFibGUK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKEErIHwgQiBDKQorICAgIERFRklORQorICAgICAgICBBIEFT ICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEZJWE1FIElzc3VlcyAt IEtub3duIExpbWl0YXRpb25zCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gRklYTUUgMSAtIGFsdFByaW9yaXR5IGxl eGljYWwgb3JkZXIKK1dJVEggdGVzdF9hbHRfcHJpb3JpdHlfcmVwZWF0ZWQgQVMgKAorICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnLCdCJ10pLCAgLS0gQm90 aCBBIGFuZCBCIG1hdGNoCisgICAgICAgICgyLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICgz LCBBUlJBWVsnQScsJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBm bGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAg ICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hbHRfcHJp b3JpdHlfcmVwZWF0ZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpKykKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncykKKyk7CisKKy0tIEZJWE1FIDEgLSBOZXN0ZWQgQUxUIGxleGljYWwgb3JkZXIKK1dJVEgg dGVzdF9hbHRfcHJpb3JpdHlfbmVzdGVkIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMK KyAgICAgICAgKDEsIEFSUkFZWydBJywnQiddKSwKKyAgICAgICAgKDIsIEFSUkFZWydDJywnRCdd KSwKKyAgICAgICAgKDMsIEFSUkFZWydBJywnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydDJywn RCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAg IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2FsdF9wcmlvcml0eV9uZXN0ZWQK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVY VCBST1cKKyAgICBQQVRURVJOICgoKEEgfCBCKSAoQyB8IEQpKSspCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5Z KGZsYWdzKQorKTsKKworLS0gRklYTUUgMiAtIEN5Y2xlIHByZXZlbnRpb24gYXQgY291bnQgPiAw CitXSVRIIHRlc3RfY3ljbGVfbm9uemVybyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAg ICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSAgLS0gSW5uZXIg QSogbWF0Y2hlcyAwLCBjeWNsZXMgYXQgY291bnQ9MworICAgICkgQVMgdChpZCwgZmxhZ3MpCisp CitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJP TSB0ZXN0X2N5Y2xlX25vbnplcm8KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQSopKikKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworCistLSBGSVhNRSAyIC0gQ3lj bGUgd2l0aCBtaXhlZCBudWxsYWJsZXMKK1dJVEggdGVzdF9jeWNsZV9taXhlZCBBUyAoCisgICAg U0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBB UlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAor ICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2N5Y2xlX21peGVkCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQg Uk9XCisgICAgUEFUVEVSTiAoKEEqIEIqKSopCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0En ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOwotLSAKMi40 My4wCgo= ----Next_Part(Sun_Feb_15_18_06_52_2026_930)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v43-0008-Row-pattern-recognition-patch-typedefs.list.patch" RnJvbSBmOWI1YzgxOTMxYzcwNGI2OTdjODNhZTkxMjUzOTk4OWQ5ZmQxYjg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTdW4sIDE1IEZlYiAyMDI2IDE3OjQ3OjQ5ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDMg OC84XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAodHlwZWRlZnMubGlzdCkuCgotLS0K IHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IHwgMTUgKysrKysrKysrKysrKysrCiAx IGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK aW5kZXggMjQxOTQ1NzM0ZWMuLmU5YjAyMzlhZjk2IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dApAQCAtMTc3NCw2ICsxNzc0LDcgQEAgTmFtZWRMV0xvY2tUcmFuY2hlUmVxdWVzdAogTmFtZWRU dXBsZXN0b3JlU2NhbgogTmFtZWRUdXBsZXN0b3JlU2NhblN0YXRlCiBOYW1lc3BhY2VJbmZvCitO YXZpZ2F0aW9uSW5mbwogTmVzdExvb3AKIE5lc3RMb29wUGFyYW0KIE5lc3RMb29wU3RhdGUKQEAg LTE3ODMsNiArMTc4NCw3IEBAIE5ld0NvbnN0cmFpbnQKIE5leHRTYW1wbGVCbG9ja19mdW5jdGlv bgogTmV4dFNhbXBsZVR1cGxlX2Z1bmN0aW9uCiBOZXh0VmFsdWVFeHByCitORkFMZW5ndGhTdGF0 cwogTm9kZQogTm9kZVRhZwogTm9uRW1wdHlSYW5nZQpAQCAtMjQ0OCw2ICsyNDUwLDE5IEBAIFJJ X0NvbXBhcmVLZXkKIFJJX0NvbnN0cmFpbnRJbmZvCiBSSV9RdWVyeUhhc2hFbnRyeQogUklfUXVl cnlLZXkKK1JQQ29tbW9uU3ludGF4CitSUFJEZXB0aAorUlBSRWxlbUZsYWdzCitSUFJFbGVtSWR4 CitSUFJORkFDb250ZXh0CitSUFJORkFTdGF0ZQorUlBSUGF0dGVybgorUlBSUGF0dGVybkVsZW1l bnQKK1JQUlBhdHRlcm5Ob2RlCitSUFJQYXR0ZXJuTm9kZVR5cGUKK1JQUlF1YW50aXR5CitSUFJW YXJJZAorUlBTa2lwVG8KIFJURUtpbmQKIFJURVBlcm1pc3Npb25JbmZvCiBSV0NvbmZsaWN0Ci0t IAoyLjQzLjAKCg== ----Next_Part(Sun_Feb_15_18_06_52_2026_930)----