LyoKICogWENPUFkgLSBXaW5lLWNvbXBhdGlibGUgeGNvcHkgcHJvZ3JhbQogKiBHZXJtYW4gbGFuZ3VhZ2Ugc3VwcG9ydAogKgogKiBDb3B5cmlnaHQgKEMpIDIwMDcgSi4gRWRtZWFkZXMKICogQ29weXJpZ2h0IChDKSAyMDA4IE0uIEthcmNoZXIKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKCkxBTkdVQUdFIExBTkdfR0VSTUFOLCBTVUJMQU5HX05FVVRSQUwKClNUUklOR1RBQkxFCnsKICAgIFNUUklOR19JTlZQQVJNUywgIkZhbHNjaGUgUGFyYW1ldGVyYW56YWhsIC0gIHhjb3B5IC8/IHplaWd0IEhpbGZlIGFuXG4iCiAgICBTVFJJTkdfSU5WUEFSTSwgICJVbmJla2FubnRlciBQYXJhbWV0ZXIgJyVzJyAtIHhjb3B5IC8/IHplaWd0IEhpbGZlIGFuXG4iCiAgICBTVFJJTkdfUEFVU0UsICAgICJFaW5nYWJldGFzdGUgYmV05HRpZ2VuLCB1bSBtaXQgZGVtIEtvcGllcmVuIHp1IGJlZ2lubmVuXG4iCiAgICBTVFJJTkdfU0lNQ09QWSwgICIlZCBEYXRlaShlbikgd/xyZGVuIGtvcGllcnRcbiIKICAgIFNUUklOR19DT1BZLCAgICAgIiVkIERhdGVpKGVuKSBrb3BpZXJ0XG4iCiAgICBTVFJJTkdfUUlTRElSLCAgICJJc3QgJyVzJyBlaW5lIERhdGVpIG9kZXIgZWluIFZlcnplaWNobmlzXG4iIFwKICAgICAgICAgICAgICAgICAgICAgImFtIFppZWxzb3J0P1xuIiBcCiAgICAgICAgICAgICAgICAgICAgICIoRCAtIERhdGVpLCBWIC0gVmVyemVpY2huaXMpXG4iCiAgICBTVFJJTkdfU1JDUFJPTVBULCIlcz8gKEphfE5laW4pXG4iCiAgICBTVFJJTkdfT1ZFUldSSVRFLCIlcyD8YmVyc2NocmVpYmVuPyAoSmF8TmVpbnxBbGxlKVxuIgogICAgU1RSSU5HX0NPUFlGQUlMLCAiS29waWVyZW4gdm9uICclcycgbmFjaCAnJXMnIGZlaGxnZXNjaGxhZ2VuLiBGZWhsZXJudW1tZXI6ICVkXG4iCiAgICBTVFJJTkdfT1BFTkZBSUwsICJGZWhsZXIgYmVpbSDWZmZuZW4gdm9uICclcydcbiIKICAgIFNUUklOR19SRUFERkFJTCwgIkZlaGxlciBiZWltIExlc2VuIHZvbiAnJXMnXG4iCiAgICBTVFJJTkdfWUVTX0NIQVIsICJKIgogICAgU1RSSU5HX05PX0NIQVIsICAiTiIKICAgIFNUUklOR19BTExfQ0hBUiwgIkEiCiAgICBTVFJJTkdfRklMRV9DSEFSLCJEIgogICAgU1RSSU5HX0RJUl9DSEFSLCAiViIKCiAgICBTVFJJTkdfSEVMUCwKIlhDT1BZIC0gS29waWVydCBEYXRlaWVuIG9kZXIgVmVyemVpY2huaXNzZSBhbiBlaW5lbiBaaWVsb3J0XG5cClxuXApTeW50YXg6XG5cClhDT1BZIFF1ZWxsZSBbWmllbF0gWy9JXSBbL1NdIFsvUV0gWy9GXSBbL0xdIFsvV10gWy9UXSBbL05dIFsvVV1cblwKXHQgICAgIFsvUl0gWy9IXSBbL0NdIFsvUF0gWy9BXSBbL01dIFsvRV0gWy9EXSBbL1ldIFsvLVldXG5cClxuXApNaXQ6XG5cClxuXApbL0ldICBCZWhhbmRsZSBaaWVsIGFscyBWZXJ6ZWljaG5pc25hbWVuLCB3ZW5uIGVzIG5pY2h0IGV4aXN0aWVydCB1bmRcblwKXHRtZWhyZXJlIERhdGVpZW4ga29waWVydCB3ZXJkZW4uXG5cClsvU10gIEtvcGllcmUgVmVyemVpY2huaXNzZSB1bmQgVW50ZXJ2ZXJ6ZWljaG5pc3NlXG5cClsvRV0gIEtvcGllcmUgVmVyemVpY2huaXNzZSB1bmQgVW50ZXJ2ZXJ6ZWljaG5pc3NlLCBhdWNoIGxlZXJlXG5cClsvUV0gIFplaWdlIGRpZSBEYXRlaW5hbWVuIGJlaW0gS29waWVyZW4gbmljaHQgYW5cblwKWy9GXSAgWmVpZ2Ugdm9sbHN05G5kaWdlIERhdGVpbmFtZW4gdm9uIFF1ZWxsZSB1bmQgWmllbCBhblxuXApbL0xdICBTaW11bGF0aW9uOiBaZWlnZSBkaWUgTmFtZW4gZGVyIERhdGVpbiwgZGllIGtvcGllcnQgd/xyZGVuXG5cClsvV10gIFdhcnRldCB2b3IgQmVnaW5uIGRlcyBLb3BpZXJlbnMgYXVmIEJlc3TkdGlndW5nXG5cClsvVF0gIEVyemV1Z2UgZWluZSBsZWVyZSBWZXJ6ZWljaG5pc3N0cnVrdHVyLCBvaG5lIERhdGVpZW4genUga29waWVyZW5cblwKWy9ZXSAgS2VpbmUgTmFjaGZyYWdlIHZvciBkZW0g3GJlcnNjaHJlaWJlbiB2b24gRGF0ZWllblxuXApbLy1ZXSBOYWNocmFnZSB2b3IgZGVtINxiZXJzY2hyZWliZW4gdm9uIERhdGVpZW5cblwKWy9QXSAgRnJhZ3QgZvxyIGplZGUgUXVlbGxkYXRlaSwgb2Igc2llIGtvcGllcnQgd2VyZGVuIHNvbGxcblwKWy9OXSAgS29waWVydCBkaWUgRGF0ZWllbiB1bnRlciBpaHJlbSBLdXJ6bmFtZW5cblwKWy9VXSAgS29waWVydCBudXIgRGF0ZWllbiwgZGllIGFtIFppZWwgYmVyZWl0cyBleGlzdGllcmVuXG5cClsvUl0gINxiZXJzY2hyZWlidCBzY2hyZWliZ2VzY2j8dHp0ZSBEYXRlaWVuXG5cClsvSF0gIEtvcGllcmUgYXVjaCB2ZXJzdGVja3RlIHVuZCBTeXN0ZW1kYXRlaWVuXG5cClsvQ10gIE5hY2ggRmVobGVybiBkZW4gS29waWVydm9yZ2FuZyBmb3J0c2V0emVuXG5cClsvQV0gIE51ciBEYXRlaWVuIG1pdCBBcmNoaXZiaXQga29waWVyZW5cblwKWy9NXSAgTnVyIERhdGVpZW4gbWl0IEFyY2hpdmJpdCBrb3BpZXJlbiwgZGFuYWNoIEFyY2hpdmJpdCBs9nNjaGVuXG5cClsvRCB8IC9EOm0tZC15XSBLb3BpZXJlIG5ldWUgRGF0ZWllbiB1bmQgRGF0ZWllbiwgZGllIG5ldWVyIGFscyBkYXNcblwKXHRcdGFuZ2VnZWJlbmUgRGF0dW0gc2luZC4gV2lyZCBrZWluIERhdHVtIGFuZ2VnZWdlYm4sIHdlcmRlbiBudXJcblwKXHRcdFF1ZWxsZGF0ZWllbiBrb3BpZXJ0LCBkaWUgbmV1ZXIgc2luZCBhbHMgZGllIFppZWxkYXRlaVxuXG4iCgp9Cg==