LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBXYWxvbgogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGV3ZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTIpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX1dBTE9OLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDJmXHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHg0MDAwXHgwMDEzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjMyIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIwIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjMyIgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI5NyIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQ5MCIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDAiCiAgTE9DQUxFX0lESUdJVFMgIjIiCiAgTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiAiMSIKICBMT0NBTEVfSUZJUlNUREFZT0ZXRUVLICI2IgogIExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSICIwIgogIExPQ0FMRV9JSU5UTENVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lMQU5HVUFHRSAiMDQ5MCIKICBMT0NBTEVfSUxEQVRFICIxIgogIExPQ0FMRV9JTFpFUk8gIjEiCiAgTE9DQUxFX0lNRUFTVVJFICIwIgogIExPQ0FMRV9JTU9OTFpFUk8gIjEiCiAgTE9DQUxFX0lORUdDVVJSICI4IgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIxIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIxIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lUSU1FICIxIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIwIgogIExPQ0FMRV9TMTE1OSAiIgogIExPQ0FMRV9TMjM1OSAiIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIkJFTCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICJsb24iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAibeVyIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIm1lciIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICJkanUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAidmluIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgInNlbSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICJkaW0iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiV0FMIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiZGphIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiZmV2IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAibeVzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiYXZyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAibWFlIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAiZGpuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiZGpsIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiYXdvIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAic2V0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIm9jdCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICJu9HYiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiZGVjIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkJlbGppa2UiCiAgTE9DQUxFX1NDVVJSRU5DWSAigCIKICBMT0NBTEVfU0RBVEUgIi8iCiAgTE9DQUxFX1NEQVlOQU1FMSAibG9uZGkiCiAgTE9DQUxFX1NEQVlOQU1FMiAibeVyZGkiCiAgTE9DQUxFX1NEQVlOQU1FMyAibWVya2lkaSIKICBMT0NBTEVfU0RBWU5BTUU0ICJkanVkaSIKICBMT0NBTEVfU0RBWU5BTUU1ICJ2aW5yZGkiCiAgTE9DQUxFX1NEQVlOQU1FNiAic2VtZGkiCiAgTE9DQUxFX1NEQVlOQU1FNyAiZGltZWduZSIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJCZWxnaXVtIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkV1cm8iCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiV2FsbG9vbiIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJFVVIiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIkJFIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgIndhIgogIExPQ0FMRV9TTEFOR1VBR0UgIldhbG9uIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJMaSBkZGQgZCBkaSBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgImRqYW527iIKICBMT0NBTEVfU01PTlRITkFNRTIgImbpdnLuIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAibeVzIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiYXZyaSIKICBMT0NBTEVfU01PTlRITkFNRTUgIm1hZXkiCiAgTE9DQUxFX1NNT05USE5BTUU2ICJkanVuIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiZGp1bGV0IgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiYXdvdXNzZSIKICBMT0NBTEVfU01PTlRITkFNRTkgInNldGltYmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAib2N09GJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIm70dmltYmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiZGVjaW1iZSIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiLiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICJCZWxqaWtlIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgImV1cm8iCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAiV2Fsb24iCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQvTU0veXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIiAiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5Igp9Cg==