From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Ji=C5=99=C3=AD=20=C5=BDupka?= Subject: [KVM-Autotest][PATCH 3/5] kvm test: Introduce multi_host.srv Date: Tue, 31 Jan 2012 15:40:15 +0100 Message-ID: <1328020817-8159-4-git-send-email-jzupka@redhat.com> References: <1328020817-8159-1-git-send-email-jzupka@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 To: autotest@test.kernel.org, kvm@vger.kernel.org, kvm-autotest@redhat.com, lmr@redhat.com, ldoktor@redhat.com, jzupka@redhat.com Return-path: In-Reply-To: <1328020817-8159-1-git-send-email-jzupka@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: autotest-bounces@test.kernel.org Errors-To: autotest-bounces@test.kernel.org List-Id: kvm.vger.kernel.org V2UgaGFkIG1pZ3JhdGlvbl9jb250cm9sLnNydiB3aGljaCB3b3JrZWQgd2l0aCBvbGQKdmVyc2lv biBvZiBrdm0gY29uZmlnIGZpbGVzICh0ZXN0cy5jZmcsIHN1YnRlc3QuY2ZnLApldGMuLikuIEJl Y2F1c2UgY29uZmlnIGZpbGVzIHdlcmUgY2hhbmdlZCB0aGlzIGNvbnRyb2wKY29kZSBzdG9wcGVk IHdvcmtpbmcuCgpUaGlzIHBhdGNoIHJlcGFpcnMgdGhpcyBwcm9ibGVtIGFuZCByZW5hbWVzIHRo ZSBmaWxlCnRvIHRoZSBtb3JlIGNvcnJlY3QgYW5kIGdlbmVyaWMgbmFtZSBtdWx0aS1ob3N0LnNy di4KQWxzbywgYWRkZWQgbmV3IGNvbmZpZ3VyYXRpb24gZmlsZSB0ZXN0cy1zaGFyZWQuY2ZnCndo aWNoIGNvbnRhaW5zIHNoYXJlZCBkYXRhIGFtb25nIHNpbmdsZSBob3N0IGFuZCBtdWx0aQpob3N0 IHRlc3RzLgoKVGhlIGNoYW5nZXMgYXJlIHVzZWZ1bCBmb3IgbXVsdGlob3N0IHRlc3RzLCBzaW5j ZQp3ZSBjYW4gdXNlIGEgbG90IG9mIGNvbmZpZ3VyYXRpb24gZnJvbSByZWd1bGFyIHNpbmdsZQpo b3N0IHRlc3RzLgoKU2lnbmVkLW9mZi1ieTogSmnFmcOtIMW9dXBrYSA8anp1cGthQHJlZGhhdC5j b20+Ci0tLQogY2xpZW50L3Rlc3RzL2t2bS9taWdyYXRpb25fY29udHJvbC5zcnYgICAgICAgfCAg MTIzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBjbGllbnQvdGVzdHMva3ZtL211bHRpLWhv c3QtdGVzdHMuY2ZnLnNhbXBsZSB8ICAgNDMgKysrKysrKysrCiBjbGllbnQvdGVzdHMva3ZtL211 bHRpX2hvc3Quc3J2ICAgICAgICAgICAgICB8ICAxMDYgKysrKysrKysrKysrKysrKysrKysrKwog Y2xpZW50L3Rlc3RzL2t2bS90ZXN0cy1zaGFyZWQuY2ZnLnNhbXBsZSAgICAgfCAgIDQ4ICsrKysr KysrKysKIGNsaWVudC90ZXN0cy9rdm0vdGVzdHMuY2ZnLnNhbXBsZSAgICAgICAgICAgIHwgICA0 MyArLS0tLS0tLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDE5OCBpbnNlcnRpb25zKCspLCAxNjUgZGVs ZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgY2xpZW50L3Rlc3RzL2t2bS9taWdyYXRpb25f Y29udHJvbC5zcnYKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjbGllbnQvdGVzdHMva3ZtL211bHRpLWhv c3QtdGVzdHMuY2ZnLnNhbXBsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNsaWVudC90ZXN0cy9rdm0v bXVsdGlfaG9zdC5zcnYKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjbGllbnQvdGVzdHMva3ZtL3Rlc3Rz LXNoYXJlZC5jZmcuc2FtcGxlCgpkaWZmIC0tZ2l0IGEvY2xpZW50L3Rlc3RzL2t2bS9taWdyYXRp b25fY29udHJvbC5zcnYgYi9jbGllbnQvdGVzdHMva3ZtL21pZ3JhdGlvbl9jb250cm9sLnNydgpk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY2OWNjZC4uMDAwMDAwMAotLS0gYS9jbGll bnQvdGVzdHMva3ZtL21pZ3JhdGlvbl9jb250cm9sLnNydgorKysgL2Rldi9udWxsCkBAIC0xLDEy MyArMCwwIEBACi1BVVRIT1IgPSAiWW9sa2Z1bGwgQ2hvdyA8eXpob3VAcmVkaGF0LmNvbT4iCi1U SU1FID0gIlNIT1JUIgotTkFNRSA9ICJLVk0gVGVzdCAobWlncmF0aW9uIGFjcm9zcyBtdWx0aXBs ZSBob3N0cykiCi1URVNUX0NBVEVHT1JZID0gIkZ1bmN0aW9uYWwiCi1URVNUX0NMQVNTID0gIlZp cnR1YWxpemF0aW9uIgotVEVTVF9UWVBFID0gIlNlcnZlciIKLURPQyA9ICIiIgotTWlncmF0ZSBL Vk0gZ3Vlc3QgYmV0d2VlbiB0d28gaG9zdHMuIEl0IHBhcnNlcyB0aGUgYmFzZSBjb25maWcgZmls ZSwgcmVzdHJpY3RzCi1pdCB3aXRoIGFwcHJvcHJpYXRlIHBhcmFtZXRlcnMsIGdlbmVyYXRlcyB0 aGUgdGVzdCBkaWN0cywgbW9kaWZ5IHRoZSB0ZXN0X2RpY3RzCi1zbyB0aGVyZSdzIGEgZGlzdGlu Y3Rpb24gYmV0d2VlbiB0aGUgbWlncmF0aW9uIHJvbGVzICgnZGVzdCcgb3IgJ3NvdXJjZScpLgot IiIiCi0KLWltcG9ydCBzeXMsIG9zLCBjb21tYW5kcywgZ2xvYiwgc2h1dGlsLCBsb2dnaW5nLCBy YW5kb20KLWZyb20gYXV0b3Rlc3RfbGliLnNlcnZlciBpbXBvcnQgdXRpbHMKLWZyb20gYXV0b3Rl c3RfbGliLmNsaWVudC5jb21tb25fbGliIGltcG9ydCBjYXJ0ZXNpYW5fY29uZmlnCi0KLSMgU3Bl Y2lmeSB0aGUgZGlyZWN0b3J5IG9mIGF1dG90ZXN0IGJlZm9yZSB5b3Ugc3RhcnQgdGhpcyB0ZXN0 Ci1BVVRPVEVTVF9ESVIgPSAnL3Vzci9sb2NhbC9hdXRvdGVzdCcKLQotIyBTcGVjaWZ5IHRoZSBy b290IGRpcmVjdG9yeSB0aGF0IG9uIGNsaWVudCBtYWNoaW5lcwotcm9vdGRpciA9ICcvdG1wL2t2 bV9hdXRvdGVzdF9yb290JwotCi1LVk1fRElSID0gb3MucGF0aC5qb2luKEFVVE9URVNUX0RJUiwg J2NsaWVudC90ZXN0cy9rdm0nKQotCi0KLWRlZiBnZW5lcmF0ZV9tYWNfYWRkcmVzcygpOgotICAg IHIgPSByYW5kb20uU3lzdGVtUmFuZG9tKCkKLSAgICBtYWMgPSAiOWE6JTAyeDolMDJ4OiUwMng6 JTAyeDolMDJ4IiAlIChyLnJhbmRpbnQoMHgwMCwgMHhmZiksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgci5yYW5kaW50KDB4MDAsIDB4ZmYpLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIucmFuZGludCgweDAwLCAweGZmKSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnJhbmRpbnQoMHgw MCwgMHhmZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5y YW5kaW50KDB4MDAsIDB4ZmYpKQotICAgIHJldHVybiBtYWMKLQotCi1kZWYgcnVuKHBhaXIpOgot ICAgIGxvZ2dpbmcuaW5mbygiS1ZNIG1pZ3JhdGlvbiBydW5uaW5nIG9uIHNvdXJjZSBob3N0IFsl c10gYW5kIGRlc3RpbmF0aW9uICIKLSAgICAgICAgICAgICAgICAgImhvc3QgWyVzXVxuIiwgcGFp clswXSwgcGFpclsxXSkKLQotICAgIHNvdXJjZSA9IGhvc3RzLmNyZWF0ZV9ob3N0KHBhaXJbMF0p Ci0gICAgZGVzdCA9IGhvc3RzLmNyZWF0ZV9ob3N0KHBhaXJbMV0pCi0gICAgc291cmNlX2F0ID0g YXV0b3Rlc3QuQXV0b3Rlc3Qoc291cmNlKQotICAgIGRlc3RfYXQgPSBhdXRvdGVzdC5BdXRvdGVz dChkZXN0KQotCi0gICAgY2ZnX2ZpbGUgPSBvcy5wYXRoLmpvaW4oS1ZNX0RJUiwgInRlc3RzX2Jh c2UuY2ZnIikKLQotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjZmdfZmlsZSk6Ci0gICAgICAg IHJhaXNlIGVycm9yLkpvYkVycm9yKCJDb25maWcgZmlsZSAlcyB3YXMgbm90IGZvdW5kIiwgY2Zn X2ZpbGUpCi0KLSAgICAjIEdldCB0ZXN0IHNldCAoZGljdGlvbmFyeSBsaXN0KSBmcm9tIHRoZSBj b25maWd1cmF0aW9uIGZpbGUKLSAgICBwYXJzZXIgPSBjYXJ0ZXNpYW5fY29uZmlnLlBhcnNlcigp Ci0gICAgdGVzdF92YXJpYW50cyA9ICIiIgotaW1hZ2VfbmFtZShfLiopPyA/PD0gL3RtcC9rdm1f YXV0b3Rlc3Rfcm9vdC9pbWFnZXMvCi1jZHJvbShfLiopPyA/PD0gL3RtcC9rdm1fYXV0b3Rlc3Rf cm9vdC8KLWZsb3BweSA/PD0gL3RtcC9rdm1fYXV0b3Rlc3Rfcm9vdC8KLUxpbnV4OgotICAgIHVu YXR0ZW5kZWRfaW5zdGFsbDoKLSAgICAgICAga2VybmVsID88PSAvdG1wL2t2bV9hdXRvdGVzdF9y b290LwotICAgICAgICBpbml0cmQgPzw9IC90bXAva3ZtX2F1dG90ZXN0X3Jvb3QvCi1xZW11X2Jp bmFyeSA9IC91c3IvbGliZXhlYy9xZW11LWt2bQotcWVtdV9pbWdfYmluYXJ5ID0gL3Vzci9iaW4v cWVtdS1pbWcKLW9ubHkgcWNvdzIKLW9ubHkgdmlydGlvX25ldAotb25seSB2aXJ0aW9fYmxrCi1v bmx5IHNtcDIKLW9ubHkgbm9fcGNpX2Fzc2lnbmFibGUKLW9ubHkgc21hbGxwYWdlcwotb25seSBG ZWRvcmEuMTQuNjQKLW9ubHkgbWlncmF0ZV9tdWx0aV9ob3N0Ci1uaWNfbW9kZSA9IHRhcAotbmlj X21hY19uaWMxID0gJXMKLSIiIiAlIChnZW5lcmF0ZV9tYWNfYWRkcmVzcygpKQotICAgIHBhcnNl ci5wYXJzZV9maWxlKGNmZ19maWxlKQotICAgIHBhcnNlci5wYXJzZV9zdHJpbmcodGVzdF92YXJp YW50cykKLSAgICB0ZXN0X2RpY3RzID0gcGFyc2VyLmdldF9kaWN0cygpCi0KLSAgICBzb3VyY2Vf Y29udHJvbF9maWxlID0gZGVzdF9jb250cm9sX2ZpbGUgPSAiIiIKLWt2bV90ZXN0X2RpciA9IG9z LnBhdGguam9pbihvcy5lbnZpcm9uWydBVVRPRElSJ10sJ3Rlc3RzL2t2bScpCi1zeXMucGF0aC5h cHBlbmQoa3ZtX3Rlc3RfZGlyKVxuCi0iIiIKLSAgICBmb3IgcGFyYW1zIGluIHRlc3RfZGljdHM6 Ci0gICAgICAgIHBhcmFtc1snc3JjaG9zdCddID0gc291cmNlLmlwCi0gICAgICAgIHBhcmFtc1sn ZHN0aG9zdCddID0gZGVzdC5pcAotICAgICAgICBwYXJhbXNbJ3Jvb3RkaXInXSA9IHJvb3RkaXIK LQotICAgICAgICBzb3VyY2VfcGFyYW1zID0gcGFyYW1zLmNvcHkoKQotICAgICAgICBzb3VyY2Vf cGFyYW1zWydyb2xlJ10gPSAic291cmNlIgotCi0gICAgICAgIGRlc3RfcGFyYW1zID0gcGFyYW1z LmNvcHkoKQotICAgICAgICBkZXN0X3BhcmFtc1sncm9sZSddID0gImRlc3RpbmF0aW9uIgotICAg ICAgICBkZXN0X3BhcmFtc1snbWlncmF0aW9uX21vZGUnXSA9ICJ0Y3AiCi0KLSAgICAgICAgIyBS ZXBvcnQgdGhlIHBhcmFtZXRlcnMgd2UndmUgcmVjZWl2ZWQKLSAgICAgICAgcHJpbnQgIlRlc3Qg cGFyYW1ldGVyczoiCi0gICAgICAgIGtleXMgPSBwYXJhbXMua2V5cygpCi0gICAgICAgIGtleXMu c29ydCgpCi0gICAgICAgIGZvciBrZXkgaW4ga2V5czoKLSAgICAgICAgICAgIGxvZ2dpbmcuZGVi dWcoIiAgICAlcyA9ICVzIiwga2V5LCBwYXJhbXNba2V5XSkKLQotICAgICAgICBzb3VyY2VfY29u dHJvbF9maWxlICs9ICgiam9iLnJ1bl90ZXN0KCdrdm0nLCB0YWc9JyVzJywgcGFyYW1zPSVzKSIg JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc291cmNlX3BhcmFtc1snc2hvcnRu YW1lJ10sIHNvdXJjZV9wYXJhbXMpKQotICAgICAgICBkZXN0X2NvbnRyb2xfZmlsZSArPSAoImpv Yi5ydW5fdGVzdCgna3ZtJywgdGFnPSclcycsIHBhcmFtcz0lcykiICUKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChkZXN0X3BhcmFtc1snc2hvcnRuYW1lJ10sIGRlc3RfcGFyYW1zKSkK LQotICAgICAgICBsb2dnaW5nLmluZm8oJ1NvdXJjZSBjb250cm9sIGZpbGU6XG4lcycsIHNvdXJj ZV9jb250cm9sX2ZpbGUpCi0gICAgICAgIGxvZ2dpbmcuaW5mbygnRGVzdGluYXRpb24gY29udHJv bCBmaWxlOlxuJXMnLCBkZXN0X2NvbnRyb2xfZmlsZSkKLSAgICAgICAgZGVzdF9jb21tYW5kID0g c3ViY29tbWFuZChkZXN0X2F0LnJ1biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBbZGVzdF9jb250cm9sX2ZpbGUsIGRlc3QuaG9zdG5hbWVdKQotCi0gICAgICAgIHNvdXJjZV9j b21tYW5kID0gc3ViY29tbWFuZChzb3VyY2VfYXQucnVuLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgW3NvdXJjZV9jb250cm9sX2ZpbGUsIHNvdXJjZS5ob3N0bmFtZV0pCi0K LSAgICAgICAgcGFyYWxsZWwoW2Rlc3RfY29tbWFuZCwgc291cmNlX2NvbW1hbmRdKQotCi0jIEdy YWIgdGhlIHBhaXJzIChhbmQgZmFpbHVyZXMpCi0ocGFpcnMsIGZhaWx1cmVzKSA9IHV0aWxzLmZv cm1fbnR1cGxlc19mcm9tX21hY2hpbmVzKG1hY2hpbmVzLCAyKQotCi0jIExvZyB0aGUgZmFpbHVy ZXMKLWZvciBmYWlsdXJlIGluIGZhaWx1cmVzOgotICAgIGpvYi5yZWNvcmQoIkZBSUwiLCBmYWls dXJlWzBdLCAia3ZtIiwgZmFpbHVyZVsxXSkKLQotIyBOb3cgcnVuIHRocm91Z2ggZWFjaCBwYWly IGFuZCBydW4KLWpvYi5wYXJhbGxlbF9zaW1wbGUocnVuLCBwYWlycywgbG9nPUZhbHNlKQpkaWZm IC0tZ2l0IGEvY2xpZW50L3Rlc3RzL2t2bS9tdWx0aS1ob3N0LXRlc3RzLmNmZy5zYW1wbGUgYi9j bGllbnQvdGVzdHMva3ZtL211bHRpLWhvc3QtdGVzdHMuY2ZnLnNhbXBsZQpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2E0MWUzCi0tLSAvZGV2L251bGwKKysrIGIvY2xpZW50 L3Rlc3RzL2t2bS9tdWx0aS1ob3N0LXRlc3RzLmNmZy5zYW1wbGUKQEAgLTAsMCArMSw0MyBAQAor IyBDb3B5IHRoaXMgZmlsZSB0byBtdWx0aS1ob3N0LXRlc3RzLmNmZyBhbmQgZWRpdCBpdC4KKyMK KyMgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSB0ZXN0IHNldCBkZWZpbml0aW9ucyBmb3IgbXVsdGkg aG9zdCB0ZXN0cy4KKworIyBJbmNsdWRlIHRoZSBzaGFyZWQgdGVzdCBmaWxlcy4KK2luY2x1ZGUg dGVzdHMtc2hhcmVkLmNmZworCisjIEhlcmUgYXJlIHRoZSB0ZXN0IHNldHMgdmFyaWFudHMuIFRo ZSB2YXJpYW50ICdxZW11X2t2bV93aW5kb3dzX3F1aWNrJyBpcworIyBmdWxseSBjb21tZW50ZWQs IHRoZSBmb2xsb3dpbmcgb25lcyBoYXZlIGNvbW1lbnRzIG9ubHkgb24gbm90ZXdvcnRoeSBwb2lu dHMKK3ZhcmlhbnRzOgorICAgICMgUnVucyBxZW11LWt2bSwgV2luZG93cyBWaXN0YSA2NCBiaXQg Z3Vlc3QgT1MsIGluc3RhbGwsIGJvb3QsIHNodXRkb3duCisgICAgLSBAcWVtdV9taWdyYXRlX211 bHRpX2hvc3Q6CisgICAgICAgIHFlbXVfYmluYXJ5ID0gL3Vzci9iaW4vcWVtdS1rdm0KKyAgICAg ICAgcWVtdV9pbWdfYmluYXJ5ID0gL3Vzci9iaW4vcWVtdS1pbWcKKyAgICAgICAgcWVtdV9pb19i aW5hcnkgPSAvdXNyL2Jpbi9xZW11LWlvCisgICAgICAgIG5pY19tb2RlID0gdGFwCisgICAgICAg IG9ubHkgcWNvdzIKKyAgICAgICAgb25seSB2aXJ0aW9fbmV0CisgICAgICAgIG9ubHkgdmlydGlv X2JsaworICAgICAgICBvbmx5IHNtcDIKKyAgICAgICAgb25seSBub19wY2lfYXNzaWduYWJsZQor ICAgICAgICBvbmx5IG5vXzlwX2V4cG9ydAorICAgICAgICBvbmx5IHNtYWxscGFnZXMKKyAgICAg ICAgb25seSBGZWRvcmEuMTUuNjQKKyAgICAgICAgb25seSBtaWdyYXRlX211bHRpX2hvc3QKKwor ICAgICMgUnVucyBxZW11LCBmMTYgNjQgYml0IGd1ZXN0IE9TLCBpbnN0YWxsLCBib290LCBzaHV0 ZG93bgorICAgIC0gQHFlbXVfY3B1ZmxhZ3NfbXVsdGlfaG9zdDoKKyAgICAgICAgcWVtdV9iaW5h cnkgPSAvdXNyL2Jpbi9xZW11LWt2bQorICAgICAgICBxZW11X2ltZ19iaW5hcnkgPSAvdXNyL2Jp bi9xZW11LWltZworICAgICAgICBxZW11X2lvX2JpbmFyeSA9IC91c3IvYmluL3FlbXUtaW8KKyAg ICAgICAgbmljX21vZGUgPSB0YXAKKyAgICAgICAgb25seSBxY293MgorICAgICAgICBvbmx5IHZp cnRpb19uZXQKKyAgICAgICAgb25seSB2aXJ0aW9fYmxrCisgICAgICAgIG9ubHkgc21wMgorICAg ICAgICBvbmx5IG5vX3BjaV9hc3NpZ25hYmxlCisgICAgICAgIG9ubHkgbm9fOXBfZXhwb3J0Cisg ICAgICAgIG9ubHkgc21hbGxwYWdlcworICAgICAgICBvbmx5IEZlZG9yYS4xNS42NAorICAgICAg ICBvbmx5IGNwdWZsYWdzX211bHRpX2hvc3QKKworb25seSBxZW11X2NwdWZsYWdzX211bHRpX2hv c3QKZGlmZiAtLWdpdCBhL2NsaWVudC90ZXN0cy9rdm0vbXVsdGlfaG9zdC5zcnYgYi9jbGllbnQv dGVzdHMva3ZtL211bHRpX2hvc3Quc3J2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjE1YWNiYjMKLS0tIC9kZXYvbnVsbAorKysgYi9jbGllbnQvdGVzdHMva3ZtL211bHRpX2hv c3Quc3J2CkBAIC0wLDAgKzEsMTA2IEBACitBVVRIT1IgPSAiSmlyaSBadXBrYSA8anp1cGthQHJl ZGhhdC5jb20+IgorVElNRSA9ICJTSE9SVCIKK05BTUUgPSAiIgorVEVTVF9DQVRFR09SWSA9ICJG dW5jdGlvbmFsIgorVEVTVF9DTEFTUyA9ICJWaXJ0dWFsaXphdGlvbiIKK1RFU1RfVFlQRSA9ICJT ZXJ2ZXIiCitET0MgPSAiS1ZNIHRlc3RzIChtdWx0aS1ob3N0KSBzZXJ2ZXIgY29udHJvbCIKK1J1 bnMgdGVzdHMgYWNyb3NzIG11bHRpcGxlIGhvc3RzLiBJdCB1c2VzIHRoZSBjb25maWcgZmlsZQor J211bHRpLWhvc3QtdGVzdHMuY2ZnJyBpbiBvcmRlciB0byB5aWVsZCB0aGUgYXBwcm9wcmlhdGUK K2RpY3RzIGZvciB0aGUgbXVsdGkgaG9zdCB0ZXN0LgorIiIiCisKK2ltcG9ydCBzeXMsIG9zLCBj b21tYW5kcywgZ2xvYiwgc2h1dGlsLCBsb2dnaW5nLCByYW5kb20KK2Zyb20gYXV0b3Rlc3RfbGli LnNlcnZlciBpbXBvcnQgdXRpbHMKK2Zyb20gYXV0b3Rlc3RfbGliLmNsaWVudC5jb21tb25fbGli IGltcG9ydCBjYXJ0ZXNpYW5fY29uZmlnLCBlcnJvcgorCisjIFNwZWNpZnkgdGhlIGRpcmVjdG9y eSBvZiBhdXRvdGVzdCBiZWZvcmUgeW91IHN0YXJ0IHRoaXMgdGVzdAorQVVUT1RFU1RfRElSID0g am9iLmNsaWVudGRpcgorCitLVk1fRElSID0gb3MucGF0aC5qb2luKEFVVE9URVNUX0RJUiwgJ3Rl c3RzJywgJ2t2bScpCisKKworZGVmIGdlbmVyYXRlX21hY19hZGRyZXNzKCk6CisgICAgciA9IHJh bmRvbS5TeXN0ZW1SYW5kb20oKQorICAgIG1hYyA9ICI5YTolMDJ4OiUwMng6JTAyeDolMDJ4OiUw MngiICUgKHIucmFuZGludCgweDAwLCAweGZmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByLnJhbmRpbnQoMHgwMCwgMHhmZiksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgci5yYW5kaW50KDB4MDAsIDB4ZmYpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIucmFuZGludCgweDAwLCAweGZm KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnJhbmRpbnQo MHgwMCwgMHhmZikpCisgICAgcmV0dXJuIG1hYworCisKK2RlZiBydW4ocGFpcik6CisgICAgbG9n Z2luZy5pbmZvKCJLVk0gdGVzdCBydW5uaW5nIG9uIHNvdXJjZSBob3N0IFslc10gYW5kIGRlc3Rp bmF0aW9uICIKKyAgICAgICAgICAgICAgICAgImhvc3QgWyVzXVxuIiwgcGFpclswXSwgcGFpclsx XSkKKworICAgIHNvdXJjZSA9IGhvc3RzLmNyZWF0ZV9ob3N0KHBhaXJbMF0pCisgICAgZGVzdCA9 IGhvc3RzLmNyZWF0ZV9ob3N0KHBhaXJbMV0pCisgICAgc291cmNlX2F0ID0gYXV0b3Rlc3QuQXV0 b3Rlc3Qoc291cmNlKQorICAgIGRlc3RfYXQgPSBhdXRvdGVzdC5BdXRvdGVzdChkZXN0KQorCisg ICAgY2ZnX2ZpbGUgPSBvcy5wYXRoLmpvaW4oS1ZNX0RJUiwgIm11bHRpLWhvc3QtdGVzdHMuY2Zn IikKKworICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjZmdfZmlsZSk6CisgICAgICAgIHJhaXNl IGVycm9yLkpvYkVycm9yKCJDb25maWcgZmlsZSAlcyB3YXMgbm90IGZvdW5kIiwgY2ZnX2ZpbGUp CisKKyAgICAjIEdldCB0ZXN0IHNldCAoZGljdGlvbmFyeSBsaXN0KSBmcm9tIHRoZSBjb25maWd1 cmF0aW9uIGZpbGUKKyAgICBwYXJzZXIgPSBjYXJ0ZXNpYW5fY29uZmlnLlBhcnNlcigpCisgICAg cGFyc2VyLnBhcnNlX2ZpbGUoY2ZnX2ZpbGUpCisgICAgdGVzdF9kaWN0cyA9IHBhcnNlci5nZXRf ZGljdHMoKQorCisgICAgc291cmNlX2NvbnRyb2xfZmlsZSA9IGRlc3RfY29udHJvbF9maWxlID0g IiIiCit0ZXN0bmFtZSA9ICJrdm0iCitiaW5kaXIgPSBvcy5wYXRoLmpvaW4oam9iLnRlc3RkaXIs IHRlc3RuYW1lKQoram9iLmluc3RhbGxfcGtnKHRlc3RuYW1lLCAndGVzdCcsIGJpbmRpcikKKwor a3ZtX3Rlc3RfZGlyID0gb3MucGF0aC5qb2luKG9zLmVudmlyb25bJ0FVVE9ESVInXSwndGVzdHMn LCAna3ZtJykKK3N5cy5wYXRoLmFwcGVuZChrdm1fdGVzdF9kaXIpCisiIiIKKyAgICBpbXBvcnQg c3lzCisKKyAgICBmb3IgcGFyYW1zIGluIHRlc3RfZGljdHM6CisgICAgICAgIHBhcmFtc1snc3Jj aG9zdCddID0gc291cmNlLmlwCisgICAgICAgIHBhcmFtc1snZHN0aG9zdCddID0gZGVzdC5pcAor CisgICAgICAgIGZvciBuaWMgaW4gcGFyYW1zLmdldCgnbmljcycsIiIpLnNwbGl0KCk6CisgICAg ICAgICAgICBwYXJhbXNbJ25pY19tYWNfJXMnICUgbmljXSA9IGdlbmVyYXRlX21hY19hZGRyZXNz KCkKKworICAgICAgICBzb3VyY2VfcGFyYW1zID0gcGFyYW1zLmNvcHkoKQorICAgICAgICBzb3Vy Y2VfcGFyYW1zWydyb2xlJ10gPSAic291cmNlIgorCisgICAgICAgIGRlc3RfcGFyYW1zID0gcGFy YW1zLmNvcHkoKQorICAgICAgICBkZXN0X3BhcmFtc1sncm9sZSddID0gImRlc3RpbmF0aW9uIgor ICAgICAgICBkZXN0X3BhcmFtc1snbWlncmF0aW9uX21vZGUnXSA9ICJ0Y3AiCisKKyAgICAgICAg IyBSZXBvcnQgdGhlIHBhcmFtZXRlcnMgd2UndmUgcmVjZWl2ZWQKKyAgICAgICAgcHJpbnQgIlRl c3QgcGFyYW1ldGVyczoiCisgICAgICAgIGtleXMgPSBwYXJhbXMua2V5cygpCisgICAgICAgIGtl eXMuc29ydCgpCisgICAgICAgIGZvciBrZXkgaW4ga2V5czoKKyAgICAgICAgICAgIGxvZ2dpbmcu ZGVidWcoIiAgICAlcyA9ICVzIiwga2V5LCBwYXJhbXNba2V5XSkKKworICAgICAgICBzb3VyY2Vf Y29udHJvbF9maWxlICs9ICgiam9iLnJ1bl90ZXN0KCdrdm0nLCB0YWc9JyVzJywgcGFyYW1zPSVz KSIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc291cmNlX3BhcmFtc1snc2hv cnRuYW1lJ10sIHNvdXJjZV9wYXJhbXMpKQorICAgICAgICBkZXN0X2NvbnRyb2xfZmlsZSArPSAo ImpvYi5ydW5fdGVzdCgna3ZtJywgdGFnPSclcycsIHBhcmFtcz0lcykiICUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChkZXN0X3BhcmFtc1snc2hvcnRuYW1lJ10sIGRlc3RfcGFyYW1z KSkKKworICAgICAgICBsb2dnaW5nLmluZm8oJ1NvdXJjZSBjb250cm9sIGZpbGU6XG4lcycsIHNv dXJjZV9jb250cm9sX2ZpbGUpCisgICAgICAgIGxvZ2dpbmcuaW5mbygnRGVzdGluYXRpb24gY29u dHJvbCBmaWxlOlxuJXMnLCBkZXN0X2NvbnRyb2xfZmlsZSkKKyAgICAgICAgZGVzdF9jb21tYW5k ID0gc3ViY29tbWFuZChkZXN0X2F0LnJ1biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBbZGVzdF9jb250cm9sX2ZpbGUsIGRlc3QuaG9zdG5hbWVdKQorCisgICAgICAgIHNvdXJj ZV9jb21tYW5kID0gc3ViY29tbWFuZChzb3VyY2VfYXQucnVuLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgW3NvdXJjZV9jb250cm9sX2ZpbGUsIHNvdXJjZS5ob3N0bmFtZV0p CisKKyAgICAgICAgcGFyYWxsZWwoW2Rlc3RfY29tbWFuZCwgc291cmNlX2NvbW1hbmRdKQorCisj IEdyYWIgdGhlIHBhaXJzIChhbmQgZmFpbHVyZXMpCisocGFpcnMsIGZhaWx1cmVzKSA9IHV0aWxz LmZvcm1fbnR1cGxlc19mcm9tX21hY2hpbmVzKG1hY2hpbmVzLCAyKQorCisjIExvZyB0aGUgZmFp bHVyZXMKK2ZvciBmYWlsdXJlIGluIGZhaWx1cmVzOgorICAgIGpvYi5yZWNvcmQoIkZBSUwiLCBm YWlsdXJlWzBdLCAia3ZtIiwgZmFpbHVyZVsxXSkKKworIyBOb3cgcnVuIHRocm91Z2ggZWFjaCBw YWlyIGFuZCBydW4KK2pvYi5wYXJhbGxlbF9zaW1wbGUocnVuLCBwYWlycywgbG9nPUZhbHNlKQpk aWZmIC0tZ2l0IGEvY2xpZW50L3Rlc3RzL2t2bS90ZXN0cy1zaGFyZWQuY2ZnLnNhbXBsZSBiL2Ns aWVudC90ZXN0cy9rdm0vdGVzdHMtc2hhcmVkLmNmZy5zYW1wbGUKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uOWRlM2I5MwotLS0gL2Rldi9udWxsCisrKyBiL2NsaWVudC90ZXN0 cy9rdm0vdGVzdHMtc2hhcmVkLmNmZy5zYW1wbGUKQEAgLTAsMCArMSw0OCBAQAorIyBDb3B5IHRo aXMgZmlsZSB0byB0ZXN0cy1zaGFyZWQuY2ZnIGFuZCBlZGl0IGl0LgorIworIyBUaGlzIGZpbGUg Y29udGFpbnMgdGhlIGJhc2UgdGVzdCBzZXQgZGVmaW5pdGlvbnMsIHNoYXJlZCBhbW9uZyBzaW5n bGUgaG9zdAorIyBhbmQgbXVsdGkgaG9zdCBqb2JzLgorCisjIEluY2x1ZGUgdGhlIGJhc2UgY29u ZmlnIGZpbGVzLgoraW5jbHVkZSBiYXNlLmNmZworaW5jbHVkZSBzdWJ0ZXN0cy5jZmcKK2luY2x1 ZGUgZ3Vlc3Qtb3MuY2ZnCitpbmNsdWRlIGd1ZXN0LWh3LmNmZworaW5jbHVkZSBjZGtleXMuY2Zn CitpbmNsdWRlIHZpcnRpby13aW4uY2ZnCisKKyMgVmlydHVhbGl6YXRpb24gdHlwZSAoa3ZtIG9y IGxpYnZpcnQpCisjIFRPRE86IFVwZGF0ZSBjb2RlIHRvIHVzZSB2bV9saWJyYXJ5ICsgdm1fdHlw ZSArIHZtX3N1YnR5cGUKKyMgICAgICAgICAgIGkuZS4gICAgICAgIChsaWJ2aXJ0L25vbmUpICsg KHFlbXUva3ZtL3hlbikgKyAoaHZtL3BhcmF2aXJ0KQordm1fdHlwZSA9IGt2bQorCisjIE1vZGlm eS9jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZXMgaWYgeW91IHdpc2ggdG8gbW9kaWZ5IHRoZSBw YXRocyBvZiB0aGUKKyMgaW1hZ2UgZmlsZXMsIElTTyBmaWxlcyBvciBxZW11IGJpbmFyaWVzLgor IworIyBBcyBmb3IgdGhlIGRlZmF1bHRzOgorIyAqIHFlbXUgYW5kIHFlbXUtaW1nIGFyZSBleHBl Y3RlZCB0byBiZSBmb3VuZCB1bmRlciAvdXNyL2Jpbi9xZW11LWt2bSBhbmQKKyMgICAvdXNyL2Jp bi9xZW11LWltZyByZXNwZWN0aXZlbHkuCisjICogQWxsIGltYWdlIGZpbGVzIGFyZSBleHBlY3Rl ZCB1bmRlciAvdG1wL2t2bV9hdXRvdGVzdF9yb290L2ltYWdlcy8KKyMgKiBBbGwgaW5zdGFsbCBp c28gZmlsZXMgYXJlIGV4cGVjdGVkIHVuZGVyIC90bXAva3ZtX2F1dG90ZXN0X3Jvb3QvaXNvcy8K KyMgKiBUaGUgcGFyYW1ldGVycyBjZHJvbV91bmF0dGVuZGVkLCBmbG9wcHksIGtlcm5lbCBhbmQg aW5pdHJkIGFyZSBnZW5lcmF0ZWQKKyMgICBieSBLVk0gYXV0b3Rlc3QsIHNvIHJlbWVtYmVyIHRv IHB1dCB0aGVtIHVuZGVyIGEgd3JpdGFibGUgbG9jYXRpb24KKyMgICAoZm9yIGV4YW1wbGUsIHRo ZSBjZHJvbSBzaGFyZSBjYW4gYmUgcmVhZCBvbmx5KQoraW1hZ2VfbmFtZShfLiopPyA/PD0gL3Rt cC9rdm1fYXV0b3Rlc3Rfcm9vdC9pbWFnZXMvCitjZHJvbShfLiopPyA/PD0gL3RtcC9rdm1fYXV0 b3Rlc3Rfcm9vdC8KK2Zsb3BweSA/PD0gL3RtcC9rdm1fYXV0b3Rlc3Rfcm9vdC8KK0xpbnV4Li51 bmF0dGVuZGVkX2luc3RhbGw6CisgICAga2VybmVsID88PSAvdG1wL2t2bV9hdXRvdGVzdF9yb290 LworICAgIGluaXRyZCA/PD0gL3RtcC9rdm1fYXV0b3Rlc3Rfcm9vdC8KKworIyBZb3UgbWF5IHBy b3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIERUTSBzZXJ2ZXIgZm9yIFdIUUwgdGVzdHMgaGVy ZToKKyN3aHFsOgorIyAgICBzZXJ2ZXJfYWRkcmVzcyA9IDEwLjIwLjMwLjQwCisjICAgIHNlcnZl cl9zaGVsbF9wb3J0ID0gMTAwMjIKKyMgICAgc2VydmVyX2ZpbGVfdHJhbnNmZXJfcG9ydCA9IDEw MDIzCisjIE5vdGUgdGhhdCB0aGUgRFRNIHNlcnZlciBtdXN0IHJ1biByc3MuZXhlIChhdmFpbGFi bGUgdW5kZXIgZGVwcy8pLAorIyBwcmVmZXJhYmx5IHdpdGggYWRtaW5pc3RyYXRvciBwcml2aWxl Z2VzLgorCisjIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmVzIHRvIGVuYWJsZSBhYm9ydC1v bi1lcnJvciBtb2RlOgorI2Fib3J0X29uX2Vycm9yID0geWVzCisja2lsbF92bS4qID89IG5vCisj a2lsbF91bnJlc3BvbnNpdmVfdm1zLiogPz0gbm8KZGlmZiAtLWdpdCBhL2NsaWVudC90ZXN0cy9r dm0vdGVzdHMuY2ZnLnNhbXBsZSBiL2NsaWVudC90ZXN0cy9rdm0vdGVzdHMuY2ZnLnNhbXBsZQpp bmRleCBlMDNlMDA3Li5jOTFhNThiIDEwMDY0NAotLS0gYS9jbGllbnQvdGVzdHMva3ZtL3Rlc3Rz LmNmZy5zYW1wbGUKKysrIGIvY2xpZW50L3Rlc3RzL2t2bS90ZXN0cy5jZmcuc2FtcGxlCkBAIC0z LDE3ICszLDcgQEAKICMgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSB0ZXN0IHNldCBkZWZpbml0aW9u cy4gRGVmaW5lIHlvdXIgdGVzdCBzZXRzIGhlcmUuCiAKICMgSW5jbHVkZSB0aGUgYmFzZSBjb25m aWcgZmlsZXMuCi1pbmNsdWRlIGJhc2UuY2ZnCi1pbmNsdWRlIHN1YnRlc3RzLmNmZwotaW5jbHVk ZSBndWVzdC1vcy5jZmcKLWluY2x1ZGUgZ3Vlc3QtaHcuY2ZnCi1pbmNsdWRlIGNka2V5cy5jZmcK LWluY2x1ZGUgdmlydGlvLXdpbi5jZmcKLQotIyBWaXJ0dWFsaXphdGlvbiB0eXBlIChrdm0gb3Ig bGlidmlydCkKLSMgVE9ETzogVXBkYXRlIGNvZGUgdG8gdXNlIHZtX2xpYnJhcnkgKyB2bV90eXBl ICsgdm1fc3VidHlwZQotIyAgICAgICAgICAgaS5lLiAgICAgICAgKGxpYnZpcnQvbm9uZSkgKyAo cWVtdS9rdm0veGVuKSArIChodm0vcGFyYXZpcnQpCi12bV90eXBlID0ga3ZtCitpbmNsdWRlIHRl c3RzLXNoYXJlZC5jZmcKIAogIyBIZXJlIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIGltYWdlIG5hbWUg Zm9yIG91ciBjdXN0b20gbGludXggYW5kIHdpbmRvd3MgZ3Vlc3RzCiAjCkBAIC0zNiwyNCArMjYs NiBAQCBDdXN0b21HdWVzdFdpbmRvd3M6CiAgICAgI2ltYWdlX25hbWUgPSAvZGV2L21hcHBlci92 Z193aW5kb3dzX2d1ZXN0CiAgICAgI2ltYWdlX3Jhd19kZXZpY2UgPSB5ZXMKIAotIyBNb2RpZnkv Y29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmVzIGlmIHlvdSB3aXNoIHRvIG1vZGlmeSB0aGUgcGF0 aHMgb2YgdGhlCi0jIGltYWdlIGZpbGVzLCBJU08gZmlsZXMgb3IgcWVtdSBiaW5hcmllcy4KLSMK LSMgQXMgZm9yIHRoZSBkZWZhdWx0czoKLSMgKiBxZW11IGFuZCBxZW11LWltZyBhcmUgZXhwZWN0 ZWQgdG8gYmUgZm91bmQgdW5kZXIgL3Vzci9iaW4vcWVtdS1rdm0gYW5kCi0jICAgL3Vzci9iaW4v cWVtdS1pbWcgcmVzcGVjdGl2ZWx5LgotIyAqIEFsbCBpbWFnZSBmaWxlcyBhcmUgZXhwZWN0ZWQg dW5kZXIgL3RtcC9rdm1fYXV0b3Rlc3Rfcm9vdC9pbWFnZXMvCi0jICogQWxsIGluc3RhbGwgaXNv IGZpbGVzIGFyZSBleHBlY3RlZCB1bmRlciAvdG1wL2t2bV9hdXRvdGVzdF9yb290L2lzb3MvCi0j ICogVGhlIHBhcmFtZXRlcnMgY2Ryb21fdW5hdHRlbmRlZCwgZmxvcHB5LCBrZXJuZWwgYW5kIGlu aXRyZCBhcmUgZ2VuZXJhdGVkCi0jICAgYnkgS1ZNIGF1dG90ZXN0LCBzbyByZW1lbWJlciB0byBw dXQgdGhlbSB1bmRlciBhIHdyaXRhYmxlIGxvY2F0aW9uCi0jICAgKGZvciBleGFtcGxlLCB0aGUg Y2Ryb20gc2hhcmUgY2FuIGJlIHJlYWQgb25seSkKLWltYWdlX25hbWUoXy4qKT8gPzw9IC90bXAv a3ZtX2F1dG90ZXN0X3Jvb3QvaW1hZ2VzLwotY2Ryb20oXy4qKT8gPzw9IC90bXAva3ZtX2F1dG90 ZXN0X3Jvb3QvCi1mbG9wcHkgPzw9IC90bXAva3ZtX2F1dG90ZXN0X3Jvb3QvCi1MaW51eC4udW5h dHRlbmRlZF9pbnN0YWxsOgotICAgIGtlcm5lbCA/PD0gL3RtcC9rdm1fYXV0b3Rlc3Rfcm9vdC8K LSAgICBpbml0cmQgPzw9IC90bXAva3ZtX2F1dG90ZXN0X3Jvb3QvCi0KICMgSGVyZSBhcmUgdGhl IHRlc3Qgc2V0cyB2YXJpYW50cy4gVGhlIHZhcmlhbnQgJ3FlbXVfa3ZtX3dpbmRvd3NfcXVpY2sn IGlzCiAjIGZ1bGx5IGNvbW1lbnRlZCwgdGhlIGZvbGxvd2luZyBvbmVzIGhhdmUgY29tbWVudHMg b25seSBvbiBub3Rld29ydGh5IHBvaW50cwogdmFyaWFudHM6CkBAIC0xNTYsMTggKzEyOCw1IEBA IHZhcmlhbnRzOgogICAgICAgICBvbmx5IEN1c3RvbUd1ZXN0TGludXgKICAgICAgICAgb25seSBt aWdyYXRlCiAKLSMgWW91IG1heSBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBEVE0gc2Vy dmVyIGZvciBXSFFMIHRlc3RzIGhlcmU6Ci0jd2hxbDoKLSMgICAgc2VydmVyX2FkZHJlc3MgPSAx MC4yMC4zMC40MAotIyAgICBzZXJ2ZXJfc2hlbGxfcG9ydCA9IDEwMDIyCi0jICAgIHNlcnZlcl9m aWxlX3RyYW5zZmVyX3BvcnQgPSAxMDAyMwotIyBOb3RlIHRoYXQgdGhlIERUTSBzZXJ2ZXIgbXVz dCBydW4gcnNzLmV4ZSAoYXZhaWxhYmxlIHVuZGVyIGRlcHMvKSwKLSMgcHJlZmVyYWJseSB3aXRo IGFkbWluaXN0cmF0b3IgcHJpdmlsZWdlcy4KLQotIyBVbmNvbW1lbnQgdGhlIGZvbGxvd2luZyBs aW5lcyB0byBlbmFibGUgYWJvcnQtb24tZXJyb3IgbW9kZToKLSNhYm9ydF9vbl9lcnJvciA9IHll cwotI2tpbGxfdm0uKiA/PSBubwotI2tpbGxfdW5yZXNwb25zaXZlX3Ztcy4qID89IG5vCi0KICMg Q2hvb3NlIHlvdXIgdGVzdCBsaXN0IGZyb20gdGhlIHRlc3RzZXRzIGRlZmluZWQKIG9ubHkgcWVt dV9rdm1fZjE2X3F1aWNrCi0tIAoxLjcuNy42CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpBdXRvdGVzdCBtYWlsaW5nIGxpc3QKQXV0b3Rlc3RAdGVzdC5r ZXJuZWwub3JnCmh0dHA6Ly90ZXN0Lmtlcm5lbC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZv L2F1dG90ZXN0Cg==