From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Takao Fujiwara To: git-commits@fedoraproject.org Subject: [rpms/ibus] autotool: Supported ibus emoji command on Wayland Date: Sun, 31 May 2026 02:06:32 GMT Message-ID: <178019319206.1.10960122820709083063.rpms-ibus-c787bad77691@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: c787bad776912f3f8516fb85ec8c1adeda8df136 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvaWJ1cwogICAgICAgICAgICBCcmFuY2ggOiBhdXRvdG9vbAogICAgICAgICAg ICBDb21taXQgOiBjNzg3YmFkNzc2OTEyZjNmODUxNmZiODVlYzhjMWFkZWRhOGRmMTM2CiAgICAg ICAgICAgIEF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgogICAg ICAgICAgICBEYXRlICAgOiAyMDE3LTA0LTE5VDE2OjA3OjAwKzA5OjAwCiAgICAgICAgICAgIFN0 YXRzICA6ICsxNjM2Ly0xIGluIDIgZmlsZShzKQogICAgICAgICAgICBVUkwgICAgOiBodHRwczov L3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2lidXMvYy9jNzg3YmFkNzc2OTEyZjNmODUxNmZi ODVlYzhjMWFkZWRhOGRmMTM2P2JyYW5jaD1hdXRvdG9vbAoKICAgICAgICAgICAgTG9nOgogICAg ICAgICAgICBTdXBwb3J0ZWQgaWJ1cyBlbW9qaSBjb21tYW5kIG9uIFdheWxhbmQKCkNoYW5nZWQg bW9kYWwgZGlhbG9nIHRvIG1vZGVsZXNzIGRpYWxvZwoKLS0tCmRpZmYgLS1naXQgYS9pYnVzLUhF QUQucGF0Y2ggYi9pYnVzLUhFQUQucGF0Y2gKaW5kZXggYjMxZjU0MC4uNDAzODk0OSAxMDA2NDQK LS0tIGEvaWJ1cy1IRUFELnBhdGNoCisrKyBiL2lidXMtSEVBRC5wYXRjaApAQCAtNDM5NywzICs0 Mzk3LDE2MzMgQEAgaW5kZXggOGEyNzI2Yy4uN2I2MTA3ZiAxMDA2NDQKIC0tIAogMi45LjMKIAor RnJvbSA2NDhmNThhMzYxZWExNDA3ZjIyOWVkMTY4MjQ4NjI0MGNjMmU1MDI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorRnJvbTogUGVuZyBXdSA8YWxleGVwaWNvQGdtYWlsLmNvbT4KK0RhdGU6 IE1vbiwgMTAgQXByIDIwMTcgMTQ6NTQ6MDggKzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZSBp YnVzIGVtb2ppZXIgZGlhbG9nIGFzIGFuIHVuaXF1ZSBhcHBsaWNhdGlvbgorCitCZWNhdXNlIHdh eWxhbmQgZG9lc24ndCBzdXBwb3J0IGNsaXBib2FyZCBwZXJzaXN0ZW5jZSwganVzdCBoaWRlIHRo ZSBkaWFsb2c7IHdpbGwgc2hvdyB0aGUgZW1vamllciBkaWFsb2cgYWdhaW4sIHdoZW4gcnVuIGl0 IGFnYWluLgorCitJbiBuZXh0IHBhdGNoZXMsIGlidXMgZW1vamkgY29tbWFuZCB3aWxsIGp1c3Qg c3Bhd24gdGhlIHByb2Nlc3Mgb2YgaWJ1cy11aS1lbW9qaWVyLgorCitCVUc9CitSPXRha2FvLmZ1 aml3YXJhMUBnbWFpbC5jb20KKworUmV2aWV3IFVSTDogaHR0cHM6Ly9jb2RlcmV2aWV3LmFwcHNw b3QuY29tLzMyMDQ1MDA0MworCitQYXRjaCBmcm9tIFBlbmcgV3UgPGFsZXhlcGljb0BnbWFpbC5j b20+LgorLS0tCisgcG8vUE9URklMRVMuaW4gICAgICB8ICAxICsKKyBwby9QT1RGSUxFUy5za2lw ICAgIHwgIDEgKworIHVpL2d0azMvTWFrZWZpbGUuYW0gfCAyNCArKysrKysrKysrKysrKysrKysr KysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBh L3BvL1BPVEZJTEVTLmluIGIvcG8vUE9URklMRVMuaW4KK2luZGV4IDQ2OWY5MGIuLjY1YTM1MjYg MTAwNjQ0CistLS0gYS9wby9QT1RGSUxFUy5pbgorKysrIGIvcG8vUE9URklMRVMuaW4KK0BAIC02 NSwzICs2NSw0IEBAIHVpL2d0azMvcHJvcGVydHkudmFsYQorIHVpL2d0azMvcHJvcGVydHlwYW5l bC52YWxhCisgdWkvZ3RrMy9zZXBhcmF0b3IudmFsYQorIHVpL2d0azMvc3dpdGNoZXIudmFsYQor K3VpL2d0azMvZW1vamllcmFwcC52YWxhCitkaWZmIC0tZ2l0IGEvcG8vUE9URklMRVMuc2tpcCBi L3BvL1BPVEZJTEVTLnNraXAKK2luZGV4IGE4MThjNDguLjg5MWQyY2MgMTAwNjQ0CistLS0gYS9w by9QT1RGSUxFUy5za2lwCisrKysgYi9wby9QT1RGSUxFUy5za2lwCitAQCAtMjEsMyArMjEsNCBA QCB1aS9ndGszL3Byb3BlcnR5LmMKKyB1aS9ndGszL3Byb3BlcnR5cGFuZWwuYworIHVpL2d0azMv c2VwYXJhdG9yLmMKKyB1aS9ndGszL3N3aXRjaGVyLmMKKyt1aS9ndGszL2Vtb2ppZXJhcHAuYwor ZGlmZiAtLWdpdCBhL3VpL2d0azMvTWFrZWZpbGUuYW0gYi91aS9ndGszL01ha2VmaWxlLmFtCitp bmRleCA3MTIyZmYzLi45NmVkM2U2IDEwMDY0NAorLS0tIGEvdWkvZ3RrMy9NYWtlZmlsZS5hbQor KysrIGIvdWkvZ3RrMy9NYWtlZmlsZS5hbQorQEAgLTEwOCw2ICsxMDgsMTAgQEAgZW5kaWYKKyAK KyBsaWJleGVjX1BST0dSQU1TID0gaWJ1cy11aS1ndGszCisgCisraWYgRU5BQkxFX0VNT0pJX0RJ Q1QKKytsaWJleGVjX1BST0dSQU1TICs9IGlidXMtdWktZW1vamllcgorK2VuZGlmCisrCisgaWJ1 c191aV9ndGszX1NPVVJDRVMgPSBcCisgCWFwcGxpY2F0aW9uLnZhbGEgXAorIAljYW5kaWRhdGVh cmVhLnZhbGEgXAorQEAgLTEzMiw2ICsxMzYsMjYgQEAgaWJ1c191aV9ndGszX0xEQUREID0gXAor IAkkKEFNX0xEQUREKSBcCisgCSQoTlVMTCkKKyAKKytpZiBFTkFCTEVfRU1PSklfRElDVAorK0FN X1ZBTEFGTEFHUyArPSBcCisrICAgICAgICAtLWRlZmluZT1FTU9KSV9ESUNUIFwKKysgICAgICAg IC0tdmFwaWRpcj0kKHRvcF9idWlsZGRpcikvdWkvZ3RrMyBcCisrICAgICAgICAtLXZhcGlkaXI9 JCh0b3Bfc3JjZGlyKS91aS9ndGszIFwKKysgICAgICAgIC0tcGtnPWlidXMtZW1vamktZGlhbG9n LTEuMCBcCisrICAgICAgICAtLXBrZz1ndGsrLTMuMCBcCisrICAgICAgICAkKE5VTEwpCisrCisr CisraWJ1c191aV9lbW9qaWVyX1NPVVJDRVMgPSBcCisrCWVtb2ppZXJhcHAudmFsYSBcCisrCSQo TlVMTCkKKysKKytpYnVzX3VpX2Vtb2ppZXJfTERBREQgPSBcCisrCSQoQU1fTERBREQpIFwKKysJ JChsaWJpYnVzX2Vtb2ppX2RpYWxvZykgXAorKwkkKE5VTEwpCisrZW5kaWYKKysKKyBnZW4tJS54 bWwuYzogJS54bWwKKyAJZWNobyAiQnVpbGRpbmcgJEAgZnJvbSAkPCIKKyAJZWNobyAiY29uc3Qg Y2hhciAqIF8kKHN1YnN0IC0sXywkKHN1YnN0IC4sXywkKGJhc2VuYW1lICQobm90ZGlyICQ8KSkp KSA9ICIgPiAkQAorLS0gCisyLjkuMworCitGcm9tIDJmODk4MmEwYTRiMjVmOThjOTY5YzA5Yjgx NzI0ZTQ0ZWZjNDFjMjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQZW5nIFd1IDxh bGV4ZXBpY29AZ21haWwuY29tPgorRGF0ZTogTW9uLCAxMCBBcHIgMjAxNyAxNTo1Nzo0OCArMDkw MAorU3ViamVjdDogW1BBVENIXSBNYWtlIGlidXMgZW1vamllciBkaWFsb2cgYXMgYW4gdW5pcXVl IGFwcGxpY2F0aW9uCisKK0ZvcmdvdCB0byBjb21taXQgdWkvZ3RrMy9lbW9qaWVyYXBwLnZhbGEg ZnJvbSB0aGUgcHJldmlvdXMgY29tbWl0LgorCitCVUc9CitSPXRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20KKworUmV2aWV3IFVSTDogaHR0cHM6Ly9jb2RlcmV2aWV3LmFwcHNwb3QuY29tLzMxOTY1 MDA0MworCitQYXRjaCBmcm9tIFBlbmcgV3UgPGFsZXhlcGljb0BnbWFpbC5jb20+LgorLS0tCisg dWkvZ3RrMy9lbW9qaWVyYXBwLnZhbGEgfCAxNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDE0OSBpbnNlcnRpb25zKCsp CisgY3JlYXRlIG1vZGUgMTAwNjQ0IHVpL2d0azMvZW1vamllcmFwcC52YWxhCisKK2RpZmYgLS1n aXQgYS91aS9ndGszL2Vtb2ppZXJhcHAudmFsYSBiL3VpL2d0azMvZW1vamllcmFwcC52YWxhCitu ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNDI4N2JmZgorLS0tIC9kZXYvbnVs bAorKysrIGIvdWkvZ3RrMy9lbW9qaWVyYXBwLnZhbGEKK0BAIC0wLDAgKzEsMTQ5IEBACisrLyog dmltOnNldCBldCBzdHM9NCBzdz00OgorKyAqCisrICogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKKysg KgorKyAqIENvcHlyaWdodCAoYykgMjAxNyBQZW5nIFd1IDxhbGV4ZXBpY29AZ21haWwuY29tPgor KyAqCisrICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIFRo aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2Ug YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKKysgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y LCBCb3N0b24sIE1BICAwMjExMC0xMzAxCisrICogVVNBCisrICovCisrCisrc3RyaW5nIGVtb2pp X2ZvbnQgPSBudWxsOworK3N0cmluZyBhbm5vdGF0aW9uX2xhbmcgPSBudWxsOworKworK3B1Ymxp YyBjbGFzcyBFbW9qaUFwcGxpY2F0aW9uIDogQXBwbGljYXRpb24geworKyAgICBwcml2YXRlIElC dXMuRW1vamllciBlbW9qaWVyID0gbmV3IElCdXMuRW1vamllcigpOworKworKyAgICBwcml2YXRl IEVtb2ppQXBwbGljYXRpb24oKSB7CisrICAgICAgICBPYmplY3QoYXBwbGljYXRpb25faWQ6ICJv cmcuZnJlZWRlc2t0b3AuaWJ1cy5wYW5lbC5lbW9qaWVyIiwKKysgICAgICAgICAgICAgICAgZmxh Z3M6IEFwcGxpY2F0aW9uRmxhZ3MuSEFORExFU19DT01NQU5EX0xJTkUpOworKyAgICAgICAgc2V0 X2luYWN0aXZpdHlfdGltZW91dCgxMDAwMDApOworKyAgICB9CisrCisrICAgIHByaXZhdGUgdm9p ZCBzaG93X2RpYWxvZyhBcHBsaWNhdGlvbkNvbW1hbmRMaW5lIGNvbW1hbmRfbGluZSkgeworKyAg ICAgICAgR2RrLkV2ZW50IGV2ZW50ID0gbmV3IEdkay5FdmVudChHZGsuRXZlbnRUeXBlLktFWV9Q UkVTUyk7CisrICAgICAgICB2YXIgZGlzcGxheSA9IEdkay5EaXNwbGF5LmdldF9kZWZhdWx0KCk7 CisrICAgICAgICB2YXIgZGV2aWNlX21hbmFnZXIgPSBkaXNwbGF5LmdldF9kZXZpY2VfbWFuYWdl cigpOworKyAgICAgICAgdmFyIGRldmljZSA9IGRldmljZV9tYW5hZ2VyLmxpc3RfZGV2aWNlcyhH ZGsuRGV2aWNlVHlwZS5NQVNURVIpLmRhdGE7CisrICAgICAgICBldmVudC5zZXRfZGV2aWNlKGRl dmljZSk7CisrICAgICAgICBzdHJpbmcgZW1vamkgPSBlbW9qaWVyLnJ1bihldmVudCwgIiIpOwor KyAgICAgICAgaWYgKGVtb2ppID09IG51bGwpIHsKKysgICAgICAgICAgICBlbW9qaWVyLnJlc2V0 KCk7CisrICAgICAgICAgICAgY29tbWFuZF9saW5lLnByaW50KCIlc1xuIiwgXygiQ2FuY2VsZWQg dG8gY2hvb3NlIGFuIGVtb2ppLiIpKTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9 CisrICAgICAgICBHdGsuQ2xpcGJvYXJkIGNsaXBib2FyZCA9IEd0ay5DbGlwYm9hcmQuZ2V0KEdk ay5TRUxFQ1RJT05fQ0xJUEJPQVJEKTsKKysgICAgICAgIGNsaXBib2FyZC5zZXRfdGV4dChlbW9q aSwgLTEpOworKyAgICAgICAgY2xpcGJvYXJkLnN0b3JlKCk7CisrICAgICAgICBlbW9qaWVyLnJl c2V0KCk7CisrICAgICAgICBjb21tYW5kX2xpbmUucHJpbnQoIiVzXG4iLCBfKCJDb3BpZWQgYW4g ZW1vamkgdG8geW91ciBjbGlwYm9hcmQuIikpOworKyAgICB9CisrCisrICAgIHB1YmxpYyB2b2lk IGFjdGl2YXRlX2RpYWxvZyhBcHBsaWNhdGlvbkNvbW1hbmRMaW5lIGNvbW1hbmRfbGluZSkgewor KyAgICAgICAgdGhpcy5ob2xkICgpOworKworKyAgICAgICAgLy8gc2hvdyBkaWFsb2cKKysgICAg ICAgIGlmIChlbW9qaWVyLmhhc19sb2FkZWRfZW1vamlfZGljdCgpKSB7CisrICAgICAgICAgICAg c2hvd19kaWFsb2coY29tbWFuZF9saW5lKTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAg ICAgZW1vamllci5sb2FkZWRfZW1vamlfZGljdC5jb25uZWN0KCgpID0+IHsKKysgICAgICAgICAg ICAgICAgICAgIC8vIFRoZSBzaWduYWwgaXMgY2FsbGVkIHdoZW4gdGhlIGxhbmd1YWdlIGlzIGNo YW5nZWQuCisrICAgICAgICAgICAgICAgICAgICBpZiAoZW1vamllci5pc19ydW5uaW5nKCkpCisr ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisrCisrICAgICAgICAgICAgICAgICAgICBzaG93 X2RpYWxvZyhjb21tYW5kX2xpbmUpOworKyAgICAgICAgICAgICAgICAgICAgfSk7CisrICAgICAg ICB9CisrCisrICAgICAgICB0aGlzLnJlbGVhc2UgKCk7CisrICAgIH0KKysKKysgICAgcHJpdmF0 ZSBpbnQgX2NvbW1hbmRfbGluZSAoQXBwbGljYXRpb25Db21tYW5kTGluZSBjb21tYW5kX2xpbmUp IHsKKysgICAgICAgIGNvbnN0IE9wdGlvbkVudHJ5W10gb3B0aW9ucyA9IHsKKysgICAgICAgICAg ICB7ICJmb250IiwgMCwgMCwgT3B0aW9uQXJnLlNUUklORywgb3V0IGVtb2ppX2ZvbnQsCisrICAg ICAgICAgICAgICAgIE5fKCJGT05UIGZvciBlbW9qaSBjaHJhY3RlcnMgb24gZW1vamkgZGlhbG9n LiIpLAorKyAgICAgICAgICAgICAgICAiRk9OVCIgfSwKKysgICAgICAgICAgICB7ICJsYW5nIiwg MCwgMCwgT3B0aW9uQXJnLlNUUklORywgb3V0IGFubm90YXRpb25fbGFuZywKKysgICAgICAgICAg ICAgICAgTl8oIkxBTkcgZm9yIGFubm90YXRpb25zIG9uIGVtb2ppIGRpYWxvZy4gRS5nLiBcImVu XCIiKSwKKysgICAgICAgICAgICAgICAgIkxBTkciIH0sCisrICAgICAgICAgICAgeyBudWxsIH0K KysgICAgICAgIH07CisrCisrICAgICAgICB2YXIgb3B0aW9uID0gbmV3IE9wdGlvbkNvbnRleHQo KTsKKysgICAgICAgIG9wdGlvbi5hZGRfbWFpbl9lbnRyaWVzKG9wdGlvbnMsIENvbmZpZy5HRVRU RVhUX1BBQ0tBR0UpOworKworKyAgICAgICAgLy8gV2UgaGF2ZSB0byBtYWtlIGFuIGV4dHJhIGNv cHkgb2YgdGhlIGFycmF5LAorKyAgICAgICAgLy8gc2luY2UgLnBhcnNlIGFzc3VtZXMgdGhhdCBp dCBjYW4gcmVtb3ZlIHN0cmluZ3MKKysgICAgICAgIC8vIGZyb20gdGhlIGFycmF5IHdpdGhvdXQg ZnJlZWluZyB0aGVtLgorKyAgICAgICAgc3RyaW5nW10gYXJncyA9IGNvbW1hbmRfbGluZS5nZXRf YXJndW1lbnRzKCk7CisrICAgICAgICBzdHJpbmcqW10gX2FyZ3MgPSBuZXcgc3RyaW5nW2FyZ3Mu bGVuZ3RoXTsKKysgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykg eworKyAgICAgICAgICAgIF9hcmdzW2ldID0gYXJnc1tpXTsKKysgICAgICAgIH0KKysKKysgICAg ICAgIHRyeSB7CisrICAgICAgICAgICAgdW5vd25lZCBzdHJpbmdbXSB0bXAgPSBfYXJnczsKKysg ICAgICAgICAgICBvcHRpb24ucGFyc2UocmVmIHRtcCk7CisrICAgICAgICB9IGNhdGNoIChPcHRp b25FcnJvciBlKSB7CisrICAgICAgICAgICAgc3RkZXJyLnByaW50ZigiJXNcbiIsIGUubWVzc2Fn ZSk7CisrICAgICAgICAgICAgcmV0dXJuIFBvc2l4LkVYSVRfRkFJTFVSRTsKKysgICAgICAgIH0K KysKKysgICAgICAgIGlmIChlbW9qaV9mb250ID09IG51bGwpIHsKKysgICAgICAgICAgICBHTGli LlNldHRpbmdzIHNldHRpbmdzX2Vtb2ppID0KKysgICAgICAgICAgICAgICAgbmV3IEdMaWIuU2V0 dGluZ3MoIm9yZy5mcmVlZGVza3RvcC5pYnVzLnBhbmVsLmVtb2ppIik7CisrICAgICAgICAgICAg ZW1vamlfZm9udCA9IHNldHRpbmdzX2Vtb2ppLmdldF9zdHJpbmcoImZvbnQiKTsKKysgICAgICAg IH0KKysKKysgICAgICAgIGlmIChhbm5vdGF0aW9uX2xhbmcgPT0gbnVsbCkgeworKyAgICAgICAg ICAgIEdMaWIuU2V0dGluZ3Mgc2V0dGluZ3NfZW1vamkgPQorKyAgICAgICAgICAgICAgICBuZXcg R0xpYi5TZXR0aW5ncygib3JnLmZyZWVkZXNrdG9wLmlidXMucGFuZWwuZW1vamkiKTsKKysgICAg ICAgICAgICBhbm5vdGF0aW9uX2xhbmcgPSBzZXR0aW5nc19lbW9qaS5nZXRfc3RyaW5nKCJsYW5n Iik7CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAoZW1vamlfZm9udCAhPSBudWxsICYmIGVt b2ppX2ZvbnQgIT0gIiIpCisrICAgICAgICAgICAgZW1vamllci5zZXRfZW1vamlfZm9udChlbW9q aV9mb250KTsKKysgICAgICAgIGlmIChhbm5vdGF0aW9uX2xhbmcgIT0gbnVsbCAmJiBhbm5vdGF0 aW9uX2xhbmcgIT0gIiIpCisrICAgICAgICAgICAgZW1vamllci5zZXRfYW5ub3RhdGlvbl9sYW5n KGFubm90YXRpb25fbGFuZyk7CisrCisrICAgICAgICBhY3RpdmF0ZV9kaWFsb2coY29tbWFuZF9s aW5lKTsKKysKKysgICAgICAgIHJldHVybiBQb3NpeC5FWElUX1NVQ0NFU1M7CisrICAgIH0KKysK KysgICAgcHVibGljIG92ZXJyaWRlIGludCBjb21tYW5kX2xpbmUgKEFwcGxpY2F0aW9uQ29tbWFu ZExpbmUgY29tbWFuZF9saW5lKSB7CisrICAgICAgICAvLyBrZWVwIHRoZSBhcHBsaWNhdGlvbiBy dW5uaW5nIHVudGlsIHdlIGFyZSBkb25lIHdpdGggdGhpcyBjb21tYW5kbGluZQorKyAgICAgICAg dGhpcy5ob2xkKCk7CisrICAgICAgICBpbnQgcmVzdWx0ID0gX2NvbW1hbmRfbGluZShjb21tYW5k X2xpbmUpOworKyAgICAgICAgdGhpcy5yZWxlYXNlKCk7CisrICAgICAgICByZXR1cm4gcmVzdWx0 OworKyAgICB9CisrCisrICAgIHB1YmxpYyBzdGF0aWMgaW50IG1haW4gKHN0cmluZ1tdIGFyZ3Mp IHsKKysgICAgICAgIEdMaWIuSW50bC5iaW5kdGV4dGRvbWFpbihDb25maWcuR0VUVEVYVF9QQUNL QUdFLAorKyAgICAgICAgICAgICAgICBDb25maWcuR0xJQl9MT0NBTEVfRElSKTsKKysgICAgICAg IEdMaWIuSW50bC5iaW5kX3RleHRkb21haW5fY29kZXNldChDb25maWcuR0VUVEVYVF9QQUNLQUdF LCAiVVRGLTgiKTsKKysgICAgICAgIEdMaWIuSW50bC50ZXh0ZG9tYWluKENvbmZpZy5HRVRURVhU X1BBQ0tBR0UpOworKworKyAgICAgICAgSUJ1cy5pbml0KCk7CisrCisrICAgICAgICBHdGsuaW5p dChyZWYgYXJncyk7CisrCisrICAgICAgICBFbW9qaUFwcGxpY2F0aW9uIGFwcCA9IG5ldyBFbW9q aUFwcGxpY2F0aW9uKCk7CisrICAgICAgICBpbnQgc3RhdHVzID0gYXBwLnJ1bihhcmdzKTsKKysg ICAgICAgIHJldHVybiBzdGF0dXM7CisrICAgIH0KKysKKyt9CistLSAKKzIuOS4zCisKK0Zyb20g ZGEzMzY3MmJjNzM4ODg5ZGNkNGViYmVjNTFjYjNhYTY3NTY3ZjcwYyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb206IFBlbmcgV3UgPGFsZXhlcGljb0BnbWFpbC5jb20+CitEYXRlOiBUaHUs IDEzIEFwciAyMDE3IDEyOjQwOjIyICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIHRvb2xzOiBzcGF3 biB0aGUgcHJvY2VzcyBvZiBpYnVzLXVpLWVtb2ppZXIKKworQlVHPQorUj1TaGF3bi5QLkh1YW5n QGdtYWlsLmNvbSwgdGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbQorCitSZXZpZXcgVVJMOiBodHRw czovL2NvZGVyZXZpZXcuYXBwc3BvdC5jb20vMzI0NzcwMDQzCisKK1BhdGNoIGZyb20gUGVuZyBX dSA8YWxleGVwaWNvQGdtYWlsLmNvbT4uCistLS0KKyBiaW5kaW5ncy92YWxhL2NvbmZpZy52YXBp IHwgIDEgKworIHRvb2xzL01ha2VmaWxlLmFtICAgICAgICAgfCAgMSArCisgdG9vbHMvbWFpbi52 YWxhICAgICAgICAgICB8IDcyICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlv bnMoLSkKKworZGlmZiAtLWdpdCBhL2JpbmRpbmdzL3ZhbGEvY29uZmlnLnZhcGkgYi9iaW5kaW5n cy92YWxhL2NvbmZpZy52YXBpCitpbmRleCBmMjE5NWRhLi5lM2M0M2RmIDEwMDY0NAorLS0tIGEv YmluZGluZ3MvdmFsYS9jb25maWcudmFwaQorKysrIGIvYmluZGluZ3MvdmFsYS9jb25maWcudmFw aQorQEAgLTcsNiArNyw3IEBAIG5hbWVzcGFjZSBDb25maWcKKyAgICAgcHVibGljIGNvbnN0IHN0 cmluZyBCSU5ESVI7CisgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgREFUQURJUjsKKyAgICAgcHVi bGljIGNvbnN0IHN0cmluZyBQS0dEQVRBRElSOworKyAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIExJ QkVYRUNESVI7CisgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgR0VUVEVYVF9QQUNLQUdFOworICAg ICBwdWJsaWMgY29uc3Qgc3RyaW5nIEdMSUJfTE9DQUxFX0RJUjsKKyB9CitkaWZmIC0tZ2l0IGEv dG9vbHMvTWFrZWZpbGUuYW0gYi90b29scy9NYWtlZmlsZS5hbQoraW5kZXggYmQ2NTVhZi4uOWQ1 NDJiZCAxMDA2NDQKKy0tLSBhL3Rvb2xzL01ha2VmaWxlLmFtCisrKysgYi90b29scy9NYWtlZmls ZS5hbQorQEAgLTM5LDYgKzM5LDcgQEAgQU1fQ0ZMQUdTID0gXAorIAlAR0lPMl9DRkxBR1NAIFwK KyAJQEdUSFJFQUQyX0NGTEFHU0AgXAorIAktREdfTE9HX0RPTUFJTj1cIklCVVNcIiBcCisrCS1E TElCRVhFQ0RJUj1cIiQobGliZXhlY2RpcilcIiBcCisgCS1ESUJVU19ESVNBQkxFX0RFUFJFQ0FU RUQgXAorIAktV25vLXVudXNlZC12YXJpYWJsZSBcCisgCS1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFy aWFibGUgXAorZGlmZiAtLWdpdCBhL3Rvb2xzL21haW4udmFsYSBiL3Rvb2xzL21haW4udmFsYQor aW5kZXggMmJmMWRjNy4uOWFjYTRiMCAxMDA2NDQKKy0tLSBhL3Rvb2xzL21haW4udmFsYQorKysr IGIvdG9vbHMvbWFpbi52YWxhCitAQCAtMzI0LDczICszMjQsMjcgQEAgaW50IHJlc2V0X2NvbmZp ZyhzdHJpbmdbXSBhcmd2KSB7CisgfQorIAorICNpZiBFTU9KSV9ESUNUCistcHJpdmF0ZSB2b2lk IHJ1bl9kaWFsb2coSUJ1cy5FbW9qaWVyIGVtb2ppZXIpIHsKKy0gICAgR2RrLkV2ZW50IGV2ZW50 ID0gbmV3IEdkay5FdmVudChHZGsuRXZlbnRUeXBlLktFWV9QUkVTUyk7CistICAgIHZhciBkaXNw bGF5ID0gR2RrLkRpc3BsYXkuZ2V0X2RlZmF1bHQoKTsKKy0gICAgdmFyIGRldmljZV9tYW5hZ2Vy ID0gZGlzcGxheS5nZXRfZGV2aWNlX21hbmFnZXIoKTsKKy0gICAgdmFyIGRldmljZSA9IGRldmlj ZV9tYW5hZ2VyLmxpc3RfZGV2aWNlcyhHZGsuRGV2aWNlVHlwZS5NQVNURVIpLmRhdGE7CistICAg IGV2ZW50LnNldF9kZXZpY2UoZGV2aWNlKTsKKy0gICAgc3RyaW5nIGVtb2ppID0gZW1vamllci5y dW4oZXZlbnQsICIiKTsKKy0gICAgaWYgKGVtb2ppID09IG51bGwpIHsKKy0gICAgICAgIGVtb2pp ZXIucmVzZXQoKTsKKy0gICAgICAgIHByaW50KCIlc1xuIiwgXygiQ2FuY2VsZWQgdG8gY2hvb3Nl IGFuIGVtb2ppLiIpKTsKKy0gICAgICAgIHJldHVybjsKKy0gICAgfQorLSAgICBHdGsuQ2xpcGJv YXJkIGNsaXBib2FyZCA9IEd0ay5DbGlwYm9hcmQuZ2V0KEdkay5TRUxFQ1RJT05fQ0xJUEJPQVJE KTsKKy0gICAgY2xpcGJvYXJkLnNldF90ZXh0KGVtb2ppLCAtMSk7CistICAgIGNsaXBib2FyZC5z dG9yZSgpOworLSAgICBlbW9qaWVyLnJlc2V0KCk7CistICAgIHByaW50KCIlc1xuIiwgXygiQ29w aWVkIGFuIGVtb2ppIHRvIHlvdXIgY2xpcGJvYXJkLiIpKTsKKy19CistCisgaW50IGVtb2ppX2Rp YWxvZyhzdHJpbmdbXSBhcmd2KSB7CistICAgIGNvbnN0IE9wdGlvbkVudHJ5W10gb3B0aW9ucyA9 IHsKKy0gICAgICAgIHsgImZvbnQiLCAwLCAwLCBPcHRpb25BcmcuU1RSSU5HLCBvdXQgZW1vamlf Zm9udCwKKy0gICAgICAgICAgTl8oIkZPTlQgZm9yIGVtb2ppIGNocmFjdGVycyBvbiBlbW9qaSBk aWFsb2cuIiksICJGT05UIiB9LAorLSAgICAgICAgeyAibGFuZyIsIDAsIDAsIE9wdGlvbkFyZy5T VFJJTkcsIG91dCBhbm5vdGF0aW9uX2xhbmcsCistICAgICAgICAgIE5fKCJMQU5HIGZvciBhbm5v dGF0aW9ucyBvbiBlbW9qaSBkaWFsb2cuIEUuZy4gXCJlblwiIiksICJMQU5HIiB9LAorLSAgICAg ICAgeyBudWxsIH0KKy0gICAgfTsKKysgICAgc3RyaW5nIGNtZCA9IENvbmZpZy5MSUJFWEVDRElS ICsgIi9pYnVzLXVpLWVtb2ppZXIiOworIAorLSAgICB2YXIgb3B0aW9uID0gbmV3IE9wdGlvbkNv bnRleHQoKTsKKy0gICAgb3B0aW9uLmFkZF9tYWluX2VudHJpZXMob3B0aW9ucywgQ29uZmlnLkdF VFRFWFRfUEFDS0FHRSk7CisrICAgIHZhciBmaWxlID0gRmlsZS5uZXdfZm9yX3BhdGgoY21kKTsK KysgICAgaWYgKCFmaWxlLnF1ZXJ5X2V4aXN0cygpKQorKyAgICAgICAgY21kID0gIi4uL3VpL2d0 azMvaWJ1cy11aS1lbW9qaWVyIjsKKysKKysgICAgYXJndlswXSA9IGNtZDsKKysKKysgICAgc3Ry aW5nW10gZW52ID0gRW52aXJvbi5nZXQoKTsKKyAKKyAgICAgdHJ5IHsKKy0gICAgICAgIG9wdGlv bi5wYXJzZShyZWYgYXJndik7CistICAgIH0gY2F0Y2ggKE9wdGlvbkVycm9yIGUpIHsKKysgICAg ICAgIC8vIE5vbi1ibG9ja2luZworKyAgICAgICAgUHJvY2Vzcy5zcGF3bl9hc3luYyhudWxsLCBh cmd2LCBlbnYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwYXduRmxhZ3MuU0VBUkNI X1BBVEgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIG51bGwpOworKyAgICB9 IGNhdGNoIChTcGF3bkVycm9yIGUpIHsKKyAgICAgICAgIHN0ZGVyci5wcmludGYoIiVzXG4iLCBl Lm1lc3NhZ2UpOworICAgICAgICAgcmV0dXJuIFBvc2l4LkVYSVRfRkFJTFVSRTsKKyAgICAgfQor IAorLSAgICBHdGsuaW5pdChyZWYgYXJndik7CistICAgIGlmIChlbW9qaV9mb250ID09IG51bGwp IHsKKy0gICAgICAgIEdMaWIuU2V0dGluZ3Mgc2V0dGluZ3NfZW1vamkgPQorLSAgICAgICAgICAg ICAgICBuZXcgR0xpYi5TZXR0aW5ncygib3JnLmZyZWVkZXNrdG9wLmlidXMucGFuZWwuZW1vamki KTsKKy0gICAgICAgIGVtb2ppX2ZvbnQgPSBzZXR0aW5nc19lbW9qaS5nZXRfc3RyaW5nKCJmb250 Iik7CistICAgIH0KKy0gICAgaWYgKGFubm90YXRpb25fbGFuZyA9PSBudWxsKSB7CistICAgICAg ICBHTGliLlNldHRpbmdzIHNldHRpbmdzX2Vtb2ppID0KKy0gICAgICAgICAgICAgICAgbmV3IEdM aWIuU2V0dGluZ3MoIm9yZy5mcmVlZGVza3RvcC5pYnVzLnBhbmVsLmVtb2ppIik7CistICAgICAg ICBhbm5vdGF0aW9uX2xhbmcgPSBzZXR0aW5nc19lbW9qaS5nZXRfc3RyaW5nKCJsYW5nIik7Cist ICAgIH0KKy0gICAgSUJ1cy5FbW9qaWVyIGVtb2ppZXIgPSBuZXcgSUJ1cy5FbW9qaWVyKCk7Cist ICAgIGlmIChlbW9qaV9mb250ICE9IG51bGwgJiYgZW1vamlfZm9udCAhPSAiIikKKy0gICAgICAg IGVtb2ppZXIuc2V0X2Vtb2ppX2ZvbnQoZW1vamlfZm9udCk7CistICAgIGlmIChhbm5vdGF0aW9u X2xhbmcgIT0gbnVsbCAmJiBhbm5vdGF0aW9uX2xhbmcgIT0gIiIpCistICAgICAgICBlbW9qaWVy LnNldF9hbm5vdGF0aW9uX2xhbmcoYW5ub3RhdGlvbl9sYW5nKTsKKy0gICAgaWYgKGVtb2ppZXIu aGFzX2xvYWRlZF9lbW9qaV9kaWN0KCkpIHsKKy0gICAgICAgIHJ1bl9kaWFsb2coZW1vamllcik7 CistICAgIH0gZWxzZSB7CistICAgICAgICBHTGliLk1haW5Mb29wIGxvb3AgPSBuZXcgR0xpYi5N YWluTG9vcCgpOworLSAgICAgICAgZW1vamllci5sb2FkZWRfZW1vamlfZGljdC5jb25uZWN0KCgp ID0+IHsKKy0gICAgICAgICAgICAvLyBUaGUgc2lnbmFsIGlzIGNhbGxlZCB3aGVuIHRoZSBsYW5n dWFnZSBpcyBjaGFuZ2VkLgorLSAgICAgICAgICAgIGlmIChlbW9qaWVyLmlzX3J1bm5pbmcoKSkK Ky0gICAgICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAgICAgIHJ1bl9kaWFsb2coZW1vamll cik7CistICAgICAgICAgICAgbG9vcC5xdWl0KCk7CistICAgICAgICB9KTsKKy0gICAgICAgIGxv b3AucnVuKCk7CistICAgIH0KKyAgICAgcmV0dXJuIFBvc2l4LkVYSVRfU1VDQ0VTUzsKKyB9Cisg I2VuZGlmCistLSAKKzIuOS4zCisKK0Zyb20gMjkwZjc4NmI4MjE1OGU3YzA4N2I4MTk0NjcyNzYw NmNkMzQyNGU5NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGZ1aml3YXJhdCA8dGFr YW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTcgQXByIDIwMTcgMTY6MDA6MjYg KzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0gdWkvZ3RrMzogRml4IGJ1aWxkIGZhaWx1cmVzCisKK2li dXMtdWktZW1vaWplciBuZWVkcyB0byBiZSBidWlsdCBhdCBsYXN0IGluIHVpL2d0azMKK0Fsc28g Zml4ZWQgcG8vUE9URklMRVMuaW4gZm9yIGBtYWtlIGRpc3RgCitOb3cgSSBtb3ZlZCBsaWJpYnVz ZW1vamlkaWFsb2cuc28gYW5kIElCdXNFbW9qaURpYWxvZy0xLjAuW2dpcnx0eXBlbGliXQorYW5k IGlidXMtZW1vamktZGlhbG9nLTEuMC52YXBpIHRvIG5vaW5zdCBiZWNhdXNlIG5vdworaWJ1cy11 aS1lbW9qaWVyIGlzIGF2YWlsYWJsZSBhbmQgdGhleSBhcmUgcHJpdmF0ZSBsaWJyYXJpZXMuCisK K1I9U2hhd24uUC5IdWFuZ0BnbWFpbC5jb20KKworUmV2aWV3IFVSTDogaHR0cHM6Ly9jb2RlcmV2 aWV3LmFwcHNwb3QuY29tLzMxMjYxMDA0MworLS0tCisgcG8vUE9URklMRVMuaW4gICAgICAgICAg fCAgMSArCisgdG9vbHMvTWFrZWZpbGUuYW0gICAgICAgfCAxOSArKy0tLS0tLS0tLS0tCisgdWkv Z3RrMy9NYWtlZmlsZS5hbSAgICAgfCA3MiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgdWkvZ3RrMy9lbW9qaWVyYXBwLnZhbGEgfCAzMyArKysrKysr KysrKysrLS0tLS0tLS0tLQorIDQgZmlsZXMgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKSwgNzEg ZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wby9QT1RGSUxFUy5pbiBiL3BvL1BPVEZJTEVT LmluCitpbmRleCA2NWEzNTI2Li4yNWJlNGY0IDEwMDY0NAorLS0tIGEvcG8vUE9URklMRVMuaW4K KysrKyBiL3BvL1BPVEZJTEVTLmluCitAQCAtMzEsNiArMzEsNyBAQCBpYnVzL29iamVjdC5weQor IGlidXMvcGFuZWwucHkKKyBpYnVzL3Byb3BlcnR5LnB5CisgaWJ1cy91dGlsaXR5LnB5Cisrc2V0 dXAvZW1vamlsYW5nLnB5Cisgc2V0dXAvZW5naW5lYWJvdXQucHkKKyBzZXR1cC9lbmdpbmVjb21i b2JveC5weQorIHNldHVwL2VuZ2luZWRpYWxvZy5weQorZGlmZiAtLWdpdCBhL3Rvb2xzL01ha2Vm aWxlLmFtIGIvdG9vbHMvTWFrZWZpbGUuYW0KK2luZGV4IDlkNTQyYmQuLjVjMThkM2QgMTAwNjQ0 CistLS0gYS90b29scy9NYWtlZmlsZS5hbQorKysrIGIvdG9vbHMvTWFrZWZpbGUuYW0KK0BAIC0x MDEsMjQgKzEwMSw5IEBAIENMRUFORklMRVMgPSBcCisgCisgaWYgRU5BQkxFX0VNT0pJX0RJQ1QK KyBpZiBFTkFCTEVfVUkKKy1BTV9DUFBGTEFHUyArPSBcCistCS1JJCh0b3Bfc3JjZGlyKS91aS9n dGszIFwKKy0JLUkkKHRvcF9idWlsZGRpcikvdWkvZ3RrMyBcCistCSQoTlVMTCkKKy1BTV9DRkxB R1MgKz0gXAorLQlAR1RLM19DRkxBR1NAIFwKKy0JJChOVUxMKQorLUFNX0xEQUREICs9IFwKKy0J QEdUSzNfTElCU0AgXAorLQkkKGxpYmlidXNfZW1vamlfZGlhbG9nKSBcCistCSQoTlVMTCkKKyBB TV9WQUxBRkxBR1MgKz0gXAorLQktLWRlZmluZT1FTU9KSV9ESUNUIFwKKy0JLS12YXBpZGlyPSQo dG9wX2J1aWxkZGlyKS91aS9ndGszIFwKKy0JLS12YXBpZGlyPSQodG9wX3NyY2RpcikvdWkvZ3Rr MyBcCistCS0tcGtnPWlidXMtZW1vamktZGlhbG9nLTEuMCBcCistCS0tcGtnPWd0aystMy4wIFwK Ky0JJChOVUxMKQorKyAgICAtLWRlZmluZT1FTU9KSV9ESUNUIFwKKysgICAgJChOVUxMKQorIGVu ZGlmCisgZW5kaWYKKyAKK2RpZmYgLS1naXQgYS91aS9ndGszL01ha2VmaWxlLmFtIGIvdWkvZ3Rr My9NYWtlZmlsZS5hbQoraW5kZXggOTZlZDNlNi4uNmYwZmI2MiAxMDA2NDQKKy0tLSBhL3VpL2d0 azMvTWFrZWZpbGUuYW0KKysrKyBiL3VpL2d0azMvTWFrZWZpbGUuYW0KK0BAIC04MSw3ICs4MSw5 IEBAIEFNX1ZBTEFGTEFHUyA9IFwKKyAJLS10YXJnZXQtZ2xpYj0iJChWQUxBX1RBUkdFVF9HTElC X1ZFUlNJT04pIiBcCisgCSQoTlVMTCkKKyAKKytNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9CisgQ09O RklHX0NMRUFOX0ZJTEVTID0KKytub2luc3RfREFUQSA9CisgCisgaWYgRU5BQkxFX0xJQk5PVElG WQorIEFNX0NGTEFHUyArPSBcCitAQCAtMTA4LDEwICsxMTAsNiBAQCBlbmRpZgorIAorIGxpYmV4 ZWNfUFJPR1JBTVMgPSBpYnVzLXVpLWd0azMKKyAKKy1pZiBFTkFCTEVfRU1PSklfRElDVAorLWxp YmV4ZWNfUFJPR1JBTVMgKz0gaWJ1cy11aS1lbW9qaWVyCistZW5kaWYKKy0KKyBpYnVzX3VpX2d0 azNfU09VUkNFUyA9IFwKKyAJYXBwbGljYXRpb24udmFsYSBcCisgCWNhbmRpZGF0ZWFyZWEudmFs YSBcCitAQCAtMTM2LDI2ICsxMzQsNiBAQCBpYnVzX3VpX2d0azNfTERBREQgPSBcCisgCSQoQU1f TERBREQpIFwKKyAJJChOVUxMKQorIAorLWlmIEVOQUJMRV9FTU9KSV9ESUNUCistQU1fVkFMQUZM QUdTICs9IFwKKy0gICAgICAgIC0tZGVmaW5lPUVNT0pJX0RJQ1QgXAorLSAgICAgICAgLS12YXBp ZGlyPSQodG9wX2J1aWxkZGlyKS91aS9ndGszIFwKKy0gICAgICAgIC0tdmFwaWRpcj0kKHRvcF9z cmNkaXIpL3VpL2d0azMgXAorLSAgICAgICAgLS1wa2c9aWJ1cy1lbW9qaS1kaWFsb2ctMS4wIFwK Ky0gICAgICAgIC0tcGtnPWd0aystMy4wIFwKKy0gICAgICAgICQoTlVMTCkKKy0KKy0KKy1pYnVz X3VpX2Vtb2ppZXJfU09VUkNFUyA9IFwKKy0JZW1vamllcmFwcC52YWxhIFwKKy0JJChOVUxMKQor LQorLWlidXNfdWlfZW1vamllcl9MREFERCA9IFwKKy0JJChBTV9MREFERCkgXAorLQkkKGxpYmli dXNfZW1vamlfZGlhbG9nKSBcCistCSQoTlVMTCkKKy1lbmRpZgorLQorIGdlbi0lLnhtbC5jOiAl LnhtbAorIAllY2hvICJCdWlsZGluZyAkQCBmcm9tICQ8IgorIAllY2hvICJjb25zdCBjaGFyICog XyQoc3Vic3QgLSxfLCQoc3Vic3QgLixfLCQoYmFzZW5hbWUgJChub3RkaXIgJDwpKSkpID0gIiA+ ICRACitAQCAtMTg1LDExICsxNjMsMTcgQEAgRVhUUkFfRElTVCA9ICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgJChOVUxMKQorIAorIGlmIEVOQUJMRV9FTU9KSV9ESUNUCistQU1f VkFMQUZMQUdTICs9IC0tZGVmaW5lPUVNT0pJX0RJQ1QKKytBTV9WQUxBRkxBR1MgKz0gXAorKyAg ICAtLWRlZmluZT1FTU9KSV9ESUNUIFwKKysgICAgLS12YXBpZGlyPSQodG9wX2J1aWxkZGlyKS91 aS9ndGszIFwKKysgICAgLS12YXBpZGlyPSQodG9wX3NyY2RpcikvdWkvZ3RrMyBcCisrICAgIC0t cGtnPWlidXMtZW1vamktZGlhbG9nLTEuMCBcCisrICAgIC0tcGtnPWd0aystMy4wIFwKKysgICAg JChOVUxMKQorIAorIGxpYmlidXNfZW1vamlfZGlhbG9nID0gbGliaWJ1cy1lbW9qaS1kaWFsb2ct MS4wLmxhCisgCistbGliX0xUTElCUkFSSUVTID0gJChsaWJpYnVzX2Vtb2ppX2RpYWxvZykKKytu b2luc3RfTFRMSUJSQVJJRVMgPSAkKGxpYmlidXNfZW1vamlfZGlhbG9nKQorIAorIGxpYmlidXNf ZW1vamlfZGlhbG9nXzFfMF9sYV9DRkxBR1MgPSAkKEFNX0NGTEFHUykKKyBsaWJpYnVzX2Vtb2pp X2RpYWxvZ18xXzBfbGFfTERGTEFHUyA9ICAgXAorQEAgLTE5OCwxMSArMTgyLDIyIEBAIGxpYmli dXNfZW1vamlfZGlhbG9nXzFfMF9sYV9MREZMQUdTID0gICBcCisgICAgIC12ZXJzaW9uLWluZm8g QExUX1ZFUlNJT05fSU5GT0AgICAgIFwKKyAgICAgJChOVUxMKQorIGxpYmlidXNfZW1vamlfZGlh bG9nXzFfMF9sYV9TT1VSQ0VTID0gICBcCistICAgIGNhbmRpZGF0ZWFyZWEuYyAgICAgICAgICAg ICAgICAgICAgIFwKKy0gICAgZW1vamllci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor LSAgICBpY29ud2lkZ2V0LmMgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIHBhbmdvLmMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgc2VwYXJhdG9yLmMgICAgICAgICAg ICAgICAgICAgICAgICAgXAorKyAgICBjYW5kaWRhdGVhcmVhLnZhbGEgICAgICAgICAgICAgICAg ICBcCisrICAgIGVtb2ppZXIudmFsYSAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgaWNv bndpZGdldC52YWxhICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBwYW5nby52YWxhICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisrICAgIHNlcGFyYXRvci52YWxhICAgICAgICAgICAgICAg ICAgICAgIFwKKysgICAgJChOVUxMKQorKworK2xpYmV4ZWNfUFJPR1JBTVMgKz0gaWJ1cy11aS1l bW9qaWVyCisrCisraWJ1c191aV9lbW9qaWVyX1NPVVJDRVMgPSAgICAgICAgICAgICAgICAgICAg ICAgXAorKyAgICAkKGxpYmlidXNfZW1vamlfZGlhbG9nXzFfMF9sYV9TT1VSQ0VTKSAgICAgIFwK KysgICAgZW1vamllcmFwcC52YWxhICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg ICQoTlVMTCkKKysKKytpYnVzX3VpX2Vtb2ppZXJfTERBREQgPSAgICAgICAgICAgICAgICAgICAg ICAgICBcCisrICAgICQoQU1fTERBREQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgICAkKE5VTEwpCisgCisgLWluY2x1ZGUgJChJTlRST1NQRUNUSU9OX01BS0VGSUxFKQor QEAgLTIxNCwxMCArMjA5LDYgQEAgSU5UUk9TUEVDVElPTl9DT01QSUxFUl9BUkdTID0gICAgICBc CisgICAgICQoTlVMTCkKKyAKKyBpZiBIQVZFX0lOVFJPU1BFQ1RJT04KKy1pYnVzaW5jbHVkZWRp ciA9ICQoaW5jbHVkZWRpcikvaWJ1cy1ASUJVU19BUElfVkVSU0lPTkAKKy1pYnVzaW5jbHVkZV9I RUFERVJTID0gICAgICAgICAgICAgICAgICBcCistICAgICQoZW1vamlfaGVhZGVycykgICAgICAg ICAgICAgICAgICAgXAorLSAgICAkKE5VTEwpCisgaW50cm9zcGVjdGlvbl9zb3VyY2VzID0gICAg ICAgICAgICAgICAgXAorICAgICAkKGVtb2ppX2hlYWRlcnMpICAgICAgICAgICAgICAgICAgIFwK KyAgICAgJChOVUxMKQorQEAgLTI0MiwxMiArMjMzLDEzIEBAIElCdXNFbW9qaURpYWxvZ18xXzBf Z2lyX0NGTEFHUyA9ICAgICAgIFwKKyBJTlRST1NQRUNUSU9OX0dJUlMgPSBJQnVzRW1vamlEaWFs b2ctMS4wLmdpcgorIAorIGdpcmRpciA9ICQoZGF0YWRpcikvZ2lyLTEuMAorLWRpc3RfZ2lyX0RB VEEgPSAkKElOVFJPU1BFQ1RJT05fR0lSUykKKytub2luc3RfREFUQSArPSAkKElOVFJPU1BFQ1RJ T05fR0lSUykKKytDTEVBTkZJTEVTICs9ICQoSU5UUk9TUEVDVElPTl9HSVJTKQorIAorIHR5cGVs aWJzZGlyID0gJChsaWJkaXIpL2dpcmVwb3NpdG9yeS0xLjAKKy10eXBlbGlic19EQVRBID0gJChJ TlRST1NQRUNUSU9OX0dJUlM6Lmdpcj0udHlwZWxpYikKKytub2luc3RfREFUQSArPSAkKElOVFJP U1BFQ1RJT05fR0lSUzouZ2lyPS50eXBlbGliKQorK0NMRUFORklMRVMgKz0gJChJTlRST1NQRUNU SU9OX0dJUlM6Lmdpcj0udHlwZWxpYikKKyAKKy1DTEVBTkZJTEVTICs9ICQoZGlzdF9naXJfREFU QSkgJCh0eXBlbGlic19EQVRBKQorIAorIGlmIEVOQUJMRV9WQVBJR0VOCisgLWluY2x1ZGUgJChW QVBJR0VOX01BS0VGSUxFKQorQEAgLTI2MSw5ICsyNTMsOSBAQCBpYnVzX2Vtb2ppX2RpYWxvZ18x XzBfdmFwaV9NRVRBREFUQURJUlMgPSAkKHNyY2RpcikKKyBpYnVzX2Vtb2ppX2RpYWxvZ18xXzBf dmFwaV9GSUxFUyA9ICQoSU5UUk9TUEVDVElPTl9HSVJTKQorIAorIHZhcGlkaXIgPSAkKGRhdGFk aXIpL3ZhbGEvdmFwaQorLXZhcGlfREFUQSA9ICQoVkFQSUdFTl9WQVBJUykgJChWQVBJR0VOX1ZB UElTOi52YXBpPS5kZXBzKQorK25vaW5zdF9EQVRBICs9ICQoVkFQSUdFTl9WQVBJUykgJChWQVBJ R0VOX1ZBUElTOi52YXBpPS5kZXBzKQorIAorLU1BSU5UQUlORVJDTEVBTkZJTEVTID0gJChWQVBJ R0VOX1ZBUElTKQorK01BSU5UQUlORVJDTEVBTkZJTEVTICs9ICQoVkFQSUdFTl9WQVBJUykKKyAj IGZvciBtYWtlIGRpc3RjbGVhbgorIENPTkZJR19DTEVBTl9GSUxFUyArPSAkKFZBUElHRU5fVkFQ SVMpCisgRVhUUkFfRElTVCArPSAkKFZBUElHRU5fVkFQSVMpCitkaWZmIC0tZ2l0IGEvdWkvZ3Rr My9lbW9qaWVyYXBwLnZhbGEgYi91aS9ndGszL2Vtb2ppZXJhcHAudmFsYQoraW5kZXggNDI4N2Jm Zi4uNjM0OTk0MCAxMDA2NDQKKy0tLSBhL3VpL2d0azMvZW1vamllcmFwcC52YWxhCisrKysgYi91 aS9ndGszL2Vtb2ppZXJhcHAudmFsYQorQEAgLTI0LDUyICsyNCw1NSBAQCBzdHJpbmcgZW1vamlf Zm9udCA9IG51bGw7Cisgc3RyaW5nIGFubm90YXRpb25fbGFuZyA9IG51bGw7CisgCisgcHVibGlj IGNsYXNzIEVtb2ppQXBwbGljYXRpb24gOiBBcHBsaWNhdGlvbiB7CistICAgIHByaXZhdGUgSUJ1 cy5FbW9qaWVyIGVtb2ppZXIgPSBuZXcgSUJ1cy5FbW9qaWVyKCk7CisrICAgIHByaXZhdGUgSUJ1 c0Vtb2ppZXIgbV9lbW9qaWVyID0gbmV3IElCdXNFbW9qaWVyKCk7CisgCisgICAgIHByaXZhdGUg RW1vamlBcHBsaWNhdGlvbigpIHsKKyAgICAgICAgIE9iamVjdChhcHBsaWNhdGlvbl9pZDogIm9y Zy5mcmVlZGVza3RvcC5pYnVzLnBhbmVsLmVtb2ppZXIiLAorLSAgICAgICAgICAgICAgICBmbGFn czogQXBwbGljYXRpb25GbGFncy5IQU5ETEVTX0NPTU1BTkRfTElORSk7CisrICAgICAgICAgICAg ICAgZmxhZ3M6IEFwcGxpY2F0aW9uRmxhZ3MuSEFORExFU19DT01NQU5EX0xJTkUpOworICAgICAg ICAgc2V0X2luYWN0aXZpdHlfdGltZW91dCgxMDAwMDApOworICAgICB9CisgCisrCisgICAgIHBy aXZhdGUgdm9pZCBzaG93X2RpYWxvZyhBcHBsaWNhdGlvbkNvbW1hbmRMaW5lIGNvbW1hbmRfbGlu ZSkgeworICAgICAgICAgR2RrLkV2ZW50IGV2ZW50ID0gbmV3IEdkay5FdmVudChHZGsuRXZlbnRU eXBlLktFWV9QUkVTUyk7CisgICAgICAgICB2YXIgZGlzcGxheSA9IEdkay5EaXNwbGF5LmdldF9k ZWZhdWx0KCk7CisgICAgICAgICB2YXIgZGV2aWNlX21hbmFnZXIgPSBkaXNwbGF5LmdldF9kZXZp Y2VfbWFuYWdlcigpOworICAgICAgICAgdmFyIGRldmljZSA9IGRldmljZV9tYW5hZ2VyLmxpc3Rf ZGV2aWNlcyhHZGsuRGV2aWNlVHlwZS5NQVNURVIpLmRhdGE7CisgICAgICAgICBldmVudC5zZXRf ZGV2aWNlKGRldmljZSk7CistICAgICAgICBzdHJpbmcgZW1vamkgPSBlbW9qaWVyLnJ1bihldmVu dCwgIiIpOworKyAgICAgICAgc3RyaW5nIGVtb2ppID0gbV9lbW9qaWVyLnJ1bihldmVudCwgIiIp OworICAgICAgICAgaWYgKGVtb2ppID09IG51bGwpIHsKKy0gICAgICAgICAgICBlbW9qaWVyLnJl c2V0KCk7CisrICAgICAgICAgICAgbV9lbW9qaWVyLnJlc2V0KCk7CisgICAgICAgICAgICAgY29t bWFuZF9saW5lLnByaW50KCIlc1xuIiwgXygiQ2FuY2VsZWQgdG8gY2hvb3NlIGFuIGVtb2ppLiIp KTsKKyAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICB9CisgICAgICAgICBHdGsuQ2xpcGJv YXJkIGNsaXBib2FyZCA9IEd0ay5DbGlwYm9hcmQuZ2V0KEdkay5TRUxFQ1RJT05fQ0xJUEJPQVJE KTsKKyAgICAgICAgIGNsaXBib2FyZC5zZXRfdGV4dChlbW9qaSwgLTEpOworICAgICAgICAgY2xp cGJvYXJkLnN0b3JlKCk7CistICAgICAgICBlbW9qaWVyLnJlc2V0KCk7CisrICAgICAgICBtX2Vt b2ppZXIucmVzZXQoKTsKKyAgICAgICAgIGNvbW1hbmRfbGluZS5wcmludCgiJXNcbiIsIF8oIkNv cGllZCBhbiBlbW9qaSB0byB5b3VyIGNsaXBib2FyZC4iKSk7CisgICAgIH0KKyAKKysKKyAgICAg cHVibGljIHZvaWQgYWN0aXZhdGVfZGlhbG9nKEFwcGxpY2F0aW9uQ29tbWFuZExpbmUgY29tbWFu ZF9saW5lKSB7CisgICAgICAgICB0aGlzLmhvbGQgKCk7CisgCisgICAgICAgICAvLyBzaG93IGRp YWxvZworLSAgICAgICAgaWYgKGVtb2ppZXIuaGFzX2xvYWRlZF9lbW9qaV9kaWN0KCkpIHsKKysg ICAgICAgIGlmIChtX2Vtb2ppZXIuaGFzX2xvYWRlZF9lbW9qaV9kaWN0KCkpIHsKKyAgICAgICAg ICAgICBzaG93X2RpYWxvZyhjb21tYW5kX2xpbmUpOworICAgICAgICAgfSBlbHNlIHsKKy0gICAg ICAgICAgICBlbW9qaWVyLmxvYWRlZF9lbW9qaV9kaWN0LmNvbm5lY3QoKCkgPT4geworLSAgICAg ICAgICAgICAgICAgICAgLy8gVGhlIHNpZ25hbCBpcyBjYWxsZWQgd2hlbiB0aGUgbGFuZ3VhZ2Ug aXMgY2hhbmdlZC4KKy0gICAgICAgICAgICAgICAgICAgIGlmIChlbW9qaWVyLmlzX3J1bm5pbmco KSkKKysgICAgICAgICAgICBtX2Vtb2ppZXIubG9hZGVkX2Vtb2ppX2RpY3QuY29ubmVjdCgoKSA9 PiB7CisrICAgICAgICAgICAgICAgIC8vIFRoZSBzaWduYWwgaXMgY2FsbGVkIHdoZW4gdGhlIGxh bmd1YWdlIGlzIGNoYW5nZWQuCisrICAgICAgICAgICAgICAgIGlmIChtX2Vtb2ppZXIuaXNfcnVu bmluZygpKQorICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworIAorLSAgICAgICAgICAgICAg ICAgICAgc2hvd19kaWFsb2coY29tbWFuZF9saW5lKTsKKy0gICAgICAgICAgICAgICAgICAgIH0p OworKyAgICAgICAgICAgICAgICBzaG93X2RpYWxvZyhjb21tYW5kX2xpbmUpOworKyAgICAgICAg ICAgIH0pOworICAgICAgICAgfQorIAorICAgICAgICAgdGhpcy5yZWxlYXNlICgpOworICAgICB9 CisgCisrCisgICAgIHByaXZhdGUgaW50IF9jb21tYW5kX2xpbmUgKEFwcGxpY2F0aW9uQ29tbWFu ZExpbmUgY29tbWFuZF9saW5lKSB7CisgICAgICAgICBjb25zdCBPcHRpb25FbnRyeVtdIG9wdGlv bnMgPSB7CisgICAgICAgICAgICAgeyAiZm9udCIsIDAsIDAsIE9wdGlvbkFyZy5TVFJJTkcsIG91 dCBlbW9qaV9mb250LAorQEAgLTExNCwxNSArMTE3LDE2IEBAIHB1YmxpYyBjbGFzcyBFbW9qaUFw cGxpY2F0aW9uIDogQXBwbGljYXRpb24geworICAgICAgICAgfQorIAorICAgICAgICAgaWYgKGVt b2ppX2ZvbnQgIT0gbnVsbCAmJiBlbW9qaV9mb250ICE9ICIiKQorLSAgICAgICAgICAgIGVtb2pp ZXIuc2V0X2Vtb2ppX2ZvbnQoZW1vamlfZm9udCk7CisrICAgICAgICAgICAgbV9lbW9qaWVyLnNl dF9lbW9qaV9mb250KGVtb2ppX2ZvbnQpOworICAgICAgICAgaWYgKGFubm90YXRpb25fbGFuZyAh PSBudWxsICYmIGFubm90YXRpb25fbGFuZyAhPSAiIikKKy0gICAgICAgICAgICBlbW9qaWVyLnNl dF9hbm5vdGF0aW9uX2xhbmcoYW5ub3RhdGlvbl9sYW5nKTsKKysgICAgICAgICAgICBtX2Vtb2pp ZXIuc2V0X2Fubm90YXRpb25fbGFuZyhhbm5vdGF0aW9uX2xhbmcpOworIAorICAgICAgICAgYWN0 aXZhdGVfZGlhbG9nKGNvbW1hbmRfbGluZSk7CisgCisgICAgICAgICByZXR1cm4gUG9zaXguRVhJ VF9TVUNDRVNTOworICAgICB9CisgCisrCisgICAgIHB1YmxpYyBvdmVycmlkZSBpbnQgY29tbWFu ZF9saW5lIChBcHBsaWNhdGlvbkNvbW1hbmRMaW5lIGNvbW1hbmRfbGluZSkgeworICAgICAgICAg Ly8ga2VlcCB0aGUgYXBwbGljYXRpb24gcnVubmluZyB1bnRpbCB3ZSBhcmUgZG9uZSB3aXRoIHRo aXMgY29tbWFuZGxpbmUKKyAgICAgICAgIHRoaXMuaG9sZCgpOworQEAgLTEzMSw5ICsxMzUsMTAg QEAgcHVibGljIGNsYXNzIEVtb2ppQXBwbGljYXRpb24gOiBBcHBsaWNhdGlvbiB7CisgICAgICAg ICByZXR1cm4gcmVzdWx0OworICAgICB9CisgCisrCisgICAgIHB1YmxpYyBzdGF0aWMgaW50IG1h aW4gKHN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgIEdMaWIuSW50bC5iaW5kdGV4dGRvbWFpbihD b25maWcuR0VUVEVYVF9QQUNLQUdFLAorLSAgICAgICAgICAgICAgICBDb25maWcuR0xJQl9MT0NB TEVfRElSKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWcuR0xJQl9M T0NBTEVfRElSKTsKKyAgICAgICAgIEdMaWIuSW50bC5iaW5kX3RleHRkb21haW5fY29kZXNldChD b25maWcuR0VUVEVYVF9QQUNLQUdFLCAiVVRGLTgiKTsKKyAgICAgICAgIEdMaWIuSW50bC50ZXh0 ZG9tYWluKENvbmZpZy5HRVRURVhUX1BBQ0tBR0UpOworIAorLS0gCisyLjkuMworCitGcm9tIDRi OGQ3YmFmNjI3ZmIzZmM5ZTRkZGU3NGJhMzNhODY3MDkxZjk1YjcgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CitEYXRl OiBUdWUsIDE4IEFwciAyMDE3IDExOjQ0OjUyICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIHVpL2d0 azM6IE1hcmsgTEFORyBhbmQgRk9OVCBhcyB0cmFuc2xhdGFibGUgc3RyaW5ncworCitCVUc9aHR0 cHM6Ly9naXRodWIuY29tL2lidXMvaWJ1cy9pc3N1ZXMvMTkyMAorCitSZXZpZXcgVVJMOiBodHRw czovL2NvZGVyZXZpZXcuYXBwc3BvdC5jb20vMzIyODgwMDQzCistLS0KKyB1aS9ndGszL2Vtb2pp ZXJhcHAudmFsYSB8IDE0ICsrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2Vy dGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS91aS9ndGszL2Vtb2ppZXJh cHAudmFsYSBiL3VpL2d0azMvZW1vamllcmFwcC52YWxhCitpbmRleCA2MzQ5OTQwLi5lYWM4ZDZh IDEwMDY0NAorLS0tIGEvdWkvZ3RrMy9lbW9qaWVyYXBwLnZhbGEKKysrKyBiL3VpL2d0azMvZW1v amllcmFwcC52YWxhCitAQCAtNzYsMTEgKzc2LDE3IEBAIHB1YmxpYyBjbGFzcyBFbW9qaUFwcGxp Y2F0aW9uIDogQXBwbGljYXRpb24geworICAgICBwcml2YXRlIGludCBfY29tbWFuZF9saW5lIChB cHBsaWNhdGlvbkNvbW1hbmRMaW5lIGNvbW1hbmRfbGluZSkgeworICAgICAgICAgY29uc3QgT3B0 aW9uRW50cnlbXSBvcHRpb25zID0geworICAgICAgICAgICAgIHsgImZvbnQiLCAwLCAwLCBPcHRp b25BcmcuU1RSSU5HLCBvdXQgZW1vamlfZm9udCwKKy0gICAgICAgICAgICAgICAgTl8oIkZPTlQg Zm9yIGVtb2ppIGNocmFjdGVycyBvbiBlbW9qaSBkaWFsb2cuIiksCistICAgICAgICAgICAgICAg ICJGT05UIiB9LAorKyAgICAgICAgICAgICAgICAvKiBUUkFOU0xBVE9SUzogIkZPTlQiIHNob3Vs ZCBiZSBjYXBpdGFsIGFuZCB0cmFuc2xhdGFibGUuCisrICAgICAgICAgICAgICAgICAqIEl0J3Mg dXNlZCBmb3IgYW4gYXJndW1lbnQgY29tbWFuZCAtLWZvbnQ9Rk9OVAorKyAgICAgICAgICAgICAg ICAgKi8KKysgICAgICAgICAgICAgICAgTl8oIlwiRk9OVFwiIGZvciBlbW9qaSBjaHJhY3RlcnMg b24gZW1vamkgZGlhbG9nIiksCisrICAgICAgICAgICAgICAgIE5fKCJGT05UIikgfSwKKyAgICAg ICAgICAgICB7ICJsYW5nIiwgMCwgMCwgT3B0aW9uQXJnLlNUUklORywgb3V0IGFubm90YXRpb25f bGFuZywKKy0gICAgICAgICAgICAgICAgTl8oIkxBTkcgZm9yIGFubm90YXRpb25zIG9uIGVtb2pp IGRpYWxvZy4gRS5nLiBcImVuXCIiKSwKKy0gICAgICAgICAgICAgICAgIkxBTkciIH0sCisrICAg ICAgICAgICAgICAgIC8qIFRSQU5TTEFUT1JTOiAiTEFORyIgc2hvdWxkIGJlIGNhcGl0YWwgYW5k IHRyYW5zbGF0YWJsZS4KKysgICAgICAgICAgICAgICAgICogSXQncyB1c2VkIGZvciBhbiBhcmd1 bWVudCBjb21tYW5kIC0tbGFuZz1MQU5HCisrICAgICAgICAgICAgICAgICAqLworKyAgICAgICAg ICAgICAgICBOXygiXCJMQU5HXCIgZm9yIGFubm90YXRpb25zIG9uIGVtb2ppIGRpYWxvZy4gRS5n LiBcImVuXCIiKSwKKysgICAgICAgICAgICAgICAgTl8oIkxBTkciKSB9LAorICAgICAgICAgICAg IHsgbnVsbCB9CisgICAgICAgICB9OworIAorLS0gCisyLjkuMworCitGcm9tIGM2Y2RmMjFjNzM2 NGNiYjFlODQ4ZTQ0Y2FiMGJmZjI3MGU0MzJlODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE5 IEFwciAyMDE3IDEyOjE2OjM3ICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIHVpL2d0azM6IENoYW5n ZSBtb2RhbCBkaWFsb2cgdG8gZm9jdXNlZCBkaWFsb2cKKworVGhlcmUgYXJlIHNldmVyYWwgcHJv YmxlbXMgd2l0aCB0aGUgY3VycmVudCBlbW9qaSBtb2RhbCBkaWFsb2cuCitJZiBrZXlib2FyZCBp cyBncmFiYmVkIG9uIHRoZSBwb3B1cCB3aW5kb3csIHRoZSBmb2N1cyBvdXQvaW4gZXZlbnRzCitj YW5ub3QgYmUgZGV0ZWN0ZWQgc28gdGhlIGRpYWxvZyBjYW5ub3QgYmUgY2xvc2VkIGJ5IHRoZSBm b2N1cyBjaGFuZ2VzLgorCitJZiBtb3VzZSBvcGVyYXRpb24gaXMgc3VwcG9ydGVkIG9uIHRoZSBw b3B1cCB3aW5kb3csIG5lZWQgYSBjdXN0b20KK0d0a0hlYWRlckJhciB3aXRoIGV4dGVuZGVkIGhh bmRsZS52YWxhIGJ1dCB0aGUgYmVoYXZpb3IgaXMgdW5jbGVhci4gWzFdCisKK0Fsc28gY3VycmVu dCBwb3B1cCB3aW5kb3cgaGFzIHNldmVyYWwgZXh0ZW5zaW9ucyBmb3IgdGhlIGtleWJvYXJkIGdy YWIuCisKK0lmIHRoZSBjbG9zZWQgYnV0dG9uIGlzIG5lZWRlZCBvbiB0aGUgcG9wdXAgd2luZG93 IHNpbmNlIHRoZSBmb2N1cyBldmVudHMKK2Nhbm5vdCBiZSBkZXRlY3RlZCwgSSB0aGluayB0aGVy ZSBpcyBubyBtZXJpdCB0byB1c2UgdGhlIHBvcHVwIHdpbmRvdy4KK05vdyBJQnVzRW1vamllciBz aW1wbHkgdXNlcyB0aGUgZm9jdXNlZCB3aW5kb3cuCisKK1sxXSBodHRwczovL21haWwuZ25vbWUu b3JnL2FyY2hpdmVzL2d0ay1hcHAtZGV2ZWwtbGlzdC8yMDE3LUFwcmlsL21zZzAwMDE3Lmh0bWwK KworUj1TaGF3bi5QLkh1YW5nQGdtYWlsLmNvbSwgYWxleGVwaWNvQGdtYWlsLmNvbQorCitSZXZp ZXcgVVJMOiBodHRwczovL2NvZGVyZXZpZXcuYXBwc3BvdC5jb20vMzE2NTEwMDQzCistLS0KKyB1 aS9ndGszL2Vtb2ppZXIudmFsYSAgICAgIHwgMjQzICsrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB1aS9ndGszL2Vtb2ppZXJhcHAudmFsYSAgIHwgIDU1ICsr KystLS0tLS0tCisgdWkvZ3RrMy9pYnVzZW1vamlkaWFsb2cuaCB8ICA1NCArKysrKy0tLS0tLQor IHVpL2d0azMvcGFuZWwudmFsYSAgICAgICAgfCAgNzMgKysrKysrKysrKy0tLS0KKyA0IGZpbGVz IGNoYW5nZWQsIDE5NCBpbnNlcnRpb25zKCspLCAyMzEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1n aXQgYS91aS9ndGszL2Vtb2ppZXIudmFsYSBiL3VpL2d0azMvZW1vamllci52YWxhCitpbmRleCA3 YjYxMDdmLi41YTliZjhmIDEwMDY0NAorLS0tIGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKKysrKyBi L3VpL2d0azMvZW1vamllci52YWxhCitAQCAtMTM3LDQ3ICsxMzcsMjcgQEAgY2xhc3MgSUJ1c0Vt b2ppZXIgOiBHdGsuV2luZG93IHsKKyAgICAgICAgICAgICBwYWNrX3N0YXJ0KGxhYmVsLCB0cnVl LCB0cnVlLCAwKTsKKyAgICAgICAgIH0KKyAgICAgfQorLSAgICBwcml2YXRlIGNsYXNzIEVUaXRs ZUxhYmVsQm94IDogR3RrLkJveCB7CistICAgICAgICBFUGFkZGVkTGFiZWwgbV9sYW5nX2xhYmVs OworLSAgICAgICAgcHJpdmF0ZSBHdGsuQnV0dG9uIG1fY2xvc2VfYnV0dG9uOworLSAgICAgICAg cHJpdmF0ZSB1bG9uZyBtX2Nsb3NlX2hhbmRsZXI7CisrICAgIHByaXZhdGUgY2xhc3MgRVRpdGxl TGFiZWxCb3ggOiBHdGsuSGVhZGVyQmFyIHsKKysgICAgICAgIHByaXZhdGUgR3RrLkxhYmVsIG1f bGFuZ19sYWJlbDsKKyAKKy0gICAgICAgIHB1YmxpYyBFVGl0bGVMYWJlbEJveChzdHJpbmcgICAg dGV4dCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGsuQWxpZ24gYWxpZ24pIHsK KysgICAgICAgIHB1YmxpYyBFVGl0bGVMYWJlbEJveChzdHJpbmcgdGl0bGUpIHsKKyAgICAgICAg ICAgICBHTGliLk9iamVjdCgKKyAgICAgICAgICAgICAgICAgbmFtZSA6ICJJQnVzRW1vamllclRp dGxlTGFiZWxCb3giLAorLSAgICAgICAgICAgICAgICBvcmllbnRhdGlvbiA6IEd0ay5PcmllbnRh dGlvbi5IT1JJWk9OVEFMLAorLSAgICAgICAgICAgICAgICBzcGFjaW5nIDogMAorKyAgICAgICAg ICAgICAgICBzaG93X2Nsb3NlX2J1dHRvbjogdHJ1ZSwKKysgICAgICAgICAgICAgICAgZGVjb3Jh dGlvbl9sYXlvdXQ6ICI6Y2xvc2UiLAorKyAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUKKyAg ICAgICAgICAgICApOworLSAgICAgICAgICAgIEVQYWRkZWRMYWJlbCBsYWJlbCA9IG5ldyBFUGFk ZGVkTGFiZWwodGV4dCwgYWxpZ24pOworLSAgICAgICAgICAgIHBhY2tfc3RhcnQobGFiZWwsIHRy dWUsIHRydWUsIDApOworLSAgICAgICAgICAgIEd0ay5TZXBhcmF0b3Igc2VwYXJhdG9yID0KKy0g ICAgICAgICAgICAgICAgICAgIG5ldyBHdGsuU2VwYXJhdG9yIChHdGsuT3JpZW50YXRpb24uVkVS VElDQUwpOworLSAgICAgICAgICAgIHBhY2tfc3RhcnQoc2VwYXJhdG9yLCBmYWxzZSwgdHJ1ZSwg MCk7CistICAgICAgICAgICAgbV9sYW5nX2xhYmVsID0gbmV3IEVQYWRkZWRMYWJlbCgiIiwgYWxp Z24pOworLSAgICAgICAgICAgIHBhY2tfc3RhcnQobV9sYW5nX2xhYmVsLCBmYWxzZSwgdHJ1ZSwg MCk7CistICAgICAgICAgICAgSWNvbldpZGdldCBpY29uID0gbmV3IEljb25XaWRnZXQoIndpbmRv dy1jbG9zZSIsIEd0ay5JY29uU2l6ZS5NRU5VKTsKKy0gICAgICAgICAgICBtX2Nsb3NlX2J1dHRv biA9IG5ldyBHdGsuQnV0dG9uKCk7CistICAgICAgICAgICAgbV9jbG9zZV9idXR0b24uYWRkKGlj b24pOworLSAgICAgICAgICAgIHBhY2tfZW5kKG1fY2xvc2VfYnV0dG9uLCBmYWxzZSwgdHJ1ZSwg MCk7CistICAgICAgICB9CistICAgICAgICBwdWJsaWMgdm9pZCBzZXRfbG9vcChHTGliLk1haW5M b29wPyBsb29wKSB7CistICAgICAgICAgICAgaWYgKG1fY2xvc2VfaGFuZGxlciA+IDApCistICAg ICAgICAgICAgICAgIEdMaWIuU2lnbmFsSGFuZGxlci5kaXNjb25uZWN0KG1fY2xvc2VfYnV0dG9u LCBtX2Nsb3NlX2hhbmRsZXIpOworLSAgICAgICAgICAgIG1fY2xvc2VfaGFuZGxlciA9IG1fY2xv c2VfYnV0dG9uLmJ1dHRvbl9wcmVzc19ldmVudC5jb25uZWN0KChlKSA9PiB7CistICAgICAgICAg ICAgICAgIGlmIChsb29wICE9IG51bGwgJiYgbG9vcC5pc19ydW5uaW5nKCkpCistICAgICAgICAg ICAgICAgICAgICBsb29wLnF1aXQoKTsKKy0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cist ICAgICAgICAgICAgfSk7CistICAgICAgICB9CistICAgICAgICBwdWJsaWMgdm9pZCB1bnNldF9s b29wKCkgeworLSAgICAgICAgICAgIGlmIChtX2Nsb3NlX2hhbmRsZXIgPiAwKSB7CistICAgICAg ICAgICAgICAgIEdMaWIuU2lnbmFsSGFuZGxlci5kaXNjb25uZWN0KG1fY2xvc2VfYnV0dG9uLCBt X2Nsb3NlX2hhbmRsZXIpOworLSAgICAgICAgICAgICAgICBtX2Nsb3NlX2hhbmRsZXIgPSAwOwor LSAgICAgICAgICAgIH0KKysgICAgICAgICAgICB2YXIgdmJveCA9IG5ldyBHdGsuQm94KEd0ay5P cmllbnRhdGlvbi5WRVJUSUNBTCwgMCk7CisrICAgICAgICAgICAgc2V0X2N1c3RvbV90aXRsZSh2 Ym94KTsKKysgICAgICAgICAgICB2YXIgbGFiZWwgPSBuZXcgR3RrLkxhYmVsKHRpdGxlKTsKKysg ICAgICAgICAgICBsYWJlbC5nZXRfc3R5bGVfY29udGV4dCgpLmFkZF9jbGFzcygidGl0bGUiKTsK KysgICAgICAgICAgICB2Ym94LnBhY2tfc3RhcnQobGFiZWwsIHRydWUsIGZhbHNlLCAwKTsKKysg ICAgICAgICAgICBtX2xhbmdfbGFiZWwgPSBuZXcgR3RrLkxhYmVsKG51bGwpOworKyAgICAgICAg ICAgIG1fbGFuZ19sYWJlbC5nZXRfc3R5bGVfY29udGV4dCgpLmFkZF9jbGFzcygic3VidGl0bGUi KTsKKysgICAgICAgICAgICB2Ym94LnBhY2tfc3RhcnQobV9sYW5nX2xhYmVsLCB0cnVlLCBmYWxz ZSwgMCk7CisgICAgICAgICB9CisgICAgICAgICBwdWJsaWMgdm9pZCBzZXRfbGFuZ19sYWJlbChz dHJpbmcgc3RyKSB7CistICAgICAgICAgICAgbV9sYW5nX2xhYmVsLnNldF9sYWJlbChzdHIpOwor KyAgICAgICAgICAgIG1fbGFuZ19sYWJlbC5zZXRfdGV4dChzdHIpOworICAgICAgICAgfQorICAg ICB9CisgCitAQCAtMTg2LDcgKzE2NiwyMiBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5XaW5k b3cgeworICAgICAgICAgQkFDS1dBUkQsCisgICAgIH0KKyAKKy0gICAgcHJpdmF0ZSBjb25zdCB1 aW50IEVNT0pJX0dSSURfUEFHRSA9IDEwOworKyAgICBwcml2YXRlIHN0YXRpYyBjb25zdCB1aW50 IEVNT0pJX0dSSURfUEFHRSA9IDEwOworKworKyAgICAvLyBTZXQgdGhlIGFjdHVhbCBkZWZhdWx0 IHZhbHVlcyBpbiB0aGUgY29uc3RydWN0b3IKKysgICAgLy8gYmVjYXVzZSB0aGVzZSBmaWVsZHMg YXJlIHVzZWQgZm9yIGNsYXNzX2luaXQoKSBhbmQgc3RhdGljIGZ1bmN0aW9ucywKKysgICAgLy8g ZS5nLiBzZXRfZW1vamlfZm9udCgpLCBjYW4gYmUgY2FsbGVkIGJlZm9yZSBjbGFzc19pbml0KCkg aXMgY2FsbGVkLgorKyAgICBwcml2YXRlIHN0YXRpYyBzdHJpbmcgbV9jdXJyZW50X2xhbmdfaWQ7 CisrICAgIHByaXZhdGUgc3RhdGljIHN0cmluZyBtX2Vtb2ppX2ZvbnQ7CisrICAgIHByaXZhdGUg c3RhdGljIHN0cmluZ1tdIG1fZmF2b3JpdGVzOworKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgbV9l bW9qaV9tYXhfc2VxX2xlbjsKKysgICAgcHJpdmF0ZSBzdGF0aWMgR0xpYi5IYXNoVGFibGU8c3Ry aW5nLCBHTGliLlNMaXN0Pj8KKysgICAgICAgICAgICBtX2Fubm90YXRpb25fdG9fZW1vamlzX2Rp Y3Q7CisrICAgIHByaXZhdGUgc3RhdGljIEdMaWIuSGFzaFRhYmxlPHN0cmluZywgSUJ1cy5FbW9q aURhdGE+PworKyAgICAgICAgICAgIG1fZW1vamlfdG9fZGF0YV9kaWN0OworKyAgICBwcml2YXRl IHN0YXRpYyBHTGliLkhhc2hUYWJsZTxzdHJpbmcsIEdMaWIuU0xpc3Q+PworKyAgICAgICAgICAg IG1fY2F0ZWdvcnlfdG9fZW1vamlzX2RpY3Q7CisrCisgICAgIHByaXZhdGUgVGhlbWVkUkdCQSBt X3JnYmE7CisgICAgIHByaXZhdGUgR3RrLkJveCBtX3Zib3g7CisgICAgIHByaXZhdGUgRVRpdGxl TGFiZWxCb3ggbV90aXRsZTsKK0BAIC0xOTgsNDMgKzE5MywzOCBAQCBjbGFzcyBJQnVzRW1vamll ciA6IEd0ay5XaW5kb3cgeworICAgICBwcml2YXRlIHN0cmluZyBtX2lucHV0X2NvbnRleHRfcGF0 aCA9ICIiOworICAgICBwcml2YXRlIEdMaWIuTWFpbkxvb3A/IG1fbG9vcDsKKyAgICAgcHJpdmF0 ZSBzdHJpbmc/IG1fcmVzdWx0OworLSAgICBwcml2YXRlIHN0cmluZyBtX2N1cnJlbnRfbGFuZ19p ZCA9ICJlbiI7CisgICAgIHByaXZhdGUgc3RyaW5nPyBtX3VuaWNvZGVfcG9pbnQgPSBudWxsOwor ICAgICBwcml2YXRlIGJvb2wgbV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJsZTsKKy0gICAgcHJp dmF0ZSBHTGliLkhhc2hUYWJsZTxzdHJpbmcsIEdMaWIuU0xpc3Q+PworLSAgICAgICAgICAgIG1f YW5ub3RhdGlvbl90b19lbW9qaXNfZGljdCA9IG51bGw7CistICAgIHByaXZhdGUgR0xpYi5IYXNo VGFibGU8c3RyaW5nLCBJQnVzLkVtb2ppRGF0YT4/CistICAgICAgICAgICAgbV9lbW9qaV90b19k YXRhX2RpY3QgPSBudWxsOworLSAgICBwcml2YXRlIEdMaWIuSGFzaFRhYmxlPHN0cmluZywgR0xp Yi5TTGlzdD4/CistICAgICAgICAgICAgbV9jYXRlZ29yeV90b19lbW9qaXNfZGljdCA9IG51bGw7 CisgICAgIGludCBtX2NhdGVnb3J5X2FjdGl2ZV9pbmRleDsKKy0gICAgcHJpdmF0ZSBpbnQgbV9l bW9qaV9tYXhfc2VxX2xlbiA9IDA7CisgICAgIHByaXZhdGUgSUJ1cy5Mb29rdXBUYWJsZSBtX2xv b2t1cF90YWJsZTsKKyAgICAgcHJpdmF0ZSBHdGsuTGFiZWxbXSBtX2NhbmRpZGF0ZXM7CistICAg IHByaXZhdGUgc3RyaW5nIG1fZW1vamlfZm9udCA9ICJNb25vc3BhY2UgMTYiOworLSAgICBwcml2 YXRlIHN0cmluZ1tdIG1fZmF2b3JpdGVzID0ge307CisgICAgIHByaXZhdGUgYm9vbCBtX2VudGVy X25vdGlmeV9lbmFibGUgPSB0cnVlOworICAgICBwcml2YXRlIHVpbnQgbV9lbnRyeV9ub3RpZnlf c2hvd19pZDsKKyAgICAgcHJpdmF0ZSB1aW50IG1fZW50cnlfbm90aWZ5X2Rpc2FibGVfaWQ7Cist ICAgIHByaXZhdGUgdWludCBtX3JlbG9hZF9lbW9qaV9kaWN0X2lkOworIAorICAgICBwdWJsaWMg c2lnbmFsIHZvaWQgY2FuZGlkYXRlX2NsaWNrZWQodWludCBpbmRleCwgdWludCBidXR0b24sIHVp bnQgc3RhdGUpOworLSAgICBwdWJsaWMgc2lnbmFsIHZvaWQgbG9hZGVkX2Vtb2ppX2RpY3QoKTsK KyAKKyAgICAgcHVibGljIElCdXNFbW9qaWVyKCkgeworICAgICAgICAgR0xpYi5PYmplY3QoCist ICAgICAgICAgICAgdHlwZSA6IEd0ay5XaW5kb3dUeXBlLlBPUFVQLAorKyAgICAgICAgICAgIHR5 cGUgOiBHdGsuV2luZG93VHlwZS5UT1BMRVZFTCwKKyAgICAgICAgICAgICBldmVudHMgOiBHZGsu RXZlbnRNYXNrLktFWV9QUkVTU19NQVNLIHwKKyAgICAgICAgICAgICAgICAgICAgICBHZGsuRXZl bnRNYXNrLktFWV9SRUxFQVNFX01BU0sgfAorLSAgICAgICAgICAgICAgICAgICAgIEdkay5FdmVu dE1hc2suQlVUVE9OX1BSRVNTX01BU0ssCisrICAgICAgICAgICAgICAgICAgICAgR2RrLkV2ZW50 TWFzay5CVVRUT05fUFJFU1NfTUFTSyB8CisrICAgICAgICAgICAgICAgICAgICAgR2RrLkV2ZW50 TWFzay5CVVRUT05fUkVMRUFTRV9NQVNLLAorICAgICAgICAgICAgIHdpbmRvd19wb3NpdGlvbiA6 IEd0ay5XaW5kb3dQb3NpdGlvbi5DRU5URVIsCisrICAgICAgICAgICAgaWNvbl9uYW1lOiAiaWJ1 cy1zZXR1cCIsCisgICAgICAgICAgICAgYWNjZXB0X2ZvY3VzIDogdHJ1ZSwKKy0gICAgICAgICAg ICBkZWNvcmF0ZWQgOiBmYWxzZSwKKy0gICAgICAgICAgICBtb2RhbCA6IHRydWUsCisgICAgICAg ICAgICAgcmVzaXphYmxlIDogdHJ1ZSwKKyAgICAgICAgICAgICBmb2N1c192aXNpYmxlIDogdHJ1 ZQorICAgICAgICAgKTsKKyAKKysgICAgICAgIGlmIChtX2N1cnJlbnRfbGFuZ19pZCA9PSBudWxs KQorKyAgICAgICAgICAgIG1fY3VycmVudF9sYW5nX2lkID0gImVuIjsKKysgICAgICAgIGlmICht X2Vtb2ppX2ZvbnQgPT0gbnVsbCkKKysgICAgICAgICAgICBtX2Vtb2ppX2ZvbnQgPSAiTW9ub3Nw YWNlIDE2IjsKKysgICAgICAgIGlmIChtX2Zhdm9yaXRlcyA9PSBudWxsKQorKyAgICAgICAgICAg IG1fZmF2b3JpdGVzID0ge307CisrCisgICAgICAgICBHZGsuRGlzcGxheSBkaXNwbGF5ID0gR2Rr LkRpc3BsYXkuZ2V0X2RlZmF1bHQoKTsKKyAgICAgICAgIEdkay5TY3JlZW4gc2NyZWVuID0gKGRp c3BsYXkgIT0gbnVsbCkgPworICAgICAgICAgICAgICAgICBkaXNwbGF5LmdldF9kZWZhdWx0X3Nj cmVlbigpIDogbnVsbDsKK0BAIC0yODMsMTIgKzI3MywxMSBAQCBjbGFzcyBJQnVzRW1vamllciA6 IEd0ay5XaW5kb3cgeworICAgICAgICAgICAgICAgICBjc3NfcHJvdmlkZXIsCisgICAgICAgICAg ICAgICAgIEd0ay5TVFlMRV9QUk9WSURFUl9QUklPUklUWV9BUFBMSUNBVElPTik7CisgCisrICAg ICAgICBtX3RpdGxlID0gbmV3IEVUaXRsZUxhYmVsQm94KF8oIkVtb2ppIENob29zZXIiKSk7Cisr ICAgICAgICBzZXRfdGl0bGViYXIobV90aXRsZSk7CisgICAgICAgICBtX3Zib3ggPSBuZXcgR3Rr LkJveChHdGsuT3JpZW50YXRpb24uVkVSVElDQUwsIDApOworICAgICAgICAgYWRkKG1fdmJveCk7 CisgCistICAgICAgICBtX3RpdGxlID0gbmV3IEVUaXRsZUxhYmVsQm94KF8oIkVtb2ppIERpYWxv ZyIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGsuQWxpZ24uQ0VO VEVSKTsKKy0gICAgICAgIG1fdmJveC5hZGQobV90aXRsZSk7CisgICAgICAgICBtX2VudHJ5ID0g bmV3IEVFbnRyeSgpOworICAgICAgICAgbV9lbnRyeS5zZXRfcGxhY2Vob2xkZXJfdGV4dChfKCJU eXBlIGFubm90YXRpb24gb3IgY2hvb3NlIGVtb2ppIikpOworICAgICAgICAgbV92Ym94LmFkZCht X2VudHJ5KTsKK0BAIC0zMDYsOCArMjk1LDYgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuV2lu ZG93IHsKKyAgICAgICAgIEF0ay5PYmplY3Qgb2JqID0gbV9lbnRyeS5nZXRfYWNjZXNzaWJsZSgp OworICAgICAgICAgb2JqLnNldF9yb2xlIChBdGsuUm9sZS5TVEFUVVNCQVIpOworIAorLSAgICAg ICAgZ3JhYl9mb2N1cygpOworLQorICAgICAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIG9mIElCdXMu TG9va3VwVGFibGUgZG9lcyBub3Qgc3VwcG9ydCBtb3JlIHRoYW4KKyAgICAgICAgIC8vIDE2IHBh Z2VzLgorICAgICAgICAgbV9sb29rdXBfdGFibGUgPSBuZXcgSUJ1cy5Mb29rdXBUYWJsZSgxLCAw LCB0cnVlLCB0cnVlKTsKK0BAIC0zMjUsMTUgKzMxMiwxMyBAQCBjbGFzcyBJQnVzRW1vamllciA6 IEd0ay5XaW5kb3cgeworICAgICAgICAgICAgIGhpZGVfY2FuZGlkYXRlX3BhbmVsKCk7CisgICAg ICAgICB9KTsKKyAKKy0gICAgICAgIG1fcmVsb2FkX2Vtb2ppX2RpY3RfaWQgPSBHTGliLklkbGUu YWRkKCgpID0+IHsKKysgICAgICAgIGlmIChtX2Fubm90YXRpb25fdG9fZW1vamlzX2RpY3QgPT0g bnVsbCkgeworICAgICAgICAgICAgIHJlbG9hZF9lbW9qaV9kaWN0KCk7CistICAgICAgICAgICAg bV9yZWxvYWRfZW1vamlfZGljdF9pZCA9IDA7CistICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor LSAgICAgICAgfSk7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAKKy0gICAgcHJpdmF0ZSB2b2lk IHJlbG9hZF9lbW9qaV9kaWN0KCkgeworKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHJlbG9hZF9l bW9qaV9kaWN0KCkgeworICAgICAgICAgaW5pdF9lbW9qaV9kaWN0KCk7CisgICAgICAgICBtYWtl X2Vtb2ppX2RpY3QoImVuIik7CisgICAgICAgICBpZiAobV9jdXJyZW50X2xhbmdfaWQgIT0gImVu IikgeworQEAgLTM0NCwxMSArMzI5LDEwIEBAIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLldpbmRv dyB7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIG1ha2VfZW1vamlfZGljdChtX2N1cnJl bnRfbGFuZ19pZCk7CisgICAgICAgICB9CistICAgICAgICBsb2FkZWRfZW1vamlfZGljdCgpOwor ICAgICB9CisgCisgCistICAgIHByaXZhdGUgdm9pZCBpbml0X2Vtb2ppX2RpY3QoKSB7CisrICAg IHByaXZhdGUgc3RhdGljIHZvaWQgaW5pdF9lbW9qaV9kaWN0KCkgeworICAgICAgICAgbV9hbm5v dGF0aW9uX3RvX2Vtb2ppc19kaWN0ID0KKyAgICAgICAgICAgICAgICAgbmV3IEdMaWIuSGFzaFRh YmxlPHN0cmluZywgR0xpYi5TTGlzdD4oR0xpYi5zdHJfaGFzaCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpYi5zdHJfZXF1YWwpOwor QEAgLTM2MSw3ICszNDUsNyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5XaW5kb3cgeworICAg ICB9CisgCisgCistICAgIHByaXZhdGUgdm9pZCBtYWtlX2Vtb2ppX2RpY3Qoc3RyaW5nIGxhbmcp IHsKKysgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBtYWtlX2Vtb2ppX2RpY3Qoc3RyaW5nIGxhbmcp IHsKKyAgICAgICAgIEdMaWIuU0xpc3Q8SUJ1cy5FbW9qaURhdGE+IGVtb2ppX2xpc3QgPSBJQnVz LkVtb2ppRGF0YS5sb2FkKAorICAgICAgICAgICAgICAgICAgICAgQ29uZmlnLlBLR0RBVEFESVIg KyAiL2RpY3RzL2Vtb2ppLSIgKyBsYW5nICsgIi5kaWN0Iik7CisgICAgICAgICBpZiAoZW1vamlf bGlzdCA9PSBudWxsKQorQEAgLTM4MCw3ICszNjQsNyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0 ay5XaW5kb3cgeworICAgICB9CisgCisgCistICAgIHByaXZhdGUgdm9pZCB1cGRhdGVfYW5ub3Rh dGlvbl90b19lbW9qaXNfZGljdChJQnVzLkVtb2ppRGF0YSBkYXRhKSB7CisrICAgIHByaXZhdGUg c3RhdGljIHZvaWQgdXBkYXRlX2Fubm90YXRpb25fdG9fZW1vamlzX2RpY3QoSUJ1cy5FbW9qaURh dGEgZGF0YSkgeworICAgICAgICAgc3RyaW5nIGVtb2ppID0gKGRhdGEuZ2V0X2Vtb2ppX2FsdGVy bmF0ZXMoKSAhPSAiIikgPworICAgICAgICAgICAgICAgICBkYXRhLmdldF9lbW9qaV9hbHRlcm5h dGVzKCkgOiBkYXRhLmdldF9lbW9qaSgpOworICAgICAgICAgdW5vd25lZCBHTGliLlNMaXN0PHN0 cmluZz4gYW5ub3RhdGlvbnMgPSBkYXRhLmdldF9hbm5vdGF0aW9ucygpOworQEAgLTQwMiw3ICsz ODYsNyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5XaW5kb3cgeworICAgICB9CisgCisgCist ICAgIHByaXZhdGUgc3RyaW5nIHV0ZjhfZG93bihzdHJpbmcgc3RyKSB7CisrICAgIHByaXZhdGUg c3RhdGljIHN0cmluZyB1dGY4X2Rvd24oc3RyaW5nIHN0cikgeworICAgICAgICAgR0xpYi5TdHJp bmdCdWlsZGVyIGJ1ZmYgPSBuZXcgR0xpYi5TdHJpbmdCdWlsZGVyKCk7CisgICAgICAgICBpbnQg bGVuZ3RoID0gc3RyLmNoYXJfY291bnQoKTsKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg bGVuZ3RoOyBpKyspIHsKK0BAIC00MTMsNyArMzk3LDcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBH dGsuV2luZG93IHsKKyAgICAgfQorIAorIAorLSAgICBwcml2YXRlIHN0cmluZyB1dGY4X3RpdGxl KHN0cmluZyBzdHIpIHsKKysgICAgcHJpdmF0ZSBzdGF0aWMgc3RyaW5nIHV0ZjhfdGl0bGUoc3Ry aW5nIHN0cikgeworICAgICAgICAgU3RyaW5nQnVpbGRlciBidWZmID0gbmV3IFN0cmluZ0J1aWxk ZXIoKTsKKyAgICAgICAgIGludCBsZW5ndGggPSBzdHIuY2hhcl9jb3VudCgpOworICAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworQEAgLTQyOCw3ICs0MTIsNyBAQCBj bGFzcyBJQnVzRW1vamllciA6IEd0ay5XaW5kb3cgeworICAgICB9CisgCisgCistICAgIHByaXZh dGUgc3RyaW5nIHV0ZjhfY29kZV9wb2ludChzdHJpbmcgc3RyKSB7CisrICAgIHByaXZhdGUgc3Rh dGljIHN0cmluZyB1dGY4X2NvZGVfcG9pbnQoc3RyaW5nIHN0cikgeworICAgICAgICAgU3RyaW5n QnVpbGRlciBidWZmID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKKyAgICAgICAgIGludCBsZW5ndGgg PSBzdHIuY2hhcl9jb3VudCgpOworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7 IGkrKykgeworQEAgLTQ0Myw4ICs0MjcsOCBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5XaW5k b3cgeworICAgICB9CisgCisgCistICAgIHByaXZhdGUgdm9pZCB1cGRhdGVfZW1vamlfdG9fZGF0 YV9kaWN0KElCdXMuRW1vamlEYXRhIGRhdGEsCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cmluZyAgICAgICAgIGxhbmcpIHsKKysgICAgcHJpdmF0ZSBzdGF0 aWMgdm9pZCB1cGRhdGVfZW1vamlfdG9fZGF0YV9kaWN0KElCdXMuRW1vamlEYXRhIGRhdGEsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcg ICAgICAgICBsYW5nKSB7CisgICAgICAgICBzdHJpbmcgZW1vamkgPSAoZGF0YS5nZXRfZW1vamlf YWx0ZXJuYXRlcygpICE9ICIiKSA/CisgICAgICAgICAgICAgICAgIGRhdGEuZ2V0X2Vtb2ppX2Fs dGVybmF0ZXMoKSA6IGRhdGEuZ2V0X2Vtb2ppKCk7CisgICAgICAgICBpZiAobGFuZyA9PSAiZW4i KSB7CitAQCAtNDk2LDggKzQ4MCw4IEBAIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLldpbmRvdyB7 CisgICAgIH0KKyAKKyAKKy0gICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZV9jYXRlZ29yeV90b19lbW9q aXNfZGljdChJQnVzLkVtb2ppRGF0YSBkYXRhLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyAgICAgICAgIGxhbmcpIHsKKysgICAgcHJpdmF0 ZSBzdGF0aWMgdm9pZCB1cGRhdGVfY2F0ZWdvcnlfdG9fZW1vamlzX2RpY3QoSUJ1cy5FbW9qaURh dGEgZGF0YSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RyaW5nICAgICAgICAgbGFuZykgeworICAgICAgICAgc3RyaW5nIGVtb2ppID0g KGRhdGEuZ2V0X2Vtb2ppX2FsdGVybmF0ZXMoKSAhPSAiIikgPworICAgICAgICAgICAgICAgICBk YXRhLmdldF9lbW9qaV9hbHRlcm5hdGVzKCkgOiBkYXRhLmdldF9lbW9qaSgpOworICAgICAgICAg c3RyaW5nIGNhdGVnb3J5ID0gZGF0YS5nZXRfY2F0ZWdvcnkoKTsKK0BAIC05MzcsNyArOTIxLDgg QEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuV2luZG93IHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IG1vZGlmaWVycykgeworICAgICAgICAgYXNz ZXJ0IChrZXl2YWwgPT0gR2RrLktleS5MZWZ0IHx8IGtleXZhbCA9PSBHZGsuS2V5LlJpZ2h0KTsK KyAKKy0gICAgICAgIGlmIChtX2NhbmRpZGF0ZV9wYW5lbF9pc192aXNpYmxlKSB7CisrICAgICAg ICB1aW50IG5jYW5kaWRhdGVzID0gbV9sb29rdXBfdGFibGUuZ2V0X251bWJlcl9vZl9jYW5kaWRh dGVzKCk7CisrICAgICAgICBpZiAobV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJsZSAmJiBuY2Fu ZGlkYXRlcyA+IDEpIHsKKyAgICAgICAgICAgICBlbnRlcl9ub3RpZnlfZGlzYWJsZV93aXRoX3Rp bWVyKCk7CisgICAgICAgICAgICAgaWYgKGtleXZhbCA9PSBHZGsuS2V5LkxlZnQpCisgICAgICAg ICAgICAgICAgIG1fbG9va3VwX3RhYmxlLmN1cnNvcl91cCgpOworQEAgLTk3MSw3ICs5NTYsOCBA QCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5XaW5kb3cgeworICAgICBwcml2YXRlIGJvb2wga2V5 X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbCh1aW50IGtleXZhbCkgeworICAgICAgICAgYXNzZXJ0IChr ZXl2YWwgPT0gR2RrLktleS5Eb3duIHx8IGtleXZhbCA9PSBHZGsuS2V5LlVwKTsKKyAKKy0gICAg ICAgIGlmIChtX2NhbmRpZGF0ZV9wYW5lbF9pc192aXNpYmxlKSB7CisrICAgICAgICB1aW50IG5j YW5kaWRhdGVzID0gbV9sb29rdXBfdGFibGUuZ2V0X251bWJlcl9vZl9jYW5kaWRhdGVzKCk7Cisr ICAgICAgICBpZiAobV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJsZSAmJiBuY2FuZGlkYXRlcyA+ IDEpIHsKKyAgICAgICAgICAgICBpZiAoa2V5dmFsID09IEdkay5LZXkuRG93bikKKyAgICAgICAg ICAgICAgICAgY2FuZGlkYXRlX3BhbmVsX2N1cnNvcl9kb3duKCk7CisgICAgICAgICAgICAgZWxz ZSBpZiAoa2V5dmFsID09IEdkay5LZXkuVXApCitAQCAtOTg3LDEyICs5NzMsMTIgQEAgY2xhc3Mg SUJ1c0Vtb2ppZXIgOiBHdGsuV2luZG93IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludCBtb2RpZmllcnMpIHsKKyAgICAgICAgIGFzc2VydCAoa2V5dmFs ID09IEdkay5LZXkuSG9tZSB8fCBrZXl2YWwgPT0gR2RrLktleS5FbmQpOworIAorLSAgICAgICAg aWYgKG1fY2FuZGlkYXRlX3BhbmVsX2lzX3Zpc2libGUpIHsKKysgICAgICAgIHVpbnQgbmNhbmRp ZGF0ZXMgPSBtX2xvb2t1cF90YWJsZS5nZXRfbnVtYmVyX29mX2NhbmRpZGF0ZXMoKTsKKysgICAg ICAgIGlmIChtX2NhbmRpZGF0ZV9wYW5lbF9pc192aXNpYmxlICYmIG5jYW5kaWRhdGVzID4gMSkg eworICAgICAgICAgICAgIGVudGVyX25vdGlmeV9kaXNhYmxlX3dpdGhfdGltZXIoKTsKKyAgICAg ICAgICAgICBpZiAoa2V5dmFsID09IEdkay5LZXkuSG9tZSkgeworICAgICAgICAgICAgICAgICBt X2xvb2t1cF90YWJsZS5zZXRfY3Vyc29yX3BvcygwKTsKKyAgICAgICAgICAgICB9IGVsc2UgaWYg KGtleXZhbCA9PSBHZGsuS2V5LkVuZCkgeworLSAgICAgICAgICAgICAgICB1aW50IG5jYW5kaWRh dGVzID0gbV9sb29rdXBfdGFibGUuZ2V0X251bWJlcl9vZl9jYW5kaWRhdGVzKCk7CisgICAgICAg ICAgICAgICAgIG1fbG9va3VwX3RhYmxlLnNldF9jdXJzb3JfcG9zKG5jYW5kaWRhdGVzIC0gMSk7 CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlX3BhbmVsKCk7CitA QCAtMTA1Miw4ICsxMDM4LDcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuV2luZG93IHsKKyAg ICAgfQorIAorIAorLSAgICBwdWJsaWMgc3RyaW5nIHJ1bihHZGsuRXZlbnQgZXZlbnQsCistICAg ICAgICAgICAgICAgICAgICAgIHN0cmluZyAgICBpbnB1dF9jb250ZXh0X3BhdGgpIHsKKysgICAg cHVibGljIHN0cmluZyBydW4oc3RyaW5nIGlucHV0X2NvbnRleHRfcGF0aCkgeworICAgICAgICAg YXNzZXJ0IChtX2xvb3AgPT0gbnVsbCk7CisgCisgICAgICAgICBtX2lzX3J1bm5pbmcgPSB0cnVl OworQEAgLTEwNjYsNjUgKzEwNTEsMjIgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuV2luZG93 IHsKKyAgICAgICAgIHJlc2l6ZSgxLCAxKTsKKyAKKyAgICAgICAgIG1fZW50cnkuc2V0X3RleHQo IiIpOworLSAgICAgICAgbV9lbnRyeS5ncmFiX2ZvY3VzKCk7CistCistICAgICAgICBHZGsuRGV2 aWNlIGRldmljZSA9IGV2ZW50LmdldF9kZXZpY2UoKTsKKy0gICAgICAgIGlmIChkZXZpY2UgPT0g bnVsbCkgeworLSAgICAgICAgICAgIHZhciBkaXNwbGF5ID0gZ2V0X2Rpc3BsYXkoKTsKKy0gICAg ICAgICAgICB2YXIgZGV2aWNlX21hbmFnZXIgPSBkaXNwbGF5LmdldF9kZXZpY2VfbWFuYWdlcigp OworLSAgICAgICAgICAgIGRldmljZSA9IGRldmljZV9tYW5hZ2VyLmxpc3RfZGV2aWNlcyhHZGsu RGV2aWNlVHlwZS5NQVNURVIpLmRhdGE7CistICAgICAgICB9CistCistICAgICAgICBHZGsuRGV2 aWNlIGtleWJvYXJkOworLSAgICAgICAgR2RrLkRldmljZSBwb2ludGVyOworLSAgICAgICAgaWYg KGRldmljZS5nZXRfc291cmNlKCkgPT0gR2RrLklucHV0U291cmNlLktFWUJPQVJEKSB7CistICAg ICAgICAgICAga2V5Ym9hcmQgPSBkZXZpY2U7CistICAgICAgICAgICAgcG9pbnRlciA9IGRldmlj ZS5nZXRfYXNzb2NpYXRlZF9kZXZpY2UoKTsKKy0gICAgICAgIH0gZWxzZSB7CistICAgICAgICAg ICAgcG9pbnRlciA9IGRldmljZTsKKy0gICAgICAgICAgICBrZXlib2FyZCA9IGRldmljZS5nZXRf YXNzb2NpYXRlZF9kZXZpY2UoKTsKKy0gICAgICAgIH0KKysgICAgICAgIC8vbV9lbnRyeS5ncmFi X2ZvY3VzKCk7CisgCisgICAgICAgICBzaG93X2NhdGVnb3J5X2xpc3QoKTsKKyAgICAgICAgIG1f ZW50cnkuc2V0X2FjdGl2YXRlc19kZWZhdWx0KHRydWUpOworICAgICAgICAgc2hvd19hbGwoKTsK KyAKKy0gICAgICAgIEdkay5HcmFiU3RhdHVzIHN0YXR1czsKKy0gICAgICAgIC8vIEdyYWIgYWxs IGtleWJvYXJkIGV2ZW50cworLSAgICAgICAgc3RhdHVzID0ga2V5Ym9hcmQuZ3JhYihnZXRfd2lu ZG93KCksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkay5HcmFiT3duZXJzaGlw Lk5PTkUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdkay5FdmVudE1hc2suS0VZX1BSRVNTX01BU0sgfAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGsuRXZlbnRNYXNrLktFWV9SRUxFQVNFX01B U0ssCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdkay5DVVJSRU5UX1RJTUUpOworLSAgICAgICAgaWYgKHN0YXR1 cyAhPSBHZGsuR3JhYlN0YXR1cy5TVUNDRVNTKQorLSAgICAgICAgICAgIHdhcm5pbmcoIkdyYWIg a2V5Ym9hcmQgZmFpbGVkISBzdGF0dXMgPSAlZCIsIHN0YXR1cyk7CistICAgICAgICAvLyBHcmFi IGFsbCBwb2ludGVyIGV2ZW50cworLSAgICAgICAgc3RhdHVzID0gcG9pbnRlci5ncmFiKGdldF93 aW5kb3coKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGsuR3JhYk93bmVyc2hp cC5OT05FLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR2RrLkV2ZW50TWFzay5CVVRUT05fUFJFU1NfTUFTSyB8Cist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrLkV2ZW50TWFzay5CVVRUT05fUkVMRUFT RV9NQVNLLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR2RrLkNVUlJFTlRfVElNRSk7CistICAgICAgICBpZiAoc3Rh dHVzICE9IEdkay5HcmFiU3RhdHVzLlNVQ0NFU1MpCistICAgICAgICAgICAgd2FybmluZygiR3Jh YiBwb2ludGVyIGZhaWxlZCEgc3RhdHVzID0gJWQiLCBzdGF0dXMpOworLQorICAgICAgICAgbV9s b29wID0gbmV3IEdMaWIuTWFpbkxvb3AoKTsKKy0gICAgICAgIG1fdGl0bGUuc2V0X2xvb3AobV9s b29wKTsKKyAgICAgICAgIG1fbG9vcC5ydW4oKTsKKy0gICAgICAgIG1fdGl0bGUudW5zZXRfbG9v cCgpOworICAgICAgICAgbV9sb29wID0gbnVsbDsKKyAKKy0gICAgICAgIGtleWJvYXJkLnVuZ3Jh YihHZGsuQ1VSUkVOVF9USU1FKTsKKy0gICAgICAgIHBvaW50ZXIudW5ncmFiKEdkay5DVVJSRU5U X1RJTUUpOworLQorICAgICAgICAgLy8gTmVlZCBmb2N1cy1vdXQgb24gR3RrLkVudHJ5IHRvIHNl bmQgdGhlIGVtb2ppIHRvIGFwcGxpY2F0aW9ucy4KKyAgICAgICAgIEdkay5FdmVudCBmZXZlbnQg PSBuZXcgR2RrLkV2ZW50KEdkay5FdmVudFR5cGUuRk9DVVNfQ0hBTkdFKTsKKyAgICAgICAgIGZl dmVudC5mb2N1c19jaGFuZ2UuaW4gPSAwOworICAgICAgICAgZmV2ZW50LmZvY3VzX2NoYW5nZS53 aW5kb3cgID0gZ2V0X3dpbmRvdygpOworICAgICAgICAgbV9lbnRyeS5zZW5kX2ZvY3VzX2NoYW5n ZShmZXZlbnQpOworKyAgICAgICAgZmV2ZW50LmZvY3VzX2NoYW5nZS53aW5kb3cgID0gbnVsbDsK KyAKKyAgICAgICAgIGhpZGUoKTsKKyAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgc3dpdGNoZXIg aXMgaGlkZGVuIGJlZm9yZSByZXR1cm5pbmcgZnJvbSB0aGlzIGZ1bmN0aW9uLgorQEAgLTEyODgs MjAgKzEyMzAsMjMgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuV2luZG93IHsKKyAgICAgfQor IAorIAorLSAgICBwdWJsaWMgdm9pZCBzZXRfZW1vamlfZm9udChzdHJpbmcgZW1vamlfZm9udCkg eworLSAgICAgICAgbV9lbW9qaV9mb250ID0gZW1vamlfZm9udDsKKy0gICAgfQorLQorLQorLSAg ICBwdWJsaWMgdm9pZCBzZXRfZmF2b3JpdGVzKHN0cmluZ1tdPyB1bm93bmVkX2Zhdm9yaXRlcykg eworLSAgICAgICAgbV9mYXZvcml0ZXMgPSB7fTsKKy0gICAgICAgIGZvcmVhY2ggKHN0cmluZyBm YXZvcml0ZSBpbiB1bm93bmVkX2Zhdm9yaXRlcykgeworLSAgICAgICAgICAgIG1fZmF2b3JpdGVz ICs9IGZhdm9yaXRlOworLSAgICAgICAgfQorKyAgICBwdWJsaWMgdm9pZCBwcmVzZW50X2NlbnRy YWxpemUoKSB7CisrICAgICAgICBwcmVzZW50KCk7CisrICAgICAgICBtX2VudHJ5LnNldF9hY3Rp dmF0ZXNfZGVmYXVsdCh0cnVlKTsKKysgICAgICAgIEd0ay5BbGxvY2F0aW9uIGFsbG9jYXRpb247 CisrICAgICAgICBnZXRfYWxsb2NhdGlvbihvdXQgYWxsb2NhdGlvbik7CisrICAgICAgICBHZGsu U2NyZWVuIHNjcmVlbiA9IEdkay5TY3JlZW4uZ2V0X2RlZmF1bHQoKTsKKysgICAgICAgIGludCBt b25pdG9yX251bSA9IHNjcmVlbi5nZXRfbW9uaXRvcl9hdF93aW5kb3coZ2V0X3dpbmRvdygpKTsK KysgICAgICAgIEdkay5SZWN0YW5nbGUgbW9uaXRvcl9hcmVhOworKyAgICAgICAgc2NyZWVuLmdl dF9tb25pdG9yX2dlb21ldHJ5KG1vbml0b3JfbnVtLCBvdXQgbW9uaXRvcl9hcmVhKTsKKysgICAg ICAgIGludCB4ID0gKG1vbml0b3JfYXJlYS54ICsgbW9uaXRvcl9hcmVhLndpZHRoIC0gYWxsb2Nh dGlvbi53aWR0aCkvMjsKKysgICAgICAgIGludCB5ID0gKG1vbml0b3JfYXJlYS55ICsgbW9uaXRv cl9hcmVhLmhlaWdodAorKyAgICAgICAgICAgICAgICAgLSBhbGxvY2F0aW9uLmhlaWdodCkvMjsK KysgICAgICAgIG1vdmUoeCwgeSk7CisgICAgIH0KKyAKKyAKKy0gICAgcHVibGljIGJvb2wgaGFz X2xvYWRlZF9lbW9qaV9kaWN0KCkgeworKyAgICBwdWJsaWMgc3RhdGljIGJvb2wgaGFzX2xvYWRl ZF9lbW9qaV9kaWN0KCkgeworICAgICAgICAgaWYgKG1fZW1vamlfdG9fZGF0YV9kaWN0ID09IG51 bGwpCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgR0xpYi5MaXN0IGtleXMg PSBtX2Vtb2ppX3RvX2RhdGFfZGljdC5nZXRfa2V5cygpOworQEAgLTEzMTEsMTggKzEyNTYsMjYg QEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuV2luZG93IHsKKyAgICAgfQorIAorIAorLSAgICBw dWJsaWMgdm9pZCBzZXRfYW5ub3RhdGlvbl9sYW5nKHN0cmluZyBsYW5nKSB7CisrICAgIHB1Ymxp YyBzdGF0aWMgdm9pZCBzZXRfYW5ub3RhdGlvbl9sYW5nKHN0cmluZz8gbGFuZykgeworKyAgICAg ICAgaWYgKGxhbmcgPT0gbnVsbCB8fCBsYW5nID09ICIiKQorKyAgICAgICAgICAgIGxhbmcgPSAi ZW4iOworICAgICAgICAgaWYgKG1fY3VycmVudF9sYW5nX2lkID09IGxhbmcpCisgICAgICAgICAg ICAgcmV0dXJuOworLSAgICAgICAgaWYgKG1fcmVsb2FkX2Vtb2ppX2RpY3RfaWQgPiAwKSB7Cist ICAgICAgICAgICAgR0xpYi5Tb3VyY2UucmVtb3ZlKG1fcmVsb2FkX2Vtb2ppX2RpY3RfaWQpOwor LSAgICAgICAgICAgIG1fcmVsb2FkX2Vtb2ppX2RpY3RfaWQgPSAwOworLSAgICAgICAgfQorICAg ICAgICAgbV9jdXJyZW50X2xhbmdfaWQgPSBsYW5nOworLSAgICAgICAgbV9yZWxvYWRfZW1vamlf ZGljdF9pZCA9IEdMaWIuSWRsZS5hZGQoKCkgPT4geworLSAgICAgICAgICAgIHJlbG9hZF9lbW9q aV9kaWN0KCk7CistICAgICAgICAgICAgbV9yZWxvYWRfZW1vamlfZGljdF9pZCA9IDA7CistICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgfSk7CisrICAgICAgICByZWxvYWRfZW1v amlfZGljdCgpOworKyAgICB9CisrCisrCisrICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfZW1v amlfZm9udChzdHJpbmc/IGVtb2ppX2ZvbnQpIHsKKysgICAgICAgIHJldHVybl9pZl9mYWlsKGVt b2ppX2ZvbnQgIT0gbnVsbCAmJiBlbW9qaV9mb250ICE9ICIiKTsKKysgICAgICAgIG1fZW1vamlf Zm9udCA9IGVtb2ppX2ZvbnQ7CisrICAgIH0KKysKKysKKysgICAgcHVibGljIHN0YXRpYyB2b2lk IHNldF9mYXZvcml0ZXMoc3RyaW5nW10/IHVub3duZWRfZmF2b3JpdGVzKSB7CisrICAgICAgICBt X2Zhdm9yaXRlcyA9IHt9OworKyAgICAgICAgZm9yZWFjaCAoc3RyaW5nIGZhdm9yaXRlIGluIHVu b3duZWRfZmF2b3JpdGVzKSB7CisrICAgICAgICAgICAgbV9mYXZvcml0ZXMgKz0gZmF2b3JpdGU7 CisrICAgICAgICB9CisgICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVyYXBw LnZhbGEgYi91aS9ndGszL2Vtb2ppZXJhcHAudmFsYQoraW5kZXggZWFjOGQ2YS4uNDU2NGEyNSAx MDA2NDQKKy0tLSBhL3VpL2d0azMvZW1vamllcmFwcC52YWxhCisrKysgYi91aS9ndGszL2Vtb2pp ZXJhcHAudmFsYQorQEAgLTI0LDcgKzI0LDEwIEBAIHN0cmluZyBlbW9qaV9mb250ID0gbnVsbDsK KyBzdHJpbmcgYW5ub3RhdGlvbl9sYW5nID0gbnVsbDsKKyAKKyBwdWJsaWMgY2xhc3MgRW1vamlB cHBsaWNhdGlvbiA6IEFwcGxpY2F0aW9uIHsKKy0gICAgcHJpdmF0ZSBJQnVzRW1vamllciBtX2Vt b2ppZXIgPSBuZXcgSUJ1c0Vtb2ppZXIoKTsKKysgICAgcHJpdmF0ZSBJQnVzRW1vamllcj8gbV9l bW9qaWVyOworKyAgICBHTGliLlNldHRpbmdzIG1fc2V0dGluZ3NfZW1vamkgPQorKyAgICAgICAg ICAgIG5ldyBHTGliLlNldHRpbmdzKCJvcmcuZnJlZWRlc2t0b3AuaWJ1cy5wYW5lbC5lbW9qaSIp OworKworIAorICAgICBwcml2YXRlIEVtb2ppQXBwbGljYXRpb24oKSB7CisgICAgICAgICBPYmpl Y3QoYXBwbGljYXRpb25faWQ6ICJvcmcuZnJlZWRlc2t0b3AuaWJ1cy5wYW5lbC5lbW9qaWVyIiwK K0BAIC0zNCw0MSArMzcsMjQgQEAgcHVibGljIGNsYXNzIEVtb2ppQXBwbGljYXRpb24gOiBBcHBs aWNhdGlvbiB7CisgCisgCisgICAgIHByaXZhdGUgdm9pZCBzaG93X2RpYWxvZyhBcHBsaWNhdGlv bkNvbW1hbmRMaW5lIGNvbW1hbmRfbGluZSkgeworLSAgICAgICAgR2RrLkV2ZW50IGV2ZW50ID0g bmV3IEdkay5FdmVudChHZGsuRXZlbnRUeXBlLktFWV9QUkVTUyk7CistICAgICAgICB2YXIgZGlz cGxheSA9IEdkay5EaXNwbGF5LmdldF9kZWZhdWx0KCk7CistICAgICAgICB2YXIgZGV2aWNlX21h bmFnZXIgPSBkaXNwbGF5LmdldF9kZXZpY2VfbWFuYWdlcigpOworLSAgICAgICAgdmFyIGRldmlj ZSA9IGRldmljZV9tYW5hZ2VyLmxpc3RfZGV2aWNlcyhHZGsuRGV2aWNlVHlwZS5NQVNURVIpLmRh dGE7CistICAgICAgICBldmVudC5zZXRfZGV2aWNlKGRldmljZSk7CistICAgICAgICBzdHJpbmcg ZW1vamkgPSBtX2Vtb2ppZXIucnVuKGV2ZW50LCAiIik7CisrICAgICAgICBtX2Vtb2ppZXIgPSBu ZXcgSUJ1c0Vtb2ppZXIoKTsKKysgICAgICAgIHN0cmluZyBlbW9qaSA9IG1fZW1vamllci5ydW4o IiIpOworICAgICAgICAgaWYgKGVtb2ppID09IG51bGwpIHsKKy0gICAgICAgICAgICBtX2Vtb2pp ZXIucmVzZXQoKTsKKysgICAgICAgICAgICBtX2Vtb2ppZXIgPSBudWxsOworICAgICAgICAgICAg IGNvbW1hbmRfbGluZS5wcmludCgiJXNcbiIsIF8oIkNhbmNlbGVkIHRvIGNob29zZSBhbiBlbW9q aS4iKSk7CisgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQorICAgICAgICAgR3RrLkNs aXBib2FyZCBjbGlwYm9hcmQgPSBHdGsuQ2xpcGJvYXJkLmdldChHZGsuU0VMRUNUSU9OX0NMSVBC T0FSRCk7CisgICAgICAgICBjbGlwYm9hcmQuc2V0X3RleHQoZW1vamksIC0xKTsKKyAgICAgICAg IGNsaXBib2FyZC5zdG9yZSgpOworLSAgICAgICAgbV9lbW9qaWVyLnJlc2V0KCk7CisrICAgICAg ICBtX2Vtb2ppZXIgPSBudWxsOworICAgICAgICAgY29tbWFuZF9saW5lLnByaW50KCIlc1xuIiwg XygiQ29waWVkIGFuIGVtb2ppIHRvIHlvdXIgY2xpcGJvYXJkLiIpKTsKKyAgICAgfQorIAorIAor ICAgICBwdWJsaWMgdm9pZCBhY3RpdmF0ZV9kaWFsb2coQXBwbGljYXRpb25Db21tYW5kTGluZSBj b21tYW5kX2xpbmUpIHsKKyAgICAgICAgIHRoaXMuaG9sZCAoKTsKKy0KKy0gICAgICAgIC8vIHNo b3cgZGlhbG9nCistICAgICAgICBpZiAobV9lbW9qaWVyLmhhc19sb2FkZWRfZW1vamlfZGljdCgp KSB7CistICAgICAgICAgICAgc2hvd19kaWFsb2coY29tbWFuZF9saW5lKTsKKy0gICAgICAgIH0g ZWxzZSB7CistICAgICAgICAgICAgbV9lbW9qaWVyLmxvYWRlZF9lbW9qaV9kaWN0LmNvbm5lY3Qo KCkgPT4geworLSAgICAgICAgICAgICAgICAvLyBUaGUgc2lnbmFsIGlzIGNhbGxlZCB3aGVuIHRo ZSBsYW5ndWFnZSBpcyBjaGFuZ2VkLgorLSAgICAgICAgICAgICAgICBpZiAobV9lbW9qaWVyLmlz X3J1bm5pbmcoKSkKKy0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKKy0KKy0gICAgICAgICAg ICAgICAgc2hvd19kaWFsb2coY29tbWFuZF9saW5lKTsKKy0gICAgICAgICAgICB9KTsKKy0gICAg ICAgIH0KKy0KKysgICAgICAgIHNob3dfZGlhbG9nKGNvbW1hbmRfbGluZSk7CisgICAgICAgICB0 aGlzLnJlbGVhc2UgKCk7CisgICAgIH0KKyAKK0BAIC0xMTAsMjIgKzk2LDE4IEBAIHB1YmxpYyBj bGFzcyBFbW9qaUFwcGxpY2F0aW9uIDogQXBwbGljYXRpb24geworICAgICAgICAgICAgIHJldHVy biBQb3NpeC5FWElUX0ZBSUxVUkU7CisgICAgICAgICB9CisgCistICAgICAgICBpZiAoZW1vamlf Zm9udCA9PSBudWxsKSB7CistICAgICAgICAgICAgR0xpYi5TZXR0aW5ncyBzZXR0aW5nc19lbW9q aSA9CistICAgICAgICAgICAgICAgIG5ldyBHTGliLlNldHRpbmdzKCJvcmcuZnJlZWRlc2t0b3Au aWJ1cy5wYW5lbC5lbW9qaSIpOworLSAgICAgICAgICAgIGVtb2ppX2ZvbnQgPSBzZXR0aW5nc19l bW9qaS5nZXRfc3RyaW5nKCJmb250Iik7CisrICAgICAgICBpZiAobV9lbW9qaWVyICE9IG51bGwg JiYgbV9lbW9qaWVyLmlzX3J1bm5pbmcoKSkgeworKyAgICAgICAgICAgIG1fZW1vamllci5wcmVz ZW50X2NlbnRyYWxpemUoKTsKKysgICAgICAgICAgICByZXR1cm4gUG9zaXguRVhJVF9TVUNDRVNT OworICAgICAgICAgfQorIAorLSAgICAgICAgaWYgKGFubm90YXRpb25fbGFuZyA9PSBudWxsKSB7 CistICAgICAgICAgICAgR0xpYi5TZXR0aW5ncyBzZXR0aW5nc19lbW9qaSA9CistICAgICAgICAg ICAgICAgIG5ldyBHTGliLlNldHRpbmdzKCJvcmcuZnJlZWRlc2t0b3AuaWJ1cy5wYW5lbC5lbW9q aSIpOworLSAgICAgICAgICAgIGFubm90YXRpb25fbGFuZyA9IHNldHRpbmdzX2Vtb2ppLmdldF9z dHJpbmcoImxhbmciKTsKKy0gICAgICAgIH0KKysgICAgICAgIGlmIChlbW9qaV9mb250ID09IG51 bGwpCisrICAgICAgICAgICAgZW1vamlfZm9udCA9IG1fc2V0dGluZ3NfZW1vamkuZ2V0X3N0cmlu ZygiZm9udCIpOworKyAgICAgICAgaWYgKGFubm90YXRpb25fbGFuZyA9PSBudWxsKQorKyAgICAg ICAgICAgIGFubm90YXRpb25fbGFuZyA9IG1fc2V0dGluZ3NfZW1vamkuZ2V0X3N0cmluZygibGFu ZyIpOworIAorLSAgICAgICAgaWYgKGVtb2ppX2ZvbnQgIT0gbnVsbCAmJiBlbW9qaV9mb250ICE9 ICIiKQorLSAgICAgICAgICAgIG1fZW1vamllci5zZXRfZW1vamlfZm9udChlbW9qaV9mb250KTsK Ky0gICAgICAgIGlmIChhbm5vdGF0aW9uX2xhbmcgIT0gbnVsbCAmJiBhbm5vdGF0aW9uX2xhbmcg IT0gIiIpCistICAgICAgICAgICAgbV9lbW9qaWVyLnNldF9hbm5vdGF0aW9uX2xhbmcoYW5ub3Rh dGlvbl9sYW5nKTsKKysgICAgICAgIElCdXNFbW9qaWVyLnNldF9hbm5vdGF0aW9uX2xhbmcoYW5u b3RhdGlvbl9sYW5nKTsKKysgICAgICAgIElCdXNFbW9qaWVyLnNldF9lbW9qaV9mb250KGVtb2pp X2ZvbnQpOworIAorICAgICAgICAgYWN0aXZhdGVfZGlhbG9nKGNvbW1hbmRfbGluZSk7CisgCitA QCAtMTU2LDUgKzEzOCw0IEBAIHB1YmxpYyBjbGFzcyBFbW9qaUFwcGxpY2F0aW9uIDogQXBwbGlj YXRpb24geworICAgICAgICAgaW50IHN0YXR1cyA9IGFwcC5ydW4oYXJncyk7CisgICAgICAgICBy ZXR1cm4gc3RhdHVzOworICAgICB9CistCisgfQorZGlmZiAtLWdpdCBhL3VpL2d0azMvaWJ1c2Vt b2ppZGlhbG9nLmggYi91aS9ndGszL2lidXNlbW9qaWRpYWxvZy5oCitpbmRleCAwZjg0YTQ4Li4x NDk5YTNjIDEwMDY0NAorLS0tIGEvdWkvZ3RrMy9pYnVzZW1vamlkaWFsb2cuaAorKysrIGIvdWkv Z3RrMy9pYnVzZW1vamlkaWFsb2cuaAorQEAgLTY5LDcgKzY5LDYgQEAgSUJ1c0Vtb2ppZXIgKiBp YnVzX2Vtb2ppZXJfbmV3ICAgICAgICAgICAgICAgICAgICAodm9pZCk7CisgLyoqCisgICogaWJ1 c19lbW9qaWVyX3J1bjoKKyAgKiBAc2VsZjogQW4gI0lCdXNFbW9qaWVyCistICogQGV2ZW50OiBB biAjR2RrRXZlbnQKKyAgKiBAaW5wdXRfY29udGV4dF9wYXRoOiBBbiBpbnB1dCBjb250ZXh0IHBh dGggb2YgI0lCdXNJbnB1dENvbnRleHQKKyAgKiAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUg Zm9jdXNlZCBhcHBsaWNhdGlvbi4KKyAgKgorQEAgLTc4LDcgKzc3LDYgQEAgSUJ1c0Vtb2ppZXIg KiBpYnVzX2Vtb2ppZXJfbmV3ICAgICAgICAgICAgICAgICAgICAodm9pZCk7CisgICogUmV0dXJu czogQSBzZWxlY3RlZCBlbW9qaSBjaGFyYWN0ZXIuCisgICovCisgZ2NoYXIgKiAgICAgICBpYnVz X2Vtb2ppZXJfcnVuICAgICAgICAgICAgICAgICAgICAoSUJ1c0Vtb2ppZXIqIHNlbGYsCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrRXZlbnQq ICAgIGV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGdjaGFyKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfY29udGV4dF9wYXRoKTsKKyAKK0BAIC0xMTYs NDkgKzExNCw0OSBAQCBnY2hhciAqICAgICAgIGlidXNfZW1vamllcl9nZXRfc2VsZWN0ZWRfc3Ry aW5nICAgIChJQnVzRW1vamllciogc2VsZik7Cisgdm9pZCAgICAgICAgICBpYnVzX2Vtb2ppZXJf cmVzZXQgICAgICAgICAgICAgICAgICAoSUJ1c0Vtb2ppZXIqIHNlbGYpOworIAorIC8qKgorLSAq IGlidXNfZW1vamllcl9zZXRfZW1vamlfZm9udDoKKysgKiBpYnVzX2Vtb2ppZXJfcHJlc2VudF9j ZW50cmFsaXplOgorICAqIEBzZWxmOiBBbiAjSUJ1c0Vtb2ppZXIKKy0gKiBAZW1vamlfZm9udDog Zm9udCBuYW1lIGZvciBlbW9qaSBjaGFyYWN0ZXJzCisgICoKKy0gKiBTZXQgZW1vamkgZm9udCBv biB0aGUgZW1vamkgZGlhbG9nCisrICogTW92ZSB0aGUgd2luZG93IHRvIHRoZSB0b3BsZXZlbCBv biB0aGUgc2NyZWVuIGFuZCBjZW50cmFsaXplIGl0LgorICAqLworLXZvaWQgICAgICAgICAgaWJ1 c19lbW9qaWVyX3NldF9lbW9qaV9mb250ICAgICAgICAgKElCdXNFbW9qaWVyKiBzZWxmLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj aGFyKiBlbW9qaV9mb250KTsKKy0KKy0jaWYgMAorLS8qIFRPRE86IHNldCBjdXN0b21pemVkIGFu bm90YXRpb25zICovCistLyoqCistICogaWJ1c19lbW9qaWVyX3NldF9mYXZvcml0ZXM6CistICog QHNlbGY6IEFuICNJQnVzRW1vamllcgorLSAqIEBmYXZvcml0ZXM6IChhcnJheSBsZW5ndGg9ZmF2 b3JpdGVzX2xlbmd0aCk6IEEgY3VzdG9tIGVtb2ppIGxpc3QuCistICogQGZhdm9yaXRlc19sZW5n dGg6IEEgbGVuZ3RoIG9mIEBmYXZvcml0ZXMKKy0gKgorLSAqIFNldCBlbW9qaSBmb250IG9uIHRo ZSBlbW9qaSBkaWFsb2cKKy0gKi8KKy12b2lkICAgICAgICAgIGlidXNfZW1vamllcl9zZXRfZmF2 b3JpdGVzICAgICAgICAgIChJQnVzRW1vamllciogc2VsZiwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2hhcioqICAgICAgZmF2b3JpdGVzLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmYXZvcml0ZXNfbGVuZ3RoKTsKKy0jZW5kaWYKKyt2b2lkICAgICAgICAgIGlidXNfZW1v amllcl9wcmVzZW50X2NlbnRyYWxpemUgICAgIChJQnVzRW1vamllciogc2VsZik7CisgCisgLyoq CisgICogaWJ1c19lbW9qaWVyX2hhc19sb2FkZWRfZW1vamlfZGljdDoKKy0gKiBAc2VsZjogQW4g I0lCdXNFbW9qaWVyCisgICoKKyAgKiBSZXR1cm5zOiAlVFJVRSBpZiB0aGUgZW1vamkgZGljdCBp cyBsb2FkZWQsIG90aGVyd2lzZSAlRkFMU0UuCisgICovCistZ2Jvb2xlYW4gICAgICBpYnVzX2Vt b2ppZXJfaGFzX2xvYWRlZF9lbW9qaV9kaWN0ICAoSUJ1c0Vtb2ppZXIqIHNlbGYpOworK2dib29s ZWFuICAgICAgaWJ1c19lbW9qaWVyX2hhc19sb2FkZWRfZW1vamlfZGljdCAgKHZvaWQpOworIAor IC8qKgorICAqIGlidXNfZW1vamllcl9zZXRfYW5ub3RhdGlvbl9sYW5nOgorLSAqIEBzZWxmOiBB biAjSUJ1c0Vtb2ppZXIKKyAgKiBAbGFuZzogQSBsYW5nYXVnZSBpZCBmb3IgZW1vamkgYW5ub3Rh dGlvbnMuCisgICoKKyAgKiBTZXQgYSBsYW5ndWFnZSBpZCBmb3IgZW1vamkgYW5ub3RhdGlvbnMu ICNJQnVzRW1vamllciB3aWxsIGxvYWQKKyAgKiAkUEtHREFUQURJUi9kaWN0cy9lbW9qaS1AbGFu Zy5kaWN0LiBUaGUgZGVmYXVsdCBpcyAiZW4iLgorICAqLworLXZvaWQgICAgICAgICAgaWJ1c19l bW9qaWVyX3NldF9hbm5vdGF0aW9uX2xhbmcgICAgKElCdXNFbW9qaWVyKiBzZWxmLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFy KiBsYW5nKTsKKyt2b2lkICAgICAgICAgIGlidXNfZW1vamllcl9zZXRfYW5ub3RhdGlvbl9sYW5n ICAgIChjb25zdCBnY2hhciogbGFuZyk7CisgCisrLyoqCisrICogaWJ1c19lbW9qaWVyX3NldF9l bW9qaV9mb250OgorKyAqIEBlbW9qaV9mb250OiBmb250IG5hbWUgZm9yIGVtb2ppIGNoYXJhY3Rl cnMKKysgKgorKyAqIFNldCBlbW9qaSBmb250IG9uIHRoZSBlbW9qaSBkaWFsb2cKKysgKi8KKyt2 b2lkICAgICAgICAgIGlidXNfZW1vamllcl9zZXRfZW1vamlfZm9udCAgICAgICAgIChjb25zdCBn Y2hhciogZW1vamlfZm9udCk7CisrCisrI2lmIDAKKysvKiBUT0RPOiBzZXQgY3VzdG9taXplZCBh bm5vdGF0aW9ucyAqLworKy8qKgorKyAqIGlidXNfZW1vamllcl9zZXRfZmF2b3JpdGVzOgorKyAq IEBmYXZvcml0ZXM6IChhcnJheSBsZW5ndGg9ZmF2b3JpdGVzX2xlbmd0aCk6IEEgY3VzdG9tIGVt b2ppIGxpc3QuCisrICogQGZhdm9yaXRlc19sZW5ndGg6IEEgbGVuZ3RoIG9mIEBmYXZvcml0ZXMK KysgKgorKyAqIFNldCBlbW9qaSBmb250IG9uIHRoZSBlbW9qaSBkaWFsb2cKKysgKi8KKyt2b2lk ICAgICAgICAgIGlidXNfZW1vamllcl9zZXRfZmF2b3JpdGVzICAgICAgICAgIChnY2hhcioqICAg ICAgZmF2b3JpdGVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmYXZvcml0ZXNfbGVuZ3RoKTsKKysjZW5kaWYKKyBHX0VORF9E RUNMUworICNlbmRpZgorZGlmZiAtLWdpdCBhL3VpL2d0azMvcGFuZWwudmFsYSBiL3VpL2d0azMv cGFuZWwudmFsYQoraW5kZXggNzM1MGRjYy4uMjM3NTczNCAxMDA2NDQKKy0tLSBhL3VpL2d0azMv cGFuZWwudmFsYQorKysrIGIvdWkvZ3RrMy9wYW5lbC52YWxhCitAQCAtNzMsNyArNzMsOCBAQCBj bGFzcyBQYW5lbCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAgICAgcHJpdmF0ZSBDYW5kaWRhdGVQ YW5lbCBtX2NhbmRpZGF0ZV9wYW5lbDsKKyAgICAgcHJpdmF0ZSBTd2l0Y2hlciBtX3N3aXRjaGVy OworICAgICBwcml2YXRlIHVpbnQgbV9zd2l0Y2hlcl9mb2N1c19zZXRfZW5naW5lX2lkOworLSAg ICBwcml2YXRlIElCdXNFbW9qaWVyIG1fZW1vamllcjsKKysgICAgcHJpdmF0ZSBJQnVzRW1vamll cj8gbV9lbW9qaWVyOworKyAgICBwcml2YXRlIHVpbnQgbV9lbW9qaWVyX3NldF9lbW9qaV9sYW5n X2lkOworICAgICBwcml2YXRlIHVpbnQgbV9lbW9qaWVyX2ZvY3VzX2NvbW1pdF90ZXh0X2lkOwor ICAgICBwcml2YXRlIFByb3BlcnR5TWFuYWdlciBtX3Byb3BlcnR5X21hbmFnZXI7CisgICAgIHBy aXZhdGUgUHJvcGVydHlQYW5lbCBtX3Byb3BlcnR5X3BhbmVsOworQEAgLTEzNyw3ICsxMzgsNiBA QCBjbGFzcyBQYW5lbCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAgICAgICAgICAgICBtX3N3aXRj aGVyLnNldF9wb3B1cF9kZWxheV90aW1lKCh1aW50KSBtX3N3aXRjaGVyX2RlbGF5X3RpbWUpOwor ICAgICAgICAgfQorIAorLSAgICAgICAgbV9lbW9qaWVyID0gbmV3IElCdXNFbW9qaWVyKCk7Cisg ICAgICAgICBiaW5kX2Vtb2ppX3Nob3J0Y3V0KCk7CisgCisgICAgICAgICBtX3Byb3BlcnR5X21h bmFnZXIgPSBuZXcgUHJvcGVydHlNYW5hZ2VyKCk7CitAQCAtNTk1LDcgKzU5NSw3IEBAIGNsYXNz IFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgeworICAgICAgICAgICAgIHdhcm5pbmcoIk5vIGNv bmZpZyBlbW9qaTpmb250LiIpOworICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0KKy0g ICAgICAgIG1fZW1vamllci5zZXRfZW1vamlfZm9udChlbW9qaV9mb250KTsKKysgICAgICAgIElC dXNFbW9qaWVyLnNldF9lbW9qaV9mb250KGVtb2ppX2ZvbnQpOworIAorICAgICAgICAgYm9vbCB1 c2VfY3VzdG9tX2ZvbnQgPSBtX3NldHRpbmdzX3BhbmVsLmdldF9ib29sZWFuKCJ1c2UtY3VzdG9t LWZvbnQiKTsKKyAKK0BAIC03NjYsMTEgKzc2NiwyMCBAQCBjbGFzcyBQYW5lbCA6IElCdXMuUGFu ZWxTZXJ2aWNlIHsKKyAgICAgfQorIAorICAgICBwcml2YXRlIHZvaWQgc2V0X2Vtb2ppX2Zhdm9y aXRlcygpIHsKKy0gICAgICAgIG1fZW1vamllci5zZXRfZmF2b3JpdGVzKG1fc2V0dGluZ3NfZW1v amkuZ2V0X3N0cnYoImZhdm9yaXRlcyIpKTsKKysgICAgICAgIElCdXNFbW9qaWVyLnNldF9mYXZv cml0ZXMobV9zZXR0aW5nc19lbW9qaS5nZXRfc3RydigiZmF2b3JpdGVzIikpOworICAgICB9Cisg CisgICAgIHByaXZhdGUgdm9pZCBzZXRfZW1vamlfbGFuZygpIHsKKy0gICAgICAgIG1fZW1vamll ci5zZXRfYW5ub3RhdGlvbl9sYW5nKG1fc2V0dGluZ3NfZW1vamkuZ2V0X3N0cmluZygibGFuZyIp KTsKKysgICAgICAgIGlmIChtX2Vtb2ppZXJfc2V0X2Vtb2ppX2xhbmdfaWQgPiAwKSB7CisrICAg ICAgICAgICAgR0xpYi5Tb3VyY2UucmVtb3ZlKG1fZW1vamllcl9zZXRfZW1vamlfbGFuZ19pZCk7 CisrICAgICAgICAgICAgbV9lbW9qaWVyX3NldF9lbW9qaV9sYW5nX2lkID0gMDsKKysgICAgICAg IH0KKysgICAgICAgIG1fZW1vamllcl9zZXRfZW1vamlfbGFuZ19pZCA9IEdMaWIuSWRsZS5hZGQo KCkgPT4geworKyAgICAgICAgICAgIElCdXNFbW9qaWVyLnNldF9hbm5vdGF0aW9uX2xhbmcoCisr ICAgICAgICAgICAgICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLmdldF9zdHJpbmcoImxhbmciKSk7 CisrICAgICAgICAgICAgbV9lbW9qaWVyX3NldF9lbW9qaV9sYW5nX2lkID0gMDsKKysgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICB9KTsKKyAgICAgfQorIAorICAgICBwcml2YXRl IGludCBjb21wYXJlX3ZlcnNpb25zKHN0cmluZyB2ZXJzaW9uMSwgc3RyaW5nIHZlcnNpb24yKSB7 CitAQCAtOTg0LDE1ICs5OTMsMjQgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7 CisgICAgICAgICB9CisgICAgIH0KKyAKKy0gICAgcHJpdmF0ZSB2b2lkIGhhbmRsZV9lbW9qaV90 eXBpbmcoR2RrLkV2ZW50IGV2ZW50KSB7CistICAgICAgICBpZiAobV9lbW9qaWVyLmlzX3J1bm5p bmcoKSkKKy0gICAgICAgICAgICByZXR1cm47CistICAgICAgICBzdHJpbmcgZW1vamkgPSBtX2Vt b2ppZXIucnVuKGV2ZW50LCBtX3JlYWxfY3VycmVudF9jb250ZXh0X3BhdGgpOworLSAgICAgICAg aWYgKGVtb2ppID09IG51bGwpCisrICAgIHByaXZhdGUgdm9pZCBzaG93X2Vtb2ppZXIoKSB7Cisr ICAgICAgICBtX2Vtb2ppZXIgPSBuZXcgSUJ1c0Vtb2ppZXIoKTsKKysgICAgICAgIHN0cmluZyBl bW9qaSA9IG1fZW1vamllci5ydW4obV9yZWFsX2N1cnJlbnRfY29udGV4dF9wYXRoKTsKKysgICAg ICAgIGlmIChlbW9qaSA9PSBudWxsKSB7CisrICAgICAgICAgICAgbV9lbW9qaWVyID0gbnVsbDsK KyAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisgICAgICAgICB0aGlzLmVtb2ppZXJf Zm9jdXNfY29tbWl0KCk7CisgICAgIH0KKyAKKysgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZV9lbW9q aV90eXBpbmcoR2RrLkV2ZW50IGV2ZW50KSB7CisrICAgICAgICBpZiAobV9lbW9qaWVyICE9IG51 bGwgJiYgbV9lbW9qaWVyLmlzX3J1bm5pbmcoKSkgeworKyAgICAgICAgICAgIG1fZW1vamllci5w cmVzZW50X2NlbnRyYWxpemUoKTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9Cisr ICAgICAgICBzaG93X2Vtb2ppZXIoKTsKKysgICAgfQorKworICAgICBwcml2YXRlIHZvaWQgcnVu X3ByZWxvYWRfZW5naW5lcyhJQnVzLkVuZ2luZURlc2NbXSBlbmdpbmVzLCBpbnQgaW5kZXgpIHsK KyAgICAgICAgIHN0cmluZ1tdIG5hbWVzID0ge307CisgCitAQCAtMTM2MSwyOSArMTM3OSwzNCBA QCBjbGFzcyBQYW5lbCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAgICAgICAgIGlmIChzZWxlY3Rl ZF9lbmdpbmUgPT0gbnVsbCAmJgorICAgICAgICAgICAgIHByZXZfY29udGV4dF9wYXRoICE9ICIi ICYmCisgICAgICAgICAgICAgbV9zd2l0Y2hlci5pc19ydW5uaW5nKCkpIHsKKy0gICAgICAgICAg ICBpZiAobV9zd2l0Y2hlcl9mb2N1c19zZXRfZW5naW5lX2lkID4gMCkgeworKyAgICAgICAgICAg IHZhciBjb250ZXh0ID0gR0xpYi5NYWluQ29udGV4dC5kZWZhdWx0KCk7CisrICAgICAgICAgICAg aWYgKG1fc3dpdGNoZXJfZm9jdXNfc2V0X2VuZ2luZV9pZCA+IDAgJiYKKysgICAgICAgICAgICAg ICAgY29udGV4dC5maW5kX3NvdXJjZV9ieV9pZChtX3N3aXRjaGVyX2ZvY3VzX3NldF9lbmdpbmVf aWQpCisrICAgICAgICAgICAgICAgICAgICAgICAgIT0gbnVsbCkgeworICAgICAgICAgICAgICAg ICBHTGliLlNvdXJjZS5yZW1vdmUobV9zd2l0Y2hlcl9mb2N1c19zZXRfZW5naW5lX2lkKTsKKyAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgbV9zd2l0Y2hlcl9mb2N1c19zZXRfZW5naW5lX2lk ID0gR0xpYi5UaW1lb3V0LmFkZCgxMDAsICgpID0+IHsKKyAgICAgICAgICAgICAgICAgLy8gZm9j dXNfaW4gaXMgY29tbWluZyBiZWZvcmUgc3dpdGNoZXIgcmV0dXJucworICAgICAgICAgICAgICAg ICBzd2l0Y2hlcl9mb2N1c19zZXRfZW5naW5lX3JlYWwoKTsKKy0gICAgICAgICAgICAgICAgaWYg KG1fc3dpdGNoZXJfZm9jdXNfc2V0X2VuZ2luZV9pZCA+IDApIHsKKy0gICAgICAgICAgICAgICAg ICAgIEdMaWIuU291cmNlLnJlbW92ZShtX3N3aXRjaGVyX2ZvY3VzX3NldF9lbmdpbmVfaWQpOwor LSAgICAgICAgICAgICAgICAgICAgbV9zd2l0Y2hlcl9mb2N1c19zZXRfZW5naW5lX2lkID0gLTE7 CistICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgbV9zd2l0Y2hlcl9mb2N1c19z ZXRfZW5naW5lX2lkID0gLTE7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICAgICB9KTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgaWYgKHN3aXRjaGVy X2ZvY3VzX3NldF9lbmdpbmVfcmVhbCgpKSB7CistICAgICAgICAgICAgICAgIGlmIChtX3N3aXRj aGVyX2ZvY3VzX3NldF9lbmdpbmVfaWQgPiAwKSB7CisrICAgICAgICAgICAgICAgIHZhciBjb250 ZXh0ID0gR0xpYi5NYWluQ29udGV4dC5kZWZhdWx0KCk7CisrICAgICAgICAgICAgICAgIGlmICht X3N3aXRjaGVyX2ZvY3VzX3NldF9lbmdpbmVfaWQgPiAwICYmCisrICAgICAgICAgICAgICAgICAg ICBjb250ZXh0LmZpbmRfc291cmNlX2J5X2lkKG1fc3dpdGNoZXJfZm9jdXNfc2V0X2VuZ2luZV9p ZCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gbnVsbCkgeworICAgICAgICAgICAg ICAgICAgICAgR0xpYi5Tb3VyY2UucmVtb3ZlKG1fc3dpdGNoZXJfZm9jdXNfc2V0X2VuZ2luZV9p ZCk7CistICAgICAgICAgICAgICAgICAgICBtX3N3aXRjaGVyX2ZvY3VzX3NldF9lbmdpbmVfaWQg PSAtMTsKKyAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBtX3N3aXRjaGVyX2Zv Y3VzX3NldF9lbmdpbmVfaWQgPSAtMTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAg IH0KKyAKKyAgICAgcHJpdmF0ZSBib29sIGVtb2ppZXJfZm9jdXNfY29tbWl0X3JlYWwoKSB7Cisr ICAgICAgICBpZiAobV9lbW9qaWVyID09IG51bGwpCisrICAgICAgICAgICAgcmV0dXJuIHRydWU7 CisgICAgICAgICBzdHJpbmcgc2VsZWN0ZWRfc3RyaW5nID0gbV9lbW9qaWVyLmdldF9zZWxlY3Rl ZF9zdHJpbmcoKTsKKyAgICAgICAgIHN0cmluZyBwcmV2X2NvbnRleHRfcGF0aCA9IG1fZW1vamll ci5nZXRfaW5wdXRfY29udGV4dF9wYXRoKCk7CisgICAgICAgICBpZiAoc2VsZWN0ZWRfc3RyaW5n ICE9IG51bGwgJiYKK0BAIC0xMzkxLDcgKzE0MTQsNyBAQCBjbGFzcyBQYW5lbCA6IElCdXMuUGFu ZWxTZXJ2aWNlIHsKKyAgICAgICAgICAgICBwcmV2X2NvbnRleHRfcGF0aCA9PSBtX2N1cnJlbnRf Y29udGV4dF9wYXRoKSB7CisgICAgICAgICAgICAgSUJ1cy5UZXh0IHRleHQgPSBuZXcgSUJ1cy5U ZXh0LmZyb21fc3RyaW5nKHNlbGVjdGVkX3N0cmluZyk7CisgICAgICAgICAgICAgY29tbWl0X3Rl eHQodGV4dCk7CistICAgICAgICAgICAgbV9lbW9qaWVyLnJlc2V0KCk7CisrICAgICAgICAgICAg bV9lbW9qaWVyID0gbnVsbDsKKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgIH0K KyAKK0BAIC0xMzk5LDEyICsxNDIyLDE3IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZp Y2UgeworICAgICB9CisgCisgICAgIHByaXZhdGUgdm9pZCBlbW9qaWVyX2ZvY3VzX2NvbW1pdCgp IHsKKysgICAgICAgIGlmIChtX2Vtb2ppZXIgPT0gbnVsbCkKKysgICAgICAgICAgICByZXR1cm47 CisgICAgICAgICBzdHJpbmcgc2VsZWN0ZWRfc3RyaW5nID0gbV9lbW9qaWVyLmdldF9zZWxlY3Rl ZF9zdHJpbmcoKTsKKyAgICAgICAgIHN0cmluZyBwcmV2X2NvbnRleHRfcGF0aCA9IG1fZW1vamll ci5nZXRfaW5wdXRfY29udGV4dF9wYXRoKCk7CisgICAgICAgICBpZiAoc2VsZWN0ZWRfc3RyaW5n ID09IG51bGwgJiYKKyAgICAgICAgICAgICBwcmV2X2NvbnRleHRfcGF0aCAhPSAiIiAmJgorICAg ICAgICAgICAgIG1fZW1vamllci5pc19ydW5uaW5nKCkpIHsKKy0gICAgICAgICAgICBpZiAobV9l bW9qaWVyX2ZvY3VzX2NvbW1pdF90ZXh0X2lkID4gMCkgeworKyAgICAgICAgICAgIHZhciBjb250 ZXh0ID0gR0xpYi5NYWluQ29udGV4dC5kZWZhdWx0KCk7CisrICAgICAgICAgICAgaWYgKG1fZW1v amllcl9mb2N1c19jb21taXRfdGV4dF9pZCA+IDAgJiYKKysgICAgICAgICAgICAgICAgY29udGV4 dC5maW5kX3NvdXJjZV9ieV9pZChtX2Vtb2ppZXJfZm9jdXNfY29tbWl0X3RleHRfaWQpCisrICAg ICAgICAgICAgICAgICAgICAgICAgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICBHTGliLlNv dXJjZS5yZW1vdmUobV9lbW9qaWVyX2ZvY3VzX2NvbW1pdF90ZXh0X2lkKTsKKyAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgbV9lbW9qaWVyX2ZvY3VzX2NvbW1pdF90ZXh0X2lkID0gR0xpYi5U aW1lb3V0LmFkZCgxMDAsICgpID0+IHsKK0BAIC0xNDE1LDEwICsxNDQzLDEzIEBAIGNsYXNzIFBh bmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgeworICAgICAgICAgICAgIH0pOworICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICBpZiAoZW1vamllcl9mb2N1c19jb21taXRfcmVhbCgpKSB7Cist ICAgICAgICAgICAgICAgIGlmIChtX2Vtb2ppZXJfZm9jdXNfY29tbWl0X3RleHRfaWQgPiAwKSB7 CisrICAgICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gR0xpYi5NYWluQ29udGV4dC5kZWZhdWx0 KCk7CisrICAgICAgICAgICAgICAgIGlmIChtX2Vtb2ppZXJfZm9jdXNfY29tbWl0X3RleHRfaWQg PiAwICYmCisrICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbmRfc291cmNlX2J5X2lkKG1f ZW1vamllcl9mb2N1c19jb21taXRfdGV4dF9pZCkKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgR0xpYi5Tb3VyY2UucmVtb3ZlKG1f ZW1vamllcl9mb2N1c19jb21taXRfdGV4dF9pZCk7CistICAgICAgICAgICAgICAgICAgICBtX2Vt b2ppZXJfZm9jdXNfY29tbWl0X3RleHRfaWQgPSAtMTsKKyAgICAgICAgICAgICAgICAgfQorKyAg ICAgICAgICAgICAgICBtX2Vtb2ppZXJfZm9jdXNfY29tbWl0X3RleHRfaWQgPSAtMTsKKyAgICAg ICAgICAgICB9CisgICAgICAgICB9CisgICAgIH0KKy0tIAorMi45LjMKKworRnJvbSAzOTc0NGJm OThjNGQ2YzI2NzdiMWU0NGNkYjQwY2RlN2QwMDI5YTI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQorRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorRGF0ZTogV2Vk LCAxOSBBcHIgMjAxNyAxNTo0NzozNiArMDkwMAorU3ViamVjdDogW1BBVENIXSB1aS9ndGszOiBG aXggYnVpbGQgZmFpbHVyZXMKKworLS0tCisgdWkvZ3RrMy9NYWtlZmlsZS5hbSB8IDggKy0tLS0t LS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDcgZGVsZXRpb25zKC0pCisKK2Rp ZmYgLS1naXQgYS91aS9ndGszL01ha2VmaWxlLmFtIGIvdWkvZ3RrMy9NYWtlZmlsZS5hbQoraW5k ZXggNmYwZmI2Mi4uZDJhZTBkNiAxMDA2NDQKKy0tLSBhL3VpL2d0azMvTWFrZWZpbGUuYW0KKysr KyBiL3VpL2d0azMvTWFrZWZpbGUuYW0KK0BAIC0xNjMsMTMgKzE2Myw3IEBAIEVYVFJBX0RJU1Qg PSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICQoTlVMTCkKKyAKKyBpZiBFTkFC TEVfRU1PSklfRElDVAorLUFNX1ZBTEFGTEFHUyArPSBcCistICAgIC0tZGVmaW5lPUVNT0pJX0RJ Q1QgXAorLSAgICAtLXZhcGlkaXI9JCh0b3BfYnVpbGRkaXIpL3VpL2d0azMgXAorLSAgICAtLXZh cGlkaXI9JCh0b3Bfc3JjZGlyKS91aS9ndGszIFwKKy0gICAgLS1wa2c9aWJ1cy1lbW9qaS1kaWFs b2ctMS4wIFwKKy0gICAgLS1wa2c9Z3RrKy0zLjAgXAorLSAgICAkKE5VTEwpCisrQU1fVkFMQUZM QUdTICs9IC0tZGVmaW5lPUVNT0pJX0RJQ1QKKyAKKyBsaWJpYnVzX2Vtb2ppX2RpYWxvZyA9IGxp YmlidXMtZW1vamktZGlhbG9nLTEuMC5sYQorIAorLS0gCisyLjkuMworCgpkaWZmIC0tZ2l0IGEv aWJ1cy5zcGVjIGIvaWJ1cy5zcGVjCmluZGV4IGY4ZmY2YjAuLmYzOWM4NTcgMTAwNjQ0Ci0tLSBh L2lidXMuc3BlYworKysgYi9pYnVzLnNwZWMKQEAgLTI4LDcgKzI4LDcgQEAKIAogTmFtZTogICAg ICAgICAgIGlidXMKIFZlcnNpb246ICAgICAgICAxLjUuMTUKLVJlbGVhc2U6ICAgICAgICA2JXs/ ZGlzdH0KK1JlbGVhc2U6ICAgICAgICA3JXs/ZGlzdH0KIFN1bW1hcnk6ICAgICAgICBJbnRlbGxp Z2VudCBJbnB1dCBCdXMgZm9yIExpbnV4IE9TCiBMaWNlbnNlOiAgICAgICAgTEdQTHYyKwogR3Jv dXA6ICAgICAgICAgIFN5c3RlbSBFbnZpcm9ubWVudC9MaWJyYXJpZXMKQEAgLTM3MCw2ICszNzAs NyBAQCBndGstcXVlcnktaW1tb2R1bGVzLTMuMC0le19faXNhX2JpdHN9IC0tdXBkYXRlLWNhY2hl ICY+IC9kZXYvbnVsbCB8fCA6CiAle19kYXRhZGlyfS9tYW4vbWFuNS9pYnVzLmNvbmYuNS5negog JXtfbGliZXhlY2Rpcn0vaWJ1cy1lbmdpbmUtc2ltcGxlCiAle19saWJleGVjZGlyfS9pYnVzLWRj b25mCisle19saWJleGVjZGlyfS9pYnVzLXVpLWVtb2ppZXIKICV7X2xpYmV4ZWNkaXJ9L2lidXMt dWktZ3RrMwogJXtfbGliZXhlY2Rpcn0vaWJ1cy14MTEKICV7X3N5c2NvbmZkaXJ9L2Rjb25mL2Ri L2lidXMuZApAQCAtNDI3LDYgKzQyOCwxMCBAQCBndGstcXVlcnktaW1tb2R1bGVzLTMuMC0le19f aXNhX2JpdHN9IC0tdXBkYXRlLWNhY2hlICY+IC9kZXYvbnVsbCB8fCA6CiAle19kYXRhZGlyfS9n dGstZG9jL2h0bWwvKgogCiAlY2hhbmdlbG9nCisqIFRodSBBcHIgMTMgMjAxNyBUYWthbyBGdWpp d2FyYSA8dGZ1aml3YXJAcmVkaGF0LmNvbT4gLSAxLjUuMTUtNworLSBTdXBwb3J0ZWQgaWJ1cyBl bW9qaSBjb21tYW5kIG9uIFdheWxhbmQKKy0gQ2hhbmdlZCBtb2RhbCBkaWFsb2cgdG8gbW9kZWxl c3MgZGlhbG9nCisKICogV2VkIEFwciAwNSAyMDE3IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckBy ZWRoYXQuY29tPiAtIDEuNS4xNS02CiAtIEVuYWJsZWQgdW5pY29kZV9hbHQgaW4gRW1vamlPbmUg anNvbiBmaWxlCiAtIEVuYWJsZWQgdG8gdHlwZSBtdWx0aXBsZSBjb2RlIHBvaW50cyBvbiBFbW9q aWVyCg==