LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBCZWxhcnVzaWFuCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MSkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfQkVMQVJVU0lBTiwgU1VCTEFOR19ERUZBVUxUCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDIwM1x4ODAwMFx4Mzg0OFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwNFx4MDAwMFx4MDAwMFx4MDAwMlx4MDAwNFx4MDAwMFx4MDAwMFx4MDIwMiIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICIzNzUiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjMiCiAgTE9DQUxFX0lEQVRFICIxIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUxIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NjYiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiMzc1IgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICI1MDAiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0MjMiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDA3IgogIExPQ0FMRV9JREVGQVVMVFVOSVhDT0RFUEFHRSAiMTI1MSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDIzIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjAiCiAgTE9DQUxFX1MxMTU5ICIiCiAgTE9DQUxFX1MyMzU5ICIiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiQkxSIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIu/tIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIuCiIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIvHwIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIvf2IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgIu/yIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgIvHhIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIu3kIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkJFTCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgItHy8yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIsv+8iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgItHg6iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIsrw4CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIszg6SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgItf98CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIsuz7yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIsbtsyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIsLl8CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICLK4PEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAiy7PxIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgItHt5SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJCZWxhcnVzIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIvDz4S4iCiAgTE9DQUxFX1NEQVRFICIuIgogIExPQ0FMRV9TREFZTkFNRTEgIu/g7f/k5+Xr4OoiCiAgTE9DQUxFX1NEQVlOQU1FMiAi4KLy7vDg6iIKICBMT0NBTEVfU0RBWU5BTUUzICLx5fDg5OAiCiAgTE9DQUxFX1NEQVlOQU1FNCAi9+D24uXwIgogIExPQ0FMRV9TREFZTkFNRTUgIu//8u2z9uAiCiAgTE9DQUxFX1NEQVlOQU1FNiAi8fPh7vLgIgogIExPQ0FMRV9TREFZTkFNRTcgIu3/5Ofl6/8iCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiQmVsYXJ1cyIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJCZWxhcnVzaWFuIFJ1YmxlIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkJlbGFydXNpYW4iCiAgTE9DQUxFX1NHUk9VUElORyAiMzszIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiQllSIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJCWSIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJiZSIKICBMT0NBTEVfU0xBTkdVQUdFICJCZWxhcnVzaWFuIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIiwiCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzszIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAi0fLz5Ofl7fwiCiAgTE9DQUxFX1NNT05USE5BTUUyICLL/vL7IgogIExPQ0FMRV9TTU9OVEhOQU1FMyAi0eDq4OKz6iIKICBMT0NBTEVfU01PTlRITkFNRTQgIsrw4PHg4rPqIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAizODpIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAi1/3w4uXt/CIKICBMT0NBTEVfU01PTlRITkFNRTcgIsuz7+Xt/CIKICBMT0NBTEVfU01PTlRITkFNRTggIsbts+Ll7fwiCiAgTE9DQUxFX1NNT05USE5BTUU5ICLC5fDg8eXt/CIKICBMT0NBTEVfU01PTlRITkFNRTEwICLK4PHy8Pv37bPqIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIsuz8fLg7+DkIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgItHt5ebg7fwiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiAiCiAgTE9DQUxFX1NOQU1FICJiZS1CWSIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICLB5evg8PPx/CIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICLw8+Hl6/wiCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAiweXr4PDz8erg/yIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC5NTS55eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiICIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K