LyoKICogVHVya2lzaCBSZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDYgRmF0aWggQf79Y/0KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgIm1zdmlkZW9fcHJpdmF0ZS5oIgoKTEFOR1VBR0UgTEFOR19UVVJLSVNILCBTVUJMQU5HX0RFRkFVTFQKCklDTV9DSE9PU0VfQ09NUFJFU1NPUiBESUFMT0cgIDM2LCAyNCwgMTg3LCA5NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiVmlkeW8gU/1r/f50/XJtYSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBERUZQVVNIQlVUVE9OICJUYW1hbSIsSURPSywxMjksMiw0OSwxNAogICAgUFVTSEJVVFRPTiAi3XB0YWwiLElEQ0FOQ0VMLDEyOSwxOCw0OSwxNAoKICAgIExURVhUICImU/1r/f50/XL9Y/06IiwtMSw5LDYsMTA1LDgKICAgIENPTUJPQk9YIElEQ19DT01QX0xJU1QsOSwxNiwxMTEsNjcsQ0JTX0RST1BET1dOTElTVHxXU19WU0NST0xMfFdTX1RBQlNUT1AKCiAgICBQVVNIQlVUVE9OICJZYSZw/WxhbmT9ci4uLiIsSURDX0NPTkZJR1VSRSwxMjksMzYsNDksMTQKICAgIFBVU0hCVVRUT04gIiZIYWtr/W5kYS4uLiIsSURDX0FCT1VULDEyOSw1Miw0OSwxNAoKICAgIFNDUk9MTEJBUiBJRENfUVVBTElUWV9TQ1JPTEwsOSw0NCwxMTEsOSxXU19UQUJTVE9QCgogICAgTFRFWFQgIlP9a/3+dP1ybWEgJkthbGl0ZXNpOiIsSURDX1FVQUxJVFlfVFhULDksMzQsODAsOAoKICAgIENPTlRST0wgIiZLZXkgRnJhbWUgRXZlcnkiLElEQ19LRVlGUkFNRV9DSEVDS0JPWCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1h8V1NfVEFCU1RPUCw5LDYwLDY2LDEyCiAgICBFRElUVEVYVCBJRENfS0VZRlJBTUUsNzgsNjAsMjIsMTIKICAgIExURVhUICJmcmFtZXMiLElEQ19LRVlGUkFNRV9GUkFNRVMsMTAzLDYyLDI2LDEwCgogICAgQ09OVFJPTCAiJlZlcmkgT3Jhbv0iLElEQ19EQVRBUkFURV9DSEVDS0JPWCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1h8V1NfVEFCU1RPUCw5LDc2LDY2LDEyCiAgICBFRElUVEVYVCBJRENfREFUQVJBVEUsNzgsNzYsMjIsMTIKICAgIExURVhUICJLQi9zZWMiLElEQ19EQVRBUkFURV9LQiwxMDIsNzgsMjYsMTAKfQo=