From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3AA2C6E9C8 for ; Tue, 25 Feb 2020 00:58:05 +0000 (UTC) From: Akeem G Abodunrin Date: Mon, 24 Feb 2020 09:42:17 -0800 Message-Id: <20200224174217.84103-2-akeem.g.abodunrin@intel.com> In-Reply-To: <20200224174217.84103-1-akeem.g.abodunrin@intel.com> References: <20200224174217.84103-1-akeem.g.abodunrin@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v5 1/1] tools/generate_cb_buffer: Add script to assemble CB kernel List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: akeem.g.abodunrin@intel.com, jon.bloomfield@intel.com, sudeep.dutt@intel.com, daniel.vetter@intel.com, joonas.lahtinen@linux.intel.com, jani.nikula@intel.com, chris.p.wilson@intel.com, prathap.kumar.valsan@intel.com, mika.kuoppala@intel.com, francesco.balestrieri@intel.com, ville.syrjala@linux.intel.com, petri.latvala@intel.com, igt-dev@lists.freedesktop.org List-ID: VGhpcyBwYXRjaCBhZGRzIHNjcmlwdCBhbmQgYXBwbGljYWJsZSBhc3NlbWJseSBzb3VyY2VzLCBz byB0aGF0IHdlIGNhbiB1c2UKaWd0IHRvIGFzc2VtYmxlIENsZWFyIEJhdGNoIEJ1ZmZlciBrZXJu ZWwgZm9yIGdlbjcgYW5kIGdlbjcuNSBkZXZpY2VzIC0KUmVzdWx0YW50IGhlYWRlciBmaWxlcyB3 b3VsZCBiZSBpbXBvcnRlZCB0byBpOTE1LCBhbmQgdXNlZCBhcyB0aGV5IGFyZS4uLgoKV2l0aCB0 aGlzIHBhdGNoLCB1c2VyIG5lZWQgdG8gaGF2ZSBtZXNhIGNvbmZpZ3VyZWQgb24gdGhlaXIgcGxh dGZvcm0sCmJlZm9yZSBpZ3QgY291bGQgYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBwdXJwb3NlIG9m IGFzc2VtYmxpbmcgdGhlIGtlcm5lbApmcm9tIHNvdXJjZS4KClRoaXMgaXMgbmVlZGVkIGZvciAi U2VjdXJpdHkgbWl0aWdhdGlvbiBmb3IgSW50ZWwgR2VuNy83LjUgSFdzIgpJbnRlbCBJRDogUFNJ UlQtVEEtMjAxOTEwLTAwMS9DVkVJRDogQ1ZFLTIwMTktMTQ2MTUKCnYyOiBBZGRyZXNzZWQgZm9y bWF0dGluZywgLWcgb3B0aW9uIGFuZCBvdGhlciBtaW5vciBpc3N1ZXMgKFBldHJpKQp2MzogVXBk YXRlIHNjcmlwdCBkdWUgdG8gc3VnZ2VzdGVkIGNoYW5nZXMgaW4gaTkxNSwgYW5kIE1lc2EgdG9v bAp2NDogVXBkYXRlIGhlbHAgY29tbWVudCB3aXRoIE1lc2EgYnVpbGQgb3B0aW9uIHdpdGggbWVz b24gKFBldHJpKQp2NTogTW9kaWZ5IGhvdyB1c2VyIHNwZWNpZnkgaTk2NV9hc20gLSBzY3JpcHQg bm93IHRha2VzIGJpbmFyeSwgaW5zdGVhZApvZiBNZXNhIHRvb2wgc291cmNlIGRpcmVjdG9yeSAo VmlsbGUpLgoKQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+CkNjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgpDYzogSm9vbmFzIExh aHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogUGV0cmkgTGF0dmFs YSA8cGV0cmkubGF0dmFsYUBpbnRlbC5jb20+CkNjOiBCbG9vbWZpZWxkIEpvbiA8am9uLmJsb29t ZmllbGRAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBa2VlbSBHIEFib2R1bnJpbiA8YWtlZW0u Zy5hYm9kdW5yaW5AaW50ZWwuY29tPgotLS0KIHNjcmlwdHMvYXNtX2V1X2tlcm5lbC5zaCAgICAg ICAgICAgICAgICB8IDE1OCArKysrKysrKysrKysrKysrKysrKysrKysKIHRvb2xzL2Fzc2VtYmx5 X3NvdXJjZS9oc3dfY2xlYXJfYnVmLmFzbSB8IDE0MSArKysrKysrKysrKysrKysrKysrKysKIHRv b2xzL2Fzc2VtYmx5X3NvdXJjZS9pdmJfY2xlYXJfYnVmLmFzbSB8IDEzOSArKysrKysrKysrKysr KysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNDM4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2Rl IDEwMDc1NSBzY3JpcHRzL2FzbV9ldV9rZXJuZWwuc2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29s cy9hc3NlbWJseV9zb3VyY2UvaHN3X2NsZWFyX2J1Zi5hc20KIGNyZWF0ZSBtb2RlIDEwMDY0NCB0 b29scy9hc3NlbWJseV9zb3VyY2UvaXZiX2NsZWFyX2J1Zi5hc20KCmRpZmYgLS1naXQgYS9zY3Jp cHRzL2FzbV9ldV9rZXJuZWwuc2ggYi9zY3JpcHRzL2FzbV9ldV9rZXJuZWwuc2gKbmV3IGZpbGUg bW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAuLmRkZjQ0YjM4Ci0tLSAvZGV2L251bGwKKysrIGIv c2NyaXB0cy9hc21fZXVfa2VybmVsLnNoCkBAIC0wLDAgKzEsMTU4IEBACisjIS9iaW4vYmFzaAor IworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisjCisjIENvcHlyaWdodCDCqSAyMDIw IEludGVsIENvcnBvcmF0aW9uCisjCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisjIGNvcHkgb2YgdGhpcyBz b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl IiksCisjIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyMgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisjIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQorIyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOgorIworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisjIHBhcmFncmFwaCkgc2hh bGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUKKyMgU29mdHdhcmUuCisjCisjIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisjIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ LAorIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U LiAgSU4gTk8gRVZFTlQgU0hBTEwKKyMgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyMgTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcKKyMgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworIyBJTiBUSEUgU09GVFdBUkUuCisKK2V4cG9ydCBB U1NFTUJMWV9TT1VSQ0U9Li90b29scy9hc3NlbWJseV9zb3VyY2UKKworZnVuY3Rpb24gZ2V0X2hl bHAgeworICAgICAgICBlY2hvICJVc2FnZTogICAgYXNtX2V1X2tlcm5lbC5zaCBbb3B0aW9uc10i CisgICAgICAgIGVjaG8gIk5vdGU6IGhzd19jbGVhcl9rZXJuZWwuYy9pdmJfY2xlYXJfa2VybmVs LmMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdGhpcyBzY3JpcHQgc2hvdWxkIG5ldmVyIGJl IG1vZGlmaWVkIC0gaXQgd291bGQgYmUgaW1wb3J0ZWQgdG8gaTkxNSwgdG8gdXNlIGFzIGl0IGlz Li4uIgorICAgICAgICBlY2hvICIgIgorICAgICAgICBlY2hvICJQbGVhc2UgbWFrZSBzdXJlIHlv dXIgTWVzYSB0b29sIGlzIGNvbXBpbGVkIHdpdGggIi1EdG9vbHM9aW50ZWwiIGFuZCAiLURkcmkt ZHJpdmVycz1pOTY1IiwgYW5kIHJ1biB0aGlzIHNjcmlwdCBmcm9tIElHVCBzb3VyY2Ugcm9vdCBk aXJlY3RvcnkiCisgICAgICAgIGVjaG8gIiAiCisgICAgICAgIGVjaG8gIk9wdGlvbnMgYXJlOiIK KyAgICAgICAgZWNobyAiIC1oICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5IHRoaXMgaGVs cCBtZXNzYWdlLCBhbmQgZXhpdCIKKyAgICAgICAgZWNobyAiIC1nPXBsYXRmb3JtICAgICAgICAg ICAgICBnZW5lcmF0aW9uIG9mIGRldmljZTogdXNlICJoc3ciIGZvciBnZW43LjUsIGFuZCAiaXZi IiBmb3IgZ2VuNyBkZXZpY2VzIgorICAgICAgICBlY2hvICIgLW89bmFtZV9vZl9maWxlICAgICAg ICAgIG91dHB1dCBmaWxlIHRvIHN0b3JlIE1lc2EgYXNzZW1ibGVkIGMtbGl0ZXJhbCBmb3IgdGhl IGRldmljZSAtIElmIG5vbmUgc3BlY2lmaWVkLCBkZWZhdWx0IGZpbGUgd2lsbCBiZSB1c2VkIC0g aXZiL2hzdy1jYl9hc3NlbWJsZWQiCisgICAgICAgIGVjaG8gIiAtbT1tZXNhICAgICAgICAgICAg ICAgICAgUGF0aCB0byBNZXNhIGk5NjVfYXNtIGJpbmFyeSIKKyAgICAgICAgZWNobyAiICIKKyAg ICAgICAgZWNobyAiIFVzYWdlIGV4YW1wbGU6IFwic2NyaXB0cy9hc21fZXVfa2VybmVsLnNoIC1n IGhzdyAtbyBoc3dfY2xlYXJfYnVmZmVyLmggLW0gL3BhdGgvdG8vTWVzYS9pOTY1X2FzbS9iaW5h cnlcIiIKK30KKworZnVuY3Rpb24gaW5jbHVkZV9hcnJheSAjICQxPWFycmF5X25hbWUKK3sKKwll Y2hvICJzdGF0aWMgY29uc3QgdTMyICQoYmFzZW5hbWUgJDEpX2NsZWFyX2tlcm5lbFtdID0geyIK K30KK2Z1bmN0aW9uIHByZWZpeF9oZWFkZXIgIyAkMT1maWxlbmFtZSAkMj1jb21tZW50Cit7CisJ YXJyYXlfbmFtZT0kKGluY2x1ZGVfYXJyYXkgJDEpCisKKwljYXQgPDxFT0YKKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBNSVQKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMCBJbnRlbCBDb3Jw b3JhdGlvbgorICoKKyAqIEdlbmVyYXRlZCBieTogSUdUIEdwdSBUb29scyBvbiAkKGRhdGUpCisg Ki8KKworJGFycmF5X25hbWUKK0VPRgorfQorCitmdW5jdGlvbiBwb3N0Zml4X2Zvb3RlciAjIGZp bGVuYW1lCit7CisJY2F0IDw8RU9GCit9OworRU9GCit9CisKK2Z1bmN0aW9uIGNoZWNrX291dHB1 dF9maWxlICNjaGVjayBvdXRwdXQgZmlsZQoreworICAgICAgICBpZiBbICJ4JG91dHB1dF9maWxl IiAhPSAieCIgXTsgdGhlbgorICAgICAgICAgICAgICAgIGlmIFsgLWYgIiRvdXRwdXRfZmlsZSIg XTsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAtZSAiV2FybmluZzogVGhlIFwi JG91dHB1dF9maWxlXCIgZmlsZSBhbHJlYWR5IGV4aXN0IC0gY2hvb3NlIGFub3RoZXIgZmlsZVxu IgorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2hlbHAKKyAgICAgICAgICAgICAgICAgICAg ICAgIGV4aXQgMQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAg ICAgICAjIEl0IGlzIG9rYXkgdG8gb3ZlcndyaXRlIGRlZmF1bHQgZmlsZSBjcmVhdGVkCisgICAg ICAgICAgICAgICAgZWNobyAtZSAiT3V0cHV0IGZpbGUgbm90IHNwZWNpZmllZCAtIHVzaW5nIGRl ZmF1bHQgZmlsZSBcIiRnZW5fZGV2aWNlLWNiX2Fzc2VtYmxlZFwiXG4iCisgICAgICAgICAgICAg ICAgb3V0cHV0X2ZpbGU9IiRnZW5fZGV2aWNlLWNiX2Fzc2VtYmxlZCIKKyAgICAgICAgZmkKK30K K2Z1bmN0aW9uIGFzbV9jYl9rZXJuZWwgIyBhcy1yb290IDxhcmdzPgoreworICAgICAgICBjaGVj a19vdXRwdXRfZmlsZQorCisgICAgICAgICMgVXNpbmcgaTk2NV9hc20gdG9vbCB0byBhc3NlbWJs ZSBoZXggZmlsZSBmcm9tIGFzc2VtYmx5IHNvdXJjZQorICAgICAgICAkbWVzYV9pOTY1X2FzbSAt ZyAkZ2VuX2RldmljZSAtdCBjX2xpdGVyYWwgICRpbnB1dF9hc21fc291cmNlIC1vICRvdXRwdXRf ZmlsZQorCisgICAgICAgIGlmIFsgISAtZiAke291dHB1dF9maWxlfSBdOyB0aGVuCisgICAgICAg ICAgICAgICAgZWNobyAtZSAiRmFpbGVkIHRvIGFzc2VtYmxlIENCIEtlcm5lbCB3aXRoIE1lc2Eg dG9vbFxuIgorICAgICAgICAgICAgICAgIGdldF9oZWxwCisgICAgICAgICAgICAgICAgZXhpdCAx CisgICAgICAgIGZpCisKKyAgICAgICAgIyBHZW5lcmF0ZSBoZWFkZXIgZmlsZQorICAgICAgICBp ZiBbICIkZ2VuX2RldmljZSIgPT0gImhzdyIgXTsgdGhlbgorICAgICAgICAgICAgICAgIGVjaG8g IkdlbmVyYXRpbmcgZ2VuNy41IENCIEtlcm5lbCBhc3NlbWJsZWQgZmlsZSBcImhzd19jbGVhcl9r ZXJuZWwuY1wiIGZvciBpOTE1IGRyaXZlci4uLiIKKworICAgICAgICAgICAgICAgIGk5MTVfZmls ZW5hbWU9aHN3X2NsZWFyX2tlcm5lbC5jCisgICAgICAgICAgICAgICAgcHJlZml4X2hlYWRlciAk Z2VuX2RldmljZSA+ICRpOTE1X2ZpbGVuYW1lCisgICAgICAgICAgICAgICAgY2F0ICRvdXRwdXRf ZmlsZSA+PiAkaTkxNV9maWxlbmFtZQorICAgICAgICAgICAgICAgIHBvc3RmaXhfZm9vdGVyICRp OTE1X2ZpbGVuYW1lID4+ICRpOTE1X2ZpbGVuYW1lCisKKyAgICAgICAgZWxpZiBbICIkZ2VuX2Rl dmljZSIgPT0gIml2YiIgXTsgdGhlbgorICAgICAgICAgICAgICAgIGVjaG8gIkdlbmVyYXRpbmcg Z2VuNyBDQiBLZXJuZWwgYXNzZW1ibGVkIGZpbGUgXCJpdmJfY2xlYXJfa2VybmVsLmNcIiBmb3Ig aTkxNSBkcml2ZXIuLi4iCisKKyAgICAgICAgICAgICAgICBpOTE1X2ZpbGVuYW1lPWl2Yl9jbGVh cl9rZXJuZWwuYworICAgICAgICAgICAgICAgIHByZWZpeF9oZWFkZXIgJGdlbl9kZXZpY2UgPiAk aTkxNV9maWxlbmFtZQorICAgICAgICAgICAgICAgIGNhdCAkb3V0cHV0X2ZpbGUgPj4gJGk5MTVf ZmlsZW5hbWUKKyAgICAgICAgICAgICAgICBwb3N0Zml4X2Zvb3RlciAkaTkxNV9maWxlbmFtZSA+ PiAkaTkxNV9maWxlbmFtZQorICAgICAgICBmaQorfQorCit3aGlsZSBnZXRvcHRzICJoZzpvOm06 IiBvcHQ7IGRvCisJY2FzZSAkb3B0IGluCisJCWgpIGdldF9oZWxwOyBleGl0IDA7OworCQlnKSBn ZW5fZGV2aWNlPSIkT1BUQVJHIiA7OworCQlvKSBvdXRwdXRfZmlsZT0iJE9QVEFSRyIgOzsKKyAg ICAgICAgICAgICAgICBtKSBtZXNhX2k5NjVfYXNtPSIkT1BUQVJHIiA7OworCQlcPykKKwkJCWVj aG8gLWUgIlVua25vd24gb3B0aW9uOiAtJE9QVEFSR1xuIgorCQkJZ2V0X2hlbHAKKwkJCWV4aXQg MQorCQkJOzsKKwllc2FjCitkb25lCitzaGlmdCAkKCgkT1BUSU5ELTEpKQorCitpZiBbICJ4JDEi ICE9ICJ4IiBdOyB0aGVuCisJZWNobyAtZSAiVW5rbm93biBvcHRpb246ICQxXG4iCisJZ2V0X2hl bHAKKwlleGl0IDEKK2ZpCisKK2lmIFsgIngkbWVzYV9pOTY1X2FzbSIgPT0gIngiIF07IHRoZW4K KyAgICAgICAgZWNobyAtZSAiaTk2NV9hc20gYmluYXJ5IG5vdCBmb3VuZFxuIgorICAgICAgICBn ZXRfaGVscAorICAgICAgICBleGl0IDEKK2ZpCisKK2lmIFsgIngkZ2VuX2RldmljZSIgIT0gIngi IF07IHRoZW4KKyAgICAgICAgaWYgWyAiJGdlbl9kZXZpY2UiID09ICJoc3ciIF07IHRoZW4KKyAg ICAgICAgICAgICAgICBpbnB1dF9hc21fc291cmNlPSIke0FTU0VNQkxZX1NPVVJDRX0vaHN3X2Ns ZWFyX2J1Zi5hc20iCisgICAgICAgIGVsaWYgWyAiJGdlbl9kZXZpY2UiID09ICJpdmIiIF07IHRo ZW4KKyAgICAgICAgICAgICAgICBpbnB1dF9hc21fc291cmNlPSIke0FTU0VNQkxZX1NPVVJDRX0v aXZiX2NsZWFyX2J1Zi5hc20iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlY2hvIC1l ICJVbmtub3duIHBsYXRmb3JtIHNwZWNpZmllZFxuIgorICAgICAgICAgICAgICAgIGdldF9oZWxw CisgICAgICAgICAgICAgICAgZXhpdCAxCisgICAgICAgIGZpCisJYXNtX2NiX2tlcm5lbAorZWxz ZQorICAgICAgICBlY2hvIC1lICJQbGF0Zm9ybSBnZW5lcmF0aW9uIG5vdCBzcGVjaWZpZWRcbiIK KyAgICAgICAgZ2V0X2hlbHAKKyAgICAgICAgZXhpdCAxCitmaQpkaWZmIC0tZ2l0IGEvdG9vbHMv YXNzZW1ibHlfc291cmNlL2hzd19jbGVhcl9idWYuYXNtIGIvdG9vbHMvYXNzZW1ibHlfc291cmNl L2hzd19jbGVhcl9idWYuYXNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5i YzI5YmFmMgotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2Fzc2VtYmx5X3NvdXJjZS9oc3dfY2xl YXJfYnVmLmFzbQpAQCAtMCwwICsxLDE0MSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IE1JVCAqLworLyoKKyAqIENvcHlyaWdodCDCqSAyMDIwIEludGVsIENvcnBvcmF0aW9uCisgKgor ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0 aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMg ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK KyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVk IGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2Fy ZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8g RVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICog RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT RSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisvKioK KyAqIEtlcm5lbCBuYW1lOiBoc3dfY2xlYXJfYnVmLmFzbQorICoKKyAqIEtlcm5lbCBmb3IgUEFW UCBidWZmZXIgY2xlYXIuCisgKgorICoJMS4gQ2xlYXIgYWxsIDY0IEdSRiByZWdpc3RlcnMgYXNz aWduZWQgdG8gdGhlIGtlcm5lbCB3aXRoIGRlc2lnbmF0ZWQgdmFsdWU7CisgKgkyLiBXcml0ZSAz MngxNiBibG9jayBvZiBhbGwgIjAiIHRvIHJlbmRlciB0YXJnZXQgYnVmZmVyIHdoaWNoIGluZGly ZWN0bHkgY2xlYXJzCisgKgkgICA1MTIgYnl0ZXMgb2YgUmVuZGVyIENhY2hlLgorICovCisKKy8q IFN0b3JlIGRlc2lnbmF0ZWQgImNsZWFyIEdSRiIgdmFsdWUgKi8KK21vdigxKSAgICAgICAgICBm MC4xPDE+VVcgICAgICAgZzEuMjwwLDEsMD5VVyAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAx TiB9OworCisvKioKKyAqIEN1cmJlIEZvcm1hdAorICoKKyAqIERXIDEuMCAtIEJsb2NrIE9mZnNl dCB0byB3cml0ZSBSZW5kZXIgQ2FjaGUKKyAqIERXIDEuMSBbMTU6MF0gLSBDbGVhciBXb3JkCisg KiBEVyAxLjIgLSBEZWxheSBpdGVyYXRpb25zCisgKiBEVyAxLjMgLSBFbmFibGUgSW5zdHJ1bWVu dGF0aW9uIChvbmx5IGZvciBkZWJ1ZykKKyAqIERXIDEuNCAtIFJzdmQgKGludGVuZGVkIGZvciBj b250ZXh0IElEKQorICogRFcgMS41IC0gWzMxOjE2XTpTbGljZUNvdW50LCBbMTU6MF06U3ViU2xp Y2VQZXJTbGljZUNvdW50CisgKiBEVyAxLjYgLSBSc3ZkIE1CWiAoaW50ZW5kZWQgZm9yIEVuYWJs ZSBXYWl0IG9uIFRvdGFsIFRocmVhZCBDb3VudCkKKyAqIERXIDEuNyAtIFJzdmQgTUJaIChpbnRl ZGVkIGZvciBUb3RhbCBUaHJlYWQgQ291bnQpCisgKgorICogQmluZGluZyBUYWJsZQorICoKKyAq IEJUSSAwOiAyRCBTdXJmYWNlIHRvIGhlbHAgY2xlYXIgTDMgKFJlbmRlci9EYXRhIENhY2hlKQor ICogQlRJIDE6IFdhaXQvSW5zdHJ1bWVudGF0aW9uIEJ1ZmZlcgorICogIFNpemUgOiAoU2xpY2VD b3VudCAqIFN1YlNsaWNlQ291bnQgICogMTYgRVVzL1N1YlNsaWNlKSByb3dzICogKDE2IHRocmVh ZHMvRVUpIGNvbHMgKEZvcm1hdCBSMzJfVUlOVCkKKyAqICAgICAgICAgRXhwZWN0ZWQgdG8gYmUg aW5pdGlhbGl6ZWQgdG8gMCBieSBkcml2ZXIvYW5vdGhlciBrZXJuZWwKKyAqICBMYXlvdXQ6Cisg KiAgICAgICAgICBSb3dOOiBIaXN0b2dyYW0gZm9yIEVVLU46IChTbGljZUlEKlN1YlNsaWNlUGVy U2xpY2VDb3VudCArIFNTSUQpKjE2ICsgRVVJRCBbYXNzdW1lIG1heCAxNiBFVXMgLyBTU10KKyAq ICAgICAgICAgIENvbC1rW0RXLWtdOiBUaHJlYWRzIEV4ZWN1dGVkIG9uIFRocmVhZElELWsgZm9y IEVVLU4KKyAqLworYWRkKDEpICAgICAgICAgIGcxLjI8MT5VRCAgICAgICBnMS4yPDAsMSwwPlVE ICAgMHgwMDAwMDAwMVVEICAgIHsgYWxpZ24xIDFOIH07IC8qIExvb3AgY291bnQgdG8gZGVsYXkg a2VybmVsOiBJbml0IHRvIChnMS4yICsgMSkgKi8KK2NtcC56LmYwLjAoMSkgICBudWxsPDE+VUQg ICAgICAgZzEuMzwwLDEsMD5VRCAgIDB4MDAwMDAwMDBVRCAgICB7IGFsaWduMSAxTiB9OworKCtm MC4wKSBqbXBpKDEpIDM1MkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsgYWxpZ24xIFdFX2FsbCAxTiB9OworCisvKioKKyAqIFN0YXRlIFJlZ2lzdGVyIGhhcyBp bmZvIG9uIHdoZXJlIHRoaXMgdGhyZWFkIGlzIHJ1bm5pbmcKKyAqCUlWQjogc3IwLjAgOjogWzE1 OjEzXTogTUJaLCAxMjogSFNJRCAoSGFsZi1TbGljZSBJRCksIFsxMTo4XUVVSUQsIFsyOjBdIFRo cmVhZFNsb3RJRAorICoJSFNXOiBzcjAuMCA6OiAxNTogTUJaLCBbMTQ6MTNdOiBTbGljZUlELCAx MjogSFNJRCAoSGFsZi1TbGljZSBJRCksIFsxMTo4XUVVSUQsIFsyOjBdIFRocmVhZFNsb3RJRAor ICovCittb3YoOCkgICAgICAgICAgZzM8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAg ICAgICAgICAgICAgeyBhbGlnbjEgMVEgfTsKK3NocigxKSAgICAgICAgICBnMzwxPkQgICAgICAg ICAgc3IwPDAsMSwwPkQgICAgIDEyRCAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworYW5kKDEp ICAgICAgICAgIGczPDE+RCAgICAgICAgICBnMzwwLDEsMD5EICAgICAgMUQgICAgICAgICAgICAg IHsgYWxpZ24xIDFOIH07IC8qIGczIGhhcyBIU0lEICovCitzaHIoMSkgICAgICAgICAgZzMuMTwx PkQgICAgICAgIHNyMDwwLDEsMD5EICAgICAxM0QgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsK K2FuZCgxKSAgICAgICAgICBnMy4xPDE+RCAgICAgICAgZzMuMTwwLDEsMD5EICAgIDNEICAgICAg ICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBnMy4xIGhhcyBzbGljZUlEICovCittdWwoMSkgICAg ICAgICAgZzMuNTwxPkQgICAgICAgIGczLjE8MCwxLDA+RCAgICBnMS4xMDwwLDEsMD5VVyAgeyBh bGlnbjEgMU4gfTsKK2FkZCgxKSAgICAgICAgICBnMzwxPkQgICAgICAgICAgZzM8MCwxLDA+RCAg ICAgIGczLjU8MCwxLDA+RCAgICB7IGFsaWduMSAxTiB9OyAvKiBnMyA9IHNsaWNlSUQgKiBTdWJT bGljZVBlclNsaWNlQ291bnQgKyBIU0lEICovCitzaHIoMSkgICAgICAgICAgZzMuMjwxPkQgICAg ICAgIHNyMDwwLDEsMD5EICAgICA4RCAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK2FuZCgx KSAgICAgICAgICBnMy4yPDE+RCAgICAgICAgZzMuMjwwLDEsMD5EICAgIDE1RCAgICAgICAgICAg ICB7IGFsaWduMSAxTiB9OyAvKiBnMy4yID0gRVVJRCAqLworbXVsKDEpICAgICAgICAgIGczLjQ8 MT5EICAgICAgICBnMzwwLDEsMD5EICAgICAgMTZEICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07 CithZGQoMSkgICAgICAgICAgZzMuMjwxPkQgICAgICAgIGczLjI8MCwxLDA+RCAgICBnMy40PDAs MSwwPkQgICAgeyBhbGlnbjEgMU4gfTsgLyogZzMuMiBub3cgcG9pbnRzIHRvIEVVIHJvdyBudW1i ZXIgKFktcGl4ZWwgPSBWIGFkZHJlc3MgKSAgaW4gaW5zdHJ1bWVudGF0aW9uIHN1cmYgKi8KKwor bW92KDgpICAgICAgICAgIGc1PDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAg ICAgICAgIHsgYWxpZ24xIDFRIH07CithbmQoMSkgICAgICAgICAgZzMuMzwxPkQgICAgICAgIHNy MDwwLDEsMD5EICAgICA3RCAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK211bCgxKSAgICAg ICAgICBnMy4zPDE+RCAgICAgICAgZzMuMzwwLDEsMD5EICAgIDREICAgICAgICAgICAgICB7IGFs aWduMSAxTiB9OworCittb3YoOCkgICAgICAgICAgZzQ8MT5VRCAgICAgICAgIGcwPDgsOCwxPlVE ICAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMVEgfTsgLyogSW5pdGlhbGl6ZSBtZXNzYWdl IGhlYWRlciB3aXRoIGcwICovCittb3YoMSkgICAgICAgICAgZzQ8MT5VRCAgICAgICAgIGczLjM8 MCwxLDA+VUQgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyogQmxvY2sgb2Zmc2V0 ICovCittb3YoMSkgICAgICAgICAgZzQuMTwxPlVEICAgICAgIGczLjI8MCwxLDA+VUQgICAgICAg ICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyogQmxvY2sgb2Zmc2V0ICovCittb3YoMSkgICAg ICAgICAgZzQuMjwxPlVEICAgICAgIDB4MDAwMDAwMDNVRCAgICAgICAgICAgICAgICAgICAgeyBh bGlnbjEgMU4gfTsgLyogQmxvY2sgc2l6ZSAoMSByb3cgeCA0IGJ5dGVzKSAqLworYW5kKDEpICAg ICAgICAgIGc0LjM8MT5VRCAgICAgICBnNC4zPDAsMSwwPlVXICAgMHhmZmZmZmZmZlVEICAgIHsg YWxpZ24xIDFOIH07CisKKy8qIE1lZGlhIGJsb2NrIHJlYWQgdG8gZmV0Y2ggY3VycmVudCB2YWx1 ZSBhdCBzcGVjaWZpZWQgbG9jYXRpb24gaW4gaW5zdHJ1bWVudGF0aW9uIGJ1ZmZlciAqLworc2Vu ZGMoOCkgICAgICAgIGc1PDE+VUQgICAgICAgICBnNDw4LDgsMT5GICAgICAgMHgwMjE5MDAwMQor CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyIE1zZ0Rlc2M6IG1lZGlhIGJsb2Nr IHJlYWQgTXNnQ3RybCA9IDB4MCBTdXJmYWNlID0gMSBtbGVuIDEgcmxlbiAxIHsgYWxpZ24xIDFR IH07CithZGQoMSkgICAgICAgICAgZzU8MT5EICAgICAgICAgIGc1PDAsMSwwPkQgICAgICAxRCAg ICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKKworLyogTWVkaWEgYmxvY2sgd3JpdGUgZm9yIHVw ZGF0ZWQgdmFsdWUgYXQgc3BlY2lmaWVkIGxvY2F0aW9uIGluIGluc3RydW1lbnRhdGlvbiBidWZm ZXIgKi8KK3NlbmRjKDgpICAgICAgICBnNTwxPlVEICAgICAgICAgZzQ8OCw4LDE+RiAgICAgIDB4 MDQwYTgwMDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIgTXNnRGVzYzogbWVk aWEgYmxvY2sgd3JpdGUgTXNnQ3RybCA9IDB4MCBTdXJmYWNlID0gMSBtbGVuIDIgcmxlbiAwIHsg YWxpZ24xIDFRIH07CisKKy8qIERlbGF5IHRocmVhZCBmb3Igc3BlY2lmaWVkIHBhcmFtZXRlciAq LworYWRkLm56LmYwLjAoMSkgIGcxLjI8MT5VRCAgICAgICBnMS4yPDAsMSwwPlVEICAgLTFEICAg ICAgICAgICAgIHsgYWxpZ24xIDFOIH07CisoK2YwLjApIGptcGkoMSkgLTMyRCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgV0VfYWxsIDFOIH07CisK Ky8qIFN0b3JlIGRlc2lnbmF0ZWQgImNsZWFyIEdSRiIgdmFsdWUgKi8KK21vdigxKSAgICAgICAg ICBmMC4xPDE+VVcgICAgICAgZzEuMjwwLDEsMD5VVyAgICAgICAgICAgICAgICAgICB7IGFsaWdu MSAxTiB9OworCisvKiBJbml0aWFsaXplIGxvb3BpbmcgcGFyYW1ldGVycyAqLworbW92KDEpICAg ICAgICAgIGEwPDE+RCAgICAgICAgICAwRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsg YWxpZ24xIDFOIH07IC8qIEluaXRpYWxpemUgYTAuMDp3PTAgKi8KK21vdigxKSAgICAgICAgICBh MC40PDE+VyAgICAgICAgMTI3VyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAx TiB9OyAvKiBMb29wIGNvdW50LiBFYWNoIGxvb3AgY29udGFpbnMgMTYgR1JGJ3MgKi8KKworLyog V3JpdGUgMzJ4MTYgYWxsICIwIiBibG9jayAqLworbW92KDgpICAgICAgICAgIGcyPDE+VUQgICAg ICAgICBnMDw4LDgsMT5VRCAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFRIH07Cittb3Yo OCkgICAgICAgICAgZzEyNzwxPlVEICAgICAgIGcwPDgsOCwxPlVEICAgICAgICAgICAgICAgICAg ICAgeyBhbGlnbjEgMVEgfTsKK21vdigyKSAgICAgICAgICBnMjwxPlVEICAgICAgICAgZzE8Miwy LDE+VVcgICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworbW92KDEpICAgICAgICAg IGcyLjI8MT5VRCAgICAgICAweDAwMGYwMDBmVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24x IDFOIH07IC8qIEJsb2NrIHNpemUgKDE2eDE2KSAqLworYW5kKDEpICAgICAgICAgIGcyLjM8MT5V RCAgICAgICBnMi4zPDAsMSwwPlVXICAgMHhmZmZmZmZlZlVEICAgIHsgYWxpZ24xIDFOIH07Citt b3YoMTYpICAgICAgICAgZzM8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAg ICAgICAgeyBhbGlnbjEgMUggfTsKK21vdigxNikgICAgICAgICBnNDwxPlVEICAgICAgICAgMHgw MDAwMDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9OworbW92KDE2KSAgICAg ICAgIGc1PDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxp Z24xIDFIIH07Cittb3YoMTYpICAgICAgICAgZzY8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAg ICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsKK21vdigxNikgICAgICAgICBnNzwxPlVE ICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9Owor bW92KDE2KSAgICAgICAgIGc4PDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAg ICAgICAgIHsgYWxpZ24xIDFIIH07Cittb3YoMTYpICAgICAgICAgZzk8MT5VRCAgICAgICAgIDB4 MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsKK21vdigxNikgICAg ICAgICBnMTA8MT5VRCAgICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFs aWduMSAxSCB9Oworc2VuZGMoOCkgICAgICAgIG51bGw8MT5VRCAgICAgICBnMjw4LDgsMT5GICAg ICAgMHgxMjBhODAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlciBNc2dEZXNj OiBtZWRpYSBibG9jayB3cml0ZSBNc2dDdHJsID0gMHgwIFN1cmZhY2UgPSAwIG1sZW4gOSBybGVu IDAgeyBhbGlnbjEgMVEgfTsKK2FkZCgxKSAgICAgICAgICBnMjwxPlVEICAgICAgICAgZzE8MCwx LDA+VVcgICAgIDB4MDAxMFVXICAgICAgICB7IGFsaWduMSAxTiB9Oworc2VuZGMoOCkgICAgICAg IG51bGw8MT5VRCAgICAgICBnMjw4LDgsMT5GICAgICAgMHgxMjBhODAwMAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlbmRlciBNc2dEZXNjOiBtZWRpYSBibG9jayB3cml0ZSBNc2dDdHJs ID0gMHgwIFN1cmZhY2UgPSAwIG1sZW4gOSBybGVuIDAgeyBhbGlnbjEgMVEgfTsKKworLyogTm93 LCBjbGVhciBhbGwgR1JGIHJlZ2lzdGVycyAqLworYWRkLm56LmYwLjAoMSkgIGEwLjQ8MT5XICAg ICAgICBhMC40PDAsMSwwPlcgICAgLTFXICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07Cittb3Yo MTYpICAgICAgICAgZ1thMF08MT5VVyAgICAgIGYwLjE8MCwxLDA+VVcgICAgICAgICAgICAgICAg ICAgeyBhbGlnbjEgMUggfTsKK2FkZCgxKSAgICAgICAgICBhMDwxPkQgICAgICAgICAgYTA8MCwx LDA+RCAgICAgIDMyRCAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworKCtmMC4wKSBqbXBpKDEp IC02NEQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24x IFdFX2FsbCAxTiB9OworCisvKiBUZXJtaW5hbnRlIHRoZSB0aHJlYWQgKi8KK3NlbmRjKDgpICAg ICAgICBudWxsPDE+VUQgICAgICAgZzEyNzw4LDgsMT5GICAgIDB4ODIwMDAwMTAKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aHJlYWRfc3Bhd25lciBNc2dEZXNjOiBtbGVuIDEgcmxlbiAw ICAgICAgICAgICB7IGFsaWduMSAxUSBFT1QgfTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2Fzc2VtYmx5 X3NvdXJjZS9pdmJfY2xlYXJfYnVmLmFzbSBiL3Rvb2xzL2Fzc2VtYmx5X3NvdXJjZS9pdmJfY2xl YXJfYnVmLmFzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uYjIxYmM5NDgK LS0tIC9kZXYvbnVsbAorKysgYi90b29scy9hc3NlbWJseV9zb3VyY2UvaXZiX2NsZWFyX2J1Zi5h c20KQEAgLTAsMCArMSwxMzkgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8K Ky8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdh cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGlu Y2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgor ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworLyoqCisgKiBLZXJu ZWwgbmFtZTogaXZiX2NsZWFyX2J1Zi5hc20KKyAqCisgKiBLZXJuZWwgZm9yIFBBVlAgYnVmZmVy IGNsZWFyLgorICoKKyAqCTEuIENsZWFyIGFsbCA2NCBHUkYgcmVnaXN0ZXJzIGFzc2lnbmVkIHRv IHRoZSBrZXJuZWwgd2l0aCBkZXNpZ25hdGVkIHZhbHVlOworICoJMi4gV3JpdGUgMzJ4MTYgYmxv Y2sgb2YgYWxsICIwIiB0byByZW5kZXIgdGFyZ2V0IGJ1ZmZlciB3aGljaCBpbmRpcmVjdGx5IGNs ZWFycworICoJICAgNTEyIGJ5dGVzIG9mIFJlbmRlciBDYWNoZS4KKyAqLworCisvKiBTdG9yZSBk ZXNpZ25hdGVkICJjbGVhciBHUkYiIHZhbHVlICovCittb3YoMSkgICAgICAgICAgZjAuMTwxPlVX ICAgICAgIGcxLjI8MCwxLDA+VVcgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKKwor LyoqCisgKiBDdXJiZSBGb3JtYXQKKyAqCisgKiBEVyAxLjAgLSBCbG9jayBPZmZzZXQgdG8gd3Jp dGUgUmVuZGVyIENhY2hlCisgKiBEVyAxLjEgWzE1OjBdIC0gQ2xlYXIgV29yZAorICogRFcgMS4y IC0gRGVsYXkgaXRlcmF0aW9ucworICogRFcgMS4zIC0gRW5hYmxlIEluc3RydW1lbnRhdGlvbiAo b25seSBmb3IgZGVidWcpCisgKiBEVyAxLjQgLSBSc3ZkIChpbnRlbmRlZCBmb3IgY29udGV4dCBJ RCkKKyAqIERXIDEuNSAtIFszMToxNl06U2xpY2VDb3VudCwgWzE1OjBdOlN1YlNsaWNlUGVyU2xp Y2VDb3VudAorICogRFcgMS42IC0gUnN2ZCBNQlogKGludGVuZGVkIGZvciBFbmFibGUgV2FpdCBv biBUb3RhbCBUaHJlYWQgQ291bnQpCisgKiBEVyAxLjcgLSBSc3ZkIE1CWiAoaW50ZWRlZCBmb3Ig VG90YWwgVGhyZWFkIENvdW50KQorICoKKyAqIEJpbmRpbmcgVGFibGUKKyAqCisgKiBCVEkgMDog MkQgU3VyZmFjZSB0byBoZWxwIGNsZWFyIEwzIChSZW5kZXIvRGF0YSBDYWNoZSkKKyAqIEJUSSAx OiBXYWl0L0luc3RydW1lbnRhdGlvbiBCdWZmZXIKKyAqICBTaXplIDogKFNsaWNlQ291bnQgKiBT dWJTbGljZUNvdW50ICAqIDE2IEVVcy9TdWJTbGljZSkgcm93cyAqICgxNiB0aHJlYWRzL0VVKSBj b2xzIChGb3JtYXQgUjMyX1VJTlQpCisgKiAgICAgICAgIEV4cGVjdGVkIHRvIGJlIGluaXRpYWxp emVkIHRvIDAgYnkgZHJpdmVyL2Fub3RoZXIga2VybmVsCisgKiAgTGF5b3V0IDoKKyAqICAgICAg ICAgICBSb3dOOiBIaXN0b2dyYW0gZm9yIEVVLU46IChTbGljZUlEKlN1YlNsaWNlUGVyU2xpY2VD b3VudCArIFNTSUQpKjE2ICsgRVVJRCBbYXNzdW1lIG1heCAxNiBFVXMgLyBTU10KKyAqICAgICAg ICAgICBDb2wta1tEVy1rXTogVGhyZWFkcyBFeGVjdXRlZCBvbiBUaHJlYWRJRC1rIGZvciBFVS1O CisgKi8KK2FkZCgxKSAgICAgICAgICBnMS4yPDE+VUQgICAgICAgZzEuMjwwLDEsMD5VRCAgIDB4 MDAwMDAwMDFVRCAgICB7IGFsaWduMSAxTiB9OyAvKiBMb29wIGNvdW50IHRvIGRlbGF5IGtlcm5l bDogSW5pdCB0byAoZzEuMiArIDEpICovCitjbXAuei5mMC4wKDEpICAgbnVsbDwxPlVEICAgICAg IGcxLjM8MCwxLDA+VUQgICAweDAwMDAwMDAwVUQgICAgeyBhbGlnbjEgMU4gfTsKKygrZjAuMCkg am1waSgxKSA0NEQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IGFsaWduMSBXRV9hbGwgMU4gfTsKKworLyoqCisgKiBTdGF0ZSBSZWdpc3RlciBoYXMgaW5mbyBv biB3aGVyZSB0aGlzIHRocmVhZCBpcyBydW5uaW5nCisgKglJVkI6IHNyMC4wIDo6IFsxNToxM106 IE1CWiwgMTI6IEhTSUQgKEhhbGYtU2xpY2UgSUQpLCBbMTE6OF1FVUlELCBbMjowXSBUaHJlYWRT bG90SUQKKyAqCUhTVzogc3IwLjAgOjogMTU6IE1CWiwgWzE0OjEzXTogU2xpY2VJRCwgMTI6IEhT SUQgKEhhbGYtU2xpY2UgSUQpLCBbMTE6OF1FVUlELCBbMjowXSBUaHJlYWRTbG90SUQKKyAqLwor bW92KDgpICAgICAgICAgIGczPDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAg ICAgICAgIHsgYWxpZ24xIDFRIH07CitzaHIoMSkgICAgICAgICAgZzM8MT5EICAgICAgICAgIHNy MDwwLDEsMD5EICAgICAxMkQgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK2FuZCgxKSAgICAg ICAgICBnMzwxPkQgICAgICAgICAgZzM8MCwxLDA+RCAgICAgIDFEICAgICAgICAgICAgICB7IGFs aWduMSAxTiB9OyAvKiBnMyBoYXMgSFNJRCAqLworc2hyKDEpICAgICAgICAgIGczLjE8MT5EICAg ICAgICBzcjA8MCwxLDA+RCAgICAgMTNEICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CithbmQo MSkgICAgICAgICAgZzMuMTwxPkQgICAgICAgIGczLjE8MCwxLDA+RCAgICAzRCAgICAgICAgICAg ICAgeyBhbGlnbjEgMU4gfTsgLyogZzMuMSBoYXMgc2xpY2VJRCAqLworbXVsKDEpICAgICAgICAg IGczLjU8MT5EICAgICAgICBnMy4xPDAsMSwwPkQgICAgZzEuMTA8MCwxLDA+VVcgIHsgYWxpZ24x IDFOIH07CithZGQoMSkgICAgICAgICAgZzM8MT5EICAgICAgICAgIGczPDAsMSwwPkQgICAgICBn My41PDAsMSwwPkQgICAgeyBhbGlnbjEgMU4gfTsgLyogZzMgPSBzbGljZUlEICogU3ViU2xpY2VQ ZXJTbGljZUNvdW50ICsgSFNJRCAqLworc2hyKDEpICAgICAgICAgIGczLjI8MT5EICAgICAgICBz cjA8MCwxLDA+RCAgICAgOEQgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CithbmQoMSkgICAg ICAgICAgZzMuMjwxPkQgICAgICAgIGczLjI8MCwxLDA+RCAgICAxNUQgICAgICAgICAgICAgeyBh bGlnbjEgMU4gfTsgLyogZzMuMiA9IEVVSUQgKi8KK211bCgxKSAgICAgICAgICBnMy40PDE+RCAg ICAgICAgZzM8MCwxLDA+RCAgICAgIDE2RCAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworYWRk KDEpICAgICAgICAgIGczLjI8MT5EICAgICAgICBnMy4yPDAsMSwwPkQgICAgZzMuNDwwLDEsMD5E ICAgIHsgYWxpZ24xIDFOIH07IC8qIGczLjIgbm93IHBvaW50cyB0byBFVSByb3cgbnVtYmVyIChZ LXBpeGVsID0gViBhZGRyZXNzICkgIGluIGluc3RydW1lbnRhdGlvbiBzdXJmICovCisKK21vdig4 KSAgICAgICAgICBnNTwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAg ICB7IGFsaWduMSAxUSB9OworYW5kKDEpICAgICAgICAgIGczLjM8MT5EICAgICAgICBzcjA8MCwx LDA+RCAgICAgN0QgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CittdWwoMSkgICAgICAgICAg ZzMuMzwxPkQgICAgICAgIGczLjM8MCwxLDA+RCAgICA0RCAgICAgICAgICAgICAgeyBhbGlnbjEg MU4gfTsKKworbW92KDgpICAgICAgICAgIGc0PDE+VUQgICAgICAgICBnMDw4LDgsMT5VRCAgICAg ICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFRIH07IC8qIEluaXRpYWxpemUgbWVzc2FnZSBoZWFk ZXIgd2l0aCBnMCAqLworbW92KDEpICAgICAgICAgIGc0PDE+VUQgICAgICAgICBnMy4zPDAsMSww PlVEICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIEJsb2NrIG9mZnNldCAqLwor bW92KDEpICAgICAgICAgIGc0LjE8MT5VRCAgICAgICBnMy4yPDAsMSwwPlVEICAgICAgICAgICAg ICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIEJsb2NrIG9mZnNldCAqLworbW92KDEpICAgICAgICAg IGc0LjI8MT5VRCAgICAgICAweDAwMDAwMDAzVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24x IDFOIH07IC8qIEJsb2NrIHNpemUgKDEgcm93IHggNCBieXRlcykgKi8KK2FuZCgxKSAgICAgICAg ICBnNC4zPDE+VUQgICAgICAgZzQuMzwwLDEsMD5VVyAgIDB4ZmZmZmZmZmZVRCAgICB7IGFsaWdu MSAxTiB9OworCisvKiBNZWRpYSBibG9jayByZWFkIHRvIGZldGNoIGN1cnJlbnQgdmFsdWUgYXQg c3BlY2lmaWVkIGxvY2F0aW9uIGluIGluc3RydW1lbnRhdGlvbiBidWZmZXIgKi8KK3NlbmRjKDgp ICAgICAgICBnNTwxPlVEICAgICAgICAgZzQ8OCw4LDE+RiAgICAgIDB4MDIxOTAwMDEKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIgTXNnRGVzYzogbWVkaWEgYmxvY2sgcmVhZCBN c2dDdHJsID0gMHgwIFN1cmZhY2UgPSAxIG1sZW4gMSBybGVuIDEgeyBhbGlnbjEgMVEgfTsKK2Fk ZCgxKSAgICAgICAgICBnNTwxPkQgICAgICAgICAgZzU8MCwxLDA+RCAgICAgIDFEICAgICAgICAg ICAgICB7IGFsaWduMSAxTiB9OworCisvKiBNZWRpYSBibG9jayB3cml0ZSBmb3IgdXBkYXRlZCB2 YWx1ZSBhdCBzcGVjaWZpZWQgbG9jYXRpb24gaW4gaW5zdHJ1bWVudGF0aW9uIGJ1ZmZlciAqLwor c2VuZGMoOCkgICAgICAgIGc1PDE+VUQgICAgICAgICBnNDw4LDgsMT5GICAgICAgMHgwNDBhODAw MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlciBNc2dEZXNjOiBtZWRpYSBibG9j ayB3cml0ZSBNc2dDdHJsID0gMHgwIFN1cmZhY2UgPSAxIG1sZW4gMiBybGVuIDAgeyBhbGlnbjEg MVEgfTsKKy8qIERlbGF5IHRocmVhZCBmb3Igc3BlY2lmaWVkIHBhcmFtZXRlciAqLworYWRkLm56 LmYwLjAoMSkgIGcxLjI8MT5VRCAgICAgICBnMS4yPDAsMSwwPlVEICAgLTFEICAgICAgICAgICAg IHsgYWxpZ24xIDFOIH07CisoK2YwLjApIGptcGkoMSkgLTREICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgV0VfYWxsIDFOIH07CisKKy8qIFN0b3Jl IGRlc2lnbmF0ZWQgImNsZWFyIEdSRiIgdmFsdWUgKi8KK21vdigxKSAgICAgICAgICBmMC4xPDE+ VVcgICAgICAgZzEuMjwwLDEsMD5VVyAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9Owor CisvKiBJbml0aWFsaXplIGxvb3BpbmcgcGFyYW1ldGVycyAqLworbW92KDEpICAgICAgICAgIGEw PDE+RCAgICAgICAgICAwRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFO IH07IC8qIEluaXRpYWxpemUgYTAuMDp3PTAgKi8KK21vdigxKSAgICAgICAgICBhMC40PDE+VyAg ICAgICAgMTI3VyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBM b29wIGNvdW50LiBFYWNoIGxvb3AgY29udGFpbnMgMTYgR1JGJ3MgKi8KKworLyogV3JpdGUgMzJ4 MTYgYWxsICIwIiBibG9jayAqLworbW92KDgpICAgICAgICAgIGcyPDE+VUQgICAgICAgICBnMDw4 LDgsMT5VRCAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFRIH07Cittb3YoOCkgICAgICAg ICAgZzEyNzwxPlVEICAgICAgIGcwPDgsOCwxPlVEICAgICAgICAgICAgICAgICAgICAgeyBhbGln bjEgMVEgfTsKK21vdigyKSAgICAgICAgICBnMjwxPlVEICAgICAgICAgZzE8MiwyLDE+VVcgICAg ICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworbW92KDEpICAgICAgICAgIGcyLjI8MT5V RCAgICAgICAweDAwMGYwMDBmVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8q IEJsb2NrIHNpemUgKDE2eDE2KSAqLworYW5kKDEpICAgICAgICAgIGcyLjM8MT5VRCAgICAgICBn Mi4zPDAsMSwwPlVXICAgMHhmZmZmZmZlZlVEICAgIHsgYWxpZ24xIDFOIH07Cittb3YoMTYpICAg ICAgICAgZzM8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBh bGlnbjEgMUggfTsKK21vdigxNikgICAgICAgICBnNDwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVE ICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9OworbW92KDE2KSAgICAgICAgIGc1PDE+ VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07 Cittb3YoMTYpICAgICAgICAgZzY8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAg ICAgICAgICAgeyBhbGlnbjEgMUggfTsKK21vdigxNikgICAgICAgICBnNzwxPlVEICAgICAgICAg MHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9OworbW92KDE2KSAg ICAgICAgIGc4PDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsg YWxpZ24xIDFIIH07Cittb3YoMTYpICAgICAgICAgZzk8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBV RCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsKK21vdigxNikgICAgICAgICBnMTA8 MT5VRCAgICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9 Oworc2VuZGMoOCkgICAgICAgIG51bGw8MT5VRCAgICAgICBnMjw4LDgsMT5GICAgICAgMHgxMjBh ODAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlciBNc2dEZXNjOiBtZWRpYSBi bG9jayB3cml0ZSBNc2dDdHJsID0gMHgwIFN1cmZhY2UgPSAwIG1sZW4gOSBybGVuIDAgeyBhbGln bjEgMVEgfTsKK2FkZCgxKSAgICAgICAgICBnMjwxPlVEICAgICAgICAgZzE8MCwxLDA+VVcgICAg IDB4MDAxMFVXICAgICAgICB7IGFsaWduMSAxTiB9Oworc2VuZGMoOCkgICAgICAgIG51bGw8MT5V RCAgICAgICBnMjw4LDgsMT5GICAgICAgMHgxMjBhODAwMAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlbmRlciBNc2dEZXNjOiBtZWRpYSBibG9jayB3cml0ZSBNc2dDdHJsID0gMHgwIFN1 cmZhY2UgPSAwIG1sZW4gOSBybGVuIDAgeyBhbGlnbjEgMVEgfTsKKworLyogTm93LCBjbGVhciBh bGwgR1JGIHJlZ2lzdGVycyAqLworYWRkLm56LmYwLjAoMSkgIGEwLjQ8MT5XICAgICAgICBhMC40 PDAsMSwwPlcgICAgLTFXICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07Cittb3YoMTYpICAgICAg ICAgZ1thMF08MT5VVyAgICAgIGYwLjE8MCwxLDA+VVcgICAgICAgICAgICAgICAgICAgeyBhbGln bjEgMUggfTsKK2FkZCgxKSAgICAgICAgICBhMDwxPkQgICAgICAgICAgYTA8MCwxLDA+RCAgICAg IDMyRCAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworKCtmMC4wKSBqbXBpKDEpIC04RCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIFdFX2FsbCAx TiB9OworCisvKiBUZXJtaW5hbnRlIHRoZSB0aHJlYWQgKi8KK3NlbmRjKDgpICAgICAgICBudWxs PDE+VUQgICAgICAgZzEyNzw4LDgsMT5GICAgIDB4ODIwMDAwMTAKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aHJlYWRfc3Bhd25lciBNc2dEZXNjOiBtbGVuIDEgcmxlbiAwICAgICAgICAg ICB7IGFsaWduMSAxUSBFT1QgfTsKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pZ3QtZGV2Cg==