From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 369A16E435 for ; Tue, 18 Feb 2020 23:51:30 +0000 (UTC) From: Akeem G Abodunrin Date: Tue, 18 Feb 2020 08:35:40 -0800 Message-Id: <20200218163540.12637-2-akeem.g.abodunrin@intel.com> In-Reply-To: <20200218163540.12637-1-akeem.g.abodunrin@intel.com> References: <20200218163540.12637-1-akeem.g.abodunrin@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 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, igt-dev@lists.freedesktop.org, omer.aran@intel.com, pragyansri.pathi@intel.com, d.scott.phillips@intel.com, david.c.stewart@intel.com, tony.luck@intel.com List-ID: VGhpcyBwYXRjaCBhZGRzIHNjcmlwdCBhbmQgYXBwbGljYWJsZSBhc3NlbWJseSBzb3VyY2VzLCBz byB0aGF0IHdlIGNhbiB1c2UKaWd0IHRvIGFzc2VtYmxlIENsZWFyIEJhdGNoIEJ1ZmZlciBrZXJu ZWwgZm9yIGdlbjcgYW5kIGdlbjcuNSBkZXZpY2VzIC0KUmVzdWx0YW50IGhlYWRlciBmaWxlcyB3 b3VsZCBiZSBpbXBvcnRlZCB0byBpOTE1LCBhbmQgdXNlZCBhcyB0aGV5IGFyZS4uLgoKV2l0aCB0 aGlzIHBhdGNoLCB1c2VyIG5lZWQgdG8gaGF2ZSBtZXNhIGNvbmZpZ3VyZWQgb24gdGhlaXIgcGxh dGZvcm0sCmJlZm9yZSBpZ3QgY291bGQgYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBwdXJwb3NlIG9m IGFzc2VtYmxpbmcgdGhlIGtlcm5lbApmcm9tIHNvdXJjZS4KClRoaXMgaXMgbmVlZGVkIGZvciAi U2VjdXJpdHkgbWl0aWdhdGlvbiBmb3IgSW50ZWwgR2VuNy83LjUgSFdzIgpJbnRlbCBJRDogUFNJ UlQtVEEtMjAxOTEwLTAwMS9DVkVJRDogQ1ZFLTIwMTktMTQ2MTUKClNpZ25lZC1vZmYtYnk6IEFr ZWVtIEcgQWJvZHVucmluIDxha2VlbS5nLmFib2R1bnJpbkBpbnRlbC5jb20+Ci0tLQogc2NyaXB0 cy9hc21fZXVfa2VybmVsLnNoICAgICAgICAgICAgICAgIHwgMTQ5ICsrKysrKysrKysrKysrKysr KysrKysrKwogdG9vbHMvYXNzZW1ibHlfc291cmNlL2hzd19jbGVhcl9idWYuYXNtIHwgMTQxICsr KysrKysrKysrKysrKysrKysrKysKIHRvb2xzL2Fzc2VtYmx5X3NvdXJjZS9pdmJfY2xlYXJfYnVm LmFzbSB8IDEzOSArKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDQyOSBp bnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA3NTUgc2NyaXB0cy9hc21fZXVfa2VybmVsLnNo CiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvYXNzZW1ibHlfc291cmNlL2hzd19jbGVhcl9idWYu YXNtCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvYXNzZW1ibHlfc291cmNlL2l2Yl9jbGVhcl9i dWYuYXNtCgpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9hc21fZXVfa2VybmVsLnNoIGIvc2NyaXB0cy9h c21fZXVfa2VybmVsLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwLi5mMjY2 OWU1MgotLS0gL2Rldi9udWxsCisrKyBiL3NjcmlwdHMvYXNtX2V1X2tlcm5lbC5zaApAQCAtMCww ICsxLDE0OSBAQAorIyEvYmluL2Jhc2gKKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1J VAorIworIyBDb3B5cmlnaHQgwqkgMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQorIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorIyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisjIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz dWJsaWNlbnNlLAorIyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyMgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyMKKyMgVGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0 aGUgbmV4dAorIyBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisjIFNvZnR3YXJlLgorIworIyBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgorIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisjIFRIRSBBVVRI T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT IE9SIE9USEVSCisjIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisjIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyMgSU4g VEhFIFNPRlRXQVJFLgorCitleHBvcnQgQVNTRU1CTFlfU09VUkNFPS4vdG9vbHMvYXNzZW1ibHlf c291cmNlCisKK2Z1bmN0aW9uIGdldF9oZWxwIHsKKyAgICAgICAgZWNobyAiVXNhZ2U6ICAgIGFz bV9ldV9rZXJuZWwuc2ggW29wdGlvbnNdIgorICAgICAgICBlY2hvICJSZW1lbWJlciB0byBydW4g dGhpcyBhcyByb290IgorICAgICAgICBlY2hvICIgIgorICAgICAgICBlY2hvICJQbGVhc2UgbWFr ZSBzdXJlIHlvdXIgTUVTQSB0b29sIGlzIGNvbXBpbGVkLCBhbmQgcnVuIHRoaXMgc2NyaXB0IGZy b20gaWd0IGhvbWUgZGlyZWN0b3J5IgorICAgICAgICBlY2hvICIgIgorICAgICAgICBlY2hvICJP cHRpb25zIGFyZToiCisgICAgICAgIGVjaG8gIiAtaCAgICAgICAgICAgICAgICAgICAgICAgZGlz cGxheSB0aGlzIGhlbHAgbWVzc2FnZSwgYW5kIGV4aXQiCisgICAgICAgIGVjaG8gIiAtZz1wbGF0 Zm9ybSAgICAgICAgICAgICAgZ2VuZXJhdGlvbiBvZiBkZXZpY2U6IHVzZSAiaHN3IiBmb3IgZ2Vu Ny41LCBhbmQgIml2YiIgZm9yIGdlbjcgZGV2aWNlcyIKKyAgICAgICAgZWNobyAiIC1vPW5hbWVf b2ZfZmlsZSAgICAgICAgICBvdXRwdXQgZmlsZSB0byBzdG9yZSByZXN1bHQgLSBvdGhlcndpc2Ug ZGVmYXVsdCB3b3VsZCBiZSB1c2VkIgorICAgICAgICBlY2hvICIgLW09bWVzYSAgICAgICAgICAg ICAgICAgIGRpcmVjdG9yeSBzcGVjaWZ5IG1lc2EgZGlyZWN0b3J5IgorICAgICAgICBlY2hvICIg IgorICAgICAgICBlY2hvICIgVXNhZ2UgZXhhbXBsZTogXCJzY3JpcHRzL2FzbV9ldV9rZXJuZWwu c2ggLWcgaHN3IC1vIGhzd19jbGVhcl9idWZmZXIuaCAtbSAvaG9tZS9PZ2JvanVPZGUvaW50ZWxf Z3B1L21lc2FcIiIKK30KKworZnVuY3Rpb24gaW5jbHVkZV9ndWFyZCAjICQxPWZpbGVuYW1lCit7 CisJZWNobyAiX18kKGJhc2VuYW1lICQxKV9fIiB8IHRyIFs6bG93ZXI6XSBbOnVwcGVyOl0gfCB0 ciBbOnB1bmN0Ol0gXworfQorCitmdW5jdGlvbiBwcmVmaXhfaGVhZGVyICMgJDE9ZmlsZW5hbWUg JDI9Y29tbWVudAoreworCWd1YXJkPSQoaW5jbHVkZV9ndWFyZCAkMSkKKwljb21tZW50PSQyCisK KwljYXQgPDxFT0YKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKy8qCisgKiBD b3B5cmlnaHQgwqkgMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIEdlbmVyYXRlIGJ5OiBJ bnRlbC1ncHUtdG9vbHMgb24gJChkYXRlKQorICovCisKKyNpZm5kZWYgJGd1YXJkCisjZGVmaW5l ICRndWFyZAorCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworLyogJGNvbW1lbnQgKi8KK0VP RgorfQorCitmdW5jdGlvbiBwb3N0Zml4X2Zvb3RlciAjIGZpbGVuYW1lCit7CisJZ3VhcmQ9JChp bmNsdWRlX2d1YXJkICQxKQorCisJY2F0IDw8RU9GCisKKworI2VuZGlmIC8qICRndWFyZCAqLwor RU9GCit9CisKK2Z1bmN0aW9uIGFzbV9jYl9rZXJuZWwgIyBhcy1yb290IDxhcmdzPgoreworICAg ICAgICBpZiBbIC1mICIkb3V0cHV0X2ZpbGUiIF07IHRoZW4KKyAgICAgICAgICAgICAgICBlY2hv IC1lICJXYXJuaW5nOiBUaGUgXCIkb3V0cHV0X2ZpbGVcIiBmaWxlIGFscmVhZHkgZXhpc3QgLSBj aG9vc2UgYW5vdGhlciBmaWxlIG5hbWUiCisgICAgICAgICAgICAgICAgZWNobyAtZSAiT3RoZXJ3 aXNlLCBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuLCBhbmQgZGVmYXVsdCBmaWxlIGZvciBpOTE1IHdp bGwgYmUgZ2VuZXJhdGVkXG4iCisgICAgICAgIGZpCisKKyAgICAgICAgIyBVc2luZyBpOTY1X2Fz bSB0b29sIHRvIGFzc2VtYmxlIGhleCBmaWxlIGZyb20gYXNzZW1ibHkgc291cmNlCisgICAgICAg ICRJOTY1X0FTTSAtZyAkZ2VuX2RldmljZSAtdCBjX2xpdGVyYWwgICRpbnB1dF9hc21fc291cmNl IC1vICRvdXRwdXRfZmlsZQorCisgICAgICAgICMgR2VuZXJhdGUgaGVhZGVyIGZpbGUKKyAgICAg ICAgaWYgWyAiJGdlbl9kZXZpY2UiID09ICJoc3ciIF07IHRoZW4KKyAgICAgICAgICAgICAgICBl Y2hvICJHZW5lcmF0aW5nIGdlbjcuNSBDQiBLZXJuZWwgaGVhZGVyIGZpbGUgXCJnZW43XzVfY2xl YXJidWZmZXIuaFwiIGZvciBpOTE1IGRyaXZlci4uLiIKKworICAgICAgICAgICAgICAgIGk5MTVf ZmlsZW5hbWU9Z2VuN181X2NsZWFyYnVmZmVyLmgKKyAgICAgICAgICAgICAgICBwcmVmaXhfaGVh ZGVyICRpOTE1X2ZpbGVuYW1lICJNZWRpYSBDQiBLZXJuZWwgZm9yIGdlbjcuNSBkZXZpY2VzIiA+ ICRpOTE1X2ZpbGVuYW1lCisgICAgICAgICAgICAgICAgY2F0ICRvdXRwdXRfZmlsZSA+PiAkaTkx NV9maWxlbmFtZQorICAgICAgICAgICAgICAgIHBvc3RmaXhfZm9vdGVyICRpOTE1X2ZpbGVuYW1l ID4+ICRpOTE1X2ZpbGVuYW1lCisKKyAgICAgICAgZWxpZiBbICIkZ2VuX2RldmljZSIgPT0gIml2 YiIgXTsgdGhlbgorICAgICAgICAgICAgICAgIGVjaG8gIkdlbmVyYXRpbmcgZ2VuNyBDQiBLZXJu ZWwgaGVhZGVyIGZpbGUgXCJnZW43X2NsZWFyYnVmZmVyLmhcIiBmb3IgaTkxNSBkcml2ZXIuLi4i CisKKyAgICAgICAgICAgICAgICBpOTE1X2ZpbGVuYW1lPWdlbjdfY2xlYXJidWZmZXIuaAorICAg ICAgICAgICAgICAgIHByZWZpeF9oZWFkZXIgJGk5MTVfZmlsZW5hbWUgIk1lZGlhIENCIEtlcm5l bCBmb3IgZ2VuNyBkZXZpY2VzIiA+ICRpOTE1X2ZpbGVuYW1lCisgICAgICAgICAgICAgICAgY2F0 ICRvdXRwdXRfZmlsZSA+PiAkaTkxNV9maWxlbmFtZQorICAgICAgICAgICAgICAgIHBvc3RmaXhf Zm9vdGVyICRpOTE1X2ZpbGVuYW1lID4+ICRpOTE1X2ZpbGVuYW1lCisgICAgICAgIGZpCit9CisK K3doaWxlIGdldG9wdHMgImhnOm86bToiIG9wdDsgZG8KKwljYXNlICRvcHQgaW4KKwkJaCkgZ2V0 X2hlbHA7IGV4aXQgMDs7CisJCWcpIGdlbl9kZXZpY2U9IiRPUFRBUkciIDs7CisJCW8pIG91dHB1 dF9maWxlPSIkT1BUQVJHIiA7OworICAgICAgICAgICAgICAgIG0pIG1lc2FfZGlyPSIkT1BUQVJH IiA7OworCQlcPykKKwkJCWVjaG8gIlVua25vd24gb3B0aW9uOiAtJE9QVEFSRyIKKwkJCWdldF9o ZWxwCisJCQlleGl0IDEKKwkJCTs7CisJZXNhYworZG9uZQorc2hpZnQgJCgoJE9QVElORC0xKSkK KworaWYgWyAieCQxIiAhPSAieCIgXTsgdGhlbgorCWVjaG8gIlVua25vd24gb3B0aW9uOiAkMSIK KwlnZXRfaGVscAorCWV4aXQgMQorZmkKKworSTk2NV9BU009IiRtZXNhX2Rpci9idWlsZC9kZWJ1 Zy9zcmMvaW50ZWwvdG9vbHMvaTk2NV9hc20iCitpZiBbICEgLWYgJHtJOTY1X0FTTX0gXTsgdGhl bgorICAgICAgICBlY2hvICJpOTY1X2FzbSBub3QgZm91bmQgYXQgJHtJOTY1X0FTTX0iCisgICAg ICAgIGdldF9oZWxwCisgICAgICAgIGV4aXQgMQorZmkKKworaWYgWyAieCRnZW5fZGV2aWNlIiAh PSAieCIgXTsgdGhlbgorICAgICAgICBpZiBbICIkZ2VuX2RldmljZSIgPT0gImhzdyIgXTsgdGhl bgorICAgICAgICAgICAgICAgIGlucHV0X2FzbV9zb3VyY2U9IiR7QVNTRU1CTFlfU09VUkNFfS9o c3dfY2xlYXJfYnVmLmFzbSIKKyAgICAgICAgZWxpZiBbICIkZ2VuX2RldmljZSIgPT0gIml2YiIg XTsgdGhlbgorICAgICAgICAgICAgICAgIGlucHV0X2FzbV9zb3VyY2U9IiR7QVNTRU1CTFlfU09V UkNFfS9pdmJfY2xlYXJfYnVmLmFzbSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVj aG8gIlVua25vd24gcGxhdGZvcm0gc3BlY2lmaWVkIgorICAgICAgICAgICAgICAgIGdldF9oZWxw CisgICAgICAgICAgICAgICAgZXhpdCAxCisgICAgICAgIGZpCisJYXNtX2NiX2tlcm5lbAorZmkK ZGlmZiAtLWdpdCBhL3Rvb2xzL2Fzc2VtYmx5X3NvdXJjZS9oc3dfY2xlYXJfYnVmLmFzbSBiL3Rv b2xzL2Fzc2VtYmx5X3NvdXJjZS9oc3dfY2xlYXJfYnVmLmFzbQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMC4uYmMyOWJhZjIKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9hc3Nl bWJseV9zb3VyY2UvaHN3X2NsZWFyX2J1Zi5hc20KQEAgLTAsMCArMSwxNDEgQEAKKy8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMCBJbnRl bCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp LAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBo KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z IG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICog TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FS RS4KKyAqCisgKi8KKworLyoqCisgKiBLZXJuZWwgbmFtZTogaHN3X2NsZWFyX2J1Zi5hc20KKyAq CisgKiBLZXJuZWwgZm9yIFBBVlAgYnVmZmVyIGNsZWFyLgorICoKKyAqCTEuIENsZWFyIGFsbCA2 NCBHUkYgcmVnaXN0ZXJzIGFzc2lnbmVkIHRvIHRoZSBrZXJuZWwgd2l0aCBkZXNpZ25hdGVkIHZh bHVlOworICoJMi4gV3JpdGUgMzJ4MTYgYmxvY2sgb2YgYWxsICIwIiB0byByZW5kZXIgdGFyZ2V0 IGJ1ZmZlciB3aGljaCBpbmRpcmVjdGx5IGNsZWFycworICoJICAgNTEyIGJ5dGVzIG9mIFJlbmRl ciBDYWNoZS4KKyAqLworCisvKiBTdG9yZSBkZXNpZ25hdGVkICJjbGVhciBHUkYiIHZhbHVlICov Cittb3YoMSkgICAgICAgICAgZjAuMTwxPlVXICAgICAgIGcxLjI8MCwxLDA+VVcgICAgICAgICAg ICAgICAgICAgeyBhbGlnbjEgMU4gfTsKKworLyoqCisgKiBDdXJiZSBGb3JtYXQKKyAqCisgKiBE VyAxLjAgLSBCbG9jayBPZmZzZXQgdG8gd3JpdGUgUmVuZGVyIENhY2hlCisgKiBEVyAxLjEgWzE1 OjBdIC0gQ2xlYXIgV29yZAorICogRFcgMS4yIC0gRGVsYXkgaXRlcmF0aW9ucworICogRFcgMS4z IC0gRW5hYmxlIEluc3RydW1lbnRhdGlvbiAob25seSBmb3IgZGVidWcpCisgKiBEVyAxLjQgLSBS c3ZkIChpbnRlbmRlZCBmb3IgY29udGV4dCBJRCkKKyAqIERXIDEuNSAtIFszMToxNl06U2xpY2VD b3VudCwgWzE1OjBdOlN1YlNsaWNlUGVyU2xpY2VDb3VudAorICogRFcgMS42IC0gUnN2ZCBNQlog KGludGVuZGVkIGZvciBFbmFibGUgV2FpdCBvbiBUb3RhbCBUaHJlYWQgQ291bnQpCisgKiBEVyAx LjcgLSBSc3ZkIE1CWiAoaW50ZWRlZCBmb3IgVG90YWwgVGhyZWFkIENvdW50KQorICoKKyAqIEJp bmRpbmcgVGFibGUKKyAqCisgKiBCVEkgMDogMkQgU3VyZmFjZSB0byBoZWxwIGNsZWFyIEwzIChS ZW5kZXIvRGF0YSBDYWNoZSkKKyAqIEJUSSAxOiBXYWl0L0luc3RydW1lbnRhdGlvbiBCdWZmZXIK KyAqICBTaXplIDogKFNsaWNlQ291bnQgKiBTdWJTbGljZUNvdW50ICAqIDE2IEVVcy9TdWJTbGlj ZSkgcm93cyAqICgxNiB0aHJlYWRzL0VVKSBjb2xzIChGb3JtYXQgUjMyX1VJTlQpCisgKiAgICAg ICAgIEV4cGVjdGVkIHRvIGJlIGluaXRpYWxpemVkIHRvIDAgYnkgZHJpdmVyL2Fub3RoZXIga2Vy bmVsCisgKiAgTGF5b3V0OgorICogICAgICAgICAgUm93TjogSGlzdG9ncmFtIGZvciBFVS1OOiAo U2xpY2VJRCpTdWJTbGljZVBlclNsaWNlQ291bnQgKyBTU0lEKSoxNiArIEVVSUQgW2Fzc3VtZSBt YXggMTYgRVVzIC8gU1NdCisgKiAgICAgICAgICBDb2wta1tEVy1rXTogVGhyZWFkcyBFeGVjdXRl ZCBvbiBUaHJlYWRJRC1rIGZvciBFVS1OCisgKi8KK2FkZCgxKSAgICAgICAgICBnMS4yPDE+VUQg ICAgICAgZzEuMjwwLDEsMD5VRCAgIDB4MDAwMDAwMDFVRCAgICB7IGFsaWduMSAxTiB9OyAvKiBM b29wIGNvdW50IHRvIGRlbGF5IGtlcm5lbDogSW5pdCB0byAoZzEuMiArIDEpICovCitjbXAuei5m MC4wKDEpICAgbnVsbDwxPlVEICAgICAgIGcxLjM8MCwxLDA+VUQgICAweDAwMDAwMDAwVUQgICAg eyBhbGlnbjEgMU4gfTsKKygrZjAuMCkgam1waSgxKSAzNTJEICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSBXRV9hbGwgMU4gfTsKKworLyoqCisgKiBT dGF0ZSBSZWdpc3RlciBoYXMgaW5mbyBvbiB3aGVyZSB0aGlzIHRocmVhZCBpcyBydW5uaW5nCisg KglJVkI6IHNyMC4wIDo6IFsxNToxM106IE1CWiwgMTI6IEhTSUQgKEhhbGYtU2xpY2UgSUQpLCBb MTE6OF1FVUlELCBbMjowXSBUaHJlYWRTbG90SUQKKyAqCUhTVzogc3IwLjAgOjogMTU6IE1CWiwg WzE0OjEzXTogU2xpY2VJRCwgMTI6IEhTSUQgKEhhbGYtU2xpY2UgSUQpLCBbMTE6OF1FVUlELCBb MjowXSBUaHJlYWRTbG90SUQKKyAqLworbW92KDgpICAgICAgICAgIGczPDE+VUQgICAgICAgICAw eDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFRIH07CitzaHIoMSkgICAg ICAgICAgZzM8MT5EICAgICAgICAgIHNyMDwwLDEsMD5EICAgICAxMkQgICAgICAgICAgICAgeyBh bGlnbjEgMU4gfTsKK2FuZCgxKSAgICAgICAgICBnMzwxPkQgICAgICAgICAgZzM8MCwxLDA+RCAg ICAgIDFEICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBnMyBoYXMgSFNJRCAqLworc2hy KDEpICAgICAgICAgIGczLjE8MT5EICAgICAgICBzcjA8MCwxLDA+RCAgICAgMTNEICAgICAgICAg ICAgIHsgYWxpZ24xIDFOIH07CithbmQoMSkgICAgICAgICAgZzMuMTwxPkQgICAgICAgIGczLjE8 MCwxLDA+RCAgICAzRCAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyogZzMuMSBoYXMgc2xp Y2VJRCAqLworbXVsKDEpICAgICAgICAgIGczLjU8MT5EICAgICAgICBnMy4xPDAsMSwwPkQgICAg ZzEuMTA8MCwxLDA+VVcgIHsgYWxpZ24xIDFOIH07CithZGQoMSkgICAgICAgICAgZzM8MT5EICAg ICAgICAgIGczPDAsMSwwPkQgICAgICBnMy41PDAsMSwwPkQgICAgeyBhbGlnbjEgMU4gfTsgLyog ZzMgPSBzbGljZUlEICogU3ViU2xpY2VQZXJTbGljZUNvdW50ICsgSFNJRCAqLworc2hyKDEpICAg ICAgICAgIGczLjI8MT5EICAgICAgICBzcjA8MCwxLDA+RCAgICAgOEQgICAgICAgICAgICAgIHsg YWxpZ24xIDFOIH07CithbmQoMSkgICAgICAgICAgZzMuMjwxPkQgICAgICAgIGczLjI8MCwxLDA+ RCAgICAxNUQgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyogZzMuMiA9IEVVSUQgKi8KK211 bCgxKSAgICAgICAgICBnMy40PDE+RCAgICAgICAgZzM8MCwxLDA+RCAgICAgIDE2RCAgICAgICAg ICAgICB7IGFsaWduMSAxTiB9OworYWRkKDEpICAgICAgICAgIGczLjI8MT5EICAgICAgICBnMy4y PDAsMSwwPkQgICAgZzMuNDwwLDEsMD5EICAgIHsgYWxpZ24xIDFOIH07IC8qIGczLjIgbm93IHBv aW50cyB0byBFVSByb3cgbnVtYmVyIChZLXBpeGVsID0gViBhZGRyZXNzICkgIGluIGluc3RydW1l bnRhdGlvbiBzdXJmICovCisKK21vdig4KSAgICAgICAgICBnNTwxPlVEICAgICAgICAgMHgwMDAw MDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxUSB9OworYW5kKDEpICAgICAgICAg IGczLjM8MT5EICAgICAgICBzcjA8MCwxLDA+RCAgICAgN0QgICAgICAgICAgICAgIHsgYWxpZ24x IDFOIH07CittdWwoMSkgICAgICAgICAgZzMuMzwxPkQgICAgICAgIGczLjM8MCwxLDA+RCAgICA0 RCAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKKworbW92KDgpICAgICAgICAgIGc0PDE+VUQg ICAgICAgICBnMDw4LDgsMT5VRCAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFRIH07IC8q IEluaXRpYWxpemUgbWVzc2FnZSBoZWFkZXIgd2l0aCBnMCAqLworbW92KDEpICAgICAgICAgIGc0 PDE+VUQgICAgICAgICBnMy4zPDAsMSwwPlVEICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFO IH07IC8qIEJsb2NrIG9mZnNldCAqLworbW92KDEpICAgICAgICAgIGc0LjE8MT5VRCAgICAgICBn My4yPDAsMSwwPlVEICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIEJsb2NrIG9m ZnNldCAqLworbW92KDEpICAgICAgICAgIGc0LjI8MT5VRCAgICAgICAweDAwMDAwMDAzVUQgICAg ICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIEJsb2NrIHNpemUgKDEgcm93IHggNCBi eXRlcykgKi8KK2FuZCgxKSAgICAgICAgICBnNC4zPDE+VUQgICAgICAgZzQuMzwwLDEsMD5VVyAg IDB4ZmZmZmZmZmZVRCAgICB7IGFsaWduMSAxTiB9OworCisvKiBNZWRpYSBibG9jayByZWFkIHRv IGZldGNoIGN1cnJlbnQgdmFsdWUgYXQgc3BlY2lmaWVkIGxvY2F0aW9uIGluIGluc3RydW1lbnRh dGlvbiBidWZmZXIgKi8KK3NlbmRjKDgpICAgICAgICBnNTwxPlVEICAgICAgICAgZzQ8OCw4LDE+ RiAgICAgIDB4MDIxOTAwMDEKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlciBN c2dEZXNjOiBtZWRpYSBibG9jayByZWFkIE1zZ0N0cmwgPSAweDAgU3VyZmFjZSA9IDEgbWxlbiAx IHJsZW4gMSB7IGFsaWduMSAxUSB9OworYWRkKDEpICAgICAgICAgIGc1PDE+RCAgICAgICAgICBn NTwwLDEsMD5EICAgICAgMUQgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CisKKy8qIE1lZGlh IGJsb2NrIHdyaXRlIGZvciB1cGRhdGVkIHZhbHVlIGF0IHNwZWNpZmllZCBsb2NhdGlvbiBpbiBp bnN0cnVtZW50YXRpb24gYnVmZmVyICovCitzZW5kYyg4KSAgICAgICAgZzU8MT5VRCAgICAgICAg IGc0PDgsOCwxPkYgICAgICAweDA0MGE4MDAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVuZGVyIE1zZ0Rlc2M6IG1lZGlhIGJsb2NrIHdyaXRlIE1zZ0N0cmwgPSAweDAgU3VyZmFjZSA9 IDEgbWxlbiAyIHJsZW4gMCB7IGFsaWduMSAxUSB9OworCisvKiBEZWxheSB0aHJlYWQgZm9yIHNw ZWNpZmllZCBwYXJhbWV0ZXIgKi8KK2FkZC5uei5mMC4wKDEpICBnMS4yPDE+VUQgICAgICAgZzEu MjwwLDEsMD5VRCAgIC0xRCAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworKCtmMC4wKSBqbXBp KDEpIC0zMkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYWxp Z24xIFdFX2FsbCAxTiB9OworCisvKiBTdG9yZSBkZXNpZ25hdGVkICJjbGVhciBHUkYiIHZhbHVl ICovCittb3YoMSkgICAgICAgICAgZjAuMTwxPlVXICAgICAgIGcxLjI8MCwxLDA+VVcgICAgICAg ICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKKworLyogSW5pdGlhbGl6ZSBsb29waW5nIHBhcmFt ZXRlcnMgKi8KK21vdigxKSAgICAgICAgICBhMDwxPkQgICAgICAgICAgMEQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBJbml0aWFsaXplIGEwLjA6dz0wICov Cittb3YoMSkgICAgICAgICAgYTAuNDwxPlcgICAgICAgIDEyN1cgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyogTG9vcCBjb3VudC4gRWFjaCBsb29wIGNvbnRhaW5z IDE2IEdSRidzICovCisKKy8qIFdyaXRlIDMyeDE2IGFsbCAiMCIgYmxvY2sgKi8KK21vdig4KSAg ICAgICAgICBnMjwxPlVEICAgICAgICAgZzA8OCw4LDE+VUQgICAgICAgICAgICAgICAgICAgICB7 IGFsaWduMSAxUSB9OworbW92KDgpICAgICAgICAgIGcxMjc8MT5VRCAgICAgICBnMDw4LDgsMT5V RCAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFRIH07Cittb3YoMikgICAgICAgICAgZzI8 MT5VRCAgICAgICAgIGcxPDIsMiwxPlVXICAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMU4g fTsKK21vdigxKSAgICAgICAgICBnMi4yPDE+VUQgICAgICAgMHgwMDBmMDAwZlVEICAgICAgICAg ICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBCbG9jayBzaXplICgxNngxNikgKi8KK2FuZCgx KSAgICAgICAgICBnMi4zPDE+VUQgICAgICAgZzIuMzwwLDEsMD5VVyAgIDB4ZmZmZmZmZWZVRCAg ICB7IGFsaWduMSAxTiB9OworbW92KDE2KSAgICAgICAgIGczPDE+VUQgICAgICAgICAweDAwMDAw MDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07Cittb3YoMTYpICAgICAgICAg ZzQ8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEg MUggfTsKK21vdigxNikgICAgICAgICBnNTwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAg ICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9OworbW92KDE2KSAgICAgICAgIGc2PDE+VUQgICAg ICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07Cittb3Yo MTYpICAgICAgICAgZzc8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAg ICAgeyBhbGlnbjEgMUggfTsKK21vdigxNikgICAgICAgICBnODwxPlVEICAgICAgICAgMHgwMDAw MDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9OworbW92KDE2KSAgICAgICAg IGc5PDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24x IDFIIH07Cittb3YoMTYpICAgICAgICAgZzEwPDE+VUQgICAgICAgIDB4MDAwMDAwMDBVRCAgICAg ICAgICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsKK3NlbmRjKDgpICAgICAgICBudWxsPDE+VUQg ICAgICAgZzI8OCw4LDE+RiAgICAgIDB4MTIwYTgwMDAKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZW5kZXIgTXNnRGVzYzogbWVkaWEgYmxvY2sgd3JpdGUgTXNnQ3RybCA9IDB4MCBTdXJm YWNlID0gMCBtbGVuIDkgcmxlbiAwIHsgYWxpZ24xIDFRIH07CithZGQoMSkgICAgICAgICAgZzI8 MT5VRCAgICAgICAgIGcxPDAsMSwwPlVXICAgICAweDAwMTBVVyAgICAgICAgeyBhbGlnbjEgMU4g fTsKK3NlbmRjKDgpICAgICAgICBudWxsPDE+VUQgICAgICAgZzI8OCw4LDE+RiAgICAgIDB4MTIw YTgwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIgTXNnRGVzYzogbWVkaWEg YmxvY2sgd3JpdGUgTXNnQ3RybCA9IDB4MCBTdXJmYWNlID0gMCBtbGVuIDkgcmxlbiAwIHsgYWxp Z24xIDFRIH07CisKKy8qIE5vdywgY2xlYXIgYWxsIEdSRiByZWdpc3RlcnMgKi8KK2FkZC5uei5m MC4wKDEpICBhMC40PDE+VyAgICAgICAgYTAuNDwwLDEsMD5XICAgIC0xVyAgICAgICAgICAgICB7 IGFsaWduMSAxTiB9OworbW92KDE2KSAgICAgICAgIGdbYTBdPDE+VVcgICAgICBmMC4xPDAsMSww PlVXICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07CithZGQoMSkgICAgICAgICAgYTA8 MT5EICAgICAgICAgIGEwPDAsMSwwPkQgICAgICAzMkQgICAgICAgICAgICAgeyBhbGlnbjEgMU4g fTsKKygrZjAuMCkgam1waSgxKSAtNjREICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7IGFsaWduMSBXRV9hbGwgMU4gfTsKKworLyogVGVybWluYW50ZSB0aGUgdGhy ZWFkICovCitzZW5kYyg4KSAgICAgICAgbnVsbDwxPlVEICAgICAgIGcxMjc8OCw4LDE+RiAgICAw eDgyMDAwMDEwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX3NwYXduZXIgTXNn RGVzYzogbWxlbiAxIHJsZW4gMCAgICAgICAgICAgeyBhbGlnbjEgMVEgRU9UIH07CmRpZmYgLS1n aXQgYS90b29scy9hc3NlbWJseV9zb3VyY2UvaXZiX2NsZWFyX2J1Zi5hc20gYi90b29scy9hc3Nl bWJseV9zb3VyY2UvaXZiX2NsZWFyX2J1Zi5hc20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAuLmIyMWJjOTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvYXNzZW1ibHlfc291 cmNlL2l2Yl9jbGVhcl9idWYuYXNtCkBAIC0wLDAgKzEsMTM5IEBACisvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogTUlUICovCisvKgorICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9y YXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo b3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBT b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj b25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwg YmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUK KyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB UklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgor ICovCisKKy8qKgorICogS2VybmVsIG5hbWU6IGl2Yl9jbGVhcl9idWYuYXNtCisgKgorICogS2Vy bmVsIGZvciBQQVZQIGJ1ZmZlciBjbGVhci4KKyAqCisgKgkxLiBDbGVhciBhbGwgNjQgR1JGIHJl Z2lzdGVycyBhc3NpZ25lZCB0byB0aGUga2VybmVsIHdpdGggZGVzaWduYXRlZCB2YWx1ZTsKKyAq CTIuIFdyaXRlIDMyeDE2IGJsb2NrIG9mIGFsbCAiMCIgdG8gcmVuZGVyIHRhcmdldCBidWZmZXIg d2hpY2ggaW5kaXJlY3RseSBjbGVhcnMKKyAqCSAgIDUxMiBieXRlcyBvZiBSZW5kZXIgQ2FjaGUu CisgKi8KKworLyogU3RvcmUgZGVzaWduYXRlZCAiY2xlYXIgR1JGIiB2YWx1ZSAqLworbW92KDEp ICAgICAgICAgIGYwLjE8MT5VVyAgICAgICBnMS4yPDAsMSwwPlVXICAgICAgICAgICAgICAgICAg IHsgYWxpZ24xIDFOIH07CisKKy8qKgorICogQ3VyYmUgRm9ybWF0CisgKgorICogRFcgMS4wIC0g QmxvY2sgT2Zmc2V0IHRvIHdyaXRlIFJlbmRlciBDYWNoZQorICogRFcgMS4xIFsxNTowXSAtIENs ZWFyIFdvcmQKKyAqIERXIDEuMiAtIERlbGF5IGl0ZXJhdGlvbnMKKyAqIERXIDEuMyAtIEVuYWJs ZSBJbnN0cnVtZW50YXRpb24gKG9ubHkgZm9yIGRlYnVnKQorICogRFcgMS40IC0gUnN2ZCAoaW50 ZW5kZWQgZm9yIGNvbnRleHQgSUQpCisgKiBEVyAxLjUgLSBbMzE6MTZdOlNsaWNlQ291bnQsIFsx NTowXTpTdWJTbGljZVBlclNsaWNlQ291bnQKKyAqIERXIDEuNiAtIFJzdmQgTUJaIChpbnRlbmRl ZCBmb3IgRW5hYmxlIFdhaXQgb24gVG90YWwgVGhyZWFkIENvdW50KQorICogRFcgMS43IC0gUnN2 ZCBNQlogKGludGVkZWQgZm9yIFRvdGFsIFRocmVhZCBDb3VudCkKKyAqCisgKiBCaW5kaW5nIFRh YmxlCisgKgorICogQlRJIDA6IDJEIFN1cmZhY2UgdG8gaGVscCBjbGVhciBMMyAoUmVuZGVyL0Rh dGEgQ2FjaGUpCisgKiBCVEkgMTogV2FpdC9JbnN0cnVtZW50YXRpb24gQnVmZmVyCisgKiAgU2l6 ZSA6IChTbGljZUNvdW50ICogU3ViU2xpY2VDb3VudCAgKiAxNiBFVXMvU3ViU2xpY2UpIHJvd3Mg KiAoMTYgdGhyZWFkcy9FVSkgY29scyAoRm9ybWF0IFIzMl9VSU5UKQorICogICAgICAgICBFeHBl Y3RlZCB0byBiZSBpbml0aWFsaXplZCB0byAwIGJ5IGRyaXZlci9hbm90aGVyIGtlcm5lbAorICog IExheW91dCA6CisgKiAgICAgICAgICAgUm93TjogSGlzdG9ncmFtIGZvciBFVS1OOiAoU2xpY2VJ RCpTdWJTbGljZVBlclNsaWNlQ291bnQgKyBTU0lEKSoxNiArIEVVSUQgW2Fzc3VtZSBtYXggMTYg RVVzIC8gU1NdCisgKiAgICAgICAgICAgQ29sLWtbRFcta106IFRocmVhZHMgRXhlY3V0ZWQgb24g VGhyZWFkSUQtayBmb3IgRVUtTgorICovCithZGQoMSkgICAgICAgICAgZzEuMjwxPlVEICAgICAg IGcxLjI8MCwxLDA+VUQgICAweDAwMDAwMDAxVUQgICAgeyBhbGlnbjEgMU4gfTsgLyogTG9vcCBj b3VudCB0byBkZWxheSBrZXJuZWw6IEluaXQgdG8gKGcxLjIgKyAxKSAqLworY21wLnouZjAuMCgx KSAgIG51bGw8MT5VRCAgICAgICBnMS4zPDAsMSwwPlVEICAgMHgwMDAwMDAwMFVEICAgIHsgYWxp Z24xIDFOIH07CisoK2YwLjApIGptcGkoMSkgNDREICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgV0VfYWxsIDFOIH07CisKKy8qKgorICogU3RhdGUg UmVnaXN0ZXIgaGFzIGluZm8gb24gd2hlcmUgdGhpcyB0aHJlYWQgaXMgcnVubmluZworICoJSVZC OiBzcjAuMCA6OiBbMTU6MTNdOiBNQlosIDEyOiBIU0lEIChIYWxmLVNsaWNlIElEKSwgWzExOjhd RVVJRCwgWzI6MF0gVGhyZWFkU2xvdElECisgKglIU1c6IHNyMC4wIDo6IDE1OiBNQlosIFsxNDox M106IFNsaWNlSUQsIDEyOiBIU0lEIChIYWxmLVNsaWNlIElEKSwgWzExOjhdRVVJRCwgWzI6MF0g VGhyZWFkU2xvdElECisgKi8KK21vdig4KSAgICAgICAgICBnMzwxPlVEICAgICAgICAgMHgwMDAw MDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxUSB9Oworc2hyKDEpICAgICAgICAg IGczPDE+RCAgICAgICAgICBzcjA8MCwxLDA+RCAgICAgMTJEICAgICAgICAgICAgIHsgYWxpZ24x IDFOIH07CithbmQoMSkgICAgICAgICAgZzM8MT5EICAgICAgICAgIGczPDAsMSwwPkQgICAgICAx RCAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyogZzMgaGFzIEhTSUQgKi8KK3NocigxKSAg ICAgICAgICBnMy4xPDE+RCAgICAgICAgc3IwPDAsMSwwPkQgICAgIDEzRCAgICAgICAgICAgICB7 IGFsaWduMSAxTiB9OworYW5kKDEpICAgICAgICAgIGczLjE8MT5EICAgICAgICBnMy4xPDAsMSww PkQgICAgM0QgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIGczLjEgaGFzIHNsaWNlSUQg Ki8KK211bCgxKSAgICAgICAgICBnMy41PDE+RCAgICAgICAgZzMuMTwwLDEsMD5EICAgIGcxLjEw PDAsMSwwPlVXICB7IGFsaWduMSAxTiB9OworYWRkKDEpICAgICAgICAgIGczPDE+RCAgICAgICAg ICBnMzwwLDEsMD5EICAgICAgZzMuNTwwLDEsMD5EICAgIHsgYWxpZ24xIDFOIH07IC8qIGczID0g c2xpY2VJRCAqIFN1YlNsaWNlUGVyU2xpY2VDb3VudCArIEhTSUQgKi8KK3NocigxKSAgICAgICAg ICBnMy4yPDE+RCAgICAgICAgc3IwPDAsMSwwPkQgICAgIDhEICAgICAgICAgICAgICB7IGFsaWdu MSAxTiB9OworYW5kKDEpICAgICAgICAgIGczLjI8MT5EICAgICAgICBnMy4yPDAsMSwwPkQgICAg MTVEICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIGczLjIgPSBFVUlEICovCittdWwoMSkg ICAgICAgICAgZzMuNDwxPkQgICAgICAgIGczPDAsMSwwPkQgICAgICAxNkQgICAgICAgICAgICAg eyBhbGlnbjEgMU4gfTsKK2FkZCgxKSAgICAgICAgICBnMy4yPDE+RCAgICAgICAgZzMuMjwwLDEs MD5EICAgIGczLjQ8MCwxLDA+RCAgICB7IGFsaWduMSAxTiB9OyAvKiBnMy4yIG5vdyBwb2ludHMg dG8gRVUgcm93IG51bWJlciAoWS1waXhlbCA9IFYgYWRkcmVzcyApICBpbiBpbnN0cnVtZW50YXRp b24gc3VyZiAqLworCittb3YoOCkgICAgICAgICAgZzU8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBV RCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMVEgfTsKK2FuZCgxKSAgICAgICAgICBnMy4z PDE+RCAgICAgICAgc3IwPDAsMSwwPkQgICAgIDdEICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9 OworbXVsKDEpICAgICAgICAgIGczLjM8MT5EICAgICAgICBnMy4zPDAsMSwwPkQgICAgNEQgICAg ICAgICAgICAgIHsgYWxpZ24xIDFOIH07CisKK21vdig4KSAgICAgICAgICBnNDwxPlVEICAgICAg ICAgZzA8OCw4LDE+VUQgICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxUSB9OyAvKiBJbml0 aWFsaXplIG1lc3NhZ2UgaGVhZGVyIHdpdGggZzAgKi8KK21vdigxKSAgICAgICAgICBnNDwxPlVE ICAgICAgICAgZzMuMzwwLDEsMD5VRCAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAv KiBCbG9jayBvZmZzZXQgKi8KK21vdigxKSAgICAgICAgICBnNC4xPDE+VUQgICAgICAgZzMuMjww LDEsMD5VRCAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBCbG9jayBvZmZzZXQg Ki8KK21vdigxKSAgICAgICAgICBnNC4yPDE+VUQgICAgICAgMHgwMDAwMDAwM1VEICAgICAgICAg ICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBCbG9jayBzaXplICgxIHJvdyB4IDQgYnl0ZXMp ICovCithbmQoMSkgICAgICAgICAgZzQuMzwxPlVEICAgICAgIGc0LjM8MCwxLDA+VVcgICAweGZm ZmZmZmZmVUQgICAgeyBhbGlnbjEgMU4gfTsKKworLyogTWVkaWEgYmxvY2sgcmVhZCB0byBmZXRj aCBjdXJyZW50IHZhbHVlIGF0IHNwZWNpZmllZCBsb2NhdGlvbiBpbiBpbnN0cnVtZW50YXRpb24g YnVmZmVyICovCitzZW5kYyg4KSAgICAgICAgZzU8MT5VRCAgICAgICAgIGc0PDgsOCwxPkYgICAg ICAweDAyMTkwMDAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyIE1zZ0Rlc2M6 IG1lZGlhIGJsb2NrIHJlYWQgTXNnQ3RybCA9IDB4MCBTdXJmYWNlID0gMSBtbGVuIDEgcmxlbiAx IHsgYWxpZ24xIDFRIH07CithZGQoMSkgICAgICAgICAgZzU8MT5EICAgICAgICAgIGc1PDAsMSww PkQgICAgICAxRCAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKKworLyogTWVkaWEgYmxvY2sg d3JpdGUgZm9yIHVwZGF0ZWQgdmFsdWUgYXQgc3BlY2lmaWVkIGxvY2F0aW9uIGluIGluc3RydW1l bnRhdGlvbiBidWZmZXIgKi8KK3NlbmRjKDgpICAgICAgICBnNTwxPlVEICAgICAgICAgZzQ8OCw4 LDE+RiAgICAgIDB4MDQwYTgwMDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIg TXNnRGVzYzogbWVkaWEgYmxvY2sgd3JpdGUgTXNnQ3RybCA9IDB4MCBTdXJmYWNlID0gMSBtbGVu IDIgcmxlbiAwIHsgYWxpZ24xIDFRIH07CisvKiBEZWxheSB0aHJlYWQgZm9yIHNwZWNpZmllZCBw YXJhbWV0ZXIgKi8KK2FkZC5uei5mMC4wKDEpICBnMS4yPDE+VUQgICAgICAgZzEuMjwwLDEsMD5V RCAgIC0xRCAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworKCtmMC4wKSBqbXBpKDEpIC00RCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIFdFX2Fs bCAxTiB9OworCisvKiBTdG9yZSBkZXNpZ25hdGVkICJjbGVhciBHUkYiIHZhbHVlICovCittb3Yo MSkgICAgICAgICAgZjAuMTwxPlVXICAgICAgIGcxLjI8MCwxLDA+VVcgICAgICAgICAgICAgICAg ICAgeyBhbGlnbjEgMU4gfTsKKworLyogSW5pdGlhbGl6ZSBsb29waW5nIHBhcmFtZXRlcnMgKi8K K21vdigxKSAgICAgICAgICBhMDwxPkQgICAgICAgICAgMEQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBJbml0aWFsaXplIGEwLjA6dz0wICovCittb3YoMSkg ICAgICAgICAgYTAuNDwxPlcgICAgICAgIDEyN1cgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyBhbGlnbjEgMU4gfTsgLyogTG9vcCBjb3VudC4gRWFjaCBsb29wIGNvbnRhaW5zIDE2IEdSRidz ICovCisKKy8qIFdyaXRlIDMyeDE2IGFsbCAiMCIgYmxvY2sgKi8KK21vdig4KSAgICAgICAgICBn MjwxPlVEICAgICAgICAgZzA8OCw4LDE+VUQgICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAx USB9OworbW92KDgpICAgICAgICAgIGcxMjc8MT5VRCAgICAgICBnMDw4LDgsMT5VRCAgICAgICAg ICAgICAgICAgICAgIHsgYWxpZ24xIDFRIH07Cittb3YoMikgICAgICAgICAgZzI8MT5VRCAgICAg ICAgIGcxPDIsMiwxPlVXICAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK21vdigx KSAgICAgICAgICBnMi4yPDE+VUQgICAgICAgMHgwMDBmMDAwZlVEICAgICAgICAgICAgICAgICAg ICB7IGFsaWduMSAxTiB9OyAvKiBCbG9jayBzaXplICgxNngxNikgKi8KK2FuZCgxKSAgICAgICAg ICBnMi4zPDE+VUQgICAgICAgZzIuMzwwLDEsMD5VVyAgIDB4ZmZmZmZmZWZVRCAgICB7IGFsaWdu MSAxTiB9OworbW92KDE2KSAgICAgICAgIGczPDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAg ICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07Cittb3YoMTYpICAgICAgICAgZzQ8MT5VRCAg ICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsKK21v digxNikgICAgICAgICBnNTwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAg ICAgICB7IGFsaWduMSAxSCB9OworbW92KDE2KSAgICAgICAgIGc2PDE+VUQgICAgICAgICAweDAw MDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07Cittb3YoMTYpICAgICAg ICAgZzc8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGln bjEgMUggfTsKK21vdigxNikgICAgICAgICBnODwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVEICAg ICAgICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9OworbW92KDE2KSAgICAgICAgIGc5PDE+VUQg ICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07Citt b3YoMTYpICAgICAgICAgZzEwPDE+VUQgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAg ICAgICAgeyBhbGlnbjEgMUggfTsKK3NlbmRjKDgpICAgICAgICBudWxsPDE+VUQgICAgICAgZzI8 OCw4LDE+RiAgICAgIDB4MTIwYTgwMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5k ZXIgTXNnRGVzYzogbWVkaWEgYmxvY2sgd3JpdGUgTXNnQ3RybCA9IDB4MCBTdXJmYWNlID0gMCBt bGVuIDkgcmxlbiAwIHsgYWxpZ24xIDFRIH07CithZGQoMSkgICAgICAgICAgZzI8MT5VRCAgICAg ICAgIGcxPDAsMSwwPlVXICAgICAweDAwMTBVVyAgICAgICAgeyBhbGlnbjEgMU4gfTsKK3NlbmRj KDgpICAgICAgICBudWxsPDE+VUQgICAgICAgZzI8OCw4LDE+RiAgICAgIDB4MTIwYTgwMDAKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIgTXNnRGVzYzogbWVkaWEgYmxvY2sgd3Jp dGUgTXNnQ3RybCA9IDB4MCBTdXJmYWNlID0gMCBtbGVuIDkgcmxlbiAwIHsgYWxpZ24xIDFRIH07 CisKKy8qIE5vdywgY2xlYXIgYWxsIEdSRiByZWdpc3RlcnMgKi8KK2FkZC5uei5mMC4wKDEpICBh MC40PDE+VyAgICAgICAgYTAuNDwwLDEsMD5XICAgIC0xVyAgICAgICAgICAgICB7IGFsaWduMSAx TiB9OworbW92KDE2KSAgICAgICAgIGdbYTBdPDE+VVcgICAgICBmMC4xPDAsMSwwPlVXICAgICAg ICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07CithZGQoMSkgICAgICAgICAgYTA8MT5EICAgICAg ICAgIGEwPDAsMSwwPkQgICAgICAzMkQgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKKygrZjAu MCkgam1waSgxKSAtOEQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7IGFsaWduMSBXRV9hbGwgMU4gfTsKKworLyogVGVybWluYW50ZSB0aGUgdGhyZWFkICovCitz ZW5kYyg4KSAgICAgICAgbnVsbDwxPlVEICAgICAgIGcxMjc8OCw4LDE+RiAgICAweDgyMDAwMDEw CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX3NwYXduZXIgTXNnRGVzYzogbWxl biAxIHJsZW4gMCAgICAgICAgICAgeyBhbGlnbjEgMVEgRU9UIH07Ci0tIAoyLjIwLjEKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGlu ZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=