IyBNZXNhamVsZSDubiBsaW1iYSByb23ibuMgcGVudHJ1IHBhY2hldHVsIGxpYmljb252LgojIENvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIyBFdWdlbiBIb2FuY2EgPGV1Z2VuaEB1cmJhbi1ncmFmeC5ybz4sIDIwMDMuCiMgQWNlc3QgZmm6aWVyIGVzdGUgZGlzdHJpYnVpdCBzdWIgYWNlZWG6aSBsaWNlbv7jIGNhILppIHBhY2hldHVsIGxpYmljb252CiMKbXNnaWQgIiIKbXNnc3RyICIiCiJQcm9qZWN0LUlkLVZlcnNpb246IGxpYmljb252LTEuOS4xXG4iCiJSZXBvcnQtTXNnaWQtQnVncy1UbzogYnVnLWdudS1saWJpY29udkBnbnUub3JnXG4iCiJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwNi0wMS0yMyAxNDoyNiswMTAwXG4iCiJQTy1SZXZpc2lvbi1EYXRlOiAyMDAzLTA1LTE3IDE1OjE1KzAzMDBcbiIKIkxhc3QtVHJhbnNsYXRvcjogRXVnZW4gSG9hbmNhIDxldWdlbmhAdXJiYW4tZ3JhZngucm8+XG4iCiJMYW5ndWFnZS1UZWFtOiBSb21hbmlhbiA8dHJhbnNsYXRpb24tdGVhbS1yb0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+XG4iCiJNSU1FLVZlcnNpb246IDEuMFxuIgoiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTJcbiIKIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKCiM6IHNyYy9pY29udi5jOjgwCm1zZ2lkICJVc2FnZTogaWNvbnYgWy1jXSBbLXNdIFstZiBmcm9tY29kZV0gWy10IHRvY29kZV0gW2ZpbGUgLi4uXSIKbXNnc3RyICJGb2xvc2lyZTogaWNvbnYgWy1jXSBbLXNdIFstZiBkaW5fY29kXSBbLXQg7m5fY29kXSBbZmm6aWVyIC4uLl0iCgojOiBzcmMvaWNvbnYuYzo4Mgptc2dpZCAib3I6ICAgIGljb252IC1sIgptc2dzdHIgInNhdTogICBpY29udiAtbCIKCiM6IHNyYy9pY29udi5jOjg0CiMsIGMtZm9ybWF0Cm1zZ2lkICJUcnkgYCVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6ODcKIywgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIlVzYWdlOiAlcyBbT1BUSU9OLi4uXSBbLWYgRU5DT0RJTkddIFstdCBFTkNPRElOR10gW0lOUFVURklMRS4uLl1cbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzo5MQojLCBmdXp6eSwgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIm9yOiAgICAlcyAtbFxuIgptc2dzdHIgInNhdTogICBpY29udiAtbCIKCiM6IHNyYy9pY29udi5jOjk2CiMsIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICJDb252ZXJ0cyB0ZXh0IGZyb20gb25lIGVuY29kaW5nIHRvIGFub3RoZXIgZW5jb2RpbmcuXG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTAwCiMsIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICJPcHRpb25zIGNvbnRyb2xsaW5nIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGZvcm1hdDpcbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxMDMKIywgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIiIKIiAgLWYgRU5DT0RJTkcsIC0tZnJvbS1jb2RlPUVOQ09ESU5HXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZW5jb2Rpbmcgb2YgdGhlIGlucHV0XG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTA3CiMsIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICIiCiIgIC10IEVOQ09ESU5HLCAtLXRvLWNvZGU9RU5DT0RJTkdcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBlbmNvZGluZyBvZiB0aGUgb3V0cHV0XG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTEyCiMsIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICJPcHRpb25zIGNvbnRyb2xsaW5nIGNvbnZlcnNpb24gcHJvYmxlbXM6XG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTE1CiMsIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICIgIC1jICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjYXJkIHVuY29udmVydGlibGUgY2hhcmFjdGVyc1xuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjExOAojLCBjLWZvcm1hdCwgbm8td3JhcAptc2dpZCAiIgoiICAtLXVuaWNvZGUtc3Vic3Q9Rk9STUFUU1RSSU5HXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzdGl0dXRpb24gZm9yIHVuY29udmVydGlibGUgVW5pY29kZSBjaGFyYWN0ZXJzXG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTIyCiMsIGMtZm9ybWF0LCBuby13cmFwCm1zZ2lkICIgIC0tYnl0ZS1zdWJzdD1GT1JNQVRTVFJJTkcgICBzdWJzdGl0dXRpb24gZm9yIHVuY29udmVydGlibGUgYnl0ZXNcbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxMjUKIywgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIiIKIiAgLS13aWRlY2hhci1zdWJzdD1GT1JNQVRTVFJJTkdcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGlvbiBmb3IgdW5jb252ZXJ0aWJsZSB3aWRlIGNoYXJhY3RlcnNcbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxMzAKIywgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIk9wdGlvbnMgY29udHJvbGxpbmcgZXJyb3Igb3V0cHV0OlxuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjEzMwojLCBjLWZvcm1hdCwgbm8td3JhcAptc2dpZCAiICAtcywgLS1zaWxlbnQgICAgICAgICAgICAgICAgc3VwcHJlc3MgZXJyb3IgbWVzc2FnZXMgYWJvdXQgY29udmVyc2lvbiBwcm9ibGVtc1xuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjEzNwojLCBjLWZvcm1hdCwgbm8td3JhcAptc2dpZCAiSW5mb3JtYXRpdmUgb3V0cHV0OlxuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjE0MAojLCBjLWZvcm1hdCwgbm8td3JhcAptc2dpZCAiICAtbCwgLS1saXN0ICAgICAgICAgICAgICAgICAgbGlzdCB0aGUgc3VwcG9ydGVkIGVuY29kaW5nc1xuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjE0MwojLCBjLWZvcm1hdCwgbm8td3JhcAptc2dpZCAiICAtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXRcbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxNDYKIywgYy1mb3JtYXQsIG5vLXdyYXAKbXNnaWQgIiAgLS12ZXJzaW9uICAgICAgICAgICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0XG4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MTQ5Cm1zZ2lkICJSZXBvcnQgYnVncyB0byA8YnVnLWdudS1saWJpY29udkBnbnUub3JnPi5cbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzoxNTkKIywgZnV6enksIGMtZm9ybWF0Cm1zZ2lkICIiCiJUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOT1xuIgoid2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuXG4iCm1zZ3N0ciAiIgoiQWNlc3RhIGVzdGUgc29mdHdhcmUgZnJlZTsgY2l0af5pIHN1cnNlbGVwZW50cnUgY29uZGn+aWlsZSBkZSBjb3BpZXJlLiBOVVxuIgoiZXhpc3TjIG5pY2kgbyBnYXJhbv5pZTsgbmljaSBt42NhclZBTkRBQklMSVRBVEVBIHNhdSBNT0RJRklDQVJFQSDOTlRSLVVOXG4iCiJTQ09QIFBSSVZBVC5cbiIKCiM6IHNyYy9pY29udi5jOjE2MgojLCBjLWZvcm1hdAptc2dpZCAiV3JpdHRlbiBieSAlcy5cbiIKbXNnc3RyICJTY3JpcyBkZSAlcy5cbiIKCiM6IHNyYy9pY29udi5jOjI1MwojLCBjLWZvcm1hdAptc2dpZCAiIgoiJXMgYXJndW1lbnQ6IEEgZm9ybWF0IGRpcmVjdGl2ZSB3aXRoIGEgdmFyaWFibGUgd2lkdGggaXMgbm90IGFsbG93ZWQgaGVyZS4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6MjY0CiMsIGMtZm9ybWF0Cm1zZ2lkICIiCiIlcyBhcmd1bWVudDogQSBmb3JtYXQgZGlyZWN0aXZlIHdpdGggYSB2YXJpYWJsZSBwcmVjaXNpb24gaXMgbm90IGFsbG93ZWQgIgoiaGVyZS4iCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6Mjc2CiMsIGMtZm9ybWF0Cm1zZ2lkICIlcyBhcmd1bWVudDogQSBmb3JtYXQgZGlyZWN0aXZlIHdpdGggYSBzaXplIGlzIG5vdCBhbGxvd2VkIGhlcmUuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjMxNAojLCBjLWZvcm1hdAptc2dpZCAiJXMgYXJndW1lbnQ6IFRoZSBzdHJpbmcgZW5kcyBpbiB0aGUgbWlkZGxlIG9mIGEgZGlyZWN0aXZlLiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzozMTYKIywgYy1mb3JtYXQKbXNnaWQgIiVzIGFyZ3VtZW50OiBUaGUgY2hhcmFjdGVyICclYycgaXMgbm90IGEgdmFsaWQgY29udmVyc2lvbiBzcGVjaWZpZXIuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjMxOAojLCBjLWZvcm1hdAptc2dpZCAiIgoiJXMgYXJndW1lbnQ6IFRoZSBjaGFyYWN0ZXIgdGhhdCB0ZXJtaW5hdGVzIHRoZSBmb3JtYXQgZGlyZWN0aXZlIGlzIG5vdCBhICIKInZhbGlkIGNvbnZlcnNpb24gc3BlY2lmaWVyLiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzozMjkKIywgYy1mb3JtYXQKbXNnaWQgIiIKIiVzIGFyZ3VtZW50OiBUaGUgZm9ybWF0IHN0cmluZyBjb25zdW1lcyBtb3JlIHRoYW4gb25lIGFyZ3VtZW50OiAldSBhcmd1bWVudHMuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjM4MQojLCBjLWZvcm1hdAptc2dpZCAiY2Fubm90IGNvbnZlcnQgYnl0ZSBzdWJzdGl0dXRpb24gdG8gVW5pY29kZTogJXMiCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6NDE3CiMsIGMtZm9ybWF0Cm1zZ2lkICJjYW5ub3QgY29udmVydCB1bmljb2RlIHN1YnN0aXR1dGlvbiB0byB0YXJnZXQgZW5jb2Rpbmc6ICVzIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjQ1NAojLCBjLWZvcm1hdAptc2dpZCAiY2Fubm90IGNvbnZlcnQgYnl0ZSBzdWJzdGl0dXRpb24gdG8gd2lkZSBzdHJpbmc6ICVzIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjQ5MQojLCBjLWZvcm1hdAptc2dpZCAiaWNvbnY6IGNhbm5vdCBjb252ZXJ0IHdpZGVjaGFyIHN1YnN0aXR1dGlvbiB0byB0YXJnZXQgZW5jb2Rpbmc6ICVzIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjUyOAojLCBjLWZvcm1hdAptc2dpZCAiaWNvbnY6IGNhbm5vdCBjb252ZXJ0IGJ5dGUgc3Vic3RpdHV0aW9uIHRvIHRhcmdldCBlbmNvZGluZzogJXMiCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6NTYyIHNyYy9pY29udi5jOjYwNiBzcmMvaWNvbnYuYzo2ODAKIywgZnV6enksIGMtZm9ybWF0Cm1zZ2lkICIlczoldToldTogaW5jb21wbGV0ZSBjaGFyYWN0ZXIgb3Igc2hpZnQgc2VxdWVuY2UiCm1zZ3N0ciAiaWNvbnY6ICVzOiBjYXJhY3RlciBzYXUgc2VjdmVu/uMgZGUgc2hpZnQgaW5jb21wbGV0ZVxuIgoKIzogc3JjL2ljb252LmM6NTk1IHNyYy9pY29udi5jOjY3MAojLCBmdXp6eSwgYy1mb3JtYXQKbXNnaWQgIiVzOiV1OiV1OiBjYW5ub3QgY29udmVydCIKbXNnc3RyICJpY29udjogJXM6IG51IHBvdCBjb252ZXJ0aVxuIgoKIzogc3JjL2ljb252LmM6NjM3IHNyYy9pY29udi5jOjcwMAojLCBmdXp6eSwgYy1mb3JtYXQKbXNnaWQgIiVzOiV1OiV1Igptc2dzdHIgImljb252OiAlczogIgoKIzogc3JjL2ljb252LmM6NzEyCiMsIGZ1enp5LCBjLWZvcm1hdAptc2dpZCAiJXM6IEkvTyBlcnJvciIKbXNnc3RyICJpY29udjogJXM6IGVyb3JpIEkvT1xuIgoKIzogc3JjL2ljb252LmM6ODk2CiMsIGZ1enp5LCBjLWZvcm1hdAptc2dpZCAiY29udmVyc2lvbiBmcm9tICVzIHVuc3VwcG9ydGVkIgptc2dzdHIgImljb252OiBjb252ZXJzaWEgZGluICVzIG51IGVzdGUgc3Vwb3J0YXTjXG4iCgojOiBzcmMvaWNvbnYuYzo4OTgKIywgZnV6enksIGMtZm9ybWF0Cm1zZ2lkICJjb252ZXJzaW9uIHRvICVzIHVuc3VwcG9ydGVkIgptc2dzdHIgImljb252OiBjb252ZXJzaWEg7m4gJXMgbnUgZXN0ZSBzdXBvcnRhdONcbiIKCiM6IHNyYy9pY29udi5jOjkwMAojLCBmdXp6eSwgYy1mb3JtYXQKbXNnaWQgImNvbnZlcnNpb24gZnJvbSAlcyB0byAlcyB1bnN1cHBvcnRlZCIKbXNnc3RyICJpY29udjogY29udmVyc2lhIGRpbiAlcyDubiAlcyBudSBlc3RlIHN1cG9ydGF041xuIgoKIzogc3JjL2ljb252LmM6OTAxCiMsIGMtZm9ybWF0Cm1zZ2lkICJ0cnkgJyVzIC1sJyB0byBnZXQgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGVuY29kaW5ncyIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzo5NTUKbXNnaWQgIihzdGRpbikiCm1zZ3N0ciAiKHN0ZGluKSIKCiM6IHNyYy9pY29udi5jOjk2MwojLCBjLWZvcm1hdAptc2dpZCAiJXMiCm1zZ3N0ciAiIgoKIzogc3JjL2ljb252LmM6OTc0CiMsIGZ1enp5Cm1zZ2lkICJJL08gZXJyb3IiCm1zZ3N0ciAiaWNvbnY6IGVyb2FyZSBJL09cbiIKCiN+IG1zZ2lkICJpY29udjogJXM6ICIKI34gbXNnc3RyICJpY29udjogJXM6ICIKCiN+IG1zZ2lkICIiCiN+ICJVc2FnZTogaWNvbnYgWy0tYmluYXJ5XSBbLWNdIFstc10gWy1mIGZyb21jb2RlXSBbLXQgdG9jb2RlXSBbZmlsZSAuLi5dIgojfiBtc2dzdHIgIiIKI34gIkZvbG9zaXJlOiBpY29udiBbLS1iaW5hcnldIFstY10gWy1zXSBbLWYgZGluX2NvZF0gWy10IO5uX2NvZF0gW2ZpumllciAuLi5dIgo=