From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by yocto-www.yoctoproject.org (Postfix, from userid 118) id F1D8EE00927; Mon, 8 Dec 2014 05:19:27 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on yocto-www.yoctoproject.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.1 X-Spam-HAM-Report: * -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] X-Greylist: delayed 1136 seconds by postgrey-1.32 at yocto-www; Mon, 08 Dec 2014 05:19:20 PST Received: from dev.rtsoft.ru (mail.dev.rtsoft.ru [213.79.90.226]) by yocto-www.yoctoproject.org (Postfix) with ESMTP id ECCEEE007DF for ; Mon, 8 Dec 2014 05:19:20 -0800 (PST) Received: from [192.168.5.130] (fw-int.dev.rtsoft.ru [192.168.1.70]) by dev.rtsoft.ru (Postfix) with ESMTP id BC87E412E4; Mon, 8 Dec 2014 16:00:29 +0300 (MSK) Message-ID: <5485A0E5.4030704@dev.rtsoft.ru> Date: Mon, 08 Dec 2014 16:00:21 +0300 From: Nikita Yushchenko Organization: RTSoft Software Development Center User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.2.0 MIME-Version: 1.0 To: meta-freescale@yoctoproject.org X-Mailman-Approved-At: Mon, 08 Dec 2014 05:20:59 -0800 Cc: Gennady Kuznetsov Subject: smarc-samx6i board support X-BeenThere: meta-freescale@yoctoproject.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Usage and development list for the meta-fsl-* layers List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Dec 2014 13:19:28 -0000 X-Groupsio-MsgNum: 11842 Content-Type: multipart/mixed; boundary="------------050400060301000409030002" --------------050400060301000409030002 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hi Recently I was working on BSP for Kontron SMARC-sAMX6i board (http://www.kontron.com/products/computeronmodules/smarc/smarc-samx6i.html), based on Freescale Community BSP. Currently I have (part of) things working, based on patched 3.10.17 linux-imx kernel, and I'm interested in contributing support for this board. Could somebody please assist me on doing so? I already have some items that are acceptable for vendor BSP, but probably have to be reworked before inclusion. These are described below. Any advice on these will be appreciated. *) Support for hardware variations. There are quite a few hardware options - some chosen at manufacture time (which imx6 processor to use, board revision, if PCIe switch chip is installed or not), some configured by external signals that come from carrier board SMARC-sAMX6i is inserted into (e.g. SPI CS routing depends on signal on SMARC BOOT_SEL pins). Even more variations are added by possibility to insert SMARC-sAMX6i module into different carrier boards. At beginning of my work I had access to vendor 3.0-based BSP for this hardware. That BSP provided single kernel to support everything, by means of large arch/arm/mach-mx6/board-smx6.c file that registered things differently based on runtime-detected environment (i.e. cpu type, GPIO reads) or kernel command line. Normally device tree makes it easier to support different hardware, but not here... With device tree based hardware description, support for N hardware options results into need of 2^N device trees. To avoid that, I created dtsi file with high usage of C preprocessor macros. I'm attaching it to give idea how it looks like. C preprocessor is used here both to select module options, and to provide "syntax sugar" to describe carrier board (e.g. SMARC spec states that there is "GP I2C bus" - so it could be referenced as "smarc_gp_i2c", not "i2cN", in carrier's dts). So if support for other SMARC module is ever added, same dts could be used for carrier board, just with different module dtsi. Example dtsi file describing (part of) Kontron's SMARC evaluation carrier board, is also attached. With this approach, to get support for particular hardware variation, one has to write a tiny dts that #define's several macros and #include's dtsi files for module and carrier. Example is also attached. This approach works, but I have not seen anything similar with other hardware. Is this acceptable? If not, what should be used instead? *) Display selection Hardware provides several display interfaces (lcd, lvds, hdmi) and mapping these into /dev/fbN devices is not obvious. Especially combined with hardware variations: e.g. imx6q has 2 IPUs and thus can provide lvds, lcd and hdmi at the same time - but imx6dl has only one IPU so no more than two interfaces at a time. SMARC connector includes pins for both lcd and lvds display interfaces, however rest of the SMARC spec suggests that these are not intended to be used at the same time (e.g. there is single "display power" line). To get things more controllable, I decided to deal with "primary display interface" as one of hardware variations, selectable by C preprocessor macros. So /dev/fb0 (and /dev/fb1 for overlay layer) is always "primary display", either on lcd and lvds, selectable by device tree. And /dev/fb2 is always "secondary display" on hdmi. How is display configuration handled with other hardware? In the list postings, e.g. at http://article.gmane.org/gmane.linux.embedded.yocto.meta-freescale/11448, I've seen command line based configuration (video=mxcfb0:...). But how does this combine with mxcfb definitions in device tree [including /asiases node that binds mxcfb's to ids]? *) Patches from upstream I had to include some patches from kernel.org tree - to support more SPI flash chips, to add gpio-backlight, etc Is it ok to have linux-smx6 recipe that is linux-imx + some upstream patches included directly info recipe? Or separate kernel tree has to be set up? Or something else? *) Ugly things There are a couple of issues that I currently solve with rude hardcode. - SMARC spec instructs to configure one of SMARC connector's pins just before CPU goes into suspend. Older (pre-devicetree) linux-imx kernel had board-specific suspend-resume hooks; these could be used to control appropriate GPIO. Device tree based kernel do not provide such hooks (and indeed these can't be really used without board-specific C code). I had to patch imx6 suspend/resume code to toggle the GPIO. - SMARC-sAMX6i has 4 GPIOs for PCIe reset - one for PCIe switch and one for each of 3 switch downstream ports (that map to 3 SMARC PCIe interfaces). I had to patch pcie-designware.c to deal with 4 reset GPIOs instead of one. Is it acceptable to have such rude hacks in linux-smx6 recipe? Or some sane, mainlineable solutions should be found for these issues before contributing board support to Freescale Community BSP? *) No U-Boot Currently I've done only kernel, vendor u-boot is kept untouched. Could this be kept as-is for now, or u-boot recipe must be added together with kernel recipe? WBR, Nikita Yushchenko, Linux kernel engineer at RTsoft --------------050400060301000409030002 Content-Type: text/plain; charset=UTF-8; name="imx6qdl-smx6.dtsi" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="imx6qdl-smx6.dtsi" LyoKICogVGhlIGNvZGUgY29udGFpbmVkIGhlcmVpbiBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR05V IEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogVmVyc2lvbiAyIG9yIGxhdGVyIGF0IHRoZSBm b2xsb3dpbmcgbG9jYXRpb25zOgogKgogKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vu c2VzL2dwbC1saWNlbnNlLmh0bWwKICogaHR0cDovL3d3dy5nbnUub3JnL2NvcHlsZWZ0L2dwbC5o dG1sCiAqLwoKI2lmICFkZWZpbmVkKFNNWDZfQ1BVX0lNWDZRKSAmJiAhZGVmaW5lZChTTVg2X0NQ VV9JTVg2REwpCiNlcnJvciBQbGVhc2UgZGVmaW5lIENQVSB0eXBlCiNlbmRpZgojaWYgZGVmaW5l ZChTTVg2X0NQVV9JTVg2USkgJiYgZGVmaW5lZChTTVg2X0NQVV9JTVg2REwpCiNlcnJvciBQbGVh c2UgZGVmaW5lIHNpbmdsZSBDUFUgdHlwZQojZW5kaWYKCiNpZiAhZGVmaW5lZChTTVg2X1BBTkVM X0xDRCkgJiYgIWRlZmluZWQoU01YNl9QQU5FTF9MVkRTKQojZXJyb3IgUGxlYXNlIGRlZmluZSBw YW5lbCBpbnRlcmZhY2UgdHlwZQojZW5kaWYKI2lmIGRlZmluZWQoU01YNl9QQU5FTF9MQ0QpICYm IGRlZmluZWQoU01YNl9QQU5FTF9MVkRTKQojZXJyb3IgUGxlYXNlIGRlZmluZSBzaW5nbGUgcGFu ZWwgaW50ZXJmYWNlIHR5cGUKI2VuZGlmCgojaWZkZWYgU01YNl9DUFVfSU1YNlEKI2luY2x1ZGUg ImlteDZxLmR0c2kiCiNkZWZpbmUgU01YNl9DT01QQVRJQkxFICJrb250cm9uLGlteDZxLXNteDYi LCAiZnNsLGlteDZxIgojZW5kaWYKI2lmZGVmIFNNWDZfQ1BVX0lNWDZETAojZGVmaW5lIFNNWDZf Q09NUEFUSUJMRSAia29udHJvbixpbXg2ZGwtc214NiIsICJmc2wsaW14NmRsIgojaW5jbHVkZSAi aW14NmRsLmR0c2kiCiNlbmRpZgoKI2lmbmRlZiBTTVg2X01PREVMCiNkZWZpbmUgU01YNl9NT0RF TCAiS29udHJvbiBTTUFSQy1zQU1YNmkgbW9kdWxlIgojZW5kaWYKCi8gewoJbW9kZWwgPSBTTVg2 X01PREVMOwoJY29tcGF0aWJsZSA9IFNNWDZfQ09NUEFUSUJMRTsKCgltZW1vcnkgewoJCXJlZyA9 IDwweDEwMDAwMDAwIDB4NDAwMDAwMDA+OwoJfTsKCglhbGlhc2VzIHsKCQlteGNmYjAgPSAmbXhj ZmIxOwoJCW14Y2ZiMSA9ICZteGNmYjI7CgkJc3BpMCA9ICZlY3NwaTQ7CgkJc3BpMSA9ICZlY3Nw aTI7Cgl9OwoKCXNvdW5kLWhkbWkgewoJCWNvbXBhdGlibGUgPSAiZnNsLGlteDZxLWF1ZGlvLWhk bWkiLAoJCSAgICAgICAgICAgICAiZnNsLGlteC1hdWRpby1oZG1pIjsKCQltb2RlbCA9ICJpbXgt YXVkaW8taGRtaSI7CgkJaGRtaS1jb250cm9sbGVyID0gPCZoZG1pX2F1ZGlvPjsKCX07CgoJbXhj ZmIxOiBmYkAwIHsKCQljb21wYXRpYmxlID0gImZzbCxteGNfc2RjX2ZiIjsKI2lmZGVmIFNNWDZf UEFORUxfTENECgkJZGlzcF9kZXYgPSAibGNkIjsKI2VuZGlmCiNpZmRlZiBTTVg2X1BBTkVMX0xW RFMKCQlkaXNwX2RldiA9ICJsZGIiOwojZW5kaWYKCQlpbnRlcmZhY2VfcGl4X2ZtdCA9ICJSR0Iy NCI7CgkJbW9kZV9zdHIgPSAiMTI4MHg4MDBNQDYwIjsKCQlkZWZhdWx0X2JwcCA9IDwzMj47CgkJ aW50X2NsayA9IDwwPjsKCQlsYXRlX2luaXQgPSA8MD47CgkJc3RhdHVzID0gIm9rYXkiOwoJfTsK CglteGNmYjI6IGZiQDEgewoJCWNvbXBhdGlibGUgPSAiZnNsLG14Y19zZGNfZmIiOwoJCWRpc3Bf ZGV2ID0gImhkbWkiOwoJCWludGVyZmFjZV9waXhfZm10ID0gIlJHQjI0IjsKCQltb2RlX3N0ciA9 IjE5MjB4MTA4ME1ANjAiOwoJCWRlZmF1bHRfYnBwID0gPDI0PjsKCQlpbnRfY2xrID0gPDA+OwoJ CWxhdGVfaW5pdCA9IDwwPjsKCQlzdGF0dXMgPSAib2theSI7Cgl9OwoKI2lmZGVmIFNNWDZfUEFO RUxfTENECglsY2QgewoJCWNvbXBhdGlibGUgPSAiZnNsLGxjZCI7CgkJcGluY3RybC1uYW1lcyA9 ICJkZWZhdWx0IjsKCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfc214Nl9sY2Q+OwoJCWlwdV9pZCA9 IDwwPjsKCQlkaXNwX2lkID0gPDA+OwoJCWRlZmF1bHRfaWZtdCA9ICJSR0IyNCI7CgkJc3RhdHVz ID0gIm9rYXkiOwoJfTsKI2VuZGlmCgoJc21hcmNfcHdtX2JhY2tsaWdodDogYmFja2xpZ2h0IHsK CQljb21wYXRpYmxlID0gInB3bS1iYWNrbGlnaHQiOwoJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVs dCI7CgkJcGluY3RybC0wID0gPCZwaW5jdHJsX3NteDZfYmFja2xpZ2h0PjsKCQlwd21zID0gPCZw d200IDAgNTAwMDAwMD47CgkJYnJpZ2h0bmVzcy1sZXZlbHMgPSA8CgkJCTAgIDEgIDIgIDMgIDQg IDUgIDYgIDcgIDggIDkKCQkJMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkKCQkJMjAgMjEg MjIgMjMgMjQgMjUgMjYgMjcgMjggMjkKCQkJMzAgMzEgMzIgMzMgMzQgMzUgMzYgMzcgMzggMzkK CQkJNDAgNDEgNDIgNDMgNDQgNDUgNDYgNDcgNDggNDkKCQkJNTAgNTEgNTIgNTMgNTQgNTUgNTYg NTcgNTggNTkKCQkJNjAgNjEgNjIgNjMgNjQgNjUgNjYgNjcgNjggNjkKCQkJNzAgNzEgNzIgNzMg NzQgNzUgNzYgNzcgNzggNzkKCQkJODAgODEgODIgODMgODQgODUgODYgODcgODggODkKCQkJOTAg OTEgOTIgOTMgOTQgOTUgOTYgOTcgOTggOTkKCQkJMTAwCgkJPjsKCQlkZWZhdWx0LWJyaWdodG5l c3MtbGV2ZWwgPSA8ODA+OwoJCWVuYWJsZS1ncGlvcyA9IDwmZ3BpbzEgMTYgR1BJT19BQ1RJVkVf SElHSD47CgkJZmIgPSA8Jm14Y2ZiMT47Cgl9OwoKCWxjZHBvd2VyIHsKCQljb21wYXRpYmxlID0g ImdwaW8tYmFja2xpZ2h0IjsKCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwoJCXBpbmN0cmwt MCA9IDwmcGluY3RybF9zbXg2X2xjZHBvd2VyPjsKCQlncGlvcyA9IDwmZ3BpbzEgMTcgR1BJT19B Q1RJVkVfSElHSD47CgkJZGVmYXVsdC1vbjsKCQlmYiA9IDwmbXhjZmIxPjsKCX07CgoJc214Nl9p MmNfaW50OiBpMmMtZ3Bpby0wIHsKCQljb21wYXRpYmxlID0gImkyYy1ncGlvIjsKCQlwaW5jdHJs LW5hbWVzID0gImRlZmF1bHQiOwoJCXBpbmN0cmwtMCA9IDwmcGluY3RybF9zbXg2X2kyY19ncGlv XzA+OwoJCWdwaW9zID0KCQkJPCZncGlvMSAyOCAwPiwgLyogc2RhICovCgkJCTwmZ3BpbzEgMzAg MD47IC8qIHNjbCAqLwoJCSNhZGRyZXNzLWNlbGxzID0gPDE+OwoJCSNzaXplLWNlbGxzID0gPDA+ OwoJCWkyYy1ncGlvLGRlbGF5LXVzID0gPDI+OwoJfTsKCglzbWFyY19pMmNfY2FtOiBpMmMtZ3Bp by0xIHsKCQljb21wYXRpYmxlID0gImkyYy1ncGlvIjsKCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1 bHQiOwoJCXBpbmN0cmwtMCA9IDwmcGluY3RybF9zbXg2X2kyY19ncGlvXzE+OwoJCWdwaW9zID0K CQkJPCZncGlvNCAxMCAwPiwgLyogc2RhICovCgkJCTwmZ3BpbzEgNiAwPjsgIC8qIHNjbCAqLwoJ CSNhZGRyZXNzLWNlbGxzID0gPDE+OwoJCSNzaXplLWNlbGxzID0gPDA+OwoJCWkyYy1ncGlvLGRl bGF5LXVzID0gPDI+OwoJfTsKCglzbWFyY19pMmNfbGNkOiBpMmMtZ3Bpby0yIHsKCQljb21wYXRp YmxlID0gImkyYy1ncGlvIjsKCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwoJCXBpbmN0cmwt MCA9IDwmcGluY3RybF9zbXg2X2kyY19ncGlvXzI+OwoJCWdwaW9zID0KCQkJPCZncGlvMSAyMSAw PiwgLyogc2RhICovCgkJCTwmZ3BpbzEgMTkgMD47IC8qIHNjbCAqLwoJCSNhZGRyZXNzLWNlbGxz ID0gPDE+OwoJCSNzaXplLWNlbGxzID0gPDA+OwoJCWkyYy1ncGlvLGRlbGF5LXVzID0gPDI+OwoJ fTsKCglyZWd1bGF0b3JzIHsKCQljb21wYXRpYmxlID0gInNpbXBsZS1idXMiOwoJCSNhZGRyZXNz LWNlbGxzID0gPDE+OwoJCSNzaXplLWNlbGxzID0gPDA+OwoKCQlyZWdfM3YzX3M1OiByZWd1bGF0 b3JAMCB7CgkJCWNvbXBhdGlibGUgPSAicmVndWxhdG9yLWZpeGVkIjsKCQkJcmVnID0gPDA+OwoJ CQlyZWd1bGF0b3ItbmFtZSA9ICJWXzNWM19TNSI7CgkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0 ID0gPDMzMDAwMDA+OwoJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKCQkJ cmVndWxhdG9yLWJvb3Qtb247CgkJCXJlZ3VsYXRvci1hbHdheXMtb247CgkJfTsKCgkJcmVnXzF2 OF9zNTogcmVndWxhdG9yQDEgewoJCQljb21wYXRpYmxlID0gInJlZ3VsYXRvci1maXhlZCI7CgkJ CXJlZyA9IDwxPjsKCQkJcmVndWxhdG9yLW5hbWUgPSAiVl8xVjhfUzUiOwoJCQlyZWd1bGF0b3It bWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8 MTgwMDAwMD47CgkJCXJlZ3VsYXRvci1ib290LW9uOwoJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOwoJ CX07CgoJCXJlZ18zdjNfczA6IHJlZ3VsYXRvckAyIHsKCQkJY29tcGF0aWJsZSA9ICJyZWd1bGF0 b3ItZml4ZWQiOwoJCQlyZWcgPSA8Mj47CgkJCXJlZ3VsYXRvci1uYW1lID0gIlZfM1YzX1MwIjsK CQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CgkJCXJlZ3VsYXRvci1tYXgt bWljcm92b2x0ID0gPDMzMDAwMDA+OwoJCQlyZWd1bGF0b3ItYm9vdC1vbjsKCQkJcmVndWxhdG9y LWFsd2F5cy1vbjsKCQl9OwoKCQlyZWdfMXYwX3MwOiByZWd1bGF0b3JAMyB7CgkJCWNvbXBhdGli bGUgPSAicmVndWxhdG9yLWZpeGVkIjsKCQkJcmVnID0gPDM+OwoJCQlyZWd1bGF0b3ItbmFtZSA9 ICJWXzFWMF9TMCI7CgkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDEwMDAwMDA+OwoJCQly ZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMDAwMDAwPjsKCQkJcmVndWxhdG9yLWJvb3Qtb247 CgkJCXJlZ3VsYXRvci1hbHdheXMtb247CgkJfTsKCX07CgoJZ3Bpby1rZXlzIHsKCQljb21wYXRp YmxlID0gImdwaW8ta2V5cyI7CgkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKCQlwaW5jdHJs LTAgPSA8JnBpbmN0cmxfc214Nl9rZXlzPjsKCQlwb3dlciB7CgkJCWxhYmVsID0gIlBvd2VyIjsK CQkJZ3Bpb3MgPSA8JmdwaW82IDE2IDE+OwoJCQlsaW51eCxjb2RlID0gPDExNj47IC8qIEtFWV9Q T1dFUiAqLwoJCQlncGlvLWtleSx3YWtldXA7CgkJCWRlYm91bmNlLWludGVydmFsID0gPDE+OwoJ CX07CgoJCXNsZWVwIHsKCQkJbGFiZWwgPSAiU2xlZXAiOwoJCQlncGlvcyA9IDwmZ3BpbzYgMTcg MT47CgkJCWxpbnV4LGNvZGUgPSA8MTQyPjsgLyogS0VZX1NMRUVQICovCgkJCWdwaW8ta2V5LHdh a2V1cDsKCQkJZGVib3VuY2UtaW50ZXJ2YWwgPSA8MT47CgkJfTsKCgkJbGlkIHsKCQkJbGFiZWwg PSAiTGlkIjsKCQkJZ3Bpb3MgPSA8JmdwaW81IDAgMT47CgkJCWxpbnV4LGlucHV0LXR5cGUgPSA8 NT47IC8qIEVWX1NXICovCgkJCWxpbnV4LGNvZGUgPSA8MD47IC8qIFNXX0xJRCAqLwoJCQlncGlv LWtleSx3YWtldXA7CgkJCWRlYm91bmNlLWludGVydmFsID0gPDE+OwoJCX07Cgl9OwoKCXY0bDJf b3V0IHsKCQljb21wYXRpYmxlID0gImZzbCxteGNfdjRsMl9vdXRwdXQiOwoJCXN0YXR1cyA9ICJv a2F5IjsKCX07Cn07CgojZGVmaW5lIHNtYXJjX3NlcjAgdWFydDEKJnVhcnQxIHsKCXBpbmN0cmwt bmFtZXMgPSAiZGVmYXVsdCI7CglwaW5jdHJsLTAgPSA8JnBpbmN0cmxfc214Nl91YXJ0MT47Cglm c2wsdWFydC1oYXMtcnRzY3RzOwp9OwoKI2RlZmluZSBzbWFyY19zZXIxIHVhcnQyCiZ1YXJ0MiB7 CglwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwoJcGluY3RybC0wID0gPCZwaW5jdHJsX3NteDZf dWFydDI+Owp9OwoKI2RlZmluZSBzbWFyY19zZXIyIHVhcnQ0CiZ1YXJ0NCB7CglwaW5jdHJsLW5h bWVzID0gImRlZmF1bHQiOwoJcGluY3RybC0wID0gPCZwaW5jdHJsX3NteDZfdWFydDQ+OwoJZnNs LHVhcnQtaGFzLXJ0c2N0czsKfTsKCiNkZWZpbmUgc21hcmNfc2VyMyB1YXJ0NQomdWFydDUgewoJ cGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKCXBpbmN0cmwtMCA9IDwmcGluY3RybF9zbXg2X3Vh cnQ1PjsKfTsKCiZmZWMgewogICAgICAgIHBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CiAgICAg ICAgcGluY3RybC0wID0gPCZwaW5jdHJsX3NteDZfZW5ldF9mZWM+OwogICAgICAgIHBoeS1tb2Rl ID0gInJnbWlpIjsKICAgICAgICBzdGF0dXMgPSAib2theSI7Cn07CgojZGVmaW5lIHNtYXJjX3Nw aTAgZWNzcGk0CiZlY3NwaTQgewoJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKCXBpbmN0cmwt MCA9IDwmcGluY3RybF9zbXg2X2Vjc3BpND47Cglmc2wsc3BpLW51bS1jaGlwc2VsZWN0cyA9IDwz PjsKCWNzLWdwaW9zID0gPCZncGlvMyAyNCAwPiwgPCZncGlvMyAyOSAwPiwgPCZncGlvMyAyNSAw PjsKCXN0YXR1cyA9ICJva2F5IjsKfTsKCiNkZWZpbmUgc21hcmNfc3BpMSBlY3NwaTIKJmVjc3Bp MiB7CglwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwoJcGluY3RybC0wID0gPCZwaW5jdHJsX3Nt eDZfZWNzcGkyPjsKCWZzbCxzcGktbnVtLWNoaXBzZWxlY3RzID0gPDI+OwoJY3MtZ3Bpb3MgPSA8 JmdwaW8yIDI2IDA+LCA8JmdwaW8yIDI3IDA+OwoJc3RhdHVzID0gIm9rYXkiOwp9OwoKJnVzYm90 ZyB7CglwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwoJcGluY3RybC0wID0gPCZwaW5jdHJsX3Nt eDZfdXNib3RnPjsKCS8qIG5vICdpbXg2LXVzYi1jaGFyZ2VyLWRldGVjdGlvbicgc2luY2UgVVNC X09UR19DSERfQiBwaW4gaXMgbm90IHdpcmVkICovCglzdGF0dXMgPSAib2theSI7Cn07CgomdXNi aDEgewoJc3RhdHVzID0gIm9rYXkiOwp9OwoKI2RlZmluZSBzbWFyY19zZG1tYyB1c2RoYzIKJnVz ZGhjMiB7CglwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwoJcGluY3RybC0wID0gPCZwaW5jdHJs X3NteDZfdXNkaGMyPjsKCWJ1cy13aWR0aCA9IDw4PjsKCWNkLWdwaW9zID0gPCZncGlvMSA0IDA+ OwkvKiBwZXIgc2NoZW1hdGljcywgYWx3YXlzIGNvbnN0YW50PyAqLwp9OwoKI2RlZmluZSBzbWFy Y19zZGlvIHVzZGhjMwomdXNkaGMzIHsKCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CglwaW5j dHJsLTAgPSA8JnBpbmN0cmxfc214Nl91c2RoYzM+OwoJYnVzLXdpZHRoID0gPDQ+OwoJY2QtZ3Bp b3MgPSA8JmdwaW82IDE0IDA+OwoJd3AtZ3Bpb3MgPSA8JmdwaW8xIDI2IDA+Owp9OwojZGVmaW5l IFNNQVJDX1NESU9fUFdSX0VOX0dQSU8gPCZncGlvMSAyOSAwPgoKI2lmbmRlZiBTTVg2X0hJREVf RU1NQwomdXNkaGM0IHsKCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CglwaW5jdHJsLTAgPSA8 JnBpbmN0cmxfc214Nl91c2RoYzQ+OwoJYnVzLXdpZHRoID0gPDg+OwoJbm8tMS04LXY7Cglub24t cmVtb3ZhYmxlOwoJc3RhdHVzID0gIm9rYXkiOwp9OwojZW5kaWYKCiNpZmRlZiBTTVg2X1BBTkVM X0xWRFMKJmxkYiB7Cgltb2RlID0gInNpbjAiOwoJaXB1X2lkID0gPDA+OwoJZGlzcF9pZCA9IDww PjsKCXNlY19pcHVfaWQgPSA8MD47CglzZWNfZGlzcF9pZCA9IDwwPjsKCWV4dF9yZWYgPSA8MT47 CgoJc3RhdHVzID0gIm9rYXkiOwp9OwojZW5kaWYKCiZwd200IHsKCXBpbmN0cmwtbmFtZXMgPSAi ZGVmYXVsdCI7CglwaW5jdHJsLTAgPSA8JnBpbmN0cmxfc214Nl9wd200PjsKCXN0YXR1cyA9ICJv a2F5IjsKfTsKCiNkZWZpbmUgc21hcmNfaTJjX2dwIGkyYzEKJmkyYzEgewoJY2xvY2stZnJlcXVl bmN5ID0gPDEwMDAwMD47CglwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwoJcGluY3RybC0wID0g PCZwaW5jdHJsX3NteDZfaTJjMT47CglzdGF0dXMgPSAib2theSI7Cn07CgojaWZuZGVmIFNNWDZf SERDUAojZGVmaW5lIHNtYXJjX2kyY19oZG1pIGkyYzIKJmkyYzIgewoJY2xvY2stZnJlcXVlbmN5 ID0gPDEwMDAwMD47CglwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwoJcGluY3RybC0wID0gPCZw aW5jdHJsX3NteDZfaTJjMj47CglzdGF0dXMgPSAib2theSI7CgoJaGRtaTogZWRpZEA1MCB7CgkJ Y29tcGF0aWJsZSA9ICJmc2wsaW14Ni1oZG1pLWkyYyI7CgkJcmVnID0gPDB4NTA+OwoJfTsKfTsK I2VuZGlmCgojZGVmaW5lIHNtYXJjX2kyY19wbSBpMmMzCiZpMmMzIHsKCWNsb2NrLWZyZXF1ZW5j eSA9IDwxMDAwMDA+OwoJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKCXBpbmN0cmwtMCA9IDwm cGluY3RybF9zbXg2X2kyYzM+OwoJc3RhdHVzID0gIm9rYXkiOwp9OwoKJnBjaWUgewoJd2FrZS11 cC1ncGlvID0gPCZncGlvNiAxOCAwPjsKI2lmZGVmIFNNWDZfUENJRV9TV0lUQ0gKCXJlc2V0LWdw aW8gPSA8JmdwaW8yIDAgR1BJT19BQ1RJVkVfTE9XPiwKCQkgICAgIDwmZ3BpbzMgMTMgR1BJT19B Q1RJVkVfTE9XPiwKCQkgICAgIDwmZ3BpbzMgMTQgR1BJT19BQ1RJVkVfTE9XPiwKCQkgICAgIDwm Z3BpbzMgMTUgR1BJT19BQ1RJVkVfTE9XPjsKCW5vLWdlbjI7CiNlbHNlCglyZXNldC1ncGlvID0g PCZncGlvMyAxMyBHUElPX0FDVElWRV9MT1c+OwojZW5kaWYKCXBpbmN0cmwtbmFtZXMgPSAiZGVm YXVsdCI7CglwaW5jdHJsLTAgPSA8JnBpbmN0cmxfc214Nl9wY2llPjsKCXN0YXR1cyA9ICJva2F5 IjsKfTsKCiNpZmRlZiBTTVg2X0NQVV9JTVg2UQojZGVmaW5lIHNtYXJjX3NhdGEgc2F0YQojZW5k aWYKCiNkZWZpbmUgc21hcmNfY2FuMCBmbGV4Y2FuMQomZmxleGNhbjEgewoJcGluY3RybC1uYW1l cyA9ICJkZWZhdWx0IjsKCXBpbmN0cmwtMCA9IDwmcGluY3RybF9zbXg2X2ZsZXhjYW4xPjsKfTsK CiNkZWZpbmUgc21hcmNfY2FuMSBmbGV4Y2FuMgomZmxleGNhbjIgewoJcGluY3RybC1uYW1lcyA9 ICJkZWZhdWx0IjsKCXBpbmN0cmwtMCA9IDwmcGluY3RybF9zbXg2X2ZsZXhjYW4yPjsKfTsKCgom c214Nl9pMmNfaW50IHsKCXBmdXplMTAwQDA4IHsKCQljb21wYXRpYmxlID0gImZzbCxwZnV6ZTEw MCI7CgkJcmVnID0gPDB4MDg+OwoKCQkvKiBMb29rcyB1bnVzZWQgYnkgcGZ1emUxMDAgZHJpdmVy ICovCgkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3Bpbzc+OwoJCWludGVycnVwdHMgPSA8MTMgOD47 CS8qIDggPSBsZXZlbCwgYWN0aXZlIGxvdyAqLwoKCQlyZWd1bGF0b3JzIHsKCQkJdnNudnMgewoJ CQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTAwMDAwMD47CgkJCQlyZWd1bGF0b3ItbWF4 LW1pY3Jvdm9sdCA9IDwzMDAwMDAwPjsKCQkJCXJlZ3VsYXRvci1ib290LW9uOwoJCQkJcmVndWxh dG9yLWFsd2F5cy1vbjsKCQkJfTsKCgkJCXJlZ192X2NvcmVfczA6IHN3MWFiIHsKCQkJCXJlZ3Vs YXRvci1uYW1lID0gIlZfQ09SRV9TMCI7CgkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwz MDAwMDA+OwoJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTg3NTAwMD47CgkJCQlyZWd1 bGF0b3ItYm9vdC1vbjsKCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CgkJCX07CgoJCQlyZWdfdmRk c29jX3MwOiBzdzFjIHsKCQkJCXJlZ3VsYXRvci1uYW1lID0gIlZfVkREU09DX1MwIjsKCQkJCXJl Z3VsYXRvci1taW4tbWljcm92b2x0ID0gPDMwMDAwMD47CgkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jv dm9sdCA9IDwxODc1MDAwPjsKCQkJCXJlZ3VsYXRvci1ib290LW9uOwoJCQkJcmVndWxhdG9yLWFs d2F5cy1vbjsKCQkJfTsKCgkJCXJlZ18zdjE1X3MwOiBzdzIgewoJCQkJcmVndWxhdG9yLW5hbWUg PSAiVl8zVjE1X1MwIjsKCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDgwMDAwMD47CgkJ CQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKCQkJCXJlZ3VsYXRvci1ib290 LW9uOwoJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKCQkJfTsKCgkJCS8qIHN3M2EvYiBpcyB1c2Vk IGluIGR1YWwgbW9kZSwgYnV0IGRyaXZlciBkb2VzIG5vdAoJCQkgKiBzdXBwb3J0IGl0PyAgYW55 d2F5LCBubyBuZWVkIHRvIGNvbnRyb2wgRERSCgkJCSAqIHBvd2VyIC0gc28ganVzdCBsZWF2aW5n IGR1bW15IGVudHJpZXMgZm9yIHN3M2EKCQkJICogYW5kIHN3M2IgZm9yIG5vdyAqLwoKCQkJc3cz YSB7CgkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw0MDAwMDA+OwoJCQkJcmVndWxhdG9y LW1heC1taWNyb3ZvbHQgPSA8MTk3NTAwMD47CgkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKCQkJCXJl Z3VsYXRvci1hbHdheXMtb247CgkJCX07CgoJCQlzdzNiIHsKCQkJCXJlZ3VsYXRvci1taW4tbWlj cm92b2x0ID0gPDQwMDAwMD47CgkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxOTc1MDAw PjsKCQkJCXJlZ3VsYXRvci1ib290LW9uOwoJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKCQkJfTsK CgkJCXJlZ18xdjhfczA6IHN3NCB7CgkJCQlyZWd1bGF0b3ItbmFtZSA9ICJWXzFWOF9TMCI7CgkJ CQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw4MDAwMDA+OwoJCQkJcmVndWxhdG9yLW1heC1t aWNyb3ZvbHQgPSA8MzMwMDAwMD47CgkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKCQkJCXJlZ3VsYXRv ci1hbHdheXMtb247CgkJCX07CgoJCQlyZWdfNXYwX3MwOiBzd2JzdCB7CgkJCQlyZWd1bGF0b3It bmFtZSA9ICJWXzVWMF9TMCI7CgkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw1MDAwMDAw PjsKCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDUxNTAwMDA+OwoJCQl9OwoKCQkJdnJl ZmRkciB7CgkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CgkJ CX07CgoJCQkvKiBQZXIgc2NoZW1hdGljcywgb2YgYWxsIFZHRU4ncywgb25seSBWR0VONSBoYXMg c29tZQoJCQkgICB1c2FnZSAuLi4gYnV0IGV2ZW4gdGhhdCAtIG92ZXIgRE5JIHJlc2lzdG9yICov CgoJCQl2Z2VuMSB7CgkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw4MDAwMDA+OwoJCQkJ cmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTU1MDAwMD47CgkJCX07CgoJCQl2Z2VuMiB7CgkJ CQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw4MDAwMDA+OwoJCQkJcmVndWxhdG9yLW1heC1t aWNyb3ZvbHQgPSA8MTU1MDAwMD47CgkJCX07CgoJCQl2Z2VuMyB7CgkJCQlyZWd1bGF0b3ItbWlu LW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMz MDAwMDA+OwoJCQl9OwoKCQkJdmdlbjQgewoJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8 MTgwMDAwMD47CgkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKCQkJfTsK CgkJCXJlZ18ydjVfczA6IHZnZW41IHsKCQkJCXJlZ3VsYXRvci1uYW1lID0gIlZfMlY1X1MwIjsK CQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDE4MDAwMDA+OwoJCQkJcmVndWxhdG9yLW1h eC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CgkJCX07CgoJCQl2Z2VuNiB7CgkJCQlyZWd1bGF0b3It bWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0g PDMzMDAwMDA+OwoJCQl9OwoJCX07Cgl9Owp9OwoKI2lmbmRlZiBTTVg2X0hJREVfU1BJX0ZMQVNI CiZzbWFyY19zcGkwIHsKCW0yNXA4MEAwIHsKCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKCQkjc2l6 ZS1jZWxscyA9IDwxPjsKCQljb21wYXRpYmxlID0gIndpbmJvbmQsdzI1cTY0ZHciOwoJCXNwaS1t YXgtZnJlcXVlbmN5ID0gPDIwMDAwMDAwPjsKCQlyZWcgPSA8MD47CgoJCXBhcnRpdGlvbkAwIHsK CQkJbGFiZWwgPSAiYm9vdGxvYWRlciI7CgkJCXJlZyA9IDwweDAwMDAwMCAweDBjMDAwMD47CgkJ CXJlYWQtb25seTsKCQl9OwoJCXBhcnRpdGlvbkBjMDAwMCB7CgkJCWxhYmVsID0gImVudmlyb25t ZW50IjsKCQkJcmVnID0gPDB4MGMwMDAwIDB4MDEwMDAwPjsKCQl9OwoJCXBhcnRpdGlvbkBkMDAw MCB7CgkJCWxhYmVsID0gInVzZXIiOwoJCQlyZWcgPSA8MHgwZDAwMDAgMHg3MzAwMDA+OwoJCX07 Cgl9Owp9OwojZW5kaWYKCiNpZmRlZiBTTVg2X0NQVV9JTVg2UQojZGVmaW5lIHNtYXJjX3NhdGEg c2F0YQojZW5kaWYKCiZoZG1pX2NvcmUgewojaWZkZWYgU01YNl9DUFVfSU1YNlEKICAgICAgICBp cHVfaWQgPSA8MT47CiAgICAgICAgZGlzcF9pZCA9IDwwPjsKI2VuZGlmCiNpZmRlZiBTTVg2X0NQ VV9JTVg2REwKICAgICAgICBpcHVfaWQgPSA8MD47CiAgICAgICAgZGlzcF9pZCA9IDwxPjsKI2Vu ZGlmCiAgICAgICAgc3RhdHVzID0gIm9rYXkiOwp9OwoKJmhkbWlfdmlkZW8gewojaWZkZWYgU01Y Nl9IRENQCiAgICAgICAgcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKICAgICAgICBwaW5jdHJs LTAgPSA8JnBpbmN0cmxfc214Nl9oZG1pX3ZpZGVvPjsKICAgICAgICBmc2wsaGRjcDsKI2VuZGlm CiAgICAgICAgc3RhdHVzID0gIm9rYXkiOwp9OwoKJmhkbWlfYXVkaW8gewogICAgICAgIHN0YXR1 cyA9ICJva2F5IjsKfTsKCiZoZG1pX2NlYyB7CiAgICAgICAgcGluY3RybC1uYW1lcyA9ICJkZWZh dWx0IjsKICAgICAgICBwaW5jdHJsLTAgPSA8JnBpbmN0cmxfc214Nl9oZG1pX2NlYz47CiAgICAg ICAgc3RhdHVzID0gIm9rYXkiOwp9OwoKLyogY29tbWVudCBvdXQgV0dPUl9CIHBpbiBjb25maWd1 cmF0aW9uIGZvciBub3cgLSBpdCBjYXVzZXMgYm9hcmQgcmVib290cyAqLwovKiZ3ZG9nMSB7CiAg ICAgICAgcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKICAgICAgICBwaW5jdHJsLTAgPSA8JnBp bmN0cmxfc214Nl93ZG9nMT47Cn07Ki8KCiZpb211eGMgewoJcGluY3RybC1uYW1lcyA9ICJkZWZh dWx0IjsKCXBpbmN0cmwtMCA9IDwmcGluY3RybF9zbXg2X2hvZz47CgoJaG9nIHsKCQlwaW5jdHJs X3NteDZfaG9nOiBob2dncnAtc214NiB7CgkJCWZzbCxwaW5zID0gPAoKCQkJCS8qIFNNQVJDIEdQ SU8gbGluZXMgLSBlbmFibGUgU0lPTiBiaXQgKi8KCQkJCU1YNlFETF9QQURfRUlNX0RBMF9fR1BJ TzNfSU8wMCAweDQwMDBiMGIxCgkJCQlNWDZRRExfUEFEX0VJTV9EQTFfX0dQSU8zX0lPMDEgMHg0 MDAwYjBiMQoJCQkJTVg2UURMX1BBRF9FSU1fREEyX19HUElPM19JTzAyIDB4NDAwMGIwYjEKCQkJ CU1YNlFETF9QQURfRUlNX0RBM19fR1BJTzNfSU8wMyAweDQwMDBiMGIxCgkJCQlNWDZRRExfUEFE X0VJTV9EQTRfX0dQSU8zX0lPMDQgMHg0MDAwYjBiMQoJCQkJTVg2UURMX1BBRF9FSU1fREE1X19H UElPM19JTzA1IDB4NDAwMGIwYjEKCQkJCU1YNlFETF9QQURfRUlNX0RBNl9fR1BJTzNfSU8wNiAw eDQwMDBiMGIxCgkJCQlNWDZRRExfUEFEX0VJTV9EQTdfX0dQSU8zX0lPMDcgMHg0MDAwYjBiMQoJ CQkJTVg2UURMX1BBRF9FSU1fREE4X19HUElPM19JTzA4IDB4NDAwMGIwYjEKCQkJCU1YNlFETF9Q QURfRUlNX0RBOV9fR1BJTzNfSU8wOSAweDQwMDBiMGIxCgkJCQlNWDZRRExfUEFEX0VJTV9EQTEw X19HUElPM19JTzEwIDB4NDAwMGIwYjEKCQkJCU1YNlFETF9QQURfRUlNX0RBMTFfX0dQSU8zX0lP MTEgMHg0MDAwYjBiMQoJCQk+OwoJCX07Cgl9OwoKCXVhcnQxIHsKCQlwaW5jdHJsX3NteDZfdWFy dDE6IHVhcnQxZ3JwLXNteDYgewoJCQlmc2wscGlucyA9IDwKCQkJCU1YNlFETF9QQURfQ1NJMF9E QVQxMV9fVUFSVDFfUlhfREFUQSAweDFiMGIxCgkJCQlNWDZRRExfUEFEX0NTSTBfREFUMTBfX1VB UlQxX1RYX0RBVEEgMHgxYjBiMQoJCQkJTVg2UURMX1BBRF9FSU1fRDIwX19VQVJUMV9SVFNfQiAw eDFiMGIxCgkJCQlNWDZRRExfUEFEX0VJTV9EMTlfX1VBUlQxX0NUU19CIDB4MWIwYjEKCQkJPjsK CQl9OwoJfTsKCgl1YXJ0MiB7CgkJcGluY3RybF9zbXg2X3VhcnQyOiB1YXJ0MmdycC1zbXg2IHsK CQkJZnNsLHBpbnMgPSA8CgkJCQlNWDZRRExfUEFEX0VJTV9EMjdfX1VBUlQyX1JYX0RBVEEgMHgx YjBiMQoJCQkJTVg2UURMX1BBRF9FSU1fRDI2X19VQVJUMl9UWF9EQVRBIDB4MWIwYjEKCQkJPjsK CQl9OwoJfTsKCgl1YXJ0NCB7CgkJcGluY3RybF9zbXg2X3VhcnQ0OiB1YXJ0NGdycC1zbXg2IHsK CQkJZnNsLHBpbnMgPSA8CgkJCQlNWDZRRExfUEFEX0NTSTBfREFUMTNfX1VBUlQ0X1JYX0RBVEEg MHgxYjBiMQoJCQkJTVg2UURMX1BBRF9DU0kwX0RBVDEyX19VQVJUNF9UWF9EQVRBIDB4MWIwYjEK CQkJCU1YNlFETF9QQURfQ1NJMF9EQVQxNl9fVUFSVDRfUlRTX0IgMHgxYjBiMQoJCQkJTVg2UURM X1BBRF9DU0kwX0RBVDE3X19VQVJUNF9DVFNfQiAweDFiMGIxCgkJCT47CgkJfTsKCX07CgkKCXVh cnQ1IHsKCQlwaW5jdHJsX3NteDZfdWFydDU6IHVhcnQ1Z3JwLXNteDYgewoJCQlmc2wscGlucyA9 IDwKCQkJCU1YNlFETF9QQURfQ1NJMF9EQVQxNV9fVUFSVDVfUlhfREFUQSAweDFiMGIxCgkJCQlN WDZRRExfUEFEX0NTSTBfREFUMTRfX1VBUlQ1X1RYX0RBVEEgMHgxYjBiMQoJCQk+OwoJCX07Cgl9 OwoKCWZlYyB7CgkJcGluY3RybF9zbXg2X2VuZXRfZmVjOiBmZWNncnAtc214NiB7CgkJCWZzbCxw aW5zID0gPAoJCQkJTVg2UURMX1BBRF9FTkVUX01ESU9fX0VORVRfTURJTyAgICAgICAweDFiMGIw CgkJCQlNWDZRRExfUEFEX0VORVRfTURDX19FTkVUX01EQyAgICAgICAgIDB4MWIwYjAKCQkJCU1Y NlFETF9QQURfUkdNSUlfVFhDX19SR01JSV9UWEMgICAgICAgMHgxYjBiMAoJCQkJTVg2UURMX1BB RF9SR01JSV9URDBfX1JHTUlJX1REMCAgICAgICAweDFiMGIwCgkJCQlNWDZRRExfUEFEX1JHTUlJ X1REMV9fUkdNSUlfVEQxICAgICAgIDB4MWIwYjAKCQkJCU1YNlFETF9QQURfUkdNSUlfVEQyX19S R01JSV9URDIgICAgICAgMHgxYjBiMAoJCQkJTVg2UURMX1BBRF9SR01JSV9URDNfX1JHTUlJX1RE MyAgICAgICAweDFiMGIwCgkJCQlNWDZRRExfUEFEX1JHTUlJX1RYX0NUTF9fUkdNSUlfVFhfQ1RM IDB4MWIwYjAKCQkJCU1YNlFETF9QQURfRU5FVF9SRUZfQ0xLX19FTkVUX1RYX0NMSyAgMHgxYjBi MAoJCQkJTVg2UURMX1BBRF9SR01JSV9SWENfX1JHTUlJX1JYQyAgICAgICAweDFiMGIwCgkJCQlN WDZRRExfUEFEX1JHTUlJX1JEMF9fUkdNSUlfUkQwICAgICAgIDB4MWIwYjAKCQkJCU1YNlFETF9Q QURfUkdNSUlfUkQxX19SR01JSV9SRDEgICAgICAgMHgxYjBiMAoJCQkJTVg2UURMX1BBRF9SR01J SV9SRDJfX1JHTUlJX1JEMiAgICAgICAweDFiMGIwCgkJCQlNWDZRRExfUEFEX1JHTUlJX1JEM19f UkdNSUlfUkQzICAgICAgIDB4MWIwYjAKCQkJCU1YNlFETF9QQURfUkdNSUlfUlhfQ1RMX19SR01J SV9SWF9DVEwgMHgxYjBiMAoJCQk+OwoJCX07Cgl9OwoKCWVjc3BpMiB7CgkJcGluY3RybF9zbXg2 X2Vjc3BpMjogZWNzcGkyZ3JwLXNteDYgewoJCQlmc2wscGlucyA9IDwKCQkJCU1YNlFETF9QQURf RUlNX0NTMF9fRUNTUEkyX1NDTEsgMHg4MDAwMDAwMAoJCQkJTVg2UURMX1BBRF9FSU1fQ1MxX19F Q1NQSTJfTU9TSSAweDgwMDAwMDAwCgkJCQlNWDZRRExfUEFEX0VJTV9PRV9fRUNTUEkyX01JU08g MHg4MDAwMDAwMAoKCQkJCU1YNlFETF9QQURfRUlNX1JXX19HUElPMl9JTzI2IDB4ODAwMDAwMDAK CQkJCU1YNlFETF9QQURfRUlNX0xCQV9fR1BJTzJfSU8yNyAweDgwMDAwMDAwCgkJCT47CgkJfTsK CX07CgoJZWNzcGk0IHsKCQlwaW5jdHJsX3NteDZfZWNzcGk0OiBlY3NwaTRncnAtc214NiB7CgkJ CWZzbCxwaW5zID0gPAoJCQkJTVg2UURMX1BBRF9FSU1fRDIxX19FQ1NQSTRfU0NMSyAweDgwMDAw MDAwCgkJCQlNWDZRRExfUEFEX0VJTV9EMjhfX0VDU1BJNF9NT1NJIDB4ODAwMDAwMDAKCQkJCU1Y NlFETF9QQURfRUlNX0QyMl9fRUNTUEk0X01JU08gMHg4MDAwMDAwMAoKCQkJCS8qIEluIGhhcmR3 YXJlLCBFQ1NQSTQncyBTUzAsU1MxLFNTMyBhcmUgd2lyZWQuCgkJCQkgICBCdXQgc3BpLWlteCBk cml2ZXIgc3VwcG9ydCBvbmx5IGNvbnRpbnVvdXMKCQkJCSAgIG51bWJlcmluZywgYW5kIG9ubHkg Y2FuIHVzZSBHUElPcyAoYW5kIG5vdAoJCQkJICAgRUNTUEkncyBoYXJkd2FyZSBTUykgZm9yIENT LiBTbyBsaW51eCB2aWV3CgkJCQkgICBvZiBDUyBudW1iZXJzIGRpZmZlcnMgZnJvbSBodyB2aWV3 LCBhbmQKCQkJCSAgIHBpbnMgYXJlIGNvbmZpZ3VyZWQgYXMgR1BJT3MgKi8KCgkJCQkvKiBwaHlz aWNhbCAtIENTMiwgaW4gbGludXggLSBDUzAsIGVpdGhlciBpbnRlcm5hbCBmbGFzaCBvciBTTUFS QyBDUzAgKi8KCQkJCU1YNlFETF9QQURfRUlNX0QyNF9fR1BJTzNfSU8yNCAweDgwMDAwMDAwCgkJ CQkvKiBwaHlzaWNhbCAtIENTMCwgaW4gbGludXggLSBDUzEsIGVpdGhlciBTTUFSQyBDUzAgb3Ig bm90LWNvbm5lY3RlZCAqLwoJCQkJTVg2UURMX1BBRF9FSU1fRDI5X19HUElPM19JTzI5IDB4ODAw MDAwMDAKCQkJCS8qIHBoeXNpY2FsIC0gQ1MzLCBpbiBsaW51eCAtIENTMiwgU01BUkMgQ1MxICov CgkJCQlNWDZRRExfUEFEX0VJTV9EMjVfX0dQSU8zX0lPMjUgMHg4MDAwMDAwMAoJCQk+OwoJCX07 Cgl9OwoKCXVzYm90ZyB7CgkJcGluY3RybF9zbXg2X3VzYm90ZzogdXNib3RoZ3JwLXNteDYgewoJ CQlmc2wscGlucyA9IDwKCQkJCU1YNlFETF9QQURfR1BJT18xX19VU0JfT1RHX0lEIDB4MWY4YjAK CQkJCS8qIENvbW1lbnQgb3V0IHBvd2VyIGFuZCBPQyBncGlvJ3MgZm9yIG5vdywgc2luY2UgdGhl c2UKCQkJCSAgIGFyZSBub3QgdXNlZCBieSBkcml2ZXIgKi8KCQkJCS8vIE1YNlFETF9QQURfQ1NJ MF9QSVhDTEtfX0dQSU81X0lPMTggMHg4MDAwMDAwMAkvKiBVU0IgcG93ZXIgKi8KCQkJCS8vIE1Y NlFETF9QQURfQ1NJMF9EQVRBX0VOX19HUElPNV9JTzIwIDB4ODAwMDAwMDAJLyogVVNCIE9DICov CgkJCT47CgkJfTsKCX07CgoJdXNkaGMyIHsKCQlwaW5jdHJsX3NteDZfdXNkaGMyOiB1c2RoYzJn cnAtc214NiB7CgkJCWZzbCxwaW5zID0gPAoJCQkJTVg2UURMX1BBRF9TRDJfQ0xLX19TRDJfQ0xL IDB4MTcwNTkKCQkJCU1YNlFETF9QQURfU0QyX0NNRF9fU0QyX0NNRCAweDE3MDU5CgkJCQlNWDZR RExfUEFEX1NEMl9EQVQwX19TRDJfREFUQTAgMHgxNzA1OQoJCQkJTVg2UURMX1BBRF9TRDJfREFU MV9fU0QyX0RBVEExIDB4MTcwNTkKCQkJCU1YNlFETF9QQURfU0QyX0RBVDJfX1NEMl9EQVRBMiAw eDE3MDU5CgkJCQlNWDZRRExfUEFEX1NEMl9EQVQzX19TRDJfREFUQTMgMHgxNzA1OQoJCQkJTVg2 UURMX1BBRF9OQU5ERl9ENF9fU0QyX0RBVEE0IDB4MTcwNTkKCQkJCU1YNlFETF9QQURfTkFOREZf RDVfX1NEMl9EQVRBNSAweDE3MDU5CgkJCQlNWDZRRExfUEFEX05BTkRGX0Q2X19TRDJfREFUQTYg MHgxNzA1OQoJCQkJTVg2UURMX1BBRF9OQU5ERl9EN19fU0QyX0RBVEE3IDB4MTcwNTkKCQkJCU1Y NlFETF9QQURfR1BJT180X19HUElPMV9JTzA0IDB4ODAwMDAwMDAgLyogQ0QgKi8KCQkJPjsKCQl9 OwoJfTsKCgl1c2RoYzMgewoJCXBpbmN0cmxfc214Nl91c2RoYzM6IHVzZGhjM2dycC1zbXg2IHsK CQkJZnNsLHBpbnMgPSA8CgkJCQlNWDZRRExfUEFEX1NEM19DTEtfX1NEM19DTEsgMHgxNzA1OQoJ CQkJTVg2UURMX1BBRF9TRDNfQ01EX19TRDNfQ01EIDB4MTcwNTkKCQkJCU1YNlFETF9QQURfU0Qz X0RBVDBfX1NEM19EQVRBMCAweDE3MDU5CgkJCQlNWDZRRExfUEFEX1NEM19EQVQxX19TRDNfREFU QTEgMHgxNzA1OQoJCQkJTVg2UURMX1BBRF9TRDNfREFUMl9fU0QzX0RBVEEyIDB4MTcwNTkKCQkJ CU1YNlFETF9QQURfU0QzX0RBVDNfX1NEM19EQVRBMyAweDE3MDU5CgkJCQlNWDZRRExfUEFEX05B TkRGX0NTMV9fR1BJTzZfSU8xNCAweDgwMDAwMDAwIC8qIENEICovCgkJCQlNWDZRRExfUEFEX0VO RVRfUlhEMV9fR1BJTzFfSU8yNiAweDgwMDAwMDAwIC8qIFdQICovCgkJCQkvKiBGSVhNRTogc2hv dWxkIHRoaXMgYmUgbW92ZWQgdG8gcmVndWxhdG9yJ3MKCQkJCSAgICAgICAgICBncm91cD8gKi8K CQkJCU1YNlFETF9QQURfRU5FVF9UWEQxX19HUElPMV9JTzI5IDB4ODAwMDAwMDAgLyogUFdSX0VO ICovCgkJCT47CgkJfTsKCX07CgoJdXNkaGM0IHsKCQlwaW5jdHJsX3NteDZfdXNkaGM0OiB1c2Ro YzRncnAtc214NiB7CgkJCWZzbCxwaW5zID0gPAoJCQkJTVg2UURMX1BBRF9TRDRfQ0xLX19TRDRf Q0xLIDB4MTcwNTkKCQkJCU1YNlFETF9QQURfU0Q0X0NNRF9fU0Q0X0NNRCAweDE3MDU5CgkJCQlN WDZRRExfUEFEX1NENF9EQVQwX19TRDRfREFUQTAgMHgxNzA1OQoJCQkJTVg2UURMX1BBRF9TRDRf REFUMV9fU0Q0X0RBVEExIDB4MTcwNTkKCQkJCU1YNlFETF9QQURfU0Q0X0RBVDJfX1NENF9EQVRB MiAweDE3MDU5CgkJCQlNWDZRRExfUEFEX1NENF9EQVQzX19TRDRfREFUQTMgMHgxNzA1OQoJCQkJ TVg2UURMX1BBRF9TRDRfREFUNF9fU0Q0X0RBVEE0IDB4MTcwNTkKCQkJCU1YNlFETF9QQURfU0Q0 X0RBVDVfX1NENF9EQVRBNSAweDE3MDU5CgkJCQlNWDZRRExfUEFEX1NENF9EQVQ2X19TRDRfREFU QTYgMHgxNzA1OQoJCQkJTVg2UURMX1BBRF9TRDRfREFUN19fU0Q0X0RBVEE3IDB4MTcwNTkKCQkJ PjsKCQl9OwoJfTsKCglsY2QgewoJCXBpbmN0cmxfc214Nl9sY2Q6IGxjZGdycC1zbXg2IHsKCQkJ ZnNsLHBpbnMgPSA8CgkJCQlNWDZRRExfUEFEX0RJU1AwX0RBVDBfX0lQVTFfRElTUDBfREFUQTAw IDB4MTAwZjEKCQkJCU1YNlFETF9QQURfRElTUDBfREFUMV9fSVBVMV9ESVNQMF9EQVRBMDEgMHgx MDBmMQoJCQkJTVg2UURMX1BBRF9ESVNQMF9EQVQyX19JUFUxX0RJU1AwX0RBVEEwMiAweDEwMGYx CgkJCQlNWDZRRExfUEFEX0RJU1AwX0RBVDNfX0lQVTFfRElTUDBfREFUQTAzIDB4MTAwZjEKCQkJ CU1YNlFETF9QQURfRElTUDBfREFUNF9fSVBVMV9ESVNQMF9EQVRBMDQgMHgxMDBmMQoJCQkJTVg2 UURMX1BBRF9ESVNQMF9EQVQ1X19JUFUxX0RJU1AwX0RBVEEwNSAweDEwMGYxCgkJCQlNWDZRRExf UEFEX0RJU1AwX0RBVDZfX0lQVTFfRElTUDBfREFUQTA2IDB4MTAwZjEKCQkJCU1YNlFETF9QQURf RElTUDBfREFUN19fSVBVMV9ESVNQMF9EQVRBMDcgMHgxMDBmMQoJCQkJTVg2UURMX1BBRF9ESVNQ MF9EQVQ4X19JUFUxX0RJU1AwX0RBVEEwOCAweDEwMGYxCgkJCQlNWDZRRExfUEFEX0RJU1AwX0RB VDlfX0lQVTFfRElTUDBfREFUQTA5IDB4MTAwZjEKCQkJCU1YNlFETF9QQURfRElTUDBfREFUMTBf X0lQVTFfRElTUDBfREFUQTEwIDB4MTAwZjEKCQkJCU1YNlFETF9QQURfRElTUDBfREFUMTFfX0lQ VTFfRElTUDBfREFUQTExIDB4MTAwZjEKCQkJCU1YNlFETF9QQURfRElTUDBfREFUMTJfX0lQVTFf RElTUDBfREFUQTEyIDB4MTAwZjEKCQkJCU1YNlFETF9QQURfRElTUDBfREFUMTNfX0lQVTFfRElT UDBfREFUQTEzIDB4MTAwZjEKCQkJCU1YNlFETF9QQURfRElTUDBfREFUMTRfX0lQVTFfRElTUDBf REFUQTE0IDB4MTAwZjEKCQkJCU1YNlFETF9QQURfRElTUDBfREFUMTVfX0lQVTFfRElTUDBfREFU QTE1IDB4MTAwZjEKCQkJCU1YNlFETF9QQURfRElTUDBfREFUMTZfX0lQVTFfRElTUDBfREFUQTE2 IDB4MTAwZjEKCQkJCU1YNlFETF9QQURfRElTUDBfREFUMTdfX0lQVTFfRElTUDBfREFUQTE3IDB4 MTAwZjEKCQkJCU1YNlFETF9QQURfRElTUDBfREFUMThfX0lQVTFfRElTUDBfREFUQTE4IDB4MTAw ZjEKCQkJCU1YNlFETF9QQURfRElTUDBfREFUMTlfX0lQVTFfRElTUDBfREFUQTE5IDB4MTAwZjEK CQkJCU1YNlFETF9QQURfRElTUDBfREFUMjBfX0lQVTFfRElTUDBfREFUQTIwIDB4MTAwZjEKCQkJ CU1YNlFETF9QQURfRElTUDBfREFUMjFfX0lQVTFfRElTUDBfREFUQTIxIDB4MTAwZjEKCQkJCU1Y NlFETF9QQURfRElTUDBfREFUMjJfX0lQVTFfRElTUDBfREFUQTIyIDB4MTAwZjEKCQkJCU1YNlFE TF9QQURfRElTUDBfREFUMjNfX0lQVTFfRElTUDBfREFUQTIzIDB4MTAwZjEKCQkJCU1YNlFETF9Q QURfREkwX0RJU1BfQ0xLX19JUFUxX0RJMF9ESVNQX0NMSyAweDEwMGYxCgkJCQlNWDZRRExfUEFE X0RJMF9QSU4xNV9fSVBVMV9ESTBfUElOMTUgMHgxMDBmMSAvKiBERSAqLwoJCQkJTVg2UURMX1BB RF9ESTBfUElOMl9fSVBVMV9ESTBfUElOMDIgMHgxMDBmMSAgLyogSFNZTkMgKi8KCQkJCU1YNlFE TF9QQURfREkwX1BJTjNfX0lQVTFfREkwX1BJTjAzIDB4MTAwZjEgIC8qIFZTWU5DICovCgkJCT47 CgkJfTsKCX07CgoJYmFja2xpZ2h0IHsKCQlwaW5jdHJsX3NteDZfYmFja2xpZ2h0OiBiYWNrbGln aHRncnAtc214NiB7CgkJCWZzbCxwaW5zID0gPAoJCQkJTVg2UURMX1BBRF9TRDFfREFUMF9fR1BJ TzFfSU8xNiAweDgwMDAwMDAwCgkJCT47CgkJfTsKCX07CgoJbGNkcG93ZXIgewoJCXBpbmN0cmxf c214Nl9sY2Rwb3dlcjogbGNkcG93ZXJncnAtc214NiB7CgkJCWZzbCxwaW5zID0gPAoJCQkJTVg2 UURMX1BBRF9TRDFfREFUMV9fR1BJTzFfSU8xNyAweDgwMDAwMDAwCgkJCT47CgkJfTsKCX07CgoJ cHdtNCB7CgkJcGluY3RybF9zbXg2X3B3bTQ6IHB3bTRncnAtc214NiB7CgkJCWZzbCxwaW5zID0g PAoJCQkJTVg2UURMX1BBRF9TRDFfQ01EX19QV000X09VVCAweDgwMDAwMDAwCgkJCT47CgkJfTsK CX07CgoJaTJjMSB7CgkJcGluY3RybF9zbXg2X2kyYzE6IGkyYzFncnAtc214NiB7CgkJCWZzbCxw aW5zID0gPAoJCQkJTVg2UURMX1BBRF9DU0kwX0RBVDhfX0kyQzFfU0RBIDB4NDAwMWI4YjEKCQkJ CU1YNlFETF9QQURfQ1NJMF9EQVQ5X19JMkMxX1NDTCAweDQwMDFiOGIxCgkJCT47CgkJfTsKCX07 CgoJaTJjMiB7CgkJcGluY3RybF9zbXg2X2kyYzI6IGkyYzJncnAtc214NiB7CgkJCWZzbCxwaW5z ID0gPAoJCQkJTVg2UURMX1BBRF9LRVlfQ09MM19fSTJDMl9TQ0wgMHg0MDAxYjhiMQoJCQkJTVg2 UURMX1BBRF9LRVlfUk9XM19fSTJDMl9TREEgMHg0MDAxYjhiMQoJCQk+OwoJCX07Cgl9OwoKCWky YzMgewoJCXBpbmN0cmxfc214Nl9pMmMzOiBpMmMzZ3JwLXNteDYgewoJCQlmc2wscGlucyA9IDwK CQkJCU1YNlFETF9QQURfR1BJT181X19JMkMzX1NDTCAgMHg0MDAxYjhiMQoJCQkJTVg2UURMX1BB RF9HUElPXzE2X19JMkMzX1NEQSAweDQwMDFiOGIxCgkJCT47CgkJfTsKCX07CgoJaTJjLWdwaW8t MCB7CgkJcGluY3RybF9zbXg2X2kyY19ncGlvXzA6IGkyYy1ncGlvLTBncnAtc214NiB7CgkJCWZz bCxwaW5zID0gPAoJCQkJLyogU0NMIEdQSU8gKi8KCQkJCU1YNlFETF9QQURfRU5FVF9UWEQwX19H UElPMV9JTzMwICAweDgwMDAwMDAwCgkJCQkvKiBTREEgR1BJTyAqLwoJCQkJTVg2UURMX1BBRF9F TkVUX1RYX0VOX19HUElPMV9JTzI4IDB4ODAwMDAwMDAKCQkJPjsKCQl9OwoJfTsKCglpMmMtZ3Bp by0xIHsKCQlwaW5jdHJsX3NteDZfaTJjX2dwaW9fMTogaTJjLWdwaW8tMWdycC1zbXg2IHsKCQkJ ZnNsLHBpbnMgPSA8CgkJCQkvKiBTQ0wgR1BJTyAqLwoJCQkJTVg2UURMX1BBRF9HUElPXzZfX0dQ SU8xX0lPMDYgICAweDgwMDAwMDAwCgkJCQkvKiBTREEgR1BJTyAqLwoJCQkJTVg2UURMX1BBRF9L RVlfQ09MMl9fR1BJTzRfSU8xMCAweDgwMDAwMDAwCgkJCT47CgkJfTsKCX07CgoJaTJjLWdwaW8t MiB7CgkJcGluY3RybF9zbXg2X2kyY19ncGlvXzI6IGkyYy1ncGlvLTJncnAtc214NiB7CgkJCWZz bCxwaW5zID0gPAoJCQkJLyogU0NMIEdQSU8gKi8KCQkJCU1YNlFETF9QQURfU0QxX0RBVDJfX0dQ SU8xX0lPMTkgMHg4MDAwMDAwMAoJCQkJLyogU0RBIEdQSU8gKi8KCQkJCU1YNlFETF9QQURfU0Qx X0RBVDNfX0dQSU8xX0lPMjEgMHg4MDAwMDAwMAoJCQk+OwoJCX07Cgl9OwoKCXBjaWUgewoJCXBp bmN0cmxfc214Nl9wY2llOiBwY2llZ3JwLXNteDYgewoJCQlmc2wscGlucyA9IDwKCQkJCS8qIFJT VF9QQ0lFXyhTV0lUQ0gsQSxCLEMpIyAqLwoJCQkJTVg2UURMX1BBRF9OQU5ERl9EMF9fR1BJTzJf SU8wMCAweDgwMDAwMDAwCgkJCQlNWDZRRExfUEFEX0VJTV9EQTEzX19HUElPM19JTzEzIDB4ODAw MDAwMDAKCQkJCU1YNlFETF9QQURfRUlNX0RBMTRfX0dQSU8zX0lPMTQgMHg4MDAwMDAwMAoJCQkJ TVg2UURMX1BBRF9FSU1fREExNV9fR1BJTzNfSU8xNSAweDgwMDAwMDAwCgkJCQkvKiBQQ0lFX1dB S0UjICovCgkJCQlNWDZRRExfUEFEX1NEM19EQVQ2X19HUElPNl9JTzE4IDB4ODAwMDAwMDAKCQkJ PjsKCQl9OwoJfTsKCglmbGV4Y2FuMSB7CgkJcGluY3RybF9zbXg2X2ZsZXhjYW4xOiBmbGV4Y2Fu MWdycC1zbXg2IHsKCQkJZnNsLHBpbnMgPSA8CgkJCQlNWDZRRExfUEFEX0dQSU9fN19fRkxFWENB TjFfVFggMHg4MDAwMDAwMAoJCQkJTVg2UURMX1BBRF9HUElPXzhfX0ZMRVhDQU4xX1JYIDB4ODAw MDAwMDAKCQkJPjsKCQl9OwoJfTsKCglmbGV4Y2FuMiB7CgkJcGluY3RybF9zbXg2X2ZsZXhjYW4y OiBmbGV4Y2FuMmdycC1zbXg2IHsKCQkJZnNsLHBpbnMgPSA8CgkJCQlNWDZRRExfUEFEX0tFWV9D T0w0X19GTEVYQ0FOMl9UWCAweDgwMDAwMDAwCgkJCQlNWDZRRExfUEFEX0tFWV9ST1c0X19GTEVY Q0FOMl9SWCAweDgwMDAwMDAwCgkJCT47CgkJfTsKCX07CgoJa2V5cyB7CgkJcGluY3RybF9zbXg2 X2tleXM6IGtleXNncnAtc214NiB7CgkJCWZzbCxwaW5zID0gPAoJCQkJLyogUG93ZXIgQnV0dG9u ICovCgkJCQlNWDZRRExfUEFEX05BTkRGX0NTM19fR1BJTzZfSU8xNiAweDgwMDAwMDAwCgkJCQkv KiBTTEVFUCMgKi8KCQkJCU1YNlFETF9QQURfU0QzX0RBVDdfX0dQSU82X0lPMTcgMHg4MDAwMDAw MAoJCQkJLyogTElEIyAqLwoJCQkJTVg2UURMX1BBRF9FSU1fV0FJVF9fR1BJTzVfSU8wMCAweDgw MDAwMDAwCgkJCT47CgkJfTsKCX07CgoJaGRtaV9jZWMgewoJCXBpbmN0cmxfc214Nl9oZG1pX2Nl YzogaGRtaV9jZWNncnAtc214NiB7CgkJCWZzbCxwaW5zID0gPAoJCQkJTVg2UURMX1BBRF9FSU1f QTI1X19IRE1JX1RYX0NFQ19MSU5FIDB4MWY4YjAKCQkJPjsKCQl9OwoJfTsKCgloZG1pX3ZpZGVv IHsKCQlwaW5jdHJsX3NteDZfaGRtaV92aWRlbzogaGRtaV92aWRlb2dycC1zbXg2IHsKCQkJZnNs LHBpbnMgPSA8CgkJCQlNWDZRRExfUEFEX0tFWV9DT0wzX19IRE1JX1RYX0REQ19TQ0wgMHg0MDAx YjhiMQoJCQkJTVg2UURMX1BBRF9LRVlfUk9XM19fSERNSV9UWF9ERENfU0RBIDB4NDAwMWI4YjEK CQkJPjsKCQl9OwoJfTsKCgl3ZG9nMSB7CgkJcGluY3RybF9zbXg2X3dkb2cxOiB3ZG9nZ3JwLXNt eDYgewoJCQlmc2wscGlucyA9IDwKCQkJCU1YNlFETF9QQURfR1BJT185X19XRE9HMV9CIDB4ODAw MDAwMDAKCQkJPjsKCQl9OwoJfTsKfTsK --------------050400060301000409030002 Content-Type: text/plain; charset=UTF-8; name="kontron-smarc-evaluation-carrier.dtsi" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kontron-smarc-evaluation-carrier.dtsi" LyoKICogVGhlIGNvZGUgY29udGFpbmVkIGhlcmVpbiBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR05V IEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogVmVyc2lvbiAyIG9yIGxhdGVyIGF0IHRoZSBm b2xsb3dpbmcgbG9jYXRpb25zOgogKgogKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vu c2VzL2dwbC1saWNlbnNlLmh0bWwKICogaHR0cDovL3d3dy5nbnUub3JnL2NvcHlsZWZ0L2dwbC5o dG1sCiAqLwoKLyB7CglyZWd1bGF0b3JzIHsKCQljb21wYXRpYmxlID0gInNpbXBsZS1idXMiOwoJ CSNhZGRyZXNzLWNlbGxzID0gPDE+OwoJCSNzaXplLWNlbGxzID0gPDA+OwoKCQkvKiBQV00gcG93 ZXIuCgkJICAgVGhpcyBpcyBzdHViIGZvciBub3csIGluY2x1ZGluZyB2b2x0YWdlIHZhbHVlcy4K CQkgICBQaHlzaWNhbGx5LCBMUDg1NDUgaXMgdXNlZCB0aGVyZS4gSXQgY291bGQgYmUgZGVzY3Jp YmVkIGJldHRlciAqLwoJCWNhcnJpZXJfcHdtX3JlZzogcmVndWxhdG9yQDEwMCB7CgkJCWNvbXBh dGlibGUgPSAicmVndWxhdG9yLWZpeGVkIjsKCQkJcmVnID0gPDEwMD47CgkJCXJlZ3VsYXRvci1u YW1lID0gIlZfMzFWOV9CS0xUIjsKCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTIwMDAw MDA+OwoJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMjAwMDAwMD47CgkJCXJlZ3VsYXRv ci1ib290LW9uOwoJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOwoJCX07CgoJCS8qIE1pY3JvU0Qgc2xv dCBwb3dlciAqLwoJCWNhcnJpZXJfc2Rpb19yZWc6IHJlZ3VsYXRvckAxMDEgewoJCQljb21wYXRp YmxlID0gInJlZ3VsYXRvci1maXhlZCI7CgkJCXJlZyA9IDwxMDE+OwoJCQlyZWd1bGF0b3ItbmFt ZSA9ICJWXzNWM19TRENBUkQiOwoJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwzMzAwMDAw PjsKCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CgkJCWdwaW8gPSBTTUFS Q19TRElPX1BXUl9FTl9HUElPOwoJCQllbmFibGUtYWN0aXZlLWhpZ2g7CgkJfTsKCgkJLyogQ0FO MCBlbmFibGUgbGluZSAqLwoJCWNhbjBfZW5fcmVnOiByZWd1bGF0b3JAMTAyIHsKCQkJY29tcGF0 aWJsZSA9ICJyZWd1bGF0b3ItZml4ZWQiOwoJCQlyZWcgPSA8MTAyPjsKCQkJcmVndWxhdG9yLW5h bWUgPSAiQ0FOMF9FTiI7CgkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDMzMDAwMDA+OwoJ CQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKCQkJZ3BpbyA9IDwmcG1fZ3Bp byA2IDA+OwoJCQllbmFibGUtYWN0aXZlLWhpZ2g7CgkJfTsKCgkJLyogQ0FOMSBlbmFibGUgbGlu ZSAqLwoJCWNhbjFfZW5fcmVnOiByZWd1bGF0b3JAMTAzIHsKCQkJY29tcGF0aWJsZSA9ICJyZWd1 bGF0b3ItZml4ZWQiOwoJCQlyZWcgPSA8MTAzPjsKCQkJcmVndWxhdG9yLW5hbWUgPSAiQ0FOMV9F TiI7CgkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDMzMDAwMDA+OwoJCQlyZWd1bGF0b3It bWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKCQkJZ3BpbyA9IDwmcG1fZ3BpbyA3IDA+OwoJCQll bmFibGUtYWN0aXZlLWhpZ2g7CgkJfTsKCX07Cn07Cgomc21hcmNfc2VyMCB7CglzdGF0dXMgPSAi b2theSI7Cn07Cgomc21hcmNfc2VyMSB7CglzdGF0dXMgPSAib2theSI7Cn07Cgomc21hcmNfc2Vy MiB7CglzdGF0dXMgPSAib2theSI7Cn07Cgomc21hcmNfc2VyMyB7CglzdGF0dXMgPSAib2theSI7 Cn07Cgomc21hcmNfcHdtX2JhY2tsaWdodCB7Cglwb3dlci1zdXBwbHkgPSA8JmNhcnJpZXJfcHdt X3JlZz47Cn07Cgomc21hcmNfc2RpbyB7CglzdGF0dXMgPSAib2theSI7Cgl2bW1jLXN1cHBseSA9 IDwmY2Fycmllcl9zZGlvX3JlZz47Cgluby0xLTgtdjsKfTsKCiZzbWFyY19pMmNfcG0gewoJcG1f ZWVwcm9tOiBhdDI0QDUwIHsKCQljb21wYXRpYmxlID0gImF0MjQsMjRjMzIiOwoJCXBhZ2VzaXpl ID0gPDg+OwoJCXJlZyA9IDwweDUwPjsKCX07CglwbV9ncGlvOiB0Y2E5NTU0QDIyIHsKCQljb21w YXRpYmxlID0gIm54cCxwY2E5NTU0IjsKCQlyZWcgPSA8MHgyMj47CgkJZ3Bpby1jb250cm9sbGVy OwoJCSNncGlvLWNlbGxzID0gPDI+OwoJfTsKfTsKCiNpZmRlZiBTTVg2X0NQVV9JTVg2UQomc21h cmNfc2F0YSB7CglzdGF0dXMgPSAib2theSI7Cn07CiNlbmRpZgoKJnNtYXJjX2NhbjAgewoJeGNl aXZlci1zdXBwbHkgPSA8JmNhbjBfZW5fcmVnPjsKCXN0YXR1cyA9ICJva2F5IjsKfTsKCiZzbWFy Y19jYW4xIHsKCXhjZWl2ZXItc3VwcGx5ID0gPCZjYW4xX2VuX3JlZz47CglzdGF0dXMgPSAib2th eSI7Cn07Cg== --------------050400060301000409030002 Content-Type: audio/vnd.dts; name="imx6q-smx6-lcd.dts" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="imx6q-smx6-lcd.dts" LyoKICogVGhlIGNvZGUgY29udGFpbmVkIGhlcmVpbiBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR05V IEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogVmVyc2lvbiAyIG9yIGxhdGVyIGF0IHRoZSBm b2xsb3dpbmcgbG9jYXRpb25zOgogKgogKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vu c2VzL2dwbC1saWNlbnNlLmh0bWwKICogaHR0cDovL3d3dy5nbnUub3JnL2NvcHlsZWZ0L2dwbC5o dG1sCiAqLwoKI2RlZmluZSBTTVg2X0NQVV9JTVg2UQojZGVmaW5lIFNNWDZfUEFORUxfTENECgov ZHRzLXYxLzsKI2luY2x1ZGUgImlteDZxZGwtc214Ni5kdHNpIgojaW5jbHVkZSAia29udHJvbi1z bWFyYy1ldmFsdWF0aW9uLWNhcnJpZXIuZHRzaSIK --------------050400060301000409030002--