LyoKICogV2luZUJvb3QgcmVzb3VyY2VzCiAqCiAqIENvcHlyaWdodCAoQykgMjAwOCBBbmRyZXkgRXNpbiA8YW5kcmV5QGVzaW4ubmFtZT4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqCiAqLwoKI2luY2x1ZGUgInJlc291cmNlLmgiCgpMQU5HVUFHRSBMQU5HX1JVU1NJQU4sIFNVQkxBTkdfREVGQVVMVAoKSUREX0VORFRBU0sgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAxODYsIDcxClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBEU19DRU5URVIgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIs7m6OTg7ejlIO/w7uPw4Ozs+yIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgREVGUFVTSEJVVFRPTiAgICLO8uzl7eAiLElEQ0FOQ0VMLDEyOSw0OSw1MCwxNQogICAgUFVTSEJVVFRPTiAgICAgICLH4OLl8Pjo8vwgz/Du9uXx8SIsSURPSyw1MSw0OSw3MSwxNQogICAgTFRFWFQgICAgICAgICAgICLP8O7o8fXu5OjyIPHs5e3gIO/u6/zn7uLg8uXr/yDo6+gg4vvq6/735e3o5Swg7e4g/fLgIO/w7uPw4Ozs4CDt5SDu8uLl9+Dl8i4iLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsNyw3LDE3MiwxOQogICAgTFRFWFQgICAgICAgICAgICLF8evoIOfg6vD78vwg7/Du4/Dg7OzzIO/w/+zuIPHl6ffg8Swg8u4g7O7m7e4g7+7y5fD/8vwg4vHlIO3l8e718ODt5e3t++Ug5ODt7fvlLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQyw3LDI4LDE3MiwxNQpFTkQK