From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id GBcJHeIx+V7xdwAA0tVLHw (envelope-from ) for ; Mon, 29 Jun 2020 00:12:18 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id qG3lGOIx+V6bUAAAbx9fmQ (envelope-from ) for ; Mon, 29 Jun 2020 00:12:18 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id F016594053D for ; Mon, 29 Jun 2020 00:12:15 +0000 (UTC) Received: from localhost ([::1]:54946 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jphPB-0006na-AU for larch@yhetil.org; Sun, 28 Jun 2020 20:12:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54628) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jphOU-0006m1-1H for emacs-orgmode@gnu.org; Sun, 28 Jun 2020 20:11:30 -0400 Received: from mail-ed1-f43.google.com ([209.85.208.43]:38931) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jphOO-0002Oj-Hx for emacs-orgmode@gnu.org; Sun, 28 Jun 2020 20:11:29 -0400 Received: by mail-ed1-f43.google.com with SMTP id d18so5719839edv.6 for ; Sun, 28 Jun 2020 17:11:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=wrsbnYxSj/ihvhJbmKsbR8ul4/EAjQ649WmJeH+4CEU=; b=BJZg/96lyXwGLq3zYhLhnHa14Dl+5Spj9bUDrM5dozuU/ZdQLyVomKlbcfNjkjBOK4 qaSvSx7SUdlzidYHXTWAuN6xjoxj10BZcEeAyyX2sq65sQLJer6mRr6Yklmb4jpUByCh zmjjRMYqrDLwTie5Vao5MvleaV4iZBcO4Ag01Puw1ALpwi1IhWe/W/EwpJnXmeRK9cLS rJv0omGgFF7esYpEEkhrdl06OcLrM0HcZ3gfj2ABUAYjjKitwLJllMcpfCXq8bZaX+MI q2wODNlmi0xBKoW2VyXL1BbaRNeA4LtfEmq9wb056K+VDrIdcjcnzVJKWAJBIjjzw3vw KTlg== X-Gm-Message-State: AOAM5337MijRjcHUf0Cpn/zlPeFWv+z0smlz8QsMwdnNsGucszSlGTqa g0HgvVB9wW8/pWm2B4uyH4tPwY4b2DVhW7MqQqZV+w== X-Google-Smtp-Source: ABdhPJxjScDb+w4Fkg7oRA7bzh7QVLXTCUXFK1hYEjBSPj7NgAo6euzz8lnsSJ/ptNC9V6FUuwyZCBMc7OGODRwhzFQ= X-Received: by 2002:a50:ec8f:: with SMTP id e15mr14627710edr.70.1593389482184; Sun, 28 Jun 2020 17:11:22 -0700 (PDT) MIME-Version: 1.0 From: ian martins Date: Sun, 28 Jun 2020 20:11:11 -0400 Message-ID: Subject: [PATCH] ob-java support for variables, functional mode, tramp, add tests To: emacs-orgmode@gnu.org Content-Type: multipart/mixed; boundary="00000000000013600405a92de6cd" Received-SPF: pass client-ip=209.85.208.43; envelope-from=ianxm1@gmail.com; helo=mail-ed1-f43.google.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/06/28 20:11:22 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 5.0 requ) BAYES_00=-1.9, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FORGED_FROMDOMAIN=1, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Scanner: scn0 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=jhu.edu (policy=none); spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Spam-Score: 0.19 X-TUID: DqkooQsuUWuP --00000000000013600405a92de6cd Content-Type: multipart/alternative; boundary="00000000000013600305a92de6cb" --00000000000013600305a92de6cb Content-Type: text/plain; charset="UTF-8" Hello. Attached is a patch to update the ob-java.el implementation. This allows package, class and imports to be provided in the code or header arguments or omitted, accepts variables, supports functional mode (:results value), writes temp files to the temp directory instead of current dir, works with tramp, and adds tests. The "writes temp files to the temp directory" forced changes in ob-core in order to write and delete directories to the temp directory. Please review. Ian --00000000000013600305a92de6cb Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello. Attached is a patch to update the ob-java.el i= mplementation. This allows package, class and imports to be provided in the= code or header arguments or omitted, accepts variables, supports functiona= l mode (:results value), writes temp files to the temp directory instead of= current dir, works with tramp, and adds tests.

Th= e "writes temp files to the temp directory" forced changes in ob-= core in order to write and delete directories to the temp directory.

Please review.
Ian
--00000000000013600305a92de6cb-- --00000000000013600405a92de6cd Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Update-ob-java-to-allow-functional-mode-accept-varia.patch" Content-Disposition: attachment; filename="0001-Update-ob-java-to-allow-functional-mode-accept-varia.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kbzqobfn0 RnJvbSAzZDY2MjQ3ZTNhYWJlYWQ3Y2YxYmRhNDkzMGYwYjdhODRlM2VlMzI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJYW4gTWFydGlucyA8aWFueG1Aamh1LmVkdT4KRGF0ZTogU3Vu LCAyOCBKdW4gMjAyMCAxOToyNzowOCAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFVwZGF0ZSBvYi1q YXZhIHRvIGFsbG93IGZ1bmN0aW9uYWwgbW9kZSwgYWNjZXB0IHZhcmlhYmxlcywKIHdvcmsgd2l0 aCB0cmFtcCwgZXRjCgoqIG9iLWNvcmUuZWwgKG9yZy1iYWJlbC10ZW1wLWZpbGUsCm9yZy1iYWJl bC1yZW1vdmUtdGVtcG9yYXJ5LWRpcmVjdG9yeSk6IENyZWF0ZSBhbmQgcmVtb3ZlIHRlbXAKZGly ZWN0b3JpZXMuCiogb2ItamF2YS5lbDogQWRkIHN1cHBvcnQgZm9yIGZ1bmN0aW9uYWwgbW9kZSwg dmFyaWFibGVzLCBtYWtlIGNsYXNzCmFuZCBtYWluIG1ldGhvZCBkZWZpbml0aW9ucyBvcHRpb25h bCwgd3JpdGUgZmlsZXMgaW4gdGVtcG9yYXJ5CmRpcmVjdG9yeSwgd29yayB3aXRoIHRyYW1wLgoq IG9iLWphdmEtdGVzdC5vcmc6IE5ldyB0ZXN0IGRhdGEuCiogdGVzdC1vYi1qYXZhLmVsOiBOZXcg dGVzdHMuCgpKYXZhIHJlcXVpcmVzIHNvdXJjZSBmaWxlcyBuYW1lcyBhbmQgZGlyZWN0b3JpZXMg dG8gbWF0Y2ggdGhlaXIgY2xhc3MKYW5kIHBhY2thZ2UgbmFtZXMuICBUaGUgb2xkIGltcGxlbWVu dGF0aW9uIHdyb3RlIHRoZXNlIGRpcmVjdG9yaWVzIGFuZApmaWxlcyBpbiB0aGUgY3VycmVudCBk aXJlY3RvcnkuICBXZSBtb3ZlIHRoZXNlIGZpbGVzIHRvIHRoZSB0ZW1wb3JhcnkKZGlyZWN0b3J5 IHRvIHdvcmsgd2l0aCB0cmFtcCBhbmQgYXZvaWQgcG9sbHV0aW5nIHRoZSBjdXJyZW50CmRpcmVj dG9yeS4gIEluIG9yZGVyIHRvIG1vdmUgdGhlc2UgZmlsZXMgdG8gdGhlIHRlbXBvcmFyeSBkaXJl Y3Rvcnkgd2UKaGF2ZSB0byBtb2RpZnkgb2ItY29yZSB0byB3cml0ZSBhbmQgcmVtb3ZlIGRpcmV0 b3JpZXMuCi0tLQogbGlzcC9vYi1jb3JlLmVsICAgICAgICAgICAgICAgICAgIHwgIDU1ICsrLS0t CiBsaXNwL29iLWphdmEuZWwgICAgICAgICAgICAgICAgICAgfCAzNDAgKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tCiB0ZXN0aW5nL2V4YW1wbGVzL29iLWphdmEtdGVzdC5vcmcgfCAzMTAg KysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0aW5nL2xpc3AvdGVzdC1vYi1qYXZhLmVs ICAgICAgfCAyOTQgKysrKysrKysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwg OTMyIGluc2VydGlvbnMoKyksIDY3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRl c3RpbmcvZXhhbXBsZXMvb2ItamF2YS10ZXN0Lm9yZwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3Rp bmcvbGlzcC90ZXN0LW9iLWphdmEuZWwKCmRpZmYgLS1naXQgYS9saXNwL29iLWNvcmUuZWwgYi9s aXNwL29iLWNvcmUuZWwKaW5kZXggZTc5ODU5NWJkLi40YzIyNTIyZTMgMTAwNjQ0Ci0tLSBhL2xp c3Avb2ItY29yZS5lbAorKysgYi9saXNwL29iLWNvcmUuZWwKQEAgLTMwNzgsMTcgKzMwNzgsMTcg QEAgRW1hY3Mgc2h1dGRvd24uIikpCiAJICAgLEB0YWJsZS1mb3JtcykpKSkpCiAoZGVmLWVkZWJ1 Zy1zcGVjIG9yZy1iYWJlbC1yZXN1bHQtY29uZCAoZm9ybSBmb3JtIGJvZHkpKQogCi0oZGVmdW4g b3JnLWJhYmVsLXRlbXAtZmlsZSAocHJlZml4ICZvcHRpb25hbCBzdWZmaXgpCisoZGVmdW4gb3Jn LWJhYmVsLXRlbXAtZmlsZSAocHJlZml4ICZvcHRpb25hbCBzdWZmaXggZGlyLWZsYWcpCiAgICJD cmVhdGUgYSB0ZW1wb3JhcnkgZmlsZSBpbiB0aGUgYG9yZy1iYWJlbC10ZW1wb3JhcnktZGlyZWN0 b3J5Jy4KLVBhc3NlcyBQUkVGSVggYW5kIFNVRkZJWCBkaXJlY3RseSB0byBgbWFrZS10ZW1wLWZp bGUnIHdpdGggdGhlCi12YWx1ZSBvZiBgdGVtcG9yYXJ5LWZpbGUtZGlyZWN0b3J5JyB0ZW1wb3Jh cmlseSBzZXQgdG8gdGhlIHZhbHVlCi1vZiBgb3JnLWJhYmVsLXRlbXBvcmFyeS1kaXJlY3Rvcnkn LiIKK1Bhc3NlcyBQUkVGSVgsIFNVRkZJWCBhbmQgRElSLUZMQUcgZGlyZWN0bHkgdG8gYG1ha2Ut dGVtcC1maWxlJword2l0aCB0aGUgdmFsdWUgb2YgYHRlbXBvcmFyeS1maWxlLWRpcmVjdG9yeScg dGVtcG9yYXJpbHkgc2V0IHRvCit0aGUgdmFsdWUgb2YgYG9yZy1iYWJlbC10ZW1wb3JhcnktZGly ZWN0b3J5Jy4iCiAgIChpZiAoZmlsZS1yZW1vdGUtcCBkZWZhdWx0LWRpcmVjdG9yeSkKICAgICAg IChsZXQgKChwcmVmaXgKICAgICAgICAgICAgICAoY29uY2F0IChmaWxlLXJlbW90ZS1wIGRlZmF1 bHQtZGlyZWN0b3J5KQogICAgICAgICAgICAgICAgICAgICAgKGV4cGFuZC1maWxlLW5hbWUKIAkJ ICAgICAgcHJlZml4IG9yZy1iYWJlbC1yZW1vdGUtdGVtcG9yYXJ5LWRpcmVjdG9yeSkpKSkKLSAg ICAgICAgKG1ha2UtdGVtcC1maWxlIHByZWZpeCBuaWwgc3VmZml4KSkKKyAgICAgICAgKG1ha2Ut dGVtcC1maWxlIHByZWZpeCBkaXItZmxhZyBzdWZmaXgpKQogICAgIChsZXQgKCh0ZW1wb3Jhcnkt ZmlsZS1kaXJlY3RvcnkKIAkgICAob3IgKGFuZCAoYm91bmRwICdvcmctYmFiZWwtdGVtcG9yYXJ5 LWRpcmVjdG9yeSkKIAkJICAgIChmaWxlLWV4aXN0cy1wIG9yZy1iYWJlbC10ZW1wb3JhcnktZGly ZWN0b3J5KQpAQCAtMzA5OSwyNSArMzA5OSwzMiBAQCBvZiBgb3JnLWJhYmVsLXRlbXBvcmFyeS1k aXJlY3RvcnknLiIKIChkZWZ1biBvcmctYmFiZWwtcmVtb3ZlLXRlbXBvcmFyeS1kaXJlY3Rvcnkg KCkKICAgIlJlbW92ZSBgb3JnLWJhYmVsLXRlbXBvcmFyeS1kaXJlY3RvcnknIG9uIEVtYWNzIHNo dXRkb3duLiIKICAgKHdoZW4gKGFuZCAoYm91bmRwICdvcmctYmFiZWwtdGVtcG9yYXJ5LWRpcmVj dG9yeSkKLQkgICAgIChmaWxlLWV4aXN0cy1wIG9yZy1iYWJlbC10ZW1wb3JhcnktZGlyZWN0b3J5 KSkKLSAgICA7OyB0YWtlbiBmcm9tIGBkZWxldGUtZGlyZWN0b3J5JyBpbiBmaWxlcy5lbAotICAg IChjb25kaXRpb24tY2FzZSBuaWwKLQkocHJvZ24KLQkgIChtYXBjIChsYW1iZGEgKGZpbGUpCi0J CSAgOzsgVGhpcyB0ZXN0IGlzIGVxdWl2YWxlbnQgdG8KLQkJICA7OyAoYW5kIChmaWxlLWRpcmVj dG9yeS1wIGZuKSAobm90IChmaWxlLXN5bWxpbmstcCBmbikpKQotCQkgIDs7IGJ1dCBtb3JlIGVm ZmljaWVudAotCQkgIChpZiAoZXEgdCAoY2FyIChmaWxlLWF0dHJpYnV0ZXMgZmlsZSkpKQotCQkg ICAgICAoZGVsZXRlLWRpcmVjdG9yeSBmaWxlKQotCQkgICAgKGRlbGV0ZS1maWxlIGZpbGUpKSkK LQkJKGRpcmVjdG9yeS1maWxlcyBvcmctYmFiZWwtdGVtcG9yYXJ5LWRpcmVjdG9yeSAnZnVsbAot CQkJCSBkaXJlY3RvcnktZmlsZXMtbm8tZG90LWZpbGVzLXJlZ2V4cCkpCi0JICAoZGVsZXRlLWRp cmVjdG9yeSBvcmctYmFiZWwtdGVtcG9yYXJ5LWRpcmVjdG9yeSkpCi0gICAgICAoZXJyb3IKLSAg ICAgICAobWVzc2FnZSAiRmFpbGVkIHRvIHJlbW92ZSB0ZW1wb3JhcnkgT3JnLWJhYmVsIGRpcmVj dG9yeSAlcyIKLQkJKGlmIChib3VuZHAgJ29yZy1iYWJlbC10ZW1wb3JhcnktZGlyZWN0b3J5KQot CQkgICAgb3JnLWJhYmVsLXRlbXBvcmFyeS1kaXJlY3RvcnkKLQkJICAiW2RpcmVjdG9yeSBub3Qg ZGVmaW5lZF0iKSkpKSkpCisgICAgICAgICAgICAgKGZpbGUtZXhpc3RzLXAgb3JnLWJhYmVsLXRl bXBvcmFyeS1kaXJlY3RvcnkpKQorICAgIDs7IFRoaXMgaXMgZXF1aXZhbGVudCB0byAicm0gLXJm ICogZGlyIiBzbyB3ZSBzaG91bGQgYmUgcmVhbGx5CisgICAgOzsgc3VyZSBgZGlyJyBpc24ndCAv LiAgVGhpcyBpcyBtYWRlIHNhZmVyIGJ1dCBtb3JlIGJyaXR0bGUgYnkKKyAgICA7OyBmaWx0ZXJp bmcgdGhlIGZpcnN0IGxldmVsIGZpbGVzIGJ5IHRoZSBlbWFjcyB0bXBmaWxlIGZvcm1hdC4KKyAg ICAoaWYgKDwgKGxlbmd0aCBvcmctYmFiZWwtdGVtcG9yYXJ5LWRpcmVjdG9yeSkgMykKKyAgICAg ICAgKG1lc3NhZ2UgKGNvbmNhdCAiTm90IGRlbGV0aW5nIGJhYmVsIHRlbXAgc3ViZGlyZWN0b3Jp ZXMgc2luY2UgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJgYmFiZWwtdGVtcG9yYXJ5LWRp cmVjdG9yeScgZG9lc24ndCBhcHBlYXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJ0byBi ZSBzZXQgdG8gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiIpKQorICAgICAgOzsgdGFrZW4gZnJvbSBg ZGVsZXRlLWRpcmVjdG9yeScgaW4gZmlsZXMuZWwKKyAgICAgIChjb25kaXRpb24tY2FzZSBuaWwK KyAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgIChtYXBjIChsYW1iZGEgKGZpbGUpCisgICAg ICAgICAgICAgICAgICAgIDs7IFRoaXMgdGVzdCBpcyBlcXVpdmFsZW50IHRvCisgICAgICAgICAg ICAgICAgICAgIDs7IChhbmQgKGZpbGUtZGlyZWN0b3J5LXAgZm4pIChub3QgKGZpbGUtc3ltbGlu ay1wIGZuKSkpCisgICAgICAgICAgICAgICAgICAgIDs7IGJ1dCBtb3JlIGVmZmljaWVudAorICAg ICAgICAgICAgICAgICAgICAoaWYgKGVxIHQgKGNhciAoZmlsZS1hdHRyaWJ1dGVzIGZpbGUpKSkK KyAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUtZGlyZWN0b3J5IGZpbGUgdCkKKyAgICAg ICAgICAgICAgICAgICAgICAoZGVsZXRlLWZpbGUgZmlsZSkpKQorICAgICAgICAgICAgICAgICAg KGRpcmVjdG9yeS1maWxlcyBvcmctYmFiZWwtdGVtcG9yYXJ5LWRpcmVjdG9yeSAnZnVsbAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXltbOmFsbnVtOl1dKy1bWzphbG51bTpd XC1fXVxcezUsOFxcfSQiKSkKKyAgICAgICAgICAgIChkZWxldGUtZGlyZWN0b3J5IG9yZy1iYWJl bC10ZW1wb3JhcnktZGlyZWN0b3J5KSkKKyAgICAgICAgKGVycm9yCisgICAgICAgICAobWVzc2Fn ZSAiRmFpbGVkIHRvIHJlbW92ZSB0ZW1wb3JhcnkgT3JnLWJhYmVsIGRpcmVjdG9yeSAlcyIKKyAg ICAgICAgICAgICAgICAgIChpZiAoYm91bmRwICdvcmctYmFiZWwtdGVtcG9yYXJ5LWRpcmVjdG9y eSkKKyAgICAgICAgICAgICAgICAgICAgICBvcmctYmFiZWwtdGVtcG9yYXJ5LWRpcmVjdG9yeQor ICAgICAgICAgICAgICAgICAgICAiW2RpcmVjdG9yeSBub3QgZGVmaW5lZF0iKSkpKSkpKQogCiAo YWRkLWhvb2sgJ2tpbGwtZW1hY3MtaG9vayAnb3JnLWJhYmVsLXJlbW92ZS10ZW1wb3JhcnktZGly ZWN0b3J5KQogCmRpZmYgLS1naXQgYS9saXNwL29iLWphdmEuZWwgYi9saXNwL29iLWphdmEuZWwK aW5kZXggZThhYzY3Y2JkLi5iZWVmZTkwMWQgMTAwNjQ0Ci0tLSBhL2xpc3Avb2ItamF2YS5lbAor KysgYi9saXNwL29iLWphdmEuZWwKQEAgLTEsOCArMSw5IEBACi07Ozsgb2ItamF2YS5lbCAtLS0g QmFiZWwgRnVuY3Rpb25zIGZvciBKYXZhICAgICAgICAgIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQ7 IC0qLQorOzs7IG9iLWphdmEuZWwgLS0tIG9yZy1iYWJlbCBmdW5jdGlvbnMgZm9yIGphdmEgZXZh bHVhdGlvbiAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0IC0qLQorCiAKIDs7IENvcHlyaWdodCAoQykg MjAxMS0yMDIwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCi07OyBBdXRob3I6IEVy aWMgU2NodWx0ZQorOzsgQXV0aG9yOiBFcmljIFNjaHVsdGUsIElhbiBNYXJ0aW5zCiA7OyBLZXl3 b3JkczogbGl0ZXJhdGUgcHJvZ3JhbW1pbmcsIHJlcHJvZHVjaWJsZSByZXNlYXJjaAogOzsgSG9t ZXBhZ2U6IGh0dHBzOi8vb3JnbW9kZS5vcmcKIApAQCAtMjMsOCArMjQsNyBAQAogCiA7OzsgQ29t bWVudGFyeToKIAotOzsgQ3VycmVudGx5IHRoaXMgb25seSBzdXBwb3J0cyB0aGUgZXh0ZXJuYWwg Y29tcGlsYXRpb24gYW5kIGV4ZWN1dGlvbgotOzsgb2YgamF2YSBjb2RlIGJsb2NrcyAoaS5lLiwg bm8gc2Vzc2lvbiBzdXBwb3J0KS4KKzs7IE9yZy1CYWJlbCBzdXBwb3J0IGZvciBldmFsdWF0aW5n IGphdmEgc291cmNlIGNvZGUuCiAKIDs7OyBDb2RlOgogKHJlcXVpcmUgJ29iKQpAQCAtMzIsNTIg KzMyLDMwNiBAQAogKGRlZnZhciBvcmctYmFiZWwtdGFuZ2xlLWxhbmctZXh0cykKIChhZGQtdG8t bGlzdCAnb3JnLWJhYmVsLXRhbmdsZS1sYW5nLWV4dHMgJygiamF2YSIgLiAiamF2YSIpKQogCi0o ZGVmY3VzdG9tIG9yZy1iYWJlbC1qYXZhLWNvbW1hbmQgImphdmEiCi0gICJOYW1lIG9mIHRoZSBq YXZhIGNvbW1hbmQuCi1NYXkgYmUgZWl0aGVyIGEgY29tbWFuZCBpbiB0aGUgcGF0aCwgbGlrZSBq YXZhCi1vciBhbiBhYnNvbHV0ZSBwYXRoIG5hbWUsIGxpa2UgL3Vzci9sb2NhbC9iaW4vamF2YQot cGFyYW1ldGVycyBtYXkgYmUgdXNlZCwgbGlrZSBqYXZhIC12ZXJib3NlIgorKGRlZnZhciBvcmct YmFiZWwtZGVmYXVsdC1oZWFkZXItYXJnczpqYXZhICcoKQorICAiRGVmYXVsdCBoZWFkZXIgYXJn cyBmb3IgamF2YSBzb3VyY2UgYmxvY2tzLiIpCisKKyhkZWZjb25zdCBvcmctYmFiZWwtaGVhZGVy LWFyZ3M6amF2YSAnKChpbXBvcnRzIC4gOmFueSkpCisgICJKYXZhLXNwZWNpZmljIGhlYWRlciBh cmd1bWVudHMuIikKKworKGRlZnZhciBvcmctYmFiZWwtamF2YS1jb21waWxlci1jb21tYW5kICJq YXZhYyIKKyAgIk5hbWUgb2YgdGhlIGNvbW1hbmQgdG8gZXhlY3V0ZSB0aGUgamF2YSBjb21waWxl ci4iKQorCisoZGVmdmFyIG9yZy1iYWJlbC1qYXZhLXJ1bnRpbWUtY29tbWFuZCAiamF2YSIKKyAg Ik5hbWUgb2YgdGhlIGNvbW1hbmQgdG8gcnVuIHRoZSBqYXZhIHJ1bnRpbWUuIikKKworKGRlZmN1 c3RvbSBvcmctYmFiZWwtamF2YS1obGluZS10byAibnVsbCIKKyAgIlJlcGxhY2UgaGxpbmVzIGlu IGluY29taW5nIHRhYmxlcyB3aXRoIHRoaXMgd2hlbiB0cmFuc2xhdGluZyB0byBqYXZhLiIKICAg Omdyb3VwICdvcmctYmFiZWwKLSAgOnZlcnNpb24gIjI0LjMiCisgIDp2ZXJzaW9uICIyNS4yIgor ICA6cGFja2FnZS12ZXJzaW9uICcoT3JnIC4gIjkuMyIpCiAgIDp0eXBlICdzdHJpbmcpCiAKLShk ZWZjdXN0b20gb3JnLWJhYmVsLWphdmEtY29tcGlsZXIgImphdmFjIgotICAiTmFtZSBvZiB0aGUg amF2YSBjb21waWxlci4KLU1heSBiZSBlaXRoZXIgYSBjb21tYW5kIGluIHRoZSBwYXRoLCBsaWtl IGphdmFjCi1vciBhbiBhYnNvbHV0ZSBwYXRoIG5hbWUsIGxpa2UgL3Vzci9sb2NhbC9iaW4vamF2 YWMKLXBhcmFtZXRlcnMgbWF5IGJlIHVzZWQsIGxpa2UgamF2YWMgLXZlcmJvc2UiCisoZGVmY3Vz dG9tIG9yZy1iYWJlbC1qYXZhLW51bGwtdG8gJ2hsaW5lCisgICJSZXBsYWNlIGBudWxsJyBpbiBq YXZhIHRhYmxlcyB3aXRoIHRoaXMgYmVmb3JlIHJldHVybmluZy4iCiAgIDpncm91cCAnb3JnLWJh YmVsCi0gIDp2ZXJzaW9uICIyNC4zIgotICA6dHlwZSAnc3RyaW5nKQorICA6dmVyc2lvbiAiMjUu MiIKKyAgOnBhY2thZ2UtdmVyc2lvbiAnKE9yZyAuICI5LjMiKQorICA6dHlwZSAnc3ltYm9sKQog CiAoZGVmdW4gb3JnLWJhYmVsLWV4ZWN1dGU6amF2YSAoYm9keSBwYXJhbXMpCi0gIChsZXQqICgo Y2xhc3NuYW1lIChvciAoY2RyIChhc3NxIDpjbGFzc25hbWUgcGFyYW1zKSkKLQkJCShlcnJvcgot CQkJICJDYW4ndCBjb21waWxlIGEgamF2YSBibG9jayB3aXRob3V0IGEgY2xhc3NuYW1lIikpKQot CSAocGFja2FnZW5hbWUgKGZpbGUtbmFtZS1kaXJlY3RvcnkgY2xhc3NuYW1lKSkKLQkgKHNyYy1m aWxlIChjb25jYXQgY2xhc3NuYW1lICIuamF2YSIpKQotCSAoY21wZmxhZyAob3IgKGNkciAoYXNz cSA6Y21wZmxhZyBwYXJhbXMpKSAiIikpCi0JIChjbWRsaW5lIChvciAoY2RyIChhc3NxIDpjbWRs aW5lIHBhcmFtcykpICIiKSkKLQkgKGNtZGFyZ3MgKG9yIChjZHIgKGFzc3EgOmNtZGFyZ3MgcGFy YW1zKSkgIiIpKQotCSAoZnVsbC1ib2R5IChvcmctYmFiZWwtZXhwYW5kLWJvZHk6Z2VuZXJpYyBi b2R5IHBhcmFtcykpKQotICAgICh3aXRoLXRlbXAtZmlsZSBzcmMtZmlsZSAoaW5zZXJ0IGZ1bGwt Ym9keSkpCi0gICAgKG9yZy1iYWJlbC1ldmFsCi0gICAgIChjb25jYXQgb3JnLWJhYmVsLWphdmEt Y29tcGlsZXIgIiAiIGNtcGZsYWcgIiAiIHNyYy1maWxlKSAiIikKKyAgIkV4ZWN1dGUgYSBqYXZh IHNvdXJjZSBibG9jayB3aXRoIEJPRFkgY29kZSBhbmQgUEFSQU1TIHBhcmFtcy4iCisgIChsZXQq ICgoZnVsbGNsYXNzbmFtZSAob3IgKGNkciAoYXNzcSA6Y2xhc3NuYW1lIHBhcmFtcykpIDsgY2xh c3MgYW5kIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3JnLWJhYmVsLWph dmEtZmluZC1jbGFzc25hbWUgYm9keSkpKQorICAgICAgICAgKGNsYXNzbmFtZSAoaWYgKHNlcS1j b250YWlucyBmdWxsY2xhc3NuYW1lID8uKSAgICA7IGp1c3QgY2xhc3MgbmFtZQorICAgICAgICAg ICAgICAgICAgICAgICAgKGZpbGUtbmFtZS1leHRlbnNpb24gZnVsbGNsYXNzbmFtZSkKKyAgICAg ICAgICAgICAgICAgICAgICBmdWxsY2xhc3NuYW1lKSkKKyAgICAgICAgIChwYWNrYWdlbmFtZSAo aWYgKHNlcS1jb250YWlucyBmdWxsY2xhc3NuYW1lID8uKSAgOyBqdXN0IHBhY2thZ2UgbmFtZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1uYW1lLWJhc2UgZnVsbGNsYXNzbmFtZSkp KQorICAgICAgICAgKHRtcGRpciAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSAob3JnLWJhYmVsLXRl bXAtZmlsZSAiamF2YS0iIG5pbCB0KSkpCisgICAgICAgICAocGFja2FnZWRpciAoaWYgcGFja2Fn ZW5hbWUgICAgICAgICAgICAgICAgICAgICAgIDsgcGFja2FnZSBuYW1lIGFzIGEgcGF0aAorICAg ICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgdG1wZGlyCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICJcXFwuIiAiLyIgcGFja2Fn ZW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICB0bXBkaXIpKQorICAgICAgICAgKHNyYy1m aWxlIChjb25jYXQgdG1wZGlyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVwbGFjZS1y ZWdleHAtaW4tc3RyaW5nICJcXFwuIiAiLyIgZnVsbGNsYXNzbmFtZSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICIuamF2YSIpKQorICAgICAgICAgKGNtZGxpbmUgKG9yIChjZHIgKGFzc3Eg OmNtZGxpbmUgcGFyYW1zKSkgIiIpKQorICAgICAgICAgKGNtZCAoY29uY2F0IG9yZy1iYWJlbC1q YXZhLWNvbXBpbGVyLWNvbW1hbmQgIiAiCisgICAgICAgICAgICAgICAgICAgICAgKG9yZy1iYWJl bC1wcm9jZXNzLWZpbGUtbmFtZSBzcmMtZmlsZSAnbm9xdW90ZSkKKyAgICAgICAgICAgICAgICAg ICAgICAiICYmICIgb3JnLWJhYmVsLWphdmEtcnVudGltZS1jb21tYW5kCisgICAgICAgICAgICAg ICAgICAgICAgIiAtY3AgIiAob3JnLWJhYmVsLXByb2Nlc3MtZmlsZS1uYW1lIHRtcGRpciAnbm9x dW90ZSkKKyAgICAgICAgICAgICAgICAgICAgICAiICIgZnVsbGNsYXNzbmFtZSAiICIgY21kbGlu ZSkpCisgICAgICAgICAocmVzdWx0LXR5cGUgKGNkciAoYXNzcSA6cmVzdWx0LXR5cGUgcGFyYW1z KSkpCisgICAgICAgICAocmVzdWx0LXBhcmFtcyAoY2RyIChhc3NxIDpyZXN1bHQtcGFyYW1zIHBh cmFtcykpKQorICAgICAgICAgKHRtcC1maWxlIChhbmQgKGVxIHJlc3VsdC10eXBlICd2YWx1ZSkK KyAgICAgICAgICAgICAgICAgICAgICAgIChvcmctYmFiZWwtdGVtcC1maWxlICJqYXZhLSIpKSkK KyAgICAgICAgIChmdWxsLWJvZHkgKG9yZy1iYWJlbC1leHBhbmQtYm9keTpqYXZhCisgICAgICAg ICAgICAgICAgICAgICBib2R5IHBhcmFtcyBjbGFzc25hbWUgcGFja2FnZW5hbWUgcmVzdWx0LXR5 cGUgdG1wLWZpbGUpKSkKKwogICAgIDs7IGNyZWF0ZWQgcGFja2FnZS1uYW1lIGRpcmVjdG9yaWVz IGlmIG1pc3NpbmcKLSAgICAodW5sZXNzIChvciAobm90IHBhY2thZ2VuYW1lKSAoZmlsZS1leGlz dHMtcCBwYWNrYWdlbmFtZSkpCi0gICAgICAobWFrZS1kaXJlY3RvcnkgcGFja2FnZW5hbWUgJ3Bh cmVudHMpKQotICAgIChsZXQgKChyZXN1bHRzIChvcmctYmFiZWwtZXZhbCAoY29uY2F0IG9yZy1i YWJlbC1qYXZhLWNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiICIgY21kbGluZSAiICIgY2xhc3NuYW1lICIgIiBjbWRhcmdzKSAiIikpKQotICAgICAg KG9yZy1iYWJlbC1yZWFzc2VtYmxlLXRhYmxlCi0gICAgICAgKG9yZy1iYWJlbC1yZXN1bHQtY29u ZCAoY2RyIChhc3NxIDpyZXN1bHQtcGFyYW1zIHBhcmFtcykpCi0JIChvcmctYmFiZWwtcmVhZCBy ZXN1bHRzKQotICAgICAgICAgKGxldCAoKHRtcC1maWxlIChvcmctYmFiZWwtdGVtcC1maWxlICJj LSIpKSkKLSAgICAgICAgICAgKHdpdGgtdGVtcC1maWxlIHRtcC1maWxlIChpbnNlcnQgcmVzdWx0 cykpCi0gICAgICAgICAgIChvcmctYmFiZWwtaW1wb3J0LWVsaXNwLWZyb20tZmlsZSB0bXAtZmls ZSkpKQotICAgICAgIChvcmctYmFiZWwtcGljay1uYW1lCi0gICAgICAgIChjZHIgKGFzc3EgOmNv bG5hbWUtbmFtZXMgcGFyYW1zKSkgKGNkciAoYXNzcSA6Y29sbmFtZXMgcGFyYW1zKSkpCi0gICAg ICAgKG9yZy1iYWJlbC1waWNrLW5hbWUKLSAgICAgICAgKGNkciAoYXNzcSA6cm93bmFtZS1uYW1l cyBwYXJhbXMpKSAoY2RyIChhc3NxIDpyb3duYW1lcyBwYXJhbXMpKSkpKSkpCisgICAgKHVubGVz cyAob3IgKG5vdCBwYWNrYWdlZGlyKSAoZmlsZS1leGlzdHMtcCBwYWNrYWdlZGlyKSkKKyAgICAg IChtYWtlLWRpcmVjdG9yeSBwYWNrYWdlZGlyICdwYXJlbnRzKSkKKworICAgICh3aXRoLXRlbXAt ZmlsZSBzcmMtZmlsZSAoaW5zZXJ0IGZ1bGwtYm9keSkpCisgICAgKG9yZy1iYWJlbC1yZWFzc2Vt YmxlLXRhYmxlCisgICAgIChvcmctYmFiZWwtamF2YS1ldmFsdWF0ZSBjbWQgcmVzdWx0LXR5cGUg cmVzdWx0LXBhcmFtcyB0bXAtZmlsZSkKKyAgICAgKG9yZy1iYWJlbC1waWNrLW5hbWUKKyAgICAg IChjZHIgKGFzc29jIDpjb2xuYW1lLW5hbWVzIHBhcmFtcykpIChjZHIgKGFzc29jIDpjb2xuYW1l cyBwYXJhbXMpKSkKKyAgICAgKG9yZy1iYWJlbC1waWNrLW5hbWUKKyAgICAgIChjZHIgKGFzc29j IDpyb3duYW1lLW5hbWVzIHBhcmFtcykpIChjZHIgKGFzc29jIDpyb3duYW1lcyBwYXJhbXMpKSkp KSkKKworOzsgaGVscGVyIGZ1bmN0aW9ucworCisoZGVmdW4gb3JnLWJhYmVsLWphdmEtZmluZC1j bGFzc25hbWUgKGJvZHkpCisgICJUcnkgdG8gZmluZCBmdWxseSBxdWFsaWZpZWQgY2xhc3NuYW1l IGluIEJPRFkuIgorICAobGV0ICgocGFja2FnZSAoaWYgKHN0cmluZy1tYXRjaCAicGFja2FnZSBc XFwoW14gXSpcXFwpOyIgYm9keSkKKyAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1zdHJpbmcg MSBib2R5KSkpCisgICAgICAgIChjbGFzcyAoaWYgKHN0cmluZy1tYXRjaCAicHVibGljIGNsYXNz IFxcXChbXiBcbl0qXFxcKSIgYm9keSkKKyAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5n IDEgYm9keSkpKSkKKyAgICAob3IgKGFuZCBwYWNrYWdlIGNsYXNzIChjb25jYXQgcGFja2FnZSAi LiIgY2xhc3MpKQorICAgICAgICAoYW5kIGNsYXNzIGNsYXNzKQorICAgICAgICAoYW5kIHBhY2th Z2UgKGNvbmNhdCBwYWNrYWdlICIuTWFpbiIpKQorICAgICAgICAiTWFpbiIpKSkKKworKGRlZnVu IG9yZy1iYWJlbC1leHBhbmQtYm9keTpqYXZhIChib2R5IHBhcmFtcyBjbGFzc25hbWUgcGFja2Fn ZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQtdHlw ZSB0bXAtZmlsZSkKKyAgIkV4cGFuZCBCT0RZIHdpdGggUEFSQU1TLgorQk9EWSBjb3VsZCBiZSBh IGZldyBzdGF0ZW1lbnRzLCBvciBjb3VsZCBpbmNsdWRlIGEgZnVsbCBjbGFzcworZGVmaW5pdGlv biBzcGVjaWZ5aW5nIHBhY2thZ2UsIGltcG9ydHMsIGFuZCBjbGFzcy4gIEJlY2F1c2Ugd2UKK2Fs bG93IHRoaXMgZmxleGliaWxpdHkgaW4gd2hhdCB0aGUgc291cmNlIGJsb2NrIGNhbiBjb250YWlu LCBpdAoraXMgc2ltcGxlc3QgdG8gZXhwYW5kIHRoZSBjb2RlIGJsb2NrIGZyb20gdGhlIGluc2lk ZSBvdXQuCisKK0NMQVNTTkFNRSBuYW1lIG9mIHRoZSBjbGFzcywgd2hpY2ggbWF5IGhhdmUgYmVl biBzcGVjaWZpZWQKK2luIG11bHRpcGxlIHdheXMuCisKK1BBQ0tBR0VOQU1FIG5hbWUgb2YgdGhl IGphdmEgcGFja2FnZSBjb250YWluaW5nIHRoaXMgY2xhc3MuCisKK1JFU1VMVC1UWVBFIG91dHB1 dCBvciB2YWx1ZS4KKworVE1QLUZJTEUgbmFtZSBvZiB0ZW1wZmlsZSB0byB3cml0ZSB0byBpZiB2 YWx1ZSBgcmVzdWx0LXR5cGUnLiIKKyAgKGxldCogKCh2YXItbGluZXMgKG9yZy1iYWJlbC12YXJp YWJsZS1hc3NpZ25tZW50czpqYXZhIHBhcmFtcykpCisgICAgICAgICAoaW1wb3J0cy12YWwgKGFz c3EgOmltcG9ydHMgcGFyYW1zKSkKKyAgICAgICAgIChpbXBvcnRzIChpZiBpbXBvcnRzLXZhbAor ICAgICAgICAgICAgICAgICAgICAgIChzcGxpdC1zdHJpbmcgKG9yZy1iYWJlbC1yZWFkIChjZHIg aW1wb3J0cy12YWwpIG5pbCkgIiAiKQorICAgICAgICAgICAgICAgICAgICBuaWwpKQorICAgICAg ICAgKHBhY2thZ2UtcmUgIl5bWzpzcGFjZTpdXSpwYWNrYWdlIC4qOyQiKQorICAgICAgICAgKGlt cG9ydHMtcmUgIl5bWzpzcGFjZTpdXSppbXBvcnQgLio7JCIpCisgICAgICAgICAoY2xhc3MtcmUg Il5wdWJsaWMgY2xhc3MgW1s6YWxudW06XV9dK1tbOnNwYWNlOl1dKlxuP1tbOnNwYWNlOl1dKnsi KQorICAgICAgICAgKG1haW4tcmUgInB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1xcKD86 XFxbXVxcKT8gYXJnc1xcKD86XFxbXVxcKT8pLipcbj9bWzpzcGFjZTpdXSp7IikKKyAgICAgICAg IChtb3ZlLXBhc3QgKGxhbWJkYSAocmUpICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgcmUgbmls IHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKDErICht YXRjaC1lbmQgMCkpKSkpKSkKKyAgICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgKGluc2VydCBi b2R5KQorCisgICAgICA7OyB3cmFwIG1haW4KKyAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikp CisgICAgICAod2hlbiAobm90IChyZS1zZWFyY2gtZm9yd2FyZCBtYWluLXJlIG5pbCB0KSkKKyAg ICAgICAgKGZ1bmNhbGwgbW92ZS1wYXN0IHBhY2thZ2UtcmUpIDsgaWYgcGFja2FnZSBpcyBkZWZp bmVkLCBtb3ZlIHBhc3QgaXQKKyAgICAgICAgKGZ1bmNhbGwgbW92ZS1wYXN0IGltcG9ydHMtcmUp IDsgaWYgaW1wb3J0cyBhcmUgZGVmaW5lZCwgbW92ZSBwYXN0IHRoZW0KKyAgICAgICAgKGluc2Vy dCAicHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykge1xuIikKKyAgICAgICAg KGdvdG8tY2hhciAocG9pbnQtbWF4KSkKKyAgICAgICAgKGluc2VydCAiXG59IikpCisKKyAgICAg IDs7IHdyYXAgY2xhc3MKKyAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAod2hl biAobm90IChyZS1zZWFyY2gtZm9yd2FyZCBjbGFzcy1yZSBuaWwgdCkpCisgICAgICAgIChmdW5j YWxsIG1vdmUtcGFzdCBwYWNrYWdlLXJlKSA7IGlmIHBhY2thZ2UgaXMgZGVmaW5lZCwgbW92ZSBw YXN0IGl0CisgICAgICAgIChmdW5jYWxsIG1vdmUtcGFzdCBpbXBvcnRzLXJlKSA7IGlmIGltcG9y dHMgYXJlIGRlZmluZWQsIG1vdmUgcGFzdCB0aGVtCisgICAgICAgIChpbnNlcnQgKGNvbmNhdCAg InB1YmxpYyBjbGFzcyAiIChmaWxlLW5hbWUtYmFzZSBjbGFzc25hbWUpICIge1xuIikpCisgICAg ICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCisgICAgICAgIChpbnNlcnQgIlxufSIpKQorCisg ICAgICA7OyBpbnNlcnQgdmFyaWFibGVzCisgICAgICAod2hlbiB2YXItbGluZXMKKyAgICAgICAg KGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgKGZ1bmNhbGwgbW92ZS1wYXN0IGNsYXNz LXJlKSAgIDsgbW92ZSBpbnNpZGUgY2xhc3MKKyAgICAgICAgKGluc2VydCAobWFwY29uY2F0ICdp ZGVudGl0eSB2YXItbGluZXMgIlxuIikpCisgICAgICAgIChpbnNlcnQgIlxuIikpCisKKyAgICAg IDs7IHNwZWNpYWwgaGFuZGxpbmcgdG8gcmV0dXJuIHZhbHVlCisgICAgICAod2hlbiAoZXEgcmVz dWx0LXR5cGUgJ3ZhbHVlKQorICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAg ICAoZnVuY2FsbCBtb3ZlLXBhc3QgY2xhc3MtcmUpICAgOyBtb3ZlIGluc2lkZSBjbGFzcworICAg ICAgICAoaW5zZXJ0ICJcbiAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBfX3RvU3RyaW5nKE9iamVj dCB2YWwpIHtcbiIpCisgICAgICAgIChpbnNlcnQgIiAgICAgICAgaWYgKHZhbCBpbnN0YW5jZW9m IFN0cmluZykge1xuIikKKyAgICAgICAgKGluc2VydCAiICAgICAgICAgICAgcmV0dXJuIFwiXFxc IlwiICsgdmFsICsgXCJcXFwiXCI7XG4iKQorICAgICAgICAoaW5zZXJ0ICIgICAgICAgIH0gZWxz ZSBpZiAodmFsID09IG51bGwpIHtcbiIpCisgICAgICAgIChpbnNlcnQgIiAgICAgICAgICAgIHJl dHVybiBcIm51bGxcIjtcbiIpCisgICAgICAgIChpbnNlcnQgIiAgICAgICAgfSBlbHNlIGlmICh2 YWwuZ2V0Q2xhc3MoKS5pc0FycmF5KCkpIHtcbiIpCisgICAgICAgIChpbnNlcnQgIiAgICAgICAg ICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTtcbiIpCisgICAgICAgIChp bnNlcnQgIiAgICAgICAgICAgIE9iamVjdFtdIHZhbHMgPSAoT2JqZWN0W10pdmFsO1xuIikKKyAg ICAgICAgKGluc2VydCAiICAgICAgICAgICAgc2IuYXBwZW5kKFwiW1wiKTtcbiIpCisgICAgICAg IChpbnNlcnQgIiAgICAgICAgICAgIGZvciAoaW50IGlpPTA7IGlpPHZhbHMubGVuZ3RoOyBpaSsr KSB7XG4iKQorICAgICAgICAoaW5zZXJ0ICIgICAgICAgICAgICAgICAgc2IuYXBwZW5kKF9fdG9T dHJpbmcodmFsc1tpaV0pKTtcbiIpCisgICAgICAgIChpbnNlcnQgIiAgICAgICAgICAgICAgICBp ZiAoaWk8dmFscy5sZW5ndGgtMSlcbiIpCisgICAgICAgIChpbnNlcnQgIiAgICAgICAgICAgICAg ICAgICAgc2IuYXBwZW5kKFwiLFwiKTtcbiIpCisgICAgICAgIChpbnNlcnQgIiAgICAgICAgICAg IH1cbiIpCisgICAgICAgIChpbnNlcnQgIiAgICAgICAgICAgIHNiLmFwcGVuZChcIl1cIik7XG4i KQorICAgICAgICAoaW5zZXJ0ICIgICAgICAgICAgICByZXR1cm4gc2IudG9TdHJpbmcoKTtcbiIp CisgICAgICAgIChpbnNlcnQgIiAgICAgICAgfSBlbHNlIGlmICh2YWwgaW5zdGFuY2VvZiBMaXN0 KSB7XG4iKQorICAgICAgICAoaW5zZXJ0ICIgICAgICAgICAgICBTdHJpbmdCdWZmZXIgc2IgPSBu ZXcgU3RyaW5nQnVmZmVyKCk7XG4iKQorICAgICAgICAoaW5zZXJ0ICIgICAgICAgICAgICBMaXN0 IHZhbHMgPSAoTGlzdCl2YWw7XG4iKQorICAgICAgICAoaW5zZXJ0ICIgICAgICAgICAgICBzYi5h cHBlbmQoXCJbXCIpO1xuIikKKyAgICAgICAgKGluc2VydCAiICAgICAgICAgICAgZm9yIChpbnQg aWk9MDsgaWk8dmFscy5zaXplKCk7IGlpKyspIHtcbiIpCisgICAgICAgIChpbnNlcnQgIiAgICAg ICAgICAgICAgICBzYi5hcHBlbmQoX190b1N0cmluZyh2YWxzLmdldChpaSkpKTtcbiIpCisgICAg ICAgIChpbnNlcnQgIiAgICAgICAgICAgICAgICBpZiAoaWk8dmFscy5zaXplKCktMSlcbiIpCisg ICAgICAgIChpbnNlcnQgIiAgICAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKFwiLFwiKTtcbiIp CisgICAgICAgIChpbnNlcnQgIiAgICAgICAgICAgIH1cbiIpCisgICAgICAgIChpbnNlcnQgIiAg ICAgICAgICAgIHNiLmFwcGVuZChcIl1cIik7XG4iKQorICAgICAgICAoaW5zZXJ0ICIgICAgICAg ICAgICByZXR1cm4gc2IudG9TdHJpbmcoKTtcbiIpCisgICAgICAgIChpbnNlcnQgIiAgICAgICAg fSBlbHNlIHtcbiIpCisgICAgICAgIChpbnNlcnQgIiAgICAgICAgICAgIHJldHVybiBTdHJpbmcu dmFsdWVPZih2YWwpO1xuIikKKyAgICAgICAgKGluc2VydCAiICAgICAgICB9XG4iKQorICAgICAg ICAoaW5zZXJ0ICIgICAgfVxuXG4iKQorICAgICAgICAoaW5zZXJ0ICIgICAgcHVibGljIHN0YXRp YyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIElPRXhjZXB0aW9uIHtcbiIpCisgICAg ICAgIChpbnNlcnQgKGZvcm1hdCAiICAgICAgICBCdWZmZXJlZFdyaXRlciBvdXRwdXQgPSBuZXcg QnVmZmVyZWRXcml0ZXIobmV3IEZpbGVXcml0ZXIoXCIlc1wiKSk7XG4iIChvcmctYmFiZWwtcHJv Y2Vzcy1maWxlLW5hbWUgdG1wLWZpbGUgJ25vcXVvdGUpKSkKKyAgICAgICAgKGluc2VydCAiICAg ICAgICBvdXRwdXQud3JpdGUoX190b1N0cmluZyhfbWFpbihhcmdzKSkpO1xuIikKKyAgICAgICAg KGluc2VydCAiICAgICAgICBvdXRwdXQuY2xvc2UoKTtcbiIpCisgICAgICAgIChpbnNlcnQgIiAg ICB9XG5cbiIpCisgICAgICAgIChzZWFyY2gtZm9yd2FyZCAicHVibGljIHN0YXRpYyB2b2lkIG1h aW4oIikgOyByZW5hbWUgZXhpc3RpbmcgbWFpbgorICAgICAgICAocmVwbGFjZS1tYXRjaCAicHVi bGljIHN0YXRpYyBPYmplY3QgX21haW4oIikpCisKKyAgICAgIDs7IGFkZCBpbXBvcnRzCisgICAg ICAoaWYgKGVxIHJlc3VsdC10eXBlICd2YWx1ZSkKKyAgICAgICAgICAoc2V0cSBpbXBvcnRzIChh cHBlbmQgJygiamF2YS5pby5CdWZmZXJlZFdyaXRlciIgImphdmEuaW8uRmlsZVdyaXRlciIgImph dmEuaW8uSU9FeGNlcHRpb24iKSBpbXBvcnRzKSkpCisgICAgICAoaWYgKHNlcS1zb21lIChsYW1i ZGEgKHZhci1saW5lKSAoc3RyaW5nLW1hdGNoLXAgIkxpc3QiIHZhci1saW5lKSkgdmFyLWxpbmVz KQorICAgICAgICAgIChzZXRxIGltcG9ydHMgKGFwcGVuZCAnKCJqYXZhLnV0aWwuQXJyYXlzIikg aW1wb3J0cykpKQorICAgICAgKHNldHEgaW1wb3J0cyAoYXBwZW5kICcoImphdmEudXRpbC5MaXN0 IikgaW1wb3J0cykpIDsgYWx3YXlzIG5lZWRlZCBmb3IgdG9TdHJpbmcKKyAgICAgICh3aGVuIGlt cG9ydHMKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgKGZ1bmNhbGwg bW92ZS1wYXN0IHBhY2thZ2UtcmUpIDsgaWYgcGFja2FnZSBpcyBkZWZpbmVkLCBtb3ZlIHBhc3Qg aXQKKyAgICAgICAgKGluc2VydCAobWFwY29uY2F0IChsYW1iZGEgKHBhY2thZ2UpIChjb25jYXQg ImltcG9ydCAiIHBhY2thZ2UgIjsiKSkgKGRlbGV0ZS1kdXBzIGltcG9ydHMpICJcbiIpICJcbiIp KQorCisgICAgICA7OyBhZGQgcGFja2FnZSBhdCB0aGUgdG9wCisgICAgICAoZ290by1jaGFyIChw b2ludC1taW4pKQorICAgICAgKHdoZW4gKGFuZCBwYWNrYWdlbmFtZSAobm90IChyZS1zZWFyY2gt Zm9yd2FyZCBwYWNrYWdlLXJlIG5pbCB0KSkpCisgICAgICAgIChpbnNlcnQgKGNvbmNhdCAicGFj a2FnZSAiIHBhY2thZ2VuYW1lICI7XG5cbiIpKSkKKworICAgICAgOzsgcmV0dXJuIGV4cGFuZGVk IGJvZHkKKyAgICAgIChidWZmZXItc3RyaW5nKSkpKQorCisoZGVmdW4gb3JnLWJhYmVsLXZhcmlh YmxlLWFzc2lnbm1lbnRzOmphdmEgKHBhcmFtcykKKyAgIlJldHVybiBhIGxpc3Qgb2YgamF2YSBz dGF0ZW1lbnRzIGFzc2lnbmluZyB0aGUgYmxvY2sncyB2YXJpYWJsZXMuCit2YXJpYWJsZXMgYXJl IGNvbnRhaW5lZCBpbiBQQVJBTVMuIgorICAobWFwY2FyCisgICAobGFtYmRhIChwYWlyKQorICAg ICAobGV0KiAoKHR5cGUtZGF0YSAob3JnLWJhYmVsLWphdmEtdmFsLXRvLXR5cGUgKGNkciBwYWly KSkpCisgICAgICAgICAgICAoYmFzZXR5cGUgKGNhciB0eXBlLWRhdGEpKQorICAgICAgICAgICAg KHZhci10by1qYXZhIChsYW1iZGEgKHZhcikgKGZ1bmNhbGwgIydvcmctYmFiZWwtamF2YS12YXIt dG8tamF2YSB2YXIgYmFzZXR5cGUpKSkpCisgICAgICAgKGZvcm1hdCAiICAgIHN0YXRpYyAlcyAl cyA9ICVzOyIKKyAgICAgICAgICAgICAgIChjZHIgdHlwZS1kYXRhKSAgICAgICAgICAgICAgICAg ICAgIDsgdHlwZQorICAgICAgICAgICAgICAgKGNhciBwYWlyKSAgICAgICAgICAgICAgICAgICAg ICAgICAgOyBuYW1lCisgICAgICAgICAgICAgICAoZnVuY2FsbCB2YXItdG8tamF2YSAoY2RyIHBh aXIpKSkpKSA7IHZhbHVlCisgICAob3JnLWJhYmVsLS1nZXQtdmFycyBwYXJhbXMpKSkKKworKGRl ZnVuIG9yZy1iYWJlbC1qYXZhLXZhci10by1qYXZhICh2YXIgYmFzZXR5cGUpCisgICJDb252ZXJ0 IGFuIGVsaXNwIHZhbHVlIHRvIGEgamF2YSB2YXJpYWJsZS4KK0NvbnZlcnQgYW4gZWxpc3AgdmFs dWUsIFZBUiwgb2YgdHlwZSBCQVNFVFlQRSBpbnRvIGEgc3RyaW5nIG9mCitqYXZhIHNvdXJjZSBj b2RlIHNwZWNpZnlpbmcgYSB2YXJpYWJsZSBvZiB0aGUgc2FtZSB2YWx1ZS4iCisgIChjb25kICgo YW5kIChzZXF1ZW5jZXAgdmFyKSAobm90IChzdHJpbmdwIHZhcikpKQorICAgICAgICAgKGxldCAo KHZhci10by1qYXZhIChsYW1iZGEgKHZhcikgKGZ1bmNhbGwgIydvcmctYmFiZWwtamF2YS12YXIt dG8tamF2YSB2YXIgYmFzZXR5cGUpKSkpCisgICAgICAgICAgIChjb25jYXQgIkFycmF5cy5hc0xp c3QoIiAobWFwY29uY2F0IHZhci10by1qYXZhIHZhciAiLCAiKSAiKSIpKSkKKyAgICAgICAgKChl cSB2YXIgJ2hsaW5lKSBvcmctYmFiZWwtamF2YS1obGluZS10bykKKyAgICAgICAgKChlcSBiYXNl dHlwZSAnaW50ZWdlcnApIChmb3JtYXQgIiVkIiB2YXIpKQorICAgICAgICAoKGVxIGJhc2V0eXBl ICdmbG9hdHApIChmb3JtYXQgIiVmIiB2YXIpKQorICAgICAgICAoKGVxIGJhc2V0eXBlICdzdHJp bmdwKSAoaWYgKGFuZCAoc3RyaW5ncCB2YXIpIChzdHJpbmctbWF0Y2gtcCAiLlxuKy4iIHZhcikp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IgIkphdmEgZG9lcyBu b3Qgc3VwcG9ydCBtdWx0aWxpbmUgc3RyaW5nIGxpdGVyYWxzIikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZm9ybWF0ICJcIiVzXCIiIHZhcikpKSkpCisKKyhkZWZ1biBvcmct YmFiZWwtamF2YS12YWwtdG8tdHlwZSAodmFsKQorICAiRGV0ZXJtaW5lIHRoZSB0eXBlIG9mIFZB TC4KK1JldHVybiAoQkFTRVRZUEUgLiBMSVNUVFlQRSksIHdoZXJlIEJBU0VUWVBFIGlzIGEgc3lt Ym9sCityZXByZXNlbnRpbmcgdGhlIHR5cGUgb2YgdGhlIGluZGl2aWR1YWwgaXRlbXMgaW4gVkFM LCBhbmQKK0xJU1RUWVBFIGlzIGEgc3RyaW5nIG5hbWUgb2YgdGhlIHR5cGUgcGFyYW1ldGVyIGZv ciBhIGNvbnRhaW5lcgorZm9yIEJBU0VUWVBFIGl0ZW1zLiIKKyAgKGxldCogKChiYXNldHlwZSAo b3JnLWJhYmVsLWphdmEtdmFsLXRvLWJhc2UtdHlwZSB2YWwpKQorICAgICAgICAgKGJhc2V0eXBl LXN0ciAocGNhc2UgYmFzZXR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYGludGVnZXJw ICJJbnRlZ2VyIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYGZsb2F0cCAiRG91YmxlIikK KyAgICAgICAgICAgICAgICAgICAgICAgICAoYHN0cmluZ3AgIlN0cmluZyIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgKF8gKGVycm9yICJVbmtub3duIHR5cGUgJVMiIGJhc2V0eXBlKSkpKSkK KyAgICAoY29uZAorICAgICAoKGFuZCAobGlzdHAgdmFsKSAobGlzdHAgKGNhciB2YWwpKSkgOyBh IHRhYmxlCisgICAgICAoY29ucyBiYXNldHlwZSAoZm9ybWF0ICJMaXN0PExpc3Q8JXM+PiIgYmFz ZXR5cGUtc3RyKSkpCisgICAgICgob3IgKGxpc3RwIHZhbCkgKHZlY3RvcnAgdmFsKSkgOyBhIGxp c3QgZGVjbGFyZWQgaW4gdGhlICMrYmVnaW5fc3JjIGxpbmUKKyAgICAgIChjb25zIGJhc2V0eXBl IChmb3JtYXQgIkxpc3Q8JXM+IiBiYXNldHlwZS1zdHIpKSkKKyAgICAgKHQgOyByZXR1cm4gYmFz ZSB0eXBlCisgICAgICAoY29ucyBiYXNldHlwZSBiYXNldHlwZS1zdHIpKSkpKQorCisoZGVmdW4g b3JnLWJhYmVsLWphdmEtdmFsLXRvLWJhc2UtdHlwZSAodmFsKQorICAiRGV0ZXJtaW5lIHRoZSBi YXNlIHR5cGUgb2YgVkFMLgorVkFMIG1heSBiZQorYGludGVnZXJwJyBpZiBhbGwgYmFzZSB2YWx1 ZXMgYXJlIGludGVnZXJzCitgZmxvYXRwJyBpZiBhbGwgYmFzZSB2YWx1ZXMgYXJlIGVpdGhlciBm bG9hdGluZyBwb2ludHMgb3IgaW50ZWdlcnMKK2BzdHJpbmdwJyBvdGhlcndpc2UuIgorICAoY29u ZAorICAgKChpbnRlZ2VycCB2YWwpICdpbnRlZ2VycCkKKyAgICgoZmxvYXRwIHZhbCkgJ2Zsb2F0 cCkKKyAgICgob3IgKGxpc3RwIHZhbCkgKHZlY3RvcnAgdmFsKSkKKyAgICAobGV0ICgodHlwZSBu aWwpKQorICAgICAgKG1hcGMgKGxhbWJkYSAodikKKyAgICAgICAgICAgICAgKHBjYXNlIChvcmct YmFiZWwtamF2YS12YWwtdG8tYmFzZS10eXBlIHYpCisgICAgICAgICAgICAgICAgKGBzdHJpbmdw IChzZXRxIHR5cGUgJ3N0cmluZ3ApKQorICAgICAgICAgICAgICAgIChgZmxvYXRwCisgICAgICAg ICAgICAgICAgICh3aGVuIChvciAobm90IHR5cGUpIChlcSB0eXBlICdpbnRlZ2VycCkpCisgICAg ICAgICAgICAgICAgICAgKHNldHEgdHlwZSAnZmxvYXRwKSkpCisgICAgICAgICAgICAgICAgKGBp bnRlZ2VycAorICAgICAgICAgICAgICAgICAodW5sZXNzIHR5cGUgKHNldHEgdHlwZSAnaW50ZWdl cnApKSkpKQorICAgICAgICAgICAgdmFsKQorICAgICAgdHlwZSkpCisgICAodCAnc3RyaW5ncCkp KQorCisoZGVmdW4gb3JnLWJhYmVsLWphdmEtdGFibGUtb3Itc3RyaW5nIChyZXN1bHRzKQorICAi Q29udmVydCBSRVNVTFRTIGludG8gYW4gYXBwcm9wcmlhdGUgZWxpc3AgdmFsdWUuCitJZiB0aGUg cmVzdWx0cyBsb29rIGxpa2UgYSBsaXN0IG9yIHZlY3RvciwgdGhlbiBjb252ZXJ0IHRoZW0gaW50 byBhbgorRW1hY3MtbGlzcCB0YWJsZSwgb3RoZXJ3aXNlIHJldHVybiB0aGUgcmVzdWx0cyBhcyBh IHN0cmluZy4iCisgIChsZXQgKChyZXMgKG9yZy1iYWJlbC1zY3JpcHQtZXNjYXBlIHJlc3VsdHMp KSkKKyAgICAoaWYgKGxpc3RwIHJlcykKKyAgICAgICAgKG1hcGNhciAobGFtYmRhIChlbCkgKGlm IChlcSAnbnVsbCBlbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy1iYWJl bC1qYXZhLW51bGwtdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbCkpCisgICAg ICAgICAgICAgICAgcmVzKQorICAgICAgcmVzKSkpCisKKyhkZWZ1biBvcmctYmFiZWwtamF2YS1l dmFsdWF0ZSAoY21kIHJlc3VsdC10eXBlIHJlc3VsdC1wYXJhbXMgdG1wLWZpbGUpCisgICJFdmFs dWF0ZSB1c2luZyBhbiBleHRlcm5hbCBqYXZhIHByb2Nlc3MuCitDTUQgdGhlIGNvbW1hbmQgdG8g ZXhlY3V0ZS4KKworSWYgUkVTVUxULVRZUEUgZXF1YWxzICdvdXRwdXQgdGhlbiByZXR1cm4gc3Rh bmRhcmQgb3V0cHV0IGFzIGEKK3N0cmluZy4gIElmIFJFU1VMVC1UWVBFIGVxdWFscyAndmFsdWUg dGhlbiByZXR1cm4gdGhlIHZhbHVlCityZXR1cm5lZCBieSB0aGUgc291cmNlIGJsb2NrLCBhcyBl bGlzcC4KKworUkVTVUxULVBBUkFNUyBpbnB1dCBwYXJhbXMgdXNlZCB0byBmb3JtYXQgdGhlIHJl cG9uc2UuCisKK1RNUC1GSUxFIGZpbGVuYW1lIG9mIHRoZSB0ZW1wZmlsZSB0byBzdG9yZSB0aGUg cmV0dXJuZWQgdmFsdWUgaW4KK2ZvciAndmFsdWUgUkVTVUxULVRZUEUuICBOb3QgdXNlZCBmb3Ig J291dHB1dCBSRVNVTFQtVFlQRS4iCisgIChsZXQgKChyYXcgKGNvbmQgKChlcSByZXN1bHQtdHlw ZSAnb3V0cHV0KQorICAgICAgICAgICAgICAgICAgICAob3JnLWJhYmVsLWV2YWwgY21kICIiKSkK KyAgICAgICAgICAgICAgICAgICAodAorICAgICAgICAgICAgICAgICAgICAob3JnLWJhYmVsLWV2 YWwgY21kICIiKQorICAgICAgICAgICAgICAgICAgICAob3JnLWJhYmVsLWV2YWwtcmVhZC1maWxl IHRtcC1maWxlKSkpKSkKKyAgICAob3JnLWJhYmVsLXJlc3VsdC1jb25kIHJlc3VsdC1wYXJhbXMg cmF3CisgICAgICAob3JnLWJhYmVsLWphdmEtdGFibGUtb3Itc3RyaW5nIHJhdykpKSkKIAogKHBy b3ZpZGUgJ29iLWphdmEpCiAKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZXhhbXBsZXMvb2ItamF2YS10 ZXN0Lm9yZyBiL3Rlc3RpbmcvZXhhbXBsZXMvb2ItamF2YS10ZXN0Lm9yZwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjY1NTI5MTA2MQotLS0gL2Rldi9udWxsCisrKyBiL3Rl c3RpbmcvZXhhbXBsZXMvb2ItamF2YS10ZXN0Lm9yZwpAQCAtMCwwICsxLDMxMCBAQAorIytUaXRs ZTogYSBjb2xsZWN0aW9uIG9mIGV4YW1wbGVzIGZvciBvYi1qYXZhIHRlc3RzCisjK09QVElPTlM6 IF46bmlsCisqIFNpbXBsZQorICA6UFJPUEVSVElFUzoKKyAgOklEOiAgICAgICA2YWJiZDZhMC1i MWIxLTRmYmYtOTZiNi02ZmJjMDI0YzRhNmMKKyAgOkVORDoKKyMrbmFtZTogc2ltcGxlCisjK2Jl Z2luX3NyYyBqYXZhIDpyZXN1bHRzIG91dHB1dCBzaWxlbnQKKyAgU3lzdGVtLm91dC5wcmludCg0 Mik7CisjK2VuZF9zcmMKKworIytuYW1lOiBzaW1wbGVfd2l0aF9icmFja2V0CisjK2JlZ2luX3Ny YyBqYXZhIDpyZXN1bHRzIG91dHB1dCBzaWxlbnQKKyAgU3lzdGVtLm91dC5wcmludCgiWzQyIik7 CisjK2VuZF9zcmMKKworIytuYW1lOiBzaW1wbGVfd2l0aF9xdW90ZQorIytiZWdpbl9zcmMgamF2 YSA6cmVzdWx0cyBvdXRwdXQgc2lsZW50CisgIFN5c3RlbS5vdXQucHJpbnQoIlwiNDJcIiIpOwor IytlbmRfc3JjCisKKyMrbmFtZTogc2ltcGxlX3JldHVybl9pbnQKKyMrYmVnaW5fc3JjIGphdmEg OnJlc3VsdHMgc2lsZW50CisgIHJldHVybiA0MjsKKyMrZW5kX3NyYworCisjK25hbWU6IHNpbXBs ZV9yZXR1cm5fZmxvYXQKKyMrYmVnaW5fc3JjIGphdmEgOnJlc3VsdHMgc2lsZW50CisgIHJldHVy biA0Mi4wOworIytlbmRfc3JjCisKKyMrbmFtZTogc2ltcGxlX3JldHVybl9zdHJpbmcKKyMrYmVn aW5fc3JjIGphdmEgOnJlc3VsdHMgc2lsZW50CisgIHJldHVybiAiZm9ydHkgdHdvIjsKKyMrZW5k X3NyYworCisjK25hbWU6IHNpbXBsZV93aXRoX21haW4KKyMrYmVnaW5fc3JjIGphdmEgOnJlc3Vs dHMgb3V0cHV0IHNpbGVudAorICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdz KSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50KDQyKTsKKyAgfQorIytlbmRfc3JjCisKKyMrbmFt ZTogc2ltcGxlX3dpdGhfbWFpbl9hcmdzX2FycmF5CisjK2JlZ2luX3NyYyBqYXZhIDpyZXN1bHRz IG91dHB1dCBzaWxlbnQKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkg eworICAgICAgU3lzdGVtLm91dC5wcmludCg0Mik7CisgIH0KKyMrZW5kX3NyYworCisjK25hbWU6 IHNpbXBsZV93aXRoX2NsYXNzCisjK2JlZ2luX3NyYyBqYXZhIDpyZXN1bHRzIG91dHB1dCBzaWxl bnQKKyAgcHVibGljIGNsYXNzIFNpbXBsZSB7CisgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFp bihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgICAgU3lzdGVtLm91dC5wcmludCg0Mik7CisgICAg ICB9CisgIH0KKyMrZW5kX3NyYworCisjK25hbWU6IHNpbXBsZV93aXRoX2NsYXNzX2FuZF9wYWNr YWdlCisjK2JlZ2luX3NyYyBqYXZhIDpyZXN1bHRzIG91dHB1dCBzaWxlbnQKKyAgcGFja2FnZSBw a2c7CisgIHB1YmxpYyBjbGFzcyBTaW1wbGUgeworICAgICAgcHVibGljIHN0YXRpYyB2b2lkIG1h aW4oU3RyaW5nW10gYXJncykgeworICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoNDIpOworICAg ICAgfQorICB9CisjK2VuZF9zcmMKKworIytuYW1lOiBzaW1wbGVfd2l0aF9jbGFzc19hdHRyCisj K2JlZ2luX3NyYyBqYXZhIDpyZXN1bHRzIG91dHB1dCBzaWxlbnQgOmNsYXNzbmFtZSBTaW1wbGUK KyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgU3lzdGVt Lm91dC5wcmludCg0Mik7CisgIH0KKyMrZW5kX3NyYworCisjK25hbWU6IHNpbXBsZV93aXRoX2Ns YXNzX2F0dHJfd2l0aF9wYWNrYWdlCisjK2JlZ2luX3NyYyBqYXZhIDpyZXN1bHRzIG91dHB1dCBz aWxlbnQgOmNsYXNzbmFtZSBwa2cuU2ltcGxlCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0 cmluZ1tdIGFyZ3MpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnQoNDIpOworICB9CisjK2VuZF9z cmMKKworKiBBcmdzCisgIDpQUk9QRVJUSUVTOgorICA6SUQ6ICAgICAgIDBmMWJiODZiLTljOWUt NGFkZS1hYWVjLTMwYjM3OTY1ZGYxYworICA6RU5EOgorIytuYW1lOiBvbmUtYXJnCisjK2JlZ2lu X3NyYyBqYXZhIDpyZXN1bHRzIG91dHB1dCBzaWxlbnQgOmNtZGxpbmUgImZvcnR5dHdvIgorICBT eXN0ZW0ub3V0LnByaW50KGFyZ3NbMF0pOworIytlbmRfc3JjCisKKyMrbmFtZTogcXVvdGVkX3N0 cmluZ19hcmcKKyMrYmVnaW5fc3JjIGphdmEgOnJlc3VsdHMgb3V0cHV0IHNpbGVudCA6Y21kbGlu ZSAiXCJmb3J0eSB0d29cIiA0MiIKKyAgU3lzdGVtLm91dC5wcmludGxuKGFyZ3NbMF0pOworICBT eXN0ZW0ub3V0LnByaW50bG4oYXJnc1sxXSk7CisjK2VuZF9zcmMKKworKiBWYXJpYWJsZXMKKyAg OlBST1BFUlRJRVM6CisgIDpJRDogICAgICAgZDUzMmNkZTUtMmY3ZS00NDE1LTk5YmEtM2Q5OWQx NDhiOWRiCisgIDpFTkQ6CisKKyMrbmFtZTogaW50ZWdlcl92YXIKKyMrYmVnaW5fc3JjIGphdmEg OnZhciBhPTQyIDpyZXN1bHRzIG91dHB1dCBzaWxlbnQKKyAgU3lzdGVtLm91dC5wcmludChhKTsK KyMrZW5kX3NyYworCisjK25hbWU6IHZhcl93aXRoX21haW4KKyMrYmVnaW5fc3JjIGphdmEgOnZh ciBhPTQyIDpyZXN1bHRzIG91dHB1dCBzaWxlbnQKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4o U3RyaW5nW10gYXJncykgeworICAgICAgU3lzdGVtLm91dC5wcmludChhKTsKKyAgfQorIytlbmRf c3JjCisKKyMrbmFtZTogdmFyX3dpdGhfY2xhc3MKKyMrYmVnaW5fc3JjIGphdmEgOnZhciBhPTQy IDpyZXN1bHRzIG91dHB1dCBzaWxlbnQKKyAgcHVibGljIGNsYXNzIE1haW4geworICAgICAgcHVi bGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICAgIFN5c3RlbS5v dXQucHJpbnQoYSk7CisgICAgICB9CisgIH0KKyMrZW5kX3NyYworCisjK25hbWU6IHZhcl93aXRo X2NsYXNzX2FuZF9wYWNrYWdlCisjK2JlZ2luX3NyYyBqYXZhIDp2YXIgYT00MiA6cmVzdWx0cyBv dXRwdXQgc2lsZW50CisgIHBhY2thZ2UgcGtnOworICBwdWJsaWMgY2xhc3MgTWFpbiB7CisgICAg ICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgICAgU3lz dGVtLm91dC5wcmludChhKTsKKyAgICAgIH0KKyAgfQorIytlbmRfc3JjCisKKyMrbmFtZTogdmFy X3dpdGhfY2xhc3NfYW5kX2hhbmdpbmdfY3VybGllcworIytiZWdpbl9zcmMgamF2YSA6dmFyIGE9 NDIgOnJlc3VsdHMgb3V0cHV0IHNpbGVudAorICBwdWJsaWMgY2xhc3MgTWFpbgorICB7CisgICAg ICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQorICAgICAgeworICAgICAg ICAgIFN5c3RlbS5vdXQucHJpbnQoYSk7CisgICAgICB9CisgIH0KKyMrZW5kX3NyYworCisjK25h bWU6IHR3b192YXJzCisjK2JlZ2luX3NyYyBqYXZhIDp2YXIgYT0yMSBiPTIgOnJlc3VsdHMgb3V0 cHV0IHNpbGVudAorICBTeXN0ZW0ub3V0LnByaW50KGEqYik7CisjK2VuZF9zcmMKKworIytuYW1l OiBzdHJpbmdfdmFyCisjK2JlZ2luX3NyYyBqYXZhIDp2YXIgYT0iZm9ydHkgdHdvIiA6cmVzdWx0 cyBvdXRwdXQgc2lsZW50CisgIFN5c3RlbS5vdXQucHJpbnQoU3RyaW5nLmZvcm1hdCgiJXMsIGxl bj0lZCIsIGEsIGEubGVuZ3RoKCkpKTsKKyMrZW5kX3NyYworCisjK25hbWU6IG11bGl0bGluZV9z dHJpbmdfdmFyCisjK2JlZ2luX3NyYyBqYXZhIDp2YXIgYT0iZm9ydHlcbnR3byIgOnJlc3VsdHMg b3V0cHV0IHNpbGVudAorICBTeXN0ZW0ub3V0LnByaW50KFN0cmluZy5mb3JtYXQoIiVzLCBsZW49 JWQiLCBhLCBhLmxlbmd0aCgpKSk7CisjK2VuZF9zcmMKKworKiBBcnJheQorICA6UFJPUEVSVElF UzoKKyAgOklEOiAgICAgICAzNTEyMTE5ZC1hMmRhLTQzYzEtYWY3Yi0xOWEzY2I3MmY3NmQKKyAg OkVORDoKKworIytuYW1lOiBqYXZhX2xpc3QKKy0gZm9ydHkKKy0gdHdvCisKKyMrbmFtZTogcmV0 dXJuX3ZlY3Rvcl91c2luZ19saXN0CisjK2JlZ2luX3NyYyBqYXZhIDpyZXN1bHRzIHZlY3RvciBz aWxlbnQKKyAgaW1wb3J0IGphdmEudXRpbC5MaXN0OworICBpbXBvcnQgamF2YS51dGlsLkFycmF5 czsKKyAgTGlzdDxMaXN0PEludGVnZXI+PiBhID0gQXJyYXlzLmFzTGlzdChBcnJheXMuYXNMaXN0 KDQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5cy5hc0xp c3QoMikpOworICByZXR1cm4gYTsKKyMrZW5kX3NyYworCisjK25hbWU6IHJldHVybl92ZWN0b3Jf dXNpbmdfYXJyYXkKKyMrYmVnaW5fc3JjIGphdmEgOnJlc3VsdHMgdmVjdG9yIHNpbGVudAorICBJ bnRlZ2VyW11bXSBhID0ge3s0fSwgezJ9fTsKKyAgcmV0dXJuIGE7CisjK2VuZF9zcmMKKworIytu YW1lOiByZWFkX3JldHVybl9saXN0CisjK2JlZ2luX3NyYyBqYXZhIDp2YXIgYT1qYXZhX2xpc3Qg OnJlc3VsdHMgc2lsZW50CisgIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKyAgaW1wb3J0IGphdmEu dXRpbC5BcnJheXM7CisgIExpc3Q8U3RyaW5nPiBiID0gQXJyYXlzLmFzTGlzdChhLmdldCgwKS5n ZXQoMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmdldCgxKS5nZXQoMCkp OworICByZXR1cm4gYjsKKyMrZW5kX3NyYworCisjK25hbWU6IHJlYWRfbGlzdF9yZXR1cm5fYXJy YXkKKyMrYmVnaW5fc3JjIGphdmEgOnZhciBhPWphdmFfbGlzdCA6cmVzdWx0cyBzaWxlbnQKKyAg U3RyaW5nW10gYiA9IHthLmdldCgwKS5nZXQoMCksIGEuZ2V0KDEpLmdldCgwKX07CisgIHJldHVy biBiOworIytlbmRfc3JjCisKKyMrbmFtZTogcmVhZF9yZXR1cm5fbGlzdF93aXRoX3BhY2thZ2UK KyMrYmVnaW5fc3JjIGphdmEgOnZhciBhPWphdmFfbGlzdCA6cmVzdWx0cyBzaWxlbnQKKyAgcGFj a2FnZSBwa2c7CisgIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKyAgaW1wb3J0IGphdmEudXRpbC5B cnJheXM7CisgIExpc3Q8U3RyaW5nPiBiID0gQXJyYXlzLmFzTGlzdChhLmdldCgwKS5nZXQoMCks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmdldCgxKS5nZXQoMCkpOworICBy ZXR1cm4gYjsKKyMrZW5kX3NyYworCisjK25hbWU6IHdyaXRlX291dHB1dF9saXN0X3dpdGhfc3Bh Y2VzCisjK2JlZ2luX3NyYyBqYXZhIDpyZXN1bHRzIG91dHB1dCBsaXN0IHJhdyBzaWxlbnQKKyAg U3lzdGVtLm91dC5wcmludGxuKCJmb3J0eSB0d28iKTsKKyAgU3lzdGVtLm91dC5wcmludGxuKCJm b3J0eSB0d28iKTsKKyMrZW5kX3NyYworCisqIE1hdHJpeAorICA6UFJPUEVSVElFUzoKKyAgOklE OiAgICAgICAyYjk5NDk5Zi1jMTJmLTQ0ZmQtOWI1ZC0xYWY5MjljYTAwNzkKKyAgOkVORDoKKyMr bmFtZTogamF2YV9tYXRyaXgKK3wgMiB8IDEgfAorfCA0IHwgMiB8CisKKyMrbmFtZTogbGlzdF92 YXIKKyMrYmVnaW5fc3JjIGphdmEgOnZhciBhPScoImZvcnR5IiAidHdvIikgOnJlc3VsdHMgc2ls ZW50CisgIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKyAgTGlzdDxTdHJpbmc+IGIgPSBhOworICBy ZXR1cm4gYjsKKyMrZW5kX3NyYworCisjK25hbWU6IHZlY3Rvcl92YXIKKyMrYmVnaW5fc3JjIGph dmEgOnZhciBhPSdbImZvcnR5IiAidHdvIl0gOnJlc3VsdHMgc2lsZW50CisgIGltcG9ydCBqYXZh LnV0aWwuTGlzdDsKKyAgTGlzdDxTdHJpbmc+IGIgPSBhOworICByZXR1cm4gYjsKKyMrZW5kX3Ny YworCisjK25hbWU6IG1hdHJpeF92YXIKKyMrYmVnaW5fc3JjIGphdmEgOnZhciBhPWphdmFfbWF0 cml4IDpyZXN1bHRzIHNpbGVudAorICBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisgIGltcG9ydCBq YXZhLnV0aWwuQXJyYXlzOworICBMaXN0PExpc3Q8SW50ZWdlcj4+IGIgPSBBcnJheXMuYXNMaXN0 KEFycmF5cy5hc0xpc3QoYS5nZXQoMCkuZ2V0KDApLCBhLmdldCgxKS5nZXQoMCkpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5cy5hc0xpc3QoYS5nZXQoMCku Z2V0KDEpLCBhLmdldCgxKS5nZXQoMSkpKTsKKyAgcmV0dXJuIGI7IC8vIHRyYW5zcG9zZQorIytl bmRfc3JjCisKKyMrbmFtZTogbWF0cml4X3Zhcl93aXRoX2hlYWRlcgorIytiZWdpbl9zcmMgamF2 YSA6dmFyIGE9amF2YV9tYXRyaXggOnJlc3VsdHMgdmFsdWUgdGFibGUgc2lsZW50CisgIGltcG9y dCBqYXZhLnV0aWwuTGlzdDsKKyAgaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CisgIExpc3Q8TGlz dD4gYiA9IEFycmF5cy5hc0xpc3QoQXJyYXlzLmFzTGlzdCgiY29sMSIsICJjb2wyIiksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlzLmFzTGlzdChhLmdldCgwKS5nZXQoMCksIGEu Z2V0KDEpLmdldCgwKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB cnJheXMuYXNMaXN0KGEuZ2V0KDApLmdldCgxKSwgYS5nZXQoMSkuZ2V0KDEpKSk7CisgIHJldHVy biBiOyAvLyB0cmFuc3Bvc2UKKyMrZW5kX3NyYworCisjK25hbWU6IG91dHB1dF90YWJsZV93aXRo X2hlYWRlcgorIytiZWdpbl9zcmMgamF2YSA6dmFyIGE9amF2YV9tYXRyaXggOnJlc3VsdHMgb3V0 cHV0IHJhdyB0YWJsZSBzaWxlbnQKKyAgU3lzdGVtLm91dC5wcmludGxuKCJ8Y29sMXxjb2wyfCIp OworICBTeXN0ZW0ub3V0LnByaW50bG4oInwtIik7CisgIGZvciAoaW50IGlpPTA7IGlpPGEuc2l6 ZSgpOyBpaSsrKSB7CisgICAgICBmb3IgKGludCBqaj0wOyBqajxhLmdldCgwKS5zaXplKCk7IGpq KyspIHsKKyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJ8IiArIGEuZ2V0KGlpKS5nZXQoamop KTsKKyAgICAgIH0KKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICB9CisjK2VuZF9z cmMKKworKiBJbmhvbW9nZW5lb3VzIFRhYmxlCisgIDpQUk9QRVJUSUVTOgorICA6SUQ6ICAgICAg IDdmYzA5NzkzLTY4ZTYtNDIxYy04MjQ1LTI4NDg2M2QwMjViZgorICA6RU5EOgorCisjK25hbWU6 IGphdmFfdGFibGUKKyAgfCBzdHJpbmcgfCBudW1iZXIgfAorICB8LS0tLS0tLS0rLS0tLS0tLS18 CisgIHwgZm9ydHkgIHwgICAgICAyIHwKKyAgfCB0d28gICAgfCAgICAgIDEgfAorCisjK25hbWU6 IGluaG9tb2dlbmVvdXNfdGFibGUKKyMrYmVnaW5fc3JjIGphdmEgOnZhciBhPWphdmFfdGFibGUg OnJlc3VsdHMgc2lsZW50CisgIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKyAgaW1wb3J0IGphdmEu dXRpbC5BcnJheXM7CisgIExpc3Q8TGlzdD4gYiA9IEFycmF5cy5hc0xpc3QoQXJyYXlzLmFzTGlz dChhLmdldCgwKS5nZXQoMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJbnRlZ2VyLnBhcnNlSW50KGEuZ2V0KDApLmdldCgxKSkqMiksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQXJyYXlzLmFzTGlzdChhLmdldCgxKS5nZXQoMCksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnBhcnNlSW50 KGEuZ2V0KDEpLmdldCgxKSkqMikpOworICByZXR1cm4gYjsKKyMrZW5kX3NyYworCisqIExpYnJh cnkKKyAgOlBST1BFUlRJRVM6CisgIDpJRDogICAgICAgM2NlMGQ1M2YtNzgwYS00NzY5LTg2MTQt Y2JkZDNlMjY1NzA4CisgIDpFTkQ6CisKKyMrbmFtZTogaW1wb3J0X2xpYnJhcnkKKyMrYmVnaW5f c3JjIGphdmEgOnJlc3VsdHMgb3V0cHV0IHNpbGVudCA6aW1wb3J0cyBqYXZhLnV0aWwuQmFzZTY0 CisgIGJ5dGVbXSBlbmNvZGVkID0gQmFzZTY0LmdldEVuY29kZXIoKS5lbmNvZGUoIjQyIi5nZXRC eXRlcygpKTsKKyAgU3RyaW5nIGRlY29kZWQgPSBuZXcgU3RyaW5nKEJhc2U2NC5nZXREZWNvZGVy KCkuZGVjb2RlKGVuY29kZWQpKTsKKyAgU3lzdGVtLm91dC5wcmludChTdHJpbmcuZm9ybWF0KCJl bmNvZGVkPSVzLCBkZWNvZGVkPSVzIiwgbmV3IFN0cmluZyhlbmNvZGVkKSwgZGVjb2RlZCkpOwor IytlbmRfc3JjCisKKyMrbmFtZTogaW1wb3J0X2xpYnJhcnlfaW5saW5lCisjK2JlZ2luX3NyYyBq YXZhIDpyZXN1bHRzIG91dHB1dCBzaWxlbnQKKyAgaW1wb3J0IGphdmEudXRpbC5CYXNlNjQ7Cisg IGJ5dGVbXSBlbmNvZGVkID0gQmFzZTY0LmdldEVuY29kZXIoKS5lbmNvZGUoIjQyIi5nZXRCeXRl cygpKTsKKyAgU3RyaW5nIGRlY29kZWQgPSBuZXcgU3RyaW5nKEJhc2U2NC5nZXREZWNvZGVyKCku ZGVjb2RlKGVuY29kZWQpKTsKKyAgU3lzdGVtLm91dC5wcmludChTdHJpbmcuZm9ybWF0KCJlbmNv ZGVkPSVzLCBkZWNvZGVkPSVzIiwgbmV3IFN0cmluZyhlbmNvZGVkKSwgZGVjb2RlZCkpOworIytl bmRfc3JjCmRpZmYgLS1naXQgYS90ZXN0aW5nL2xpc3AvdGVzdC1vYi1qYXZhLmVsIGIvdGVzdGlu Zy9saXNwL3Rlc3Qtb2ItamF2YS5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAuLmRjMjNiNGYzMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvbGlzcC90ZXN0LW9iLWph dmEuZWwKQEAgLTAsMCArMSwyOTQgQEAKKzs7OyB0ZXN0LW9iLWphdmEuZWwgLS0tIHRlc3RzIGZv ciBvYi1qYXZhLmVsCisKKzs7IENvcHlyaWdodCAoYykgMjAyMCBJYW4gTWFydGlucworOzsgQXV0 aG9yczogSWFuIE1hcnRpbnMKKworOzsgVGhpcyBmaWxlIGlzIG5vdCBwYXJ0IG9mIEdOVSBFbWFj cy4KKworOzsgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorOzsgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworOzsgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor OzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCis7OzsgQ29kZToKKyhyZXF1aXJlICdv cmctdGVzdCkKKworKG9yZy10ZXN0LWZvci1leGVjdXRhYmxlICJqYXZhIikKKyh1bmxlc3MgKGZl YXR1cmVwICdvYi1qYXZhKQorICAoc2lnbmFsICdtaXNzaW5nLXRlc3QtZGVwZW5kZW5jeSAiU3Vw cG9ydCBmb3IgamF2YSBjb2RlIGJsb2NrcyIpKQorCisoZXJ0LWRlZnRlc3Qgb2ItamF2YS9zaW1w bGUgKCkKKyAgIkhlbGxvIHdvcmxkIHByb2dyYW0gdGhhdCB3cml0ZXMgb3V0cHV0LiIKKyAgKGlm IChleGVjdXRhYmxlLWZpbmQgb3JnLWJhYmVsLWphdmEtY29tcGlsZXItY29tbWFuZCkKKyAgICAg IChvcmctdGVzdC1hdC1pZCAiNmFiYmQ2YTAtYjFiMS00ZmJmLTk2YjYtNmZiYzAyNGM0YTZjIgor ICAgICAgICAgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrIDEpCisgICAgICAgICAgICAg IChzaG91bGQgKHN0cmluZz0gIjQyIiAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKSkpKSkp CisKKyhlcnQtZGVmdGVzdCBvYi1qYXZhL3NpbXBsZS13aXRoLWJyYWNrZXQgKCkKKyAgIkhlbGxv IHdvcmxkIHByb2dyYW0gdGhhdCBvdXRwdXRzIGFuIG9wZW4gc3F1YXJlIGJyYWNrZXQuIgorICAo aWYgKGV4ZWN1dGFibGUtZmluZCBvcmctYmFiZWwtamF2YS1jb21waWxlci1jb21tYW5kKQorICAg ICAgKG9yZy10ZXN0LWF0LWlkICI2YWJiZDZhMC1iMWIxLTRmYmYtOTZiNi02ZmJjMDI0YzRhNmMi CisgICAgICAgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgMikKKyAgICAgICAgICAg ICAgKHNob3VsZCAoc3RyaW5nPSAiWzQyIiAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKSkp KSkpCisKKyhlcnQtZGVmdGVzdCBvYi1qYXZhL3NpbXBsZS13aXRoLXF1b3RlICgpCisgICJIZWxs byB3b3JsZCBwcm9ncmFtIHRoYXQgd3JpdGVzIHF1b3Rlcy4iCisgIChpZiAoZXhlY3V0YWJsZS1m aW5kIG9yZy1iYWJlbC1qYXZhLWNvbXBpbGVyLWNvbW1hbmQpCisgICAgICAob3JnLXRlc3QtYXQt aWQgIjZhYmJkNmEwLWIxYjEtNGZiZi05NmI2LTZmYmMwMjRjNGE2YyIKKyAgICAgICAgICAgICAg KG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9jayAzKQorICAgICAgICAgICAgICAoc2hvdWxkIChzdHJp bmc9ICJcIjQyXCIiIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spKSkpKSkKKworKGVydC1k ZWZ0ZXN0IG9iLWphdmEvc2ltcGxlLXJldHVybi1pbnQgKCkKKyAgIkhlbGxvIHdvcmxkIHByb2dy YW0gdGhhdCByZXR1cm5zIGFuIGludCB2YWx1ZS4iCisgIChpZiAoZXhlY3V0YWJsZS1maW5kIG9y Zy1iYWJlbC1qYXZhLWNvbXBpbGVyLWNvbW1hbmQpCisgICAgICAob3JnLXRlc3QtYXQtaWQgIjZh YmJkNmEwLWIxYjEtNGZiZi05NmI2LTZmYmMwMjRjNGE2YyIKKyAgICAgICAgICAgICAgKG9yZy1i YWJlbC1uZXh0LXNyYy1ibG9jayA0KQorICAgICAgICAgICAgICAoc2hvdWxkIChlcSA0MiAob3Jn LWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBvYi1qYXZhL3Np bXBsZS1yZXR1cm4tZmxvYXQgKCkKKyAgIkhlbGxvIHdvcmxkIHByb2dyYW0gdGhhdCByZXR1cm5z IGEgZmxvYXQgdmFsdWUuIgorICAoaWYgKGV4ZWN1dGFibGUtZmluZCBvcmctYmFiZWwtamF2YS1j b21waWxlci1jb21tYW5kKQorICAgICAgKG9yZy10ZXN0LWF0LWlkICI2YWJiZDZhMC1iMWIxLTRm YmYtOTZiNi02ZmJjMDI0YzRhNmMiCisgICAgICAgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMt YmxvY2sgNSkKKyAgICAgICAgICAgICAgKHNob3VsZCAoZXF1YWwgNDIuMCAob3JnLWJhYmVsLWV4 ZWN1dGUtc3JjLWJsb2NrKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBvYi1qYXZhL3NpbXBsZS1yZXR1 cm4tc3RyaW5nICgpCisgICJIZWxsbyB3b3JsZCBwcm9ncmFtIHRoYXQgcmV0dXJucyBhIHN0cmlu ZyB2YWx1ZS4iCisgIChpZiAoZXhlY3V0YWJsZS1maW5kIG9yZy1iYWJlbC1qYXZhLWNvbXBpbGVy LWNvbW1hbmQpCisgICAgICAob3JnLXRlc3QtYXQtaWQgIjZhYmJkNmEwLWIxYjEtNGZiZi05NmI2 LTZmYmMwMjRjNGE2YyIKKyAgICAgICAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9jayA2 KQorICAgICAgICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJmb3J0eSB0d28iIChvcmctYmFiZWwt ZXhlY3V0ZS1zcmMtYmxvY2spKSkpKSkKKworKGVydC1kZWZ0ZXN0IG9iLWphdmEvc2ltcGxlLXdp dGgtbWFpbiAoKQorICAiSGVsbG8gd29ybGQgcHJvZ3JhbSB0aGF0IGRlZmluZXMgYSBtYWluIGZ1 bmN0aW9uLiIKKyAgKGlmIChleGVjdXRhYmxlLWZpbmQgb3JnLWJhYmVsLWphdmEtY29tcGlsZXIt Y29tbWFuZCkKKyAgICAgIChvcmctdGVzdC1hdC1pZCAiNmFiYmQ2YTAtYjFiMS00ZmJmLTk2YjYt NmZiYzAyNGM0YTZjIgorICAgICAgICAgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrIDcp CisgICAgICAgICAgICAgIChzaG91bGQgKHN0cmluZz0gIjQyIiAob3JnLWJhYmVsLWV4ZWN1dGUt c3JjLWJsb2NrKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBvYi1qYXZhL3NpbXBsZS13aXRoLW1haW4t YXJncy1hcnJheSAoKQorICAiSGVsbG8gd29ybGQgcHJvZ3JhbSB0aGF0IGRlZmluZXMgYSBtYWlu IGZ1bmN0aW9uIHdpdGggdGhlIHNxdWFyZSBicmFja2V0cyBhZnRlciBgYXJncycuIgorICAoaWYg KGV4ZWN1dGFibGUtZmluZCBvcmctYmFiZWwtamF2YS1jb21waWxlci1jb21tYW5kKQorICAgICAg KG9yZy10ZXN0LWF0LWlkICI2YWJiZDZhMC1iMWIxLTRmYmYtOTZiNi02ZmJjMDI0YzRhNmMiCisg ICAgICAgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgOCkKKyAgICAgICAgICAgICAg KHNob3VsZCAoc3RyaW5nPSAiNDIiIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spKSkpKSkK KworKGVydC1kZWZ0ZXN0IG9iLWphdmEvc2ltcGxlLXdpdGgtY2xhc3MgKCkKKyAgIkhlbGxvIHdv cmxkIHByb2dyYW0gdGhhdCBkZWZpbmVzIGEgY2xhc3MuIgorICAoaWYgKGV4ZWN1dGFibGUtZmlu ZCBvcmctYmFiZWwtamF2YS1jb21waWxlci1jb21tYW5kKQorICAgICAgKG9yZy10ZXN0LWF0LWlk ICI2YWJiZDZhMC1iMWIxLTRmYmYtOTZiNi02ZmJjMDI0YzRhNmMiCisgICAgICAgICAgICAgIChv cmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgOSkKKyAgICAgICAgICAgICAgKHNob3VsZCAoc3RyaW5n PSAiNDIiIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spKSkpKSkKKworKGVydC1kZWZ0ZXN0 IG9iLWphdmEvc2ltcGxlLXdpdGgtY2xhc3MtYW5kLXBhY2thZ2UgKCkKKyAgIkhlbGxvIHdvcmxk IHByb2dyYW0gdGhhdCBkZWZpbmVzIGEgY2xhc3MgYW5kIHBhY2thZ2UuIgorICAoaWYgKGV4ZWN1 dGFibGUtZmluZCBvcmctYmFiZWwtamF2YS1jb21waWxlci1jb21tYW5kKQorICAgICAgKG9yZy10 ZXN0LWF0LWlkICI2YWJiZDZhMC1iMWIxLTRmYmYtOTZiNi02ZmJjMDI0YzRhNmMiCisgICAgICAg ICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgMTApCisgICAgICAgICAgICAgIChzaG91 bGQgKHN0cmluZz0gIjQyIiAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKSkpKSkpCisKKyhl cnQtZGVmdGVzdCBvYi1qYXZhL3NpbXBsZS13aXRoLWNsYXNzLWF0dHIgKCkKKyAgIkhlbGxvIHdv cmxkIHByb2dyYW0gd2l0aCBjbGFzcyBoZWFkZXIgYXR0cmlidXRlLiIKKyAgKGlmIChleGVjdXRh YmxlLWZpbmQgb3JnLWJhYmVsLWphdmEtY29tcGlsZXItY29tbWFuZCkKKyAgICAgIChvcmctdGVz dC1hdC1pZCAiNmFiYmQ2YTAtYjFiMS00ZmJmLTk2YjYtNmZiYzAyNGM0YTZjIgorICAgICAgICAg ICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrIDExKQorICAgICAgICAgICAgICAoc2hvdWxk IChzdHJpbmc9ICI0MiIgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkpKQorCisoZXJ0 LWRlZnRlc3Qgb2ItamF2YS9zaW1wbGUtd2l0aC1jbGFzcy1hdHRyLXdpdGgtcGFja2FnZSAoKQor ICAiSGVsbG8gd29ybGQgcHJvZ3JhbSB3aXRoIGNsYXNzIGF0dHIgd2l0aCBwYWNrYWdlLiIKKyAg KGlmIChleGVjdXRhYmxlLWZpbmQgb3JnLWJhYmVsLWphdmEtY29tcGlsZXItY29tbWFuZCkKKyAg ICAgIChvcmctdGVzdC1hdC1pZCAiNmFiYmQ2YTAtYjFiMS00ZmJmLTk2YjYtNmZiYzAyNGM0YTZj IgorICAgICAgICAgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrIDEyKQorICAgICAgICAg ICAgICAoc2hvdWxkIChzdHJpbmc9ICI0MiIgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykp KSkpKQorCisKKyhlcnQtZGVmdGVzdCBvYi1qYXZhL29uZS1hcmcgKCkKKyAgIkNvbW1hbmQgbGlu ZSBhcmcuIgorICAoaWYgKGV4ZWN1dGFibGUtZmluZCBvcmctYmFiZWwtamF2YS1jb21waWxlci1j b21tYW5kKQorICAgICAgKG9yZy10ZXN0LWF0LWlkICIwZjFiYjg2Yi05YzllLTRhZGUtYWFlYy0z MGIzNzk2NWRmMWMiCisgICAgICAgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgMSkK KyAgICAgICAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiZm9ydHl0d28iIChvcmctYmFiZWwtZXhl Y3V0ZS1zcmMtYmxvY2spKSkpKSkKKworKGVydC1kZWZ0ZXN0IG9iLWphdmEvYXJncy1xdW90ZWQt c3RyaW5nICgpCisgICJUd28gY29tbWFuZCBsaW5lIGFyZ3MsIGZpcnN0IGNvbnRhaW5zIGEgc3Bh Y2UuIgorICAoaWYgKGV4ZWN1dGFibGUtZmluZCBvcmctYmFiZWwtamF2YS1jb21waWxlci1jb21t YW5kKQorICAgICAgKG9yZy10ZXN0LWF0LWlkICIwZjFiYjg2Yi05YzllLTRhZGUtYWFlYy0zMGIz Nzk2NWRmMWMiCisgICAgICAgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgMikKKyAg ICAgICAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiZm9ydHkgdHdvXG40MlxuIiAob3JnLWJhYmVs LWV4ZWN1dGUtc3JjLWJsb2NrKSkpKSkpCisKKworKGVydC1kZWZ0ZXN0IG9iLWphdmEvaW50ZWdl ci12YXIgKCkKKyAgIlJlYWQgYW5kIHdyaXRlIGFuIGludGVnZXIgdmFyaWFibGUuIgorICAoaWYg KGV4ZWN1dGFibGUtZmluZCBvcmctYmFiZWwtamF2YS1jb21waWxlci1jb21tYW5kKQorICAgICAg KG9yZy10ZXN0LWF0LWlkICJkNTMyY2RlNS0yZjdlLTQ0MTUtOTliYS0zZDk5ZDE0OGI5ZGIiCisg ICAgICAgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgMSkKKyAgICAgICAgICAgICAg KHNob3VsZCAoc3RyaW5nPSAiNDIiIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spKSkpKSkK KworKGVydC1kZWZ0ZXN0IG9iLWphdmEvdmFyLXdpdGgtbWFpbiAoKQorICAiUmVhZCBhbmQgd3Jp dGUgYW4gaW50ZWdlciB2YXJpYWJsZSwgd2l0aCBtYWluIGZ1bmN0aW9uIHByb3ZpZGVkLiIKKyAg KGlmIChleGVjdXRhYmxlLWZpbmQgb3JnLWJhYmVsLWphdmEtY29tcGlsZXItY29tbWFuZCkKKyAg ICAgIChvcmctdGVzdC1hdC1pZCAiZDUzMmNkZTUtMmY3ZS00NDE1LTk5YmEtM2Q5OWQxNDhiOWRi IgorICAgICAgICAgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrIDIpCisgICAgICAgICAg ICAgIChzaG91bGQgKHN0cmluZz0gIjQyIiAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKSkp KSkpCisKKyhlcnQtZGVmdGVzdCBvYi1qYXZhL3Zhci13aXRoLWNsYXNzICgpCisgICJSZWFkIGFu ZCB3cml0ZSBhbiBpbnRlZ2VyIHZhcmlhYmxlLCB3aXRoIGNsYXNzIHByb3ZpZGVkLiIKKyAgKGlm IChleGVjdXRhYmxlLWZpbmQgb3JnLWJhYmVsLWphdmEtY29tcGlsZXItY29tbWFuZCkKKyAgICAg IChvcmctdGVzdC1hdC1pZCAiZDUzMmNkZTUtMmY3ZS00NDE1LTk5YmEtM2Q5OWQxNDhiOWRiIgor ICAgICAgICAgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrIDMpCisgICAgICAgICAgICAg IChzaG91bGQgKHN0cmluZz0gIjQyIiAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKSkpKSkp CisKKyhlcnQtZGVmdGVzdCBvYi1qYXZhL3Zhci13aXRoLWNsYXNzLWFuZC1wYWNrYWdlICgpCisg ICJSZWFkIGFuZCB3cml0ZSBhbiBpbnRlZ2VyIHZhcmlhYmxlLCB3aXRoIGNsYXNzIGFuZCBwYWNr YWdlIHByb3ZpZGVkLiIKKyAgKGlmIChleGVjdXRhYmxlLWZpbmQgb3JnLWJhYmVsLWphdmEtY29t cGlsZXItY29tbWFuZCkKKyAgICAgIChvcmctdGVzdC1hdC1pZCAiZDUzMmNkZTUtMmY3ZS00NDE1 LTk5YmEtM2Q5OWQxNDhiOWRiIgorICAgICAgICAgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJs b2NrIDQpCisgICAgICAgICAgICAgIChzaG91bGQgKHN0cmluZz0gIjQyIiAob3JnLWJhYmVsLWV4 ZWN1dGUtc3JjLWJsb2NrKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBvYi1qYXZhL3Zhci13aXRoLWNs YXNzLWFuZC1oYW5naW5nLWN1cmxpZXMgKCkKKyAgIlJlYWQgYW5kIHdyaXRlIGFuIGludGVnZXIg dmFyaWFibGUsIHdpdGggY2xhc3Mgd2l0aCBoYW5naW5nIGN1cmxpZXMuIgorICAoaWYgKGV4ZWN1 dGFibGUtZmluZCBvcmctYmFiZWwtamF2YS1jb21waWxlci1jb21tYW5kKQorICAgICAgKG9yZy10 ZXN0LWF0LWlkICJkNTMyY2RlNS0yZjdlLTQ0MTUtOTliYS0zZDk5ZDE0OGI5ZGIiCisgICAgICAg ICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgNSkKKyAgICAgICAgICAgICAgKHNob3Vs ZCAoc3RyaW5nPSAiNDIiIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spKSkpKSkKKworKGVy dC1kZWZ0ZXN0IG9iLWphdmEvdHdvLXZhcnMgKCkKKyAgIlJlYWQgdHdvIGludGVnZXIgdmFyaWFi bGVzLCBjb21iaW5lIGFuZCB3cml0ZSB0aGVtLiIKKyAgKGlmIChleGVjdXRhYmxlLWZpbmQgb3Jn LWJhYmVsLWphdmEtY29tcGlsZXItY29tbWFuZCkKKyAgICAgIChvcmctdGVzdC1hdC1pZCAiZDUz MmNkZTUtMmY3ZS00NDE1LTk5YmEtM2Q5OWQxNDhiOWRiIgorICAgICAgICAgICAgICAob3JnLWJh YmVsLW5leHQtc3JjLWJsb2NrIDYpCisgICAgICAgICAgICAgIChzaG91bGQgKHN0cmluZz0gIjQy IiAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBvYi1q YXZhL3N0cmluZy12YXIgKCkKKyAgIlJlYWQgYW5kIHdyaXRlIGEgc3RyaW5nIHZhcmlhYmxlLiIK KyAgKGlmIChleGVjdXRhYmxlLWZpbmQgb3JnLWJhYmVsLWphdmEtY29tcGlsZXItY29tbWFuZCkK KyAgICAgIChvcmctdGVzdC1hdC1pZCAiZDUzMmNkZTUtMmY3ZS00NDE1LTk5YmEtM2Q5OWQxNDhi OWRiIgorICAgICAgICAgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrIDcpCisgICAgICAg ICAgICAgIChzaG91bGQgKHN0cmluZz0gImZvcnR5IHR3bywgbGVuPTkiIChvcmctYmFiZWwtZXhl Y3V0ZS1zcmMtYmxvY2spKSkpKSkKKworKGVydC1kZWZ0ZXN0IG9iLWphdmEvbXVsdGlsaW5lLXN0 cmluZy12YXIgKCkKKyAgIkphdmEgZG9lc24ndCBzdXBwb3J0IG11bHRpbGluZSBzdHJpbmcgbGl0 ZXJhbHMsIHNvIHRoaXMgZXJyb3JzLiIKKyAgKGlmIChleGVjdXRhYmxlLWZpbmQgb3JnLWJhYmVs LWphdmEtY29tcGlsZXItY29tbWFuZCkKKyAgICAgIChvcmctdGVzdC1hdC1pZCAiZDUzMmNkZTUt MmY3ZS00NDE1LTk5YmEtM2Q5OWQxNDhiOWRiIgorICAgICAgICAgICAgICAob3JnLWJhYmVsLW5l eHQtc3JjLWJsb2NrIDgpCisgICAgICAgICAgICAgIChzaG91bGQtZXJyb3IgKG9yZy1iYWJlbC1l eGVjdXRlLXNyYy1ibG9jaykpCisgICAgICAgICAgICAgIDp0eXBlICdlcnJvcikpKQorCisKKyhl cnQtZGVmdGVzdCBvYi1qYXZhL3JldHVybi12ZWN0b3ItdXNpbmctbGlzdCAoKQorICAiUmV0dXJu IGEgdmVjdG9yIHVzaW5nIGEgbGlzdC4iCisgIChpZiAoZXhlY3V0YWJsZS1maW5kIG9yZy1iYWJl bC1qYXZhLWNvbXBpbGVyLWNvbW1hbmQpCisgICAgICAob3JnLXRlc3QtYXQtaWQgIjM1MTIxMTlk LWEyZGEtNDNjMS1hZjdiLTE5YTNjYjcyZjc2ZCIKKyAgICAgICAgICAgICAgKG9yZy1iYWJlbC1u ZXh0LXNyYy1ibG9jayAxKQorICAgICAgICAgICAgICAoc2hvdWxkIChlcXVhbCAnKCg0KSAoMikp IChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spKSkpKSkKKworKGVydC1kZWZ0ZXN0IG9iLWph dmEvcmV0dXJuLXZlY3Rvci11c2luZy1hcnJheSAoKQorICAiUmV0dXJuIGEgdmVjdG9yIHVzaW5n IGFuIGFycmF5LiIKKyAgKGlmIChleGVjdXRhYmxlLWZpbmQgb3JnLWJhYmVsLWphdmEtY29tcGls ZXItY29tbWFuZCkKKyAgICAgIChvcmctdGVzdC1hdC1pZCAiMzUxMjExOWQtYTJkYS00M2MxLWFm N2ItMTlhM2NiNzJmNzZkIgorICAgICAgICAgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2Nr IDIpCisgICAgICAgICAgICAgIChzaG91bGQgKGVxdWFsICcoKDQpICgyKSkgKG9yZy1iYWJlbC1l eGVjdXRlLXNyYy1ibG9jaykpKSkpKQorCisoZXJ0LWRlZnRlc3Qgb2ItamF2YS9yZWFkLXJldHVy bi1saXN0ICgpCisgICJSZWFkIGFuZCByZXR1cm4gYSBsaXN0LiIKKyAgKGlmIChleGVjdXRhYmxl LWZpbmQgb3JnLWJhYmVsLWphdmEtY29tcGlsZXItY29tbWFuZCkKKyAgICAgIChvcmctdGVzdC1h dC1pZCAiMzUxMjExOWQtYTJkYS00M2MxLWFmN2ItMTlhM2NiNzJmNzZkIgorICAgICAgICAgICAg ICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrIDMpCisgICAgICAgICAgICAgIChzaG91bGQgKGVx dWFsICcoImZvcnR5IiAidHdvIikgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkpKQor CisoZXJ0LWRlZnRlc3Qgb2ItamF2YS9yZWFkLWxpc3QtcmV0dXJuLWFycmF5ICgpCisgICJSZWFk IGEgbGlzdCBhbmQgcmV0dXJuIGFuIGFycmF5LiIKKyAgKGlmIChleGVjdXRhYmxlLWZpbmQgb3Jn LWJhYmVsLWphdmEtY29tcGlsZXItY29tbWFuZCkKKyAgICAgIChvcmctdGVzdC1hdC1pZCAiMzUx MjExOWQtYTJkYS00M2MxLWFmN2ItMTlhM2NiNzJmNzZkIgorICAgICAgICAgICAgICAob3JnLWJh YmVsLW5leHQtc3JjLWJsb2NrIDQpCisgICAgICAgICAgICAgIChzaG91bGQgKGVxdWFsICcoImZv cnR5IiAidHdvIikgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkpKQorCisoZXJ0LWRl ZnRlc3Qgb2ItamF2YS9yZWFkLXJldHVybi1saXN0LXdpdGgtcGFja2FnZSAoKQorICAiUmV0dXJu IGEgdmVjdG9yLiIKKyAgKGlmIChleGVjdXRhYmxlLWZpbmQgb3JnLWJhYmVsLWphdmEtY29tcGls ZXItY29tbWFuZCkKKyAgICAgIChvcmctdGVzdC1hdC1pZCAiMzUxMjExOWQtYTJkYS00M2MxLWFm N2ItMTlhM2NiNzJmNzZkIgorICAgICAgICAgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2Nr IDUpCisgICAgICAgICAgICAgIChzaG91bGQgKGVxdWFsICcoImZvcnR5IiAidHdvIikgKG9yZy1i YWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkpKQorCisoZXJ0LWRlZnRlc3Qgb2ItamF2YS9yZWFk LW91dHB1dC1saXN0ICgpCisgICJSZXR1cm4gYSB2ZWN0b3IuIgorICAoaWYgKGV4ZWN1dGFibGUt ZmluZCBvcmctYmFiZWwtamF2YS1jb21waWxlci1jb21tYW5kKQorICAgICAgKG9yZy10ZXN0LWF0 LWlkICIzNTEyMTE5ZC1hMmRhLTQzYzEtYWY3Yi0xOWEzY2I3MmY3NmQiCisgICAgICAgICAgICAg IChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgNikKKyAgICAgICAgICAgICAgKHNob3VsZCAoZXF1 YWwgImZvcnR5IHR3b1xuZm9ydHkgdHdvXG4iIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2sp KSkpKSkKKworCisoZXJ0LWRlZnRlc3Qgb2ItamF2YS9saXN0LXZhciAoKQorICAiUmVhZCBhbmQg d3JpdGUgYSBsaXN0IHZhcmlhYmxlLiIKKyAgKGlmIChleGVjdXRhYmxlLWZpbmQgb3JnLWJhYmVs LWphdmEtY29tcGlsZXItY29tbWFuZCkKKyAgICAgIChvcmctdGVzdC1hdC1pZCAiMmI5OTQ5OWYt YzEyZi00NGZkLTliNWQtMWFmOTI5Y2EwMDc5IgorICAgICAgICAgICAgICAob3JnLWJhYmVsLW5l eHQtc3JjLWJsb2NrIDEpCisgICAgICAgICAgICAgIChzaG91bGQgKGVxdWFsICcoImZvcnR5IiAi dHdvIikgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkpKQorCisoZXJ0LWRlZnRlc3Qg b2ItamF2YS92ZWN0b3ItdmFyICgpCisgICJSZWFkIGFuZCB3cml0ZSBhIHZlY3RvciB2YXJpYWJs ZS4iCisgIChpZiAoZXhlY3V0YWJsZS1maW5kIG9yZy1iYWJlbC1qYXZhLWNvbXBpbGVyLWNvbW1h bmQpCisgICAgICAob3JnLXRlc3QtYXQtaWQgIjJiOTk0OTlmLWMxMmYtNDRmZC05YjVkLTFhZjky OWNhMDA3OSIKKyAgICAgICAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9jayAyKQorICAg ICAgICAgICAgICAoc2hvdWxkIChlcXVhbCAnKCJmb3J0eSIgInR3byIpIChvcmctYmFiZWwtZXhl Y3V0ZS1zcmMtYmxvY2spKSkpKSkKKworKGVydC1kZWZ0ZXN0IG9iLWphdmEvbWF0cml4LXZhciAo KQorICAiUmVhZCBhbmQgd3JpdGUgbWF0cml4IHZhcmlhYmxlLiIKKyAgKGlmIChleGVjdXRhYmxl LWZpbmQgb3JnLWJhYmVsLWphdmEtY29tcGlsZXItY29tbWFuZCkKKyAgICAgIChvcmctdGVzdC1h dC1pZCAiMmI5OTQ5OWYtYzEyZi00NGZkLTliNWQtMWFmOTI5Y2EwMDc5IgorICAgICAgICAgICAg ICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrIDMpCisgICAgICAgICAgICAgIChzaG91bGQgKGVx dWFsICcoKDIgNCkgKDEgMikpIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spKSkpKSkKKwor KGVydC1kZWZ0ZXN0IG9iLWphdmEvbWF0cml4LXZhci13aXRoLWhlYWRlciAoKQorICAiUmVhZCBt YXRyaXggdmFyaWFibGUgYW5kIHdyaXRlIGl0IHdpdGggaGVhZGVyLiIKKyAgKGlmIChleGVjdXRh YmxlLWZpbmQgb3JnLWJhYmVsLWphdmEtY29tcGlsZXItY29tbWFuZCkKKyAgICAgIChvcmctdGVz dC1hdC1pZCAiMmI5OTQ5OWYtYzEyZi00NGZkLTliNWQtMWFmOTI5Y2EwMDc5IgorICAgICAgICAg ICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrIDQpCisgICAgICAgICAgICAgIChzaG91bGQg KGVxdWFsICcoKCJjb2wxIiAiY29sMiIpIGhsaW5lICgyIDQpICgxIDIpKSAob3JnLWJhYmVsLWV4 ZWN1dGUtc3JjLWJsb2NrKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBvYi1qYXZhL291dHB1dC10YWJs ZS13aXRoLWhlYWRlciAoKQorICAiV3JpdGUgYSB0YWJsZSB0aGF0IGluY2x1ZGVzIGEgaGVhZGVy LiIKKyAgKGlmIChleGVjdXRhYmxlLWZpbmQgb3JnLWJhYmVsLWphdmEtY29tcGlsZXItY29tbWFu ZCkKKyAgICAgIChvcmctdGVzdC1hdC1pZCAiMmI5OTQ5OWYtYzEyZi00NGZkLTliNWQtMWFmOTI5 Y2EwMDc5IgorICAgICAgICAgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrIDUpCisgICAg ICAgICAgICAgIChzaG91bGQgKGVxdWFsICJ8Y29sMXxjb2wyfFxufC1cbnwyfDFcbnw0fDJcbiIg KG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkpKQorCisKKyhlcnQtZGVmdGVzdCBvYi1q YXZhL2luaG9tb2dlbmVvdXNfdGFibGUgKCkKKyAgIlJlYWQgYW5kIHdyaXRlIGFuIGluaG9tb2dl bmVvdXMgdGFibGUuIgorICAoaWYgKGV4ZWN1dGFibGUtZmluZCBvcmctYmFiZWwtamF2YS1jb21w aWxlci1jb21tYW5kKQorICAgICAgKG9yZy10ZXN0LWF0LWlkICI3ZmMwOTc5My02OGU2LTQyMWMt ODI0NS0yODQ4NjNkMDI1YmYiCisgICAgICAgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxv Y2sgMSkKKyAgICAgICAgICAgICAgKHNob3VsZCAoZXF1YWwKKyAgICAgICAgICAgICAgICAgICAg ICAgJygoImZvcnR5IiA0KSAoInR3byIgMikpCisgICAgICAgICAgICAgICAgICAgICAgIChvcmct YmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spKSkpKSkKKworCisoZXJ0LWRlZnRlc3Qgb2ItamF2YS9p bXBvcnRfbGlicmFyeSAoKQorICAiSW1wb3J0IGEgc3RhbmRhcmQgamF2YSBsaWJyYXJ5LiIKKyAg KGlmIChleGVjdXRhYmxlLWZpbmQgb3JnLWJhYmVsLWphdmEtY29tcGlsZXItY29tbWFuZCkKKyAg ICAgIChvcmctdGVzdC1hdC1pZCAiM2NlMGQ1M2YtNzgwYS00NzY5LTg2MTQtY2JkZDNlMjY1NzA4 IgorICAgICAgICAgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrIDEpCisgICAgICAgICAg ICAgIChzaG91bGQgKHN0cmluZz0KKyAgICAgICAgICAgICAgICAgICAgICAgImVuY29kZWQ9TkRJ PSwgZGVjb2RlZD00MiIKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yZy1iYWJlbC1leGVjdXRl LXNyYy1ibG9jaykpKSkpKQorCisoZXJ0LWRlZnRlc3Qgb2ItamF2YS9pbXBvcnRfbGlicmFyeV9p bmxpbmUgKCkKKyAgIkltcG9ydCBhIHN0YW5kYXJkIGphdmEgbGlicmFyeS4iCisgIChpZiAoZXhl Y3V0YWJsZS1maW5kIG9yZy1iYWJlbC1qYXZhLWNvbXBpbGVyLWNvbW1hbmQpCisgICAgICAob3Jn LXRlc3QtYXQtaWQgIjNjZTBkNTNmLTc4MGEtNDc2OS04NjE0LWNiZGQzZTI2NTcwOCIKKyAgICAg ICAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9jayAyKQorICAgICAgICAgICAgICAoc2hv dWxkIChzdHJpbmc9CisgICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGVkPU5EST0sIGRlY29k ZWQ9NDIiCisgICAgICAgICAgICAgICAgICAgICAgIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxv Y2spKSkpKSkKKworCis7OzsgdGVzdC1vYi1qYXZhLmVsIGVuZHMgaGVyZQotLSAKMi4xNy4xCgo= --00000000000013600405a92de6cd--