LyoKICogQ29weXJpZ2h0IDIwMDIgTWljaGFlbCBH/G5uZXdpZwogKiBDb3B5cmlnaHQgMjAwMyBJdmFuIExlbyBNdXJyYXktU21pdGgKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19JVEFMSUFOLCBTVUJMQU5HX0RFRkFVTFQKCklERF9TQVZFT1BUSU9OUyBESUFMT0cgRklYRUQgSU1QVVJFICA0MywgMzcsIDE5NiwgODIKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIk9wemlvbmkgZGkgY29tcHJlc3Npb25lIgpGT05UIDgsICJNUyBTYW5zIFNlcmlmIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICImU2NlZ2xpZXJlIHVuIGZsdXNzbzoiLC0xLDIsNSwxMTQsMTAKICAgIENPTUJPQk9YICAgICAgICBJRENfU1RSRUFNLDIsMTgsMTM0LDYxLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwKICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIiZPcHppb25pLi4uIixJRENfT1BUSU9OUywxNDUsMTcsNDUsMTQKICAgIEFVVE9DSEVDS0JPWCAgICAiJkludGVyZm9saWF6aW9uZSBvZ25pIixJRENfSU5URVJMRUFWRSwzLDQyLDYwLDExLFdTX1RBQlNUT1AKICAgIEVESVRURVhUICAgICAgICBJRENfSU5URVJMRUFWRUVWRVJZLDY2LDQxLDMyLDEyLEVTX0FVVE9IU0NST0xMCiAgICBMVEVYVCAgICAgICAgICAgImZvdG9ncmFtbWkiLC0xLDEwNCw0MywzNiw5CiAgICBMVEVYVCAgICAgICAgICAgIkZvcm1hdG8gYXR0dWFsZToiLC0xLDMsNTYsNTMsOQogICAgTFRFWFQgICAgICAgICAgICJUaGlzIHNwYWNlIGZvciByZW50IixJRENfRk9STUFUVEVYVCw1NSw1Niw5MCwyNgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDUsNDIsNDUsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxsYSIsSURDQU5DRUwsMTQ1LDYxLDQ1LDE0CkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKewogIElEU19XQVZFU1RSRUFNRk9STUFUCSJGb3JtYXRvIHdhdmU6ICVzIgogIElEU19XQVZFRklMRVRZUEUJIkZvcm1hdG8gd2F2ZSIKICBJRFNfQUxMTVVMVElNRURJQQkiVHV0dGkgaSBmaWxlIG11bHRpbWVkaWFsaSIKICBJRFNfQUxMRklMRVMJCSJUdXR0aSBpIGZpbGUgKCouKilAKi4qIgogIElEU19WSURFTwkJIlZpZGVvIgogIElEU19BVURJTwkJIkF1ZGlvIgogIElEU19BVklTVFJFQU1GT1JNQVQJIiVzICVzICMlZCIKICBJRFNfQVZJRklMRVRZUEUJIkdlc3RvcmUgcHJlZGVmaW5pdG8gZGkgV2luZSBkZWkgZmlsZSBBVkkiCiAgSURTX1VOQ09NUFJFU1NFRCAgICAgICJOb24gY29tcHJlc3NvIgp9Cg==