MjAwNi0xMC0zMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiB0cmFucy1kZWNsLmMgKGdmY19nZW5lcmF0ZV9jb25zdHJ1Y3RvcnMpOiBVcGRhdGUgZm9yIHJlbW92YWwKCW9mIGdldF9maWxlX2Z1bmN0aW9uX25hbWUuCgovKiBBUFBMRSBMT0NBTCBtZXJnZSBtYXJnZXIgKi8KLyogU3R1ZmYgYWJvdmUgaXMgb25seSBpbiBtYWlubGluZSwgbm90IHRoZSA0LjIgYnJhbmNoICovCjIwMDctMDctMjAgIERhbmllbCBGcmFua2UgIDxmcmFua2UuZGFuaWVsQGdtYWlsLmNvbT4KCglCYWNrcG9ydCBmcm9tIHRydW5rOgoJUFIgZm9ydHJhbi8zMjAwMgoJKiByZXNvbHZlLmMgKHJlc29sdmVfYWN0dWFsX2FyZ2xpc3QpOiBSZXNvbHZlIGFjdHVhbCBhcmd1bWVudCBhZnRlcgoJYmVpbmcgaWRlbnRpZmllZCBhcyB2YXJpYWJsZS4KCjIwMDctMDYtMjAgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8zMjMwMgoJKiB0cmFucy1jb21tb24uYyAoYnVpbGRfY29tbW9uX2RlY2wpOiBJZiByZXNpemluZyBvZiBjb21tb24KCWRlY2wgaXMgbmVlZGVkLCB1cGRhdGUgdGhlIFRSRUVfVFlQRS4KCjIwMDctMDUtMzEgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8zMTQ4MwoJKiB0cmFucy1leHByLmMgKGdmY19jb252X2Z1bmN0aW9uX2NhbGwpOiBHaXZlIGEgZHVtbXkKCXByb2NlZHVyZSB0aGUgY29ycmVjdCB0eXBlIGlmIGl0IGhhcyBhbHRlcm5hdGUgcmV0dXJucy4KCQoKCVBSIGZvcnRyYW4vMzE1NDAKCSogcmVzb2x2ZS5jIChyZXNvbHZlX2ZsX3Byb2NlZHVyZSk6IFJlc29sdmUgY29uc3RhbnQgY2hhcmFjdGVyCglsZW5ndGhzLgoKCVBSIGZvcnRyYW4vMzE4NjcKCVBSIGZvcnRyYW4vMzE5OTQKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX2NvbnZfZXhwcl9kZXNjcmlwdG9yKTogT2J0YWluIHRoZSBzdG9yZWQKCW9mZnNldCBmb3Igbm9uLWRlc2NyaXB0b3IsIHNvdXJjZSBhcnJheXMgYW5kIGNvcnJlY3QgZm9yIHN0cmlkZQoJbm90IGVxdWFsIHRvIG9uZSBiZWZvcmUgd3JpdGluZyB0byBmaWVsZCBvZiBvdXRwdXQgZGVzY3JpcHRvci4KCjIwMDctMDUtMTcgIFRvYmlhcyBCdXJudXMgIDxidXJudXNAbmV0LWIuZGU+CgoJKiBnZm9ydHJhbi50ZXhpIChHRk9SVFJBTl9DT05WRVJUX1VOSVQpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24uCgoyMDA3LTA1LTE2ICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGZ4Y291ZGVydEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzMxNzI1CgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2NvbnZfc3Vic3RyaW5nKTogRXZhbHVhdGUgc3Vic3RyaW5nIGJvdW5kcwoJb25seSBvbmNlLgoKMjAwNy0wNS0xMyAgUmVsZWFzZSBNYW5hZ2VyCgoJKiBHQ0MgNC4yLjAgcmVsZWFzZWQuCgoyMDA3LTA0LTMwICBEYW5pZWwgRnJhbmtlICA8ZnJhbmtlLmRhbmllbEBnbWFpbC5jb20+CgoJKiBpbnRyaW5zaWMudGV4aSAoSUVSUk5PKTogQ2hhbmdlZCBjbGFzcyB0byBub24tZWxlbWVudGFsIGZ1bmN0aW9uLgoJKExPRzEwKTogUmVtb3ZlZCBDT01QTEVYIGFzIGFjY2VwdGVkIGFyZ3VtZW50IHR5cGUuCgkoTkVXX0xJTkUpOiBDaGFuZ2VkIGNsYXNzIGZyb20gZWxlbWVudGFsIHRvIGlucXVpcnkgZnVuY3Rpb24uCgkoU0lHTik6IFJlbW92ZWQgcmVxdWlyZW1lbnQgb2Ygc2NhbGFyIGFyZ3VtZW50cy4KCShTTkdMKTogQ2hhbmdlZCBjbGFzcyB0byBlbGVtZW50YWwgZnVuY3Rpb24uCgoyMDA3LTA0LTI5ICBEYW5pZWwgRnJhbmtlICA8ZnJhbmtlLmRhbmllbEBnbWFpbC5jb20+CgoJKiBnZm9ydHJhbi50ZXhpOiBDbGVhbmVkIHVwIGtleXdvcmQgaW5kZXguCgkqIGludm9rZS50ZXhpOiBMaWtld2lzZS4KCSogaW50cmluc2ljLnRleGk6IExpa2V3aXNlLgoKMjAwNy0wNC0yOSAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzMxNzExCgkqIHRyYW5zLWFycmF5LmMgKGdmY19jb252X3Jlc29sdmVfZGVwZW5kZW5jaWVzKTogQ3JlYXRlIGEgdGVtcAoJd2hlbmV2ZXIgYSBkZXBlbmRlbmN5IGlzIGZvdW5kLgoKMjAwNy0wNC0yNyAgQnJvb2tzIE1vc2VzICA8YnJvb2tzLm1vc2VzQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbnRyaW5zaWMudGV4aSAoVHJhbnNmZXIpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24uCgoyMDA3LTA0LTI3ICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdmb3J0cmFuLnRleGkgKE9wdGlvbiBJbmRleCk6IEFkZCBAc2FtcCBhcyBuZWVkZWQuCgkqIGludm9rZS50ZXhpOiBSZW1vdmVkIGV4dHJhbmVvdXMgbGluZS4KCSgtZnNob3J0LWVudW1zKTogRml4ZWQgaW50ZXhpbmcuCgoyMDA3LTA0LTI3ICBEYW5pZWwgRnJhbmtlICA8ZnJhbmtlLmRhbmllbEBnbWFpbC5jb20+CgoJQmFja3BvcnQgZnJvbSB0cnVuazoKCSogaW50cmluc2ljLnRleGkgKE5VTEwsIFBBQ0ssIFBSRVNFTlQsIFJFUEVBVCwgU0NBTiwgU0hBUEUsIAoJU0laRSwgVFJBTlNQT1NFLCBUUklNLCBWRVJJRlkpOiBOZXcuCgkoQURKVVNUTCwgQURKVVNUUiwgSU5ERVgpOiBBZGRlZCBjcm9zcyByZWZlcmVuY2VzLgoJKElOVCwgSU5UMiwgSU5UOCwgTE9ORyk6IEVuYWJsZWQgc2VjdGlvbiBoZWFkZXIuCgoJKiBpbnRyaW5zaWMudGV4aSAoUFJPRFVDVCwgUkVTSEFQRSwgU1BBQ0lORywgU1BSRUFELCBTVU0sIAoJU1lTVEVNX0NMT0NLLCBUUkFOU0ZFUiwgVU5QQUNLKTogTmV3LgoJKERBVEVfQU5EX1RJTUUsIENQVV9USU1FLCBSUlNQQUNJTkcpOiBBZGRlZCBjcm9zcyByZWZlcmVuY2VzLgoKCSogaW50cmluc2ljLnRleGkgKEFORCwgRlBVVCwgRlBVVEMsIE1PRFVMTywgT1IsIFNFVF9FWFBPTkVOVCwKCVhPUik6IEZpeGVkIGV4YW1wbGVzLgoKCSogZ2ZvcnRyYW4udGV4aTogQWRkZWQgbm9kZSBhbmQgbWVudSBlbnRyeSBmb3IgYW4gb3B0aW9uIGluZGV4LgoJKiBpbnZva2UudGV4aTogTW92ZWQgY29tbWFuZCBsaW5lIG9wdGlvbiByZWxhdGVkIGVudHJpZXMgb2YgdGhlIGNvbmNlcHQgCglpbmRleCB0byB0aGUgb3B0aW9uIGluZGV4LgoKMjAwNy0wNC0xMiAgRGFuaWVsIEZyYW5rZSAgPGZyYW5rZS5kYW5pZWxAZ21haWwuY29tPgoKCVBSIGZvcnRyYW4vMzEyMzQKCSogaW50cmluc2ljLnRleGkgKFJBTkRPTV9TRUVELCBSQU5ET01fTlVNQkVSKTogTmV3LgoKMjAwNy0wMy0yMyAgQnJvb2tzIE1vc2VzICA8YnJvb2tzLm1vc2VzQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbnZva2UudGV4aTogTWlzYy4gc21hbGwgdHlwbyBmaXhlcy4KCSgtV2NoYXJhY3Rlci10cnVuY2F0aW9uKTogQWRkLgoJKC1Xbm9uc3RkLWludHJpbnNpY3MpOiBDb3JyZWN0IHNwZWxsaW5nLgoJKC1zdGQ9KTogRWRpdC4KCjIwMDctMDMtMTcgIEZyYW5jb2lzLVhhdmllciBDb3VkZXJ0ICA8Y291ZGVydEBjbGlwcGVyLmVucy5mcj4KCglQUiBmb3J0cmFuLzMxMTg0CgkqIGludm9rZS50ZXhpOiBGaXggdHlwby4KCjIwMDctMDMtMTQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogbW9kdWxlLmMgKG1pb190eXBlc3BlYyk6IERvbid0IGxvb2sgYXQgdHMtPmNsIGlmIG5vdCBCVF9DSEFSQUNURVIuCgoyMDA3LTAzLTEzICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBmb3J0cmFuLzMwOTMzCglQUiBmb3J0cmFuLzMwOTQ4CglQUiBmb3J0cmFuLzMwOTUzCgkqIGludHJpbnNpY3MudGV4aSAoQ0hESVIpOiBGaXggYXJndW1lbnQgbmFtZXMsIG5vdGUKCXRoYXQgU1RBVFVTIG11c3QgYmUgYSBkZWZhdWx0IGludGVnZXIuCgkoQ1RJTUUpOiBGaXggYXJndW1lbnQgbmFtZXMsIG5vdGUgdGhhdCBSRVNVTFQgbXVzdAoJYmUgYSBkZWZhdWx0IGludGVnZXIuCgkoRVhJVCk6IE5vdGUgdGhhdCBTVEFUVVMgbXVzdCBiZSBhIGRlZmF1bHQgaW50ZWdlci4KCjIwMDctMDMtMTMgIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoKCUJhY2twb3J0IGZyb20gdHJ1bms6CglQUiBmb3J0cmFuLzI4MDY4CgkqIGludHJpbnNpYy50ZXhpOiBHZW5lcmFsIHdoaXRlc3BhY2UgY2xlYW51cCwgcmVtb3ZlCgljb21tZW50IGFib3V0IG1pc3NpbmcgaW50cmluc2ljcy4KCShtZW51KTogQWRkIGxpbmVzIGZvciBuZXcgZW50cmllcyBsaXN0ZWQgYmVsb3cuCgkoQUNPU0gpOiBNZW50aW9uIHNwZWNpZmljIGZ1bmN0aW9uIERBQ09TSCwgY29ycmVjdAoJZGVzY3JpcHRpb24gcGhyYXNpbmcuCgkoQVNJTkgpOiBNZW50aW9uIHNwZWNpZmljIGZ1bmN0aW9uIERBU0lOSCwgY29ycmVjdAoJZGVzY3JpcHRpb24gcGhyYXNpbmcuCgkoQVRBTkgpOiBNZW50aW9uIHNwZWNpZmljIGZ1bmN0aW9uIERBVEFOSCwgY29ycmVjdAoJZGVzY3JpcHRpb24gcGhyYXNpbmcuCgkoQ09TKTogQWRkIGluZGV4IGVudHJ5IGZvciBDQ09TLgoJKENQVV9USU1FKTogQ29ycmVjdCAiUkVBTCIgdG8gIlJFQUwoKikiLgoJKEVYUCk6IEFkZCBpbmRleCBlbnRyeSBmb3IgQ0VYUC4KCShJTlQpOiBDb3JyZWN0IGFyZ3VtZW50IG5hbWUgdG8gIkEiLgoJKElOVDIpOiBOZXcgZW50cnkuCgkoSU5UOCk6IE5ldyBlbnRyeS4KCShMT05HKTogTmV3IGVudHJ5LgoJKE1BWCk6IEFkZCBpbmRleCBlbnRyaWVzIGZvciBzcGVjaWZpYyB2YXJpYW50cy4KCShNQ0xPQ0spOiBOZXcgZW50cnkuCgkoTUNMT0NLOCk6IE5ldyBlbnRyeS4KCShTRUNORFMpOiBBZGp1c3QgdG8gYSBtb3JlIHN0YW5kYXJkIGZvcm0uCgkoU0VDT05EKTogTmV3IGVudHJ5LgoJKFRJTUUpOiBBZGQgY3Jvc3MtcmVmZXJlbmNlIHRvIE1DTE9DSy4KCShUSU1FOCk6IEFkZCBjcm9zcy1yZWZlcmVuY2UgdG8gTUNMT0NLOC4KCjIwMDctMDMtMDggIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoKCUJhY2twb3J0IGZyb20gdHJ1bms6CgkqIGludHJpbnNpYy50ZXhpOiBtaW5vciB0eXBvIGZpeGVzLCByZW1vdmVkIHByb2xvZ3VlLgoJKEZTRUVLKTogbW92ZWQgdG8gY29ycmVjdCBwbGFjZSBpbiBhbHBoYWJldGljYWwgb3JkZXIuCgkoTElOSykgRG9jdW1lbnQgZnVuY3Rpb24gZm9ybS4KCShSRU5BTUUpOiBMaWtld2lzZS4KCShTWU1MTkspOiBMaWtld2lzZS4KCShTWVNURU0pOiBMaWtld2lzZS4KCShVTkxJTkspOiBMaWtld2lzZS4KCShJQ0hBUikgSW1wcm92ZSBpbnRlcm5hbCBJL08gbm90ZS4KCShBQ0hBUik6IFJlZmVyZW5jZSBpdC4KCShDSEFSKTogUmVmZXJlbmNlIGl0LgoJKElBQ0hBUik6IFJlZmVyZW5jZSBpdC4KCjIwMDctMDMtMDggIERhbmllbCBGcmFua2UgIDxmcmFua2UuZGFuaWVsQGdtYWlsLmNvbT4KCglCYWNrcG9ydCBmcm9tIHRydW5rOgoJUFIgZm9ydHJhbi8zMDk0NwoJKiBjaGVjay5jIChnZmNfY2hlY2tfYWxhcm1fc3ViKTogQWRkZWQgY2hlY2sgZm9yIGRlZmF1bHQgaW50ZWdlcgoJa2luZCBvZiBzdGF0dXMgYXJndW1lbnQuCgkqIGlyZXNvbHZlLmMgKGdmY19yZXNvbHZlX2FsYXJtX3N1Yik6IFJlbW92ZWQgY29udmVyc2lvbiBvZiAKCXN0YXR1cyBhcmd1bWVudC4KCSogaW50cmluc2ljLnRleGkgKEFMQVJNKTogRXh0ZW5kZWQgZG9jdW1lbnRhdGlvbi4KCjIwMDctMDMtMDggIERhbmllbCBGcmFua2UgIDxmcmFua2UuZGFuaWVsQGdtYWlsLmNvbT4KCglCYWNrcG9ydCBmcm9tIHRydW5rOgoJKiBpbnRyaW5zaWMudGV4aSAoR0VSUk9SLCBJU0FUVFksIFRUWU5BTSk6IE5ldy4KCShBQk9SVCwgRkxVU0gsIEZOVU0sIElSQU5ELCBNQUxMT0MsIFNJR05BTCwgU1JBTkQpOiBGaXhlZCB0eXBvLgoJKiBpbnRyaW5zaWMuYyAoYWRkX3N1YnJvdXRpbmVzKTogQWRqdXN0ZWQgZHVtbXkgYXJndW1lbnQgbmFtZXMKCW9mIEdFUlJPUiBhbmQgVFRZTkFNLgoKMjAwNy0wMy0wOCAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCSAgICBUb2JpYXMgQnVybnVzICA8YnVybnVzQG5ldC1iLmRlPgoKCVBSIGZvcnRyYW4vMzA4NzMKCSogZGVjbC5jIChnZmNfbWF0Y2hfZW50cnkpOiBSZW1vdmUgZXJyb25lb3VzIGVudHJ5IHJlc3VsdCBjaGVjay4KCjIwMDctMDMtMDYgIERhbmllbCBGcmFua2UgIDxmcmFua2UuZGFuaWVsQGdtYWlsLmNvbT4KCglCYWNrcG9ydCBmcm9tIHRydW5rOgoJUFIgZG9jdW1lbnRhdGlvbi8zMDk1MAoJKiBpbnRyaW5zaWMudGV4aSAoQU5ELCBDUFVfVElNRSk6IEZpeCBkdW1teSBhcmd1bWVudCBuYW1lcy4KCShGUkVFKTogRml4IGNhbGwgc3ludGF4LgoKMjAwNy0wMy0wNiAgQnJvb2tzIE1vc2VzICA8YnJvb2tzLm1vc2VzQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbnZva2UudGV4aTogQ29ycmVjdGVkIC1XdGFicyBkb2N1bWVudGF0aW9uLgoKMjAwNy0wMy0wNiAgQnJvb2tzIE1vc2VzICA8YnJvb2tzLm1vc2VzQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbnRyaW5zaWMudGV4aTogQmFja3BvcnRlZCB0eXBvIGZpeGVzIGZyb20gdHJ1bmsuCgkqIGludm9rZS50ZXhpOiBMaWtld2lzZS4KCjIwMDctMDMtMDYgIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaW50cmluc2ljLnRleGk6IExpbWl0IGNvbHVtbiB3aWR0aHMgdG8gYSB0b3RhbCBvZiAuODUuCgoyMDA3LTAzLTA1ICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdmb3J0cmFuLnRleGkgKEdGb3J0cmFuIGFuZCBHNzcpOiBSZXdyaXRlIGNvbXBsZXRlbHkuCgoyMDA3LTAzLTA1ICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1hdGNoLmMgKGdmY19tYXRjaF9uYW1lKTogRXhwYW5kZWQgY29tbWVudC4KCjIwMDctMDMtMDUgIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ2ZvcnRyYW4udGV4aSAoT2xkLXN0eWxlIGtpbmQgc3BlY2lmaWNhdGlvbnMpOiBEb2N1bWVudAoJc3BlY2lhbCBoYW5kbGluZyBvZiBvbGQtc3R5bGUga2luZCBzcGVjaWZpZXJzIGZvciBDT01QTEVYLgoJKiBkZWNsLmMgKGdmY19tYXRjaF9vbGRfa2luZF9zcGVjKTogRG9jdW1lbnQga2luZC9ieXRlc2l6ZQoJYXNzdW1wdGlvbnMgZm9yIENPTVBMRVggaW4gY29tbWVudC4KCjIwMDctMDMtMDUgIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIDMxMDUwCgkqIGdmb3J0cmFuc3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IFVwZGF0ZSBwcm9ncmFtCgluYW1lIGFuZCBjb3B5cmlnaHQgZGF0ZS4KCjIwMDctMDMtMDUgIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGZvcnRyYW4vMzA0MzcKCUJhY2twb3J0IGZyb20gdHJ1bms6CgkyMDA3LTAxLTI1ICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCSogbGFuZy5vcHQgKFdhbGwpOiBSZW1vdmUgUmVqZWN0TmVnYXRpdmUuCgkqIG9wdGlvbnMuYyAoZ2ZjX2hhbmRsZV9vcHRpb24pOiBXYWxsIGNhbiBiZSBkaXNhYmxlZC4KCShzZXRfV2FsbCk6IEFkZCBhIHBhcmFtZXRlciBmb3IgZGlzYWJsaW5nIFdhbGwuCgoyMDA3LTAzLTA1ICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxhbmcub3B0OiBBZGQgLWZtYXgtZXJyb3JzPSBvcHRpb24uCgkqIGdmb3J0cmFuLmggKGdmY19vcHRpb25fdCk6IEFkZCBtYXhfZXJyb3JzIGVsZW1lbnQuCgkqIG9wdGlvbnMuYyAoZ2ZjX2luaXRfb3B0aW9ucyk6IFNldCBtYXhfZXJyb3JzIGRlZmF1bHQgdmFsdWUKCXRvIDI1LgoJKGdmY19oYW5kbGVfb3B0aW9ucyk6IENoZWNrIC1mbWF4X2Vycm9ycyB2YWx1ZSwgYXNzaWduIHRvCglnZmNfb3B0aW9uLm1heF9lcnJvcnMuCgkqIGVycm9yLmMgKGdmY19pbmNyZW1lbnRfZXJyb3JfY291bnQpOiBOZXcgZnVuY3Rpb24sIHdoaWNoCglhbHNvIGNoZWNrcyB3aGV0aGVyIHRoZSBlcnJvciBjb3VudCBleGNlZWRzIG1heF9lcnJvcnMuCgkoZ2ZjX25vdGlmeV9zdGQpOiBVc2UgaXQuCgkoZ2ZjX2Vycm9yKTogVXNlIGl0LgoJKGdmY19lcnJvcl9ub3cpOiBVc2UgaXQuCgkoZ2ZjX2Vycm9yX2NoZWNrKTogVXNlIGl0LgoJKGdmY193YXJuaW5nKTogUmVvcmRlciB0byBtYXRjaCB0cnVuay4KCSogaW52b2tlLnRleGk6IEFkZGVkIGRvY3VtZW50YXRpb24gZm9yIC1mbWF4LWVycm9ycyBvcHRpb24uCgoyMDA3LTAzLTA1ICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNoZWNrLmMgKGdmY19jaGVja19raWxsX3N1Yik6IEFkZCBjaGVja3MgZm9yIG5vbi1zY2FsYXIKCWFyZ3VtZW50cy4KCjIwMDctMDMtMDUgIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbGFuZy5vcHQgKC1mbW9kdWxlLXByaXZhdGUpOiBSZW1vdmUgb3B0aW9uLgoJKiBnZm9ydHJhbi5oIChnZmNfb3B0aW9uX3QpOiBSZW1vdmUgbW9kdWxlX2FjY2Vzc19wcml2YXRlIGZsYWcuCgkqIG9wdGlvbnMuYyAoZ2ZjX2luaXRfb3B0aW9ucyk6IFJlbW92ZSBpbml0aWFsaXphdGlvbiBmb3IgaXQuCgkoZ2ZjX3Byb2Nlc3Nfb3B0aW9uKTogUmVtb3ZlIGhhbmRsaW5nIGZvciAtZm1vZHVsZS1wcml2YXRlLgoJKiBtb2R1bGUuYyAoZ2ZjX2NoZWNrX2FjY2Vzcyk6IEFkZCBjb21tZW50cywgcmVtb3ZlIGNoZWNrIGZvcgoJZ2ZjX29wdGlvbi5mbGFnX21vZHVsZV9hY2Nlc3NfcHJpdmF0ZS4KCjIwMDctMDMtMDUgIFRvYmlhcyBCdXJudXMgIDxidXJudXNAbmV0LWIuZGU+CgoJUFIgZm9ydHJhbi8zMDk2OAoJKiBwcmltYXJ5LmMgKG5leHRfc3RyaW5nX2NoYXIpOiBDb3JyZWN0IHJlYWRpbmcgYSBjaGFyYWN0ZXIKCWFmdGVyIHRoZSBkZWxpbWl0ZXIuCgkobWF0Y2hfc3RyaW5nX2NvbnN0YW50KTogUHJpbnQgd2FybmluZyBtZXNzYWdlIG9ubHkgb25jZS4KCjIwMDctMDMtMDUgIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2ltcGxpZnkuYyAoZ2ZjX3NpbXBsaWZ5X2liY2xyKTogRml4IFBPUyBjb21wYXJpc29uLgoJKGdmY19zaW1wbGlmeV9pYnNldCk6IFNhbWUuCgoyMDA3LTAzLTA0ICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNoZWNrLmMgKHNhbWVfdHlwZV9jaGVjayk6IFR5cG8gZml4IGluIGNvbW1lbnQuCgoyMDA3LTAzLTAxICBUb2JpYXMgU2NobHVldGVyICA8dG9iaUBnY2MuZ251Lm9yZz4KCglCYWNrcG9ydCBmcm9tIHRydW5rCglQUiBmb3J0cmFuLzI5NDQxCgkqIGludHJpbnNpYy5jIChnZmNfaW50cmluc2ljX2Z1bmNfaW50ZXJmYWNlKTogQWx3YXlzIGNoZWNrIGlmCglpbnRyaW5zaWMgaXMgYWxsb3dlZCBpbiBpbml0aWFsaXphdGlvbiBleHByZXNzaW9uLgoKMjAwNy0wMy0wMSAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglCYWNrcG9ydCBmcm9tIHRydW5rCglQUiBmb3J0cmFuLzMwNjYwCgkqIHJlc29sdmUuYyAocHVyZV9mdW5jdGlvbiwgcmVzb2x2ZV9mdW5jdGlvbik6IEluaXRpYWxpemUgbmFtZSB0bwoJbnVsbCB0byBjbGVhciB1cCBidWlsZCB3YXJuaW5ncy4KCShoYXNfZGVmYXVsdF9pbml0aWFsaXplcik6IE5ldyBmdW5jdGlvbi4KCShyZXNvbHZlX2ZsX3ZhcmlhYmxlKTogQ2FsbCBoYXNfZGVmYXVsdF9pbml0aWFsaXplciB0byBkZXRlcm1pbmUgaWYKCXRoZSBkZXJpdmVkIHR5cGUgaGFzIGEgZGVmYXVsdCBpbml0aWFsaXplciB0byBpdHMgdWx0aW1hdGUKCWNvbXBvbmVudHMuCgoyMDA3LTAyLTI4ICBUaG9tYXMgS29lbmlnICA8VGhvbWFzLktvZW5pZ0BvbmxpbmUuZGU+CgoJQmFja3BvcnQgZnJvbSB0cnVuawoJUFIgZm9ydHJhbi8zMDg2OQoJUFIgbGliZm9ydHJhbi8zMDUzMwoJUFIgbGliZm9ydHJhbi8zMDc2NQoJKiBtYXRjaC5jKGdmY19tYXRjaF9pdGVyYXRvcik6ICBSZW1vdmUgY29uZmxpY3QgYmV0d2VlbgoJbG9vcCB2YXJpYWJsZSBhbmQgcG9pbnRlci4KCSogZm9ydHJhbi9pcmVzb2x2ZS5jKGdmY19yZXNvbHZlX21heGxvYyk6ICBSZW1vdmUgY29lcmNpb24gb2YKCWFyZ3VtZW50IHRvIGRlZmF1bHQgaW50ZWdlci4KCShnZmNfcmVzb2x2ZV9taW5sb2MpOiAgTGlrZXdpc2UuCgoyMDA3LTAyLTI2ICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdmb3J0cmFuLnRleGk6IFN0YW5kYXJkaXplIHRpdGxlIHBhZ2UsIHJlbW92ZSB2ZXJzaW9uIG51bWJlcgoJZnJvbSBjb3B5cmlnaHQgcGFnZS4KCjIwMDctMDItMjQgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoJICAgIFBhdWwgVGhvbWFzIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzMwNDAwCgkqIG1hdGNoLmMgKG1hdGNoX2ZvcmFsbF9pdGVyYXRvcik6IFVzZSBnZmNfbWF0Y2hfZXhwciBpbnN0ZWFkCglvZiBnZmNfbWF0Y2hfdmFyaWFibGUgdG8gbWF0Y2ggdGhlIGl0ZXJhdG9yIHZhcmlhYmxlLiAgUmV0dXJuCglNQVRDSF9OTyBpZiBub3QgYSB2YXJpYWJsZS4gIFJlbW92ZSB0aGUgcmVzZXQgb2YgdGhlIHN5bWJvbCdzCglmbGF2b3IgaW4gY2xlYW51cC4KCjIwMDctMDItMjMgIEplcnJ5IERlTGlzbGUgIDxqdmRlbGlzbGVAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8zMDY4MQoJKiBvcHRpb25zLmMgKHNldF9kZWZhdWx0X3N0ZF9mbGFncyk6IE5ldyBmdW5jdGlvbiB0byBjb25zb2xpZGF0ZQoJc2V0dGluZyB0aGUgZmxhZ3MuIFJlbGF4IHdhcm5pbmcgbGV2ZWwgZm9yIG9ic29sZXNjZW50LgoJKGdmY19pbml0X29wdGlvbnMpOiBVc2UgbmV3IGZ1bmN0aW9uLgoJKGdmY19oYW5kbGVfb3B0aW9uKTogVXNlIG5ldyBmdW5jdGlvbi4KCSogbWF0Y2guYyAobWF0Y2hfYXJpdGhtZXRpY19pZik6IENoYW5nZSB0byBvYnNvbGVzY2VudCBmcm9tIGRlbGV0ZWQuCgkoZ2ZjX21hdGNoX2lmKTogU2FtZS4KCjIwMDctMDItMjMgIFRvYmlhcyBCdXJudXMgIDxidXJudXNAbmV0LWIuZGU+CgoJUFIgZm9ydHJhbi8zMDc5MwoJKiB0cmFucy1kZWNsLmMgKGdmY19nZW5lcmF0ZV9mdW5jdGlvbl9jb2RlKTogRG8gbm90IGluaXRpYWxpemUKCSAgcG9pbnRlcnMgdG8gZGVyaXZlZCBjb21wb25lbnRzLgoKMjAwNy0wMi0yMiAgQnJvb2tzIE1vc2VzICA8YnJvb2tzLm1vc2VzQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnZm9ydHJhbi50ZXhpIChPbGQtc3R5bGUga2luZCBzcGVjaWZpY2F0aW9ucyk6IERvY3VtZW50CglzcGVjaWFsIGhhbmRsaW5nIG9mIG9sZC1zdHlsZSBraW5kIHNwZWNpZmllcnMgZm9yIENPTVBMRVguCgkqIGRlY2wuYyAoZ2ZjX21hdGNoX29sZF9raW5kX3NwZWMpOiBEb2N1bWVudGVkIGtpbmQvYnl0ZXNpemUKCWFzc3VtcHRpb25zIGluIGNvbW1lbnQuCgoyMDA3LTAyLTIxICBCZXJuaGFyZCBGaXNjaGVyICA8YWxkb3RAZ2NjLmdudS5vcmc+CgoJKiBwYXJzZS5jIChuZXh0X2ZyZWUpOiBHb29ibGUgc3BhY2VzIGFmdGVyIE9wZW5NUCBzZW50aW5lbC4KCjIwMDctMDItMTggIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGZvcnRyYW4vMzAyMzUKCSogaW50ZXJmYWNlLmMgKGNvbXBhcmVfYWN0dWFsX2Zvcm1hbCk6IGNoZWNrIGZvcgoJYWx0ZXJuYXRlIHJldHVybnMgd2hlbiBpdGVyYXRpbmcgb3ZlciBub24tcHJlc2VudAoJYXJndW1lbnRzLgoKMjAwNy0wMi0xNyAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzMwNTU0CgkqIG1vZHVsZS5jIChmaW5kX3N5bXRyZWVfZm9yX3N5bWJvbCk6IE5ldyBmdW5jdGlvbiB0byByZXR1cm4KCWEgc3ltdHJlZSB0aGF0IGlzIG5vdCBhICJ1bmlxdWUgc3ltdHJlZSIgZ2l2ZW4gYSBzeW1ib2wuCgkocmVhZF9tb2R1bGUpOiBEbyBub3QgYXV0b21hdGljYWxseSBzZXQgcG9pbnRlcl9pbmZvIHRvCglyZWZlcmVuY2VkLCBpZiB0aGUgc3ltYm9sIGhhcyBhIG5hbWVzcGFjZSwgYmVjYXVzZSB0aGlzCglpbmhpYml0cyB0aGUgZ2VuZXJhdGlvbiBvZiBhIHVuaXF1ZSBzeW10cmVlLiAgUmVjeWNsZSB0aGUKCXN5bXRyZWUgaWYgcG9zc2libGUgYnkgY2FsbGluZyBmaW5kX3N5bXRyZWVfZm9yX3N5bWJvbC4gSWYgYQoJc3ltYm9sIGlzIGV4Y2x1ZGVkIGJ5IGFuIE9OTFkgY2xhdXNlLCBjaGVjayB0byBzZWUgaWYgdGhlcmUgaXMKCWEgc3ltdHJlZSBhbHJlYWR5IGxvYWRlZC4gSWYgc28sIGF0dGFjaCB0aGUgc3ltdHJlZSB0byB0aGUKCXBvaW50ZXJfaW5mby4KCglQUiBmb3J0cmFuLzMwMzE5CgkqIGRlY2wuYyAoYWRkX2luaXRfZXhwcl90b19zeW0pOiBNYWtlIG5ldyBjaGFybGVuIGZvciBhbiBhcnJheQoJY29uc3RydWN0b3IgaW5pdGlhbGl6ZXIuCgoyMDA3LTAyLTE2ICBKZXJyeSBEZUxpc2xlICA8anZkZWxpc2xlQGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMzA3NzkKCSogc2Nhbm5lci5jIChnZmNfbmV4dF9jaGFyX2xpdGVyYWwpOiBBZGQgY2hlY2sgZm9yIGVuZCBvZiBmaWxlIGFmdGVyCgljYWxsIHRvIGFkdmFuY2VfbGluZS4KCjIwMDctMDItMTYgIFRvYmlhcyBCdXJudXMgIDxidXJudXNAbmV0LWIuZGU+CgoJUFIgZm9ydHJhbi8zMDUxMgoJKiB0cmFucy1pbnRyaW5zaWMuYyAoZ2ZjX2NvbnZfaW50cmluc2ljX21pbm1heGxvYywKCSAgZ2ZjX2NvbnZfaW50cmluc2ljX21pbm1heHZhbCk6IFVzZSBIVUdFLTEgZm9yIG1vc3QgbmVnYXRpdmUgaW50ZWdlci4KCjIwMDctMDItMTYgIEZyYW5jb2lzLVhhdmllciBDb3VkZXJ0ICA8Y291ZGVydEBjbGlwcGVyLmVucy5mcj4KCglQUiBmb3J0cmFuLzMwNzIwCgkqIHRyYW5zLWFycmF5LmMgKGdmY190cmFuc19jcmVhdGVfdGVtcF9hcnJheSk6IFJlbW92ZSB1c2Ugb2YgdGhlCglmdW5jdGlvbiBhcmd1bWVudC4gQWx3YXlzIGdlbmVyYXRlIGNvZGUgZm9yIG5lZ2F0aXZlIGV4dGVudC4KCVNpbXBsaWZ5IHNhaWQgY29kZS4KCSogdHJhbnMtYXJyYXkuaCAoZ2ZjX3RyYW5zX2NyZWF0ZV90ZW1wX2FycmF5KTogQ2hhbmdlIHByb3RvdHlwZS4KCSogdHJhbnMtZXhwci5jIChnZmNfY29udl9mdW5jdGlvbl9jYWxsKTogUmVtb3ZlIHVzZSBvZiBsYXN0IGFyZ3VtZW50CglvZiBnZmNfdHJhbnNfY3JlYXRlX3RlbXBfYXJyYXkuCgkqIHRyYW5zLWludHJpbnNpYy5jIChnZmNfY29udl9pbnRyaW5zaWNfYXJyYXlfdHJhbnNmZXIpOiBMaWtld2lzZS4KCSogdHJhbnMtc3RtdC5jIChnZmNfY29udl9lbGVtZW50YWxfZGVwZW5kZW5jaWVzKTogTGlrZXdpc2UuCgoyMDA3LTAyLTE2ICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJUFIgZm9ydHJhbi8zMDYxMQoJKiB0cmFucy1pbnRyaW5zaWMuYyAoZ2ZjX2NvbnZfaW50cmluc2ljX3JlcGVhdCk6IEV2YWx1YXRlCglhcmd1bWVudHMgb25seSBvbmNlLiBHZW5lcmF0ZSBjaGVjayB0aGF0IE5DT1BJRVMgYXJndW1lbnQgaXMgbm90CgluZWdhdGl2ZS4KCjIwMDctMDItMTYgIFRob21hcyBLb2VuaWcgIDxUaG9tYXMuS29lbmlnQG9ubGluZS5kZT4KCglQUiBsaWJmb3J0cmFuLzMwMzg5CgkqIGdmb3J0cmFuLmg6ICBSZW1vdmUgZ2ZjX3NpbXBsaWZ5X2luaXRfMS4KCSogYXJpdGguaDogIFJlbW92ZSB0aGlyZCBhcmd1bWVudCBmcm9tIGdmY19jb21wYXJlX3N0cmluZy4KCSogYXJpdGguYyhnZmNfY29tcGFyZV9leHByZXNzaW9uKTogIFJlbW92ZSB0aGlyZCBhcmd1bWVudAoJZnJvbSBjYWxsIHRvIGdmY19jb21wYXJlX3N0cmluZy4KCShnZmNfY29tcGFyZV9zdHJpbmcpOiAgUmVtb3ZlIHRoaXJkIGFyZ3VtZW50IHhjb2xsX3RhYmxlLgoJUmVtb3ZlIHVzZSBvZiB4Y29sbF90YWJsZS4KCSogbWlzYy5jKGdmY19pbml0XzEpOiAgUmVtb3ZlIGNhbGwgdG8gZ2ZjX3NpbXBsaWZ5X2luaXRfMS4KCSogc2ltcGxpZnkuYyhhc2NpaV90YWJsZSk6ICBSZW1vdmUuCgkoeGFzY2lpX3RhYmxlKTogTGlrZXdpc2UuCgkoZ2ZjX3NpbXBsaWZ5X2FjaGFyKTogIElDRSBpZiBleHRyYWN0X2ludCBmYWlscy4gIFJlbW92ZSB1c2Ugb2YKCWFzY2lpX3RhYmxlLiAgV2FybiBpZiAtV3N1cnByaXNpbmcgYW5kIHZhbHVlIDwgMCBvciA+IDEyNy4KCShnZmNfc2ltcGxpZnlfY2hhcik6ICBJQ0UgaWYgZXh0cmFjdF9pbnQgZmFpbHMuIEVycm9yIGlmCgl2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUuCgkoZ2ZjX3NpbXBsaWZ5X2lhY2hhcik6ICBSZW1vdmUgdXNlIG9mIHhhc2NpaV90YWJsZS4KCUNoYXIgdmFsdWVzIG91dHNpZGUgb2YgMC4uMjU1IGFyZSBhbiBJQ0UuCgkoZ2ZjX3NpbXBsaWZ5X2xnZSk6ICBSZW1vdmUgdXNlIG9mIHhhc2NpaV90YWJsZS4KCShnZmNfc2ltcGxpZnlfbGd0KTogIExpa2V3aXNlLgoJKGdmY19zaW1wbGlmeV9sbGUpOiAgTGlrZXdpc2UuCgkoZ2ZjX3NpbXBsaWZ5X2xsdCk6ICBMaWtld2lzZS4KCShpbnZlcnRfdGFibGUpOiAgUmVtb3ZlLgoJKGdmY19zaW1wbGlmeV9pbml0XzEpOiAgUmVtb3ZlLgoKMjAwNy0wMi0xNiAgQnJvb2tzIE1vc2VzICA8YnJvb2tzLm1vc2VzQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgMzAzODEKCVBSIDMwNDIwCgkqIHNpbXBsaWZ5LmMgKGNvbnZlcnRfbXB6X3RvX3Vuc2lnbmVkKTogTmV3IGZ1bmN0aW9uLgoJKGNvbnZlcnRfbXB6X3RvX3NpZ25lZCk6IE5ldyBmdW5jdGlvbiwgbGFyZ2VseSBiYXNlZCBvbgoJdHdvc19jb21wbGVtZW50KCkuCgkodHdvc19jb21wbGVtZW50KTogUmVtb3ZlZC4KCShnZmNfc2ltcGxpZnlfaWJjbHIpOiBBZGQgY29udmVyc2lvbnMgdG8gYW5kIGZyb20gYW4KCXVuc2lnbmVkIHJlcHJlc2VudGF0aW9uIGJlZm9yZSBiaXQtdHdpZGRsaW5nLgoJKGdmY19zaW1wbGlmeV9pYnNldCk6IFNhbWUuCgkoZ2ZjX3NpbXBsaWZ5X2lzaGZ0Yyk6IEFkZCBjaGVja3MgZm9yIG92ZXJseSBsYXJnZQoJY29uc3RhbnQgYXJndW1lbnRzLCBvbmx5IGNoZWNrIHRoZSB0aGlyZCBhcmd1bWVudCBpZgoJaXQncyBwcmVzZW50LCBjYXJyeSBvdmVyIGhpZ2ggYml0cyBpbnRvCXRoZSByZXN1bHQgYXMKCWFwcHJvcHJpYXRlLCBhbmQgcGVyZm9ybSB0aGUgZmluYWwgY29udmVyc2lvbiBiYWNrIHRvCglhIHNpZ25lZCByZXByZXNlbnRhdGlvbiB1c2luZyB0aGUgY29ycmVjdCBzaWduIGJpdC4KCShnZmNfc2ltcGxpZnlfbm90KTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBtYXNraW5nLgoKMjAwNy0wMi0xNCAgU3RldmVuIEcuIEthcmdsICA8a2FyZ2xAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8zMDc5OQoJKiBwcmltYXJ5LmMgKG1hdGNoX2xvZ2ljYWxfY29uc3RhbnQpOiBSZXR1cm4gTUFUQ0hfRVJST1Igb24gaW52YWxpZAoJa2luZC4KCjIwMDctMDItMTIgIERhbmllbCBGcmFua2UgIDxmcmFua2UuZGFuaWVsQGdtYWlsLmNvbT4KCglCYWNrcG9ydCBmcm9tIHRydW5rOgoJMjAwNy0wMi0xMSAgRGFuaWVsIEZyYW5rZSAgPGZyYW5rZS5kYW5pZWxAZ21haWwuY29tPgoJKiBpbnRyaW5zaWMudGV4aSAoSE9TVE5NKTogRml4IHR5cG9ncmFwaGljYWwgZXJyb3IgaW4gc3ludGF4LgoJKFNMRUVQKTogQWRkZWQgc2VjdGlvbiBhbmQgZG9jdW1lbnRhdGlvbi4KCjIwMDctMDItMTIgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CglQUiBmb3J0cmFuLzMwMjg0CglQUiBmb3J0cmFuLzMwNjI2CgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2NvbnZfYWxpYXNlZF9hcmcpOiBSZW1vdmUgc3RhdGljIGF0dHJpYnV0ZQoJZnJvbSBmdW5jdGlvbiBhbmQgbWFrZSBzdXJlIHRoYXQgc3Vic3RyaW5nIGxlbmd0aHMgYXJlCgl0cmFuc2xhdGVkLgoJKGlzX2FsaWFzZWRfYXJyYXkpOiBSZW1vdmUgc3RhdGljIGF0dHJpYnV0ZS4KCSogdHJhbnMuYyA6IEFkZCBwcm90b3R5cGVzIGZvciBnZmNfY29udl9hbGlhc2VkX2FyZyBhbmQKCWlzX2FsaWFzZWRfYXJyYXkuCgkqIHRyYW5zLWlvLmMgKHNldF9pbnRlcm5hbF91bml0KTogQWRkIHRoZSBwb3N0IGJsb2NrIHRvIHRoZQoJYXJndW1lbnRzIG9mIHRoZSBmdW5jdGlvbi4gIFVzZSBpc19hbGlhc2VkX2FycmF5IHRvIGNoZWNrIGlmCgl0ZW1wb3JhcnkgaXMgbmVlZGVkOyBpZiBzbyBjYWxsIGdmY19jb252X2FsaWFzZWRfYXJnLgoJKGJ1aWxkX2R0KTogUGFzcyB0aGUgcG9zdCBibG9jayB0byBzZXRfaW50ZXJuYWxfdW5pdCBhbmQKCWFkZCB0byB0aGUgYmxvY2sgYWZ0ZXIgYWxsIGlvIGFjdGl2aXkgaXMgZG9uZS4KCglQUiBmb3J0cmFuLzMwNDA3CgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2NvbnZfb3BlcmF0b3JfYXNzaWduKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmFucy5oIDogQWRkIHByb3RvdHlwZSBmb3IgZ2ZjX2NvbnZfb3BlcmF0b3JfYXNzaWduLgoJKiB0cmFucy1zdG10LmMgKGdmY190cmFuc193aGVyZV9hc3NpZ24pOiBBZGQgYSBnZmNfc3ltYm9sIGZvcgoJYSBwb3RlbnRpYWwgb3BlcmF0b3IgYXNzaWdubWVudCBzdWJyb3V0aW5lLiAgSWYgaXQgaXMgbm9uLU5VTEwKCWNhbGwgZ2ZjX2NvbnZfb3BlcmF0b3JfYXNzaWduIGluc3RlYWQgb2YgdGhlIGZpcnN0IGFzc2lnbm1lbnQuCgkoIGdmY190cmFuc193aGVyZV8yKTogSW4gdGhlIGNhc2Ugb2YgYW4gb3BlcmF0b3IgYXNzaWdubWVudCwKCWV4dHJhY3QgdGhlIGFyZ3VtZW50IGV4cHJlc3Npb25zIGZyb20gdGhlIGNvZGUgZm9yIHRoZQoJc3Vicm91dGluZSBjYWxsIGFuZCBwYXNzIHRoZSBzeW1ib2wgdG8gZ2ZjX3RyYW5zX3doZXJlX2Fzc2lnbi4KCXJlc29sdmUuYyAocmVzb2x2ZV93aGVyZSwgZ2ZjX3Jlc29sdmVfd2hlcmVfY29kZV9pbl9mb3JhbGwsCglnZmNfcmVzb2x2ZV9mb3JhbGxfYm9keSk6IFJlc29sdmUgdGhlIHN1YnJvdXRpbmUgY2FsbCBmb3IKCW9wZXJhdG9yIGFzc2lnbm1lbnRzLgoKCVBSIGZvcnRyYW4vMzA1MTQKCSogYXJyYXkuYyAobWF0Y2hfYXJyYXlfZWxlbWVudF9zcGVjKTogSWYgdGhlIGxlbmd0aCBvZiBhbiBhcnJheSBpcwoJbmVnYXRpdmUsIGFkanVzdCB0aGUgdXBwZXIgbGltaXQgdG8gbWFrZSBpdCB6ZXJvIGxlbmd0aC4KCjIwMDctMDItMTIgIFRvYmlhcyBTY2hsw7x0ZXIgIDx0b2JpQGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMzA0NzgKCSogZGVjbC5jOiBVcGRhdGUgY29weXJpZ2h0IHllYXJzLgoJKGNyZWF0ZV9lbnVtX2hpc3RvcnksIGdmY19mcmVlX2VudW1faGlzdG9yeSk6IEZvcm1hdHRpbmcKCWZpeGVzLgoJKGFkZF9pbml0X2V4cHJfdG9fc3ltKTogUmVtb3ZlIEVOVU0tc3BlY2lmaWMgY29kZS1wYXRoLgoJKHZhcmlhYmxlX2RlY2wpOiBMaWtld2lzZS4gIEZvcm1hdHRpbmcgZml4LgoJKG1hdGNoX2F0dHJfc3BlYyk6IFJlbW92ZSBFTlVNLXNwZWNpZmljIGNvZGVwYXRoLgoJKGdmY19tYXRjaF9lbnVtKTogRml4IHR5cG8gaW4gZXJyb3IgbWVzc2FnZS4KCShlbnVtZXJhdG9yX2RlY2wpOiBOZXcuCgkoZ2ZjX21hdGNoX2VudW1lcmF0b3JfZGVmKTogU3RyaXAgZG93biB0byBjb2RlIG5lY2Vzc2FyeSBmb3IKCUVOVU1zLCB1c2UgZW51bWVyYXRvcl9kZWNsLgoKMjAwNy0wMi0xMCAgQmVybmhhcmQgRmlzY2hlciAgPGFsZG90QGdjYy5nbnUub3JnPgoKCUJhY2twb3J0IGZyb20gdHJ1bmsKCVBSIGZvcnRyYW4vMjQ3ODMKCSogcmVzb2x2ZS5jIChyZXNvbHZlX3ZhcmlhYmxlKTogR2V0IHRoZSBpbXBsaWNpdCB0eXBlIGZyb20gdGhlCglzeW1ib2xzIG5hbWVzcGFjZSByYXRoZXIgdGhhbiB0aGUgZGVmYXVsdCBuYW1lc3BhY2UuIEZpeCB3aGl0ZXNwYWNlLgoJKHJlc29sdmVfZm9ybWFsX2FyZ2xpc3QsIHJlc29sdmVfZXF1aXZhbGVuY2UpOiBGaXggdHlwby4KCjIwMDctMDItMDUgIFN0ZXZlbiBHLiBLYXJnbCA8a2FyZ2xAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8zMDYwNQoJKiBmb3J0cmFuL2ludm9rZS50ZXhpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCSogZm9ydHJhbi9vcHRpb25zLmMgKGdmY19wb3N0X29wdGlvbnMpOiBEZWFsIHdpdGggdGFicyB3aXRoIC1zdGQ9ZjIwMDMKCWFuZCAtcGVkYW50aWMuCgoyMDA3LTAyLTA1ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCglCYWNrcG9ydCBmcm9tIHRydW5rCglQUiBmb3J0cmFuLzMwNDMyCgkqIHRyYW5zLXR5cGVzLmMgKGdmY19nZXRfZnVuY3Rpb25fdHlwZSk6ICBEbyBub3QgYWRkIHZvaWRfdHlwZV9ub2RlCgl0byBlbXB0eSBhcmcgbGlzdC4KCSogdHJhbnMtZGVjbC5jIChjcmVhdGVfZnVuY3Rpb25fYXJnbGlzdCk6IENoYW5nZSBhc3NlcnQuCgoyMDA3LTAyLTAyICBTdGV2ZW4gRy4gS2FyZ2wgPGthcmdsQGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMzA2ODMKCSogcmVzb2x2ZS5jIChyZXNvbHZlX2dlbmVyaWNfZik6IENoZWNrIGZvciBub24tTlVMTCBzeW0uCgoyMDA3LTAxLTMxICBUaG9tYXMgS29lbmlnICA8VGhvbWFzLktvZW5pZ0BvbmxpbmUuZGU+CgoJQmFja3BvcnQgZnJvbSB0cnVuawoJUFIgZm9ydHJhbi8zMDQ1MgoJKiBzY2FubmVyLmMobmV4dF9jaGFyKTogIENhc3QgbmV4dCBjaGFyYWN0ZXIgdG8gdW5zaWduZWQKCXRvIGF2b2lkIGNvbmZ1c2lvbiB3aXRoIGVycm9yIHJldHVybiBjb2Rlcy4KCjIwMDctMDEtMzAgIFRvYmlhcyBCdXJudXMgIDxidXJudXNAbmV0LWIuZGU+CgkgICAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgZm9ydHJhbi8zMDI3NgoJKiBzY2FubmVyLmMgKGdmY19vcGVuX2luY2x1ZGVkX2ZpbGUpOiBTdXBwb3J0IGFic29sdXRlIHBhdGhuYW1lcy4KCjIwMDctMDEtMzAgIFRvYmlhcyBCdXJudXMgIDxidXJudXNAbmV0LWIuZGU+CgoJQmFja3BvcnQgZnJvbSBtYWlubGluZS4KCSogbGFuZy1zcGVjcy5oOiBBZGQgc3VwcG9ydCBmb3IgLmYwMyBhbmQgLkYwMyBleHRlbnNpb25zLgoJKiBnZm9ydHJhbi50ZXhpOiBEb2N1bWVudCAuZjAzIGV4dGVuc2lvbi4KCSogb3B0aW9ucy5jIChmb3JtX2Zyb21fZmlsZW5hbWUpOiBSZWNvZ25pemUgLmYwMy4KCjIwMDctMDEtMjkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCUJhY2twb3J0IGZyb20gbWFpbmxpbmUuCgkqIHRyYW5zLXN0bXQuYyAoZm9yYWxsX2luZm8pOiBSZXBsYWNlIHRoZSBuZXh0X25lc3QgYW5kIG91dGVyCglmaWVsZHMgdGhhdCBwcmV2aW91c2x5IGltcGxlbWVudGVkIGEgZG91Ymx5LWxpbmtlZCBsaXN0IHdpdGggYQoJc2luZ2xlIHByZXZfbmVzdCBmaWVsZCAoc2luZ2x5LWxpbmtlZCBsaXN0KS4KCShnZmNfdHJhbnNfbmVzdGVkX2ZvcmFsbF9sb29wKTogVGhlIG5lc3RlZF9mb3JhbGxfaW5mbyBhcmd1bWVudAoJbm93IGRlbm90ZXMgdGhlIGlubmVybW9zdCBGT1JBTEwgaW4gdGhlIGxvb3AgbmVzdC4KCShnZmNfdHJhbnNfZm9yYWxsXzEpOiBMaW5rL2NvbnMgdGhlIG5ldyAiaW5mbyIgdG8gdGhlIGhlYWQgb2YgdGhlCgluZXN0ZWRfZm9yYWxsX2luZm8gbGlua2VkIGxpc3QuICBGcmVlIHRoZSBjdXJyZW50ICJpbmZvIiB3aGVuIGRvbmUuCgoJKiBkZXBlbmRlbmN5LmMgKGdmY19mdWxsX2FycmF5X3JlZl9wKTogQ2hlY2sgdGhhdCByZWYtPm5leHQgaXMgTlVMTCwKCWkuZS4gdGhhdCB0aGUgQVJSQVlfUkVGIGRvZXNuJ3QgbWVudGlvbiBjb21wb25lbnRzLgoKMjAwNy0wMS0yOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgZm9ydHJhbi8zMDQwNAoJKiB0cmFucy1zdG10LmMgKGZvcmFsbF9pbmZvKTogUmVtb3ZlIHBtYXNrIGZpZWxkLgoJKGdmY190cmFuc19mb3JhbGxfbG9vcCk6IFJlbW92ZSBOVkFSIGFyZ3VtZW50LCBpbnN0ZWFkIGFzc3VtZSB0aGF0CglOVkFSIGNvdmVycyBhbGwgdGhlIGludGVyYXRpb24gdmFyaWFibGVzIGluIHRoZSBjdXJyZW50IGZvcmFsbF9pbmZvLgoJQWRkIGFuIGV4dHJhIE9VVEVSIHBhcmFtZXRlciwgd2hpY2ggc3BlY2lmaWVkIHRoZSBsb29wIGhlYWRlciBpbgoJd2hpY2ggdG8gcGxhY2UgbWFzayBpbmRleCBpbml0aWFsaXphdGlvbnMuCgkoZ2ZjX3RyYW5zX25lc3RlZF9mb3JhbGxfbG9vcCk6IFJlbW92ZSBORVNUX0ZMQUcgYXJndW1lbnQuCglDaGFuZ2UgdGhlIHNlbWFudGljcyBvZiBNQVNLX0ZMQUcgdG8gb25seSBjb250cm9sIHRoZSBtYXNrIGluIHRoZQoJaW5uZXJtb3N0IGxvb3AuCgkoY29tcHV0ZV9vdmVyYWxsX2l0ZXJfbnVtYmVyKTogT3B0aW1pemUgdGhlIHRyaXZpYWwgY2FzZSBvZiBhCgl0b3AtbGV2ZWwgbG9vcCBoYXZpbmcgYSBjb25zdGFudCBudW1iZXIgb2YgaXRlcmF0aW9ucy4gIFVwZGF0ZQoJY2FsbCB0byBnZmNfdHJhbnNfbmVzdGVkX2ZvcmFsbF9sb29wLiAgQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YKCXRpbWVzIHRoZSBpbm5lciBsb29wIHdpbGwgYmUgZXhlY3V0ZWQsIG5vdCB0byBzaXplIG9mIHRoZSAKCWl0ZXJhdGlvbiBzcGFjZS4KCShhbGxvY2F0ZV90ZW1wX2Zvcl9mb3JhbGxfbmVzdF8xKTogUmV1c2UgU0laRSBhcyBCWVRFU0laRSB3aGVuCglzaXplb2YodHlwZSkgPT0gMS4gIFRpZHkgdXAuCgkoZ2ZjX3RyYW5zX2Fzc2lnbl9uZWVkX3RlbXApOiBSZW1vdmUgTkVTVF9GTEFHIGFyZ3VtZW50IGZyb20gY2FsbHMKCXRvIGdmY190cmFuc19uZXN0ZWRfZm9yYWxsX2xvb3AuCgkoZ2ZjX3RyYW5zX3BvaW50ZXJfYXNzaWduX25lZWRfdGVtcCk6IExpa2V3aXNlLgoJKGdmY190cmFuc19mb3JhbGxfMSk6IFJlbW92ZSB1bnVzZWQgQllURVNJWkUsIFRNUFZBUiwgU0laRVZBUiBhbmQKCUxFTlZBUiBsb2NhbCB2YXJpYWJsZXMuICBTcGxpdCBtYXNrIGFsbG9jYXRpb24gaW50byBhIHNlcGFyYXRlCglodW5rL3Bhc3MgZnJvbSBtYXNrIHBvcHVsYXRpb24uICBVc2UgYWxsb2NhdGVfdGVtcF9mb3JfZm9yYWxsX25lc3QKCXRvIGFsbG9jYXRlIHRoZSBGT1JBTEwgbWFzayB3aXRoIHRoZSBjb3JyZWN0IHNpemUuICBVcGRhdGUgY2FsbHMKCXRvIGdmY190cmFuc19uZXN0ZWRfZm9yYWxsX2xvb3AuCgkoZ2ZjX2V2YWx1YXRlX3doZXJlX21hc2spOiBVcGRhdGUgY2FsbCB0bwoJZ2ZjX3RyYW5zX25lc3RlZF9mb3JhbGxfbG9vcC4KCShnZmNfdHJhbnNfd2hlcmVfMik6IExpa2V3aXNlLgoKMjAwNy0wMS0yNiAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYi5nY2NAZ21haWwuY29tPgoJICAgIFN0ZXZlbiBHLiBLYXJnbCA8a2FyZ2xAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8zMDI3OAoJKiBmb3J0cmFuL2lvLmMgKG5leHRfY2hhcik6IERlYWwgd2l0aCBiYWNrc2xhc2ggZXNjYXBlZCBjaGFyYWN0ZXJzLgoJSXNzdWUgd2FybmluZ3MgaW4gbm9uIC1zdGQ9Z251IGNhc2VzLgoJKiBmb3J0cmFuL3ByaW1hcnkuYyAobmV4dF9zdHJpbmdfY2hhcik6IElzc3VlIHdhcm5pbmdzIGluIG5vbgoKMjAwNy0wMS0yNiAgSmVycnkgRGVMaXNsZSAgPGp2ZGVsaXNsZUBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzMwNTMyCgkqIHNjYW5uZXIuYyAobG9hZF9saW5lKTogUmVtb3ZlIGNoZWNrIGZvdCBjdHJsLXogYW5kIGRvbid0IGdvYmJsZS4KCQoyMDA3LTAxLTI2ICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMzA0ODEKCSogbWF0Y2guYyAoZ2ZjX21hdGNoX25hbWVsaXN0KTogQWRkIGNoZWNrIGZvciBhc3N1bWVkIHNpemUgY2hhcmFjdGVyCglpbiBuYW1lbGlzdCBhbmQgcHJvdmlkZSBlcnJvciBpZiBmb3VuZC4KCjIwMDctMDEtMjMgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8zMDU0OQoJKiByZXNvbHZlLmMgKHB1cmVfZnVuY3Rpb24pOiBBZGQgcmV0dXJuIG9mIG5hbWUgZm9yIHN0YXRlLQoJbWVudCBmdW5jdGlvbnMuLgoKMjAwNy0wMS0yMyAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI4MTcyCgkqIHRyYW5zLXN0bXQuYyAoZ2ZjX3RyYW5zX2NhbGwpOiBJZiBpdCBkb2VzIG5vdCBoYXZlIG9uZSwgZ2V0CglhIGJhY2tlbmRfZGVjbCBmb3IgYW4gYWx0ZXJuYXRlIHJldHVybi4KCglQUiBmb3J0cmFuLzI5Mzg5CgkqIHJlc29sdmUuYyAocHVyZV9mdW5jdGlvbik6IFN0YXRlbWVudCBmdW5jdGlvbnMgYXJlIHB1cmUuIE5vdGUKCXRoYXQgdGhpcyB3aWxsIGhhdmUgdG8gcmVjdXJzZSB0byBjb21wbHkgZnVsbHkgd2l0aCBGOTUuCgoJUFIgZm9ydHJhbi8yOTcxMgoJKiByZXNvbHZlLmMgKHJlc29sdmVfZnVuY3Rpb24pOiBPbmx5IGEgcmVmZXJlbmNlIHRvIHRoZSBmaW5hbAoJZGltZW5zaW9uIG9mIGFuIGFzc3VtZWQgc2l6ZSBhcnJheSBpcyBhbiBlcnJvciBpbiBhbiBpbnF1aXJ5CglmdW5jdGlvbi4KCglQUiBmb3J0cmFuLzMwMjgzCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9mdW5jdGlvbik6IE1ha2Ugc3VyZSB0aGF0IHRoZSBmdW5jdGlvbgoJZXhwcmVzc2lvbiBoYXMgYSB0eXBlLgoKMjAwNy0wMS0yMiBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnbWFpbC5jb20+CgoJUFIgZm9ydHJhbi8yOTk1MQoJKiB0cmFucy1pbnRyaW5zaWMuYyAoZ2ZjX2NvbnZfaW50cmluc2ljX3RyYW5zZmVyKTogQ2hhbmdlIHRvCgljYWxsIG1lbWNweSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgVklFV19DT05WRVJUX0VYUlAuCgoJUFIgZm9ydHJhbi8yOTQxMAoJKiB0cmFucy1pbnRyaW5zaWMuYyAoZ2ZjX2NvbnZfaW50cmluc2ljX2FycmF5X3RyYW5zZmVyKToKCUNoYW5nZSBvdmVyIHRvIGNyZWF0ZSBWSUVXX0NPTlZFUlRfRVhQUiBpbnN0ZWFkIG9mIHVzaW5nIGFuCglBRERSX0VYUFIsIGEgY2FzdCBhbmQgdGhlbiBhbiBpbmRpcmVjdCByZWZlcmVuY2UuCgoyMDA3LTAxLTIxICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGludHJpbnNpYy50ZXhpIChBQ0hBUik6IEFkZGVkIGNyb3NzLXJlZmVyZW5jZXMuCgkoQ0hBUik6IFB1dCBjcm9zcy1yZWZlcmVuY2VzIGluIGFscGhhYmV0aWNhbCBvcmRlci4KCShJQUNIQVIpOiBBZGRlZCBjcm9zcy1yZWZlcmVuY2VzLgoJKElDSEFSKTogQWRkZWQgY3Jvc3MtcmVmZXJlbmNlcy4KCjIwMDctMDEtMjEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogdHJhbnMtaW50cmluc2ljLmMgKGdmY19jb252X2ludHJpbnNpY19zaWduKTogTmV3IGJyYW5jaGxlc3MKCWltcGxlbWVudGF0aW9uIGZvciB0aGUgU0lHTiBpbnRyaW5zaWMgd2l0aCBpbnRlZ3JhbCBvcGVyYW5kcy4KCShnZmNfY29udl9pbnRyaW5zaWNfbWlubWF4KTogRml4IHdoaXRlc3BhY2UuCgoyMDA3LTAxLTIwICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCglNZXJnZSBkb2N1bWVudGF0aW9uIGZyb20gbWFpbmxpbmU6CiAgICAgICAgCgkqIGdmb3J0cmFuLnRleGk6IFVwZGF0ZSBjb3B5cmlnaHQgdG8gaW5jbHVkZSAyMDA3LCBjaGFuZ2UKCUBjb2RlLXR5cGUgbWFjcm9zIHRvIGFwcHJvcHJpYXRlIHZhcmlhbnRzIChAY29tbWFuZCwgQG9wdGlvbiwKCWV0Yy4pCgkodGl0bGUgcGFnZSk6IFJlbW92ZWQgZXJyb25lb3VzICcqJy4KIAkoSW50cm9kdWN0aW9uKTogTG93ZXIgIlBhcnQgSTogSW50cm9kdWN0aW9uIiB0byBhIGNoYXB0ZXIsCglyZW51bWJlciBQYXJ0cyBJSSBhbmQgSUlJIHRvIFBhcnRzIEkgYW5kIElJLgogCShHTlUgRm9ydHJhbiBhbmQgR0NDKTogUmV3cml0ZQoJKEdGT1JUUkFOX0RFRkFVTFRfUkVDTCk6IEFkZGVkIHVuaXRzIHRvIGRlc2NyaXB0aW9uLgogCShFeHRlbnNpb25zKTogTWlzY2VsbGFuZW91cyBtaW5vciByZXdyaXRpbmcgYW5kIGNvcHllZGl0aW5nLgogCShCT1otbGl0ZXJhbCBjb25zdGFudHMpOiBSZW5hbWVkIGZyb20gSGV4YWRlY2ltYWwgY29uc3RhbnRzLgogCShIb2xsZXJpdGggY29uc3RhbnRzIHN1cHBvcnQpOiBBZGRlZCBleHBsYW5hdGlvbiBhbmQgCiAJc3VnZ2VzdGlvbnMgZm9yIHN0YW5kYXJkLWNvbmZvcm1pbmcgbW9kZXJuIGVxdWl2YWxlbnRzLgoKCSogaW50cmluc2ljLnRleGk6IEdlbmVyYWwgd2hpdGVzcGFjZSBjbGVhbnVwLCBlZGl0ZWQgYWxsCgkiU3ludGF4IiBleGFtcGxlcyB0byBhIGNvbnNpc3RlbnQgZm9ybSwgdXBkYXRlIGNvcHlyaWdodAoJdG8gaW5jbHVkZSAyMDA3LCBjaGFuZ2UgQGZpbmRleCBlbnRyaWVzIHRvIEBjaW5kZXggZW50cmllcy4KCShtZW51KTogQWRkZWQgVElNRTgsIHJlbW92ZWQgVU5NQVNLLgogCShJbnRyb2R1Y3Rpb24pOiBSZW5hbWUgdG8gIkludHJvZHVjdGlvbiB0byBJbnRyaW5zaWNzIiB0bwoJYXZvaWQgY29uZmxpY3Qgd2l0aCB0aGUgbmV3IGNoYXB0ZXIsIHJld3JpdGUgZmlyc3QgcGFyYWdyYXBoLgoJKEFJTlQpOiBDbGFyaWZpZWQgYXJndW1lbnQgcmVxdWlyZW1lbnQuCgkoQU5JTlQpOiBDbGFyaWZpZWQgYXJndW1lbnQgcmVxdWlyZW1lbnQuCgkoQ0VJTElORyk6IENsYXJpZmllZCBhcmd1bWVudCByZXF1aXJlbWVudC4KCShDSEFSKTogQ2xhcmlmaWVkIGFyZ3VtZW50IHJlcXVpcmVtZW50LgoJKENNUExYKTogQ2xhcmlmaWVkIGFyZ3VtZW50IHJlcXVpcmVtZW50LgoJKERDTVBMWCk6IENsYXJpZmllZCBhcmd1bWVudCByZXF1aXJlbWVudC4KCShGR0VUKTogTGluZSByZXdyYXBwaW5nLgoJKEZMT09SKTogQ2xhcmlmaWVkIGFyZ3VtZW50IHJlcXVpcmVtZW50LgoJKEdNVElNRSk6IEFkZGVkIGRvY3VtZW50YXRpb24uCgkoSUFORCk6IEFkZGVkIGNyb3NzLXJlZmVyZW5jZS4KCShJQkNMUik6IEFkZCBkb2N1bWVudGF0aW9uLgoJKElCSVRTKTogQWRkIGRvY3VtZW50YXRpb24uCgkoSUJTRVQpOiBBZGQgZG9jdW1lbnRhdGlvbi4KCShJRU9SKTogQWRkIGRvY3VtZW50YXRpb24uCgkoSUVSUk5PKTogQWRkIGRvY3VtZW50YXRpb24uCgkoSU5ERVgpOiBBZGQgZG9jdW1lbnRhdGlvbi4KCShJTlQpOiBDb2xsYXBzZWQgZXhhbXBsZXMsIGNsYXJpZmllZCBhcmd1bWVudCByZXF1aXJlbWVudC4KCShJT1IpOiBBZGQgZG9jdW1lbnRhdGlvbi4KCShJU0hGVCk6IEFkZCBkb2N1bWVudGF0aW9uLgoJKElTSEZUQyk6IEFkZCBkb2N1bWVudGF0aW9uLgoJKEtJTEwpOiBBZGQgZG9jdW1lbnRhdGlvbi4KCShMRU5fVFJJTSk6IEFkZCBkb2N1bWVudGF0aW9uLgoJKExHRSk6IEFkZCBkb2N1bWVudGF0aW9uLgoJKExHVCk6IEFkZCBkb2N1bWVudGF0aW9uLgoJKExJTkspOiBBZGQgZG9jdW1lbnRhdGlvbi4KCShMTEUpOiBBZGQgZG9jdW1lbnRhdGlvbi4KCShMTFQpOiBBZGQgZG9jdW1lbnRhdGlvbi4KCShMTkJMTkspOiBBZGQgZG9jdW1lbnRhdGlvbi4KCShMT0dJQ0FMKTogQWRkZWQgZG9jdW1lbnRhdGlvbi4KCShMU0hJRlQpOiBBZGRlZCBkb2N1bWVudGF0aW9uLgoJKExUSU1FKTogQWRkZWQgZG9jdW1lbnRhdGlvbi4KCShNQVRNVUwpOiBBZGRlZCBkb2N1bWVudGF0aW9uLgoJKE1BWCk6IEFkZGVkIGRvY3VtZW50YXRpb24uCgkoTUFYTE9DKTogQWRkZWQgZG9jdW1lbnRhdGlvbi4KCShNQVhWQUwpOiBBZGRlZCBkb2N1bWVudGF0aW9uLgoJKE1FUkdFKTogQWRkZWQgZG9jdW1lbnRhdGlvbi4KCShNSU4pOiBBZGRlZCBkb2N1bWVudGF0aW9uLgoJKE1JTkxPQyk6IEFkZGVkIGRvY3VtZW50YXRpb24uCgkoTUlOVkFMKTogQWRkZWQgZG9jdW1lbnRhdGlvbi4KCShNVkJJVFMpOiBNb3ZlZCB0byBjb3JyZWN0IHBsYWNlLCBhZGRlZCBkb2N1bWVudGF0aW9uLgoJKE5PVCk6IEFkZGVkIGRvY3VtZW50YXRpb24uCgkoUEVSUk9SKTogQWRkZWQgZG9jdW1lbnRhdGlvbi4KCShSQU4pOiBNb3ZlZCB0byBjb3JyZWN0IHBsYWNlLCBhZGRlZCBkb2N1bWVudGF0aW9uLgoJKFJFQUwpOiBDbGFyaWZpZWQgYXJndW1lbnQgcmVxdWlyZW1lbnQuCgkoUkVOQU1FKTogQWRkZWQgZG9jdW1lbnRhdGlvbi4KCShSU0hJRlQpOiBDbGFyaWZpZWQgYXJndW1lbnQgcmVxdWlyZW1lbnQuCgkoU0lHTik6IENvcnJlY3RlZCB0YWJsZSBzcGVjaWZpY2F0aW9uLgoJKFNZTUxOSyk6IEFkZGVkIGRvY3VtZW50YXRpb24uCgkoU1lTVEVNKTogQWRkZWQgZG9jdW1lbnRhdGlvbi4KCShUSU1FKTogQWRkZWQgZG9jdW1lbnRhdGlvbi4KCShUSU1FOCk6IEFkZGVkIHNlY3Rpb24gYW5kIGRvY3VtZW50YXRpb24uCgkoVUJPVU5EKTogQWRkIGRvY3VtZW50YXRpb24uCgkoVU1BU0spOiBBZGRlZCBkb2N1bWVudGF0aW9uLgoJKFVOTElOSyk6IEFkZCBkb2N1bWVudGF0aW9uLgoJKFVOTUFTSyk6IFJlbW92ZWQgZXJyb25lb3VzIHNlY3Rpb24uCgoJKiBpbnZva2UudGV4aTogVXBkYXRlIGNvcHlyaWdodHMgdG8gaW5jbHVkZSAyMDA3LCAKIAlzdGFuZGFyZGl6ZSBhbmQgaW1wcm92ZSBpbmRleCBlbnRyaWVzLCBjaGFuZ2UgQGNvZGUtdHlwZQoJbWFjcm9zIHRvIGFwcHJvcHJpYXRlIHZhcmlhbnRzIChAY29tbWFuZCwgQG9wdGlvbiwgZXRjLikuCiAJKE9wZW5NUCk6IEFkZGVkIGluZGV4IGVudHJ5LgoKMjAwNy0wMS0yMCAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCVBSIGZvcnRyYW4vMzA0NDYKCSogb3B0aW9ucy5jIChnZmNfaGFuZGxlX21vZHVsZV9wYXRoX29wdGlvbnMpOiBQYXRoIHVzZWQgaW4gLUoKCW9wdGlvbiBpcyBub3cgYWRkZWQgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aC4KCjIwMDctMDEtMTggIFRob21hcyBLb2VuaWcgIDxUaG9tYXMuS29lbmlnQG9ubGluZS5kZT4KCglCYWNrcG9ydCBmcm9tIHRydW5rCglQUiBsaWJmb3J0cmFuLzMwNDE1CgkqIGlyZXNvbHZlLmMgKGdmY19yZXNvbHZlX21heGxvYyk6ICBJZiB0aGUgcmFuawoJb2YgdGhlIHJldHVybiBhcnJheSBpcyBub256ZXJvIGFuZCB3ZSBwcm9jZXNzIGFuCglpbnRlZ2VyIGFycmF5IHNtYWxsZXIgdGhhbiBkZWZhdWx0IGtpbmQsIGNvZXJjZQoJdGhlIGFycmF5IHRvIGRlZmF1bHQgaW50ZWdlci4KCSogaXJlc29sdmUuYyAoZ2ZjX3Jlc29sdmVfbWlubG9jKTogIExpa2V3aXNlLgoKMjAwNy0wMS0xNyAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzMwNDc2CgkqIG1vZHVsZS5jIChsb2FkX2dlbmVyaWNfaW50ZXJmYWNlcyk6IE1ha2UgdGhlIG1hcmtpbmcgb2YgdGhlCglzeW1ib2wgYXMgYW1iaWd1b3VzIGNvbmRpdGlvbmFsIG9uIHRoZSBtb2R1bGUgbmFtZXMgYmVpbmcKCWRpZmZlcmVudC4KCSh3cml0ZV9nZW5lcmljKTogRW5zdXJlIHRoYXQgdGhlIGdlbmVyaWMgaW50ZXJmYWNlIGhhcyBhCglub24tTlVMTCBtb2R1bGUgZmllbGQuCgoyMDA3LTAxLTE0ICBKZXJyeSBEZUxpc2xlICA8anZkZWxpc2xlQGdjYy5nbnUub3JnPgoJICAgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8zMDQwOAoJKiBsYW5nLm9wdDogQWRkIFdjaGFyYWN0ZXJfdHJ1bmNhdGlvbiBvcHRpb24uCgkqIG9wdGlvbnMuYyAoZ2ZjX2luaXRfb3B0aW9ucyk6IEluaXRpYWxpemUKCWdmY19vcHRpb24ud2Fybl9jaGFyYWN0ZXJfdHJ1bmNhdGlvbiB0byB6ZXJvLgoJKGdmY19oYW5kbGVfb3B0aW9uKTogQWRkIGNhc2UgZm9yIE9QVF9XY2hhcmFjdGVyX3RydW5jYXRpb24uCgoJUFIgZm9ydHJhbi8zMDQwOAoJKiByZXNvbHZlLmMgKHJlc29sdmVfY29kZSk6IFVzZSB0aGUgY29kZS0+ZXhwciBjaGFyYWN0ZXIgbGVuZ3RoCglkaXJlY3RseSB0byBzZXQgbGVuZ3RoIG9mIGxsZW4uCgoyMDA3LTAxLTE0ICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjMyMzIKCSogZGVjbC5jIChnZmNfaW5fbWF0Y2hfZGF0YSwgZ2ZjX3NldF9pbl9tYXRjaF9kYXRhKTogTmV3CglmdW5jdGlvbnMgdG8gc2lnbmFsIHRoYXQgYSBEQVRBIHN0YXRlbWVudCBpcyBiZWluZyBtYXRjaGVkLgoJKGdmY19tYXRjaF9kYXRhKTogQ2FsbCBnZmNfc2V0X2luX21hdGNoX2RhdGEgb24gZW50cnkgYW5kIG9uCglleGl0LgoJKiBnZm9ydHJhbi5oIDogQWRkIHByb3RvdHlwZXMgZm9yIGFib3ZlLgoJKiBleHByLmMgKGNoZWNrX2luaXRfZXhwcik6IEF2b2lkIGNoZWNrIG9uIHBhcmFtZXRlciBvcgoJdmFyaWFibGUgaWYgZ2ZjX2luX21hdGNoX2RhdGEgaXMgdHJ1ZS4KCShnZmNfbWF0Y2hfaW5pdF9leHByKTogRG8gbm90IGNhbGwgZXJyb3Igb24gbm9uLXJlZHVjdGlvbiBvZgoJZXhwcmVzc2lvbiBpZiBnZmNfaW5fbWF0Y2hfZGF0YSBpcyB0cnVlLgoKCVBSIGZvcnRyYW4vMjc5OTYKCVBSIGZvcnRyYW4vMjc5OTgKCSogZGVjbC5jIChnZmNfc2V0X2NvbnN0YW50X2NoYXJhY3Rlcl9sZW4pOiBBZGQgYm9vbGVhbiBhcmcgdG8KCWZsYWcgYXJyYXkgY29uc3RydWN0b3IgcmVzb2x1dGlvbi4gIFdhcm4gaWYgc3RyaW5nIGlzIGJlaW5nCgl0cnVuY2F0ZWQuICBTdGFuZGFyZCBkZXBlbmRlbnQgZXJyb3IgaWYgc3RyaW5nIGlzIHBhZGRlZC4gU2V0CgluZXcgYXJnIHRvIGZhbHNlIGZvciBhbGwgdGhyZWUgY2FsbHMgdG8KCWdmY19zZXRfY29uc3RhbnRfY2hhcmFjdGVyX2xlbi4KCSogbWF0Y2guaCA6IEFkZCBib29sZWFuIGFyZyB0byBwcm90b3R5cGUgZm9yCglnZmNfc2V0X2NvbnN0YW50X2NoYXJhY3Rlcl9sZW4uCgkqIGdmb3J0cmFuLmggOiBBZGQgd2Fybl9jaGFyYWN0ZXJfdHJ1bmNhdGlvbiB0byBnZmNfb3B0aW9ucy4KCSogb3B0aW9ucy5jIChzZXRfV2FsbCk6IFNldCB3YXJuX2NoYXJhY3Rlcl90cnVuY2F0aW9uIGlmIC1XYWxsCglpcyBzZXQuCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9jb2RlKTogV2FybiBpZiByaHMgc3RyaW5nIGluIGNoYXJhY3RlcgoJYXNzaWdubWVudCBoYXMgdG8gYmUgdHJ1bmNhdGVkLgoJKiBhcnJheS5jIChnZmNfcmVzb2x2ZV9jaGFyYWN0ZXJfYXJyYXlfY29uc3RydWN0b3IpOiBTZXQgbmV3Cglhcmd1bWVudCB0byB0cnVlIGZvciBjYWxsIHRvIGdmY19zZXRfY29uc3RhbnRfY2hhcmFjdGVyX2xlbi4KCglQUiBmb3J0cmFuLzMwNDEwCgkqIHRyYW5zLWRlY2wuYyAoZ2ZjX3N5bV9tYW5nbGVkX2Z1bmN0aW9uX2lkKTogTW9kdWxlLCBleHRlcm5hbAoJc3ltYm9scyBtdXN0IG5vdCBoYXZlIHRoZSBtb2R1bGUgbmFtZSBwcmVwZW5kZWQuCgoyMDA3LTAxLTA2ICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMzAwMzQKCSogcmVzb2x2ZS5jIChyZXNvbHZlX2Zvcm1hbF9hcmdsaXN0KTogRXhjbHVkZSB0aGUgdGVzdCBmb3IKCXBvaW50ZXJzIGFuZCBwcm9jZWR1cmVzIGZvciBzdWJyb3V0aW5lIGFyZ3VtZW50cyBhcyB3ZWxsIGFzCglmdW5jdGlvbnMuCgoJUFIgZm9ydHJhbi8zMDIzNwoJKiBpbnRyaW5zaWMuYyAocmVtb3ZlX251bGxhcmdzKTogRG8gbm90IHBhc3MgdXAgYXJndW1lbnRzIHdpdGgKCWEgbGFiZWwuIElmIHRoZSBhY3R1YWwgaGFzIGEgbGFiZWwgYW5kIHRoZSBmb3JtYWwgaGFzIGEgdHlwZQoJdGhlbiBlbWl0IGFuIGVycm9yLgoKCVBSIGZvcnRyYW4vMjUxMzUKCSogbW9kdWxlLmMgKGxvYWRfZ2VuZXJpY19pbnRlcmZhY2VzKTogSWYgdGhlIHN5bWJvbCBpcyBwcmVzZW50CglhbmQgaXMgbm90IGdlbmVyaWMgaXQgaXMgYW1iaWd1b3VzLgoKCVBSIGZvcnRyYW4vMjMwNjAKCSogaW50cmluc2ljLmMgKGNvbXBhcmVfYWN0dWFsX2Zvcm1hbCApOiBEaXN0aW5ndWlzaCBhcmd1bWVudAoJbGlzdCBmdW5jdGlvbnMgZnJvbSBrZXl3b3Jkcy4KCSogaW50cmluc2ljLmMgKHNvcnRfYWN0dWFsKTogSWYgZm9ybWFsIGlzIE5VTEwsIHRoZSBwcmVzZW5jZSBvZgoJYW4gYXJndW1lbnQgbGlzdCBmdW5jdGlvbiBhY3R1YWwgaXMgYW4gZXJyb3IuCgkqIHRyYW5zLWV4cHIuYyAoY29udl9hcmdsaXN0X2Z1bmN0aW9uKSA6IE5ldyBmdW5jdGlvbiB0bwoJaW1wbGVtZW50IGFyZ3VtZW50IGxpc3QgZnVuY3Rpb25zICVWQUwsICVSRUYgYW5kICVMT0MuCgkoZ2ZjX2NvbnZfZnVuY3Rpb25fY2FsbCk6IENhbGwgaXQuCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9hY3R1YWxfYXJnbGlzdCk6IEFkZCBhcmcgcHR5cGUgYW5kIGNoZWNrCglhcmd1bWVudCBsaXN0IGZ1bmN0aW9ucy4KCShyZXNvbHZlX2Z1bmN0aW9uLCByZXNvbHZlX2NhbGwpOiBTZXQgdmFsdWUgb2YgcHR5cGUgYmVmb3JlCgljYWxscyB0byByZXNvbHZlX2FjdHVhbF9hcmdsaXN0LgoJKiBwcmltYXJ5LmMgKG1hdGNoX2FyZ19saXN0X2Z1bmN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGdmY19tYXRjaF9hY3R1YWxfYXJnbGlzdCk6IENhbGwgaXQgYmVmb3JlIHRyeWluZyBmb3IgYQoJa2V5d29yZCBhcmd1bWVudC4KCglQUiBmb3J0cmFuLzI3OTAwCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9hY3R1YWxfYXJnbGlzdCk6IElmIGFsbCBlbHNlIGZhaWxzIGFuZCBhCglwcm9jZWR1cmUgYWN0dWFsIGFyZ3VtZW50IGhhcyBubyB0eXBlLCBzZWUgaWYgYSBzcGVjaWZpYwoJaW50cmluc2ljIG1hdGNoZXMuCgoJUFIgZm9ydHJhbi8yNDMyNQoJKiByZXNvbHZlLmMgKHJlc29sdmVfZnVuY3Rpb24pOiBJZiB0aGUgZnVuY3Rpb24gcmVmZXJlbmNlIGlzCglGTF9WQVJJQUJMRSB0aGlzIGlzIGFuIGVycm9yLgoKMjAwNy0wMS0wMyAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI1ODE4CgkqIHRyYW5zLWFycmF5LmMgKGdmY190cmFuc19nNzdfYXJyYXkpOiBJZiB0aGUgdmFyaWFibGUgaXMKCW9wdGlvbmFsIG9yIG5vdCBhbHdheXMgcHJlc2VudCwgbWFrZSB0aGUgc3RhdGVtZW50IGNvbmRpdGlvbmFsCglvbiBwcmVzZW5jZSBvZiB0aGUgYXJndW1lbnQuCgkqIGdmb3J0cmFuLmggOiBBZGQgc3ltYm9sX2F0dHJpYnV0ZSBub3RfYWx3YXlzX3ByZXNlbnQuCgkqIHJlc29sdmUuYyAoY2hlY2tfYXJndW1lbnRfbGlzdHMpOiBOZXcgZnVuY3Rpb24gdG8gY2hlY2sgaWYKCWFyZ3VtZW50cyBhcmUgbm90IHByZXNlbnQgaW4gYWxsIGVudHJpZXMuCgoJUFIgZm9ydHJhbi8zMDA4NAoJKiBtb2R1bGUuYyAobWlvX2NvbXBvbmVudF9yZWYpOiBNb3ZlIHRyZWF0bWVudCBvZiB1bmlxdWUgbmFtZQoJdmFyaWFibGVzLCBkdXJpbmcgb3V0cHV0LCB0byBmaXhfbWlvX2V4cHIuCgkoZml4X21pb19leHByKTogTmV3IGZ1bmN0aW9uIHRoYXQgZml4ZXMgZGVmZWN0aXZlIGV4cHJlc3Npb25zCgliZWZvcmUgdGhleSBhcmUgd3JpdHRlbiB0byB0aGUgbW9kdWxlIGZpbGUuCgkobWlvX2V4cHIpOiBDYWxsIHRoZSBuZXcgZnVuY3Rpb24uCgkocmVzb2x2ZV9lbnRyaWVzKTogQ2FsbCBjaGVja19hcmd1bWVudF9saXN0cy4KCjIwMDctMDEtMDIgIFN0ZXZlbiBHLiBLYXJnbCAgPGthcmdsc0Bjb21jYXN0Lm5ldD4KCgkqIHRyYW5zLWludHJpbnNpYy5jIChnZmNfY29udl9pbnRyaW5zaWNfaWJpdHMpOiBGaXggY2FsbCB0bwoJYnVpbGRfaW50X2NzdC4KCjIwMDctMDEtMDIgIFRvYmlhcyBCdXJudXMgIDxidXJudXNAbmV0LWIuZGU+CgoJUFIgZm9ydHJhbi8zMDIzOAoJKiB0cmFucy1pbnRyaW5zaWMuYzogQ2hlY2sgZm9yIGFzc29jaWF0ZWQoTlVMTCxOVUxMKS4KCjIwMDYtMTItMzEgIFBhdWwgVGhvbWFzIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzMwMjAyCgkqIHRyYW5zLWFycmF5LmMgKGdmY19jb252X2Z1bmN0aW9uX2NhbGwpOiBVc2UgcGFybXNlLmV4cHIgZm9yCgl0aGUgbnVsbGlmeWluZyBvZiBpbnRlbnQob3V0KSBhcmd1bWVudHMgcmF0aGVyIHRoYW4gdGhlIGJhY2tlbmQKCWRlY2xhcmF0aW9uLgoKCVBSIGZvcnRyYW4vMzAxOTAKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX2NvbnZfYXJyYXlfcmVmKTogUmVtb3ZlIGdmY19ldmFsdWF0ZV9ub3cKCWZyb20gdGhlIC1mYm91bmRzLWNoZWNrIGJyYW5jaC4KCglQUiBmb3J0cmFuLzI5OTkyCgkqIGludGVyZmFjZS5jIChjaGVja19zeW1faW50ZXJmYWNlcyk6IE1vZHVsZSBwcm9jZWR1cmVzIGluIGEKCWdlbmVyaWMgbXVzdCBiZSB1c2UgYXNzb2NpYXRlZCBvciBjb250YWluZWQgaW4gdGhlIG1vZHVsZS4KCSogZGVjbC5jIChnZmNfbWF0Y2hfbW9kcHJvYyk6IFNldCBhdHRyaWJ1dGUgbW9kX3Byb2MuCgkqIGdmb3J0cmFuLmggKHN5bWJvbF9hdHRyaWJ1dGUpOiBBZGQgbW9kX3Byb2MgYXRyaWJ1dGUuCgoJUFIgZm9ydHJhbi8zMDA4MQoJKiByZXNvbHZlLmMgKHJlc29sdmVfZ2VuZXJpY19mLCByZXNvbHZlX2dlbmVyaWNfcyk6IFVzZQoJZ2ZjX2ludHJpbnNpY19uYW1lIHRvIGZpbmQgb3V0IGlmIHRoZSBmdW5jdGlvbiBpcyBpbnRyaW5zaWMKCWJlY2F1c2UgaXQgZG9lcyBub3QgaGF2ZSB0byBiZSBhIGdlbmVyaWMgaW50cmluc2ljIHRvIGJlCglvdmVybG9hZGVkLgoKCVBSIGZvcnRyYW4vMzAyMzYKCSogaW50ZXJmYWNlLmMgKGNvbXBhcmVfaW50ZXJmYWNlcyk6IEhhbmRsZSBOVUxMIHN5bWJvbHMuCgkoY291bnRfdHlwZXNfdGVzdCk6IENvdW50IE5VTEwgc3ltYm9scywgd2hpY2ggY29ycmVzcG9uZCB0bwoJYWx0ZXJuYXRlIHJldHVybnMuCgoJKGNoZWNrX2ludGVyZmFjZTEpOiBDaGFuZ2UgZmluYWwgYXJndW1lbnQgZnJvbSBpbnQgdG8gYm9vbAoJaW4gdGhlIGZ1bmN0aW9uIGFuZCBhbGwgcmVmZXJlbmNlcy4KCjIwMDYtMTItMjkgIFRvYmlhcyBTY2hswoH8dGVyICA8dG9iaWFzLnNjaGx1ZXRlckBwaHlzaWsudW5pLW11ZW5jaGVuLmRlPgoKCVBSIGZvcnRyYW4vMjUzOTIKCSogdHJhbnMtc3RtdC5jIChnZmNfdHJhbnNfcmV0dXJuKTogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCSogdHJhbnMtdHlwZXMuYyAoZ2ZjX3N5bV90eXBlKTogRG9uJ3QgcmV0dXJuIGVhcmx5IGZvciBmdW5jdGlvbnMuCglSZW1vdmUgc3BlY2lhbCBoYW5kbGluZyBmb3IgLWZmMmMuCgkoZ2ZjX2dldF9mdW5jdGlvbl90eXBlKTogQWRkIHNwZWNpYWwgaGFuZGxpbmcgZm9yIC1mZjJjLgoJKiB0cmFucy1kZWNsLmMgKGdmY19jcmVhdGVfZnVuY3Rpb25fZGVjbCk6IEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgkoZ2ZjX2dldF9mYWtlX3Jlc3VsdF9kZWNsKTogTWFrZSBzdXJlIHdlIGdldCB0aGUgcmlnaHQgdHlwZSBmb3IKCWZ1bmN0aW9ucy4KCShnZmNfZ2VuZXJhdGVfZnVuY3Rpb25fY29kZSk6IENvbnZlcnQgdHlwZSBvZiByZXN1bHQgdmFyaWFibGUgdG8KCXR5cGUgb2YgZnVuY3Rpb24uCgoyMDA2LTEyLTIxICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMzAyNzMKCSogZGVwZW5kZW5jeS5jIChnZmNfY2hlY2tfZGVwZW5kZW5jeSk6IFRoZXJlIGlzIG5vIGRlcGVuZGVuY3kKCXdpdGggRVhQUl9OVUxMIHNvIGFsd2F5cyByZXR1cm4gMC4KCjIwMDYtMTItMjEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIGZvcnRyYW4vMzAyMDcKCSogZGVwZW5kZW5jeS5jIChnZmNfZnVsbF9hcnJheV9yZWZfcCk6IE5ldyBmdW5jdGlvbiB0byB0ZXN0IHdoZXRoZXIKCXRoZSBnaXZlbiBhcnJheSByZWYgc3BlY2lmaWVzIHRoZSBlbnRpcmUgYXJyYXkuCgkoZ2ZjX2RlcF9yZXNvbHZlcik6IFVzZSBnZmNfZnVsbF9hcnJheV9yZWZfcCB0byBhbmFseXplIEFSX0ZVTEwKCWFycmF5IHJlZnMgYWdhaW5zdCBBUl9TRUNUSU9OIGFycmF5IHJlZnMsIGFuZCB2aWNlIHZlcnNhLgoJKiBkZXBlbmRlbmN5LmggKGdmY19mdWxsX2FycmF5X3JlZl9wKTogUHJvdG90eXBlIGhlcmUuCgkqIHRyYW5zLWFycmF5LmMgKGdmY19jb252X2V4cHJfZGVzY3JpcHRvcik6IFVzZSBnZmNfZnVsbF9hcnJheV9yZWZfcC4KCjIwMDYtMTItMjEgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yOTk3NQoJUFIgZm9ydHJhbi8zMDA2OAoJUFIgZm9ydHJhbi8zMDA5NgoJKiBpbnRlcmZhY2UuYyAoY29tcGFyZV90eXBlX3JhbmtfaWYpOiBSZWplY3QgaW52YWxpZCBnZW5lcmljCglpbnRlcmZhY2VzLgoJKGNoZWNrX2ludGVyZmFjZTEpOiBHaXZlIGEgd2FybmluZyBmb3Igbm9ucmVmZXJyZWQgdG8gYW1iaWd1b3VzCglpbnRlcmZhY2VzLgoJKGNoZWNrX3N5bV9pbnRlcmZhY2VzKTogQ2hlY2sgd2hldGhlciBhbiBhbWJpZ3VvdXMgaW50ZXJmYWNlIGlzCglyZWZlcnJlZCB0by4gIERvIG5vdCBjaGVjayBob3N0IGFzc29jaWF0ZWQgaW50ZXJmYWNlcyBzaW5jZSB0aGVzZQoJY2Fubm90IGJlIGFtYmlndW91cyB3aXRoIHRoZSBsb2NhbCB2ZXJzaW9ucy4KCShjaGVja191b3BfaW50ZXJmYWNlLCBnZmNfY2hlY2tfaW50ZXJmYWNlcyk6IFVwZGF0ZSBjYWxsIHRvCgljaGVja19pbnRlcmZhY2UxLgoJKiBzeW1ib2wuYyAoZ2ZjX2dldF9zeW1fdHJlZSwgZ2ZjX2dldF9zeW1fdHJlZSk6IEFsbG93IGFkZGluZwoJdW5hbWJpZ3VvdXMgcHJvY2VkdXJlcyB0byBnZW5lcmljIGludGVyZmFjZXMuCgkqIGdmb3J0cmFuLmggKHN5bWJvbF9hdHRyaWJ1dGUpOiBBZGRlZCB1c2Vfb25seSBhbmQKCWFtYmlndW91c19pbnRlcmZhY2VzLgoJKiBtb2R1bGUuYyAobG9hZF9uZWVkKTogU2V0IHRoZSB1c2Vfb25seSBmbGFnLCBpZiBuZWVkZWQuCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9mbF9wcm9jZWR1cmUpOiBXYXJuIGZvciBub25yZWZlcnJlZAoJaW50ZXJmYWNlcy4KCSogZXhwci5jIChmaW5kX2FycmF5X3NlY3Rpb24pOiBGaXggaW5pdGlhbGl6ZXIgYXJyYXkgY29udHJ1Y3Rvci4KCjIwMDYtMTItMjEgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yOTk0MQoJKiByZXNvbHZlLmMgKHJlc29sdmVfZnVuY3Rpb24pOiBBZGQgTEVOIHRvIHRoZSBmdW5jdGlvbnMgbm90CgljaGVja2VkIGZvciBhc3N1bWVkIHNpemUgYWN0dWFsIGFyZ3MuCgoyMDA2LTExLTIxICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjk0NjQKCSogbW9kdWxlLmMgKGxvYWRfZ2VuZXJpY19pbnRlcmZhY2VzKTogQWRkIHN5bWJvbHMgZm9yIGFsbCB0aGUKCWxvY2FsIG5hbWVzIG9mIGFuIGludGVyZmFjZS4gIFNoYXJlIHRoZSBpbnRlcmZhY2UgYW1vbmdzdCB0aGUKCXN5bWJvbHMuCgkqIGdmb3J0cmFuLmggOiBBZGQgZ2VuZXJpY19jb3B5IHRvIHN5bWJvbF9hdHRyaWJ1dGUuCgkqIHN5bWJvbC5jIChmcmVlX3N5bWJvbCk6IE9ubHkgZnJlZSBpbnRlcmZhY2UgaWYgZ2VuZXJpY19jb3B5CglpcyBub3Qgc2V0LgoKMjAwNi0xMi0xOCAgSmVycnkgRGVMaXNsZSAgPGp2ZGVsaXNsZUBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzMwMjAwCgkqIHRyYW5zLWlvLmMgKGJ1aWxkX2R0KTogTW92ZSBwb3N0IGJsb2NrIGZvciBmb3JtYXRfZXhwciB0byBlbmQuCgoyMDA2LTEyLTE2ICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdmb3J0cmFuLnRleGk6IEFkZGVkIFRlWCBzdXBwb3J0IGZvciBkb2N1bWVudCBwYXJ0czsKCXJlYXJyYW5nZWQgZXhpc3RpbmcgdGV4dCBpbnRvICJBYm91dCBHTlUgRm9ydHJhbiIsCgkiSW52b2tpbmcgR05VIEZvcnRyYW4iLCBhbmQgIkxhbmd1YWdlIFJlZmVyZW5jZSIgcGFydHMuCgoyMDA2LTEyLTE1ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJQmFja3BvcnQgZnJvbSBtYWlubGluZToKCTIwMDYtMTItMTMgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBmb3J0cmFuLzMwMTE1CgkqIHRyYW5zLWFycmF5LmMgKGdmY19hcnJheV9hbGxvY2F0ZSk6IEFkanVzdCBmb3IgY2hhbmdlZAoJbGlicmFyeSBpbnRlcmZhY2UuCgkoZ2ZjX2FycmF5X2RlYWxsb2NhdGUpOiBMaWtld2lzZS4KCShnZmNfdHJhbnNfZGVhbGxvY19hbGxvY2F0ZWQpOiBMaWtld2lzZS4KCSogdHJhbnMtc3RtdC5jIChnZmNfdHJhbnNfYWxsb2NhdGUpOiBMaWtld2lzZS4KCShnZmNfdHJhbnNfZGVhbGxvY2F0ZSk6IExpa2V3aXNlLgoJKiB0cmFucy1kZWNsLmMgKGdmY19idWlsZF9idWlsdGluX2Z1bmN0aW9uX2RlY2xzKTogQWRqdXN0CglmdW5jdGlvbiBkZWNsYXJhdGlvbnMgdG8gbWF0Y2ggdGhlIGxpYnJhcnkgY2hhbmdlcy4gIE1hcmsKCWFsbG9jYXRpb24gZnVuY3Rpb25zIHdpdGggREVDTF9JU19NQUxMT0MuCgoyMDA2LTEyLTExICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJUFIgZm9ydHJhbi8yOTg5MgoJKiB0cmFucy1pbnRyaW5zaWMuYyAoZ2ZjX2NvbnZfaW50cmluc2ljX2JvdW5kKTogVXNlIGEgbG9jdXMgaW4KCXRoZSBjYWxsIHRvIGdmY190cmFuc19ydW50aW1lX2NoZWNrLgoJKiB0cmFucy1hcnJheS5jIChnZmNfdHJhbnNfYXJyYXlfYm91bmRfY2hlY2spOiBUcnkgaGFyZGVyIHRvIGZpbmQKCXRoZSB2YXJpYWJsZSBvciBmdW5jdGlvbiBuYW1lIGZvciB0aGUgcnVudGltZSBlcnJvciBtZXNzYWdlLgoJKGdmY190cmFuc19kdW1teV9hcnJheV9iaWFzKTogVXNlIGEgbG9jdXMgaW4gdGhlIGNhbGwgdG8KCWdmY190cmFuc19ydW50aW1lX2NoZWNrCgoyMDA2LTEyLTExICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJUFIgZm9ydHJhbi8yOTk3MwoJKiByZXNvbHZlLmMgKHJlc29sdmVfYWN0dWFsX2FyZ2xpc3QpOiBSZW1vdmUgdGhlIHNwZWNpYWwgY2FzZSBmb3IKCUNIQVIuCgkqIGludHJpbnNpYy5jIChhZGRfZnVuY3Rpb25zKTogUmVtb3ZlIHRoZSBzcGVjaWFsIGNhc2UgZm9yIENIQVIuCgoyMDA2LTEyLTExICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgkgICAgVG9iaWFzIEJ1cm51cyAgPGJ1cm51c0BuZXQtYi5kZT4KCglQUiBmb3J0cmFuLzI5NzExCgkqIGVycm9yLmMgKGVycm9yX3ByaW50KTogSGFuZGxlIHByaW50Zi1zdHlsZSBwb3NpdGlvbiBzcGVjaWZpZXJzLAoJb2YgdGhlIGZvcm0gIiUzJGQiLgoKMjAwNi0xMi0xMCAgVGhvbWFzIEtvZW5pZyAgPFRob21hcy5Lb2VuaWdAb25saW5lLmRlPgoKCVBSIGxpYmZvcnRyYW4vMjk1NjgKCSogb3B0aW9ucy5jOiAgQXBwbHkgdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiB0aGUgcHJldmlvdXMKCXBhdGNoLgoKMjAwNi0xMi0xMCAgVGhvbWFzIEtvZW5pZyAgPFRob21hcy5Lb2VuaWdAb25saW5lLmRlPgoKCVBSIGxpYmZvcnRyYW4vMjk1NjgKCSogZ2ZvcnRyYW4uaCAoZ2ZjX29wdGlvbl90KTogIEFkZCBtYXhfc3VicmVjb3JkX2xlbmd0aC4KCSh0b3AgbGV2ZWwpOiBEZWZpbmUgTUFYX1NVQlJFQ09SRF9MRU5HVEguCgkqIGxhbmcub3B0OiAgQWRkIG9wdGlvbiAtZm1heC1zdWJyZWNvcmQtbGVuZ3RoPS4KCSogdHJhbnMtZGVjbC5jOiAgQWRkIG5ldyBmdW5jdGlvbiBzZXRfbWF4X3N1YnJlY29yZF9sZW5ndGguCgkoZ2ZjX2dlbmVyYXRlX2Z1bmN0aW9uX2NvZGUpOiBJZiB3ZSBhcmUgd2l0aGluIHRoZSBtYWluCglwcm9ncmFtIGFuZCBtYXhfc3VicmVjb3JkX2xlbmd0aCBoYXMgYmVlbiBzZXQsIGNhbGwKCXNldF9tYXhfc3VicmVjb3JkX2xlbmd0aC4KCSogb3B0aW9ucy5jIChnZmNfaW5pdF9vcHRpb25zKTogIEFkZCBkZWZhdWx0cyBmb3IKCW1heF9zdWJyZWNvcmRfbGVuZ2h0LCBjb252ZXJ0IGFuZCByZWNvcmRfbWFya2VyLgoJKGdmY19oYW5kbGVfb3B0aW9uKTogIEFkZCBoYW5kbGluZyBmb3IKCS1mbWF4X3N1YnJlY29yZF9sZW5ndGguCgkqIGludm9rZS50ZXhpOiAgRG9jdW1lbnQgdGhlIG5ldyBkZWZhdWx0IGZvcgoJLWZyZWNvcmQtbWFya2VyPTxuPi4KCjIwMDYtMTItMDkgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yOTgyMQoJKiByZXNvbHZlLmMgKHJlc29sdmVfb3BlcmF0b3IpOiBPbmx5IHJldHVybiByZXN1bHQgb2YKCWdmY19zaW1wbGlmeV9leHByIGlmIGV4cHJlc3Npb24gaXMgY29uc3RhbnQuCgoJUFIgZm9ydHJhbi8yOTkxMgoJKiB0cmFucy1leHByLmMgKGdmY190cmFuc19hcnJheWZ1bmNfYXNzaWduKTogUmV0dXJuIE5VTEwgaWYgdGhlCglsaHMgYW5kIHJocyBjaGFyYWN0ZXIgbGVuZ3RocyBhcmUgbm90IGNvbnN0YW50IGFuZCBlcXVhbCBmb3IKCWNoYXJhY3RlciBhcnJheSB2YWx1ZWQgZnVuY3Rpb25zLgoKCVBSIGZvcnRyYW4vMjk5MTYKCSogcmVzb2x2ZS5jIChyZXNvbHZlX3N5bWJvbCk6IEFsbG93IGhvc3QtYXNzb2NpYXRlZCB2YXJpYWJsZXMKCWluIHRoZSBzcGVjaWZpY2F0aW9uIGV4cHJlc3Npb24gb2YgYW4gYXJyYXktdmFsdWVkIGZ1bmN0aW9uLgoJKiBleHByLmMgKGNoZWNrX3Jlc3RyaWN0ZWQpOiBBY2NlcHQgaG9zdC1hc3NvY2lhdGVkIGR1bW15CglhcnJheSBpbmRpY2VzLgoJCglQUiBmb3J0cmFuLzMwMDAzCgkqIHRyYW5zLWFycmF5LmMgKGdmY190cmFuc19jcmVhdGVfdGVtcF9hcnJheSk6IFNldCB0aGUgc2VjdGlvbgoJZW5kcyB0byB6ZXJvLgoJKGdmY19jb252X2FycmF5X3RyYW5zcG9zZSk6IExpa2V3aXNlLgoJKGdmY19jb252X3NlY3Rpb25fc3RhcnRzdHJpZGUpOiBEZWNsYXJlIGFuIGV4cHJlc3Npb24gZm9yIGVuZCwKCXNldCBpdCBmcm9tIGEgdGhlIGFycmF5IHJlZmVyZW5jZSBhbmQgZXZhbHVhdGUgaXQgZm9yIHRoZSBpbmZvCglzdHJ1Y3R1cmUuIFplcm8gdGhlIGVuZHMgaW4gdGhlIHNzIHN0cnVjdHVyZSBhbmQgc2V0IGVuZCwgdXNlZAoJaW4gdGhlIGJvdW5kcyBjaGVjaywgZnJvbSB0aGUgaW5mbyBzdHJ1Y3R1cmUuCgl0cmFucy5oOiBBZGQgYW5kIGVuZCBhcnJheSB0byB0aGUgZ2ZjX3NzX2luZm8gc3RydWN0dXJlLgoKMjAwNi0xMS0yOCAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI5OTc2CgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2NvbnZfbWlzc2luZ19kdW1teSk6IFJlbW92ZSBidWlsZF9pbnRfY29uc3QKCWFuZCByZXBsYWNlIHdpdGggY2FzdCB0byB0eXBlIG9mIHNlLT5leHByIG9mIGludGVnZXJfemVyb19ub2RlLgoKMjAwNi0xMS0yOCAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzIwODgwCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9mbF9wcm9jZWR1cmUpOiBFcnJvciBpZiBwcm9jZWR1cmUgaXMKCWFtYmlndW91cyBtb2RpZmllZCB0byByZXF1aXJlIGF0dHIucmVmZXJlbmNlZC4KCjIwMDYtMTEtMjYgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdtYWlsLmNvbT4KCglQUiBmb3J0cmFuLzI5OTgyCgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2NvbnZfZXhwcl9yZWZlcmVuY2UpOiBTdHJpcCBvZmYgTk9QX0VYUFJzLgoKMjAwNi0xMS0yNSAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzIwODgwCgkqIHBhcnNlLmMgKHBhcnNlX2ludGVyZmFjZSk6IEVycm9yIGlmIHByb2NlZHVyZSBuYW1lIGlzIHRoYXQgb2YKCWVuY29tcGFzc2luZyBzY29wZS4KCSogcmVzb2x2ZS5jIChyZXNvbHZlX2ZsX3Byb2NlZHVyZSk6IEVycm9yIGlmIHByb2NlZHVyZSBpcwoJYW1iaWd1b3VzLgoKCVBSIGZvcnRyYW4vMjk4MzcKCSogaW50ZXJmYWNlLmMgKGNvbXBhcmVfYWN0dWFsX2Zvcm1hbCk6IEFkZCBtaXNzaW5nIGNvbmRpdGlvbgoJdGhhdCAnd2hlcmUnIGJlIHByZXNlbnQgZm9yIGVycm9yIHRoYXQgYXNzZXJ0cyB0aGF0IGFjdHVhbAoJYXJndW1lbnRzIGJlIGRlZmluYWJsZS4KCjIwMDYtMTEtMjQgIEZyYW5jb2lzLVhhdmllciBDb3VkZXJ0ICA8Y291ZGVydEBjbGlwcGVyLmVucy5mcj4KCglQUiBmb3J0cmFuLzI5MzkxCglQUiBmb3J0cmFuLzI5NDg5CgkqIHNpbXBsaWZ5LmMgKHNpbXBsaWZ5X2JvdW5kKTogRml4IHRoZSBzaW1wbGlmaWNhdGlvbiBvZgoJTEJPVU5EL1VCT1VORCBpbnRyaW5zaWNzLgoJKiB0cmFucy1pbnRyaW5zaWMuYyAoc2ltcGxpZnlfYm91bmQpOiBGaXggdGhlIGxvZ2ljLCBhbmQKCXJlbW92ZSBhbiBlcnJvbmVvdXMgYXNzZXJ0LgoKMjAwNi0xMS0yNCAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCVBSIGZvcnRyYW4vMjQyODUKCSogaW8uYyAoY2hlY2tfZm9ybWF0KTogQWxsb3cgZG9sbGFycyBldmVyeXdoZXJlIGluIGZvcm1hdCwgYW5kCglpc3N1ZSBhIHdhcm5pbmcuCgoyMDA2LTExLTIzIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNTA4NwoJKiByZXNvbHZlLmMgKHJlc29sdmVfZmxfcHJvY2VkdXJlKTogQWRkIGFuIGVycm9yIGlmIGFuIGV4dGVybmFsCglhdXRvbWF0aWMgY2hhcmFjdGVyIGxlbmd0aCBmdW5jdGlvbiBkb2VzIG5vdCBoYXZlIGFuIGV4cGxpY2l0CglpbnRlcmZhY2UuCgoJUFIgZm9ydHJhbi8yOTY1MgoJKiBpbnRlcmZhY2UuYyAoY2hlY2tfaW50ZXJmYWNlMSk6IFVzZSBhIGxvY2FsIHZhbHVlLCBpbnN0ZWFkIG9mCgl0aGUgZHVtbXksIGFzIHRoZSBpbm5lciBpdGVyYXRvciBvdmVyIGludGVyZmFjZSBzeW1ib2xzLgoKCVBSIGZvcnRyYW4vMjk4MjAKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX2dldF9kZXJpdmVkX3R5cGUpOiBPbmNlIGRvbmUsIHNwcmVhZCB0aGUKCWJhY2tlbmRfZGVjbCB0byBhbGwgaWRlbnRpY2FsIGRlcml2ZWQgdHlwZXMgaW4gYWxsIHNpYmxpbmcKCW5hbWVzcGFjZXMuCgoyMDA2LTExLTE5ICBFcmlrIEVkZWxtYW5uICA8ZWVkZWxtYW5AZ2NjLmdudS5vcmc+CgoJKiByZXNvbHZlLmMgKHJlc29sdmVfcmVmKTogQ2hlY2sgZm9yIEFMTE9DQVRBQkxFcyB0byB0aGUgcmlnaHQgb2YKCSAgbm9uemVybyByYW5rIHBhcnQgcmVmZXJlbmNlcyB0b28uCgoyMDA2LTExLTE0ICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBmb3J0cmFuLzI5NzAyCgkqIGVycm9yLmMgKHNob3dfbG9jaSk6IE1vdmUgY29sdW1uLW9mZnNldCBjYWxjdWxhdGlvbiB0bwoJc2hvd19sb2N1cy4KCShzaG93X2xvY3VzKTogUmVtb3ZlIGJsYW5rIGxpbmVzIGJlZm9yZSAiSW5jbHVkZWQgaW4iCglsaW5lcywgY2xlYW4gdXAgY29kZSwgY2FsY3VsYXRlIGNvbHVtbi1vZmZzZXRzLCBwcmludAoJY29sdW1uIG51bWJlciBpcyBlcnJvci1oZWFkZXIgbGluZXMgYXMgYXBwcm9wcmlhdGUuCgkoZXJyb3JfaW50ZWdlcik6IChuZXcgZnVuY3Rpb24pIFByaW50IGludGVnZXIgdG8gZXJyb3IKCWJ1ZmZlci4KCShlcnJvcl9wcmludCk6IFVzZSBlcnJvcl9pbnRlZ2VyLCBhdm9pZCBwb3NzaWJsZSBidWZmZXIKCW92ZXJmbG93cyBmcm9tIGJ1Z2d5IGVycm9yIGZvcm1hdHMuCgoyMDA2LTExLTEzICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiBmb3J0cmFuLzI2OTk0CgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2NvbnZfZXhwcl9yZWZlcmVuY2UpOiBTZXQgVFJFRV9TVEFUSUMgb24gdGhlCgluZXcgQ09OU1RfREVDTC4KCjIwMDYtMTEtMTMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGZvcnRyYW4vMjk3NTkKCSogZm9ydHJhbi9zY2FubmVyLmMgKHNraXBfZnJlZV9jb21tZW50cyk6IENsZWFyIG9wZW5tcF9mbGFnCgliZWZvcmUgcmV0dXJuaW5nIHRydWUuCgoyMDA2LTExLTEyIFBhdWwgVGhvbWFzIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI5Njk5CgkqIHRyYW5zLWFycmF5LmMgKHN0cnVjdHVyZV9hbGxvY19jb21wcyk6IERldGVjdCBwb2ludGVycyB0bwoJYXJyYXlzIGFuZCB1c2UgaW5kaXJlY3QgcmVmZXJlbmNlIHRvIGRlY2xhcmF0aW9uLgoJKiByZXNvbHZlLmMgKHJlc29sdmVfZmxfdmFyaWFibGUpOiBUaWR5IHVwIGNvbmRpdGlvbi4KCShyZXNvbHZlX3N5bWJvbCk6IFRoZSBzYW1lIGFuZCBvbmx5IGFkZCBpbml0aWFsaXphdGlvbiBjb2RlIGlmCgl0aGUgc3ltYm9sIGlzIHJlZmVyZW5jZWQuCgkqIHRyYW5zLWRlY2wuYyAoZ2ZjX3RyYW5zX2RlZmVycmVkX3ZhcnMpOiBDYWxsIGdmY190cmFuc18KCWRlZmVycmVkX2FycmF5IGJlZm9yZSBnZmNfdHJhbnNfYXV0b19hcnJheV9hbGxvY2F0aW9uLgoKCVBSIGZvcnRyYW4vMjEzNzAKCSogc3ltYm9sLmMgKGNoZWNrX2RvbmUpOiBSZW1vdmUuCgkoZ2ZjX2FkZF9hdHRyaWJ1dGUpOiBSZW1vdmUgcmVmZXJlbmNlIHRvIGNoZWNrX2RvbmUgYW5kIHJlbW92ZQoJdGhlIGFyZ3VtZW50IGF0dHJfaW50ZW50LgoJKGdmY19hZGRfYWxsb2NhdGFibGUsIGdmY19hZGRfZGltZW5zaW9uLCBnZmNfYWRkX2V4dGVybmFsLAoJZ2ZjX2FkZF9pbnRyaW5zaWMsIGdmY19hZGRfb3B0aW9uYWwsIGdmY19hZGRfcG9pbnRlciwKCWdmY19hZGRfY3JheV9wb2ludGVyLCBnZmNfYWRkX2NyYXlfcG9pbnRlZSwgZ2ZjX2FkZF9yZXN1bHQsCglnZmNfYWRkX3RhcmdldCwgZ2ZjX2FkZF9pbl9jb21tb24sIGdmY19hZGRfZWxlbWVudGFsLAoJZ2ZjX2FkZF9wdXJlLCBnZmNfYWRkX3JlY3Vyc2l2ZSwgZ2ZjX2FkZF9wcm9jZWR1cmUsCglnZmNfYWRkX3R5cGUpOiBSZW1vdmUgcmVmZXJlbmNlcyB0byBjaGVja19kb25lLgoJKiBkZWNsLmMgKGF0dHJfZGVjbDEpOiBFbGltaW5hdGUgdGhpcmQgYXJndW1lbnQgaW4gY2FsbCB0bwoJZ2ZjX2FkZF9hdHRyaWJ1dGUuCgkqIGdmb3J0cmFuLmggOiBDaGFuZ2UgcHJvdG90eXBlIGZvciBnZmNfYWRkX2F0dHJpYnV0ZS4KCglQUiBmb3J0cmFuLzI5NDMxCgkqIHRyYW5zLWFycmF5LmMgICAgKGdldF9hcnJheV9jdG9yX3N0cmxlbik6IElmIHdlIGZhbGwgdGhyb3VnaCB0bwoJZGVmYXVsdCwgdXNlIGEgY29uc3RhbnQgY2hhcmFjdGVyIGxlbmd0aCBpZiBpdCBpcyBhdmFpbGFibGUuCgoJUFIgZm9ydHJhbi8yOTc1OAoJKiBjaGVjay5jIChnZmNfY2hlY2tfcmVzaGFwZSk6IENoZWNrIHRoYXQgdGhlcmUgYXJlIGVub3VnaAoJZWxlbWVudHMgaW4gdGhlIHNvdXJjZSBhcnJheSBhcyB0byBiZSBhYmxlIHRvIGZpbGwgYW4gYXJyYXkKCWRlZmluZWQgYnkgc2hhcGUsIHdoZW4gcGFkIGlzIGFic2VudC4KCglQUiBmb3J0cmFuLzI5MzE1CgkqIHRyYW5zLWV4cHIuYyAoaXNfYWxpYXNlZF9hcnJheSk6IFRyZWF0IGNvcnJlY3RseSB0aGUgY2FzZSB3aGVyZSB0aGUKCWNvbXBvbmVudCBpcyBpdHNlbGYgYW5kIGFycmF5IG9yIGFycmF5IHJlZmVyZW5jZS4KCjIwMDYtMTEtMTAgIFRvYmlhcyBCdXJudXMgIDxidXJudXNAbmV0LWIuZGU+CgoJUFIgZm9ydHJhbi8yOTQ1NAoJKiByZXNvbHZlLmMgKGdmY19yZXNvbHZlX2Jsb2Nrcyk6IEZpeCBlcnJvciBtZXNzYWdlLgoKMjAwNi0xMS0xMCAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI5NTM5CglQUiBmb3J0cmFuLzI5NjM0CgkqIGRlY2wuYyAodmFyaWFibGVfZGVjbCk6IEFkZCB0ZXN0IGZvciBwcmVzZW5jZSBvZiBwcm9jX25hbWUuCgkoZ2ZjX21hdGNoX2RhdGFfZGVjbCk6IE9ubHkgZW1pdCBlcnJvciBpZiB0aGVyZSBhcmUgbm9uZQoJYWxyZWFkeSBmbGFnZ2VkLgoJKiBlcnJvci5jIChnZmNfZXJyb3JfZmxhZ190ZXN0KTogTmV3IGZ1bmN0aW9uLgoJKiBnZm9ydHJhbi5oIDogUHJvdG90eXBlIGZvciBnZmNfZXJyb3JfZmxhZ190ZXN0LgoKMjAwNi0xMS0wOSBQYXVsIFRob21hcyA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yOTc0NAoJKiB0cmFucy10eXBlcy5jIChnZmNfZ2V0X2Rlcml2ZWRfdHlwZSk6IEVuc3VyZSB0aGF0IHRoZQoJcHJvY19uYW1lIG5hbWVzcGFjZSBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIG93bmVyIG5hbWVzcGFjZSBhbmQKCXRoYXQgaWRlbnRpY2FsIGRlcml2ZWQgdHlwZXMgaW4gdGhlIHNhbWUgbmFtZXNwYWNlIHNoYXJlIHRoZQoJc2FtZSBiYWNrZW5kX2RlY2wuCgoyMDA2LTExLTA5ICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCglCYWNrcG9ydCBmcm9tIG1haW5saW5lOgoJKiBsYW5nLm9wdDogUmVtb3ZlIG5vbi13b3JraW5nIC1xa2luZD0gb3B0aW9uLgoJKiBnZm9ydHJhbi5oIChnZmNfb3B0aW9uX3QpOiBSZW1vdmUgcV9raW5kIG1lbWJlci4KCSogb3B0aW9ucy5jIChnZmNfaW5pdF9vcHRpb25zKTogUmVtb3ZlIHFfa2luZCBpbml0aWFsaXphdGlvbi4KCShnZmNfaGFuZGxlX29wdGlvbik6IFJlbW92ZSAtcWtpbmQ9IG9wdGlvbiBoYW5kbGluZy4KCSogcHJpbWFyeS5jOiAobWF0Y2hfcmVhbF9jb25zdGFudCk6IFJlbW92ZSAnUScgZXhwb25lbnQuCgoyMDA2LTExLTA5ICBUb2JpYXMgQnVybnVzICA8YnVybnVzQG5ldC1iLmRlPgoKCVBSIGZvcnRyYW4vMjk3MTMKCSogZXhwci5jIChnZmNfc2ltcGxpZnlfZXhwcik6IENvcnJlY3QgbWVtb3J5IGFsbG9jYXRpb24uCgoKMjAwNi0xMS0wOCAgRXJpayBFZGVsbWFubiAgPGVlZGVsbWFuQGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjk2MzAKCVBSIGZvcnRyYW4vMjk2NzkKCSogZXhwci5jIChmaW5kX2FycmF5X3NlY3Rpb24pOiBTdXBwb3J0IHZlY3RvciBzdWJzY3JpcHRzLiAgRG9uJ3QKCWFkZCBzaXplcyBmb3IgZGltZW5fdHlwZSA9PSBESU1FTl9FTEVNRU5UIHRvIHRoZSBzaGFwZSBhcnJheS4KCjIwMDYtMTEtMDggIFRvYmlhcyBCdXJudXMgIDxidXJudXNAbmV0LWIuZGU+CgoJKiBpbnRyaW5zaWMudGV4aTogQ29ycmVjdCBDSE1PRCBlbnRyeS4KCjIwMDYtMTEtMDYgIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaW50cmluc2ljLnRleGk6IEFkZGVkIGRvY3VtZW50YXRpb24gZm9yIEZURUxMLCBHRVRMT0csIGFuZAoJSE9TVE5NIGludHJpbnNpY3MuCgoyMDA2LTExLTA1ICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGZ4Y291ZGVydEBnY2MuZ251LG9yZz4KCSAgICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjQ1MTgKCSogdHJhbnMtaW50cmluc2ljLmMgKGdmY19jb252X2ludHJpbnNpY19tb2QpOiBVc2UgYnVpbHRfaW4gZm1vZAoJZm9yIGJvdGggTU9EIGFuZCBNT0RVTE8sIGlmIGl0IGlzIGF2YWlsYWJsZS4KCjIwMDYtMTEtMDUgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yOTU2NQoJKiB0cmFucy1leHByLmMgKGdmY19jb252X2FsaWFzZWRfYXJnKTogRm9yIGFuIElOVEVOVChPVVQpLCBzYXZlCgl0aGUgZGVjbGFyYXRpb25zIGZyb20gdGhlIHVudXNlZCBsb29wcyBieSBtZXJnaW5nIHRoZSBibG9jawoJc2NvcGUgZm9yIGVhY2g7IHRoaXMgZW5zdXJlcyB0aGF0IHRoZSB0ZW1wb3JhcnkgaXMgZGVjbGFyZWQuCgoJUFIgZm9ydHJhbi8yOTM4NwoJKiB0cmFucy1pbnRyaW5zaWMuYyAoZ2ZjX2NvbnZfaW50cmluc2ljX2xlbik6IFJlYXJyYW5nZSB0byBoYXZlCglhIHNwZWNpZmljIGNhc2UgZm9yIEVYUFJfVkFSSUFCTEUgYW5kLCBpbiBkZWZhdWx0LCBidWlsZCBhbiBzcwoJdG8gY2FsbCBnZmNfY29udl9leHByX2Rlc2NyaXB0b3IgZm9yIGFycmF5IGV4cHJlc3Npb25zLi4KCglQUiBmb3J0cmFuLzI5NDkwCgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX3NldF9pbnRlcmZhY2VfbWFwcGluZ19ib3VuZHMpOiBJbiB0aGUgY2FzZQoJdGhhdCBHRkNfVFlQRV9BUlJBWV9MQk9VTkQgaXMgbm90IGF2YWlsYWJsZSwgdXNlIGRlc2NyaXB0b3IKCXZhbHVlcyBmb3IgaXQgYW5kIEdGQ19UWVBFX0FSUkFZX1VCT1VORC4KCglQUiBmb3J0cmFuLzI5NjQxCgkqIHRyYW5zLXR5cGVzLmMgKGdmY19nZXRfZGVyaXZlZF90eXBlKTogSWYgdGhlIGRlcml2ZWQgdHlwZQoJbmFtZXNwYWNlIGhhcyBuZWl0aGVyIGEgcGFyZW50IG5vciBhIHByb2NfbmFtZSwgc2V0IE5VTEwgZm9yCgl0aGUgc2VhcmNoIG5hbWVzcGFjZS4KCjIwMDYtMTEtMDMgIEZyYW5jb2lzLVhhdmllciBDb3VkZXJ0ICA8Y291ZGVydEBjbGlwcGVyLmVucy5mcj4KCglQUiBmb3J0cmFuLzI5MDY3CgkqIGRlY2wuYyAoZ2ZjX3NldF9jb25zdGFudF9jaGFyYWN0ZXJfbGVuKTogTlVMTC10ZXJtaW5hdGUgdGhlCgljaGFyYWN0ZXIgY29uc3RhbnQgc3RyaW5nLgoJKiBkYXRhLmMgKGNyZWF0ZV9jaGFyYWN0ZXJfaW50aWFsaXplcik6IExpa2V3aXNlLgoJKiBleHByLmMgKGdmY19zaW1wbGlmeV9leHByKTogTlVMTC10ZXJtaW5hdGUgdGhlIHN1YnN0cmluZwoJY2hhcmFjdGVyIGNvbnN0YW50LgoJKiBwcmltYXJ5LmMgKG1hdGNoX2hvbGxlcml0aF9jb25zdGFudCk6IE5VTEwtdGVybWluYXRlIHRoZQoJY2hhcmFjdGVyIGNvbnN0YW50IHN0cmluZy4KCjIwMDYtMTAtMjYgIFRvYmlhcyBCdXJudXMgIDxidXJudXNAbmV0LWIuZGU+CgoJUFIgZm9ydHJhbi8yOTQ1MgoJKiBpby5jIChjaGVja19pb19jb25zdHJhaW50cyk6IEZpeCBrZXl3b3JkIHN0cmluZyBjb21wYXJpc29uLgoKMjAwNi0xMC0yOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgZm9ydHJhbi8yOTYyOQoJKiB0cmFucy1vcGVubXAuYyAoZ2ZjX3RyYW5zX29tcF9hcnJheV9yZWR1Y3Rpb24pOiBTZXQgYXR0ci5mbGF2b3IKCW9mIGluaXRfdmFsX3N5bSBhbmQgb3V0ZXJfc3ltIHRvIEZMX1ZBUklBQkxFLgoKMjAwNi0xMC0yNCAgRXJpayBFZGVsbWFubiAgPGVlZGVsbWFuQGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjkzOTMKCSogZXhwci5jIChzaW1wbGlmeV9wYXJhbWV0ZXJfdmFyaWFibGUpOiBLZWVwIHJhbmsgb2Ygb3JpZ2luYWwKCWV4cHJlc3Npb24uCgoyMDA2LTEwLTE5ICBCcm9va3MgTW9zZXMgIDxibW9zZXNAc3RhbmZvcmQuZWR1PgoKCSogaW52b2tlLnRleGk6IEZpeGVkICJkZW5vcm1hbCIgdHlwby4KCjIwMDYtMTAtMTkgIFBhdWwgVGhvbWFzIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI5MjE2CglQUiBmb3J0cmFuLzI5MzE0CgkqIGdmb3J0cmFuLmggOiBBZGQgRVhFQ19JTklUX0FTU0lHTi4KCSogZHVtcC1wYXJzZS10cmVlLmMgKGdmY19zaG93X2NvZGVfbm9kZSk6IFRoZSBzYW1lLgoJKiB0cmFucy1vcGVubXAuYyAoZ2ZjX3RyYW5zX29tcF9hcnJheV9yZWR1Y3Rpb24pOiBTZXQgbmV3Cglhcmd1bWVudCBmb3IgZ2ZjX3RyYW5zX2Fzc2lnbm1lbnQgdG8gZmFsc2UuCgkqIHRyYW5zLXN0bXQuYyAoZ2ZjX3RyYW5zX2ZvcmFsbF8xKTogVGhlIHNhbWUuCgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2NvbnZfZnVuY3Rpb25fY2FsbCwgZ2ZjX3RyYW5zX2Fzc2lnbiwKCWdmY190cmFuc19hcnJheWZ1bmNfYXNzaWduLCBnZmNfdHJhbnNfYXNzaWdubWVudCk6IFRoZQoJc2FtZS4gSW4gdGhlIGxhdHRlciBmdW5jdGlvbiwgdXNlIHRoZSBuZXcgZmxhZyB0byBzdG9wCgl0aGUgY2hlY2tpbmcgb2YgdGhlIGxocyBmb3IgZGVhbGxvY2F0aW9uLgoJKGdmY190cmFuc19pbml0X2Fzc2lnbik6IE5ldyBmdW5jdGlvbi4KCSogdHJhbnMtc3RtdC5oIDogQWRkIHByb3RvdHlwZSBmb3IgZ2ZjX3RyYW5zX2luaXRfYXNzaWduLgoJKiB0cmFucy5jIChnZmNfdHJhbnNfY29kZSk6IEltcGxlbWVudCBFWEVDX0lOSVRfQVNTSUdOLgoJKiB0cmFucy5oIDogQWRkIG5ldyBib29sZWFuIGFyZ3VtZW50IHRvIHRoZSBwcm90b3R5cGUgb2YKCWdmY190cmFuc19hc3NpZ25tZW50LgoJKiByZXNvbHZlLmMgKHJlc29sdmVfYWxsb2NhdGVfZXhwKTogUmVwbGFjZSBFWEVDX0FTU0lHTiBieQoJRVhFQ19JTklUX0FTU0lHTi4KCShyZXNvbHZlX2NvZGUpOiBFWEVDX0lOSVRfQVNTSUdOIGRvZXMgbm90IG5lZWQgcmVzb2x1dGlvbi4KCShhcHBseV9kZWZhdWx0X2luaXQpOiBOZXcgZnVuY3Rpb24uCgkocmVzb2x2ZV9zeW1ib2wpOiBDYWxsIGl0IGZvciBkZXJpdmVkIHR5cGVzIHRoYXQgYmVjb21lCglkZWZpbmVkIGJ1dCB3aGljaCBkbyBub3QgYWxyZWFkeSBoYXZlIGFuIGluaXRpYWxpemF0aW9uCglleHByZXNzaW9uLi4KCSogc3QuYyAoZ2ZjX2ZyZWVfc3RhdGVtZW50KTogSW5jbHVkZSBFWEVDX0lOSVRfQVNTSUdOLgoKMjAwNi0xMC0xNiAgVG9iaWFzIEJ1cm51cyAgPGJ1cm51c0BuZXQtYi5kZT4KCgkqIHByaW1hcnkuYzogUmV2ZXJ0ICdzaWduaWZpY2FuZCctdG8tJ3NpZ25pZmljYW50JyBjb21tZW50IGNoYW5nZS4KCSogaW52b2tlLnRleGkgKFdhcm5pbmcgT3B0aW9ucyk6IE1pbm9yIGNsZWFudXAgZm9yCgkgIC1XaW1wbGljaXQtaW50ZXJmYWNlLgoKMjAwNi0xMC0xNyAgUGF1bCBUaG9tYXMgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjk0NTEKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX3RyYW5zX2FycmF5X2JvdW5kcyk6IFRlc3QgZm9yIGFuZCBzZXQKCW5lZ2F0aXZlIHN0cmlkZSBvZiBhIG5vbi1jb25zdGFudCBib3VuZCBhcnJheSB0byB6ZXJvLgoKCVBSIGZvcnRyYW4vMjkzOTIKCSogZGF0YS5jIChjcmVhdGVfY2hhcmFjdGVyX2ludGlhbGl6ZXIpOiBDb3B5IGFuZCBzaW1wbGlmeQoJdGhlIGV4cHJlc3Npb25zIGZvciB0aGUgc3RhcnQgYW5kIGVuZCBvZiBhIHN1Yi1zdHJpbmcKCXJlZmVyZW5jZS4KCjIwMDYtMTAtMTYgIEtheiBLb2ppbWEgIDxra29qaW1hQHJyLmlpajR1Lm9yLmpwPgoKCSogaW8uYyAoZ2ZjX21hdGNoX2Nsb3NlKTogRW5zdXJlIHRoYXQgc3RhdHVzIGlzIHRlcm1pbmF0ZWQgYnkKCWEgTlVMTCBlbGVtZW50LgoKMjAwNi0xMC0xNiAgVG9iaWFzIEJ1cm51cyAgPGJ1cm51c0BuZXQtYi5kZT4KCgkqIHRyYW5zLXN0bXQuYzogRml4IGEgdHlwbwoJKiBpbnZva2UudGV4aTogRml4IHR5cG9zCgkqIHJlc29sdmUuYzogRml4IGEgY29tbWVudCB0eXBvCgkqIHRyYW5zLWRlY2wuYzogRml4IGEgY29tbWVudCB0eXBvCgkqIHByaW1hcnkuYzogRml4IGEgY29tbWVudCB0eXBvCgoyMDA2LTEwLTE1ICBTdGV2ZW4gRy4gS2FyZ2wgIDxrYXJnbEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI5NDAzCgkqIGlvLmMgKG1hdGNoX2lvKTogIENoZWNrIGZvciBhIGRlZmF1bHQtY2hhci1leHByIGZvciBQUklOVCBmb3JtYXQuCgoyMDA2LTEwLTE1ICBCZXJuaGFyZCBGaXNjaGVyICA8YWxkb3RAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNDc2NwoJKiBsYW5nLm9wdCAoV3VudXNlZC1sYWJlbHMpOiBSZW1vdmUuCgkqIG9wdGlvbnMuYzogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gZ2ZjX29wdGlvbi53YXJuX3VudXNlZF9sYWJlbHMuCgkqIGdmb3J0cmFuLmg6IFJlbW92ZSB2YXJpYWJsZSB3YXJuX3VudXNlZF9sYWJlbHMuICAgICAgICAgICAgICAgCgkqIHJlc29sdmUuYyAod2Fybl91bnVzZWRfZm9ydHJhbl9sYWJlbCkgOiBVc2Ugd2Fybl91bnVzZWRfbGFiZWwKCWluc3RlYWQgb2YgZ2ZjX29wdGlvbi53YXJuX3VudXNlZF9sYWJlbHMuCgkqIGludm9rZS50ZXhpOiBSZW1vdmUgZG9jdW1lbnRhdGlvbiBvZiAtV3VudXNlZC1sYWJlbHMuCgoyMDA2LTEwLTE0ICBUb2JpYXMgQnVybnVzICA8YnVybnVzQG5ldC1iLmRlPgoKCSogZ2ZvcnRyYW4udGV4aTogQWRkIGxpbmsgdG8gR0ZvcnRyYW4gYXBwcwoJKiBpbnRyaW5zaWMudGV4aTogVXBkYXRlZCBkb2N1bWVudGF0aW9uIG9mIEFDQ0VTUyBhbmQgQ0hNT0QKCjIwMDYtMTAtMTQgIEplcnJ5IERlTGlzbGUgIDxqdmRlbGlzbGVAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8xOTI2MQoJKiBzY2FubmVyLmMgKGxvYWRfbGluZSk6IEFkZCBjaGVja3MgZm9yIGlsbGVnYWwgdXNlIG9mICcmJyBhbmQgaXNzdWUKCXdhcm5pbmdzLiAgSXNzdWUgZXJyb3JzIHdpdGggLXBlZGFudGljLgoKMjAwNi0xMC0xNCBQYXVsIFRob21hcyA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yOTM3MQoJKiB0cmFucy1leHByLmMgKGdmY190cmFuc19wb2ludGVyX2Fzc2lnbm1lbnQpOiBBZGQgdGhlIGV4cHJlc3Npb24KCWZvciB0aGUgYXNzaWdubWVudCBvZiBudWxsIHRvIHRoZSBkYXRhIGZpZWxkIHRvIHNlLT5wcmUsIHJhdGhlcgoJdGhhbiBibG9jay4JCgoyMDA2LTEwLTE0ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGludHJpbnNpYy50ZXhpOiBGaXggdHlwb3MuCgkqIHRyYW5zLWFycmF5LmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDYtMTAtMTMgIEJyb29rcyBNb3NlcyAgPGJtb3Nlc0BzdGFuZm9yZC5lZHU+CgoJKiBpbnRyaW5zaWMudGV4aSAoU1RBVCk6IFJldmVydGVkIGEgZm9ybWF0IGluIGV4YW1wbGUgY29kZSB0bwoJb2N0YWw7IG5vdGVkIHRoaXMgaW4gYWNjb21wYW55aW5nIHN0cmluZy4KCjIwMDYtMTAtMTMgUGF1bCBUaG9tYXMgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjkzNzMKCSogZGVjbC5jIChnZXRfcHJvY19uYW1lLCBnZmNfbWF0Y2hfZnVuY3Rpb25fZGVjbCk6IEFkZAoJYXR0ci5pbXBsaWNpdF90eXBlIHRvIGNvbmRpdGlvbnMgdGhhdCB0aHJvdyBlcnJvciBmb3IKCWV4aXN0aW5nIGV4cGxpY2l0IGludGVyZmFjZSBhbmQgdGhhdCBhbGxvdyBuZXcgdHlwZS0KCXNwZWMgdG8gYmUgYXBwbGllZC4KCglQUiBmb3J0cmFuLzI5NDA3CgkqIHJlc29sdmUuYyAocmVzb2x2ZV9mbF9uYW1lbGlzdCk6IERvIG5vdCBjaGVjayBmb3IKCW5hbWVsaXN0L3Byb2NlZHVyZSBjb25mbGljdCwgaWYgdGhlIHN5bWJvbCBjb3JyZXNwb25kcwoJdG8gYSBnb29kIGxvY2FsIHZhcmlhYmxlIGRlY2xhcmF0aW9uLgoKCVBSIGZvcnRyYW4vMjc3MDEKCSogZGVjbC5jIChnZXRfcHJvY19uYW1lKTogUmVwbGFjZSB0aGUgZGV0ZWN0aW9uIG9mIGEgZGVjbGFyZWQKCXByb2NlZHVyZSBieSB0aGUgcHJlc2VuY2Ugb2YgYSBmb3JtYWwgYXJndW1lbnQgbGlzdCBieSB0aGUKCWF0dHJpYnV0ZXMgb2YgdGhlIHN5bWJvbCBhbmQgdGhlIHByZXNlbmNlIG9mIGFuIGV4cGxpY2l0CglpbnRlcmZhY2UuCgoJUFIgZm9ydHJhbi8yOTIzMgoJKiByZXNvbHZlLmMgKHJlc29sdmVfZmxfdmFyaWFibGUpOiBTZWUgaWYgdGhlIGhvc3QgYXNzb2NpYXRpb24KCW9mIGEgZGVyaXZlZCB0eXBlIGlzIGJsb2NrZWQgYnkgdGhlIHByZXNlbmNlIG9mIGFub3RoZXIgdHlwZSBJCglvYmplY3QgaW4gdGhlIGN1cnJlbnQgbmFtZXNwYWNlLgoKCVBSIGZvcnRyYW4vMjkzNjQKCSogcmVzb2x2ZS5jIChyZXNvbHZlX2ZsX2Rlcml2ZWQpOiBDaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mCgl0aGUgZGVyaXZlZCB0eXBlIGZvciBhIGRlcml2ZWQgdHlwZSBjb21wb25lbnQuCgoJUFIgZm9ydHJhbi8yNDM5OAoJKiBtb2R1bGUuYyAoZ2ZjX3VzZV9tb2R1bGUpOiBDaGVjayB0aGF0IHRoZSBmaXJzdCB3b3JkcyBpbiBhCgltb2R1bGUgZmlsZSBhcmUgJ0dGT1JUUkFOIG1vZHVsZScuCgoJUFIgZm9ydHJhbi8yOTQyMgoJKiByZXNvbHZlLmMgKHJlc29sdmVfdHJhbnNmZXIpOiBUZXN0IGZ1bmN0aW9ucyBmb3Igc3VpdGFiaWxpdHkKCWZvciBJTywgYXMgd2VsbCBhcyB2YXJpYWJsZXMuCgoJUFIgZm9ydHJhbi8yOTQyOAoJKiB0cmFucy1leHByLmMgKGdmY190cmFuc19zY2FsYXJfYXNzaWduKTogUmVtb3ZlIG51bGxpZnkgb2YKCXJocyBleHByZXNzaW9uLgoKMjAwNi0xMC0xMyAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCVBSIGZvcnRyYW4vMjkzOTEKCSogdHJhbnMtaW50cmluc2ljLmMgKGdmY19jb252X2ludHJpbnNpY19ib3VuZCk6IEdlbmVyYXRlIGNvcnJlY3QKCWNvZGUgZm9yIExCT1VORCBhbmQgVUJPVU5EIGludHJpbnNpY3MuCgoyMDA2LTEwLTEzICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJUFIgZm9ydHJhbi8yMTQzNQoJKiBpby5jIChjb21wYXJlX3RvX2FsbG93ZWRfdmFsdWVzKTogTmV3IGZ1bmN0aW9uLgoJKGdmY19tYXRjaF9vcGVuKTogQWRkIGNoZWNrcyBmb3IgY29uc3RhbnQgdmFsdWVzIG9mIHNwZWNpZmllcnMuCgkoZ2ZjX21hdGNoX2Nsb3NlKTogQWRkIGNoZWNrcyBmb3IgY29uc3RhbnQgdmFsdWVzIG9mIHRoZSBTVEFUVVMKCXNwZWNpZmllci4KCjIwMDYtMTAtMTIgIEJyb29rcyBNb3NlcyAgPGJtb3Nlc0BzdGFuZm9yZC5lZHU+CgoJKiBpbnRyaW5zaWMudGV4aSAoU1RBVCk6IEZpeGVkIGEgZm9ybWF0IHR5cG8gaW4gc2FtcGxlIGNvZGUuCgoyMDA2LTEwLTEyICBCcm9va3MgTW9zZXMgIDxibW9zZXNAc3RhbmZvcmQuZWR1PgoKCSogaW50cmluc2ljLnRleGkgKFNUQVQpOiBTaG9ydGVuZWQgbGluZXMgaW4gc2FtcGxlIGNvZGUuCgoyMDA2LTEwLTExICBUb2JpYXMgU2NobHVldGVyICA8dG9iaWFzLnNjaGx1ZXRlckBwaHlzaWsudW5pLW11ZW5jaGVuLmRlPgoKCSogZ2ZvcnRyYW4uaCAoZ2ZjX3Nob3dfYWN0dWFsX2FyZ2xpc3QsIGdmY19zaG93X2FycmF5X3JlZiwKCWdmY19zaG93X2FycmF5X3NwZWMsIGdmY19zaG93X2F0dHIsIGdmY19zaG93X2NvZGUsCglnZmNfc2hvd19jb21wb25lbnRzLCBnZmNfc2hvd19jb25zdHJ1Y3RvciwgZ2ZjX3Nob3dfZXF1aXYsCglnZmNfc2hvd19leHByLCBnZmNfc2hvd19uYW1lbGlzdCwgZ2ZjX3Nob3dfcmVmLCBnZmNfc2hvd19zeW1ib2wsCglnZmNfc2hvd190eXBlc3BlYyk6IEFkZCBwcm90b3R5cGVzLgoJKiBkdW1wLXBhcnNlLXRyZWUuYyAoZ2ZjX3Nob3dfYWN0dWFsX2FyZ2xpc3QsIGdmY19zaG93X2FycmF5X3JlZiwKCWdmY19zaG93X2FycmF5X3NwZWMsIGdmY19zaG93X2F0dHIsIGdmY19zaG93X2NvZGUsCglnZmNfc2hvd19jb21wb25lbnRzLCBnZmNfc2hvd19jb25zdHJ1Y3RvciwgZ2ZjX3Nob3dfZXF1aXYsCglnZmNfc2hvd19leHByLCBnZmNfc2hvd19uYW1lbGlzdCwgZ2ZjX3Nob3dfcmVmLCBnZmNfc2hvd19zeW1ib2wsCglnZmNfc2hvd190eXBlc3BlYyk6IFJlbW92ZSAnc3RhdGljJyBmcm9tIGRlY2xhcmF0aW9uLgoKMjAwNi0xMC0xMCAgQnJvb2tzIE1vc2VzICA8Ym1vc2VzQHN0YW5mb3JkLmVkdT4KCgkqIGludm9rZS50ZXhpLCBnZm9ydHJhbi50ZXhpOiBDb3JyZWN0ZWQgZXJyb25vdXMgZGFzaGVzLgoKMjAwNi0xMC0xMCAgQnJvb2tzIE1vc2VzICA8Ym1vc2VzQHN0YW5mb3JkLmVkdT4KCgkqIE1ha2UtbGFuZy5pbjogQWRkZWQgImZvcnRyYW4ucGRmIiwgImdmb3J0cmFuLnBkZiIgdGFyZ2V0CglzdXBwb3J0LgoKMjAwNi0xMC0xMCAgRGFuaWVsIEZyYW5rZSAgPGZyYW5rZS5kYW5pZWxAZ21haWwuY29tPgoKCSogaW50cmluc2ljLnRleGk6IGFkZGVkIGRvY3VtZW50YXRpb24gZm9yIEZTVEFULCBHRVRBUkcsR0VUX0NPTU1BTkQsCglHRVRfQ09NTUFORF9BUkdVTUVOVCwgR0VURU5WLCBHRVRfRU5WSVJPTk1FTlRfVkFSSUFCTEUsIElBTkQsIElBUkdDLAoJTFNUQVQgYW5kIFNUQVQsIHJlbW92ZWQgdGhlIHJlZmVyZW5jZSB0byBQUjE5MjkyIGZyb20gQUNDRVNTLCBDSE1PRCwKCUdNVElNRSwgTFNISUZULCBMVElNRSwgUlNISUZULgoKMjAwNi0xMC0xMCAgQnJvb2tzIE1vc2VzICA8Ym1vc2VzQHN0YW5mb3JkLmVkdT4KCgkqIGdmb3J0cmFuLnRleGkgKFN0YW5kYXJkcyk6IFVwZGF0ZSB0byBjdXJyZW50IHN0YXR1cy4KCjIwMDYtMTAtMDkgIEJyb29rcyBNb3NlcyAgPGJtb3Nlc0BzdGFuZm9yZC5lZHU+CgoJKiBNYWtlLWxhbmcuaW46IEFkZGVkIGludHJpbnNpYy50ZXhpIHRvIEdGT1JUUkFOX1RFWEkKCWRlcGVuZGVuY2VzLgoKMjAwNi0xMC0wOSAgQnJvb2tzIE1vc2VzICA8Ym1vc2VzQHN0YW5mb3JkLmVkdT4KCgkqIGludHJpbnNpYy50ZXhpIChNT1ZFX0FMTE9DKTogY2hhbmdlZCAiT3B0aW9ucyIgdG8gIlN0YW5kYXJkcyIuCgoyMDA2LTEwLTA5ICBTdGV2ZW4gRy4gS2FyZ2wgIDxrYXJnbEBnY2MuZ251Lm9yZz4KCgkqIGdmb3J0cmFuLmg6IERlZmluZSBHRkNfTVBGUl9UT09fT0xEIHZpYSBtcGZyIHZlcnNpb24gaW5mby4KCSogYXJpdGguYyAoYXJjdGFuZ2VudCwgZ2ZjX2NoZWNrX3JlYWxfcmFuZ2UpOiBVc2UgaXQuCQoJKiBzaW1wbGlmeS5jIChnZmNfc2ltcGxpZnlfYXRhbjIsIGdmY19zaW1wbGlmeV9leHBvbmVudCwKCWdmY19zaW1wbGlmeV9sb2csIGdmY19zaW1wbGlmeV9uZWFyZXN0KTogVXNlIGl0LgoKCVBSIGZvcnRyYW4vMTU0NDEKCVBSIGZvcnRyYW4vMjkzMTIKCSogaXJlc29sdmUuYyAoZ2ZjX3Jlc29sdmVfcnJzcGFjaW5nKTogR2l2ZSBycnNwYWNpbmcgbGlicmFyeQoJcm91dGluZSBoaWRkZW4gcHJlY2lzaW9uIGFyZ3VtZW50LgoJKGdmY19yZXNvbHZlX3NwYWNpbmcpOiBHaXZlIHNwYWNpbmcgbGlicmFyeSByb3V0aW5lIGhpZGRlbgoJcHJlY2lzaW9uLCBlbWluIC0gMSwgYW5kIHRpbnkoeCkgYXJndW1lbnRzLgoJKiBzaW1wbGlmeS5jIChnZmNfc2ltcGxpZnlfbmVhcmVzdCk6IFJlbW92ZSBleHBsaWNpdCBzdWJub3JtYWxpemF0aW9uLgoJKGdmY19zaW1wbGlmeV9ycnNwYWNpbmcpOiBJbXBsZW1lbnQgZm9ybXVsYSBmcm9tIEZvcnRyYW4gOTUgc3RhbmRhcmQuCgkoZ2ZjX3NpbXBsaWZ5X3NwYWNpbmcpOiBJbXBsZW1lbnQgZm9ybXVsYSBmcm9tIEZvcnRyYW4gMjAwMyBzdGFuZGFyZC4KCSogdHJhbnMtaW50cmluc2ljLmMgKGdmY19pbnRyaW5zaWNfbWFwX3QpIERlY2xhcmUgcnJzcGFjaW5nIGFuZAoJc3BhY2luZyB2aWEgTElCRl9GVU5DVElPTgoJKHByZXBhcmVfYXJnX2luZm8sIGNhbGxfYnVpbHRpbl9jbHosIGdmY19jb252X2ludHJpbnNpY19zcGFjaW5nLAoJZ2ZjX2NvbnZfaW50cmluc2ljX3Jyc3BhY2luZyk6IFJlbW92ZSBmdW5jdGlvbnMuCgkoZ2ZjX2NvbnZfaW50cmluc2ljX2Z1bmN0aW9uKTogUmVtb3ZlIGNhbGxzIHRvCglnZmNfY29udl9pbnRyaW5zaWNfc3BhY2luZyBhbmQgZ2ZjX2NvbnZfaW50cmluc2ljX3Jyc3BhY2luZy4KCSogZjk1LWxhbmcuYyAoZ2ZjX2luaXRfYnVpbHRpbl9mdW5jdGlvbnMpOiBSZW1vdmUgX19idWlsdGluX2NseiwKCV9fYnVpbHRpbl9jbHpsIGFuZCBfX2J1aWx0aW5fY2x6bGwKCjIwMDYtMTAtMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUmV2ZXJ0IGVtdXRscyBwYXRjaC4KCjIwMDYtMTAtMDkgIEZyYW5jb2lzLVhhdmllciBDb3VkZXJ0ICA8Y291ZGVydEBjbGlwcGVyLmVucy5mcj4KCgkqIGludHJpbnNpYy5jIChhZGRfc3ltXzBzLCBhZGRfc3ltXzFzLCBhZGRfc3ltXzJzLCBhZGRfc3ltXzNzLAoJYWRkX3N5bV80cywgYWRkX3N5bV81cywgYWRkX2Z1bmN0aW9ucyk6IFVzZSBtYWNybyBBQ1RVQUxfTk8sCglBQ1RVQUxfWUVTLCBOT1RfRUxFTUVOVEFMIGFuZCBFTEVNRU5UQUwgaW5zdGVhZCBvZiBjb25zdGFudHMKCTAgYW5kIDEgYXMgc2Vjb25kIGFuZCB0aGlyZCBhcmd1bWVudHMgdG8gYWRkX3N5bSogZnVuY3Rpb25zLgoKMjAwNi0xMC0wOCAgRXJpayBFZGVsbWFubiA8ZWRlbG1hbm5AZ2NjLmdudS5vcmc+CgkgICAgUGF1bCBUaG9tYXMgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjA1NDEKCSogaW50ZXJmYWNlLmMgKGdmY19jb21wYXJlX2Rlcml2ZWRfdHlwZXMpOiBBZGQgY29tcGFyaXNvbiBvZgoJdGhlIGFsbG9jYXRhYmxlIGZpZWxkLgoJKiBpbnRyaW5zaWMuYyAoYWRkX3N1YnJvdXRpbmVzKTogQWRkIE1PVkVfQUxMT0MuCgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2NvbnZfYWxpYXNlZF9hcmcsIGdmY190cmFuc19zdWJhcnJheV9hc3NpZ24sCglnZmNfdHJhbnNfc3ViY29tcG9uZW50X2Fzc2lnbiwgZ2ZjX2NvbnZfc3RyaW5nX3BhcmFtZXRlciwKCWdmY190cmFuc19zY2FsYXJfYXNzaWduKTogQWRkIGV4dHJhIGFyZ3VtZW50cyBsX2lzX3RlbXAKCWFuZCByX2lzX3ZhciB0byByZWZlcmVuY2VzIHRvIGxhdHRlciBmdW5jdGlvbi4KCShnZmNfY29udl9mdW5jdGlvbl9jYWxsKTogQWRkIGVudW0gZm9yIHR5cGVzIG9mIGFyZ3VtZW50IGFuZAoJYW4gYXNzb2NpYXRlZCB2YXJpYWJsZSBwYXJtX2tpbmQuIERlYWxsb2NhdGUgY29tcG9uZW50cyBvZgoJSU5URU5UKE9VVCkgYW5kIG5vbi12YXJpYWJsZSBhcnJheXMuCgkoZ2ZjX3RyYW5zX3N1YmNvbXBvbmVudF9hc3NpZ24pOiBBZGQgYmxvY2sgdG8gYXNzaWduIGFycmF5cwoJdG8gYWxsb2NhdGFibGUgY29tcG9uZW50cy4KCShnZmNfdHJhbnNfc2NhbGFyX2Fzc2lnbik6IEFkZCBibG9jayB0byBoYW5kbGUgYXNzaWdubWVudHMgb2YKCWRlcml2ZWQgdHlwZXMgd2l0aCBhbGxvY2F0YWJsZSBjb21wb25lbnRzLCB1c2luZyB0aGUgYWJvdmUgbmV3Cglhcmd1bWVudHMgdG8gY29udHJvbCBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiBvZiBtZW1vcnkgYW5kIHRoZQoJY29weWluZyBvZiBhbGxvY2F0ZWQgYXJyYXlzLgoJKiB0cmFucy1hcnJheS5jIChnZmNfYXJyYXlfYWxsb2NhdGUpOiBSZW1vdmUgb2xkIGlkZW50aWZpY2F0aW9uIAoJb2YgcG9pbnRlciBhbmQgcmVwbGFjZSB3aXRoIHRoYXQgb2YgYW4gYWxsb2NhdGFibGUgYXJyYXkuIEFkZAoJbnVsbGlmeSBvZiBzdHJ1Y3R1cmVzIHdpdGggYWxsb2NhdGFibGUgY29tcG9uZW50cy4gCgkoZ2ZjX2NvbnZfYXJyYXlfaW5pdGlhbGl6ZXIpOiBUcmVhdCBFWFBSX05VTEwuCgkoZ2ZjX2NvbnZfYXJyYXlfcGFyYW1ldGVyKTogRGVhbGxvY2F0ZSBhbGxvY2F0YWJsZSBjb21wb25lbnRzCglvZiBub24tdmFyaWFibGUgc3RydWN0dXJlcy4KCShnZmNfdHJhbnNfZGVhbGxvY19hbGxvY2F0ZWQpOiBVc2Ugc2Vjb25kIGFyZ3VtZW50IG9mIGxpYnJhcnkKCWRlYWxsb2NhdGUgdG8gaW5oaWJpdCwgd2l0aG91dCBlcnJvciwgZnJlZWluZyBOVUxMIHBvaW50ZXJzLgoJKGdldF9mdWxsX2FycmF5X3NpemUpOiBOZXcgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBzaXplIG9mIGEKCWZ1bGwgYXJyYXkuCgkoZ2ZjX2R1cGxpY2F0ZV9hbGxvY2F0YWJsZSk6IE5ldyBmdW5jdGlvbiB0byBhbGxvY2F0ZSBhbmQgY29weQoJYWxsb2NhdGVkIGRhdGEuCgkoc3RydWN0dXJlX2FsbG9jX2NvbXBzKTogTmV3IHJlY3Vyc2l2ZSBmdW5jdGlvbiB0byBkZWFsbG9jYXRlLAoJbnVsbGlmeSBvciBjb3B5IGFsbG9jYXRhYmxlIGNvbXBvbmVudHMuCgkoZ2ZjX251bGxpZnlfYWxsb2NfY29tcCwgZ2ZjX2RlYWxsb2NhdGVfYWxsb2NfY29tcCwKCWdmY19jb3B5X2FsbG9jX2NvbXApOiBOZXcgaW50ZXJmYWNlIGZ1bmN0aW9ucyB0byBjYWxsIHByZXZpb3VzLgoJKGdmY190cmFuc19kZWZlcnJlZF9hcnJheSk6IEFkZCB0aGUgY29kZSB0byBudWxsaWZ5IGFsbG9jYXRhYmxlCgljb21wb25lbnRzLCB3aGVuIGVudGVyaW5nIHNjb3BlLCBhbmQgdG8gZGVhbGxvY2F0ZSB0aGVtIG9uCglsZWF2aW5nLiBEbyBub3QgY2FsbCBnZmNfdHJhbnNfc3RhdGljX2FycmF5X3BvaW50ZXIgYW5kIHJldHVybgoJZm9yIHN0cnVjdHVyZXMgd2l0aCBhbGxvY2F0YWJsZSBjb21wb25lbnRzIGFuZCBkZWZhdWx0Cglpbml0aWFsaXplcnMuCgkqIHN5bWJvbC5jIChnZmNfc2V0X2NvbXBvbmVudF9hdHRyKTogU2V0IGFsbG9jYXRhYmxlIGZpZWxkLgoJKGdmY19nZXRfY29tcG9uZW50X2F0dHIpOiBTZXQgdGhlIGFsbG9jYXRhYmxlIGF0dHJpYnV0ZS4KCSogaW50cmluc2ljLmggOiBQcm90b3R5cGUgZm9yIGdmY19jaGVja19tb3ZlX2FsbG9jLgoJKiBkZWNsLmMgKGJ1aWxkX3N0cnVjdCk6IEFwcGx5IFRSMTU1ODEgY29uc3RyYWludHMgZm9yCglhbGxvY2F0YWJsZSBjb21wb25lbnRzLgoJKHZhcmlhYmxlX2RlY2wpOiBEZWZhdWx0IGluaXRpYWxpemVyIGlzIGFsd2F5cyBOVUxMIGZvcgoJYWxsb2NhdGFibGUgY29tcG9uZW50cy4KCShtYXRjaF9hdHRyX3NwZWMpOiBBbGxvdywgb3Igbm90LCBhbGxvY2F0YWJsZSBjb21wb25lbnRzLAoJYWNjb3JkaW5nIHRvIHRoZSBzdGFuZGFyZCBpbiBmb3JjZS4KCSogdHJhbnMtYXJyYXkuaCA6IFByb3RvdHlwZXMgZm9yIGdmY19udWxsaWZ5X2FsbG9jX2NvbXAsCglnZmNfZGVhbGxvY2F0ZV9hbGxvY19jb21wLCBnZmNfY29weV9hbGxvY19jb21wIGFuZAoJZ2ZjX2R1cGxpY2F0ZV9hbGxvY2F0YWJsZS4KCSogZ2ZvcnRyYW4udGV4aSA6IEFkZCBtZW50aW9uIG9mIFRSMTU1ODEgZXh0ZW5zaW9ucy4KCSogZ2ZvcnRyYW4uaCA6IEFkZCBhdHRyaWJ1dGUgYWxsb2NfY29tcCwgYWRkCglnZmNfY29tcG9uZW50cyBmaWVsZCBhbGxvY2F0YWJsZSBhbmQgYWRkIHRoZSBwcm90b3R5cGUKCWZvciBnZmNfZXhwcl90b19pbml0aWFsaXplLgoJKiB0cmFucy1zdG10LmMgKGdlbmVyYXRlX2xvb3BfZm9yX3RlbXBfdG9fbGhzLAoJZ2VuZXJhdGVfbG9vcF9mb3JfcmhzX3RvX3RlbXAsIGdmY190cmFuc193aGVyZV9hc3NpZ24sCglnZmNfdHJhbnNfd2hlcmVfMyk6IEFkZCBleHRyYSBhcmd1bWVudHMgdG8gY2FsbHMgdG8KCWdmY190cmFuc19zY2FsYXJfYXNzaWduIGFuZCBzZXQgYXBwcm9wcmlhdGVseS4KCShnZmNfdHJhbnNfYWxsb2NhdGUpOiBOdWxsaWZ5IGFsbG9jYXRhYmxlIGNvbXBvbmVudHMuCgkoZ2ZjX3RyYW5zX2RlYWxsb2NhdGUpOiBEZWFsbG9jYXRlIHRvIHVsdGltYXRlIGFsbG9jYXRhYmxlCgljb21wb25lbnRzIGJ1dCBzdG9wIGF0IHVsdGltYXRlIHBvaW50ZXIgY29tcG9uZW50cy4KCSogbW9kdWxlLmMgKG1pb19zeW1ib2xfYXR0cmlidXRlLCBtaW9fc3ltYm9sX2F0dHJpYnV0ZSwKCW1pb19jb21wb25lbnQpOiBBZGQgbW9kdWxlIHN1cHBvcnQgZm9yIGFsbG9jYXRhYmxlCgljb21wb25lbnRzLgoJKiB0cmFucy10eXBlcy5jIChnZmNfZ2V0X2Rlcml2ZWRfdHlwZSk6IFRyZWF0IGFsbG9jYXRhYmxlCgljb21wb25lbnRzLgoJKiB0cmFucy5oIDogQWRkIHR3byBib29sZWFuIGFyZ3VtZW50cyB0bwoJZ2ZjX3RyYW5zX3NjYWxhcl9hc3NpZ24uCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9zdHJ1Y3R1cmVfY29ucyk6IENoZWNrIGNvbmZvcm1hbmNlIG9mCgljb25zdHJ1Y3RvciBlbGVtZW50IGFuZCB0aGUgY29tcG9uZW50LgoJKHJlc29sdmVfYWxsb2NhdGVfZXhwcik6IEFkZCBleHByZXNzaW9uIHRvIG51bGxpZnkgdGhlCgljb25zdHJ1Y3RvciBleHByZXNzaW9uIGZvciBhbGxvY2F0YWJsZSBjb21wb25lbnRzLgoJKHJlc29sdmVfdHJhbnNmZXIpOiBJbmhpYml0IEkvTyBvZiBkZXJpdmVkIHR5cGVzIHdpdGgKCWFsbG9jYXRhYmxlIGNvbXBvbmVudHMuCgkocmVzb2x2ZV9mbF9kZXJpdmVkKTogU2tpcCBjaGVjayBvZiBib3VuZHMgb2YgYWxsb2NhdGFibGUKCWNvbXBvbmVudHMuCgkqIHRyYW5zLWRlY2wuYyAoZ2ZjX2dldF9zeW1ib2xfZGVjbCk6IEFkZCBkZXJpdmVkIHR5cGVzCgl3aXRoIGFsbG9jYXRhYmxlIGNvbXBvbmVudHMgdG8gZGVmZXJyZWQgdmFyaWFibGUuCgkoZ2ZjX3RyYW5zX2RlZmVycmVkX3ZhcnMpOiBNYWtlIGNhbGxzIGZvciBkZXJpdmVkIHR5cGVzCgl3aXRoIGFsbG9jYXRhYmxlIGNvbXBvbmVudHMgdG8gZ2ZjX3RyYW5zX2RlZmVycmVkX2FycmF5LgoJKGdmY19nZW5lcmF0ZV9mdW5jdGlvbl9jb2RlKTogTnVsbGlmeSBhbGxvY2F0YWJsZQoJY29tcG9uZW50IGZ1bmN0aW9uIHJlc3VsdCBvbiBlbnRyeS4KCSogcGFyc2UuYyAocGFyc2VfZGVyaXZlZCk6IFNldCBzeW1ib2wgYXR0ci5hbGxvY2F0YWJsZSBpZgoJYWxsb2NhdGFibGUgY29tcG9uZW50cyBhcmUgcHJlc2VudC4KCSogY2hlY2suYyAoZ2ZjX2NoZWNrX2FsbG9jYXRlZCk6IEVuZm9yY2UgYXR0ci5hbGxvY2F0YWJsZQoJZm9yIGludHJpbnNpYyBhcmd1bWVudHMuCgkoZ2ZjX2NoZWNrX21vdmVfYWxsb2MpOiBDaGVjayBhcmd1bWVudHMgb2YgbW92ZV9hbGxvYy4KCSogcHJpbWFyeS5jIChnZmNfdmFyaWFibGVfYXR0cik6IFNldCBhbGxvY2F0YWJsZSBhdHRyaWJ1dGUuCgkqIGludHJpbnNpYy50ZXhpIDogQWRkIGluZGV4IGVudHJ5IGFuZCBzZWN0aW9uIGZvcgoJZm9yIG1vdmVfYWxsb2MuCgoyMDA2LTEwLTA4ICBQYXVsIFRob21hcyA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yOTExNQoJKiByZXNvbHZlLmMgKHJlc29sdmVfc3RydWN0dXJlX2NvbnMpOiBJdCBpcyBhbiBlcnJvciBpZiB0aGUKCXBvaW50ZXIgY29tcG9uZW50IGVsZW1lbnRzIG9mIGEgZGVyaXZlZCB0eXBlIGNvbnN0cnVjdG9yIGFyZQoJbm90IHBvaW50ZXIgb3IgdGFyZ2V0LgoKCglQUiBmb3J0cmFuLzI5MjExCgkqIHRyYW5zLXN0bXQuYyAoZ2VuZXJhdGVfbG9vcF9mb3JfdGVtcF90b19saHMsCglnZW5lcmF0ZV9sb29wX2Zvcl9yaHNfdG9fdGVtcCk6IFByb3ZpZGUgYSBzdHJpbmcgbGVuZ3RoIGZvcgoJdGhlIHRlbXBvcmFyeSBieSBjb3B5aW5nIHRoYXQgb2YgdGhlIG90aGVyIHNpZGUgb2YgdGhlIHNjYWxhcgoJYXNzaWdubWVudC4KCjIwMDYtMTAtMDggIFRvYmlhcyBCdXJudXMgIDxidXJudXNAbmV0LWIuZGU+CgoJUFIgZm9ydHJhbi8yODU4NQoJKiBpbnRyaW5zaWMuYyAoYWRkX2Z1bmN0aW9ucyk6IEFkZCBuZXdfbGluZSBGb3J0cmFuIDIwMDMgaW50cmluc2ljLgoJKiBpbnRyaW5zaWMuaDogQWRkIGdmY19zaW1wbGlmeV9uZXdfbGluZSBhbmQgZ2ZjX2NoZWNrX25ld19saW5lCglwcm90b3R5cGVzLgoJKiBjaGVjay5jIChnZmNfY2hlY2tfbmV3X2xpbmUpOiBOZXcgZnVuY3Rpb24uCgkqIHNpbXBsaWZ5LmMgKGdmY19zaW1wbGlmeV9uZXdfbGluZSk6IE5ldyBmdW5jdGlvbi4KCSogaW50cmluc2ljLnRleGk6IERvY3VtZW50IG5ld19saW5lIGludHJpbnNpYy4KCjIwMDYtMTAtMDcgIEZyYW5jb2lzLVhhdmllciBDb3VkZXJ0ICA8Y291ZGVydEBjbGlwcGVyLmVucy5mcj4KCglQUiBmb3J0cmFuLzE2NTgwCglQUiBmb3J0cmFuLzI5Mjg4CgkqIGdjYy9mb3J0cmFuL2ludHJpbnNpYy5jIChhZGRfc3ltKTogRGVmaW5lIHRoZSBhY3R1YWxfb2sgd2hlbiBhCglnZmNfaW50cmluc2ljX3N5bSBzdHJ1Y3R1cmUgaXMgZmlsbGVkLgoJKGdmY19pbnRyaW5zaWNfYWN0dWFsX29rKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9zeW1fMHMsIGFkZF9zeW1fMXMsIGFkZF9zeW1fMnMsIGFkZF9zeW1fM3MsIGFkZF9zeW1fNHMsCglhZGRfc3ltXzVzKTogSW50cmluc2ljIHN1YnJvdXRpbmVzIGFyZSBub3QgYWxsb3dlZCBhcyBhY3R1YWwKCWFyZ3VtZW50cywgc28gd2UgcmVtb3ZlIGFyZ3VtZW50IGFjdHVhbF9vay4KCShhZGRfZnVuY3Rpb25zKTogQ29ycmVjdCB0aGUgdmFsdWVzIGZvciBhY3R1YWxfb2sgb2YgYWxsIGludHJpbnNpY3MuCglBZGQgY29tbWVudHMgZm9yIGdmY19jaGVja19hY2Nlc3NfZnVuYyBhbmQgZ2ZjX3Jlc29sdmVfaW5kZXhfZnVuYy4KCShhZGRfc3Vicm91dGluZXMpOiBSZW1vdmUgdGhlIGFjdHVhbF9vayBhcmd1bWVudCwgd2hpY2ggd2FzIG5ldmVyIHVzZWQuCgkqIGdjYy9mb3J0cmFuL2ludHJpbnNpYy5oIChnZmNfaW50cmluc2ljX2FjdHVhbF9vayk6IE5ldyBwcm90b3R5cGUuCgkqIGdjYy9mb3J0cmFuL2dmb3J0cmFuLmggKGdmY19yZXNvbHZlX2luZGV4X2Z1bmMpOiBOZXcgcHJvdG90eXBlLgoJKiBnY2MvZm9ydHJhbi9yZXNvbHZlLmMgKHJlc29sdmVfYWN0dWFsX2FyZ2xpc3QpOiBDaGVjayB3aGV0aGVyCglhbiBpbnRyaW5zaWMgdXNlZCBhcyBhbiBhcmd1bWVudCBsaXN0IGlzIGFsbG93ZWQgdGhlcmUuCgkqIGdjYy9mb3J0cmFuL2lyZXNvbHZlLmMgKGdmY19yZXNvbHZlX2luZGV4X2Z1bmMpOiBOZXcgZnVuY3Rpb24uCgkoZ2ZjX3Jlc29sdmVfbGVuKTogQ2hhbmdlIGludHJpbnNpYyBmdW5jdGlvbiBuYW1lIHRvIGFncmVlIHdpdGgKCWxpYmdmb3J0cmFuLgoJKiBnY2MvZm9ydHJhbi90cmFucy1kZWNsLmMgKGdmY19nZXRfZXh0ZXJuX2Z1bmN0aW9uX2RlY2wpOiBBZGQKCW5ldyBjYXNlLCBiZWNhdXNlIHNvbWUgc3BlY2lmaWMgaW50cmluc2ljcyB0YWtlIDMgYXJndW1lbnRzLgoJKiBnY2MvZm9ydHJhbi9pbnRyaW5zaWMudGV4aTogRElNQUcgaXMgYSBHTlUgZXh0ZW5zaW9uLgoKMjAwNi0xMC0wNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgZm9ydHJhbi8yODQxNQoJKiB0cmFucy1kZWNsLmMgKGdmY19maW5pc2hfdmFyX2RlY2wpOiBXaXRoIC1mbm8tYXV0b21hdGljLCBkb24ndAoJbWFrZSBhcnRpZmljaWFsIHZhcmlhYmxlcyBvciBwb2ludGVyIHRvIHZhcmlhYmxlIGF1dG9tYXRpYyBhcnJheQoJVFJFRV9TVEFUSUMuCgoJKiBzY2FubmVyLmMgKHNraXBfZnJlZV9jb21tZW50cyk6IFJldHVybiBib29sIGluc3RlYWQgb2Ygdm9pZC4KCShnZmNfbmV4dF9jaGFyX2xpdGVyYWwpOiBEb24ndCByZXR1cm4gJyAnIGlmICYgaXMgbWlzc2luZyBhZnRlcgoJISRvbXAgb3IgISQuICBVc2Ugc2tpcF97ZnJlZSxmaXhlZH1fY29tbWVudHMgZGlyZWN0bHkgaW5zdGVhZAoJb2YgZ2ZjX3NraXBfY29tbWVudHMuCgoyMDA2LTEwLTA0ICBCcm9va3MgTW9zZXMgIDxibW9zZXNAc3RhbmZvcmQuZWR1PgoKCSogZ2ZvcnRyYW4udGV4aTogKEN1cnJlbnQgU3RhdHVzKTogdXBkYXRlIGFuZCByZXdyaXRlIHRvIHJlZmxlY3QKCWFjdHVhbCBzdGF0dXMgbW9yZSBhY2N1cmF0ZWx5LgoKMjAwNi0xMC0wNCAgQnJvb2tzIE1vc2VzICA8Ym1vc2VzQHN0YW5mb3JkLmVkdT4KCgkqIGdmb3J0cmFuLnRleGk6IENvbnNpc3RlbnRseSByZWZlciB0byB0aGUgY29tcGlsZXIgYXMgIkdOVQoJRm9ydHJhbiIuCgkqIGludHJpbnNpYy50ZXhpOiBEaXR0by4KCSogaW52b2tlLnRleGk6IERpdHRvLgoKMjAwNi0xMC0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCSAgICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGY5NS1sYW5nLmMgKGdmY19pbml0X2J1aWx0aW5fZnVuY3Rpb25zKTogQWRkIF9fZW11dGxzX2dldF9hZGRyZXNzCglhbmQgX19lbXV0bHNfcmVnaXN0ZXJfY29tbW9uLgoJKiBvcGVubXAuYyAoZ2ZjX21hdGNoX29tcF90aHJlYWRwcml2YXRlKTogRG9uJ3QgZXJyb3IgaWYgIWhhdmVfdGxzLgoJKiB0cmFucy1jb21tb24uYyAoYnVpbGRfY29tbW9uX2RlY2wpOiBEb24ndCBjaGVjayBoYXZlX3Rscy4KCSogdHJhbnMtZGVjbC5jIChnZmNfZmluaXNoX3Zhcl9kZWNsKTogTGlrZXdpc2UuCgkqIHR5cGVzLmRlZiAoQlRfV09SRCwgQlRfRk5fUFRSX1BUUik6IE5ldy4KCShCVF9GTl9WT0lEX1BUUl9XT1JEX1dPUkRfUFRSKTogTmV3LgoKMjAwNi0xMC0wNCAgUGF1bCBUaG9tYXMgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjkzNDMKCSogcmVzb2x2ZS5jIChyZXNvbHZlX2FsbG9jYXRlX2V4cHIpOiBFeGNsdWRlIGRlcml2ZWQgdHlwZXMgZnJvbQoJc2VhcmNoIGZvciBkZXBlbmRlbmNlcyBiZXR3ZWVuIGFsbG9jYXRlZCB2YXJpYWJsZXMgYW5kIHRoZQoJc3BlY2lmaWNhdGlvbiBleHByZXNzaW9ucyBmb3Igb3RoZXIgYWxsb2NhdGlvbnMgaW4gdGhlIHNhbWUKCXN0YXRlbWVudC4KCjIwMDYtMTAtMDQgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yOTA5OAoJKiByZXNvbHZlLmMgKHJlc29sdmVfc3RydWN0dXJlX2NvbnMpOiBEbyBub3QgcmV0dXJuIEZBSUxVUkUgaWYKCWNvbXBvbmVudCBleHByZXNzaW9uIGlzIE5VTEwuCgoyMDA2LTEwLTAzICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjA3NzkKCVBSIGZvcnRyYW4vMjA4OTEKCSogcmVzb2x2ZS5jIChmaW5kX3N5bV9pbl9leHByKTogTmV3IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0cnVlCglpZiBhIHN5bWJvbCBpcyBmb3VuZCBpbiBhbiBleHByZXNzaW9uLgoJKHJlc29sdmVfYWxsb2NhdGVfZXhwcik6IENoZWNrIHdoZXRoZXIgdGhlIFNUQVQgdmFyaWFibGUgaXMKCWl0c2VsZiBhbGxvY2F0ZWQgaW4gdGhlIHNhbWUgc3RhdGVtZW50LiAgVXNlIHRoZSBjYWxsIGFib3ZlIHRvCgljaGVjayB3aGV0aGVyIGFueSBvZiB0aGUgYWxsb2NhdGVkIGFycmF5cyBhcmUgdXNlZCBpbiBhcnJheQoJc3BlY2lmaWNhdGlvbnMgaW4gdGhlIHNhbWUgc3RhdGVtZW50LgoKMjAwNi0xMC0wMyAgU3RldmVuIEcuIEthcmdsICA8a2FyZ2xAZ2NjLmdudS5vcmc+CgoJKiBhcml0aC5jIChnZmNfY2hlY2tfcmVhbF9yYW5nZSk6ICBVc2UgY29ycmVjdCBleHBvbmVudCByYW5nZSBmb3IKCXN1Ym5vcm1hbCBudW1iZXJzLgoKMjAwNi0xMC0wMyAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI5Mjg0CglQUiBmb3J0cmFuLzI5MzIxCglQUiBmb3J0cmFuLzI5MzIyCgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2NvbnZfZnVuY3Rpb25fY2FsbCk6IENoZWNrIHRoZSBleHByZXNzaW9uCglhbmQgdGhlIGZvcm1hbCBzeW1ib2wgYXJlIHByZXNlbnQgd2hlbiB0ZXN0aW5nIHRoZSBhY3R1YWwKCWFyZ3VtZW50LgoKCVBSIGZvcnRyYW4vMjUwOTEKCVBSIGZvcnRyYW4vMjUwOTIKCSogcmVzb2x2ZS5jIChyZXNvbHZlX2VudHJpZXMpOiBJdCBpcyBhbiBlcnJvciBpZiB0aGUgZW50cmllcwoJb2YgYW4gYXJyYXktdmFsdWVkIGZ1bmN0aW9uIGRvIG5vdCBoYXZlIHRoZSBzYW1lIHNoYXBlLgoKMjAwNi0xMC0wMyAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCVBSIG1pZGRsZS1lbmQvMjc0NzgKCSogdHJhbnMtZGVjbC5jIChnZmNfZ2V0X2Zha2VfcmVzdWx0X2RlY2wpOiBNYXJrIHZhciBhcwoJVFJFRV9BRERSRVNTQUJMRS4KCjIwMDYtMTAtMDIgIEplcnJ5IERlTGlzbGUgIDxqdmRlbGlzbGVAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8xOTI2MgoJKiBnZm9ydHJhbi5oIChnZmNfb3B0aW9uX3QpOiBBZGQgbWF4X2NvbnRpbnVlX2ZpeGVkIGFuZAoJbWF4X2NvbnRpbnVlX2ZyZWUuCgkqIG9wdGlvbnMuYyAoZ2ZjX2luaXRfb3B0aW9ucyk6IEluaXRpYWxpemUgZml4ZWQgZm9ybSBhbmQgZnJlZSBmb3JtCgljb25zZWN1dGl2ZSBjb250aW51YXRpb24gbGluZSBsaW1pdHMuCgkqIHNjYW5uZXIuYyAoZ2ZjX3NjYW5uZXJfaW5pdF8xKTogSW5pdGlhbGl6ZSBjb250aW51ZV9saW5lCglhbmQgY29udGludWVfY291bnQuIChnZmNfbmV4dF9jaGFyX2xpdGVyYWwpOiBDb3VudCB0aGUgbnVtYmVyIG9mCgljb250aW51YXRpb24gbGluZXMgaW4gdGhlIGN1cnJlbnQgc3RhdGVtZW50IGFuZCB3YXJuIGlmIGxpbWl0CglpcyBleGNlZWRlZC4KCjIwMDYtMTAtMDIgIEplcnJ5IERlTGlzbGUgIDxqdmRlbGlzbGVAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8xOTI2MAoJKiBzY2FubmVyLmMgKGdmY19uZXh0X2NoYXJfbGl0ZXJhbCk6IEFkZCBjaGVjayBmb3IgbWlzc2luZyAnJicKCWFuZCB3YXJuIGlmIGluX3N0cmluZywgb3RoZXJ3aXNlIHJldHVybiAnICcuCgoyMDA2LTEwLTAyICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJUFIgZm9ydHJhbi8yOTIxMAoJKiBwcmltYXJ5LmMgKG1hdGNoX3N5bV9jb21wbGV4X3BhcnQpOiBOYW1lZCBjb25zdGFudHMgYXMgcmVhbCBvcgoJaW1hZ2luYXJ5IHBhcnQgb2YgY29tcGxleCBhIG5hbWVkIGNvbnN0YW50IGFyZSBvbmx5IGFsbG93ZWQgaW4KCUZvcnRyYW4gMjAwMy4KCjIwMDYtMTAtMDEgIEJyb29rcyBNb3NlcyAgPGJtb3Nlc0BzdGFuZm9yZC5lZHU+CgoJKiBnZm9ydHJhbi50ZXhpOiBDb3JyZWN0ZWQgcmVmZXJlbmNlcyB0byBNQUxMT0MgaW50cmluc2ljLgoJKiBpbnZva2UudGV4aTogTWlub3IgY2xlYW51cCBhbmQgY2xhcmlmaWNhdGlvbiB0byB0aGUgRGlhbGVjdAoJT3B0aW9ucyBzZWN0aW9uLgoKMjAwNi0wOS0zMCAgQnJvb2tzIE1vc2VzICA8Ym1vc2VzQHN0YW5mb3JkLmVkdT4KCgkqIGludm9rZS50ZXhpOiAgQWRkIG1lbnRpb24gb2YgQk9aIGNvbnN0YW50cyBhbmQgaW50ZWdlcgoJb3ZlcmZsb3cgdG8gLWZuby1yYW5nZS1jaGVjay4KCSogZ2ZvcnRyYW4udGV4aTogIEFkZCBtZW50aW9uIG9mIC1mbm8tcmFuZ2UtY2hlY2sgdG8KCXNlY3Rpb24gb24gQk9aIGNvbnRhbnRzLgoKMjAwNi0wOS0zMCAgQmVybmhhcmQgRmlzY2hlciAgPGFsZG90QGdjYy5nbnUub3JnPgoKCSogcmVzb2x2ZS5jOiBGaXggY29tbWVudGFyeSB0eXBvLiAgRml4IHdoaXRlc3BhY2UuCgoyMDA2LTA5LTI4ICBTdGV2ZW4gRy4gS2FyZ2wgIDxrYXJnbEBnY2MuZ251Lm9yZz4KCglmb3J0cmFuLzI5MTQ3CgkqIGFyaXRoLmMgKGdmY19jaGVja19pbnRlZ2VyX3JhbmdlKTogRGlzYWJsZSByYW5nZSBjaGVja2luZyB2aWEKCS1mbm8tcmFuZ2UtY2hlY2suCgoyMDA2LTA5LTI4ICBTdGV2ZW4gRy4gS2FyZ2wgPGthcmdsQGdjYy5nbnUub3JnPgoKCSogYXJpdGguYzogQ2hhbmdlIGNvbmRpdGlvbmFsIHRlc3QgZm9yIGluY2x1c2lvbiBvZiBhcmN0YW5nZW50KCkuCgkoZ2ZjX2NoZWNrX3JlYWxfcmFuZ2UpOiBDaGFuZ2UgY29uZGl0aW9uYWwgdGVzdCBmb3IgdXNlIG9mCgltcGZyX3N1Ym5vcm1hbGl6ZS4KCSogc2ltcGxpZnkuYyAoZ2ZjX3NpbXBsaWZ5X2F0YW4yKTogRml4IGNvbmRpdGlvbmFsIGZvciB1c2Ugb2YKCW1wZnJfYXRhbjIoKSBpbnN0ZWFkIG9mIGFyY3RhbmdlbnQoKS4KCShnZmNfc2ltcGxpZnlfZXhwb25lbnQpOiBGaXggY29uZGl0aW9uYWwgZm9yIHVzZSBvZiBtcGZyX2dldF9leHAoKS4KIAkoZ2ZjX3NpbXBsaWZ5X2xvZyk6IEZpeCBjb25kaXRpb25hbCBmb3IgdXNlIG9mIG1wZnJfYXRhbjIoKSBpbnN0ZWFkCgkgb2YgYXJjdGFuZ2VudCgpLgoJKGdmY19zaW1wbGlmeV9uZWFyZXN0KTogRml4IGNvbmRpdGlvbmFsIGZvciB1c2Ugb2YgbXBmcl9uZXh0YWZ0ZXIoKS4gCgoyMDA2LTA5LTI3ICBTdGV2ZW4gRy4gS2FyZ2wgIDxrYXJnbEBnY2MuZ251Lm9yZz4KCgkqIGFyaXRoLmM6IENvbmRpdGlvbmFsbHkgaW5jbHVkZSBhcmN0YW5nZW50MigpLgoJKGdmY19jaGVja19yZWFsX3JhbmdlKTogVXNlIG1wZnJfc3Vibm9ybWFsaXplIGluIHByZWZlcmVuY2UgdG8gbG9jYWwKCWhhY2suCgkqIHRyYW5zLWludHJpbnNpYy5jIChnZmNfZ2V0X2ludHJpbnNpY19saWJfZm5kZWNsKTogQXBwZW5kCglsIGZvciBsb25nIGRvdWJsZSBmdW5jdGlvbnMuCgkqIHNpbXBsaWZ5LmM6IFdyYXAgQ29weXJpZ2h0IHRvIG5ldyBsaW5lLgoJKGdmY19zaW1wbGlmeV9hdGFuMik6IFVzZSBtcGZyX2F0YW4yIGluIHByZWZlcmVuY2UgdG8gYXJjdGFuZ2VudDIoKS4KCShnZmNfc2ltcGxpZnlfbG9nKTogRGl0dG8uCgoKCVBSIGZvcnRyYW4vMjgyNzYKCSogc2ltcGxpZnkuYyAoZ2ZjX3NpbXBsaWZ5X2V4cG9uZW50KTogVXNlIG1wZnJfZ2V0X2V4cCBpbgoJcHJlZmVyZW5jZSB0byBicm9rZW4gbG9jYWwgaGFjay4KCglQUiBmb3J0cmFuLzI3MDIxCgkqIHNpbXBsaWZ5LmMgKGdmY19zaW1wbGlmeV9uZWFyZXN0KTogVXNlIG1wZnJfbmV4dHRvd2FyZCBhbmQKCW1wZnJfc3Vibm9ybWFsaXplIHRvIGhhbmRsZSBudW1iZXJzIG5lYXIgemVybyBpbiBwcmVmZXJlbmNlIHRvIGJyb2tlbgoJIGxvY2FsIGhhY2suCgoyMDA2LTA5LTI2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBmb3J0cmFuLzI5MDk3CgkqIHNjYW5uZXIuYyAoaW5jbHVkZV9saW5lKTogSGFuZGxlIGNvbmRpdGlvbmFsIGluY2x1ZGUuCgoyMDA2LTA5LTI1ICBUb2JpYXMgU2NobHV0ZXIgIDx0b2JpYXMuc2NobHVldGVyQHBoeXNpay51bmktbXVlbmNoZW4uZGU+CgoJUFIgZm9ydHJhbi8yMTIwMwoJKiBlcnJvci5jIChzaG93X2xvY2kpOiBObyBuZWVkIHRvIHJpc2sgYW4gSUNFIHRvIG91dHB1dCBhCglzbGlnaHRseSBuaWNlciBlcnJvciBtZXNzYWdlLgoKMjAwNi0wOS0xOSBQYXVsIFRob21hcyA8cGF1bHRAZ2NjLmdudS5vcmc+CgkgICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yOTEwMQoJKiB0cmFucy1zdG10LmMgKGdmY190cmFuc19jaGFyYWN0ZXJfc2VsZWN0KTogU3RvcmUgdGhlIGxhYmVsCglmcm9tIHNlbGVjdF9zdHJpbmcgYW5kIHRoZW4gY2xlYW4gdXAgYW55IHRlbXBvcmFyaWVzIGZyb20gdGhlCgljb252ZXJzaW9uIG9mIHRoZSBzZWxlY3QgZXhwcmVzc2lvbiwgYmVmb3JlIGJyYW5jaGluZyB0byB0aGUKCXNlbGVjdGVkIGNhc2UuCgoyMDA2LTA5LTE4IFBhdWwgVGhvbWFzIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI4NTI2CgkqIHByaW1hcnkuYyAobWF0Y2hfdmFyaWFibGUpOiBJZiB0aGUgY29tcGlsZXIgaXMgaW4gYSBtb2R1bGUKCXNwZWNpZmljYXRpb24gYmxvY2ssIGFuIGludGVyZmFjZSBibG9jayBvciBhIGNvbnRhaW5zIHNlY3Rpb24sCglyZXNldCBob3N0X2ZsYWcgdG8gZm9yY2UgdGhlIGNoYW5nZWQgc3ltYm9scyBtZWNoYW5pc20uCgoJUFIgZm9ydHJhbi8yOTEwMQoJKiB0cmFucy1zdG10LmMgKGdmY190cmFuc19jaGFyYWN0ZXJfc2VsZWN0KTogQWRkIHRoZSBwb3N0IGJsb2NrCglmb3IgdGhlIGV4cHJlc3Npb24gdG8gdGhlIG1haW4gYmxvY2ssIGFmdGVyIHRoZSBjYWxsIHRvCglzZWxlY3Rfc3RyaW5nIGFuZCB0aGUgbGFzdCBsYWJlbC4KCjIwMDYtMDktMTggIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yOTA2MAoJKiBpcmVzb2x2ZS5jIChyZXNvbHZlX3NwcmVhZCk6IEJ1aWxkIHNoYXBlIGZvciByZXN1bHQgaWYgdGhlCglzb3VyY2Ugc2hhcGUgaXMgYXZhaWxhYmxlIGFuZCBkaW0gYW5kIG5jb3BpZXMgYXJlIGNvbnN0YW50cy4KCjIwMDYtMDktMTggIFRvYmlhcyBTY2hswoH8dGVyICA8dG9iaWFzLnNjaGx1ZXRlckBwaHlzaWsudW5pLW11ZW5jaGVuLmRlPgoKCVBSIGZvcnRyYW4vMjg4MTcKCVBSIGZvcnRyYW4vMjE5MTgKCSogdHJhbnMtZGVjbC5jIChnZW5lcmF0ZV9sb2NhbF9kZWNsKTogQ2hhbmdlIGZyb20gJ3dhcm5pbmcnIHRvCgknZ2ZjX3dhcm5pbmcnIHRvIGhhdmUgbGluZSBudW1iZXJzIGNvcnJlY3RseSByZXBvcnRlZC4KCjIwMDYtMDktMTUgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yOTA1MQoJKiBkZWNsLmMgKG1hdGNoX29sZF9zdHlsZV9pbml0KTogU2V0IHRoZSAnd2hlcmUnIGZpZWxkIG9mIHRoZQoJZ2ZjX2RhdGEgc3RydWN0dXJlICduZXdkYXRhJy4KCgkqIG1hdGNoLmMgKG1hdGNoX2Nhc2VfZW9zKTogQWRkIGEgY29tcHJlaGVuc2libGUgZXJyb3IgbWVzc2FnZS4KCjIwMDYtMDktMTMgIFdvbGZnYW5nIEdlbGxlcmljaCAgPGdlbGxlcmljaEBkZS5pYm0uY29tPgoKCSogdHJhbnMtZXhwci5jIChnZmNfYWRkX2ludGVyZmFjZV9tYXBwaW5nKTogRm9yIGNoYXJhY3RlcnMsIGRlcmVmZXJlbmNlCglwb2ludGVyIGlmIG5lY2Vzc2FyeSBhbmQgdGhlbiBwZXJmb3JtIHRoZSBjYXN0LgoKMjAwNi0wOS0xMSAgU3RldmVuIEcuIEthcmdsICA8a2FyZ2xAZ2NjLmdudS5vcmc+CgoJKiBpbnRyaW5zaWMuYzogVXBkYXRlIENvcHlyaWdodCBkYXRlLgoJKiBpbnRyaW5zaWMuaDogRGl0dG8uCgoyMDA2LTA5LTExICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjg4OTAKCSogdHJhbnMtZXhwci5jIChnZmNfY29udl9mdW5jdGlvbl9jYWxsKTogT2J0YWluIHRoZSBzdHJpbmcgbGVuZ3RoCglvZiBhIGR1bW15IGNoYXJhY3RlcigqKSBmdW5jdGlvbiBmcm9tIHRoZSBzeW1ib2wgaWYgaXQgaXMgbm90CglhbHJlYWR5IHRyYW5zbGF0ZWQuICBGb3IgYSBjYWxsIHRvIGEgY2hhcmFjdGVyKCopIGZ1bmN0aW9uLCB1c2UKCXRoZSBwYXNzZWQsIGhpZGRlbiBzdHJpbmcgbGVuZ3RoIGFyZ3VtZW50LCB3aGljaCBpcyBhdmFpbGFibGUKCWZyb20gdGhlIGJhY2tlbmRfZGVjbCBvZiB0aGUgZm9ybWFsIGFyZ3VtZW50LgoJKiByZXNvbHZlLmMgKHJlc29sdmVfZnVuY3Rpb24pOiBJdCBpcyBhbiBlcnJvciBpZiBhIGZ1bmN0aW9uIGNhbGwKCXRvIGEgY2hhcmFjdGVyKCopIGZ1bmN0aW9uIGlzIG90aGVyIHRoYW4gYSBkdW1teSBwcm9jZWR1cmUgb3IKCWFuIGludHJpbnNpYy4KCjIwMDYtMDktMTAgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yODk1OQoJKiB0cmFucy10eXBlcy5jIChnZmNfZ2V0X2Rlcml2ZWRfdHlwZSk6IFVzZSB0aGUgcGFyZW50IG5hbWVzcGFjZSBvZgoJdGhlIHByb2NlZHVyZSBpZiB0aGUgdHlwZSdzIG93biBuYW1lc3BhY2UgZG9lcyBub3QgaGF2ZSBhIHBhcmVudC4KCjIwMDYtMDktMTAgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yODkyMwoJKiBleHByLmMgKGZpbmRfYXJyYXlfc2VjdGlvbik6IE9ubHkgdXNlIHRoZSBhcnJheSBsb3dlciBhbmQgdXBwZXIKCWJvdW5kcyBmb3IgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHNlY3Rpb25zLCB3aGVyZSB0aGUgZXhwciBpcwoJTlVMTC4KCjIwMDYtMDktMTAgIFBhdWwgVGhvbWFzIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI4OTE0CgkqIHRyYW5zLWFycmF5LmMgKGdmY190cmFuc19hcnJheV9jb25zdHJ1Y3Rvcl92YWx1ZSk6IENyZWF0ZSBhIHRlbXBvcmFyeQoJbG9vcCB2YXJpYWJsZSB0byBob2xkIHRoZSBjdXJyZW50IGxvb3AgdmFyaWFibGUgaW4gY2FzZSBpdCBpcyBtb2RpZmllZAoJYnkgdGhlIGFycmF5IGNvbnN0cnVjdG9yLgoKMjAwNi0wOS0wNyAgU3RldmVuIEcuIEthcmdsICA8a2FyZ2xzQGNvbWNhc3QubmV0PgoKCSogZ2ZvcnRyYW4uaCAoZ2ZjX2ludGVnZXJfaW5mbyk6IEVsaW1pbmF0ZSBtYXhfaW50LgoJKiBhcml0aC5jIChnZmNfYXJpdGhfaW5pdF8xKTogUmVtb3ZlIGluaXRpYWxpemF0aW9uIG9mIG1heF9pbnQuCgkoZ2ZjX2FyaXRoX2RvbmVfMSk6IFJlbW92ZSBjbGVhcmluZyBvZiBtYXhfaW50LgoJKGdmY19jaGVja19pbnRlZ2VyX3JhbmdlKTogRml4IHJhbmdlIGNoZWtjaW5nIG9mIG92ZXJmbG93LgoJKiBzaW1wbGlmeS5jIChnZmNfc2ltcGxpZnlfbm90KTogQ29uc3RydWN0IG1hc2sgdGhhdCB3YXMgbWF4X2ludC4KCjIwMDYtMDktMDUgIFBhdWwgVGhvbWFzIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI4OTA4CgkqIGdmb3J0cmFuLmggOiBSZXN0b3JlIHRoZSBnZmNfZHRfbGlzdCBzdHJ1Y3R1cmUgYW5kIHJlZmVyZW5jZQoJdG8gaXQgaW4gZ2ZjX25hbWVzcGFjZS4KCSogcmVzb2x2ZS5jIChyZXNvbHZlX2ZsX2Rlcml2ZWQpOiBSZXN0b3JlIHRoZSBidWlsZGluZyBvZiB0aGUKCWxpc3Qgb2YgZGVyaXZlZCB0eXBlcyBmb3IgdGhlIGN1cnJlbnQgbmFtZXNwYWNlLiBNb2RpZnkgdGhlCglyZXN0b3JlZCBjb2RlIHNvIHRoYXQgYSBjaGVjayBpcyBtYWRlIHRvIHNlZSBpZiB0aGUgc3ltYm9sIGlzCglhbHJlYWR5IGluIHRoZSBsaXN0LgoJKHJlc29sdmVfZm50eXBlKTogTWFrZSBzdXJlIHRoYXQgdGhlIHNwZWNpZmljYXRpb24gYmxvY2sKCXZlcnNpb24gb2YgdGhlIGRlcml2ZWQgdHlwZSBpcyB1c2VkIGZvciBhIG1vZHVsZSBmdW5jdGlvbiB0aGF0CglyZXR1cm5zIHRoYXQgdHlwZS4gCgkqIHN5bWJvbC5jIChnZmNfZnJlZV9kdF9saXN0KTogUmVzdG9yZS4KCShnZmNfZnJlZV9uYW1lc3BhY2UpOiBSZXN0b3JlIGNhbGwgdG8gcHJldmlvdXMuCgkqIHRyYW5zLXR5cGVzLmMgKGNvcHlfZHRfZGVjbHNfaWZlcXVhbCk6IFJlc3RvcmUuCgkoZ2ZjX2dldF9kZXJpdmVkX3R5cGUpOiBSZXN0b3JlIGFsbCB0aGUgcGFyYXBoZW5hbGlhIGZvcgoJYXNzb2NpYXRpb24gb2YgZGVyaXZlZCB0eXBlcywgaW5jbHVkaW5nIGNhbGxzIHRvIHByZXZpb3VzLgoJTW9kaWZ5IHRoZSByZXN0b3JlZCBjb2RlIHN1Y2ggdGhhdCBhbGwgZGVyaXZlZCB0eXBlcyBhcmUgYnVpbHQKCWlmIHRoZWlyIHN5bWJvbHMgYXJlIGZvdW5kIGluIHRoZSBwYXJlbnQgbmFtZXNwYWNlOyBub3QganVzdAoJbm9uLW1vZHVsZSB0eXBlcy4gIEFkZCBiYWNrZW5kX2RlY2xzIHRvIGxpa2UgZGVyaXZlZCB0eXBlcyBpbgoJc2libGluZyBuYW1lc3BhY2VzLCBhcyB3ZWxsIGFzIHRoYXQgb2YgdGhlIGRlcml2ZWQgdHlwZS4KCjIwMDYtMDgtMzAgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogbWF0Y2guYzogRml4IGEgY29tbWVudCB0eXBvLgoKMjAwNi0wOC0zMCAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI4ODg1CgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2NvbnZfYWxpYXNlZF9hcmcpOiBFbnN1cmUgdGhhdCB0aGUgdGVtcAoJZGVjbGFyYXRpb24gaXMgcmV0YWluZWQgZm9yIElOVEVOVChPVVQpIGFyZ3VtZW50cy4KCglQUiBmb3J0cmFuLzI4ODczCglQUiBmb3J0cmFuLzIwMDY3CgkqIHJlc29sdmUuYyAocmVzb2x2ZV9nZW5lcmljX2YpOiBNYWtlIGVycm9yIG1lc3NhZ2UgbW9yZQoJY29tcHJlaGVuc2libGUuCgkocmVzb2x2ZV9nZW5lcmljX3MpOiBSZXN0cnVjdHVyZSBzZWFyY2ggZm9yIHNwZWNpZmljIHByb2NlZHVyZXMKCXRvIGJlIHNpbWlsYXIgdG8gcmVzb2x2ZV9nZW5lcmljX2YgYW5kIGNoYW5nZSB0byBzaW1pbGFyIGVycm9yCgltZXNzYWdlLiAgRW5zdXJlIHRoYXQgc3ltYm9sIHJlZmVyZW5jZSBpcyByZWZyZXNoZWQsIGluIGNhc2UKCXRoZSBzZWFyY2ggcHJvZHVjZXMgYSBOVUxMLgoJKHJlc29sdmVfc3BlY2lmaWNfcyk6IFJlc3RydWN0dXJlIHNlYXJjaCwgYXMgYWJvdmUgYW5kIGFzCglyZXNvbHZlX3NwZWNpZmljX2YuIEVuc3VyZSB0aGF0IHN5bWJvbCByZWZlcmVuY2UgaXMgcmVmcmVzaGVkLAoJaW4gY2FzZSB0aGUgc2VhcmNoIHByb2R1Y2VzIGEgTlVMTC4KCglQUiBmb3J0cmFuLzI1MDc3CglQUiBmb3J0cmFuLzI1MTAyCgkqIGludGVyZmFjZS5jIChjaGVja19vcGVyYXRvcl9pbnRlcmZhY2UpOiBUaHJvdyBlcnJvciBpZiB0aGUKCWludGVyZmFjZSBhc3NpZ25tZW50IHRyaWVzIHRvIGNoYW5nZSBpbnRyaW5zaWMgdHlwZSBhc3NpZ21lbnRzCglvciBoYXMgbGVzcyB0aGFuIHR3byBhcmd1bWVudHMuICBBbHNvLCBpdCBpcyBhbiBlcnJvciBpZiBhbgoJaW50ZXJmYWNlIG9wZXJhdG9yIGNvbnRhaW5zIGFuIGFsdGVybmF0ZSByZXR1cm4uCgoJUFIgZm9ydHJhbi8yNDg2NgoJKiBwYXJzZS5jIChnZmNfZml4dXBfc2libGluZ19zeW1ib2xzKTogRG8gbm90IG1vZGlmeSB0aGUgc3ltYm9sCglpZiBpdCBpcyBhIGR1bW15IGluIHRoZSBjb250YWluZWQgbmFtZXNwYWNlLgoKMjAwNi0wOC0yOSAgU3RldmVuIEcuIEthcmdsICA8a2FyZ2xzQGNvbWNhc3QubmV0PgoKCVBSIGZvcnRyYW4vMjg4NjYKCSogbWF0Y2guYzogV3JhcCBjb3B5cmlnaHQuCgkoZ2ZjX21hdGNoX2Fzc2lnbm1lbnQpOiAgUmV0dXJuIE1BVENIX05PIGZvciBmYWlsZWQgbHZhbHVlLiAgUmVtb3ZlCglnb3Rvcy4gIE1vdmUgZXJyb3IgaGFuZGxpbmcgb2YgRkxfUEFSQU1FVEVSIHRvIC4uLgoJKiBnZmNfbWF0Y2hfaWY6IERlYWwgd2l0aCBNQVRDSF9OTyBmcm9tIGFib3ZlLgoJKiBwcmltYXJ5LmM6IFdyYXAgY29weXJpZ2h0LgoJKG1hdGNoX3ZhcmlhYmxlKTogLi4uIGhlcmUuICBJbXByb3ZlIGVycm9yIG1lc3NhZ2VzLgoKMjAwNi0wOC0yOSAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI4Nzg4CgkqIHN5bWJvbC5jIChnZmNfdXNlX2Rlcml2ZWQpOiBOZXZlciBlbGltaW5hdGUgdGhlIHN5bWJvbCwKCWZvbGxvd2luZyByZWFzc29jaWF0aW9uIG9mIHVzZSBhc3NvY2lhdGVkIGRlcml2ZWQgdHlwZXMuCgoyMDA2LTA4LTI2ICBTdGV2ZW4gRy4gS2FyZ2wgIDxrYXJnbHNAY29tY2FzdC5uZXQ+CgoJKiBhcml0aC5oOiBVcGRhdGUgQ29weXJpZ2h0IGRhdGVzLiAgRml4IHdoaXRlc3BhY2UuCgkqIGFyaXRoLmM6IFVwZGF0ZSBDb3B5cmlnaHQgZGF0ZXMuICBGaXggd2hpdGVzcGFjZS4gIEZpeCBjb21tZW50cy4KCShnZmNfYXJpdGhfZG9uZV8xKTogQ2xlYW4gdXAgcGVkYW50aWNfbWluX2ludCBhbmQgc3Vibm9ybWFsLgoKMjAwNi0wOC0yNiAgVG9iaWFzIEJ1cm51cyAgPGJ1cm51c0BuZXQtYi5kZT4KCgkqIGdmb3J0cmFuLnRleGk6IE5vdGUgdmFyaWFibGUgaW5pdGlhbGl6YXRpb24gY2F1c2VzIFNBVkUgYXR0cmlidXRlLgoJKiBpbnRyaW5zaWMudGV4aTogQ2xhcmlmeSBzdXBwb3J0IGZvciBLSU5EPTE2IGFuZCBLSU5EPTEwLgoJTWVudGlvbiAtc3RkPWYyMDAzLiAgQ3Jvc3MgcmVmZXJlbmNlIElOUVVJUkUgZnJvbSBBQ0NFU1MgaW50cmluc2ljLgoJQWRkIG1pc3NpbmcgKSBpbiBBQ09TLgoKMjAwNi0wOC0yNiAgRGFuaWVsIEZyYW5rZSAgPGZyYW5rZS5kYW5pZWxAZ21haWwuY29tPgoKCSogaW50cmluc2ljLnRleGk6IFVwZGF0ZSBDb3B5cmlnaHQgZGF0ZS4gIEFkZGVkIGRvY3VtZW50YXRpb24KCWZvciBBQ09TSCwgQU5ELCBBU0lOSCwgQVRBTkgsIENIRElSLCBGR0VULCBGR0VUQywgRlBVVCwgRlBVVEMsCglHRVRDV0QsIE9SIGFuZCBYT1IgaW50cmluc2ljcywgcmVtb3ZlZCBpbmFkdmVydGVudGx5IGludHJvZHVjZWQKCWRvYy1zdHVicyBmb3IgRVFWIGFuZCBORVFWLCBjb3JyZWN0ZWQgc29tZSB0eXBvZ3JhcGhpY2FsIGVycm9ycy4KCjIwMDYtMDgtMjQgIERhbmllbCBGcmFua2UgIDxmcmFua2UuZGFuaWVsQGdtYWlsLmNvbT4sCgkgICAgQnJvb2tzIE1vc2VzICA8Ym1vc2VzQHN0YW5mb3JkLmVkdT4KCgkqIGludHJpbnNpYy50ZXhpOiBBZGRlZCBkb2Mtc3R1YnMgZm9yIHVuZG9jdW1lbnRlZCBpbnRyaW5zaWNzLAoJYWRkZWQgYSAiU2VlIEFsc28iIHNlY3Rpb24sIHJlbmFtZWQgdGhlICJPcHRpb25zIiBzZWN0aW9uIHRvCgkiU3RhbmRhcmQiLCBpbXByb3ZlZCB0aGUgaW5kZXgsIGFuZCBtYWRlIG51bWVyb3VzIG1pbm9yCgl0eXBvIGNvcnJlY3Rpb25zIGFuZCBncmFtbWF0aWNhbCBmaXhlcy4KCjIwMDYtMDgtMjQgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yODc4OAoJKiBzeW1ib2wuYyAoc2hpZnRfdHlwZXMpOiBTaGlmdCB0aGUgZGVyaXZlZCB0eXBlIHJlZmVyZW5jZXMgaW4KCWZvcm1hbCBuYW1lc3BhY2VzLgoJKGdmY191c2VfZGVyaXZlZCk6IFJldHVybiBpZiB0aGUgZGVyaXZlZCB0eXBlIHN5bWJvbCBpcyBhbHJlYWR5CglpbiBhbm90aGVyIG5hbXNwYWNlLiAgQWRkIHNlYXJjaGVzIGZvciB0aGUgZGVyaXZlZCB0eXBlIGluCglzaWJsaW5nIG5hbWVzcGFjZXMuCgoJUFIgZm9ydHJhbi8yODc3MQoJKiBkZWNsLmMgKGFkZF9pbml0X2V4cHJfdG9fc3ltKTogUmVzdG9yZSB0aGUgb3JpZ2luYWwgYnV0CglyZXN0cmljdGVkIHRvIHBhcmFtZXRlciBhcnJheXMgdG8gZml4IGEgcmVncmVzc2lvbi4KCjIwMDYtMDgtMjMgIFN0ZXZlbiBHLiBLYXJnbCAgPGthcmdsc0Bjb21jYXN0Lm5ldD4KCgkqIGdmb3J0cmFuLnRleGk6ICBGaXggbGFzdCBjb21taXQgd2hlcmUgYSAibm8iIHdhcyBkZWxldGVkIGFuZAoJYSBncmFtbWF0aWNhbCBlcnJvciB3YXMgaW50cm9kdWNlZC4KCjIwMDYtMDgtMjMgIFN0ZXZlbiBHLiBLYXJnbCAgPGthcmdsc0Bjb21jYXN0Lm5ldD4KCgkqIGdmb3J0cmFuLnRleGk6ICBTcGVsbCBjaGVjay4gIEFkZCBhIGZldyBjb250cmlidXRvcnMgdG8KCUNoYXB0ZXIgOS4gIEV4cGFuZCB0aGUgZGVzY3JpcHRpb24gb2YgQk9aIGNvbnN0YW50IGhhbmRsaW5nLgoKMjAwNi0wOC0yMCAgSmFubmUgQmxvbXF2aXN0ICA8amJAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNTgyOAoJKiBnZm9ydHJhbi50ZXhpOiBNZW50aW9uIFNUUkVBTSBJL08gYW1vbmcgc3VwcG9ydGVkIEYyMDAzCglmZWF0dXJlcy4KCjIwMDYtMDgtMjAgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yODYwMQoJUFIgZm9ydHJhbi8yODYzMAoJKiBnZm9ydHJhbi5oIDogRWxpbWluYXRlIGdmY19kdF9saXN0IHN0cnVjdHVyZSBhbmQgcmVmZXJlbmNlCgl0byBpdCBpbiBnZmNfbmFtZXNwYWNlLgoJKiByZXNvbHZlLmMgKHJlc29sdmVfZmxfZGVyaXZlZCk6IFJlbW92ZSB0aGUgYnVpbGRpbmcgb2YgdGhlCglsaXN0IG9mIGRlcml2ZWQgdHlwZXMgZm9yIHRoZSBjdXJyZW50IG5hbWVzcGFjZS4KCSogc3ltYm9sLmMgKGZpbmRfcmVuYW1lZF90eXBlKTogTmV3IGZ1bmN0aW9uIHRvIGZpbmQgcmVuYW1lZAoJZGVyaXZlZCB0eXBlcyBieSBzeW1ib2wgbmFtZSByYXRoZXIgdGhhbiBzeW10cmVlIG5hbWUuCgkoZ2ZjX3VzZV9kZXJpdmVkKTogU2VhcmNoIHBhcmVudCBuYW1lc3BhY2UgZm9yIGlkZW50aWNhbAoJZGVyaXZlZCB0eXBlIGFuZCB1c2UgaXQsIGV2ZW4gaWYgbG9jYWwgdmVyc2lvbiBpcyBjb21wbGV0ZSwKCWV4Y2VwdCBpbiBpbnRlcmZhY2UgYm9kaWVzLiBFbnN1cmUgdGhhdCByZW5hbWVkIGRlcml2ZWQgdHlwZXMKCWFyZSBmb3VuZCBieSBjYWxsIHRvIGZpbmRfcmVuYW1lZF90eXBlLiBSZWN1cnNlIGZvciBkZXJpdmVkCgl0eXBlIGNvbXBvbmVudHMuCgkoZ2ZjX2ZyZWVfZHRfbGlzdCk6IFJlbW92ZS4KCShnZmNfZnJlZV9uYW1lc3BhY2UpOiBSZW1vdmUgY2FsbCB0byBwcmV2aW91cy4KCSogdHJhbnMtdHlwZXMuYyAoY29weV9kdF9kZWNsc19pZmVxdWFsKTogUmVtb3ZlLgoJKGdmY19nZXRfZGVyaXZlZF90eXBlKTogUmVtb3ZlIGFsbCB0aGUgcGFyYXBoZW5hbGlhIGZvcgoJYXNzb2NpYXRpb24gb2YgZGVyaXZlZCB0eXBlcywgaW5jbHVkaW5nIGNhbGxzIHRvIHByZXZpb3VzLgoJKiBtYXRjaC5jIChnZmNfbWF0Y2hfYWxsb2NhdGUpOiBDYWxsIGdmY191c2VfZGVyaXZlZCB0bwoJYXNzb2NpYXRlIGFueSBkZXJpdmVkIHR5cGVzIHRoYXQgYXJlIGJlaW5nIGFsbG9jYXRlZC4KCglQUiBmb3J0cmFuLzIwODg2CgkqIHJlc29sdmUuYyAocmVzb2x2ZV9hY3R1YWxfYXJnbGlzdCk6IFRoZSBwYXNzaW5nIG9mCglhIGdlbmVyaWMgcHJvY2VkdXJlIG5hbWUgYXMgYW4gYWN0dWFsIGFyZ3VtZW50IGlzIGFuCgllcnJvci4KCglQUiBmb3J0cmFuLzI4NzM1CgkqIHJlc29sdmUuYyAocmVzb2x2ZV92YXJpYWJsZSk6IENoZWNrIGZvciBhIHN5bXRyZWUgYmVmb3JlCglyZXNvbHZpbmcgcmVmZXJlbmNlcy4KCglQUiBmb3J0cmFuLzI4NzYyCgkqIHByaW1hcnkuYyAobWF0Y2hfdmFyaWFibGUpOiBSZXR1cm4gTUFUQ0hfTk8gaWYgdGhlIHN5bWJvbAoJaXMgdGhhdCBvZiB0aGUgcHJvZ3JhbS4KCglQUiBmb3J0cmFuLzI4NDI1CgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX3RyYW5zX3N1YmNvbXBvbmVudF9hc3NpZ24pOiBUcmFuc2xhdGUKCWRlcml2ZWQgdHlwZSBjb21wb25lbnQgZXhwcmVzc2lvbnMgb3RoZXIgdGhhbiBhbm90aGVyIGRlcml2ZWQKCXR5cGUgY29uc3RydWN0b3IuCgoJUFIgZm9ydHJhbi8yODQ5NgoJKiBleHByLmMgKGZpbmRfYXJyYXlfc2VjdGlvbik6IENvcnJlY3QgZXJyb3JzIGluCgl0aGUgaGFuZGxpbmcgb2YgYSBtaXNzaW5nIHN0YXJ0IHZhbHVlIGZvciB0aGUKCWluZGV4IHRyaXBsZXQgaW4gYW4gYXJyYXkgcmVmZXJlbmNlLgoKCVBSIGZvcnRyYW4vMTgxMTEKCSogdHJhbnMtZGVjbC5jIChnZmNfYnVpbGRfZHVtbXlfYXJyYXlfZGVjbCk6IEJlZm9yZSByZXNldHRpbmcKCXJlZmVyZW5jZSB0byBiYWNrZW5kX2RlY2wsIHNldCBpdCBERUNMX0FSVElGSUNJQUwuCgkoZ2ZjX2dldF9zeW1ib2xfZGVjbCk6IExpa2V3aXNlIGZvciBvcmlnaW5hbCBkdW1teSBkZWNsLCB3aGVuCglhIGNvcHkgaXMgbWFkZSBvZiBhbiBhcnJheS4KCShjcmVhdGVfZnVuY3Rpb25fYXJnbGlzdCk6IExpa2V3aXNlIGZvciB0aGUgX2VudHJ5IHBhcmFtdGVyCglpbiBlbnRyeV9tYXN0ZXJzLgoJKGJ1aWxkX2VudHJ5X3RodW5rcyk6IExpa2V3aXNlIGZvciBkdW1taWVzIGluIGVudHJ5IHRodW5rcy4KCglQUiBmb3J0cmFuLzI4NjAwCgkqIHRyYW5zLWRlY2wuYyAoZ2ZjX2dldF9zeW1ib2xfZGVjbCk6IEVuc3VyZSB0aGF0IHRoZQoJREVDTF9DT05URVhUIG9mIHRoZSBsZW5ndGggb2YgYSBjaGFyYWN0ZXIgZHVtbXkgaXMgdGhlCglzYW1lIGFzIHRoYXQgb2YgdGhlIHN5bWJvbCBkZWNsYXJhdGlvbi4KCglQUiBmb3J0cmFuLzI4NzcxCgkqIGRlY2wuYyAoYWRkX2luaXRfZXhwcl90b19zeW0pOiBSZW1vdmUgc2V0dGluZyBvZiBjaGFybGVuIGZvcgoJYW4gaW5pdGlhbGl6ZXIgb2YgYW4gYXNzdW1lZCBjaGFybGVuIHZhcmlhYmxlLgoKCVBSIGZvcnRyYW4vMjg2NjAKCSogdHJhbnMtZGVjbC5jIChnZW5lcmF0ZV9leHByX2RlY2xzKTogTmV3IGZ1bmN0aW9uLgoJKGdlbmVyYXRlX2RlcGVuZGVuY3lfZGVjbGFyYXRpb25zKTogTmV3IGZ1bmN0aW9uLgoJKGdlbmVyYXRlX2xvY2FsX2RlY2wpOiBDYWxsIHByZXZpb3VzIGlmIG5vdCBlaXRoZXIgYSBkdW1teSBvcgoJYSBkZWNsYXJhdGlvbiBpbiBhbiBlbnRyeSBtYXN0ZXIuCgoyMDA2LTA4LTE5ICBFcmlrIEVkZWxtYW5uICA8ZWVkZWxtYW5AZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNTIxNwoJKiByZXNvbHZlLmMgKHJlc29sdmVfZmxfdmFyaWFibGUpOiBTZXQgYSBkZWZhdWx0IGluaXRpYWxpemVyIGZvcgoJZGVyaXZlZCB0eXBlcyB3aXRoIElOVEVOVChPVVQpIGV2ZW4gaWYgJ2ZsYWcnIGlzIHRydWUuCgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2NvbnZfZnVuY3Rpb25fY2FsbCk6IEluc2VydCBjb2RlIHRvCglyZWluaXRpYWxpemUgSU5URU5UKE9VVCkgYXJndW1lbnRzIG9mIGRlcml2ZWQgdHlwZSB3aXRoIGRlZmF1bHQKCWluaXRpYWxpemVycy4KCjIwMDYtMDgtMTUgIEplcnJ5IERlTGlzbGUgIDxqdmRlbGlzbGVAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNTgyOAoJKiBnZm9ydHJhbi5oOiBBZGQgbmV3IHBvaW50ZXIgZm9yIHN0cmVhbSBwb3NpdGlvbiB0byBzdF9pbnF1aXJlLgoJUmVuYW1lIGdmY19sYXJnZV9pb19pbnRfa2luZCB0byBnZmNfaW50aW9fa2luZC4KCSogdHJhbnMtdHlwZXMuYyAoZ2ZjX2luaXRfa2luZHMpOiB1c2UgZ2ZjX2ludGlvX2tpbmQuCgkqIGlvLmM6IEFkZCBuZXcgSU8gdGFnIGZvciBmaWxlIHBvc2l0aW9uIGdvaW5nIGluIGFuZCBhbm90aGVyIGZvciBvdXQuCgkobWF0Y2hfZHRfZWxlbWVudCk6IE1hdGNoIG5ldyB0YWdfc3Bvcy4KCShnZmNfcmVzb2x2ZV9kdCk6IFJlc29sdmUgbmV3IHRhZ19zcG9zLgoJKGdmY19mcmVlX2lucXVpcmUpOiBGcmVlIGlucXVpcmUtPnN0cm1fcG9zLgoJKG1hdGNoX2lucXVpcmVfZWxlbWVudCk6IE1hdGNoIG5ldyB0YWdfc3RybV9vdXQuCgkoZ2ZjX3Jlc29sdmVfaW5xdWlyZSk6IFJlc29sdmUgbmV3IHRhZ19zdHJtX291dC4KCSogdHJhbnMtaW8uYzogUmVuYW1lIElPUEFSTV90eXBlX2xhcmdlX2lvX2ludCB0byBJT1BBUk1fdHlwZV9pbnRpby4KCShnZmNfYnVpbGRfc3RfcGFyYW1ldGVyKTogU2FtZS4KCShnZmNfYnVpbGRfaW9fbGlicmFyeV9mbmRlY2xzKSBTYW1lLiBhbmQgYWRkIGJ1aWxkIHBvaW50ZXIgdHlwZSBwaW50aW8uCgkoZ2ZjX3RyYW5zX2lucXVpcmUpOiBUcmFuc2xhdGUgc3RybV9wb3MgZm9yIGlucXVpcmUuCgkqIGlvcGFybS5kZWY6IFJlb3JkZXIgZmxhZ3MgdG8gYWNjb21vZGF0ZSBhZGRpdGlvbiBvZiBuZXcgaW5xdWlyZQoJZmxhZyBmb3Igc3RybV9wb3Nfb3V0IGFuZCBhZGQgaXQgaW4uCgoyMDA2LTA4LTA2ICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjg1OTAKCSogcGFyc2UuYyAocGFyc2VfZGVyaXZlZCk6IFJlbW92ZSB0aGUgdGVzdCBmb3Igc2VxdWVuY2UgdHlwZQoJY29tcG9uZW50cyBvZiBhIHNlcXVlbmNlIHR5cGUuCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9mbF9kZXJpdmVkKTogUHV0IHRoZSB0ZXN0IGhlcmUgc28gdGhhdAoJcG9pbnRlciBjb21wb25lbnRzIGFyZSB0ZXN0ZWQuCgoyMDA2LTA4LTA1ICBTdGV2ZW4gRy4gS2FyZ2wgPGthcmdsc0Bjb21jYXN0Lm50PgoKCVBSIGZvcnRyYW4vMjg1NDgKCSogcmVzb2x2ZS5jKHJlc29sdmVfZWxlbWVudGFsX2FjdHVhbCk6IEFkZCBmbGFncy5oIHRvIHVzZSAtcGVkYW50aWMKCWFuZCBleGNsdWRlIGNvbnZlcnNpb24gZnVuY3Rpb25zIGluIGNvbmRpdGlvbmFsLiAgQ2hhbmdlIGdmY19lcnJvcgoJdG8gZ2ZjX3dhcm5pbmcuCgkod2Fybl91bnVzZWRfbGFiZWwpIFJlbmFtZSB0byAuLi4KCSh3YXJuX3VudXNlZF9mb3J0cmFuX2xhYmVsKSBhdm9pZCB3YXJuX3VudXNlZF9sYWJlbCBpbiBmbGFncy5oLgoKMjAwNi0wNy0zMCAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCSogaW50cmluc2ljLmMgKGFkZF9mdW5jdGlvbnMpOiBBZGQgQUNDRVNTLCBDSE1PRCwgUlNISUZULCBMU0hJRlQuCgkoYWRkX3N1YnJvdXRpbmVzKTogQWRkIExUSU1FLCBHTVRJTUUgYW5kIENITU9ELgoJKiBpbnRyaW5zaWMuaCAoZ2ZjX2NoZWNrX2FjY2Vzc19mdW5jLCBnZmNfY2hlY2tfY2htb2QsCglnZmNfY2hlY2tfY2htb2Rfc3ViLCBnZmNfY2hlY2tfbHRpbWVfZ210aW1lLCBnZmNfc2ltcGxpZnlfcnNoaWZ0LAoJZ2ZjX3NpbXBsaWZ5X2xzaGlmdCwgZ2ZjX3Jlc29sdmVfYWNjZXNzLCBnZmNfcmVzb2x2ZV9jaG1vZCwKCWdmY19yZXNvbHZlX3JzaGlmdCwgZ2ZjX3Jlc29sdmVfbHNoaWZ0LCBnZmNfcmVzb2x2ZV9jaG1vZF9zdWIsCglnZmNfcmVzb2x2ZV9nbXRpbWUsIGdmY19yZXNvbHZlX2x0aW1lKTogQWRkIHByb3RvdHlwZXMuCgkqIGdmb3J0cmFuLmggKGdmY19nZW5lcmljX2lzeW1faWQpOiBBZGQgR0ZDX0lTWU1fQUNDRVNTLAoJR0ZDX0lTWU1fQ0hNT0QsIEdGQ19JU1lNX0xTSElGVCwgR0ZDX0lTWU1fUlNISUZULgoJKiBpcmVzb2x2ZS5jIChnZmNfcmVzb2x2ZV9hY2Nlc3MsIGdmY19yZXNvbHZlX2NobW9kLAoJZ2ZjX3Jlc29sdmVfcnNoaWZ0LCBnZmNfcmVzb2x2ZV9sc2hpZnQsIGdmY19yZXNvbHZlX2NobW9kX3N1YiwKCWdmY19yZXNvbHZlX2dtdGltZSwgZ2ZjX3Jlc29sdmVfbHRpbWUpOiBOZXcgZnVuY3Rpb25zLgoJKiBjaGVjay5jIChnZmNfY2hlY2tfYWNjZXNzX2Z1bmMsIGdmY19jaGVja19jaG1vZCwKCWdmY19jaGVja19jaG1vZF9zdWIsIGdmY19jaGVja19sdGltZV9nbXRpbWUpOiBOZXcgZnVuY3Rpb25zLgoJKiB0cmFucy1pbnRyaW5zaWMuYyAoZ2ZjX2NvbnZfaW50cmluc2ljX3Jsc2hpZnQpOiBOZXcgZnVuY3Rpb24uCgkoZ2ZjX2NvbnZfaW50cmluc2ljX2Z1bmN0aW9uKTogQWRkIGNhc2VzIGZvciB0aGUgbmV3IEdGQ19JU1lNXyouCgoyMDA2LTA3LTI4ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogTWFrZS1sYW5nLmluOiBVc2UgJChIRUFERVJfSCkgaW5zdGVhZCBvZiBoZWFkZXIuaCBpbiBkZXBlbmRlbmNpZXMuCgoyMDA2LTA3LTI2ICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJKiBpbnRyaW5zaWMuYyAoYWRkX2Z1bmN0aW9ucyk6IEFkZCBJTlQyLCBTSE9SVCwgSU5UOCwgTE9ORywKCUxTVEFULCBNQ0xPQ0sgYW5kIE1DTE9DSzggaW50cmluc2ljIGZ1bmN0aW9ucy4KCShhZGRfc3Vicm91dGluZXMpOiBBZGQgTFNUQVQgaW50cmluc2ljIHN1YnJvdXRpbmUuCgkqIGdmb3J0cmFuLmggKGdmY19nZW5lcmljX2lzeW1faWQpOiBBZGQgR0ZDX0lTWU1fSU5UMiwKCUdGQ19JU1lNX0lOVDgsIEdGQ19JU1lNX0xPTkcsIEdGQ19JU1lNX0xTVEFULCBHRkNfSVNZTV9NQ0xPQ0sKCWFuZCBHRkNfSVNZTV9NQ0xPQ0s4LgoJKiBpcmVzb2x2ZS5jIChnZmNfcmVzb2x2ZV9pbnQyLCBnZmNfcmVzb2x2ZV9pbnQ4LAoJZ2ZjX3Jlc29sdmVfbG9uZywgZ2ZjX3Jlc29sdmVfbHN0YXQsIGdmY19yZXNvbHZlX21jbG9jaywKCWdmY19yZXNvbHZlX21jbG9jazgsIGdmY19yZXNvbHZlX2xzdGF0X3N1Yik6IE5ldyBmdW5jdGlvbnMuCgkqIGNoZWNrLmMgKGdmY19jaGVja19pbnRjb252KTogTmV3IGZ1bmN0aW9uLgoJKiB0cmFucy1pbnRyaW5zaWMuYyAoZ2ZjX2NvbnZfaW50cmluc2ljX2Z1bmN0aW9uKTogQWRkIGNhc2VzIGZvcgoJdGhlIGFkZGVkIEdGQ19JU1lNXyouCgkqIHNpbXBsaWZ5LmMgKGdmY19zaW1wbGlmeV9pbnRjb252LCBnZmNfc2ltcGxpZnlfaW50MiwKCWdmY19zaW1wbGlmeV9pbnQ4LCBnZmNfc2ltcGxpZnlfbG9uZyk6IE5ldyBmdW5jdGlvbnMuCgkqIGludHJpbnNpYy5oIChnZmNfY2hlY2tfaW50Y29udiwgZ2ZjX3NpbXBsaWZ5X2ludDIsCglnZmNfc2ltcGxpZnlfaW50OCwgZ2ZjX3NpbXBsaWZ5X2xvbmcsIGdmY19yZXNvbHZlX2ludDIsCglnZmNfcmVzb2x2ZV9pbnQ4LCBnZmNfcmVzb2x2ZV9sb25nLCBnZmNfcmVzb2x2ZV9sc3RhdCwKCWdmY19yZXNvbHZlX21jbG9jaywgZ2ZjX3Jlc29sdmVfbWNsb2NrOCwgZ2ZjX3Jlc29sdmVfbHN0YXRfc3ViKToKCUFkZCBwcm90b3R5cGVzLgoKMjAwNi0wNy0yNCAgRXJpayBFZGVsbWFubiAgPGVlZGVsbWFuQGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjg0MTYKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX2NvbnZfYXJyYXlfcGFyYW1ldGVyKTogR2l2ZSBzcGVjaWFsIHRyZWF0bWVudCBmb3IKCUFMTE9DQVRBQkxFcyBpZiB0aGV5IGFyZSB0aGVtc2VsdmVzIGR1bW15IHZhcmlhYmxlcy4KCjIwMDYtMDctMjMgIEplcnJ5IERlTGlzbGUgIDxqdmRlbGlzbGVAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNTI4OQoJKiBnZm9ydHJhbi5oOiBEZWNsYXJlIGdmY19sYXJnZV9pb19pbnRfa2luZC4KCSogdHJhbnMtdHlwZXMuYyAoZ2ZjX2luaXRfa2luZHMpOiBTZXQgZ2ZjX2xhcmdlX2lvX2ludF9raW5kCgl0byBzaXplIDggb3IgNC4KCSogdHJhbnMtaW8uYyAoZW51bSBpb2ZpZWxkX3R5cGUpOiBBZGQgbGFyZ2VfaW9faW50IHR5cGUuCgkoZ2ZjX2J1aWxkX3N0X3BhcmFtZXRlcik6IFNhbWUuCgkoZ2ZjX2J1aWxkX2lvX2xpYnJhcnlfZm5kZWNscyk6IFNhbWUuCgkqIGlvcGFybV9kZWY6IFVzZSBsYXJnZV9pb19pbnQgdG8gZGVmaW5lIHJlYy4KCjIwMDYtMDctMjIgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4gCgoJUFIgZm9ydHJhbi8yODQzOQoJKiB0cmFucy1zdG10LmMgKGdmY190cmFuc19hcml0aG1ldGljX2lmKTogRXZhbHVhdGUgdGhlIGNvbmRpdGlvbiBvbmNlLgoKMjAwNi0wNy0xNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgZm9ydHJhbi8yODM5MAoJKiB0cmFucy1vcGVubXAuYyAoZ2ZjX3RyYW5zX29tcF9kbyk6IExvb2sgZm9yIExBU1RQUklWQVRFIGluCgljb2RlLT5leHAub21wX2NsYXVzZXMgcmF0aGVyIHRoYW4gaW4gdGhlIDNyZCBmdW5jdGlvbiBhcmd1bWVudC4KCjIwMDYtMDctMTYgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yODM4NAoJKiB0cmFucy1jb21tb24uYyAodHJhbnNsYXRlX2NvbW1vbik6IElmIGNvbW1vbl9zZWdtZW50IGlzIE5VTEwKCWVtaXQgZXJyb3IgdGhhdCBjb21tb24gYmxvY2sgZG9lcyBub3QgZXhpc3QuCgoJUFIgZm9ydHJhbi8yMDg0NAoJKiBpby5jIChjaGVja19pb19jb25zdHJhaW50cyk6IEl0IGlzIGFuIGVycm9yIGlmIGFuIEFEVkFOQ0UKCXNwZWNpZmllciBhcHBlYXJzIHdpdGhvdXQgYW4gZXhwbGljaXQgZm9ybWF0LgoKCVBSIGZvcnRyYW4vMjgyMDEKCSogcmVzb2x2ZS5jIChyZXNvbHZlX2dlbmVyaWNfcyk6IEZvciBhIHVzZV9hc3NvY2lhdGVkIGZ1bmN0aW9uLAoJZG8gbm90IHNlYXJjaCBmb3IgYW4gYWx0ZXJuYXRpdmUgc3ltYm9sIGluIHRoZSBwYXJlbnQgbmFtZQoJc3BhY2UuCgoJUFIgZm9ydHJhbi8yMDg5MwoJKiByZXNvbHZlLmMgKHJlc29sdmVfZWxlbWVudGFsX2FjdHVhbCk6IE5ldyBmdW5jdGlvbiB0IGNvbWJpbmUKCWFsbCB0aGUgY2hlY2tzIG9mIGVsZW1lbnRhbCBwcm9jZWR1cmUgYWN0dWFsIGFyZ3VtZW50cy4gSW4KCWFkZGl0aW9uLCBjaGVjayBvZiBhcnJheSB2YWx1ZWQgb3B0aW9uYWwgYXJncyh0aGlzIFBSKSBoYXMKCWJlZW4gYWRkZWQuCgkocmVzb2x2ZV9mdW5jdGlvbiwgcmVzb2x2ZV9jYWxsKTogUmVtb3ZlIHBhcnRzIHRoYXQgdHJlYXRlZAoJZWxlbWVudGFsIHByb2NlZHVyZSBhY3R1YWwgYXJndW1lbnRzIGFuZCBjYWxsIHRoZSBhYm92ZS4KCjIwMDYtMDctMTQgIFN0ZXZlbiBHLiBLYXJnbCAgPGthcmdsc0Bjb21jYXN0Lm5ldD4KCgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX3RyYW5zX3N0cmluZ19jb3B5KTogRXZhbHVhdGUgdGhlIHN0cmluZyBsZW5ndGhzCgowMDYtMDctMTMgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yODM1MwoJKiB0cmFucy1leHByLmMgKGdmY19jb252X2FsaWFzZWRfYXJnKTogTWlzc2luZyBmb3JtYWwgYXJnIG1lYW5zCgl0aGF0IGludGVudCBpcyBJTk9VVCAoZml4ZXMgcmVncmVzc2lvbikuCgoJUFIgZm9ydHJhbi8yNTA5NwoJKiBjaGVjay5jIChjaGVja19wcmVzZW50KTogVGhlIG9ubHkgcGVybWl0dGVkIHJlZmVyZW5jZSBpcyBhCglmdWxsIGFycmF5IHJlZmVyZW5jZS4KCglQUiBmb3J0cmFuLzIwOTAzCgkqIGRlY2wuYyAodmFyaWFibGVfZGVjbCk6IEFkZCBlcnJvciBpZiBhIGRlcml2ZWQgdHlwZSBpcyBub3QKCWZyb20gdGhlIGN1cnJlbnQgbmFtZXNwYWNlIGlmIHRoZSBuYW1lc3BhY2UgaXMgYW4gaW50ZXJmYWNlCglib2R5LgoKMjAwNi0wNy0xMiAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCVBSIGZvcnRyYW4vMjgxNjMKCSogdHJhbnMtZXhwci5jIChnZmNfdHJhbnNfc3RyaW5nX2NvcHkpOiBHZW5lcmF0ZSBpbmxpbmUgY29kZQoJdG8gcGVyZm9ybSBzdHJpbmcgY29weWluZyBpbnN0ZWFkIG9mIGNhbGxpbmcgYSBsaWJyYXJ5IGZ1bmN0aW9uLgoJKiB0cmFucy1kZWNsLmMgKGdmY19idWlsZF9pbnRyaW5zaWNfZnVuY3Rpb25fZGVjbHMpOiBEb24ndCBidWlsZAoJZGVjbCBmb3IgY29weV9zdHJpbmcuCgkqIHRyYW5zLmggKGdmb3JfZm5kZWNsX2NvcHlfc3RyaW5nKTogUmVtb3ZlIHByb3RvdHlwZS4KCjIwMDYtMDctMTEgIEZlbmcgV2FuZyAgPGZlbmd3YW5nQG51ZHQuZWR1LmNuPgoKCVBSIGZvcnRyYW4vMjgyMTMKCSogdHJhbnMtaW8uYyAodHJhbnNmZXJfZXhwcik6IERlYWwgd2l0aCBIb2xsZXJpdGggY29uc3RhbnRzIHVzZWQgaW4KCUkvTyBsaXN0LgoKMjAwNi0wNy0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbnRyaW5zaWMudGV4aTogRml4IHR5cG9zLgoKMjAwNi0wNy0wNyAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI4MjM3CglQUiBmb3J0cmFuLzIzNDIwCgkqIGlvLmMgKHJlc29sdmVfdGFnKTogQW55IGludGVnZXIgdGhhdCBpcyBub3QgYW4gYXNzaWduZWQKCXZhcmlhYmxlIGlzIGFuIGVycm9yLgoKMjAwNi0wNy0wNiAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCVBSIGZvcnRyYW4vMjgxMjkKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX3RyYW5zX2FycmF5X2JvdW5kX2NoZWNrKTogQWRkIGEgbG9jdXMKCWFyZ3VtZW50LCBhbmQgdXNlIGl0IGluIHRoZSBlcnJvciBtZXNzYWdlcy4KCShnZmNfY29udl9hcnJheV9pbmRleF9vZmZzZXQpOiBEb25jIHBlcmZvcm0gYm91bmRzIGNoZWNraW5nIG9uCgl0aGUgbGFzdCBkaW1lbnNpb24gb2YgYXNzdW1lZC1zaXplIGFycmF5cy4KCjIwMDYtMDctMDYgIEZyYW5jb2lzLVhhdmllciBDb3VkZXJ0ICA8Y291ZGVydEBjbGlwcGVyLmVucy5mcj4KCglQUiBmb3J0cmFuLzI3ODc0CgkqIHRyYW5zLXN0bXQuYyAoY29tcHV0ZV9pbm5lcl90ZW1wX3NpemUpOiBEb24ndCBwZXJmb3JtIGJvdW5kcwoJY2hlY2tpbmcgd2hlbiBjYWxjdWxhdGluZyB0aGUgYm91bmRzIG9mIHNjYWxhcml6YXRpb24uCgoyMDA2LTA3LTA1ICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJUFIgZm9ydHJhbi8yMDg5MgoJKiBpbnRlcmZhY2UuYyAoZ2ZjX21hdGNoX2ludGVyZmFjZSk6IERvbid0IGFsbG93IGR1bW15IHByb2NlZHVyZXMKCXRvIGhhdmUgYSBnZW5lcmljIGludGVyZmFjZS4KCjIwMDYtMDctMDQgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yODE3NAoJKiB0cmFucy1hcnJheS5jIChnZmNfY29udl9leHByX2Rlc2NyaXB0b3IpOiBXaGVuIGJ1aWxkaW5nIHRlbXAsCgllbnN1cmUgdGhhdCB0aGUgc3Vic3RyaW5nIHJlZmVyZW5jZSB1c2VzIGEgbmV3IGNoYXJsZW4uCgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2NvbnZfYWxpYXNlZF9hcmcpOiBBZGQgdGhlIGZvcm1hbCBpbnRlbnQgdG8KCXRoZSBhcmd1bWVudCBsaXN0LCBsaWZ0IHRoZSB0cmVhdG1lbnQgb2YgbWlzc2luZyBzdHJpbmcgbGVuZ3RocwoJZnJvbSB0aGUgYWJvdmUgYW5kIGltcGxlbWVudCB0aGUgdXNlIG9mIHRoZSBpbnRlbnQuCgkoZ2ZjX2NvbnZfZnVuY3Rpb25fY2FsbCk6IEFkZCB0aGUgZXh0cmEgYXJndW1lbnQgdG8gdGhlIGNhbGwgdG8KCXRoZSBhYm92ZS4KCglQUiBmb3J0cmFuLzI4MTY3CgkqIHRyYW5zLWFycmF5LmMgKGdldF9hcnJheV9jdG9yX3Zhcl9zdHJsZW4pOiBUcmVhdCBhIGNvbnN0YW50CglzdWJzdHJpbmcgcmVmZXJlbmNlLgoJKiBhcnJheS5jIChnZmNfcmVzb2x2ZV9jaGFyYWN0ZXJfYXJyYXlfY29uc3RydWN0b3IpOiBSZW1vdmUgCglzdGF0aWMgYXR0cmlidXRlIGFuZCBhZGQgdGhlIGdmY18gcHJlZml4LCBtYWtlIHVzZSBvZiBlbGVtZW50CgljaGFybGVucyBmb3IgdGhlIGV4cHJlc3Npb24gYW5kIHBpY2sgdXAgY29uc3RhbnQgc3RyaW5nIGxlbmd0aHMKCWZvciBleHByZXNzaW9ucyB0aGF0IGFyZSBub3QgdGhlbXNlbHZlcyBjb25zdGFudC4KCSogZ2ZvcnRyYW4uaCA6IHJlc29sdmVfY2hhcmFjdGVyX2FycmF5X2NvbnN0cnVjdG9yIHByb3RvdHlwZQoJYWRkZWQuCgkqIHJlc29sdmUuYyAoZ2ZjX3Jlc29sdmVfZXhwcik6IENhbGwgcmVzb2x2ZV9jaGFyYWN0ZXJfYXJyYXlfCgljb25zdHJ1Y3RvciBhZ2FpbiBhZnRlciBleHBhbmRpbmcgdGhlIGNvbnN0cnVjdG9yLCB0byBlbnN1cmUKCXRoYXQgdGhlIGNoYXJhY3RlciBsZW5ndGggaXMgcGFzc2VkIHRvIHRoZSBleHByZXNzaW9uLgoKMjAwNi0wNy0wNCAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoJICAgIERhbmllbCBGcmFua2UgIDxmcmFua2UuZGFuaWVsQGdtYWlsLmNvbT4KCgkqIGludHJpbnNpYy5jIChhZGRfc3Vicm91dGluZXMpOiBBZGQgSVRJTUUgYW5kIElEQVRFLgoJKiBpbnRyaW5zaWMuaCAoZ2ZjX2NoZWNrX2l0aW1lX2lkYXRlLGdmY19yZXNvbHZlX2lkYXRlLAoJZmNfcmVzb2x2ZV9pdGltZSk6IE5ldyBwcm90b3MuCgkqIGlyZXNvbHZlLmMgKGdmY19yZXNvbHZlX2l0aW1lLCBnZmNfcmVzb2x2ZV9pZGF0ZSk6IE5ldyBmdW5jdGlvbnMuCgkqIGNoZWNrLmMgKGdmY19jaGVja19pdGltZV9pZGF0ZSk6IE5ldyBmdW5jdGlvbi4KCSogaW50cmluc2ljLnRleGk6IERvY3VtZW50IHRoZSBuZXcgaW50cmluc2ljcy4KCjIwMDYtMDctMDMgIEZyYW5jb2lzLVhhdmllciBDb3VkZXJ0ICA8Y291ZGVydEBjbGlwcGVyLmVucy5mcj4KCgkqIGludHJpbnNpY3MvZGF0ZV9hbmRfdGltZS5jIChpdGltZTAsaWRhdGUwLGl0aW1lX2k0LGl0aW1lX2k4LAoJaWRhdGVfaTQsaWRhdGVfaTgpOiBOZXcgZnVuY3Rpb25zLgoKCjIwMDYtMDctMDMgIEFzaGVyIExhbmd0b24gIDxsYW5ndG9uMkBsbG5sLmdvdj4KCgkqIGRlY2wuYyAobWF0Y2hfb2xkX3N0eWxlX2luaXQpOiBBZGQgZGF0YSBhdHRyaWJ1dGUgdG8gc3ltYm9sLgoKMjAwNi0wNy0wMyAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCSogaXJlc29sdmUuYyAoZ2ZjX3Jlc29sdmVfY3B1X3RpbWUsIGdmY19yZXNvbHZlX3JhbmRvbV9udW1iZXIpOgoJUmVtb3ZlIEFUVFJJQlVURV9VTlVTRUQgZm9yIHVzZWQgYXJndW1lbnQuCgoyMDA2LTA3LTAzICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJKiBpbnRyaW5zaWMudGV4aTogRG9jdW1lbnQgbmV3IGludHJpbnNpY3MuCgoyMDA2LTA3LTAxICBUb2JpYXMgU2NobMKB/HRlciAgPHRvYmlhcy5zY2hsdWV0ZXJAcGh5c2lrLnVuaS1tdWVuY2hlbi5kZT4KCglQUiBmb3J0cmFuLzE5MjU5CgkqIHBhcnNlLmMgKG5leHRfZnJlZSk6IEVycm9yIG91dCBvbiBsaW5lIHN0YXJ0aW5nIHdpdGggc2VtaWNvbG9uLgoJKG5leHRfZml4ZWQpOiBGaXggZm9ybWF0dGluZy4gIEVycm9yIG91dCBvbiBsaW5lIHN0YXJ0aW5nIHdpdGgKCXNlbWljb2xvbi4KCjIwMDYtMDYtMzAgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY2hlY2suYzogRml4IGEgY29tbWVudCB0eXBvLgoKMjAwNi0wNi0yNSAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI1MDU2CgkqIGludGVyZmFjZS5jIChjb21wYXJlX2FjdHVhbF9mb3JtYWwpOiBTaWduYWwgYW4gZXJyb3IgaWYgdGhlIGZvcm1hbAoJYXJndW1lbnQgaXMgYSBwdXJlIHByb2NlZHVyZSBhbmQgdGhlIGFjdHVhbCBpcyBub3QgcHVyZS4KCglQUiBmb3J0cmFuLzI3NTU0CgkqIHJlc29sdmUuYyAocmVzb2x2ZV9hY3R1YWxfYXJnbGlzdCk6IElmIHRoZSB0eXBlIG9mIHByb2NlZHVyZQoJcGFzc2VkIGFzIGFuIGFjdHVhbCBhcmd1bWVudCBpcyBub3QgYWxyZWFkeSBkZWNsYXJlZCwgc2VlIGlmIGl0IGlzCglhbiBpbnRyaW5zaWMuCgoJUFIgZm9ydHJhbi8yNTA3MwoJKiByZXNvbHZlLmMgKHJlc29sdmVfc2VsZWN0KTogVXNlIGJpdHMgMSBhbmQgMiBvZiBhIG5ldyBpbnQgdG8KCWtlZXAgdHJhY2sgb2YgIHRoZSBhcHBlYXJhbmNlIG9mIGNvbnN0YW50IGxvZ2ljYWwgY2FzZSBleHByZXNzaW9ucy4KCVNpZ25hbCBhbiBlcnJvciBpcyBlaXRoZXIgdmFsdWUgYXBwZWFycyBtb3JlIHRoYW4gb25jZS4KCglQUiBmb3J0cmFuLzIwODc0CgkqIHJlc29sdmUuYyAocmVzb2x2ZV9mbF9wcm9jZWR1cmUpOiBTaWduYWwgYW4gZXJyb3IgaWYgYW4gZWxlbWVudGFsCglmdW5jdGlvbiBpcyBub3Qgc2NhbGFyIHZhbHVlZC4KCglQUiBmb3J0cmFuLzIwODY3CgkqIG1hdGNoLmMgKHJlY3Vyc2l2ZV9zdG10X2Zjbik6IFBlcmZvcm0gaW1wbGljaXQgdHlwaW5nIG9mIHZhcmlhYmxlcy4KCglQUiBmb3J0cmFuLzIyMDM4CgkqIG1hdGNoLmMgKG1hdGNoX2ZvcmFsbF9pdGVyYXRvcik6IE1hcmsgbmV3IHZhcmlhYmxlcyBhcwoJRkxfVU5LTk9XTiBpZiB0aGUgbWF0Y2ggZmFpbHMuCgoJUFIgZm9ydHJhbi8yODExOQoJKiBtYXRjaC5jIChnZmNfbWF0Y2hfZm9yYWxsKTogUmVtb3ZlIGV4dHJhbmVvdXMgY2FsbCB0bwoJZ2ZjX21hdGNoX2Vvcy4KCglQUiBmb3J0cmFuLzI1MDcyCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9jb2RlLCByZXNvbHZlX2Z1bmN0aW9uKTogUmV3b3JrCglmb3JhbGxfZmxhZyBzY2hlbWUgc28gdGhhdCBpdCBpcyBzZXQgYW5kIGhhcyBhIHZhbHVlIG9mCgkyLCB3aGVuIHRoZSBjb2RlLT5leHByIChpZS4gdGhlIGZvcmFsbCBtYXNrKSBpcyByZXNvbHZlZC4KCVRoaXMgaXMgdXNlZCB0byBjaGFuZ2UgImJsb2NrIiB0byAibWFzayIgaW4gdGhlIG5vbi1QVVJFCgllcnJvciBtZXNzYWdlLgoKMjAwNi0wNi0yNCAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCVBSIGZvcnRyYW4vMjgwODEKCSogcmVzb2x2ZS5jIChyZXNvbHZlX3N1YnN0cmluZyk6IERvbid0IGlzc3VlIG91dC1vZi1ib3VuZHMKCWVycm9yIG1lc3NhZ2VzIHdoZW4gdGhlIHJhbmdlIGhhcyB6ZXJvIHNpemUuCgoyMDA2LTA2LTI0ICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJUFIgZm9ydHJhbi8yMzg2MgoJKiBsYW5nLXNwZWNzLmggKGY5NS1jcHAtaW5wdXQpOiBQYXNzIC1mZnJlZS1mb3JtIHRvIGY5NTEgdW5sZXNzCgktZmZpeGVkLWZvcm0gaXMgZXhwbGljaXRseSBzcGVjaWZpZWQuCgoyMDA2LTA2LTI0ICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjgxMTgKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX2NvbnZfZXhwcl9kZXNjcmlwdG9yKTogV2hlbiBidWlsZGluZyB0ZW1wLAoJdXNlIHRoZSBzdWJzdHJpbmcgcmVmZXJlbmNlIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoIGlmIHRoZQoJZXhwcmVzc2lvbiBkb2VzIG5vdCBoYXZlIGEgY2hhcmxlbi4KCjIwMDYtMDYtMjQgIEZyYW5jb2lzLVhhdmllciBDb3VkZXJ0ICA8Y291ZGVydEBjbGlwcGVyLmVucy5mcj4KCglQUiBmb3J0cmFuLzI4MDk0CgkqIHRyYW5zLWludHJpbnNpYy5jIChnZmNfY29udl9pbnRyaW5zaWNfbW9kKTogU3VwcG9ydCBjYXNlcyB3aGVyZQoJdGhlcmUgaXMgbm8gaW50ZWdlciBraW5kIGVxdWFsIHRvIHRoZSByZXN1bHRpbmcgcmVhbCBraW5kLgoJKiBpbnRyaW5zaWMuYyAoYWRkX2Z1bmN0aW9ucyk6IE1PRFVMTyBpcyBub3QgYWxsb3dlZCBhcyBhbiBhY3R1YWwKCWFyZ3VtZW50LgoKMjAwNi0wNi0yMyAgU3RldmVuIEcuIEthcmdsICA8a2FyZ2xzQGNvbWNhc3QubmV0PgoKCVBSIGZvcnRyYW4vMjc5ODEKCSogbWF0Y2guYyAoZ2ZjX21hdGNoX2lmKTogIEhhbmRsZSBlcnJvcnMgaW4gYXNzaWdubWVudCBpbiBzaW1wbGUgaWYuCgoyMDA2LTA2LTIyICBBc2hlciBMYW5ndG9uICA8bGFuZ3RvbjJAbGxubC5nb3Y+CgoJUFIgZm9ydHJhbi8yNDc0OAoJKiBwcmltYXJ5LmMgKGdmY19tYXRjaF9ydmFsdWUpOiBEb24ndCBjYWxsIG1hdGNoX3N1YnN0cmluZyBmb3IKCWltcGxpY2l0IG5vbi1jaGFyYWN0ZXIgdHlwZXMuCgoyMDA2LTA2LTIyICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJUFIgbGliZm9ydHJhbi8yNjc2OQoJKiBpcmVzb2x2ZS5jIChnZmNfcmVzb2x2ZV9yZXNoYXBlKTogQ2FsbCByZXNoYXBlX3I0IGFuZAoJcmVzaGFwZV9yOCBpbnN0ZWFkIG9mIHJlc2hhcGVfNCBhbmQgcmVzaGFwZV84LgoJKGdmY19yZXNvbHZlX3RyYW5zcG9zZSk6IExpa2V3aXNlIGZvciB0cmFuc3Bvc2UuCgoyMDA2LTA2LTIxICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJKiB0cmFucy1leHByLmMgKGdmY19jb252X21pc3NpbmdfZHVtbXksIGdmY19jb252X3VuYXJ5X29wLAoJZ2ZjX2NvbnZfY3N0X2ludF9wb3dlciwgZ2ZjX2NvbnZfc3RyaW5nX3RtcCwKCWdmY19jb252X2Z1bmN0aW9uX2NhbGwpOiBSZXBsYWNlIGNhbGxzIHRvIGNvbnZlcnQgb24gY29uc3RhbnQKCWludGVnZXIgbm9kZXMgYnkgYnVpbGRfaW50X2NzdC4KCSogdHJhbnMtc3RtdC5jIChnZmNfdHJhbnNfZG8pOiBMaWtld2lzZS4KCSogdHJhbnMtaW8uYyAoc2V0X2ludGVybmFsX3VuaXQsIHRyYW5zZmVyX25hbWVsaXN0X2VsZW1lbnQpOgoJTGlrZXdpc2UuCgkqIHRyYW5zLWRlY2wuYyAoYnVpbGRfZW50cnlfdGh1bmtzKTogTGlrZXdpc2UuCgoyMDA2LTA2LTIwICBTdGV2ZW4gRy4gS2FyZ2wgIDxrYXJnbHNAY29tY2FzdC5uZXQ+CgoJKiBzaW1wbGlmeS5jIChnZmNfc2ltcGxpZnlfcnJzcGFjaW5nKTogSW5pdGlhbGl6ZSBhbmQgY2xlYXIgbXBmcl90Cgl2YXJpYWJsZS4KCjIwMDYtMDYtMjAgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNTA0OQoJUFIgZm9ydHJhbi8yNTA1MAoJKiBjaGVjay5jIChub25faW5pdF90cmFuc2Zvcm1hdGlvbmFsKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmRfc3Vic3RyaW5nX3JlZik6IE5ldyBmdW5jdGlvbiB0byBzaWduYWwgdXNlIG9mIGRpc2FsbG93ZWQKCXRyYW5zZm9ybWF0aW9uYWwgaW50cmluc2ljIGluIGFuIGluaXRpYWxpemF0aW9uIGV4cHJlc3Npb24uCgkoZ2ZjX2NoZWNrX2FsbF9hbnkpOiBDYWxsIHByZXZpb3VzIGlmIGluaXRpYWxpemF0aW9uIGV4cHIuCgkoZ2ZjX2NoZWNrX2NvdW50KTogVGhlIHNhbWUuCgkoZ2ZjX2NoZWNrX2NzaGlmdCk6IFRoZSBzYW1lLgoJKGdmY19jaGVja19kb3RfcHJvZHVjdCk6IFRoZSBzYW1lLgoJKGdmY19jaGVja19lb3NoaWZ0KTogVGhlIHNhbWUuCgkoZ2ZjX2NoZWNrX21pbmxvY19tYXhsb2MpOiBUaGUgc2FtZS4KCShnZmNfY2hlY2tfbWludmFsX21heHZhbCk6IFRoZSBzYW1lLgoJKGdmY19jaGVja19nZmNfY2hlY2tfcHJvZHVjdF9zdW0pOiBUaGUgc2FtZS4KCShnZmNfY2hlY2tfcGFjayk6IFRoZSBzYW1lLgoJKGdmY19jaGVja19zcHJlYWQpOiBUaGUgc2FtZS4KCShnZmNfY2hlY2tfdHJhbnNwb3NlKTogVGhlIHNhbWUuCgkoZ2ZjX2NoZWNrX3VucGFjayk6IFRoZSBzYW1lLgoKCVBSIGZvcnRyYW4vMTg3NjkKCSppbnRyaW5zaWMuYyAoYWRkX2Z1bmN0aW9ucyk6IEFkZCBnZmNfc2ltcGxpZnlfdHJhbnNmZXIuCgkqaW50cmluc2ljLmggOiBBZGQgcHJvdG90eXBlIGZvciBnZmNfc2ltcGxpZnlfdHJhbnNmZXIuCgkqc2ltcGxpZnkuYyAoZ2ZjX3NpbXBsaWZ5X3RyYW5zZmVyKSA6IE5ldyBmdW5jdGlvbiB0byBhY3QgYXMKCXBsYWNlaG9sZGVyIGZvciBldmVudHVhbCBpbXBsZW1lbnRhdGlvbi4gIEVtaXQgZXJyb3IgZm9yIG5vdy4KCglQUiBmb3J0cmFuLzE2MjA2CgkqIGV4cHIuYyAoZmluZF9hcnJheV9lbGVtZW50KTogRWxpbWluYXRlIGNvbmRpdGlvbiBvbiBsZW5ndGggb2YKCW9mZnNldC4gQWRkIGJvdW5kcyBjaGVja2luZy4gUmVhcnJhbmdlIGV4aXQuIFJldHVybiB0cnkgYW5kCglwdXQgZ2ZjX2NvbnN0cnVjdG9yIHJlc3VsdCBhcyBhbiBhcmd1bWVudC4KCShmaW5kX2FycmF5X3NlY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkoZmluZF9zdWJzdHJpbmdfcmVmKTogTmV3IGZ1bmN0aW9uLgoJKHNpbXBsaWZ5X2NvbnN0X3JlZik6IEFkZCBjYWxscyB0byBwcmV2aW91cy4KCShzaW1wbGlmeV9wYXJhbWV0ZXJfdmFyaWFibGUpOiBSZXR1cm4gb24gTlVMTCBleHByLgoJKGdmY19zaW1wbGlmeV9leHByKTogT25seSBjYWxsIGdmY19leHBhbmRfY29uc3RydWN0b3IgZm9yIGZ1bGwKCWFycmF5cy4KCglQUiBmb3J0cmFuLzIwODc2CgkqIG1hdGNoLmMgKGdmY19tYXRjaF9mb3JhbGwpOiBBZGQgbWlzc2luZyBsb2N1cyB0byBnZmNfY29kZS4KCjIwMDYtMDYtMTggIEZyYW5jb2lzLVhhdmllciBDb3VkZXJ0ICA8Y291ZGVydEBjbGlwcGVyLmVucy5mcj4KCglQUiBmb3J0cmFuLzI2ODAxCgkqIHRyYW5zLWludHJpbnNpYy5jIChnZmNfY29udl9hc3NvY2lhdGVkKTogVXNlIHByZSBhbmQgcG9zdCBibG9ja3MKCW9mIHRoZSBzY2FsYXJpemF0aW9uIGV4cHJlc3Npb24uCgoyMDA2LTA2LTE4ICBKZXJyeSBEZUxpc2xlICA8anZkZWxpc2xlQGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMTkzMTAKCVBSIGZvcnRyYW4vMTk5MDQKCSogYXJpdGguYyAoZ2ZjX3JhbmdlX2NoZWNrKTogUmV0dXJuIEFSSVRIX09LIGlmIC1mbm8tcmFuZ2UtY2hlY2suIEFkZAoJcmV0dXJuIG9mIEFSSVRIX05BTiwgQVJJVEhfVU5ERVJGTE9XLCBhbmQgQVJJVEhfT1ZFUkZMT1cuCgkoZ2ZjX2FyaXRoX2RpdmlkZSk6IElmIC1mbm8tcmFuZ2UtY2hlY2sgYWxsb3cgbXBmciB0byBkaXZpZGUgYnkgemVyby4KCSogZ2ZvcnRyYW4uaCAoZ2ZjX29wdGlvbl90KTogQWRkIG5ldyBmbGFnLgoJKiBpbnZva2UudGV4aTogRG9jdW1lbnQgbmV3IGZsYWcuCgkqIGxhbmcub3B0OiBBZGQgb3B0aW9uIC1mcmFuZ2UtY2hlY2suCgkqIG9wdGlvbnMuYyAoZ2ZjX2luaXRfb3B0aW9ucyk6IEluaXRpYWxpemUgbmV3IGZsYWcuCgkoZ2ZjX2hhbmRsZV9vcHRpb25zKTogU2V0IGZsYWcgaWYgaW52b2tlZC4KCSogc2ltcGxpZnkuYyAocmFuZ2VfY2hlY2spOiBBZGQgZXJyb3IgbWVzc2FnZXMgZm9yCglvdmVyZmxvdywgdW5kZXJmbG93LCBhbmQgb3RoZXIgZXJyb3JzLgoJKiB0cmFucy1jb25zdC5jIChnZmNfY29udl9tcGZyX3RvX3RyZWUpOiBCdWlsZCBOYU4gYW5kIEluZiBmcm9tIG1wZnIKCXJlc3VsdC4KCjIwMDYtMDYtMTcgIEthcmwgQmVycnkgIDxrYXJsQGdudS5vcmc+CgoJKiBnZm9ydHJhbi50ZXhpIChAZGlyY2F0ZWdvcnkpOiBVc2UgIlNvZnR3YXJlIGRldmVsb3BtZW50IgoJaW5zdGVhZCBvZiAiUHJvZ3JhbW1pbmciLCBmb2xsb3dpbmcgdGhlIEZyZWUgU29mdHdhcmUgRGlyZWN0b3J5LgoKMjAwNi0wNi0xNiAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCVBSIGZvcnRyYW4vMjc5NjUKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX2NvbnZfc3Nfc3RhcnRzdHJpZGUpOiBDb3JyZWN0IHRoZSBydW50aW1lCgljb25kaXRpb25zIGZvciBib3VuZHMtY2hlY2tpbmcuIENoZWNrIGZvciBub256ZXJvIHN0cmlkZS4KCURvbid0IGNoZWNrIHRoZSBsYXN0IGRpbWVuc2lvbiBvZiBhc3N1bWVkLXNpemUgYXJyYXlzLiBGaXggdGhlCglkaW1lbnNpb24gZGlzcGxheWVkIGluIHRoZSBlcnJvciBtZXNzYWdlLgoKMjAwNi0wNi0xNSAgVGhvbWFzIEtvZW5pZyA8VGhvbWFzLktvZW5pZ0BvbmxpbmUuZGU+CgoJKiB0cmFucy1hcnJheS5oIChnZmNfdHJhbnNfY3JlYXRlX3RlbXBfYXJyYXkpOiAgQWRkIGJvb2wKCWFyZ3VtZW50LgoJKiB0cmFucy1hcnJyYXkuYyAoZ2ZjX3RyYW5zX2NyZWF0ZV90ZW1wX2FycmF5KTogQWRkIGV4dHJhCglhcmd1bWVudCAiZnVuY3Rpb24iIHRvIHNob3cgaWYgd2UgYXJlIHRyYW5zbGF0aW5nIGEgZnVuY3Rpb24uCglJZiB3ZSBhcmUgdHJhbnNsYXRpbmcgYSBmdW5jdGlvbiwgcGVyZm9ybSBjaGVja3Mgd2hldGhlcgoJdGhlIHNpemUgYWxvbmcgYW55IGFyZ3VtZW50IGlzIG5lZ2F0aXZlLiAgSW4gdGhhdCBjYXNlLAoJYWxsb2NhdGUgc2l6ZSAwLgoJKGdmY190cmFuc19hbGxvY2F0ZV9zdG9yYWdlKTogIEFkZCBmdW5jdGlvbiBhcmd1bWVudCAoYXMKCWZhbHNlKSB0byBnZmNfdHJhbnNfY3JlYXRlX3RlbXBfYXJyYXkgY2FsbC4KCSogdHJhbnMtZXhwci5jIChnZmNfY29udl9mdW5jdGlvbl9jYWxsKTogIEFkZCBmdW5jdGlvbgoJYXJndW1lbnQgKGFzIHRydWUpIHRvIGdmY190cmFuc19jcmVhdGVfdGVtcF9hcnJheSBjYWxsLgoJKiB0cmFucy1zdG10LmMgKGdmY19jb252X2VsZW1lbnRhbF9kZXBlbmRlbmNpZXMpOiBBZGQKCWZ1bmN0aW9uIGFyZ3VtZW50IChhcyBmYWxzZSkgdG8gZ2ZjX3RyYW5zX2NyZWF0ZV90ZW1wX2FycmF5CgljYWxsLgoJKiB0cmFucy1pbnRyaW5zaWMuYzogIExpa2V3aXNlLgoKMjAwNi0wNi0xMCAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI0NTU4CglQUiBmb3J0cmFuLzIwODc3CglQUiBmb3J0cmFuLzI1MDQ3CgkqIGRlY2wuYyAoZ2V0X3Byb2NfbmFtZSk6IEFkZCBuZXcgYXJndW1lbnQgdG8gZmxhZyB0aGF0IGEKCW1vZHVsZSBmdW5jdGlvbiBlbnRyeSBpcyBiZWluZyB0cmVhdGVkLiBJZiB0cnVlLCBjb3JyZWN0CgllcnJvciBjb25kaXRpb24sIGFkZCBzeW10cmVlIHRvIG1vZHVsZSBuYW1lc3BhY2UgYW5kIGFkZAoJYSBtb2R1bGUgcHJvY2VkdXJlLgoJKGdmY19tYXRjaF9mdW5jdGlvbl9kZWNsLCBnZmNfbWF0Y2hfZW50cnksCglnZmNfbWF0Y2hfc3Vicm91dGluZSk6IFVzZSB0aGUgbmV3IGFyZ3VtZW50IGluIGNhbGxzIHRvCglnZXRfcHJvY19uYW1lLgoJKiByZXNvbHZlLmMgKHJlc29sdmVfZW50cmllcyk6IEVOVFJZIHN5bWJvbCByZWZlcmVuY2UgdG8KCXRvIG1hc3RlciBlbnRyeSBuYW1lc3BhY2UgaWYgYSBtb2R1bGUgZnVuY3Rpb24uCgkqIHRyYW5zLWRlY2wuYyAoZ2ZjX2NyZWF0ZV9tb2R1bGVfdmFyaWFibGUpOiBSZXR1cm4gaWYKCXRoZSBzeW1ib2wgaXMgYW4gZW50cnkuCgkqIHRyYW5zLWV4cC5jIChnZmNfY29udl92YXJpYWJsZSk6IENoZWNrIHRoYXQgcGFyZW50X2RlY2wKCWlzIG5vdCBOVUxMLgoKMjAwNi0wNi0wOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgZm9ydHJhbi8yNzkxNgoJKiB0cmFucy1vcGVubXAuYyAoZ2ZjX29tcF9jbGF1c2VfZGVmYXVsdF9jdG9yKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmFucy5oIChnZmNfb21wX2NsYXVzZV9kZWZhdWx0X2N0b3IpOiBOZXcgcHJvdG90eXBlLgoJKiBmOTUtbGFuZy5jIChMQU5HX0hPT0tTX09NUF9DTEFVU0VfREVGQVVMVF9DVE9SKTogRGVmaW5lLgoKMjAwNi0wNi0wOCAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCVBSIGZvcnRyYW4vMjc5NTgKCSogdHJhbnMtZXhwci5jIChnZmNfY29udl9zdWJzdHJpbmcpOiBJZiB0aGUgc3Vic3RyaW5nIHN0YXJ0IGlzCglncmVhdGVyIHRoYW4gaXRzIGVuZCwgdGhlIGxlbmd0aCBvZiB0aGUgc3Vic3RyaW5nIGlzIHplcm8sIGFuZAoJbm90IG5lZ2F0aXZlLgoJKGdmY190cmFuc19zdHJpbmdfY29weSk6IERvbid0IGdlbmVyYXRlIGEgY2FsbCB0bwoJX2dmb3J0cmFuX2NvcHlfc3RyaW5nIHdoZW4gZGVzdGluYXRpb24gbGVuZ3RoIGlzIHplcm8uCgoyMDA2LTA2LTA4ICBBc2hlciBMYW5ndG9uICA8bGFuZ3RvbjJAbGxubC5nb3Y+CgkKCVBSIGZvcnRyYW4vMjc3ODYKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX2NvbnZfYXJyYXlfcmVmKTogRWxpbWluYXRlIGJvdW5kcyBjaGVja2luZwoJZm9yIGFzc3VtZWQtc2l6ZSBDcmF5IHBvaW50ZWVzLgoKMjAwNi0wNi0wOCAgU3RldmVuIEcuIEthcmdsICA8a2FyZ2xzQGNvbWNhdC5uZXQ+CgoJKiBpbnRyaW5zaWMuYyAoYWRkX3N1YnJvdXRpbmUpOiAgTWFrZSBtYWtlX25vcmV0dXJuKCkgY29uZGl0aW9uYWwgb24KCXRoZSBhcHByb3ByaWF0ZSBzeW1ib2wgbmFtZS4KCQoyMDA2LTA2LTA3ICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjMwOTEKCSogcmVzb2x2ZS5jIChyZXNvbHZlX2ZsX3ZhcmlhYmxlKTogRXJyb3IgaWYgYW4gYXV0b21hdGljCglvYmplY3QgaGFzIHRoZSBTQVZFIGF0dHJpYnV0ZS4KCglQUiBmb3J0cmFuLzI0MTY4CgkqIGV4cHIuYyAoc2ltcGxpZnlfaW50cmluc2ljX29wKTogVHJhbnNmZXIgdGhlIHJhbmsgYW5kCgl0aGUgbG9jdXMgdG8gdGhlIHNpbXBsaWZpZWQgZXhwcmVzc2lvbi4KCglQUiBmb3J0cmFuLzI1MDkwCglQUiBmb3J0cmFuLzI1MDU4CgkqIGdmb3J0cmFuLmggOiBBZGQgaW50IGVudHJ5X2lkIHRvIGdmY19zeW1ib2wuCgkqIHJlc29sdmUuYyA6IEFkZCBzdGF0aWMgdmFyaWFibGVzIGN1cnJlbnRfZW50cnlfaWQgYW5kCglzcGVjaWZpY2F0aW9uX2V4cHIuCgkocmVzb2x2ZV92YXJpYWJsZSk6IER1cmluZyBjb2RlIHJlc29sdXRpb24sIGNoZWNrIGlmIGEKCXJlZmVyZW5jZSB0byBhIGR1bW15IHZhcmlhYmxlIGluIGFuIGV4ZWN1dGFibGUgZXhwcmVzc2lvbgoJaXMgcHJlY2VkZWQgYnkgaXRzIGFwcGVhcmFuY2UgYXMgYSBwYXJhbWV0ZXIgaW4gYW4gZW50cnkuCglMaWtld2lzZSBjaGVjayBpdHMgc3BlY2lmaWNhdGlvbiBleHByZXNzaW9ucy4KCShyZXNvbHZlX2NvZGUpOiBVcGRhdGUgY3VycmVudF9lbnRyeV9pZCBvbiBFWEVDX0VOVFJZLgoJKHJlc29sdmVfY2hhcmxlbiwgcmVzb2x2ZV9mbF92YXJpYWJsZSk6IFNldCBhbmQgcmVzZXQKCXNwZWNpZmlhY3Rpb25fZXhwci4KCShpc19ub25fY29uc3RhbnRfc2hhcGVfYXJyYXkpOiBEbyBub3QgcmV0dXJuIG9uIGRldGVjdGlvbgoJb2YgYSB2YXJpYWJsZSBidXQgY29udGludWUgdG8gcmVzb2x2ZSBhbGwgdGhlIGV4cHJlc3Npb25zLgoJKHJlc29sdmVfY29kZXMpOiBzZXQgY3VycmVudF9lbnRyeV9pZCB0byBhbiBvdXQgb2YgcmFuZ2UKCXZhbHVlLgoKMjAwNi0wNi0wNiAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBNYWtlLWxhbmcuaW46IFJlbmFtZSB0byBodG1sZGlyIHRvIGJ1aWxkX2h0bWxkaXIgdG8gYXZvaWQKCWluc3RhbGxpbmcgZHVyaW5nIGJ1aWxkLgoKMjAwNi0wNi0wNiAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI3ODk3CgkqIG1hdGNoLmMgKGdmY19tYXRjaF9jb21tb24pOiAgRml4IGNvZGUgdHlwby4gIFJlbW92ZQoJc3ltLT5uYW1lLCBzaW5jZSBzeW0gaXMgTlVMTCwgYW5kIHJlcGxhY2Ugd2l0aCBuYW1lLgoKMjAwNi0wNi0wNSAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCVBSIGxpYmZvcnRyYW4vMjc4OTUKCSogcmVzb2x2ZS5jIChjb21wdXRlX2xhc3RfdmFsdWVfZm9yX3RyaXBsZXQpOiBOZXcgZnVuY3Rpb24uCgkoY2hlY2tfZGltZW5zaW9uKTogQ29ycmVjdGx5IGhhbmRsZSB6ZXJvLXNpemVkIGFycmF5IHNlY3Rpb25zLgoJQWRkIGNoZWNraW5nIG9uIGxhc3QgZWxlbWVudCBvZiBhcnJheSBzZWN0aW9ucy4KCjIwMDYtMDYtMDUgIFN0ZXZlbiBHLiBLYXJnbCAgPGthcmdsc0Bjb21jYXN0Lm5ldD4KCgkqIGRhdGEuYyAoZ2ZjX2Fzc2lnbl9kYXRhX3ZhbHVlKTogIEZpeCBjb21tZW50IHR5cG8uICBSZW1vdmUKCWEgc3B1cmlvdXMgcmV0dXJuLgoKMjAwNi0wNi0wNSAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzE0MDY3CgkqIGRhdGEuYyAoY3JlYXRlX2NoYXJhY3Rlcl9pbnRpYWxpemVyKTogQWRkIHdhcm5pbmcgbWVzc2FnZQoJZm9yIHRydW5jYXRlZCBzdHJpbmcuCgoJUFIgZm9ydHJhbi8xNjk0MwoJKiBzeW1ib2wuYyA6IEluY2x1ZGUgZmxhZ3MuaC4KCShnZmNfYWRkX3R5cGUpOiBJZiBhIHByb2NlZHVyZSBhbmQgdHlwZXMgYXJlIHRoZSBzYW1lIGRvIG5vdAoJdGhyb3cgYW4gZXJyb3IgdW5sZXNzIHN0YW5kYXJkIGlzIGxlc3MgdGhhbiBnbnUgb3IgcGVkYW50aWMuCgoJUFIgZm9ydHJhbi8yMDgzOQoJKiBwYXJzZS5jIChwYXJzZV9kb19ibG9jayk6IEVycm9yIGlmIG5hbWVkIGJsb2NrIGRvIGNvbnN0cnVjdAoJZG9lcyBub3QgaGF2ZSBhIG5hbWVkIGVuZGRvLgoKCVBSIGZvcnRyYW4vMjc2NTUKCSogY2hlY2suYyAoZ2ZjX2NoZWNrX2Fzc29jaWF0ZWQpOiBQaWNrIHVwIEVYUFJfTlVMTCBmb3IgcG9pbnRlcgoJYXMgd2VsbCBhcyB0YXJnZXQgYW5kIHB1dCBlcnJvciByZXR1cm4gYXQgZW5kIG9mIGZ1bmN0aW9uLgoKMjAwNi0wNi0wMyAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCSogdHJhbnMuYyAoZ2ZjX21zZ19ib3VuZHMsIGdmY19tc2dfZmF1bHQsIGdmY19tc2dfd3JvbmdfcmV0dXJuKToKCUFkZCBzdHJpbmdzIGZvciBjb21tb24gcnVudGltZSBlcnJvciBtZXNzYWdlcy4KCShnZmNfdHJhbnNfcnVudGltZV9jaGVjayk6IEFkZCBhIGxvY3VzIGFyZ3VtZW50LCB1c2UgYSBzdHJpbmcKCWFuZCBub3QgYSBzdHJpbmcgdHJlZSBmb3IgdGhlIG1lc3NhZ2UuCgkqIHRyYW5zLmggKGdmY190cmFuc19ydW50aW1lX2NoZWNrKTogQ2hhbmdlIHByb3RvdHlwZSBhY2NvcmRpbmdseS4KCShnZmNfbXNnX2JvdW5kcywgZ2ZjX21zZ19mYXVsdCwgZ2ZjX21zZ193cm9uZ19yZXR1cm4pOiBBZGQgcHJvdG8uCgkqIHRyYW5zLWNvbnN0LmMgKGdmY19zdHJjb25zdF9ib3VuZHMsIGdmY19zdHJjb25zdF9mYXVsdCwKCWdmY19zdHJjb25zdF93cm9uZ19yZXR1cm4sIGdmY19zdHJjb25zdF9jdXJyZW50X2ZpbGVuYW1lKTogUmVtb3ZlLgoJKGdmY19pbml0X2NvbnN0YW50cyk6IExpa2V3aXNlLgoJKiB0cmFucy1jb25zdC5oOiBMaWtld2lzZS4KCSogdHJhbnMtZGVjbC5jIChnZmNfYnVpbGRfYnVpbHRpbl9mdW5jdGlvbl9kZWNscyk6IENhbGwgdG8KCV9nZm9ydHJhbl9ydW50aW1lX2Vycm9yIGhhcyBvbmx5IG9uZSBhcmd1bWVudCwgdGhlIG1lc3NhZ2Ugc3RyaW5nLgoJKiB0cmFucy1hcnJheS5oIChnZmNfY29udl9hcnJheV9yZWYpOiBBZGQgYSBzeW1ib2wgYXJndW1lbnQgYW5kIGEKCWxvY3VzLgoJKiB0cmFucy1hcnJheS5jIChnZmNfdHJhbnNfYXJyYXlfYm91bmRfY2hlY2spOiBCdWlsZCBwcmVjaXNlCgllcnJvciBtZXNzYWdlcy4KCShnZmNfY29udl9hcnJheV9yZWYpOiBVc2UgdGhlIG5ldyBzeW1ib2wgYXJndW1lbnQgYW5kIHRoZSBsb2N1cwoJdG8gYnVpbGQgbW9yZSBwcmVjaXNlIGVycm9yIG1lc3NhZ2VzLgoJKGdmY19jb252X3NzX3N0YXJ0c3RyaWRlKTogTW9yZSBwcmVjaXNlIGVycm9yIG1lc3NhZ2VzLgoJKiB0cmFucy1leHByLmMgKGdmY19jb252X3ZhcmlhYmxlKTogR2l2ZSBzeW1ib2wgcmVmZXJlbmNlIGFuZAoJbG9jdXMgdG8gZ2ZjX2NvbnZfYXJyYXlfcmVmLgoJKGdmY19jb252X2Z1bmN0aW9uX2NhbGwpOiBVc2UgdGhlIG5ldyBwcm90b3R5cGUgZm9yCglnZmNfdHJhbnNfcnVudGltZV9jaGVjay4KCSogdHJhbnMtc3RtdC5jIChnZmNfdHJhbnNfZ290byk6IEJ1aWxkIG1vcmUgcHJlY2lzZSBlcnJvciBtZXNzYWdlLgoJKiB0cmFucy1pby5jIChzZXRfc3RyaW5nKTogTGlrZXdpc2UuCgkqIHRyYW5zLWludHJpbnNpYy5jIChnZmNfY29udl9pbnRyaW5zaWNfYm91bmQpOiBVc2UgbmV3IHByb3RvdHlwZQoJZm9yIGdmY190cmFuc19ydW50aW1lX2NoZWNrLgoKMjAwNi0wNi0wMSAgVGhvbWFzIEtvZW5pZyAgPFRob21hcy5Lb2VuaWdAb25saW5lLmRlPgoKCVBSIGZvcnRyYW4vMjc3MTUKCSogYXJpdGguYzogIENhc3QgdGhlIGNoYXJhY3RlcnMgZnJvbSB0aGUgc3RyaW5ncyB0byB1bnNpZ25lZAoJY2hhciB0byBhdm9pZCB2YWx1ZXMgbGVzcyB0aGFuIDAgZm9yIGV4dGVuZGVkIEFTQ0lJLgoKMjAwNi0wNi0wMSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGJvdGhuZXIuY29tPgoKCSogZGF0YS5jIChnZmNfYXNzaWduX2RhdGFfdmFsdWUpOiBIYW5kbGUgVVNFX01BUFBFRF9MT0NBVElPTi4KCSogc2Nhbm5lci5jIChnZmNfZ29iYmxlX3doaXRlc3BhY2UpOiBMaWtld2lzZS4KCjIwMDYtMDYtMDEgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNTA5OAoJUFIgZm9ydHJhbi8yNTE0NwoJKiBpbnRlcmZhY2UuYyAoY29tcGFyZV9wYXJhbWV0ZXIpOiBSZXR1cm4gMSBpZiB0aGUgYWN0dWFsIGFyZwoJaXMgZXh0ZXJuYWwgYW5kIHRoZSBmb3JtYWwgaXMgYSBwcm9jZWR1cmUuCgkoY29tcGFyZV9hY3R1YWxfZm9ybWFsKTogSWYgdGhlIGFjdHVhbCBhcmd1bWVudCBpcyBhIHZhcmlhYmxlCglhbmQgdGhlIGZvcm1hbCBhIHByb2NlZHVyZSwgdGhpcyBhbiBlcnJvci4gIElmIGEgZ3N5bWJvbCBleGlzdHMKCWZvciBhIHByb2NlZHVyZSBvZiB0aGUgc2FtZSBuYW1lLCB0aGlzIGlzIG5vdCB5ZXQgcmVzb2x2ZWQgYW5kCgl0aGUgZXJyb3IgaXMgY2xlYXJlZC4KCgkqIHRyYW5zLWludHJpbnNpYy5jIChnZmNfY29udl9hc3NvY2lhdGVkKTogTWFrZSBwcm92aXNpb24gZm9yCgl6ZXJvIGFycmF5IGxlbmd0aCBvciB6ZXJvIHN0cmluZyBsZW5ndGggY29udGluZ2VudCBvbiBwcmVzZW5jZQoJb2YgdGFyZ2V0LCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzdGFuZGFyZC4KCjIwMDYtMDUtMzAgIEFzaGVyIExhbmd0b24gIDxsYW5ndG9uMkBsbG5sLmdvdj4KCgkqIHN5bWJvbC5jIChjaGVja19jb25mbGljdCk6IEFsbG93IGV4dGVybmFsLCBmdW5jdGlvbiwgYW5kCglzdWJyb3V0aW5lIGF0dHJpYnV0ZXMgd2l0aCBDcmF5IHBvaW50ZWVzLgoJKiB0cmFucy1leHByLmMgKGdmY19jb252X2Z1bmN0aW9uX3ZhbCk6IFRyYW5zbGF0ZSBDcmF5IHBvaW50ZWVzCgl0aGF0IHBvaW50IHRvIHByb2NlZHVyZXMuCgkqIGdmb3J0cmFuLnRleGk6IERvY3VtZW50IG5ldyBmZWF0dXJlLgoKMjAwNi0wNS0yOSAgSmVycnkgRGVMaXNsZSAgPGp2ZGVsaXNsZUBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI3NjM0CgkqIGlvLmMgKGNoZWNrX2Zvcm1hdCk6IEFkZCBlcnJvciBmb3IgbWlzc2luZyBwZXJpb2QgaW4gZm9ybWF0CglzcGVjaWZpZXIgdW5sZXNzIC1zdGQ9bGVnYWN5LgoJKiBnZm9ydHJhbi50ZXhpOiBBZGQgZGVzY3JpcHRpb24gb2YgZXhwYW5kZWQgbmFtZWxpc3QgcmVhZCBhbmQKCW1pc3NpbmcgcGVyaW9kIGluIGZvcm1hdCBleHRlbnNpb25zLgoKMjAwNi0wNS0yOSAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCVBSIGZvcnRyYW4vMTk3NzcKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX2NvbnZfYXJyYXlfcmVmKTogUGVyZm9ybSBvdXQtb2YtYm91bmRzCgljaGVja2luZyBmb3IgYXNzdW1lZC1zaXplIGFycnJheXMgZm9yIGFsbCBidXQgdGhlIGxhc3QgZGltZW5zaW9uLgoKMjAwNi0wNS0yOSAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCSogaW52b2tlLnRleGk6IENoYW5nZSAtZnBhY2tkZXJpdmVkIGludG8gLWZwYWNrLWRlcml2ZWQuCgoyMDA2LTA1LTI5ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG9wdGlvbnMuYywgcHJpbWFyeS5jLCByZXNvbHZlLmMsIHRyYW5zLWNvbW1vbi5jOiBGaXggdHlwb3MKCWluIGVycm9yIG1lc3NhZ2VzLgoKMjAwNi0wNS0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjaGVjay5jLCBleHByLmMsIHJlc29sdmUuYywgdHJhbnMtY29tbW9uLmMsCgl0cmFucy1pbnRyaW5zaWMuYywgdHJhbnMtc3RtdC5jLCB0cmFucy10eXBlcy5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDYtMDUtMjcgIEZyYW5jb2lzLVhhdmllciBDb3VkZXJ0ICA8Y291ZGVydEBjbGlwcGVyLmVucy5mcj4KCglQUiBmb3J0cmFuLzE5Nzc3CgkqIHRyYW5zLWFycmF5LmMgKGdmY19jb252X2FycmF5X3JlZik6IERvbid0IHBlcmZvcm0gb3V0LW9mLWJvdW5kcwoJY2hlY2tpbmcgZm9yIGFzc3VtZWQtc2l6ZSBhcnJyYXlzLgoKMjAwNi0wNS0yNyAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCgkqIHRyYW5zLWludHJpbnNpYy5jIChnZmNfY29udl9hc3NvY2lhdGVkKTogSWYgcG9pbnRlciBpbiBmaXJzdAoJYXJndW1lbnRzIGhhcyB6ZXJvIGFycmF5IGxlbmd0aCBvZiB6ZXJvIHN0cmluZyBsZW5ndGgsIHJldHVybgoJZmFsc2UuCgoyMDA2LTA1LTI2ICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJUFIgZm9ydHJhbi8yNzUyNAoJKiB0cmFucy1hcnJheS5jIChnZmNfdHJhbnNfZHVtbXlfYXJyYXlfYmlhcyk6IERvbid0IHVzZSBzdHJpZGUgYXMKCWEgdGVtcG9yYXJ5IHZhcmlhYmxlIHdoZW4gLWZib3VuZHMtY2hlY2sgaXMgZW5hYmxlZCwgc2luY2UgaXRzCgl2YWx1ZSB3aWxsIGJlIG5lZWRlZCBsYXRlci4KCjIwMDYtMDUtMjYgIFRob21hcyBLb2VuaWcgIDxUaG9tYXMuS29lbmlnQG9ubGluZS5kZT4KCglQUiBmb3J0cmFuLzIzMTUxCgkqIGlvLmMgKG1hdGNoX2lvKTogIHByaW50ICgxLCopIGlzIGFuIGVycm9yLgoKMjAwNi0wNS0yNiAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI3NzA5CgkqIHJlc29sdmUuYyAoZmluZF9hcnJheV9zcGVjKTogQWRkIGdmY19zeW1ib2wsIGRlcml2ZWQsIGFuZAoJdXNlIHRvIHRyYWNrIHJlcGVhdGVkIGNvbXBvbmVudCByZWZlcmVuY2VzLgoKCVBSIGZvcnRyYW4vMjcxNTUKCVBSIGZvcnRyYW4vMjc0NDkKCSogdHJhbnMtaW50cmluc2ljLmMgKGdmY19jb252X2ludHJpbnNpY19hcnJheV90cmFuc2Zlcik6IFVzZQoJc2UtPnN0cmluZ19sZW5ndGggdGhyb3VnaG91dCBhbmQgdXNlIG1lbWNweSB0byBwb3B1bGF0ZSB0aGUKCWV4cHJlc3Npb24gcmV0dXJuZWQgdG8gdGhlIHNjYWxhcml6ZXIuCgkoZ2ZjX3NpemVfaW5fYnl0ZXMpOiBOZXcgZnVuY3Rpb24uCgoyMDA2LTA1LTIxICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjc2MTMKCSogcHJpbWFyeS5jIChnZmNfbWF0Y2hfcnZhbHVlKTogVGVzdCBpZiBzeW1ib2wgcmVwcmVzZW50cyBhCglkaXJlY3QgcmVjdXJzaXZlIGZ1bmN0aW9uIHJlZmVyZW5jZS4gIEVycm9yIGlmIGFycmF5IHZhbHVlZCwKCWdvIHRvIGZ1bmN0aW9uMCBvdGhlcndpc2UuCgoyMDA2LTA1LTIxICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjU3NDYKCSogaW50ZXJmYWNlLmMgKGdmY19leHRlbmRfYXNzaWduKTogVXNlIG5ldyBFWEVDX0FTU0lHTl9DQUxMLgoJKiBnZm9ydHJhbi5oIDogUHV0IEVYRUNfQVNTSUdOX0NBTEwgaW4gZW51bS4KCSogdHJhbnMtc3RtdC5jIChnZmNfY29udl9lbGVtZW50YWxfZGVwZW5kZW5jaWVzKTogTmV3IGZ1bmN0aW9uLgoJKGdmY190cmFuc19jYWxsKTogQ2FsbCBpdC4gIEFkZCBuZXcgYm9vbGlhbiBhcmd1bWVudCB0byBmbGFnCgluZWVkIGZvciBkZXBlbmRlbmN5IGNoZWNraW5nLiBBc3NlcnQgaW50ZW50IE9VVCBhbmQgSU4gZm9yIGFyZzEKCWFuZCBhcmcyLgoJKGdmY190cmFuc19mb3JhbGxfMSk6IFVzZSBuZXcgY29kZSBFWEVDX0FTU0lHTl9DQUxMLgoJdHJhbnMtc3RtdC5oIDogTW9kaWZ5IHByb3RvdHlwZSBvZiBnZmNfdHJhbnNfY2FsbC4KCXRyYW5zLmMgKGdmY190cmFuc19jb2RlKTogQWRkIGNhbGwgZm9yIEVYRUNfQVNTSUdOX0NBTEwuCglzdC5jIChnZmNfZnJlZV9zdGF0ZW1lbnQpOiBGcmVlIGFjdHVhbCBmb3IgRVhFQ19BU1NJR05fQ0FMTC4KCSogZGVwZW5kZW5jeS5jIChnZmNfY2hlY2tfZm5jYWxsX2RlcGVuZGVuY3kpOiBEb24ndCBjaGVjayBvdGhlcgoJYWdhaW5zdCBpdHNlbGYuCgoJUFIgZm9ydHJhbi8yNTA5MAoJKiByZXNvbHZlLmMgOiBSZW1vdmUgcmVzb2x2aW5nX2luZGV4X2V4cHIuCgkoZW50cnlfcGFyYW1ldGVyKTogUmVtb3ZlLgoJKGdmY19yZXNvbHZlX2V4cHIsIHJlc29sdmVfY2hhcmxlbiwgcmVzb2x2ZV9mbF92YXJpYWJsZSk6IExpZnQKCWNhbGxzIHRvIGVudHJ5X3BhcmFtZXRlciBhbmQgcmVmZXJlbmNlcyB0byByZXNvbHZpbmdfaW5kZXhfZXhwci4KCglQUiBmb3J0cmFuLzI3NTg0CgkqIGNoZWNrLmMgKGdmY19jaGVja19hc3NvY2lhdGVkKTogUmVwbGFjZSBOVUxMIGFzc2VydCB3aXRoIGFuCgllcnJvciBtZXNzYWdlLCBzaW5jZSBpdCBpcyBwb3NzaWJsZSB0byBnZW5lcmF0ZSBiYWQgY29kZSB0aGF0CgloYXMgdXMgZmFsbCB0aHJvdWdoIHRvIGhlcmUuLgoKCVBSIGZvcnRyYW4vMTkwMTUKCSogaXJlc29sdmUuYyAobWF4bG9jLCBtaW5sb2MpOiBJZiBESU0gaXMgbm90IHByZXNlbnQsIHBhc3MgdGhlCglyYW5rIG9mIEFSUkFZIGFzIHRoZSBzaGFwZSBvZiB0aGUgcmVzdWx0LiAgT3RoZXJ3aXNlLCBwYXNzIHRoZQoJc2hhcGUgb2YgQVJSQVksIGxlc3MgdGhlIGRpbWVuc2lvbiBESU0uCgkobWF4dmFsLCBtaW52YWwpOiBUaGUgc2FtZSwgd2hlbiBESU0gaXMgcHJlc2VudCwgb3RoZXJ3aXNlIG5vCgljaGFuZ2UuCgoyMDA2LTA1LTE5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgZm9ydHJhbi8yNzY2MgoJKiB0cmFucy1hcnJheS5jIChnZmNfY29udl9leHByX2Rlc2NyaXB0b3IpOiBEb24ndCB6ZXJvIHRoZQoJZmlyc3Qgc3RyaWRlIHRvIGluZGljYXRlIGEgdGVtcG9yYXJ5LgoJKiB0cmFucy1leHByLmMgKGdmY19jb252X2Z1bmN0aW9uX2NhbGwpOiBMaWtld2lzZS4KCjIwMDYtMDUtMTggIEZyYW5jb2lzLVhhdmllciBDb3VkZXJ0ICA8Y291ZGVydEBjbGlwcGVyLmVucy5mcj4KCSAgICBGZW5nIFdhbmcgIDxmZW5nd2FuZ0BudWR0LmVkdS5jbj4KCglQUiBmb3J0cmFuLzI3NTUyCgkqIGR1bXAtcGFyc2UtdHJlZS5jIChnZmNfc2hvd19leHByKTogRGVhbCB3aXRoIEhvbGxlcml0aCBjb25zdGFudHMuCgkqIGRhdGEuYyAoY3JlYXRlX2NoYXJhY3Rlcl9pbnRpYWxpemVyKTogU2V0IGZyb21fSCBmbGFnIGlmIGNoYXJhY3RlciBpcwoJaW5pdGlhbGl6ZWQgYnkgSG9sbGVyaXRoIGNvbnN0YW50LgoKMjAwNi0wNS0xNyAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCVBSIGZvcnRyYW4vMjY1NTEKCSogcmVzb2x2ZS5jIChyZXNvbHZlX2NhbGwsIHJlc29sdmVfZnVuY3Rpb24pOiBJc3N1ZSBhbiBlcnJvcgoJaWYgYSBmdW5jdGlvbiBvciBzdWJyb3V0aW5lIGNhbGwgaXMgcmVjdXJzaXZlIGJ1dCB0aGUgZnVuY3Rpb24gb3IKCXN1YnJvdXRpbmUgd2Fzbid0IGRlY2xhcmVkIGFzIHN1Y2guCgoyMDA2LTA1LTA3ICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJUFIgZm9ydHJhbi8yNjU1MQoJKiBnZm9ydHJhbi5kZy9yZWN1cnNpdmVfY2hlY2tfMS5mOiBOZXcgdGVzdC4KCgoyMDA2LTA1LTE3ICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJUFIgZm9ydHJhbi8yNzMyMAoJKiBkdW1wLXBhcnNlLXRyZWUuYyAoZ2ZjX3Nob3dfY29kZV9ub2RlKTogVHJ5IGhhcmRlciB0byBmaW5kIHRoZQoJY2FsbGVkIHByb2NlZHVyZSBuYW1lLgoKMjAwNi0wNS0xNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNzQxNQoJKiB0cmFucy1vcGVubXAuYyAoZ2ZjX3RyYW5zX29tcF9wYXJhbGxlbF9kbywKCWdmY190cmFuc19vbXBfcGFyYWxsZWxfc2VjdGlvbnMsIGdmY190cmFuc19vbXBfcGFyYWxsZWxfd29ya3NoYXJlKTogU2V0CglPTVBfUEFSQUxMRUxfQ09NQklORUQgZmxhZy4KCjIwMDYtMDUtMTYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCglQUiBkcml2ZXIvMjY4ODUKCSogTWFrZS1sYW5nLmluIChHRk9SVFJBTl9EX09CSlMpOiBSZXBsYWNlIGdjYy5vIHdpdGgKCSQoR0NDX09CSlMpLgoKMjAwNi0wNS0xNSAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI1MDkwCgkqIHJlc29sdmUuYzogU3RhdGljIHJlc29sdmluZ19pbmRleF9leHByIGluaXRpYWxpemVkLgoJKGVudHJ5X3BhcmFtZXRlcik6IE5ldyBmdW5jdGlvbiB0byBlbWl0IGVycm9ycyBmb3IgdmFyaWFibGVzCgl0aGF0IGFyZSBub3QgZW50cnkgcGFyYW1ldGVycy4KCShnZmNfcmVzb2x2ZV9leHByKTogQ2FsbCBlbnRyeV9wYXJhbWV0ZXIsIHdoZW4gcmVzb2x2aW5nCgl2YXJpYWJsZXMsIGlmIHRoZSBuYW1lc3BhY2UgaGFzIGVudHJpZXMgYW5kIHJlc29sdmluZ19pbmRleF9leHByCglpcyBzZXQuCgkocmVzb2x2ZV9jaGFybGVuKTogU2V0IHJlc29sdmluZ19pbmRleF9leHByIGJlZm9yZSB0aGUgY2FsbCB0bwoJcmVzb2x2ZV9pbmRleF9leHByIGFuZCByZXNldCBpdCBhZnRlcndhcmRzLgoJKHJlc29sdmVfZmxfdmFyaWFibGUpOiBUaGUgc2FtZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBjYWxsIHRvCglpc19ub25fY29uc3RhbnRfc2hhcGVfYXJyYXksIHdoaWNoIHVsdGltYXRlbHkgbWFrZXMgYSBjYWxsIHRvCglnZmNfcmVzb2x2ZV9leHByLgoKCVBSIGZvcnRyYW4vMjUwODIKCSogcmVzb2x2ZS5jIChyZXNvbHZlX2NvZGUpOiBBZGQgZXJyb3IgY29uZGl0aW9uIHRoYXQgdGhlIHJldHVybgoJZXhwcmVzc2lvbiBtdXN0IGJlIHNjYWxhci4KCglQUiBmb3J0cmFuLzI3NDExCgkqIG1hdGNoZXhwLmMgKGdmY19nZXRfcGFyZW50aGVzZXMpOiBOZXcgZnVuY3Rpb24uCgkobWF0Y2hfcHJpbWFyeSk6IFJlbW92ZSBpbmxpbmUgY29kZSBhbmQgY2FsbCBhYm92ZS4KCSogZ2ZvcnRyYW4uaDogUHJvdmlkZSBwcm90b3R5cGUgZm9yIGdmY19nZXRfcGFyZW50aGVzZXMuCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9hcnJheV9yZWYpOiBDYWxsIHRoZSBhYm92ZSwgd2hlbiBzdGFydCBpcyBhCglkZXJpdmVkIHR5cGUgdmFyaWFibGUgYXJyYXkgcmVmZXJlbmNlLgoKMjAwNi0wNS0xNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgZm9ydHJhbi8yNzQ0NgoJKiB0cmFucy1vcGVubXAuYyAoZ2ZjX3RyYW5zX29tcF9hcnJheV9yZWR1Y3Rpb24pOiBFbnN1cmUKCU9NUF9DTEFVU0VfUkVEVUNUSU9OX3tJTklULE1FUkdFfSBhcmUgc2V0IHRvIEJJTkRfRVhQUi4KCjIwMDYtMDUtMTQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoZm9ydHJhbi9vcHRpb25zLm8pOiBEZXBlbmQgb24gJChUQVJHRVRfSCkuCgoyMDA2LTA1LTExICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJUFIgZm9ydHJhbi8yNzU1MwoJKiBwYXJzZS5jIChuZXh0X2ZyZWUpOiBSZXR1cm4gaW5zdGVhZCBvZiBjYWxsaW5nIGRlY29kZV9zdGF0ZW1lbnQKCXVwb24gZXJyb3IuCgoyMDA1LTA1LTEwICBUaG9tYXMgS29lbmlnICA8VGhvbWFzLktvZW5pZ0BvbmxpbmUuZGU+CgoJUFIgZm9ydHJhbi8yNzQ3MAoJKiB0cmFucy1hcnJheS5jKGdmY19hcnJheV9hbGxvY2F0ZSk6ICBJZiByZWYtPm5leHQgZXhpc3RzCgl0aGF0IGlzIGlmIHRoZXJlIGlzIGEgc3RhdGVtZW50IGxpa2UgQUxMT0NBVEUoZm9vJWJhcigyKSksCglGOTUgcnVsZXMgcmVxdWlyZSB0aGF0IGJhciBzaG91bGQgYmUgYSBwb2ludGVyLgoKMjAwNi0wNS0xMCAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCVBSIGZvcnRyYW4vMjA0NjAKCSogcmVzb2x2ZS5jIChnZmNfcmVzb2x2ZV9pbmRleCk6IE1ha2UgUkVBTCBhcnJheSBpbmRpY2VzIGEKCUdGQ19TVERfTEVHQUNZIGZlYXR1cmUuCgoyMDA2LTA1LTEwICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJUFIgZm9ydHJhbi8yNDU0OQoJKiBwYXJzZS5jIChyZWplY3Rfc3RhdGVtZW50KTogQ2xlYXIgZ2ZjX25ld19ibG9jay4KCjIwMDYtMDUtMDkgIFN0ZXZlbiBHLiBLYXJnbCAgPGthcmdsc0Bjb21jYXN0Lm5ldD4KCgkqIGludm9rZS50ZXhpOiBNaXNzZWQgZmlsZSBpbiBwcmV2aW91cyBjb21taXQuICBVcGRhdGUKCSBkZXNjcmlwdGlvbiBvZiAtZmFsbC1pbnRyaW5zaWNzCgoyMDA2LTA1LTA3ICBTdGV2ZW4gQm9zY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI3Mzc4CgkqIHBhcnNlLmMgKG5leHRfc3RhdGVtZW50KTogQWRkIGNoZWNrIHRvIGF2b2lkIGFuIElDRSB3aGVuCglnZmNfY3VycmVudF9sb2N1cy5sYiBpcyBub3Qgc2V0LgoKMjAwNi0wNS0wNyAgVG9iaWFzIFNjaGzCgfx0ZXIgIDx0b2JpYXMuc2NobHVldGVyQHBoeXNpay51bmktbXVlbmNoZW4uZGU+CgoJUFIgZm9ydHJhbi8yNzQ1NwoJKiBtYXRjaC5jIChtYXRjaF9jYXNlX2Vvcyk6IEVycm9yIG91dCBvbiBnYXJiYWdlIGZvbGxvd2luZwoJQ0FTRSguLi4pLgoKMjAwNi0wNS0wNyAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI0ODEzCgkqIHRyYW5zLWFycmF5LmMgKGdldF9hcnJheV9jdG9yX3N0cmxlbik6IFJlbW92ZSBzdGF0aWMgYXR0cmlidXRlLgoJKiB0cmFucy5oOiBBZGQgcHJvdG90eXBlIGZvciBnZXRfYXJyYXlfY3Rvcl9zdHJsZW4uCgkqIHRyYW5zLWludHJpbnNpYy5jIChnZmNfY29udl9pbnRyaW5zaWNfbGVuKTogU3dpdGNoIG9uIEVYUFJfQVJSQVkKCWFuZCBjYWxsIGdldF9hcnJheV9jdG9yX3N0cmxlbi4KCjIwMDYtMDUtMDUgIFN0ZXZlbiBHLiBLYXJnbCAgPGthcmdsc0Bjb21jYXN0Lm5ldD4KCgkqIGludm9rZS50ZXhpOiBVcGRhdGUgZGVzY3JpcHRpb24gb2YgLWZhbGwtaW50cmluc2ljcwoJKiBvcHRpb25zLmMgKGdmY19wb3N0X29wdGlvbnMpOiBEaXNhYmxlIC1Xbm9uc3RkLWludHJpbnNpY3MgaWYKCS1mYWxsLWludHJpbnNpY3MgaXMgdXNlZC4KCShnZmNfaGFuZGxlX29wdGlvbik6IFBlcm1pdCAtV25vLW5vbnN0ZC1pbnRyaW5zaWNzLgoKMjAwNi0wNS0wNCAgVG9iaWFzIFNjaGzCgfx0ZXIgIDx0b2JpYXMuc2NobHVldGVyQHBoeXNpay51bmktbXVlbmNoZW4uZGU+CgoJKiBzaW1wbGlmeS5jIChhc2NpaV90YWJsZSk6IEZpeCB3cm9uZyBlbnRyeS4KCjIwMDYtMDUtMDIgIFN0ZXZlbiBHLiBLYXJnbCAgPGthcmdsc0Bjb21jYXN0Lm5ldD4KCglQUiBmb3J0cmFuLzI2ODk2CgkqIGxhbmcub3B0OiBGaXggLVd0YWIgZGVzY3JpcHRpb24KCglQUiBmb3J0cmFuLzIwMjQ4ICAKCSogbGFuZy5vcHQ6IE5ldyBmbGFnIC1mYWxsLWludHJpbnNpY3MuCgkqIGludm9rZS50ZXhpOiAgRG9jdW1lbnQgb3B0aW9uLgoJKiBnZm9ydHJhbi5oIChvcHRpb25zX3QpOiAgTmV3IG1lbWJlciBmbGFnX2FsbF9pbnRyaW5zaWNzLgoJKiBvcHRpb25zLmMgKGdmY19pbml0X29wdGlvbnMsIGdmY19oYW5kbGVfb3B0aW9uKTogU2V0IG5ldyBvcHRpb24uCglzb3J0IG5lYXJieSBtaXNwbGFjZWQgb3B0aW9ucy4KCSogaW50cmluc2ljLmMgKGFkZF9zeW0sIG1ha2VfZ2VuZXJpYywgbWFrZV9hbGlhcyk6ICBVc2UgaXQuCgoyMDA2LTA1LTAyIFBhdWwgVGhvbWFzIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI3MjY5CgkqIG1vZHVsZS5jOiBBZGQgc3RhdGljIGZsYWcgaW5fbG9hZF9lcXVpdi4KCShtaW9fZXhwcl9yZWYpOiBSZXR1cm4gaWYgbm8gc3ltdHJlZSBhbmQgaW5fbG9hZF9lcXVpdi4KCShsb2FkX2VxdWl2KTogSWYgYW55IG9mIHRoZSBlcXVpdmFsZW5jZSBtZW1iZXJzIGhhdmUgbm8gc3ltdHJlZSwgZnJlZQoJdGhlIGVxdWl2YWxlbmNlIGFuZCB0aGUgYXNzb2NpYXRlZCBleHByZXNzaW9ucy4KCglQUiBmb3J0cmFuLzI3MzI0CgkqIHRyYW5zLWNvbW1vbi5jIChnZmNfdHJhbnNfY29tbW9uKTogSW52ZXJ0IHRoZSBvcmRlciBvZiBjYWxscyB0bwoJZmluaXNoIGVxdWl2YWxlbmNlcyBhbmQgZ2ZjX2NvbW1pdF9zeW1ib2xzLgoKMjAwNi0wNC0yOSAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCVBSIGZvcnRyYW4vMjU2ODEKCSogc2ltcGxpZnkuYyAoc2ltcGxpZnlfbGVuKTogQ2hhcmFjdGVyIHZhcmlhYmxlcyB3aXRoIGNvbnN0YW50CglsZW5ndGggY2FuIGJlIHNpbXBsaWZpZWQuCgoyMDA2LTA0LTI5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgZm9ydHJhbi8yNzM1MQoJKiB0cmFucy1hcnJheS5jIChnZmNfY29udl9hcnJheV90cmFuc3Bvc2UpOiBNb3ZlIGdjY19hc3NlcnQKCWJlZm9yZSBnZmNfY29udl9leHByX2Rlc2NyaXB0b3IuCgoyMDA2LTA0LTIzICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjUwOTkKCSogcmVzb2x2ZS5jIChyZXNvbHZlX2NhbGwpOiBDaGVjayBjb25mb3JtaXR5IG9mIGVsZW1lbnRhbAoJc3Vicm91dGluZSBhY3R1YWwgYXJndW1lbnRzLgoKMjAwNi0wNC0yMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgZm9ydHJhbi8yNjc2OQoJKiBpcmVzb2x2ZS5jIChnZmNfcmVzb2x2ZV9yZXNoYXBlKTogVXNlIHJlc2hhcGVfcjE2IGZvciByZWFsKDE2KS4KCShnZmNfcmVzb2x2ZV90cmFuc3Bvc2UpOiBVc2UgdHJhbnNwb3NlX3IxNiBmb3IgcmVhbCgxNikuCgoyMDA2LTA0LTIxIFBhdWwgVGhvbWFzIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI3MTIyCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9mdW5jdGlvbik6IFJlbW92ZSBnZW5lcmFsIHJlc3RyaWN0aW9uIG9uIGF1dG8KCWNoYXJhY3RlciBsZW5ndGggZnVuY3Rpb24gaW50ZXJmYWNlcy4KCShnZmNfcmVzb2x2ZV91b3BzKTogQ2hlY2sgcmVzdHJpY3Rpb25zIG9uIGRlZmluZWQgb3BlcmF0b3IKCXByb2NlZHVyZXMuCgkocmVzb2x2ZV90eXBlcyk6IENhbGwgdGhlIGNoZWNrIGZvciBkZWZpbmVkIG9wZXJhdG9ycy4KCglQUiBmb3J0cmFuLzI3MTEzCgkqIHRyYW5zLWFycmF5LmMgKGdmY190cmFuc19hcnJheV9jb25zdHJ1Y3Rvcl9zdWJhcnJheSk6IFJlbW92ZQoJcmVkdW5kYW50IGdmY190b2RvX2Vycm9yLgoJKGdldF9hcnJheV9jdG9yX3Zhcl9zdHJsZW4pOiBSZW1vdmUgdHlwbyBpbiBlbnVtLgoKMjAwNi0wNC0xOCAgQmVybmhhcmQgRmlzY2hlciAgPGFsZG90QGdjYy5nbnUub3JnPgoKCSogcGFyc2UuYyAobmV4dF9mcmVlKTogVXNlIGNvbnNpc3RlbnQgZXJyb3Igc3RyaW5nIGJldHdlZW4KCWZyZWUtZm9ybSBhbmQgZml4ZWQtZm9ybSBmb3IgaWxsZWdhbCBzdGF0ZW1lbnQgbGFiZWwgb2YgemVyby4KCShuZXh0X2ZpeGVkKTogVXNlIGNvbnNpc3RlbnQgd2FybmluZyBzdHJpbmcgYmV0d2VlbiBmcmVlLWZvcm0KCWFuZCBmaXhlZC1mb3JtIGZvciBzdGF0ZW1lbnQgbGFiZWxzIGZvciBlbXB0eSBzdGF0ZW1lbnRzLgoKMjAwNi0wNC0xOCAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiB0cmFucy1pby5jIChnZmNfYnVpbGRfaW9fbGlicmFyeV9mbmRlY2xzKTogQWxpZ24gcGFkLgoKMjAwNi0wNC0xNiAgVGhvbWFzIEtvZW5pZyAgPFRob21hcy5Lb2VuaWdAb25saW5lLmRlPgoKCVBSIGZvcnRyYW4vMjYwMTcKCSogdHJhbnMtYXJyYXkuYyhnZmNfYXJyYXlfaW5pdF9zaXplKTogIEludHJvZHVjZSBvcl9leHByCgl3aGljaCBpcyB0cnVlIGlmIHRoZSBzaXplIGFsb25nIGFueSBkaW1lbnNpb24KCWlzIG5lZ2F0aXZlLiAgQ3JlYXRlIGEgdGVtcG9yYXJ5IHZhcmlhYmxlIHdpdGggYmFzZQoJbmFtZSBzaXplLiAgSWYgb3JfZXhwciBpcyB0cnVlLCBzZXQgdGhlIHRlbXBvcmFyeSB0byAwLAoJdG8gdGhlIG5vcm1hbCBzaXplIG90aGVyd2lzZS4KCjIwMDYtMDQtMTYgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNjgyMgoJKiBpbnRyaW5zaWMuYyAoYWRkX2Z1bmN0aW9ucyk6IE1hcmsgTE9HSUNBTCBhcyBlbGVtZW50YWwuCgoJUFIgZm9ydHJhbi8yNjc4NwoJKiBleHByLmMgKGdmY19jaGVja19hc3NpZ24pOiBFeHRlbmQgc2NvcGUgb2YgZXJyb3IgdG8gaW5jbHVkZQoJYXNzaWdubWVudHMgdG8gYSBwcm9jZWR1cmUgaW4gdGhlIG1haW4gcHJvZ3JhbSBvciwgZnJvbSBhCgltb2R1bGUgb3IgaW50ZXJuYWwgcHJvY2VkdXJlIHRoYXQgaXMgbm90IHRoYXQgcmVwcmVzZW50ZWQgYnkKCXRoZSBsaHMgc3ltYm9sLiBVc2UgVkFSSUFCTEUgcmF0aGVyIHRoYW4gbC12YWx1ZSBpbiBtZXNzYWdlLgoKCVBSIGZvcnRyYW4vMjcwOTYKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX3RyYW5zX2RlZmVycmVkX2FycmF5KTogSWYgdGhlIGJhY2tlbmRfZGVjbAoJaXMgbm90IGEgZGVzY3JpcHRvciwgZGVyZWZlcmVuY2UgYW5kIHRoZW4gdGVzdCBhbmQgdXNlIHRoZSB0eXBlLgoKCVBSIGZvcnRyYW4vMjU1OTcKCSogdHJhbnMtZGVjbC5jIChnZmNfdHJhbnNfZGVmZXJyZWRfdmFycyk6IENoZWNrIGlmIGFuIGFycmF5CglyZXN1bHQsIGlzIGFsc28gYXV0b21hdGljIGNoYXJhY3RlciBsZW5ndGguICBJZiBzbywgcHJvY2VzcwoJdGhlIGNoYXJhY3RlciBsZW5ndGguCgoJUFIgZm9ydHJhbi8xODAwMwoJUFIgZm9ydHJhbi8yNTY2OQoJUFIgZm9ydHJhbi8yNjgzNAoJKiB0cmFuc19pbnRyaW5zaWMuYyAoZ2ZjX3dhbGtfaW50cmluc2ljX2JvdW5kKTogU2V0CglkYXRhLmluZm8uZGltZW4gZm9yIGJvdW5kIGludHJpbnNpY3MuCgkqIHRyYW5zX2FycmF5LmMgKGdmY19jb252X3NzX3N0YXJ0c3RyaWRlKTogUGljayBvdXQgTEJPVU5EIGFuZAoJVUJPVU5EIGludHJpbnNpY3MgYW5kIHN1cHBseSB0aGVpciBzaGFwZSBpbmZvcm1hdGlvbiB0byB0aGUgc3MKCWFuZCB0aGUgbG9vcC4KCglQUiBmb3J0cmFuLzI3MTI0CgkqIHRyYW5zX2V4cHIuYyAoZ2ZjX3RyYW5zX2Z1bmN0aW9uX2NhbGwpOiAgQWRkIGEgbmV3IGJsb2NrLCBwb3N0LAoJaW4gdG8gd2hpY2ggYWxsIHRoZSBhcmd1bWVudCBwb3N0IGJsb2NrcyBhcmUgcHV0LiAgQWRkIHRoaXMgYmxvY2sKCXRvIHNlLT5wcmUgYWZ0ZXIgYSBieXJlZiBjYWxsIG9yIHRvIHNlLT5wb3N0LCBvdGhlcndpc2UuCgoyMDA2LTA0LTE0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHRyYW5zLWlvLmMgKHNldF9zdHJpbmcpOiBVc2UgZm9sZF9idWlsZDIgYW5kIGJ1aWxkX2ludF9jc3QgaW5zdGVhZAoJb2YgYnVpbGQyIGFuZCBjb252ZXJ0IHRvIGNvbnN0cnVjdCAieCA8IDAiIHJhdGhlciB0aGFuICJ4IDw9IC0xIi4KCjIwMDYtMDQtMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmFucy1vcGVubXAuYyAoZ2ZjX3RyYW5zX29tcF9zZWN0aW9ucyk6IEFkanVzdCBmb3IgY2hhbmdlZAoJbnVtYmVyIG9mIG9wZXJhbmRzIHRvIE9NUF9TRUNUSU9OUy4KCjIwMDYtMDQtMDggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZ2ZvcnRyYW4udGV4aTogRml4IHR5cG9zLiAgRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoJKiByZXNvbHZlLmMsIHRyYW5zLWV4cHIuYywgdHJhbnMtc3RtdC5jOiBGaXggY29tbWVudCB0eXBvcy4KCUZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCjIwMDYtMDQtMDUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZGVwZW5kZW5jeS5jIChnZXRfbm9fZWxlbWVudHMpOiBEZWxldGUgZnVuY3Rpb24uCgkoZ2V0X2RlcHMpOiBEZWxldGUgZnVuY3Rpb24uCgkodHJhbnNmb3JtX3NlY3Rpb25zKTogRGVsZXRlIGZ1bmN0aW9uLgoJKGdmY19jaGVja19zZWN0aW9uX3ZzX3NlY3Rpb24pOiBTaWduaWZpY2FudCByZXdyaXRlLgoKMjAwNi0wNC0wNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCVBSIGZvcnRyYW4vMjU2MTkKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX2NvbnZfZXhwcl9kZXNjcmlwdG9yKTogT25seSBkZXJlZmVyZW5jZQoJY2hhcmFjdGVyIHBvaW50ZXIgd2hlbiBjb3B5aW5nIHRlbXBvcmFyeS4KCglQUiBmb3J0cmFuLzIzNjM0CgkqIHRyYW5zLWFycmF5LmMgKGdmY19jb252X2V4cHJfZGVzY3JpcHRvcik6IFByb3Blcmx5IGNvcHkKCXRlbXBvcmFyeSBjaGFyYWN0ZXIgd2l0aCBub24gY29uc3RhbnQgc2l6ZS4KCjIwMDYtMDQtMDMgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNjg5MQoJKiB0cmFucy5oOiBQcm90b3R5cGUgZm9yIGdmY19jb252X21pc3NpbmdfZHVtbXkuCgkqIHRyYW5zLWV4cHIgKGdmY19jb252X21pc3NpbmdfZHVtbXkpOiBOZXcgZnVuY3Rpb24KCShnZmNfY29udl9mdW5jdGlvbl9jYWxsKTogQ2FsbCBpdCBhbmQgdGlkeSB1cCBzb21lIG9mIHRoZSBjb2RlLgoJKiB0cmFucy1pbnRyaW5zaWMgKGdmY19jb252X2ludHJpbnNpY19mdW5jdGlvbl9hcmdzKTogVGhlIHNhbWUuCgoJUFIgZm9ydHJhbi8yNjk3NgoJKiBhcnJheS5jIChnZmNfYXJyYXlfZGltZW5fc2l6ZSk6IElmIGF2YWlsYWJsZSwgcmV0dXJuIHNoYXBlW2RpbWVuXS4KCSogcmVzb2x2ZS5jIChyZXNvbHZlX2Z1bmN0aW9uKTogSWYgYXZhaWxhYmxlLCB1c2UgdGhlIGFyZ3VtZW50CglzaGFwZSBmb3IgdGhlIGZ1bmN0aW9uIGV4cHJlc3Npb24uCgkqIGlyZXNvbHZlLmMgKGdmY19yZXNvbHZlX3RyYW5zZmVyKTogU2V0IHNoYXBlWzBdID0gc2l6ZS4KCjIwMDYtMDQtMDIgIEVyaWsgRWRlbG1hbm4gIDxlZWRlbG1hbkBnY2MuZ251Lm9yZz4KCgkqIHRyYW5zLWFycmF5LmMgKGdmY190cmFuc19kZWFsbG9jX2FsbG9jYXRlZCk6IFRha2UgYQoJdHJlZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgYXJyYXkgdG8gYmUgZGVhbGxvY2F0ZWQgYXMgYXJndW1lbnQKCWluc3RlYWQgb2YgaXRzIGdmY19zeW1ib2wuCgkoZ2ZjX3RyYW5zX2RlZmVycmVkX2FycmF5KTogVXBkYXRlIGNhbGwgdG8KCWdmY190cmFuc19kZWFsbG9jX2FsbG9jYXRlZC4KCSogdHJhbnMtYXJyYXkuaCAoZ2ZjX3RyYW5zX2RlYWxsb2NfYWxsb2NhdGVkKTogVXBkYXRlCglwcm90b3R5cGUuCgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2NvbnZfZnVuY3Rpb25fY2FsbCk6IFVwZGF0ZSBjYWxsIHRvCglnZmNfdHJhbnNfZGVhbGxvY19hbGxvY2F0ZWQsIGdldCBpbmRpcmVjdCByZWZlcmVuY2UgdG8gZHVtbXkKCWFyZ3VtZW50cy4KCjIwMDYtMDQtMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIGZvcnRyYW4vMjUyNzAKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX3RyYW5zX2FsbG9jYXRlX2FycmF5X3N0b3JhZ2UpOiBJbiBhcnJheSBpbmRleAoJY2FsY3VsYXRpb25zIHVzZSBnZmNfaW5kZXhfemVyb19ub2RlIGFuZCBnZmNfaW5kZXhfb25lX25vZGUgaW5zdGVhZAoJb2YgaW50ZWdlcl96ZXJvX25vZGUgYW5kIGludGVnZXJfb25lX25vZGUgcmVzcGVjdGl2ZWx5LgoJKGdmY19jb252X2FycmF5X3RyYW5zcG9zZSk6IExpa2V3aXNlLgoJKGdmY19jb252X3NzX3N0YXJ0c3RyaWRlKTogTGlrZXdpc2UuCgkoZ2ZjX3RyYW5zX2R1bW15X2FycmF5X2JpYXMpOiBMaWtld2lzZS4KCjIwMDYtMDQtMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZGVwZW5kZW5jeS5jIChnZmNfaXNfaW5zaWRlX3JhbmdlKTogRGVsZXRlLgoJKGdmY19jaGVja19lbGVtZW50X3ZzX3NlY3Rpb24pOiBTaWduaWZpY2FudCByZXdyaXRlLgoKMjAwNi0wNC0wMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkZXBlbmRlbmN5LmMgKGdmY19kZXBfY29tcGFyZV9leHByKTogU3RyaXAgcGFyZW50aGVzZXMgYW5kIHVuYXJ5CglwbHVzIG9wZXJhdG9ycyB3aGVuIGNvbXBhcmluZyBleHByZXNzaW9ucy4gIEhhbmRsZSBjb21wYXJpc29ucyBvZgoJdGhlIGZvcm0gIlgrQyB2cy4gWCIsICJYIHZzLiBYK0MiLCAiWC1DIHZzLiBYIiBhbmQgIlggdnMuIFgtQyIgd2hlcmUKCUMgaXMgYW4gaW50ZWdlciBjb25zdGFudC4gIEhhbmRsZSBjb21wYXJpc29ucyBvZiB0aGUgZm9ybSAiUCtRIHZzLgoJUitTIiBhbmQgIlAtUSB2cy4gUi1TIi4gIEhhbmRsZSBjb21wYXJpc29ucyBvZiBpbnRlZ3JhbCBleHRlbnNpb25zCglzcGVjaWFsbHkgKGluY3JlYXNpbmcgZnVuY3Rpb25zKSBzbyBleHRlbmQoQSkgPiBleHRlbmQoQiksIHdoZW4gQT5CLgoJKGdmY19jaGVja19lbGVtZW50X3ZzX2VsZW1lbnQpOiBNb3ZlIHRlc3QgbGF0ZXIsIHNvIHRoYXQgd2UgaWdub3JlCgl0aGUgZmFjdCB0aGF0ICJBIDwgQiIgb3IgIkEgPiBCIiB3aGVuIEEgb3IgQiBjb250YWlucyBhIGZvcmFsbCBpbmRleC4KCjIwMDYtMDMtMzEgIEFzaGVyIExhbmd0b24gIDxsYW5ndG9uMkBsbG5sLmdvdj4KCglQUiBmb3J0cmFuLzI1MzU4CgkqIGV4cHIuYyAoZ2ZjX2NoZWNrX2Fzc2lnbik6IEFsbG93IGNyYXkgcG9pbnRlZSB0byBiZSBhc3N1bWVzLXNpemUuCgkKMjAwNi0wMy0zMCAgUGF1bCBUaG9tYXMgPHBhdWx0aG9tYXMyQHdhbmFkb28uZnI+CgkgICAgQnVkIERhdmlzICA8YmRhdmlzOTY1OUBzYmNnbG9iYWwubmV0PgoKCVBSIDIxMTMwCgkqIG1vZHVsZS5jIChsb2FkX25lZWRlZCk6IFRyYXZlcnNlIGVudGlyZSB0cmVlIGJlZm9yZSByZXR1cm5pbmcuCgoyMDA2LTAzLTMwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzIyMzc1CgkqIHRyYW5zLmMgKGdmY190cmFuc19ydW50aW1lX2NoZWNrKTogUHJvbW90ZSB0aGUgYXJndW1lbnRzIG9mCglfX2J1aWx0aW5fZXhwZWN0IHRvIHRoZSBjb3JyZWN0IHR5cGVzLCBhbmQgdGhlIHJlc3VsdCBiYWNrIHRvCglib29sZWFuX3R5cGVfbm9kZS4KCjIwMDYtMDMtMjkgIENhcmxvcyBPJ0RvbmVsbCAgPGNhcmxvc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluOiBSZW5hbWUgZG9jZGlyIHRvIGdjY19kb2NkaXIuCgoyMDA2LTAzLTI4ICBTdGV2ZW4gRy4gS2FyZ2wgIDxrYXJnbHNAY29tY2FzdC5uZXQ+CgoJKiBpbnRyaW5zaWMudGV4aTogcy9mbG9vci9mbG9hdCBpbiBwcmV2aW91cyBjb21taXQuCgoyMDA2LTAzLTI4IFBhdWwgVGhvbWFzIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI2Nzc5CgkqIHJlc29sdmUuYyAocmVzb2x2ZV9mbF9wcm9jZWR1cmUpOiBEbyBub3QgY2hlY2sgdGhlIGFjY2VzcyBvZgoJZGVyaXZlZCB0eXBlcyBmb3IgaW50ZXJuYWwgcHJvY2VkdXJlcy4KCjIwMDYtMDMtMjcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogaW8uYyAoY2hlY2tfaW9fY29uc3RyYWludHMpOiBEb24ndCBsb29rIGF0CglkdC0+YWR2YW5jZS0+dmFsdWUuY2hhcmF0ZXIuc3RyaW5nLCB1bmxlc3MgaXQgaXMgYSBDSEFSQUNURVIKCWNvbnN0YW50LgoKCSogZjk1LWxhbmcuYyAoZ2ZjX2dldF9hbGlhc19zZXQpOiBOZXcgZnVuY3Rpb24uCgkoTEFOR19IT09LU19HRVRfQUxJQVNfU0VUKTogRGVmaW5lLgoKMjAwNi0wMy0yNSAgU3RldmVuIEcuIEthcmdsICA8a2FyZ2xzQGNvbWNhc3QubmV0PgoKCVBSIGZvcnRyYW4vMjY4MTYKCSogaW50cmluc2ljLmMgKGFkZF9mdW5jdGlvbnMpOiBBbGxvdyBGTE9BVCB0byBhY2NlcHQgYWxsIGludGVnZXIga2luZHMuCgkqIGludHJpbnNpYy50ZXhpOiBEb2N1bWVudCBGTE9BVC4KCjIwMDYtMDMtMjUgIFRob21hcyBLb2VuaWcgIDxUaG9tYXMuS29lbmlnQG9ubGluZS5kZT4KCglQUiBmb3J0cmFuLzI2NzY5CgkqIGlyZXNvbHZlLmMgKGdmY19yZXNvbHZlX3Jlc2hhcGUpOiAgUmVtb3ZlIGRvdWJsaW5nIG9mCglraW5kIGZvciBjb21wbGV4LiBGb3IgcmVhbChraW5kPTEwKSwgY2FsbCByZXNoYXBlX3IxMC4KCShnZmNfcmVzb2x2ZV90cmFuc3Bvc2UpOiAgRm9yIHJlYWwoa2luZD0xMCksIGNhbGwKCXRyYW5zcG9zZV9yMTAuCgoyMDA2LTAzLTI1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGRlcGVuZGVuY3kuYyAoZ2ZjX2NoZWNrX2RlcGVuZGVuY3kpOiBJbXByb3ZlIGhhbmRsaW5nIG9mIHBvaW50ZXJzOwoJVHdvIHZhcmlhYmxlcyBvZiBkaWZmZXJlbnQgdHlwZXMgY2FuJ3QgaGF2ZSBhIGRlcGVuZGVuY3ksIGFuZCB0d28KCXZhcmlhYmxlcyB3aXRoIHRoZSBzYW1lIHN5bWJvbCBhcmUgZXF1YWwsIGV2ZW4gaWYgcG9pbnRlcnMuCgoyMDA2LTAzLTI0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGdmb3J0cmFuLmggKGdmY19zeW1ib2wpOiBBZGQgYSBuZXcgImZvcmFsbF9pbmRleCIgYml0IGZpZWxkLgoJKiBtYXRjaC5jIChtYXRjaF9mb3JhbGxfaXRlcmF0b3IpOiBTZXQgZm9yYWxsX2luZGV4IGZpZWxkIG9uCgl0aGUgaXRlcmF0aW9uIHZhcmlhYmxlJ3Mgc3ltYm9sLgoJKiBkZXBlbmRlbmN5LmMgKGNvbnRhaW5zX2ZvcmFsbF9pbmRleF9wKTogTmV3IGZ1bmN0aW9uIHRvCgl0cmF2ZXJzZSBhIGdmY19leHByIHRvIGNoZWNrIHdoZXRoZXIgaXQgY29udGFpbnMgYSB2YXJpYWJsZQoJd2l0aCBmb3JhbGxfaW5kZXggc2V0IGluIGl0J3Mgc3ltYm9sLgoJKGdmY19jaGVja19lbGVtZW50X3ZzX2VsZW1lbnQpOiBSZXR1cm4gR0ZDX0RFUF9FUVVBTCBmb3Igc2NhbGFyCgljb25zdGFudCBleHByZXNzaW9ucyB0aGF0IGRvbid0IHZhcmlhYmxlcyB1c2VkIGFzIEZPUkFMTCBpbmRpY2VzLgoKMjAwNi0wMy0yMiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBkcml2ZXIvMjI2MDAKCSogZXJyb3IuYyAoZ2ZjX2ZhdGFsX2Vycm9yKTogUmV0dXJuIElDRV9FWElUX0NPREUgaW5zdGVhZCBvZiA0LgoKMjAwNi0wMy0yMiAgVGhvbWFzIEtvZW5pZyAgPFRob21hcy5Lb2VuaWdAb25saW5lLmRlPgoKCVBSIGZvcnRyYW4vMTkzMDMKCSogZ2ZvcnRyYW4uaCAoZ2ZjX29wdGlvbl90KTogIEFkZCByZWNvcmRfbWFya2VyLgoJKiBsYW5nLm9wdDogIEFkZCAtZnJlY29yZC1tYXJrZXI9NCBhbmQgLWZyZWNvcmQtbWFya2VyPTguCgkqIHRyYW5zLWRlY2wuYzogIEFkZCBnZm9yX2ZuZGVjbF9zZXRfcmVjb3JkX21hcmtlci4KCShnZmNfYnVpbGRfYnVpbHRpbl9mdW5jdGlvbl9kZWNscyk6IFNldAoJZ2Zvcl9mbmRlY2xfc2V0X3JlY29yZF9tYXJrZXIuCgkoZ2ZjX2dlbmVyYXRlX2Z1bmN0aW9uX2NvZGUpOiAgSWYgd2UgYXJlIGluIHRoZSBtYWluIHByb2dyYW0KCWFuZCAtZnJlY29yZC1tYXJrZXIgd2FzIHByb3ZpZGVkLCBjYWxsIHNldF9yZWNvcmRfbWFya2VyLgoJKiBvcHRpb25zLmMgKGdmY19oYW5kbGVfb3B0aW9uKTogIEFkZCBoYW5kbGluZyBmb3IKCS1mcmVjb3JkLW1hcmtlcj00IGFuZCAtZnJlY29yZC1tYXJrZXI9OC4KCSogaW52b2tlLnRleGk6ICBEb2N1bWVudCAtZnJlY29yZC1tYXJrZXIuCgoyMDA2LTAzLTIyICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMTcyOTgKCSogdHJhbnMtaW50cmluc2ljLmMgKGdmY19jb252X2ludHJpbnNpY19hcnJheV90cmFuc2Zlcik6IE5ldwoJZnVuY3Rpb24gdG8gaW1wbGVtZW50IGFycmF5IHZhbHVlZCBUUkFOU0ZFUiBpbnRyaW5zaWMuCgkoZ2ZjX2NvbnZfaW50cmluc2ljX2Z1bmN0aW9uKTogQ2FsbCB0aGUgbmV3IGZ1bmN0aW9uIGlmIFRSQU5TRkVSCglhbmQgbm9uLW51bGwgc2UtPnNzLgoJKGdmY193YWxrX2ludHJpbnNpY19mdW5jdGlvbik6IFRyZWF0IFRSQU5TRkVSIGFzIG9uZSBvZiB0aGUKCXNwZWNpYWwgY2FzZXMgYnkgY2FsbGluZyBnZmNfd2Fsa19pbnRyaW5zaWNfbGliZnVuYyBkaXJlY3RseS4KCjIwMDYtMDMtMjEgIFRvb24gTW9lbmUgIDx0b29uQG1vZW5lLmluZGl2Lm5sdXVnLm5sPgoKCSogb3B0aW9ucy5jIChnZmNfaW5pdF9vcHRpb25zKTogSW5pdGlhbGl6ZQoJZmxhZ19hcmd1bWVudF9ub2FsaWFzIHRvIDMuCgoyMDA2LTAzLTIwICBUaG9tYXMgS29lbmlnICA8VGhvbWFzLktvZW5pZ0BvbmxpbmUuZGU+CgoJUFIgZm9ydHJhbi8yMDkzNQoJKiBpcmVzb2x2ZS5jIChnZmNfcmVzb2x2ZV9tYXhsb2MpOiAgIElmIG1hc2sgaXMgc2NhbGFyLAoJcHJlZml4IHRoZSBmdW5jdGlvbiBuYW1lIHdpdGggYW4gInMiLiAgSWYgdGhlIG1hc2sgaXMgc2NhbGFyCglvciBpZiBpdHMga2luZCBpcyBzbWFsbGVyIHRoYW4gZ2ZjX2RlZmF1bHRfbG9naWNhbF9raW5kLAoJY29lcmNlIGl0IHRvIGRlZmF1bHQga2luZC4KCShnZmNfcmVzb2x2ZV9tYXh2YWwpOiAgTGlrZXdpc2UuCgkoZ2ZjX3Jlc29sdmVfbWlubG9jKTogIExpa2V3aXNlLgoJKGdmY19yZXNvbHZlX21pbnZhbCk6ICBMaWtld2lzZS4KCShnZmNfcmVzb2x2ZV9wcm9kdWN0KTogIExpa2V3aXNlLgoJKGdmY19yZXNvbHZlX3N1bSk6ICBMaWtld2lzZS4KCjIwMDYtMDMtMTkgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNjc0MQoJKmV4cHIuYyAoZXh0ZXJuYWxfc3BlY19mdW5jdGlvbik6IFBlcm1pdCBlbGVtZW50YWwgZnVuY3Rpb25zLgoKCVBSIGZvcnRyYW4vMjY3MTYKCSppbnRlcmZhY2UuYyAoY29tcGFyZV9hY3R1YWxfZm9ybWFsKTogRGV0ZWN0IGNhbGwgZm9yIHByb2NlZHVyZQoJdXNhZ2UgYW5kIHJlcXVpcmUgcmFuayBjaGVja2luZywgaW4gdGhpcyBjYXNlLCBmb3IgYXNzdW1lZCBzaGFwZQoJYW5kIGRlZmVycmVkIHNoYXBlIGFycmF5cy4KCShnZmNfcHJvY2VkdXJlX3VzZSk6IFJldmVydCB0byBwcmUtUFIyNTA3MCBjYWxsIHRvCgljb21wYXJlX2FjdHVhbF9mb3JtYWwgdGhhdCBkb2VzIG5vdCByZXF1aXJlIHJhbmsgY2hlY2tpbmcuLgoKMjAwNi0wMy0xNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBnZm9ydHJhbi5oIChnZmNfZXF1aXZfaW5mbyk6IEFkZCBsZW5ndGggZmllbGQuCgkqIHRyYW5zLWNvbW1vbi5jIChjb3B5X2VxdWl2X2xpc3RfdG9fbnMpOiBTZXQgdGhlIGxlbmd0aCBmaWVsZC4KCSogZGVwZW5kZW5jeS5jIChnZmNfYXJlX2VxdWl2YWxlbmNlZF9hcnJheXMpOiBVc2UgYm90aCB0aGUgb2Zmc2V0CglhbmQgbGVuZ3RoIGZpZWxkcyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgdHdvIGVxdWl2YWxlbmNlZCBzeW1ib2xzCglvdmVybGFwIGluIG1lbW9yeS4KCjIwMDYtMDMtMTQgIEplcnJ5IERlTGlzbGUgIDxqdmRlbGlzbGVAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8xOTEwMQoJKiBnZm9ydHJhbi5oOiBBZGQgd2Fybl9hbXBlcnNhbmQuCgkqIGludm9rZS50ZXhpOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgbmV3IG9wdGlvbi4KCSogbGFuZy5vcHQ6IEFkZCBXYW1wZXJzYW5kLgoJKiBvcHRpb25zLmMgKGdmY19pbml0X29wdGlvbnMpOiBJbml0aWFsaXplIHdhcm5fYW1wZXJzYW5kLgoJKGdmY19wb3N0X29wdGlvbnMpOiBTZXQgdGhlIHdhcm4gaWYgcGVkYW50aWMuCgkoc2V0X1dhbGwpOiBTZXQgd2Fybl9hbXBlcnNhbmQuCgkoZ2ZjX2hhbmRsZV9vcHRpb246IEFkZCBXYW1wZXJzYW5kIGZvciBpdHNlbGYsIC1zdGQ9Zjk1LCBhbmQgLXN0ZD1mMjAwMy4KCSogc2Nhbm5lci5jIChnZmNfbmV4dF9jaGFyX2xpdGVyYWwpOiBBZGQgdGVzdCBmb3IgbWlzc2luZyAnJicgaW4KCWNvbnRpbnVlZCBjaGFyYWN0ZXIgY29uc3RhbnQgYW5kIGdpdmUgd2FybmluZyBpZiBtaXNzaW5nLgoKMjAwNi0wMy0xNCAgU3RldmVuIEcuIEthcmdsICA8a2FyZ2xzQGNvbWNhc3QubmV0PgoKCVBSIDE4NTM3CgkqIGdmb3J0cmFuLmg6IFdyYXAgQ29weXJpZ2h0IGxpbmUuCgkoZ2ZjX29wdGlvbl90KTogYWRkIHdhcm5fdGFicyBtZW1iZXIuCgkqIGxhbmcub3B0OiBVcGRhdGUgQ295cmlnaHQgeWVhci4gIEFkZCB0aGUgV3RhYnMuCgkqIGludm9rZS50ZXhpOiBEb2N1bWVudCAtV3RhYnMuCgkqIHNjYW5uZXIuYyAoZ2ZjX2dvYmJsZV93aGl0ZXNwYWNlKTogVXNlIHdhcm5fdGFicy4gIEFkZCBsaW5lbnVtIHRvCglzdXBwcmVzcyBtdWx0aXBsZSB3YXJuaW5ncy4KCShsb2FkX2xpbmUpOiBVc2Ugd2Fybl90YWJzLiAgQWRkIGxpbmVudW0sIGN1cnJlbnRfbGluZSwgc2Vlbl9jb21tZW50Cgl0byBzdXBwcmVzcyBtdWx0aXBsZSB3YXJuaW5ncy4KCSogb3B0aW9ucy5jIChnZmNfaW5pdF9vcHRpb25zKTogSW5pdGlhbGl6ZSB3YXJuX3RhYnMuCgkoc2V0X1dhbGwpOiBzZXQgd2Fybl90YWJzIGZvciAtV2FsbC4KCShnZmNfcG9zdF9vcHRpb25zKTogQWRqdXN0IGZsYWdfdGFicyBkZXBlbmRpbmcgb24gLXBlZGFudGljLgoJKGdmY19oYW5kbGVfb3B0aW9uKTogIFByb2Nlc3MgY29tbWFuZC1saW5lIG9wdGlvbiAtV1tuby1ddGFicwoKMjAwNi0wMy0xMyAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI1Mzc4CgkqIHRyYW5zLWludHJpbnNpYy5jIChnZmNfY29udl9pbnRyaW5zaWNfbWlubWF4bG9jKTogU2V0IHRoZSBpbml0aWFsIHBvc2l0aW9uIHRvIHplcm8gYW5kCgltb2RpZnkgdGhlIGNvbmRpdGlvbiBmb3IgdXBkYXRpbmcgaXQsIHRvIGltcGxlbWVudCB0aGUgRjIwMDMgcmVxdWlyZW1lbnQgZm9yIGFsbChtYXNrKQoJaXMgZmFsc2UuCgoyMDA2LTAzLTEzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHRyYW5zLW9wZW5tcC5jIChnZmNfdHJhbnNfb21wX3ZhcmlhYmxlKTogSGFuZGxlIHJlZmVyZW5jZXMKCXRvIHBhcmVudCByZXN1bHQuCgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2NvbnZfdmFyaWFibGUpOiBSZW1vdmUgdXNlbGVzcyBzZXR0aW5nCglvZiBwYXJlbnRfZmxhZywgZm9ybWF0dGluZy4KCgkqIHRyYW5zLWRlY2wuYyAoZ2ZjX2dldF9mYWtlX3Jlc3VsdF9kZWNsKTogUmUtYWRkIHNldHRpbmcgb2YKCUdGQ19ERUNMX1JFU1VMVCBmbGFnLgoKMjAwMy0wMy0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkZXBlbmRlbmN5LmMgKGdmY19kZXBfY29tcGFyZV9leHByKSA8RVhQUl9PUD46IEFsbG93IHVuYXJ5IGFuZAoJYmluYXJ5IG9wZXJhdG9ycyB0byBjb21wYXJlIGVxdWFsIGlmIHRoZWlyIG9wZXJhbmRzIGFyZSBlcXVhbC4KCTxFWFBSX0ZVTkNUSU9OPjogQWxsb3cgImNvbnN0YW50IiBpbnRyaW5zaWMgY29udmVyc2lvbiBmdW5jdGlvbnMKCXRvIGNvbXBhcmUgZXF1YWwsIGlmIHRoZWlyIG9wZXJhbmRzIGFyZSBlcXVhbC4KCjIwMDYtMDMtMTEgIEVyaWsgRWRlbG1hbm4gIDxlZWRlbG1hbkBnY2MuZ251Lm9yZz4KCgkqIHN5bWJvbC5jIChjaGVja19jb25mbGljdCk6IEFsbG93IGFsbG9jYXRhYmxlIGZ1bmN0aW9uIHJlc3VsdHMsCglleGNlcHQgZm9yIGVsZW1lbnRhbCBmdW5jdGlvbnMuCgkqIHRyYW5zLWFycmF5LmMgKGdmY190cmFuc19hbGxvY2F0ZV90ZW1wX2FycmF5KTogUmVuYW1lIHRvIC4uLgoJKGdmY190cmFuc19jcmVhdGVfdGVtcF9hcnJheSk6IC4uLiB0aGlzLCBhbmQgYWRkIG5ldyBhcmd1bWVudAoJY2FsbGVlX2FsbG9jLgoJKGdmY190cmFuc19hcnJheV9jb25zdHJ1Y3RvciwgZ2ZjX2NvbnZfbG9vcF9zZXR1cCk6IFVwZGF0ZSBjYWxsCgl0byBnZmNfdHJhbnNfYWxsb2NhdGVfdGVtcF9hcnJheS4KCSogdHJhbnMtYXJyYXkuaCAoZ2ZjX3RyYW5zX2FsbG9jYXRlX3RlbXBfYXJyYXkpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiB0cmFucy1leHByLmMgKGdmY19jb252X2Z1bmN0aW9uX2NhbGwpOiBVc2UgbmV3IGFyZyBvZgoJZ2ZjX3RyYW5zX2NyZWF0ZV90ZW1wX2FycmF5IGF2b2lkIHByZS1hbGxvY2F0aW9uIG9mIHRlbXBvcmFyeQoJcmVzdWx0IHZhcmlhYmxlcyBvZiBwb2ludGVyIEFORCBhbGxvY2F0YWJsZSBmdW5jdGlvbnMuCgkoZ2ZjX3RyYW5zX2FycmF5ZnVuY19hc3NpZ24pOiBSZXR1cm4gTlVMTCBmb3IgYWxsb2NhdGFibGUKCWZ1bmN0aW9ucy4KCSogcmVzb2x2ZS5jIChyZXNvbHZlX3N5bWJvbCk6IENvcHkgdmFsdWUgb2YgJ2FsbG9jYXRhYmxlJyBhdHRyaWJ1dGUKCWZyb20gc3ltLT5yZXN1bHQgdG8gc3ltLgoKMjAwNi0wMy0wOSAgRXJpayBFZGVsbWFubiAgPGVlZGVsbWFuQGdjYy5nbnUub3JnPgoKCSogdHJhbnMtZXhwci5jIChnZmNfYWRkX2ludGVyZmFjZV9tYXBwaW5nKTogQ29weSAnYWxsb2NhdGFibGUnCglhdHRyaWJ1dGUgZnJvbSBzeW0gdG8gbmV3X3N5bS4gIENhbGwgYnVpbGRfZm9sZF9pbmRpcmVjdF9yZWYoKQoJZm9yIGFsbG9jYXRhYmxlIGFyZ3VtZW50cy4KCjIwMDYtMDMtMDkgUGF1bCBUaG9tYXMgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjYyNTcKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX2NvbnZfZXhwcl9kZXNjcmlwdG9yKTogRXhjbHVkZSBjYWxjdWxhdGlvbiBvZgoJdGhlIG9mZnNldCBhbmQgZGF0YSB3aGVuIHNlLT5kYXRhX25vdF9uZWVkZWQgaXMgc2V0LgoJKiB0cmFucy5oOiBJbmNsdWRlIHRoZSBkYXRhX25vdF9uZWVkIGJpdCBpbiBnZmNfc2UuCgkqIHRyYW5zLWludHJpbnNpYy5jIChnZmNfY29udl9pbnRyaW5zaWNfc2l6ZSk6IFNldCBpdCBmb3IgU0laRS4KCjIwMDYtMDMtMDYgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgkgICAgRXJpayBFZGVsbWFubiAgPGVlZGVsbWFuQGdjYy5nbnUub3JnPgoKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX3RyYW5zX2RlYWxsb2NfYWxsb2NhdGVkKTogTmV3IGZ1bmN0aW9uLgoJKGdmY190cmFuc19kZWZlcnJlZF9hcnJheSk6IFVzZSBpdCwgaW5zdGVhZCBvZiBpbmxpbmUgY29kZS4KCSogdHJhbnMtYXJyYXkuaDogUHJvdG90eXBlIGZvciBnZmNfdHJhbnNfZGVhbGxvY19hbGxvY2F0ZWQoKS4KCSogdHJhbnMtZXhwci5jIChnZmNfY29udl9mdW5jdGlvbl9jYWxsKTogRGVhbGxvY2F0ZSBhbGxvY2F0ZWQKCUFMTE9DQVRBQkxFLCBJTlRFTlQoT1VUKSBhcmd1bWVudHMgdXBvbiBwcm9jZWR1cmUgZW50cnkuCgoyMDA2LTAzLTA2ICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjYxMDcKCSogcmVzb2x2ZS5jIChyZXNvbHZlX2Z1bmN0aW9uKTogQWRkIG5hbWUgYWZ0ZXIgdGVzdCBmb3IgcHVyZW5lc3MuCgoJUFIgZm9ydHJhbi8xOTU0NgoJKiB0cmFucy1leHByLmMgKGdmY19jb252X3ZhcmlhYmxlKTogRGV0ZWN0IHJlZmVyZW5jZSB0byBwYXJlbnQgcmVzdWx0LAoJc3RvcmUgY3VycmVudF9mdW5jdGlvbl9kZWNsLCByZXBsYWNlIHdpdGggcGFyZW50LCB3aGlsc3QgY2FsbHMgYXJlCgltYWRlIHRvIGdmY19nZXRfZmFrZV9yZXN1bHRfZGVjbCwgYW5kIHJlc3RvcmUgYWZ0ZXJ3YXJkcy4gU2lnbmFsIHRoaXMKCXRvIGdmY19nZXRfZmFrZV9yZXN1bHRfZGVjbCB3aXRoIGEgbmV3IGFyZ3VtZW50LCBwYXJlbnRfZmxhZy4KCSogdHJhbnMtc3RtdC5jIChnZmNfdHJhbnNfcmV0dXJuKTogZ2ZjX2dldF9mYWtlX3Jlc3VsdF9kZWNsIDJuZCBhcmcKCWlzIHNldCB0byB6ZXJvLgoJKiB0cmFucy5oOiBBZGQgcGFyZW50X2ZsYWcgdG8gZ2ZjX2dldF9mYWtlX3Jlc3VsdF9kZWNsIHByb3RvdHlwZS4KCSogdHJhbnMtZGVjbC5jIChnZmNfZ2V0X2Zha2VfcmVzdWx0X2RlY2wpOiBPbiBwYXJlbnRfZmxhZywgYmVpbmcgc2V0LAoJYWRkIGRlY2wgdG8gcGFyZW50IGZ1bmN0aW9uLiBSZXBsYWNlIHJlZnMgdG8gY3VycmVudF9mYWtlX3Jlc3VsdF9kZWNsCgl3aXRoIHJlZnMgdG8gdGhpc19yZXN1bHRfZGVjbC4KCShnZmNfZ2VuZXJhdGVfZnVuY3Rpb25fY29kZSk6IE51bGwgcGFyZW50X2Zha2VfcmVzdWx0X2RlY2wgYmVmb3JlIHRoZQoJdHJhbnNsYXRpb24gb2YgY29kZSBmb3IgY29udGFpbmVkIHByb2NlZHVyZXMuIFNldCBwYXJlbnRfZmxhZyB0byB6ZXJvCglpbiBjYWxsIHRvIGdmY19nZXRfZmFrZV9yZXN1bHRfZGVjbC4KCSogdHJhbnMtaW50cmluc2ljLmMgKGdmY19jb252X2ludHJpbnNpY19sZW4pOiBUaGUgc2FtZS4KCjIwMDYtMDMtMDUgIFN0ZXZlbiBHLiBLYXJnbCAgPGthcmdsc0Bjb21jYXN0Lm5ldD4KCgkqIHNpbXBsaWZ5LmMgKGdmY19zaW1wbGlmeV92ZXJpZnkpOiAgRml4IHJldHVybiB3aGVuIFNFVD0nJy4KCjIwMDYtMDMtMDUgIEVyaWsgRWRlbG1hbm4gIDxlZWRlbG1hbkBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzE2MTM2CgkqIHN5bWJvbC5jIChjb25mX3N0ZCk6IE5ldyBtYWNyby4KCShjaGVja19jb25mbGljdCk6IFVzZSBpdCB0byBhbGxvdyBBTExPQ0FUQUJMRSBkdW1teQoJYXJndW1lbnRzIGZvciBGMjAwMy4KCSogdHJhbnMtZXhwci5jIChnZmNfY29udl9mdW5jdGlvbl9jYWxsKTogUGFzcyB0aGUKCWFkZHJlc3Mgb2YgdGhlIGFycmF5IGRlc2NyaXB0b3Igd2hlbiBkdW1teSBhcmd1bWVudCBpcwoJQUxMT0NBVEFCTEUuCgkqIGludGVyZmFjZS5jIChjb21wYXJlX2FsbG9jYXRhYmxlKTogTmV3IGZ1bmN0aW9uLgoJKGNvbXBhcmVfYWN0dWFsX2Zvcm1hbCk6IFVzZSBpdC4KCSogcmVzb2x2ZS5jIChyZXNvbHZlX2RlYWxsb2NhdGVfZXhwciwKCXJlc29sdmVfYWxsb2NhdGVfZXhwcik6IENoZWNrIHRoYXQgSU5URU5UKElOKSB2YXJpYWJsZXMKCWFyZW4ndCAoZGUpYWxsb2NhdGVkLgoJKiBnZm9ydHJhbi50ZXhpIChGb3J0cmFuIDIwMDMgc3RhdHVzKTogTGlzdCBBTExPQ0FUQUJMRQoJZHVtbXkgYXJndW1lbnRzIGFzIHN1cHBvcnRlZC4KCjIwMDYtMDMtMDMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZGVwZW5kZW5jeS5jIChnZmNfY2hlY2tfZWxlbWVudF92c19lbGVtZW50KTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoKMjAwNi0wMy0wMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkZXBlbmRlbmN5LmMgKGdmY19jaGVja19lbGVtZW50X3ZzX2VsZW1lbnQpOiBDb25zaWRlciB0d28KCXVub3JkZXJlZCBzY2FsYXIgc3Vic2NyaXB0cyBhcyAocG90ZW50aWFsbHkpIGVxdWFsLgoKMjAwNi0wMy0wMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkZXBlbmRlbmN5LmMgKGdmY19jaGVja19kZXBlbmRlbmN5KTogQ2FsbCBnZmNfZGVwX3Jlc29sdmVyIHRvCgljaGVjayB3aGV0aGVyIHR3byBhcnJheSByZWZlcmVuY2VzIGhhdmUgYSBkZXBlbmRlbmN5LgoJKGdmY19jaGVja19lbGVtZW50X3ZzX2VsZW1lbnQpOiBBc3N1bWUgbHJlZiBhbmQgcnJlZiBtdXN0IGJlCglSRUZfQVJSQVlzLiAgSWYgZ2ZjX2RlcF9jb21wYXJlX2V4cHIgcmV0dXJucyAtMiwgYXNzdW1lIHRoZXNlCglyZWZlcmVuY2VzIGNvdWxkIHBvdGVudGlhbGx5IG92ZXJsYXAuCgkoZ2ZjX2RlcF9yZXNvbHZlcik6IFdoaXRlc3BhY2UgYW5kIGNvbW1lbnQgdHdlYWtzLiAgQXNzdW1lIGEKCWRlcGVuZGVuY3kgaWYgdGhlIHJlZmVyZW5jZXMgaGF2ZSBkaWZmZXJlbnQgZGVwdGhzLiAgUmV3cml0ZQoJZmluYWwgdGVybSB0byBjbGFycmlmeSB3ZSBvbmx5IGhhdmUgYSBkZXBlbmRlbmN5IGZvciBvdmVybGFwcy4KCjIwMDYtMDMtMDMgIFRob21hcyBLb2VuaWcgIDxUaG9tYXMuS29lbmlnQG9ubGluZS5kZT4KCglQUiBmb3J0cmFuLzI1MDMxCgkqIHRyYW5zLWFycmF5Lmg6ICBBZGp1c3QgZ2ZjX2FycmF5X2FsbG9jYXRlIHByb3RvdHlwZS4KCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX2FycmF5X2FsbG9jYXRlKTogIENoYW5nZSB0eXBlIG9mCglnZmNfYXJyYXlfYWxsb2NhdGF0ZSB0byBib29sLiAgRnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmCglpdCBvcGVyYXRlcyBvbiBhbiBhcnJheS4gIENoYW5nZSBzZWNvbmQgYXJndW1lbnQgdG8gZ2ZjX2V4cHIuCglGaW5kIGxhc3QgcmVmZXJlbmNlIGluIGNoYWluLgoJSWYgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uIGFuIGFsbG9jYXRhYmxlIGFycmF5LCBlbWl0IGNhbGwgdG8KCWFsbG9jYXRlX2FycmF5KCkgb3IgYWxsb2NhdGU2NF9hcnJheSgpLgoJKiB0cmFucy1zdG10LmMgKGdmY190cmFuc19hbGxvY2F0ZSk6ICBDb2RlIHRvIGZvbGxvdyB0byBsYXN0CglyZWZlcmVuY2UgaGFzIGJlZW4gbW92ZWQgdG8gZ2ZjX2FycmF5X2FsbG9jYXRlLgoJKiB0cmFucy5oOiAgQWRkIGRlY2xhcmF0aW9uIGZvciBnZm9yX2ZuZGVjbF9hbGxvY2F0ZV9hcnJheSBhbmQKCWdmb3JfZm5kZWNsX2FsbG9jYXRlNjRfYXJyYXkuCgkoZ2ZjX2J1aWxkX2J1aWx0aW5fZnVuY3Rpb25fZGVjbHMpOiAgQWRkIGdmb3JfZm5kZWNsX2FsbG9jYXRlX2FycmF5CglhbmQgZ2Zvcl9mbmRlY2xfYWxsb2NhdGU2NF9hcnJheS4KCjIwMDYtMDMtMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogdHJhbnMtc3RtdC5jIChnZW5lcmF0ZV9sb29wX2Zvcl90ZW1wX3RvX2xocyk6IEFkZCBhbiBhZGRpdGlvbmFsCglJTlZFUlQgYXJndW1lbnQgdG8gaW52ZXJ0IHRoZSBzZW5zZSBvZiB0aGUgV0hFUkVNQVNLIGFyZ3VtZW50LgoJUmVtb3ZlIHVubmVlZGVkIGNvZGUgdG8gQU5EIHRvZ2V0aGVyIGEgbGlzdCBvZiBtYXNrcy4KCShnZW5lcmF0ZV9sb29wX2Zvcl9yaHNfdG9fdGVtcCk6IExpa2V3aXNlLgoJKGdmY190cmFuc19hc3NpZ25fbmVlZF90ZW1wKTogTGlrZXdpc2UuCgkoZ2ZjX3RyYW5zX2ZvcmFsbF8xKTogTGlrZXdpc2UuCgkoZ2ZjX2V2YWx1YXRlX3doZXJlX21hc2spOiBMaWtld2lzZSwgYWRkIGEgbmV3IElOVkVSVCBhcmd1bWVudAoJdG8gc3BlY2lmeSB0aGUgc2Vuc2Ugb2YgdGhlIE1BU0sgYXJndW1lbnQuCgkoZ2ZjX3RyYW5zX3doZXJlX2Fzc2lnbik6IExpa2V3aXNlLgoJKGdmY190cmFuc193aGVyZV8yKTogTGlrZXdpc2UuICBSZXN0cnVjdHVyZSBjb2RlIHRoYXQgZGVjaWRlcwoJd2hldGhlciB3ZSBuZWVkIHRvIGFsbG9jYXRlIHplcm8sIG9uZSBvciB0d28gdGVtcG9yYXJ5IG1hc2tzLgoJSWYgdGhpcyBpcyBhIHRvcC1sZXZlbCBXSEVSRSAoaS5lLiB0aGUgaW5jb21pbmcgTUFTSyBpcyBOVUxMKSwKCXdlIG9ubHkgbmVlZCB0byBhbGxvY2F0ZSBhdCBtb3N0IG9uZSB0ZW1wb3JhcnkgbWFzaywgYW5kIGNhbgoJaW52ZXJ0IGl0J3Mgc2Vuc2UgdG8gcHJvdmlkZSB0aGUgY29tcGxlbWVudGFyeSBwZW5kaW5nIGV4ZWN1dGlvbgoJbWFzay4gIE9ubHkgY2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSByZXF1aXJlZCB0ZW1wb3JhcnkgYXJyYXlzCglpZiB3ZSBuZWVkIGFueS4KCShnZmNfdHJhbnNfd2hlcmUpOiBVcGRhdGUgY2FsbCB0byBnZmNfdHJhbnNfd2hlcmVfMi4KCjIwMDYtMDMtMDEgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJKiBpcmVzb2x2ZS5jIChnZmNfcmVzb2x2ZV9kb3RfcHJvZHVjdCk6ICBSZW1vdmUgYW55IGRpZmZlcmVuY2UgaW4KCXRyZWF0bWVudCBvZiBsb2dpY2FsIHR5cGVzLgoJKiB0cmFucy1pbnRyaW5zaWMuYyAoZ2ZjX2NvbnZfaW50cmluc2ljX2RvdF9wcm9kdWN0KTogIE5ldyBmdW5jdGlvbi4gCgoJUFIgZm9ydHJhbi8yNjM5MwoJKiB0cmFucy1kZWNsLmMgKGdmY19nZXRfc3ltYm9sX2RlY2wpOiBFeHRlbmQgY29uZGl0aW9uIHRoYXQgc3ltYm9scwoJbXVzdCBiZSByZWZlcmVuY2VkIHRvIGluY2x1ZGUgdW5yZWZlcmVuY2VkIHN5bWJvbHMgaW4gYW4gaW50ZXJmYWNlCglib2R5LiAKCglQUiBmb3J0cmFuLzIwOTM4CgkqIHRyYW5zLWFycmF5LmMgKGdmY19jb252X3Jlc29sdmVfZGVwZW5kZW5jaWVzKTogQWRkIGNhbGwgdG8KCWdmY19hcmVfZXF1aXZhbGVuY2VkX2FycmF5cy4KCSogc3ltYm9sLmMgKGdmY19mcmVlX2VxdWl2X2luZm9zLCBnZmNfZnJlZV9lcXVpdl9saXN0cyk6IE5ldwoJZnVuY3Rpb25zLiAoZ2ZjX2ZyZWVfbmFtZXNwYWNlKTogQ2FsbCB0aGVtLgoJKiB0cmFucy1jb21tb24uYyAoY29weV9lcXVpdl9saXN0X3RvX25zKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9lcXVpdmFsZW5jZXMpOiBDYWxsIGl0LgoJKiBnZm9ydHJhbi5oOiBBZGQgZXF1aXZfbGlzdHMgdG8gZ2ZjX25hbWVzcGFjZSBhbmQgZGVmaW5lCglnZmNfZXF1aXZfbGlzdCBhbmQgZ2ZjX2VxdWl2X2luZm8uCgkqIGRlcGVuZGVuY3kuYyAoZ2ZjX2FyZV9lcXVpdmFsZW5jZWRfYXJyYXlzKTogTmV3IGZ1bmN0aW9uLgoJKGdmY19jaGVja19kZXBlbmRlbmN5KTogQ2FsbCBpdC4KCSogZGVwZW5kZW5jeS5oOiBQcm90b3R5cGUgZm9yIGdmY19hcmVfZXF1aXZhbGVuY2VkX2FycmF5cy4KCjIwMDYtMDMtMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZGVwZW5kZW5jeS5jIChnZmNfaXNfc2FtZV9yYW5nZSk6IENvbXBhcmUgdGhlIHN0cmlkZSwgbG93ZXIgYW5kCgl1cHBlciBib3VuZHMgd2hlbiB0ZXN0aW5nIGFycmF5IHJlZmVyZW5jZSByYW5nZXMgZm9yIGVxdWFsaXR5LgoJKGdmY19jaGVja19kZXBlbmRlbmN5KTogRml4IGluZGVudGF0aW9uIHdoaXRlc3BhY2UuCgkoZ2ZjX2NoZWNrX2VsZW1lbnRfdnNfZWxlbWVudCk6IExpa2V3aXNlLgoJKGdmY19kZXBfcmVzb2x2ZXIpOiBMaWtld2lzZS4KCjIwMDYtMDItMjggIFRob21hcyBLb2VuaWcgIDxUaG9tYXMuS29lbmlnQG9ubGluZS5kZT4KCgkqIHRyYW5zLWludHJpbnNpYy5jIChnZmNfY29udl9pbnRyaW5zaWNfbWlubWF4bG9jKToKCUlmIHRoZSBtYXNrIGV4cHJlc3Npb24gZXhpc3RzIGFuZCBoYXMgcmFuayAwLCBlbmNsb3NlIHRoZQoJZ2VuZXJhdGVkIGxvb3AgaW4gYW4gImlmIChtYXNrKSIuICBQdXQgdGhlIGRlZmF1bHQKCWluaXRpYWxpemF0aW9uIGludG8gdGhlIGVsc2UgYnJhbmNoLgoKMjAwNi0wMi0yNSAgVGhvbWFzIEtvZW5pZyAgPFRob21hcy5Lb2VuaWdAb25saW5lLmRlPgoKCVBSIGZvcnRyYW4vMjMwOTIKCSogdHJhbnMtaW50cmluc2ljLmMgKGdmY19jb252X2ludHJpbnNpY19hcml0aCk6ICBJZiB0aGUKCW1hc2sgZXhwcmVzc2lvbiBleGlzdHMgYW5kIGhhcyByYW5rIDAsIGVuY2xvc2UgdGhlIGdlbmVyYXRlZAoJbG9vcCBpbiBhbiAiaWYgKG1hc2spIi4KCSogKGdmY19jb252X2ludHJpbnNpY19taW5tYXhsb2MpOiAgTGlrZXdpc2UuCgoyMDA2LTAyLTI0ICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjY0MDkKCSogcmVzb2x2ZS5jIChyZXNvbHZlX2NvbnRhaW5lZF9mdW5jdGlvbnMsIHJlc29sdmVfdHlwZXMsCglnZmNfcmVzb2x2ZSk6IFJldmVydCBwYXRjaCBvZiAyMDA2LTAyLTE5LgoKMjAwNi0wMi0yNCAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI0NTE5CgkqIGRlcGVuZGVuY3kuYyAoZ2ZjX2lzX3NhbWVfcmFuZ2UpOiBDb3JyZWN0IHR5cG8uCgkoZ2ZjX2NoZWNrX3NlY3Rpb25fdnNfc2VjdGlvbik6IENhbGwgZ2ZjX2lzX3NhbWVfcmFuZ2UuCgoJUFIgZm9ydHJhbi8yNTM5NQoJKiB0cmFucy1jb21tb24uYyAoYWRkX2VxdWl2YWxlbmNlcyk6IEFkZCBhIG5ldyBmbGFnIHRoYXQgaXMgc2V0IHdoZW4KCWFuIGVxdWl2YWxlbmNlIGlzIHNlZW4gdGhhdCBwcmV2ZW50cyBtb3JlIGZyb20gYmVpbmcgcmVzZXQgdW50aWwgdGhlCglzdGFydCBvZiBhIG5ldyB0cmF2ZXJzYWwgb2YgdGhlIGxpc3QsIHRodXMgZW5zdXJpbmcgY29tcGxldGlvbiBvZgoJYWxsIHRoZSBlcXVpdmFsZW5jZXMuCgoyMDA2LTAyLTIzICBFcmlrIEVkZWxtYW5uICA8ZWVkZWxtYW5AZ2NjLmdudS5vcmc+CgoJKiBtb2R1bGUuYyAocmVhZF9tb2R1bGUpOiBSZW1vdmUgcmVkdW5kYW50IGNvZGUgbGluZXMuCgoyMDA2LTAyLTIwIFJhZmFlbCDCgcF2aWxhIGRlIEVzcMKB7W5kb2xhIDxyYWZhZWwuZXNwaW5kb2xhQGdtYWlsLmNvbT4KCSogTWFrZS1sYW5nLmluIChGT1JUUkFOKTogUmVtb3ZlCgkoLlBIT05ZKTogUmVtb3ZlIEY5NSBhbmQgZjk1LiBBZGQgZm9ydHJhbgoKMjAwNi0wMi0yMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB0cmFucy1zdG10LmMgKGdmY190cmFuc193aGVyZV8yKTogQXZvaWQgdXBkYXRpbmcgdW51c2VkIGN1cnJlbnQKCWV4ZWN1dGlvbiBtYXNrIGZvciBlbXB0eSBXSEVSRS9FTFNFV0hFUkUgY2xhdXNlcy4gIERvbid0IGFsbG9jYXRlCgl0ZW1wb3JhcnkgbWFzayBhcnJheXMgaWYgdGhleSB3b24ndCBiZSB1c2VkLgoKMjAwNi0wMi0yMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB0cmFucy1zdG10LmMgKGdmY190cmFuc193aGVyZV9hc3NpZ24pOiBSZW1vdmUgY29kZSB0byBoYW5kbGUKCXRyYXZlcnNpbmcgYSBsaW5rZWQgbGlzdCBvZiBNQVNLcy4gIFRoZSBNQVNLIGlzIG5vdyBhbHdheXMgYQoJc2luZ2xlIGVsZW1lbnQgcmVxdWlyaW5nIG5vIEFORGluZyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQuCgoyMDA2LTAyLTE5ICBUaG9tYXMgS29lbmlnICA8VGhvbWFzLktvZW5pZ0BvbmxpbmUuZGU+CgoJKiBnZm9ydHJhbi50ZXhpOiAgRG9jdW1lbnQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdoaWNoCglpbmZsdWVuY2UgcnVudGltZSBiZWhhdmlvci4KCjIwMDYtMDItMTkgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9jb250YWluZWRfZnVuY3Rpb25zKTogQ2FsbCByZXNvbHZlX2VudHJpZXMKCWZpcnN0LgoJKHJlc29sdmVfdHlwZXMpOiBSZW1vdmUgY2FsbHMgdG8gcmVzb2x2ZV9lbnRyaWVzIGFuZAoJcmVzb2x2ZV9jb250YWluZWRfZnVuY3Rpb25zLgoJKGdmY19yZXNvbHZlKTogQ2FsbCByZXNvbHZlX2NvbnRhaW5lZF9mdW5jdGlvbnMuCgoyMDA2LTAyLTE5ICBFcmlrIEVkZWxtYW5uICA8ZWVkZWxtYW5AZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNjIwMQoJKiBpbnRyaW5zaWMuYyAoZ2ZjX2NvbnZlcnRfdHlwZV93YXJuKTogQ2FsbAoJZ2ZjX2ludHJpbnNpY19zeW1ib2woKSBvbiB0aGUgbmV3bHkgY3JlYXRlZCBzeW1ib2wuCgoyMDA2LTAyLTE5ICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjUwNTQKCSogcmVzb2x2ZS5jIChpc19ub25fY29uc3RhbnRfc2hhcGVfYXJyYXkpOiBOZXcgZnVuY3Rpb24uCgkocmVzb2x2ZV9mbF92YXJpYWJsZSk6IFJlbW92ZSBjb2RlIGZvciB0aGUgbmV3IGZ1bmN0aW9uIGFuZCBjYWxsIGl0LgoJKHJlc29sdmVfZmxfbmFtZWxpc3QpOiBOZXcgZnVuY3Rpb24uICBBZGQgdGVzdCBmb3IgbmFtZWxpc3QgYXJyYXkKCXdpdGggbm9uLWNvbnN0YW50IHNoYXBlLCB1c2luZyBpc19ub25fY29uc3RhbnRfc2hhcGVfYXJyYXkuCgkocmVzb2x2ZV9zeW1ib2wpOiBSZW1vdmUgY29kZSBmb3IgcmVzb2x2ZV9mbF9uYW1lbGlzdCBhbmQgY2FsbCBpdC4KCglQUiBmb3J0cmFuLzI1MDg5CgkqIG1hdGNoLmMgKG1hdGNoX25hbWVsaXN0KTogSW5jcmVtZW50IHRoZSByZWZzIGZpZWxkIG9mIGFuIGFjY2VwdGVkCgluYW1lbGlzdCBvYmplY3Qgc3ltYm9sLgoJKiByZXNvbHZlLmMgKHJlc29sdmVfZmxfbmFtZWxpc3QpOiBUZXN0IG5hbWVsaXN0IG9iamVjdHMgZm9yIGEgY29uZmxpY3QKCXdpdGggY29udGFpbmVkIG9yIG1vZHVsZSBwcm9jZWR1cmVzLgoKMjAwNi0wMi0xOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB0cmFucy1zdG10LmMgKHN0cnVjdCB0ZW1wb3JhcnlfbGlzdCk6IERlbGV0ZS4KCShnZmNfdHJhbnNfd2hlcmVfMik6IE1ham9yIHJlb3JnYW5pemF0aW9uLiAgUmVtb3ZlIG5vIGxvbmdlciBuZWVkZWQKCVRFTVAgYXJndW1lbnQuICBBbGxvY2F0ZSBhbmQgZGVhbGxvY2F0ZSB0aGUgY29udHJvbCBtYXNrIGFuZAoJcGVuZGluZyBjb250cm9sIG1hc2sgbG9jYWxseS4KCShnZmNfdHJhbnNfZm9yYWxsXzEpOiBEZWxldGUgVEVNUCBsb2NhbCB2YXJpYWJsZSwgYW5kIHVwZGF0ZQoJY2FsbCB0byBnZmNfdHJhbnNfd2hlcmVfMi4gIE5vIG5lZWQgdG8gZGVhbGxvY2F0ZSBhcnJheXMgYWZ0ZXIuCgkoZ2ZjX2V2YWx1YXRlX3doZXJlX21hc2spOiBNYWpvciByZW9yZ2FuaXphdGlvbi4gIENoYW5nZSByZXR1cm4KCXR5cGUgdG8gdm9pZC4gIFBhc3MgaW4gcGFyZW50IGV4ZWN1dGlvbiBtYXNrLCBNQVNLLCBhbmQgdHdvCglhbHJlYWR5IGFsbG9jYXRlZCBtYXNrIGFycmF5cyBDTUFTSyBhbmQgUE1BU0suICBPbiByZXR1cm4KCUNNQVNLIDo9IE1BU0sgJiBDT05ELCBQTUFTSyA6PSBNQVNLICYgIUNPTkQuICBNQVNLLCBDTUFTSyBhbmQKCUNNQVNLIG1heSBhbGwgYmUgTlVMTCwgb3IgcmVmZXIgdG8gdGhlIHNhbWUgdGVtcG9yYXJ5IGFycmF5cy4KCShnZmNfdHJhbnNfd2hlcmUpOiBVcGRhdGUgY2FsbCB0byBnZmNfdHJhbnNfd2hlcmVfMi4gIFdlIG5vCglsb25nZXIgbmVlZCBhIFRFTVAgdmFyaWFibGUgb3IgdG8gZGVhbGxvY2F0ZSB0ZW1wb3JhcnkgYXJyYXlzCglhbGxvY2F0ZWQgYnkgZ2ZjX3RyYW5zX3doZXJlXzIuCgoyMDA2LTAyLTE4ICAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmVnLm5ldD4KCgkqIGdmb3J0cmFuLmggKGdmY19hZGRfYXR0cmlidXRlKTogQ2hhbmdlIHVpbnQgdG8gdW5zaWduZWQgaW50LgoJKiBzeW1ib2wuYyAoZ2ZjX2FkZF9hdHRyaWJ1dGUpOiBMaWtld2lzZSBmb3IgZGVmaW5pdGlvbi4KCSogcmVzb2x2ZS5jIChyZXNvbHZlX2dsb2JhbF9wcm9jZWR1cmUpOiBMaWtld2lzZSBmb3IgdmFyaWFibGUgJ3R5cGUnLgoKMjAwNi0wMi0xNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmFucy1jb21tb24uYzogSW5jbHVkZSBydGwuaCBlYXJsaWVyLgoJKiB0cmFucy1kZWNsLmM6IExpa2V3aXNlLgoKMjAwNi0wMi0xNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgZm9ydHJhbi8yNjIyNAoJKiBwYXJzZS5jIChwYXJzZV9vbXBfZG8sIHBhcnNlX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrKTogQ2FsbAoJZ2ZjX2NvbW1pdF9zeW1ib2xzIGFuZCBnZmNfd2FybmluZ19jaGVjay4KCgkqIG9wZW5tcC5jIChyZXNvbHZlX29tcF9jbGF1c2VzKTogQWRkIGEgZHVtbXkgY2FzZSBsYWJlbCB0byB3b3JrYXJvdW5kCglQUiBtaWRkbGUtZW5kLzI2MzE2LgoKMjAwNi0wMi0xNiAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI0NTU3CgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2FkZF9pbnRlcmZhY2VfbWFwcGluZyk6IFVzZSB0aGUgYWN0dWFsIGFyZ3VtZW50Cglmb3IgY2hhcmFjdGVyKCopIGFycmF5cywgcmF0aGVyIHRoYW4gY2FzdGluZyB0byB0aGUgdHlwZSBhbmQga2luZAoJcGFyYW1ldGVycyBvZiB0aGUgZm9ybWFsIGFyZ3VtZW50LgoKMjAwNi0wMi0xNSAgVG9vbiBNb2VuZSAgPHRvb25AbW9lbmUuaW5kaXYubmx1dWcubmw+CgoJUFIgZm9ydHJhbi8yNjA1NAoJKiBvcHRpb25zLmM6IERvIG5vdCB3YXJuIGZvciBGb3J0cmFuIDIwMDMgZmVhdHVyZXMgYnkgZGVmYXVsdC4KCjIwMDYtMDItMTUgIFRvYmlhcyBTY2hswoH8dGVyICA8dG9iaWFzLnNjaGx1ZXRlckBwaHlzaWsudW5pLW11ZW5jaGVuLmRlPgoKCSogY2hlY2suYzogVXBkYXRlIGNvcHlyaWdodCB5ZWFycy4KCQoJKiBjaGVjay5jIChnZmNfY2hlY2tfbWlubG9jX21heGxvYywgY2hlY2tfcmVkdWN0aW9uKTogRG9uJ3QgY2FsbAoJZGltX3JhbmdlX2NoZWNrIG9uIG5vdC1wcmVzZW50IG9wdGlvbmFsIGRpbSBhcmd1bWVudC4KCjIwMDYtMDItMTUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGxpYmdvbXAvMjU5MzgKCVBSIGxpYmdvbXAvMjU5ODQKCSogTWFrZS1sYW5nLmluIChpbnN0YWxsLWZpbmNsdWRlLWRpcik6IE5ldyBnb2FsLgoJKGZvcnRyYW4uaW5zdGFsbC1jb21tb24pOiBEZXBlbmQgb24gaW5zdGFsbC1maW5jbHVkZS1kaXIuCgkqIGxhbmctc3BlY3MuaDogSWYgbm90IC1ub3N0ZGluYywgYWRkIC1JIGZpbmNsdWRlLgoKMjAwNi0wMi0xNCAgVGhvbWFzIEtvZW5pZyAgPFRob21hcy5Lb2VuaWdAb25saW5lLmRlPgoKCVBSIGZvcnRyYW4vMjUwNDUKCSogY2hlY2suYyAoZGltX2NoZWNrKTogIFBlcmZvcm0gYWxsIGNoZWNrcyBpZiBkaW0gaXMgb3B0aW9uYWwuCgkoZ2ZjX2NoZWNrX21pbmxvY19tYXhsb2MpOiAgVXNlIGRpbV9jaGVjayBhbmQgZGltX3JhbmtfY2hlY2sKCXRvIGNoZWNrIGRpbSBhcmd1bWVudC4KCShjaGVja19yZWR1Y3Rpb24pOiAgTGlrZXdpc2UuCgoyMDA2LTAyLTE0ICBUb2JpYXMgU2NobMKB/HRlciAgPHRvYmlhcy5zY2hsdWV0ZXJAcGh5c2lrLnVuaS1tdWVuY2hlbi5kZT4KCglQUiBmb3J0cmFuLzI2Mjc3CgkqIGlvLmMgKG1hdGNoX2x0YWcpOiBNYXJrIGxhYmVsIGFzIHJlZmVyZW5jZWQuCgoyMDA2LTAyLTE0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCSAgICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoJICAgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogaW52b2tlLnRleGk6IERvY3VtZW50IC1mb3Blbm1wLgoJKiBnZm9ydHJhbi50ZXhpIChFeHRlbnNpb25zKTogRG9jdW1lbnQgT3Blbk1QLgoKCUJhY2twb3J0IGZyb20gZ29tcC0yMDA1MDYwOC1icmFuY2gKCSogdHJhbnMtb3Blbm1wLmM6IENhbGwgYnVpbGRfb21wX2NsYXVzZSBpbnN0ZWFkIG9mCgltYWtlX25vZGUgd2hlbiBjcmVhdGluZyBPTVBfQ0xBVVNFXyogdHJlZXMuCgkoZ2ZjX3RyYW5zX29tcF9yZWR1Y3Rpb25fbGlzdCk6IFJlbW92ZSBhcmd1bWVudCAnY29kZScuCglBZGp1c3QgYWxsIGNhbGxlcnMuCgoJKiB0cmFucy5oIChidWlsZDRfdik6IERlZmluZS4KCSogdHJhbnMtb3Blbm1wLmM6IENhbGwgYnVpbGQ0X3YgdG8gY3JlYXRlIE9NUF9QQVJBTExFTCBub2Rlcy4KCUNhbGwgYnVpbGQzX3YgdG8gY3JlYXRlIE9NUF9TRUNUSU9OUyBub2Rlcy4KCglQUiBmb3J0cmFuLzI1MTYyCgkqIG9wZW5tcC5jIChnZmNfbWF0Y2hfb21wX3ZhcmlhYmxlX2xpc3QpOiBDYWxsIGdmY19zZXRfc3ltX3JlZmVyZW5jZWQKCW9uIGFsbCBzeW1ib2xzIGFkZGVkIHRvIHRoZSB2YXJpYWJsZSBsaXN0LgoKCSogb3Blbm1wLmMgKGdmY19tYXRjaF9vbXBfY2xhdXNlcyk6IEZpeCBjaGVjayBmb3Igbm9uLUlOVFJJTlNJQwoJcHJvY2VkdXJlIHN5bWJvbCBpbiBSRURVQ1RJT04uCgoJKiB0cmFucy1vcGVubXAuYyAoZ2ZjX3RyYW5zX29tcF9hcnJheV9yZWR1Y3Rpb24pOiBVc2UgZ2ZjX2FkZAoJZm9yIE1JTlVTX0VYUFIgT01QX0NMQVVTRV9SRURVQ1RJT05fQ09ERS4KCgkqIHRyYW5zLW9wZW5tcC5jIChnZmNfdHJhbnNfb21wX2RvKTogQWRkIFBCTE9DSyBhcmd1bWVudC4gIElmIFBCTE9DSwoJaXMgbm9uLU5VTEwsIGV2YWx1YXRlIElOSVQvQ09ORC9JTkNSIGFuZCBjaHVuayBzaXplIGV4cHJlc3Npb25zIGluCgl0aGF0IHN0YXRlbWVudCBibG9jay4KCShnZmNfdHJhbnNfb21wX3BhcmFsbGVsX2RvKTogUGFzcyBub24tTlVMTCBQQkxPQ0sgdG8gZ2ZjX3RyYW5zX29tcF9kbwoJZm9yIG5vbi1vcmRlcmVkIG5vbi1zdGF0aWMgY29tYmluZWQgbG9vcHMuCgkoZ2ZjX3RyYW5zX29tcF9kaXJlY3RpdmUpOiBQYXNzIE5VTEwgUEJMT0NLIHRvIGdmY190cmFuc19vbXBfZG8uCgoJKiBvcGVubXAuYzogSW5jbHVkZSB0YXJnZXQuaCBhbmQgdG9wbGV2LmguCgkoZ2ZjX21hdGNoX29tcF90aHJlYWRwcml2YXRlKTogRW1pdCBkaWFnbm9zdGljIGlmIHRhcmdldCBkb2VzCglub3Qgc3VwcG9ydCBUTFMuCgkqIE1ha2UtbGFuZy5pbiAoZm9ydHJhbi9vcGVubXAubyk6IEFkZCBkZXBlbmRlbmNpZXMgb24KCXRhcmdldC5oIGFuZCB0b3BsZXYuaC4KCgkqIHRyYW5zLWRlY2wuYyAoZ2ZjX2dldF9mYWtlX3Jlc3VsdF9kZWNsKTogU2V0IEdGQ19ERUNMX1JFU1VMVC4KCSogdHJhbnMtb3Blbm1wLmMgKGdmY19vbXBfcHJpdmF0aXplX2J5X3JlZmVyZW5jZSk6IE1ha2UKCURFQ0xfQVJUSUZJQ0lBTCB2YXJzIHByZWRldGVybWluZWQgc2hhcmVkIGV4Y2VwdCBHRkNfREVDTF9SRVNVTFQuCgkoZ2ZjX29tcF9kaXNyZWdhcmRfdmFsdWVfZXhwcik6IEhhbmRsZSBHRkNfREVDTF9SRVNVTFQuCgkoZ2ZjX3RyYW5zX29tcF92YXJpYWJsZSk6IE5ldyBmdW5jdGlvbi4KCShnZmNfdHJhbnNfb21wX3ZhcmlhYmxlX2xpc3QsIGdmY190cmFuc19vbXBfcmVkdWN0aW9uX2xpc3QpOiBVc2UgaXQuCgkqIHRyYW5zLmggKEdGQ19ERUNMX1JFU1VMVCk6IERlZmluZS4KCgkqIHRyYW5zLW9wZW5tcC5jIChnZmNfb21wX2ZpcnN0cHJpdmF0aXplX3R5cGVfc2l6ZXMpOiBOZXcgZnVuY3Rpb24uCgkqIGY5NS1sYW5nLmMgKExBTkdfSE9PS1NfT01QX0ZJUlNUUFJJVkFUSVpFX1RZUEVfU0laRVMpOiBEZWZpbmUuCgkqIHRyYW5zLmggKGdmY19vbXBfZmlyc3Rwcml2YXRpemVfdHlwZV9zaXplcyk6IE5ldyBwcm90b3R5cGUuCgoJKiB0cmFucy1vcGVubXAuYyAoZ2ZjX29tcF9wcml2YXRpemVfYnlfcmVmZXJlbmNlKTogUmV0dXJuCgl0cnVlIGlmIGEgcG9pbnRlciBoYXMgR0ZDX0RFQ0xfU0FWRURfREVTQ1JJUFRPUiBzZXQuCgkoZ2ZjX3RyYW5zX29tcF9hcnJheV9yZWR1Y3Rpb24sIGdmY190cmFuc19vbXBfcmVkdWN0aW9uX2xpc3QpOiBOZXcKCWZ1bmN0aW9ucy4KCShnZmNfdHJhbnNfb21wX2NsYXVzZXMpOiBBZGQgV0hFUkUgYXJndW1lbnQuICBDYWxsCglnZmNfdHJhbnNfb21wX3JlZHVjdGlvbl9saXN0IHJhdGhlciB0aGFuIGdmY190cmFuc19vbXBfdmFyaWFibGVfbGlzdAoJZm9yIHJlZHVjdGlvbnMuCgkoZ2ZjX3RyYW5zX29tcF9kbywgZ2ZjX3RyYW5zX29tcF9wYXJhbGxlbCwgZ2ZjX3RyYW5zX29tcF9wYXJhbGxlbF9kbywKCWdmY190cmFuc19vbXBfcGFyYWxsZWxfc2VjdGlvbnMsIGdmY190cmFuc19vbXBfcGFyYWxsZWxfd29ya3NoYXJlLAoJZ2ZjX3RyYW5zX29tcF9zZWN0aW9ucywgZ2ZjX3RyYW5zX29tcF9zaW5nbGUpOiBBZGp1c3QKCWdmY190cmFuc19vbXBfY2xhdXNlcyBjYWxsZXJzLgoKCSogb3Blbm1wLmMgKG9tcF9jdXJyZW50X2RvX2NvZGUpOiBOZXcgdmFyLgoJKGdmY19yZXNvbHZlX29tcF9kb19ibG9ja3MpOiBOZXcgZnVuY3Rpb24uCgkoZ2ZjX3Jlc29sdmVfb21wX3BhcmFsbGVsX2Jsb2Nrcyk6IENhbGwgaXQuCgkoZ2ZjX3Jlc29sdmVfZG9faXRlcmF0b3IpOiBBZGQgQ09ERSBhcmd1bWVudC4gIERvbid0IHByb3BhZ2F0ZQoJcHJlZGV0ZXJtaW5hdGlvbiBpZiBhcmd1bWVudCBpcyAhJG9tcCBkbyBvciAhJG9tcCBwYXJhbGxlbCBkbwoJaXRlcmF0aW9uIHZhcmlhYmxlLgoJKiByZXNvbHZlLmMgKHJlc29sdmVfY29kZSk6IENhbGwgZ2ZjX3Jlc29sdmVfb21wX2RvX2Jsb2NrcwoJZm9yIEVYRUNfT01QX0RPLiAgQWRqdXN0IGdmY19yZXNvbHZlX2RvX2l0ZXJhdG9yIGNhbGxlci4KCSogZm9ydHJhbi5oIChnZmNfcmVzb2x2ZV9vbXBfZG9fYmxvY2tzKTogTmV3IHByb3RvdHlwZS4KCShnZmNfcmVzb2x2ZV9kb19pdGVyYXRvcik6IEFkZCBDT0RFIGFyZ3VtZW50LgoKCSogdHJhbnMuaCAoZ2ZjX29tcF9wcmVkZXRlcm1pbmVkX3NoYXJpbmcsCglnZmNfb21wX2Rpc3JlZ2FyZF92YWx1ZV9leHByLCBnZmNfb21wX3ByaXZhdGVfZGVidWdfY2xhdXNlKTogTmV3Cglwcm90b3R5cGVzLgoJKEdGQ19ERUNMX0NPTU1PTl9PUl9FUVVJViwgR0ZDX0RFQ0xfQ1JBWV9QT0lOVEVFKTogRGVmaW5lLgoJKiB0cmFucy1vcGVubXAuYyAoZ2ZjX29tcF9wcmVkZXRlcm1pbmVkX3NoYXJpbmcsCglnZmNfb21wX2Rpc3JlZ2FyZF92YWx1ZV9leHByLCBnZmNfb21wX3ByaXZhdGVfZGVidWdfY2xhdXNlKTogTmV3CglmdW5jdGlvbnMuCgkqIHRyYW5zLWNvbW1vbi5jIChidWlsZF9lcXVpdl9kZWNsLCBidWlsZF9jb21tb25fZGVjbCwKCWNyZWF0ZV9jb21tb24pOiBTZXQgR0ZDX0RFQ0xfQ09NTU9OX09SX0VRVUlWIGZsYWcgb24gdGhlIGRlY2xzLgoJKiB0cmFucy1kZWNsLmMgKGdmY19maW5pc2hfY3JheV9wb2ludGVlKTogU2V0IEdGQ19ERUNMX0NSQVlfUE9JTlRFRQoJb24gdGhlIGRlY2wuCgkqIGY5NS1sYW5nLmMgKExBTkdfSE9PS1NfT01QX1BSRURFVEVSTUlORURfU0hBUklORywKCUxBTkdfSE9PS1NfT01QX0RJU1JFR0FSRF9WQUxVRV9FWFBSLAoJTEFOR19IT09LU19PTVBfUFJJVkFURV9ERUJVR19DTEFVU0UpOiBEZWZpbmUuCgoJKiBvcGVubXAuYyAocmVzb2x2ZV9vbXBfY2xhdXNlcyk6IFJlbW92ZSBleHRyYW5lb3VzIGNvbW1hLgoKCSogc3ltYm9sLmMgKGNoZWNrX2NvbmZsaWN0KTogQWRkIGNvbmZsaWN0IGJldHdlZW4gY3JheV9wb2ludGVlIGFuZAoJdGhyZWFkcHJpdmF0ZS4KCSogb3Blbm1wLmMgKGdmY19tYXRjaF9vbXBfdGhyZWFkcHJpdmF0ZSk6IEZhaWwgaWYKCWdmY19hZGRfdGhyZWFkcHJpdmF0ZSByZXR1cm5lZCBGQUlMVVJFLgoJKHJlc29sdmVfb21wX2NsYXVzZXMpOiBEaWFnbm9zZSBDcmF5IHBvaW50ZWVzIGluIFNIQVJFRCwKCXssRklSU1QsTEFTVH1QUklWQVRFIGFuZCBSRURVQ1RJT04gY2xhdXNlcyBhbmQgQ3JheSBwb2ludGVycyBpbgoJe0ZJUlNULExBU1R9UFJJVkFURSBhbmQgUkVEVUNUSU9OIGNsYXVzZXMuCgoJKiByZXNvbHZlLmMgKG9tcF93b3Jrc2hhcmVfZmxhZyk6IE5ldyB2YXJpYWJsZS4KCShyZXNvbHZlX2Z1bmN0aW9uKTogRGlhZ25vc2UgdXNlIG9mIG5vbi1FTEVNRU5UQUwgdXNlciBkZWZpbmVkCglmdW5jdGlvbiBpbiBXT1JLU0hBUkUgY29uc3RydWN0LgoJKHJlc29sdmVfY29kZSk6IENsZWFudXAgZm9yYWxsX3NhdmUgdXNlLiAgTWFrZSBzdXJlIG9tcF93b3Jrc2hhcmVfZmxhZwoJaXMgc2V0IHRvIGNvcnJlY3QgdmFsdWUgaW4gZGlmZmVyZW50IGNvbnRleHRzLgoKCSogb3Blbm1wLmMgKHJlc29sdmVfb21wX2NsYXVzZXMpOiBSZXBsYWNlICVzIHdpdGggJyVzJyB3aGVuIHByaW50aW5nCgl2YXJpYWJsZSBuYW1lLgoJKHJlc29sdmVfb21wX2F0b21pYyk6IExpa2V3aXNlLgoKCVBSIGZvcnRyYW4vMjQ0OTMKCSogc2Nhbm5lci5jIChza2lwX2ZyZWVfY29tbWVudHMpOiBTZXQgYXRfYm9sIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlCglsb29wLCBub3QgYmVmb3JlIGl0LgoJKHNraXBfZml4ZWRfY29tbWVudHMpOiBIYW5kbGUgISBjb21tZW50cyBpbiB0aGUgbWlkZGxlIG9mIGxpbmUgaGVyZQoJYXMgd2VsbC4KCShnZmNfc2tpcF9jb21tZW50cyk6IFVzZSBza2lwX2ZpeGVkX2NvbW1lbnRzIGZvciBGSVhFRF9GT1JNIGV2ZW4gaWYKCW5vdCBhdCBCT0wuCgkoZ2ZjX25leHRfY2hhcl9saXRlcmFsKTogRml4IGV4cGVjdGVkIGNhbm9uaWNhbGl6ZWQgKiRvbXAgc3RyaW5nLgoKCSogdHJhbnMtb3Blbm1wLmMgKGdmY190cmFuc19vbXBfZG8pOiBVc2UgbWFrZV9ub2RlIGFuZCBleHBsaWNpdAoJaW5pdGlhbGl6YXRpb24gdG8gYnVpbGQgT01QX0ZPUiBpbnN0ZWFkIG9mIGJ1aWxkLgoKCSogdHJhbnMtZGVjbC5jIChnZmNfZ2ltcGxpZnlfZnVuY3Rpb24pOiBJbnZva2UKCWRpYWdub3NlX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrX2Vycm9ycy4KCgkqIHRyYW5zLW9wZW5tcC5jIChnZmNfdHJhbnNfb21wX21hc3Rlcik6IFVzZSBPTVBfTUFTVEVSLgoJKGdmY190cmFuc19vbXBfb3JkZXJlZCk6IFVzZSBPTVBfT1JERVJFRC4KCgkqIGdmb3J0cmFuLmggKGdmY19yZXNvbHZlX2RvX2l0ZXJhdG9yLCBnZmNfcmVzb2x2ZV9ibG9ja3MsCglnZmNfcmVzb2x2ZV9vbXBfcGFyYWxsZWxfYmxvY2tzKTogTmV3IHByb3RvdHlwZXMuCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9ibG9ja3MpOiBSZW5hbWVkIHRvLi4uCgkoZ2ZjX3Jlc29sdmVfYmxvY2tzKTogLi4uIHRoaXMuICBSZW1vdmUgc3RhdGljLgoJKGdmY19yZXNvbHZlX2ZvcmFsbCk6IEFkanVzdCBjYWxsZXIuCgkocmVzb2x2ZV9jb2RlKTogT25seSBjYWxsIGdmY19yZXNvbHZlX2Jsb2NrcyBpZiBjb2RlLT5ibG9jayAhPSAwCglhbmQgbm90IGZvciBFWEVDX09NUF9QQVJBTExFTCogZGlyZWN0aXZlcy4gIENhbGwKCWdmY19yZXNvbHZlX29tcF9wYXJhbGxlbF9ibG9ja3MgZm9yIEVYRUNfT01QX1BBUkFMTEVMKiBkaXJlY3RpdmVzLgoJQ2FsbCBnZmNfcmVzb2x2ZV9kb19pdGVyYXRvciBpZiByZXNvbHZlZCBzdWNjZXNzZnVsbHkgRVhFQ19ETwoJaXRlcmF0b3IuCgkqIG9wZW5tcC5jOiBJbmNsdWRlIHBvaW50ZXItc2V0LmguCgkob21wX2N1cnJlbnRfY3R4KTogTmV3IHZhcmlhYmxlLgoJKGdmY19yZXNvbHZlX29tcF9wYXJhbGxlbF9ibG9ja3MsIGdmY19yZXNvbHZlX2RvX2l0ZXJhdG9yKTogTmV3CglmdW5jdGlvbnMuCgkqIE1ha2UtbGFuZy5pbiAoZm9ydHJhbi9vcGVubXAubyk6IERlcGVuZCBvbiBwb2ludGVyLXNldC5oLgoKCSogb3Blbm1wLmMgKGdmY19tYXRjaF9vbXBfY2xhdXNlcyk6IEZvciBtYXgvbWluL2lhbmQvaW9yL2llb3IsCglsb29rIHVwIHN5bWJvbCBpZiBpdCBleGlzdHMsIHVzZSBpdHMgbmFtZSBpbnN0ZWFkIGFuZCwgaWYgaXQgaXMgbm90CglJTlRSSU5TSUMsIGlzc3VlIGRpYWdub3N0aWNzLgoKCSogcGFyc2UuYyAocGFyc2Vfb21wX2RvKTogSGFuZGxlIGltcGxpZWQgZW5kIGRvIHByb3Blcmx5LgoJKHBhcnNlX2V4ZWN1dGFibGUpOiBJZiBwYXJzZV9vbXBfZG8gcmV0dXJuZWQgU1RfSU1QTElFRF9FTkRETywKCXJldHVybiBpdCBpbnN0ZWFkIG9mIGNvbnRpbnVpbmcuCgoJKiB0cmFucy1vcGVubXAuYyAoZ2ZjX3RyYW5zX29tcF9jcml0aWNhbCk6IFVwZGF0ZSBmb3IgY2hhbmdlZAoJb3BlcmFuZCBudW1iZXJpbmcuCgkoZ2ZjX3RyYW5zX29tcF9kbywgZ2ZjX3RyYW5zX29tcF9wYXJhbGxlbCwgZ2ZjX3RyYW5zX29tcF9wYXJhbGxlbF9kbywKCWdmY190cmFuc19vbXBfcGFyYWxsZWxfc2VjdGlvbnMsIGdmY190cmFuc19vbXBfcGFyYWxsZWxfd29ya3NoYXJlLAoJZ2ZjX3RyYW5zX29tcF9zZWN0aW9ucywgZ2ZjX3RyYW5zX29tcF9zaW5nbGUpOiBMaWtld2lzZS4KCgkqIHRyYW5zLmggKGdmY19vbXBfcHJpdmF0aXplX2J5X3JlZmVyZW5jZSk6IE5ldyBwcm90b3R5cGUuCgkqIGY5NS1sYW5nLmMgKExBTkdfSE9PS1NfT01QX1BSSVZBVElaRV9CWV9SRUZFUkVOQ0UpOiBSZWRlZmluZQoJdG8gZ2ZjX29tcF9wcml2YXRpemVfYnlfcmVmZXJlbmNlLgoJKiB0cmFucy1vcGVubXAuYyAoZ2ZjX29tcF9wcml2YXRpemVfYnlfcmVmZXJlbmNlKTogTmV3IGZ1bmN0aW9uLgoKCSogdHJhbnMtc3RtdC5oIChnZmNfdHJhbnNfb21wX2RpcmVjdGl2ZSk6IEFkZCBjb21tZW50LgoKCSogb3Blbm1wLmMgKGdmY19tYXRjaF9vbXBfdmFyaWFibGVfbGlzdCk6IEFkZCBBTExPV19DT01NT04gYXJndW1lbnQuCglEaXNhbGxvdyBDT01NT04gbWF0Y2hpbmcgaWYgaXQgaXMgc2V0LgoJKGdmY19tYXRjaF9vbXBfY2xhdXNlcywgZ2ZjX21hdGNoX29tcF9mbHVzaCk6IEFkanVzdCBhbGwgY2FsbGVycy4KCShyZXNvbHZlX29tcF9jbGF1c2VzKTogU2hvdyBsb2N1cyBpbiBlcnJvciBtZXNzYWdlcy4gIENoZWNrIHRoYXQKCXZhcmlhYmxlIHR5cGVzIGluIHJlZHVjdGlvbiBjbGF1c2VzIGFyZSBhcHByb3ByaWF0ZSBmb3IgcmVkdWN0aW9uCglvcGVyYXRvcnMuCgoJKiByZXNvbHZlLmMgKHJlc29sdmVfc3ltYm9sKTogRG9uJ3QgZXJyb3IgaWYgYSB0aHJlYWRwcml2YXRlIG1vZHVsZQoJdmFyaWFibGUgaXNuJ3QgU0FWRWQuCgoJKiB0cmFucy1vcGVubXAuYyAoZ2ZjX3RyYW5zX29tcF9kbyk6IFB1dCBjb3VudCBpbnRvIEJMT0NLLCBub3QgQk9EWS4KCUZpeCB0eXBvIGluIGNvbmRpdGlvbi4gIEZpeCBET1ZBUiBpbml0aWFsaXphdGlvbi4KCgkqIG9wZW5tcC5jIChnZmNfbWF0Y2hfb21wX2NsYXVzZXMpOiBNYXRjaCBtaW4vaWFuZC9pb3IvaWVvcgoJcmF0aGVyIHRoYW4gLm1pbi4gZXRjLgoKCSogdHJhbnMtb3Blbm1wYy5jIChvbXBfbm90X3lldCk6IFJlbW92ZS4KCShnZmNfdHJhbnNfb21wX3BhcmFsbGVsX2RvKTogS2VlcCBsaXN0cHJpdmF0ZSBjbGF1c2Ugb24gcGFyYWxsZWwuCglGb3JjZSBjcmVhdGlvbiBvZiBCSU5EX0VYUFIgYXJvdW5kIHRoZSB3b3Jrc2hhcmUgY29uc3RydWN0LgoJKGdmY190cmFuc19vbXBfcGFyYWxsZWxfc2VjdGlvbnMpOiBMaWtld2lzZS4KCShnZmNfdHJhbnNfb21wX3BhcmFsbGVsX3dvcmtzaGFyZSk6IExpa2V3aXNlLgoKCSogdHlwZXMuZGVmIChCVF9JMTYsIEJUX0ZOX0kxNl9WUFRSX0kxNiwKCUJUX0ZOX0JPT0xfVlBUUl9JMTZfSTE2LCBCVF9GTl9JMTZfVlBUUl9JMTZfSTE2KTogQWRkLgoKCSogdHJhbnMtb3Blbm1wLmMgKGdmY190cmFuc19vbXBfY2xhdXNlcyk6IENyZWF0ZSBPTVBfQ0xBVVNFX0RFRkFVTFQuCgkoZ2ZjX3RyYW5zX29tcF9jb2RlKTogTmV3IGZ1bmN0aW9uLgoJKGdmY190cmFuc19vbXBfZG8pOiBVc2UgaXQsIHJlbW92ZSBvbXBfbm90X3lldCB1c2VzLgoJKGdmY190cmFuc19vbXBfcGFyYWxsZWwsIGdmY190cmFuc19vbXBfc2luZ2xlKTogTGlrZXdpc2UuCgkoZ2ZjX3RyYW5zX29tcF9zZWN0aW9ucyk6IExpa2V3aXNlLiAgT25seSB0cmVhdCBlbXB0eSBsYXN0IHNlY3Rpb24KCXNwZWNpYWxseSBpZiBsYXN0cHJpdmF0ZSBjbGF1c2UgaXMgcHJlc2VudC4KCSogZjk1LWxhbmcuYyAoZ2ZjX2luaXRfYnVpbHRpbl9mdW5jdGlvbnMpOiBDcmVhdGUgQlVJTFRfSU5fVFJBUAoJYnVpbHRpbi4KCgkqIHRyYW5zLW9wZW5tcC5jIChnZmNfdHJhbnNfb21wX3ZhcmlhYmxlX2xpc3QpOiBVcGRhdGUgZm9yCglPTVBfQ0xBVVNFX0RFQ0wgbmFtZSBjaGFuZ2UuCgkoZ2ZjX3RyYW5zX29tcF9kbyk6IExpa2V3aXNlLgoKCSogdHJhbnMtb3Blbm1wLmMgKGdmY190cmFuc19vbXBfY2xhdXNlcyk6IENyZWF0ZSBPTVBfQ0xBVVNFX1JFRFVDVElPTgoJY2xhdXNlcy4KCShnZmNfdHJhbnNfb21wX2F0b21pYyk6IEJ1aWxkIE9NUF9BVE9NSUMgaW5zdGVhZCBvZiBleHBhbmRpbmcKCXN5bmMgYnVpbHRpbnMgZGlyZWN0bHkuCgkoZ2ZjX3RyYW5zX29tcF9zaW5nbGUpOiBCdWlsZCBPTVBfU0lOR0xFIHN0YXRlbWVudC4KCgkqIHRyYW5zLW9wZW5tcC5jIChnZmNfdHJhbnNfYWRkX2NsYXVzZSk6IE5ldy4KCShnZmNfdHJhbnNfb21wX3ZhcmlhYmxlX2xpc3QpOiBUYWtlIGEgdHJlZSBjb2RlIGFuZCBidWlsZCB0aGUgY2xhdXNlCglub2RlIGhlcmUuICBMaW5rIGl0IHRvIHRoZSBoZWFkIG9mIGEgbGlzdC4KCShnZmNfdHJhbnNfb21wX2NsYXVzZXMpOiBVcGRhdGUgdG8gbWF0Y2guCgkoZ2ZjX3RyYW5zX29tcF9kbyk6IFVzZSBnZmNfdHJhbnNfYWRkX2NsYXVzZS4KCgkqIHRyYW5zLW9wZW5tcC5jIChnZmNfdHJhbnNfb21wX2NsYXVzZXMpOiBDaGFuZ2Ugc2Vjb25kIGFyZ3VtZW50IHRvCglnZmNfb21wX2NsYXVzZXMgKi4gIFVzZSBnZmNfZXZhbHVhdGVfbm93IGluc3RlYWQgb2YgY3JlYXRpbmcKCXRlbXBvcmFyaWVzIGJ5IGhhbmQuCgkoZ2ZjX3RyYW5zX29tcF9hdG9taWMsIGdmY190cmFuc19vbXBfY3JpdGljYWwpOiBVc2UgYnVpbGROX3YgbWFjcm9zLgoJKGdmY190cmFuc19vbXBfZG8pOiBOZXcgZnVuY3Rpb24uCgkoZ2ZjX3RyYW5zX29tcF9tYXN0ZXIpOiBEb250JyBjaGVjayBmb3IgZ2ZjX3RyYW5zX2NvZGUgcmV0dXJuaW5nIE5VTEwuCgkoZ2ZjX3RyYW5zX29tcF9wYXJhbGxlbCk6IEFkanVzdCBnZmNfdHJhbnNfb21wX2NsYXVzZXMgY2FsbGVyLgoJVXNlIGJ1aWxkTl92IG1hY3Jvcy4KCShnZmNfdHJhbnNfb21wX3BhcmFsbGVsX2RvLCBnZmNfdHJhbnNfb21wX3BhcmFsbGVsX3NlY3Rpb25zLAoJZ2ZjX3RyYW5zX29tcF9wYXJhbGxlbF93b3Jrc2hhcmUsIGdmY190cmFuc19vbXBfc2VjdGlvbnMsCglnZmNfdHJhbnNfb21wX3NpbmdsZSwgZ2ZjX3RyYW5zX29tcF93b3Jrc2hhcmUpOiBOZXcgZnVuY3Rpb25zLgoJKGdmY190cmFuc19vbXBfZGlyZWN0aXZlKTogVXNlIHRoZW0uCgkqIHBhcnNlLmMgKHBhcnNlX29tcF9kbyk6IEFsbG93IG5ld19zdC5vcCA9PSBFWEVDX05PUC4KCSogb3Blbm1wLmMgKHJlc29sdmVfb21wX2NsYXVzZXMpOiBDaGVjayBmb3IgbGlzdCBpdGVtcyBwcmVzZW50CglpbiBtdWx0aXBsZSBjbGF1c2VzLgoJKHJlc29sdmVfb21wX2RvKTogQ2hlY2sgdGhhdCBpdGVyYXRpb24gdmFyaWFibGUgaXMgbm90IFRIUkVBRFBSSVZBVEUKCWFuZCBpcyBub3QgcHJlc2VudCBpbiBhbnkgY2xhdXNlIHZhcmlhYmxlIGxpc3RzIG90aGVyIHRoYW4gUFJJVkFURQoJb3IgTEFTVFBSSVZBVEUuCgoJKiBnZm9ydHJhbi5oIChzeW1ib2xfYXR0cmlidXRlKTogQWRkIHRocmVhZHByaXZhdGUgYml0LgoJKGdmY19jb21tb25faGVhZCk6IEFkZCB0aHJlYWRwcml2YXRlIG1lbWJlciwgY2hhbmdlIHVzZV9hc3NvYwoJYW5kIHNhdmVkIGludG8gY2hhciB0byBzYXZlIHNwYWNlLgoJKGdmY19hZGRfdGhyZWFkcHJpdmF0ZSk6IE5ldyBwcm90b3R5cGUuCgkqIHN5bWJvbC5jIChjaGVja19jb25mbGljdCk6IEhhbmRsZSB0aHJlYWRwcml2YXRlLgoJKGdmY19hZGRfdGhyZWFkcHJpdmF0ZSk6IE5ldyBmdW5jdGlvbi4KCShnZmNfY29weV9hdHRyKTogQ29weSB0aHJlYWRwcml2YXRlLgoJKiB0cmFucy1vcGVubXAuYyAoZ2ZjX3RyYW5zX29tcF9jbGF1c2VzKTogQXZvaWQgY3JlYXRpbmcgYSB0ZW1wb3JhcnkKCWlmIElGIG9yIE5VTV9USFJFQURTIGlzIGNvbnN0YW50LiAgQ3JlYXRlIE9NUF9DTEFVU0VfU0NIRURVTEUgYW5kCglPTVBfQ0xBVVNFX09SREVSRUQuCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9zeW1ib2wpOiBDb21wbGFpbiBpZiBhIFRIUkVBRFBSSVZBVEUgc3ltYm9sCglvdXRzaWRlIGEgbW9kdWxlIGFuZCBub3QgaW4gQ09NTU9OIGhhcyBpcyBub3QgU0FWRWQuCgkocmVzb2x2ZV9lcXVpdmFsZW5jZSk6IEVuc3VyZSBUSFJFQURQUklWQVRFIG9iamVjdHMgZG9uJ3QgZ2V0CglFUVVJVkFMRU5DRWQuCgkqIHRyYW5zLWNvbW1vbi5jOiBJbmNsdWRlIHRhcmdldC5oIGFuZCBydGwuaC4KCShidWlsZF9jb21tb25fZGVjbCk6IFNldCBERUNMX1RMU19NT0RFTCBpZiBUSFJFQURQUklWQVRFLgoJKiB0cmFucy1kZWNsLmM6IEluY2x1ZGUgcnRsLmguCgkoZ2ZjX2ZpbmlzaF92YXJfZGVjbCk6IFNldCBERUNMX1RMU19NT0RFTCBpZiBUSFJFQURQUklWQVRFLgoJKiBkdW1wLXBhcnNlLXRyZWUuYyAoZ2ZjX3Nob3dfYXR0cik6IEhhbmRsZSBUSFJFQURQUklWQVRFLgoJKiBNYWtlLWxhbmcuaW4gKGZvcnRyYW4vdHJhbnMtZGVjbC5vKTogRGVwZW5kIG9uICQoUlRMX0gpLgoJKGZvcnRyYW4vdHJhbnMtY29tbW9uLm8pOiBEZXBlbmQgb24gJChSVExfSCkgYW5kICQoVEFSR0VUX0gpLgoJKiBvcGVubXAuYyAoZ2ZjX21hdGNoX29tcF92YXJpYWJsZV9saXN0KTogRW5zdXJlIENPTU1PTiBibG9jawoJaXMgZnJvbSBjdXJyZW50IG5hbWVzcGFjZS4KCShnZmNfbWF0Y2hfb21wX3RocmVhZHByaXZhdGUpOiBSZXdyaXRlLgoJKHJlc29sdmVfb21wX2NsYXVzZXMpOiBDaGVjayBzb21lIGNsYXVzZSByZXN0cmljdGlvbnMuCgkqIG1vZHVsZS5jIChhYl9hdHRyaWJ1dGUpOiBBZGQgQUJfVEhSRUFEUFJJVkFURS4KCShhdHRyX2JpdHMpOiBBZGQgVEhSRUFEUFJJVkFURS4KCShtaW9fc3ltYm9sX2F0dHJpYnV0ZSwgbWlvX3N5bWJvbF9hdHRyaWJ1dGUpOiBIYW5kbGUgdGhyZWFkcHJpdmF0ZS4KCShsb2FkX2NvbW1vbnMsIHdyaXRlX2NvbW1vbiwgd3JpdGVfYmxhbmtfY29tbW9uKTogQWRqdXN0IGZvciB0eXBlCgljaGFuZ2Ugb2Ygc2F2ZWQsIHN0b3JlL2xvYWQgdGhyZWFkcHJpdmF0ZSBiaXQgZnJvbSB0aGUgaW50ZWdlcgoJYXMgd2VsbC4KCgkqIHR5cGVzLmRlZiAoQlRfRk5fVUlOVF9VSU5UKTogTmV3LgoJKEJUX0ZOX1ZPSURfVUlOVF9VSU5UKTogUmVtb3ZlLgoKCSogdHJhbnMtb3Blbm1wLmMgKGdmY190cmFuc19vbXBfY2xhdXNlcywgZ2ZjX3RyYW5zX29tcF9iYXJyaWVyLAoJZ2ZjX3RyYW5zX29tcF9jcml0aWNhbCwgZ2ZjX3RyYW5zX29tcF9mbHVzaCwgZ2ZjX3RyYW5zX29tcF9tYXN0ZXIsCglnZmNfdHJhbnNfb21wX29yZGVyZWQsIGdmY190cmFuc19vbXBfcGFyYWxsZWwpOiBOZXcgZnVuY3Rpb25zLgoJKGdmY190cmFuc19vbXBfZGlyZWN0aXZlKTogVXNlIHRoZW0uCgoJKiBvcGVubXAuYyAoZXhwcl9yZWZlcmVuY2VzX3N5bSk6IEFkZCBTRSBhcmd1bWVudCwgZG9uJ3QgbG9vawoJaW50byBTRSB0cmVlLgoJKGlzX2NvbnZlcnNpb24pOiBOZXcgZnVuY3Rpb24uCgkocmVzb2x2ZV9vbXBfYXRvbWljKTogQWRqdXN0IGV4cHJfcmVmZXJlbmNlc19zeW0gY2FsbGVycy4gIEhhbmRsZQoJcHJvbW90ZWQgZXhwcmVzc2lvbnMuCgkqIHRyYW5zLW9wZW5tcC5jIChnZmNfdHJhbnNfb21wX2F0b21pYyk6IE5ldyBmdW5jdGlvbi4KCShnZmNfdHJhbnNfb21wX2RpcmVjdGl2ZSk6IENhbGwgaXQuCgoJKiBmOTUtbGFuZy5jIChidWlsdGluX3R5cGVfZm9yX3NpemUpOiBOZXcgZnVuY3Rpb24uCgkoZ2ZjX2luaXRfYnVpbHRpbl9mdW5jdGlvbnMpOiBJbml0aWFsaXplIHN5bmNocm9uaXphdGlvbiBhbmQKCU9wZW5NUCBidWlsdGlucy4KCSogdHlwZXMuZGVmOiBOZXcgZmlsZS4KCSogTWFrZS1sYW5nLmluIChmOTUtbGFuZy5vKTogRGVwZW5kIG9uICQoQlVJTFRJTlNfREVGKSBhbmQKCWZvcnRyYW4vdHlwZXMuZGVmLgoKCSogdHJhbnMtb3Blbm1wLmM6IFJlbmFtZSBHT01QXyogdHJlZSBjb2RlcyBpbnRvIE9NUF8qLgoKCSogZHVtcC1wYXJzZS10cmVlLmMgKHNob3dfc3ltdHJlZSk6IERvbid0IGNyYXNoIGlmIG5zLT5wcm9jX25hbWUKCWlzIE5VTEwuCgoJKiBkdW1wLXBhcnNlLXRyZWUuYyAoZ2ZjX3Nob3dfbmFtZWxpc3QsIGdmY19zaG93X29tcF9ub2RlKTogTmV3CglmdW5jdGlvbnMuCgkoZ2ZjX3Nob3dfY29kZV9ub2RlKTogQ2FsbCBnZmNfc2hvd19vbXBfbm9kZSBmb3IgRVhFQ19PTVBfKiBub2Rlcy4KCgkqIHBhcnNlLmMgKHBhcnNlX29tcF9kbyk6IENhbGwgcG9wX3N0YXRlIGJlZm9yZSBuZXh0X3N0YXRlbWVudC4KCSogb3Blbm1wLmMgKGV4cHJfcmVmZXJlbmNlc19zeW0sIHJlc29sdmVfb21wX2F0b21pYywgcmVzb2x2ZV9vbXBfZG8pOgoJTmV3IGZ1bmN0aW9ucy4KCShnZmNfcmVzb2x2ZV9vbXBfZGlyZWN0aXZlKTogQ2FsbCB0aGVtLgoJKiBtYXRjaC5jIChtYXRjaF9leGl0X2N5Y2xlKTogSXNzdWUgZXJyb3IgaWYgRVhJVCBvciBDWUNMRSBzdGF0ZW1lbnQKCWxlYXZlcyBhbiBPcGVuTVAgc3RydWN0dXJlZCBibG9jayBvciBpZiBFWElUIHRlcm1pbmF0ZXMgISRvbXAgZG8KCWxvb3AuCgoJKiBNYWtlLWxhbmcuaW4gKEY5NV9QQVJTRVJfT0JKUyk6IEFkZCBmb3J0cmFuL29wZW5tcC5vLgoJKEY5NV9PQkpTKTogQWRkIGZvcnRyYW4vdHJhbnMtb3Blbm1wLm8uCgkoZm9ydHJhbi90cmFucy1vcGVubXAubyk6IERlcGVuZCBvbiAkKEdGT1JUUkFOX1RSQU5TX0RFUFMpLgoJKiBsYW5nLm9wdDogQWRkIC1mb3Blbm1wIG9wdGlvbi4KCSogb3B0aW9ucy5jIChnZmNfaW5pdF9vcHRpb25zKTogSW5pdGlhbGl6ZSBpdC4KCShnZmNfaGFuZGxlX29wdGlvbik6IEhhbmRsZSBpdC4KCSogZ2ZvcnRyYW4uaCAoU1RfT01QX0FUT01JQywgU1RfT01QX0JBUlJJRVIsIFNUX09NUF9DUklUSUNBTCwKCVNUX09NUF9FTkRfQ1JJVElDQUwsIFNUX09NUF9FTkRfRE8sIFNUX09NUF9FTkRfTUFTVEVSLAoJU1RfT01QX0VORF9PUkRFUkVELCBTVF9PTVBfRU5EX1BBUkFMTEVMLCBTVF9PTVBfRU5EX1BBUkFMTEVMX0RPLAoJU1RfT01QX0VORF9QQVJBTExFTF9TRUNUSU9OUywgU1RfT01QX0VORF9QQVJBTExFTF9XT1JLU0hBUkUsCglTVF9PTVBfRU5EX1NFQ1RJT05TLCBTVF9PTVBfRU5EX1NJTkdMRSwgU1RfT01QX0VORF9XT1JLU0hBUkUsCglTVF9PTVBfRE8sIFNUX09NUF9GTFVTSCwgU1RfT01QX01BU1RFUiwgU1RfT01QX09SREVSRUQsCglTVF9PTVBfUEFSQUxMRUwsIFNUX09NUF9QQVJBTExFTF9ETywgU1RfT01QX1BBUkFMTEVMX1NFQ1RJT05TLAoJU1RfT01QX1BBUkFMTEVMX1dPUktTSEFSRSwgU1RfT01QX1NFQ1RJT05TLCBTVF9PTVBfU0VDVElPTiwKCVNUX09NUF9TSU5HTEUsIFNUX09NUF9USFJFQURQUklWQVRFLCBTVF9PTVBfV09SS1NIQVJFKTogTmV3CglzdGF0ZW1lbnQgY29kZXMuCgkoT01QX0xJU1RfUFJJVkFURSwgT01QX0xJU1RfRklSU1RQUklWQVRFLCBPTVBfTElTVF9MQVNUUFJJVkFURSwKCU9NUF9MSVNUX0NPUFlQUklWQVRFLCBPTVBfTElTVF9TSEFSRUQsIE9NUF9MSVNUX0NPUFlJTiwKCU9NUF9MSVNUX1BMVVMsIE9NUF9MSVNUX1JFRFVDVElPTl9GSVJTVCwgT01QX0xJU1RfTVVMVCwKCU9NUF9MSVNUX1NVQiwgT01QX0xJU1RfQU5ELCBPTVBfTElTVF9PUiwgT01QX0xJU1RfRVFWLAoJT01QX0xJU1RfTkVRViwgT01QX0xJU1RfTUFYLCBPTVBfTElTVF9NSU4sIE9NUF9MSVNUX0lBTkQsCglPTVBfTElTVF9JT1IsIE9NUF9MSVNUX0lFT1IsIE9NUF9MSVNUX1JFRFVDVElPTl9MQVNULCBPTVBfTElTVF9OVU0pOgoJTmV3IE9wZW5NUCB2YXJpYWJsZSBsaXN0IHR5cGVzLgoJKGdmY19vbXBfY2xhdXNlcyk6IE5ldyB0eXBlZGVmLgoJKGdmY19nZXRfb21wX2NsYXVzZXMpOiBEZWZpbmUuCgkoRVhFQ19PTVBfQ1JJVElDQUwsIEVYRUNfT01QX0RPLCBFWEVDX09NUF9GTFVTSCwgRVhFQ19PTVBfTUFTVEVSLAoJRVhFQ19PTVBfT1JERVJFRCwgRVhFQ19PTVBfUEFSQUxMRUwsIEVYRUNfT01QX1BBUkFMTEVMX0RPLAoJRVhFQ19PTVBfUEFSQUxMRUxfU0VDVElPTlMsIEVYRUNfT01QX1BBUkFMTEVMX1dPUktTSEFSRSwKCUVYRUNfT01QX1NFQ1RJT05TLCBFWEVDX09NUF9TSU5HTEUsIEVYRUNfT01QX1dPUktTSEFSRSwKCUVYRUNfT01QX0FUT01JQywgRVhFQ19PTVBfQkFSUklFUiwgRVhFQ19PTVBfRU5EX05PV0FJVCwKCUVYRUNfT01QX0VORF9TSU5HTEUpOiBOZXcgT3Blbk1QIGdmY19leGVjX29wIGNvZGVzLgoJKHN0cnVjdCBnZmNfY29kZSk6IEFkZCBvbXBfY2xhdXNlcywgb21wX25hbWUsIG9tcF9uYW1lbGlzdAoJYW5kIG9tcF9ib29sIGZpZWxkcyB0byBleHQgdW5pb24uCgkoZmxhZ19vcGVubXApOiBEZWNsYXJlLgoJKGdmY19mcmVlX29tcF9jbGF1c2VzLCBnZmNfcmVzb2x2ZV9vbXBfZGlyZWN0aXZlKTogTmV3IHByb3RvdHlwZXMuCgkqIHNjYW5uZXIuYyAob3Blbm1wX2ZsYWcsIG9wZW5tcF9sb2N1cyk6IE5ldyB2YXJpYWJsZXMuCgkoc2tpcF9mcmVlX2NvbW1lbnRzLCBza2lwX2ZpeGVkX2NvbW1lbnRzLCBnZmNfbmV4dF9jaGFyX2xpdGVyYWwpOgoJSGFuZGxlIE9wZW5NUCBkaXJlY3RpdmUgbGluZXMgYW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG1hZ2ljCgljb21tZW50cy4KCSogcGFyc2UuaCAoQ09NUF9PTVBfU1RSVUNUVVJFRF9CTE9DSyk6IE5ldyBjb21waWxlIHN0YXRlLgoJKiBwYXJzZS5jIChkZWNvZGVfb21wX2RpcmVjdGl2ZSwgcGFyc2Vfb21wX2RvLCBwYXJzZV9vbXBfYXRvbWljLAoJcGFyc2Vfb21wX3N0cnVjdHVyZWRfYmxvY2spOiBOZXcgZnVuY3Rpb25zLgoJKG5leHRfZnJlZSwgbmV4dF9maXhlZCk6IFBhcnNlIE9wZW5NUCBkaXJlY3RpdmVzLgoJKGNhc2VfZXhlY3V0YWJsZSwgY2FzZV9leGVjX21hcmtlcnMsIGNhc2VfZGVjbCk6IEFkZCBTVF9PTVBfKgoJY29kZXMuCgkoZ2ZjX2FzY2lpX3N0YXRlbWVudCk6IEhhbmRsZSBTVF9PTVBfKiBjb2Rlcy4KCShwYXJzZV9leGVjdXRhYmxlKTogUmVhcnJhbmdlIHRoZSBsb29wIHNsaWdodGx5LCBzbyB0aGF0CglwYXJzZV9vbXBfZG8gY2FuIHJldHVybiBuZXh0X3N0YXRlbWVudC4KCSogbWF0Y2guaCAoZ2ZjX21hdGNoX29tcF9lb3MsIGdmY19tYXRjaF9vbXBfYXRvbWljLAoJZ2ZjX21hdGNoX29tcF9iYXJyaWVyLCBnZmNfbWF0Y2hfb21wX2NyaXRpY2FsLCBnZmNfbWF0Y2hfb21wX2RvLAoJZ2ZjX21hdGNoX29tcF9mbHVzaCwgZ2ZjX21hdGNoX29tcF9tYXN0ZXIsIGdmY19tYXRjaF9vbXBfb3JkZXJlZCwKCWdmY19tYXRjaF9vbXBfcGFyYWxsZWwsIGdmY19tYXRjaF9vbXBfcGFyYWxsZWxfZG8sCglnZmNfbWF0Y2hfb21wX3BhcmFsbGVsX3NlY3Rpb25zLCBnZmNfbWF0Y2hfb21wX3BhcmFsbGVsX3dvcmtzaGFyZSwKCWdmY19tYXRjaF9vbXBfc2VjdGlvbnMsIGdmY19tYXRjaF9vbXBfc2luZ2xlLAoJZ2ZjX21hdGNoX29tcF90aHJlYWRwcml2YXRlLCBnZmNfbWF0Y2hfb21wX3dvcmtzaGFyZSwKCWdmY19tYXRjaF9vbXBfZW5kX25vd2FpdCwgZ2ZjX21hdGNoX29tcF9lbmRfc2luZ2xlKTogTmV3IHByb3RvdHlwZXMuCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9ibG9ja3MpOiBJZ25vcmUgRVhFQ19PTVBfKiBibG9jayBkaXJlY3RpdmVzLgoJKHJlc29sdmVfY29kZSk6IENhbGwgZ2ZjX3Jlc29sdmVfb21wX2RpcmVjdGl2ZSBvbiBFWEVDX09NUF8qCglkaXJlY3RpdmVzLgoJKiB0cmFucy5jIChnZmNfdHJhbnNfY29kZSk6IENhbGwgZ2ZjX3RyYW5zX29tcF9kaXJlY3RpdmUgZm9yCglFWEVDX09NUF8qIGRpcmVjdGl2ZXMuCgkqIHN0LmMgKGdmY19mcmVlX3N0YXRlbWVudCk6IEhhbmRsZSBFWEVDX09NUF8qIHN0YXRlbWVudCBmcmVlaW5nLgoJKiB0cmFucy1zdG10LmggKGdmY190cmFuc19vbXBfZGlyZWN0aXZlKTogTmV3IHByb3RvdHlwZS4KCSogb3Blbm1wLmM6IE5ldyBmaWxlLgoJKiB0cmFucy1vcGVubXAuYzogTmV3IGZpbGUuCgoyMDA2LTAyLTEzICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCSAgICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBmb3J0cmFuLzI2MjQ2CgkqIHRyYW5zLWRlY2wuYyAoZ2ZjX2dldF9zeW1ib2xfZGVjbCwgZ2ZjX2dldF9mYWtlX3Jlc3VsdF9kZWNsKTogVXNlCglnZmNfYWRkX2RlY2xfdG9fZnVuY3Rpb24gcmF0aGVyIHRoYW4gZ2ZjX2ZpbmlzaF92YXJfZGVjbCBvbiBsZW5ndGguCgoyMDA2LTAyLTEzICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjYwNzQKCVBSIGZvcnRyYW4vMjUxMDMKCSogcmVzb2x2ZS5jIChyZXNvbHZlX3N5bWJvbCk6IEV4dGVuZCB0aGUgcmVxdWlyZW1lbnQgdGhhdCBtb2R1bGUKCWFycmF5cyBoYXZlIGNvbnN0YW50IGJvdW5kcyB0byB0aG9zZSBpbiB0aGUgbWFpbiBwcm9ncmFtLiAgQXQgdGhlCglzYW1lIHRpbWUgc2ltcGxpZnkgdGhlIGFycmF5IGJvdW5kcywgdG8gYXZvaWRpbmcgdHJhcHBpbmcgcGFyYW1ldGVyCglhcnJheSByZWZlcmVuY2VzLCBhbmQgZXhjbHVkZSBhdXRvbWF0aWMgY2hhcmFjdGVyIGxlbmd0aCBmcm9tIG1haW4KCWFuZCBtb2R1bGVzLiBSZWFycmFuZ2UgcmVzb2x2ZV9zeW1ib2wgYW5kIHJlc29sdmVfZGVyaXZlZCB0byBwdXQgYXMKCWVhY2ggZmxhdm9yIHRvZ2V0aGVyLCBhcyBtdWNoIGFzIGlzIHBvc3NpYmxlIGFuZCBtb3ZlIGFsbCBzcGVjaWZpYwoJY29kZSBmb3IgZmxhdm9ycyBGTF9WQVJJQUJMRSwgRkxfUFJPQ0VEVVJFIGFuZCBGTF9QQVJBTUVURVIgaW50byBuZXcKCWZ1bmN0aW9ucy4KCShyZXNvbHZlX2ZsX3Zhcl9hbmRfcHJvYywgcmVzb2x2ZV9mbF92YXJpYWJsZSwgcmVzb2x2ZV9mbF9wcm9jZWR1cmUpOgoJTmV3IGZ1bmN0aW9ucyB0byBkbyB3b3JrIG9mIHJlc29sdmVfc3ltYm9sLgoJKHJlc29sdmVfaW5kZXhfZXhwcik6IE5ldyBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBmcm9tIHJlc29sdmVkX3N5bWJvbAoJYW5kIGlzIGV4dHJhY3RlZCBmcm9tIHJlc29sdmVfY2hhcmxlbi4KCShyZXNvbHZlX2NoYXJsZW4pOiBDYWxsIHRoaXMgbmV3IGZ1bmN0aW9uLgoJKHJlc29sdmVfZmxfZGVyaXZlZCk6IFJlbmFtZWQgcmVzb2x2ZV9kZXJpdmVkIHRvIGJlIGNvbnNpc3RlbnQgd2l0aAoJdGhlIG5hbWluZyBvZiB0aGUgbmV3IGZ1bmN0aW9ucyBmb3IgdGhlIG90aGVyIGZsYXZvdXJzLiAgQ2hhbmdlIHRoZQoJY2hhcmxlbiBjaGVja2luZyBzbyB0aGF0IHRoZSBzdHlsZSBpcyBjb25zaXN0ZW50IHdpdGggb3RoZXIgc2ltaWxhcgoJY2hlY2tzLiBBZGQgdGhlIGdlbmVyYXRpb24gb2YgdGhlIGdmY19kdF9saXN0LCByZW1vdmVkIGZyb20gcmVzb2x2ZV8KCXN5bWJvbC4KCglQUiBmb3J0cmFuLzIwODYxCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9hY3R1YWxfYXJnbGlzdCk6IFByZXZlbnQgaW50ZXJuYWwgcHJvY2VkdXJlcwoJZnJvbSBiZWluZyBkdW1teSBhcmd1bWVudHMuCgoJUFIgZm9ydHJhbi8yMDg3MQoJKiByZXNvbHZlLmMgKHJlc29sdmVfYWN0dWFsX2FyZ2xpc3QpOiBQcmV2ZW50IHB1cmUgYnV0IG5vbi1pbnRyaW5zaWMKCXByb2NlZHVyZXMgZnJvbSBiZWluZyBkdW1teSBhcmd1bWVudHMuCgoJUFIgZm9ydHJhbi8yNTA4MwoJKiByZXNvbHZlLmMgKGNoZWNrX2RhdGFfdmFyaWFibGUpOiBBZGQgdGVzdCB0aGF0IGRhdGEgdmFyaWFibGUgaXMgaW4KCUNPTU1PTi4KCglQUiBmb3J0cmFuLzI1MDg4CgkqIHJlc29sdmUuYyAocmVzb2x2ZV9jYWxsKTogQWRkIHRlc3QgdGhhdCB0aGUgc3Vicm91dGluZSBkb2VzIG5vdAoJaGF2ZSBhIHR5cGUuCgoyMDA2LTAyLTEyICBFcmlrIEVkZWxtYW5uICA8ZWVkZWxtYW5AZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNTgwNgoJKiB0cmFucy1hcnJheS5jIChnZmNfdHJhbnNfYWxsb2NhdGVfYXJyYXlfc3RvcmFnZSk6IE5ldyBhcmd1bWVudAoJZGVhbGxvYzsgZnJlZSB0aGUgdGVtcG9yYXJ5IG9ubHkgaWYgZGVhbGxvYyBpcyB0cnVlLgoJKGdmY190cmFuc19hbGxvY2F0ZV90ZW1wX2FycmF5KTogTmV3IGFyZ3VtZW50IGJvb2wgZGVhbGxvYywgdG8gYmUKCXBhc3NlZCBvbndhcmRzIHRvIGdmY190cmFuc19hbGxvY2F0ZV9hcnJheV9zdG9yYWdlLgoJKGdmY190cmFuc19hcnJheV9jb25zdHJ1Y3RvciwgZ2ZjX2NvbnZfbG9vcF9zZXR1cCk6IFVwZGF0ZSBjYWxsIHRvCglnZmNfdHJhbnNfYWxsb2NhdGVfdGVtcF9hcnJheS4KCSogdHJhbnMtYXJyYXkuaCAoZ2ZjX3RyYW5zX2FsbG9jYXRlX3RlbXBfYXJyYXkpOiBVcGRhdGUgZnVuY3Rpb24KCXByb3RvdHlwZS4KCSogdHJhbnMtZXhwci5jIChnZmNfY29udl9mdW5jdGlvbl9jYWxsKTogU2V0IG5ldyBhcmd1bWVudCAnZGVhbGxvYycKCXRvIGdmY190cmFuc19hbGxvY2F0ZV90ZW1wX2FycmF5IHRvIGZhbHNlIGluIGNhc2Ugb2YgZnVuY3Rpb25zCglyZXR1cm5pbmcgcG9pbnRlcnMuCgkoZ2ZjX3RyYW5zX2FycmF5ZnVuY19hc3NpZ24pOiBSZXR1cm4gTlVMTCBmb3IgZnVuY3Rpb25zIHJldHVybmluZwoJcG9pbnRlcnMuCgoyMDA2LTAyLTEwICBTdGV2ZW4gRy4gS2FyZ2wgIDxrYXJnbHNAY29tY2FzdC5uZXQ+CgoJUFIgZm9ydHJhbi8yMDg1OAoJKmRlY2wuYyAodmFyaWFibGVfZGVjbCk6IEltcHJvdmUgZXJyb3IgbWVzc2FnZS4gIFJlbW92ZSBpbml0aWFsaXphdGlvbgoJdHlwZXNwZWMuICBXcmFwIGxvbmcgbGluZS4KCSpleHByLmMgKGdmY19jaGVja19wb2ludGVyX2Fzc2lnbik6IFBlcm1pdCBjaGVja2luZyBvZiB0eXBlLCBraW5kIHR5cGUsCglhbmQgcmFuay4KCSpzaW1wbGlmeS5jIChnZmNfc2ltcGxpZnlfbnVsbCk6IEVuc3VyZSB0eXBlLCBraW5kIHR5cGUsIGFuZCByYW5rCglhcmUgc2V0LgoKCjIwMDYtMDItMTAgIFRvYmlhcyBTY2hswoH8dGVyICA8dG9iaWFzLnNjaGx1ZXRlckBwaHlzaWsudW5pLW11ZW5jaGVuLmRlPgoKCVBSIGZvcnRyYW4vMTQ3NzEKCSogYXJpdGguYyAoZXZhbF9pbnRyaW5zaWMpOiBBY2NlcHQgSU5UUklOU0lDX1BBUkVOVEhFU0VTLgoJKiBleHByLmMgKGNoZWNrX2ludHJpbnNpY19vcCk6IExpa2V3aXNlLgoJKiBtb2R1bGUuYyAobWlvX2V4cHIpOiBMaWtld2lzZS4KCjIwMDYtMDItMDkgIFRvYmlhcyBTY2hswoH8dGVyICA8dG9iaWFzLnNjaGx1ZXRlckBwaHlzaWsudW5pLW11ZW5jaGVuLmRlPgoKCSogZHVtcC1wYXJzZS10cmVlLmM6IFVwZGF0ZSBjb3B5cmlnaHQgeWVhcnMuCgkqIG1hdGNoZXhwLmM6IExpa2V3aXNlLgoJKiBtb2R1bGUuYzogTGlrZXdpc2UuCgoJUFIgZm9ydHJhbi8xNDc3MQoJKiBnZm9ydHJhbi5oIChnZmNfaW50cmluc2ljX29wKTogQWRkIElOVFJJTlNJQ19QQVJFTlRIRVNFUy4KCSogZHVtcC1wYXJzZS10cmVlIChnZmNfc2hvd19leHByKTogSGFuZGxlIElOVFJJTlNJQ19QQVJFTlRIRVNFUy4KCSogZXhwci5jIChzaW1wbGlmeV9pbnRyaW5zaWNfb3ApOiBUcmVhdCBJTlRSSU5TSUNfUEFSRU5USEVTRVMgYXMKCWlmIGl0IHdlcmUgSU5UUklOU0lDX1VQTFVTLgoJKiByZXNvbHZlLmMgKHJlc29sdmVfb3BlcmF0b3IpOiBIYW5kbGUgSU5UUklOU0lDX1BBUkVOVEhFU0VTLgoJKiBtYXRjaC5jIChpbnRyaW5zaWNfb3BlcmF0b3JzKTogQWRkIElOVFJJTlNJQ19QQVJFTlRIRVNFUy4KCSogbWF0Y2hleHAuYyAobWF0Y2hfcHJpbWFyeSk6IFJlY29yZCBwYXJlbnRoZXNlcyBzdXJyb3VuZGluZwoJbnVtZXJpYyBleHByZXNzaW9ucy4KCSogbW9kdWxlLmMgKGludHJpbnNpY3MpOiBBZGQgSU5UUklOU0lDX1BBUkVOVEhFU0VTIGZvciBtb2R1bGUKCWR1bXBpbmcuCgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2NvbnZfZXhwcl9vcCk6IEhhbmRsZSBJTlRSSU5TSUNfUEFSRU5USEVTRVMuCgoyMDA2LTAyLTA5ICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjYwMzgKCSogdHJhbnMtc3RtdC5jIChnZmNfdHJhbnNfYWxsb2NhdGUpOiBQcm92aWRlIGFzc3VtZWQgY2hhcmFjdGVyIGxlbmd0aAoJc2NhbGFyIHdpdGggbWlzc2luZyBiYWNrZW5kX2RlY2wgZm9yIHRoZSBoaWRkZW4gZHVtbXkgY2hhcmxlbi4KCglQUiBmb3J0cmFuLzI1MDU5CgkqIGludGVyZmFjZS5jIChnZmNfZXh0ZW5kX2Fzc2lnbik6IFJlbW92ZSBkZXRlY3Rpb24gb2Ygbm9uLVBVUkUKCXN1YnJvdXRpbmUgaW4gYXNzaWdubWVudCBpbnRlcmZhY2UsIHdpdGggZ2ZjX2Vycm9yLCBhbmQgcHV0IGl0IGluCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9jb2RlKS4KCglQUiBmb3J0cmFuLzI1MDcwCgkqIGludGVyZmFjZS5jIChnZmNfcHJvY2VkdXJlX3VzZSk6IEZsYWcgcmFuayBjaGVja2luZyBmb3Igbm9uLQoJZWxlbWVudGFsLCBjb250YWluZWQgb3IgaW50ZXJmYWNlIHByb2NlZHVyZXMgaW4gY2FsbCB0bwoJKGNvbXBhcmVfYWN0dWFsX2Zvcm1hbCksIHdoZXJlIHJhbmtzIGFyZSBjaGVja2VkIGZvciBhc3N1bWVkCglzaGFwZSBhcnJheXMuLgoKMjAwNi0wMi0wOCAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxjb3VkZXJ0QGNsaXBwZXIuZW5zLmZyPgoKCVBSIGxpYmZvcnRyYW4vMjU0MjUKCSogdHJhbnMtZGVjbC5jIChnZmNfZ2VuZXJhdGVfZnVuY3Rpb25fY29kZSk6IEFkZCBuZXcgYXJndW1lbnQsCglwZWRhbnRpYywgdG8gc2V0X3N0ZCBjYWxsLgoKMjAwNi0wMi0wNiAgVGhvbWFzIEtvZW5pZyAgPFRob21hcy5Lb2VuaWdAb25saW5lLmRlPgoKCVBSIGxpYmZvcnRyYW4vMjM4MTUKCSogZ2ZvcnRyYW4udGV4aTogRG9jdW1lbnQgdGhlIEdGT1JUUkFOX0NPTlZFUlRfVU5JVCBlbnZpcm9ubWVudAoJdmFyaWFibGUuCgkqIGludm9rZS50ZXhpOiAgTWVudGlvbiB0aGUgIlJ1bnRpbWUiIGNoYXB0ZXIuCglEb2N1bWVudCB0aGUgLWZjb252ZXJ0PSBvcHRpb24uCgkqIGdmb3J0cmFuLmg6ICBBZGQgb3B0aW9uc19jb252ZXJ0LgoJKiBsYW5nLm9wdDogIEFkZCBmY29udmVydD1saXR0bGUtZW5kaWFuLCBmY29udmVydD1iaWctZW5kaWFuLAoJZmNvbnZlcnQ9bmF0aXZlIGFuZCBmY29udmVydD1zd2FwLgoJKiB0cmFucy1kZWNsLmMgKHRvcCBsZXZlbCk6ICBBZGQgZ2Zvcl9mbmRlY2xfc2V0X2NvbnZlcnQuCgkoZ2ZjX2J1aWxkX2J1aWx0aW5fZnVuY3Rpb25fZGVjbHMpOiAgU2V0IGdmb3JfZm5kZWNsX3NldF9jb252ZXJ0LgoJKGdmY19nZW5lcmF0ZV9mdW5jdGlvbl9jb2RlKTogIElmIC1mY29udmVydCB3YXMgc3BlY2lmaWVkLAoJYW5kIHRoaXMgaXMgdGhlIG1haW4gcHJvZ3JhbSwgYWRkIGEgY2FsbCB0byBzZXRfY29udmVydCgpLgoJKiBvcHRpb25zLmM6ICBIYW5kbGUgdGhlIC1mY29udmVydCBvcHRpb25zLgoKMjAwNi0wMi0wNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB0cmFucy1zdG10LmMgKGdmY19ldmFsdWF0ZV93aGVyZV9tYXNrKTogQWxsb3cgdGhlIE5NQVNLIGFyZ3VtZW50Cgl0byBiZSBOVUxMIHRvIGluZGljYXRlIHRoYXQgdGhlIG5vdCBtYXNrIGlzbid0IHJlcXVpcmVkLgoJKGdmY190cmFuc193aGVyZV8yKTogUmVtb3ZlIFBNQVNLIGFyZ3VtZW50LiAgQXZvaWQgY2FsY3VsYXRpbmcgdGhlCglwZW5kaW5nIG1hc2sgZm9yIHRoZSBsYXN0IGNsYXVzZSBvZiBhIFdIRVJFIGNoYWluLiAgVXBkYXRlIHJlY3Vyc2l2ZQoJY2FsbC4KCShnZmNfdHJhbnNfZm9yYWxsXzEpOiBVcGRhdGUgY2FsbCB0byBnZmNfdHJhbnNfd2hlcmVfMi4KCShnZmNfdHJhbnNfd2hlcmUpOiBMaWtld2lzZS4KCjIwMDYtMDItMDYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCUJhY2twb3J0IGZyb20gZ29tcC0yMDA1MDYwOC1icmFuY2gKCSogdHJhbnMtZGVjbC5jIChjcmVhdGVfZnVuY3Rpb25fYXJnbGlzdCk6IEhhbmRsZSBkdW1teSBmdW5jdGlvbnMuCgoJKiB0cmFucy1kZWNsLmMgKGdmY19nZXRfc3ltYm9sX2RlY2wpOiBSZXZlcnQgZXhwbGljaXQgc2V0dGluZyBvZgoJVFlQRV9TSVpFX1VOSVQuCgkoZ2ZjX3RyYW5zX3ZsYV90eXBlX3NpemVzKTogQWxzbyAiZ2ltcGxpZnkiCglHRkNfVFlQRV9BUlJBWV9EQVRBUFRSX1RZUEUgZm9yIEdGQ19ERVNDUklQVE9SX1RZUEVfUCB0eXBlcy4KCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX3RyYW5zX2RlZmVycmVkX2FycmF5KTogQ2FsbAoJZ2ZjX3RyYW5zX3ZsYV90eXBlX3NpemVzLgoKCSogdHJhbnMtZGVjbC5jIChzYXZlZF9mdW5jdGlvbl9kZWNscywgc2F2ZWRfcGFyZW50X2Z1bmN0aW9uX2RlY2xzKToKCVJlbW92ZSB1bm5lY2Vzc2FyeSBpbml0aWFsaXphdGlvbi4KCShjcmVhdGVfZnVuY3Rpb25fYXJnbGlzdCk6IE1ha2Ugc3VyZSBfX3Jlc3VsdCBoYXMgY29tcGxldGUgdHlwZS4KCShnZmNfZ2V0X2Zha2VfcmVzdWx0X2RlY2wpOiBDaGFuZ2UgY3VycmVudF9mYWtlX3Jlc3VsdF9kZWNsIGludG8KCWEgdHJlZSBjaGFpbi4gIEZvciBlbnRyeSBtYXN0ZXIsIGNyZWF0ZSBhIHNlcGFyYXRlIHZhcmlhYmxlCglmb3IgZWFjaCByZXN1bHQgbmFtZS4gIEZvciBCVF9DSEFSQUNURVIgcmVzdWx0cywgY2FsbAoJZ2ZjX2ZpbmlzaF92YXJfZGVjbCBvbiBsZW5ndGggZXZlbiBpZiBpdCBoYXMgYmVlbiBhbHJlYWR5IGNyZWF0ZWQsCglidXQgbm90IHB1c2hkZWNsJ2VkLgoJKGdmY190cmFuc192bGFfdHlwZV9zaXplcyk6IEZvciBmdW5jdGlvbi9lbnRyeSByZXN1bHQsIGFkanVzdAoJcmVzdWx0IHZhbHVlIHR5cGUsIG5vdCB0aGUgRlVOQ1RJT05fVFlQRS4KCShnZmNfZ2VuZXJhdGVfZnVuY3Rpb25fY29kZSk6IEFkanVzdCBmb3IgY3VycmVudF9mYWtlX3Jlc3VsdF9kZWNsCgljaGFuZ2VzLgoJKGdmY190cmFuc19kZWZlcnJlZF92YXJzKTogTGlrZXdpc2UuICBDYWxsIGdmY190cmFuc192bGFfdHlwZV9zaXplcwoJZXZlbiBvbiByZXN1bHQgaWYgaXQgaXMgYXNzdW1lZC1sZW5ndGggY2hhcmFjdGVyLgoKCSogdHJhbnMtZGVjbC5jIChnZmNfdHJhbnNfZHVtbXlfY2hhcmFjdGVyKTogQWRkIFNZTSBhcmd1bWVudC4KCUNhbGwgZ2ZjX3RyYW5zX3ZsYV90eXBlX3NpemVzLgoJKGdmY190cmFuc19hdXRvX2NoYXJhY3Rlcl92YXJpYWJsZSk6IENhbGwgZ2ZjX3RyYW5zX3ZsYV90eXBlX3NpemVzLgoJKGdmY190cmFuc192bGFfb25lX3NpemVwb3MsIGdmY190cmFuc192bGFfdHlwZV9zaXplc18xLAoJZ2ZjX3RyYW5zX3ZsYV90eXBlX3NpemVzKTogTmV3IGZ1bmN0aW9ucy4KCShnZmNfdHJhbnNfZGVmZXJyZWRfdmFycyk6IEFkanVzdCBnZmNfdHJhbnNfZHVtbXlfY2hhcmFjdGVyCgljYWxsZXJzLiAgQ2FsbCBnZmNfdHJhbnNfdmxhX3R5cGVfc2l6ZXMgb24gYXNzdW1lZC1sZW5ndGgKCWNoYXJhY3RlciBwYXJhbWV0ZXJzLgoJKiB0cmFucy1hcnJheS5jIChnZmNfdHJhbnNfYXJyYXlfYm91bmRzLAoJZ2ZjX3RyYW5zX2F1dG9fYXJyYXlfYWxsb2NhdGlvbiwgZ2ZjX3RyYW5zX2R1bW15X2FycmF5X2JpYXMpOiBDYWxsCglnZmNfdHJhbnNfdmxhX3R5cGVfc2l6ZXMuCgkqIHRyYW5zLmggKGdmY190cmFuc192bGFfdHlwZV9zaXplcyk6IE5ldyBwcm90b3R5cGUuCgoJKiB0cmFucy1kZWNsLmMgKGdmY19idWlsZF9xdWFsaWZpZWRfYXJyYXkpOiBGb3Igbm9uLWFzc3VtZWQtc2l6ZQoJYXJyYXlzIHdpdGhvdXQgY29uc3RhbnQgc2l6ZSwgY3JlYXRlIGFsc28gYW4gaW5kZXggdmFyIGZvcgoJR0ZDX1RZUEVfQVJSQVlfU0laRSAodHlwZSkuICBJZiB0aGUgdHlwZSBpcyBpbmNvbXBsZXRlLCBjb21wbGV0ZQoJaXQgYXMgMC4uc2l6ZS0xLgoJKGdmY19jcmVhdGVfc3RyaW5nX2xlbmd0aCk6IERvbid0IGNhbGwgZ2ZjX2RlZmVyX3N5bWJvbF9pbml0CglpZiBqdXN0IGNyZWF0aW5nIERFQ0xfQVJHVU1FTlRTLgoJKGdmY19nZXRfc3ltYm9sX2RlY2wpOiBDYWxsIGdmY19maW5pc2hfdmFyX2RlY2wgYW5kCglnZmNfZGVmZXJfc3ltYm9sX2luaXQgZXZlbiBpZiB0cy5jbC0+YmFja2VuZF9kZWNsIGlzIGFscmVhZHkKCXNldCB0byBhIFZBUl9ERUNMIHRoYXQgZG9lc24ndCBoYXZlIERFQ0xfQ09OVEVYVCB5ZXQuCgkoY3JlYXRlX2Z1bmN0aW9uX2FyZ2xpc3QpOiBSZXdvcmssIHNvIHRoYXQgaGlkZGVuIGxlbmd0aAoJYXJndW1lbnRzIGZvciBDSEFSQUNURVIgcGFyYW1ldGVycyBhcmUgY3JlYXRlZCB0b2dldGhlciB3aXRoCgl0aGUgcGFyYW1ldGVycy4gIFJlc29sdmUgdHMuY2wtPmJhY2tlbmRfZGVjbCBmb3IgQ0hBUkFDVEVSCglwYXJhbWV0ZXJzLiAgSWYgdGhlIGFyZ3VtZW50IGlzIGEgbm9uLWNvbnN0YW50IGxlbmd0aCBhcnJheQoJb3IgQ0hBUkFDVEVSLCBlbnN1cmUgUEFSTV9ERUNMIGhhcyBkaWZmZXJlbnQgdHlwZSB0aGFuCglpdHMgREVDTF9BUkdfVFlQRS4KCShnZW5lcmF0ZV9sb2NhbF9kZWNsKTogQ2FsbCBnZmNfZ2V0X3N5bWJvbF9kZWNsIGV2ZW4KCWZvciBub24tcmVmZXJlbmNlZCBub24tY29uc3RhbnQgbGVuZ3RoIENIQVJBQ1RFUiBwYXJhbWV0ZXJzCglhZnRlciBvcHRpb25hbGx5IGlzc3Vpbmcgd2FybmluZ3MuCgkqIHRyYW5zLWFycmF5LmMgKGdmY190cmFuc19hcnJheV9ib3VuZHMpOiBTZXQgbGFzdCBzdHJpZGUKCXRvIEdGQ19UWVBFX0FSUkFZX1NJWkUgKHR5cGUpIHRvIGluaXRpYWxpemUgaXQgYXMgd2VsbC4KCShnZmNfdHJhbnNfZHVtbXlfYXJyYXlfYmlhcyk6IEluaXRpYWxpemUgR0ZDX1RZUEVfQVJSQVlfU0laRSAodHlwZSkKCXZhcmlhYmxlIGFzIHdlbGwuCgoJKiB0cmFucy1leHByLmMgKGdmY19jb252X2V4cHJfdmFsKTogRml4IGNvbW1lbnQgdHlwby4KCgkqIHRyYW5zLXN0bXQuYyAoZ2ZjX3RyYW5zX3NpbXBsZV9kbyk6IEZpeCBjb21tZW50LgoKMjAwNi0wMi0wNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkZXBlbmRlbmN5LmMgKGdmY19jaGVja19kZXBlbmRlbmN5KTogUmVtb3ZlIHVudXNlZCB2YXJzIGFuZCBudmFycwoJYXJndW1lbnRzLiAgUmVwbGFjZSB3aXRoIGFuICJpZGVudGljYWwiIGFyZ3VtZW50LiAgQSBmdWxsIGFycmF5CglyZWZlcmVuY2UgdG8gdGhlIHNhbWUgc3ltYm9sIGlzIGEgZGVwZW5kZW5jeSBpZiBpZGVudGljYWwgaXMgdHJ1ZS4KCSogZGVwZW5kZW5jeS5oIChnZmNfY2hlY2tfZGVwZW5kZW5jeSk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIHRyYW5zLWFycmF5LmggKGdmY19jaGVja19kZXBlbmRlbmN5KTogRGVsZXRlIGR1cGxpY2F0ZSBwcm90b3R5cGUuCgkqIHRyYW5zLXN0bXQuYzogI2luY2x1ZGUgZGVwZW5kZW5jeS5oIGZvciBnZmNfY2hlY2tfZGVwZW5kZW5jeS4KCShnZmNfdHJhbnNfZm9yYWxsXzEpOiBVcGRhdGUgY2FsbHMgdG8gZ2ZjX2NoZWNrX2RlcGVuZGVuY3kuCgkoZ2ZjX3RyYW5zX3doZXJlXzIpOiBMaWtld2lzZS4gIFJlbW92ZSB1bm5lZWRlZCB2YXJpYWJsZXMuCgkoZ2ZjX3RyYW5zX3doZXJlXzMpOiBOZXcgZnVuY3Rpb24gZm9yIHNpbXBsZSBub24tZGVwZW5kZW50IFdIRVJFcy4KCShnZmNfdHJhbnNfd2hlcmUpOiBDYWxsIGdmY190cmFuc193aGVyZV8zIHRvIHRyYW5zbGF0ZSBzaW1wbGUKCUY5MC1zdHlsZSBXSEVSRSBzdGF0ZW1lbnRzIHdpdGhvdXQgaW50ZXJuYWwgZGVwZW5kZW5jaWVzLgoJKiBNYWtlLWxhbmcuaW4gKHRyYW5zLXN0bXQubyk6IERlcGVuZCB1cG9uIGRlcGVuZGVuY3kuaC4KCjIwMDYtMDItMDUgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCglQUiBmb3J0cmFuLzI2MDQxCglQUiBmb3J0cmFuLzI2MDY0CgkqIHJlc29sdmUuYyAocmVzb2x2ZV90eXBlcyk6IE5ldyBmdW5jdGlvbi4KCShyZXNvbHZlX2NvZGVzKTogTGlrZXdpc2UuCgkoZ2ZjX3Jlc29sdmUpOiBVc2UgdGhlbS4KCjIwMDYtMDItMDUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogdHJhbnMtc3RtdC5jIChnZmNfZXZhbHVhdGVfd2hlcmVfbWFzayk6IFVzZSBMT0dJQ0FMKjEgZm9yIFdIRVJFCgltYXNrcyBpbnN0ZWFkIG9mIExPR0lDQUwqNC4KCjIwMDYtMDItMDUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogcmVzb2x2ZS5jIChyZXNvbHZlX3N5bWJvbCk6IEluaXRpYWxpemUgY29uc3RydWN0b3JfZXhwciB0byBOVUxMLgoKMjAwNi0wMi0wNCAgVGhvbWFzIEtvZW5pZyAgPFRob21hcy5Lb2VuaWdAb25saW5lLmRlPgoKCVBSIGZvcnRyYW4vMjUwNzUKCWNoZWNrLmMgKGlkZW50aWNhbF9kaW1lbl9zaGFwZSk6ICBOZXcgZnVuY3Rpb24uCgkoY2hlY2tfZG90X3Byb2R1Y3QpOiAgVXNlIGlkZW50aWNhbF9kaW1lbl9zaGFwZSgpIHRvIGNoZWNrIHNpemVzCglmb3IgZG90X3Byb2R1Y3QuCgkoZ2ZjX2NoZWNrX21hdG11bCk6ICBMaWtld2lzZS4KCShnZmNfY2hlY2tfbWVyZ2UpOiAgQ2hlY2sgY29uZm9ybWFuY2UgYmV0d2VlbiB0c291cmNlIGFuZCBmc291cmNlCglhbmQgYmV0d2VlbiB0c291cmNlIGFuZCBtYXNrLgoJKGdmY19jaGVja19wYWNrKTogIENoZWNrIGNvbmZvcm1hbmNlIGJldHdlZW4gYXJyYXkgYW5kIG1hc2suCgoyMDA2LTAyLTAzICBTdGV2ZW4gRy4gS2FyZ2wgIDxrYXJnbHNAY29tY2FzdD4KCSAgICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjA4NDUKCSogcmVzb2x2ZS5jIChyZXNvbHZlX3N5bWJvbCk6IERlZmF1bHQgaW5pdGlhbGl6YXRpb24gb2YgZGVyaXZlZCB0eXBlCgljb21wb25lbnQgcmVndWlyZXMgdGhlIFNBVkUgYXR0cmlidXRlLgoKMjAwNi0wMi0wMiAgU3RldmVuIEcuIEthcmdsICA8a2FyZ2xzQGNvbWNhc3Q+CgoJUFIgZm9ydHJhbi8yNDk1OAoJbWF0Y2guYyAoZ2ZjX21hdGNoX251bGxpZnkpOiAgRnJlZSB0aGUgbGlzdCBmcm9tIGhlYWQgbm90IHRhaWwuCgoJUFIgZm9ydHJhbi8yNTA3MgoJKiBtYXRjaC5jIChtYXRjaF9mb3JhbGxfaGVhZGVyKTogRml4IGludGVybmFsIGVycm9yIGNhdXNlZCBieSBib2d1cwoJZ2ZjX2VweHIgcG9pbnRlcnMuCgoKMjAwNi0wMS0zMSAgVGhvbWFzIEtvZW5pZyAgPFRob21hcy5Lb2VuaWdAb25saW5lLmRlPgoKCVBSIGZvcnRyYW4vMjYwMzkKCWV4cHIuYyAoZ2ZjX2NoZWNrX2NvbmZvcm1hbmNlKTogIFJlb3JkZXIgZXJyb3IgbWVzc2FnZQoJdG8gYXZvaWQgcGx1cmFsLgoJY2hlY2suYyhnZmNfY2hlY2tfbWlubG9jX21heGxvYyk6ICBDYWxsIGdmY19jaGVja19jb25mb3JtYW5jZQoJZm9yIGNoZWNraW5nIGFyZ3VtZW50cyBhcnJheSBhbmQgbWFzay4KCShjaGVja19yZWR1Y3Rpb24pOiAgTGlrZXdpc2UuCgoyMDA2LTAxLTMwICBFcmlrIEVkZWxtYW5uICA8ZWVkZWxtYW5AZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNDI2NgoJKiB0cmFucy1pby5jIChzZXRfaW50ZXJuYWxfdW5pdCk6IENoZWNrIHRoZSByYW5rIG9mIHRoZQoJZXhwcmVzc2lvbiBub2RlIGl0c2VsZiBpbnN0ZWFkIG9mIGl0cyBzeW1ib2wuCgoyMDA2LTAxLTI5ICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMTg1NzgKCVBSIGZvcnRyYW4vMTg1NzkKCVBSIGZvcnRyYW4vMjA4NTcKCVBSIGZvcnRyYW4vMjA4ODUKCSogaW50ZXJmYWNlLmMgKGNvbXBhcmVfYWN0dWFsX2Zvcm1hbCk6IEVycm9yIGZvciBJTlRFTlQoT1VUIG9yIElOT1VUKQoJaWYgYWN0dWFsIGFyZ3VtZW50IGlzIG5vdCBhIHZhcmlhYmxlLgoKMjAwNi0wMS0yOCAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzE3OTExCgkqIGV4cHIuYyAoZ2ZjX2NoZWNrX2Fzc2lnbiwgZ2ZjX2NoZWNrX3BvaW50ZXJfYXNzaWduKTogRW1pdCBlcnJvciBpZgoJdGhlIGx2YWx1ZSBpcyBhIHVzZSBhc3NvY2lhdGVkIHByb2NlZHVyZS4KCglQUiBmb3J0cmFuLzIwODk1CglQUiBmb3J0cmFuLzI1MDMwCgkqIGV4cHIuYyAoZ2ZjX2NoZWNrX3BvaW50ZXJfYXNzaWduKTogRW1pdCBlcnJvciBpZiBsdmFsdWUgYW5kIHJ2YWx1ZQoJY2hhcmFjdGVyIGxlbmd0aHMgYXJlIG5vdCB0aGUgc2FtZS4gIFVzZSBnZmNfZGVwX2NvbXBhcmVfZXhwciBmb3IgdGhlCgljb21wYXJpc29uLgoJKiBnZm9ydHJhbi5oOiBBZGQgcHJvdG90eXBlIGZvciBnZmNfZGVwX2NvbXBhcmVfZXhwci4KCSogZGVwZW5kZW5jeS5oOiBSZW1vdmUgcHJvdG90eXBlIGZvciBnZmNfZGVwX2NvbXBhcmVfZXhwci4KCjIwMDYtMDEtMjcgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNTk2NAoJKiByZXNvbHZlLmMgKHJlc29sdmVfZnVuY3Rpb24pOiBBZGQgR0ZDX0lTWU1fTE9DIHRvIHRoZSBsaXN0IG9mCglnZW5lcmljX2lkcyBleGVtcHRlZCBmcm9tIGFzc3VtZWQgc2l6ZSBjaGVja2luZy4KCjIwMDYtMDEtMjcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGZvcnRyYW4vMjUzMjQKCSogTWFrZS1sYW5nLmluIChmb3J0cmFuL3NjYW5uZXIubyk6IERlcGVuZCBvbiB0b3BsZXYuaC4KCSogbGFuZy5vcHQgKGZwcmVwcm9jZXNzZWQpOiBOZXcgb3B0aW9uLgoJKiBzY2FubmVyLmM6IEluY2x1ZGUgdG9wbGV2LmguCgkoZ2ZjX3NyY19maWxlLCBnZmNfc3JjX3ByZXByb2Nlc3Nvcl9saW5lcyk6IE5ldyB2YXJpYWJsZXMuCgkocHJlcHJvY2Vzc29yX2xpbmUpOiBVbmVzY2FwZSBmaWxlbmFtZSBpZiB0aGVyZSB3ZXJlIGFueQoJYmFja3NsYXNoZXMuCgkobG9hZF9maWxlKTogSWYgaW5pdGlhbCBhbmQgZ2ZjX3NyY19maWxlIGlzIG5vdCBOVUxMLAoJdXNlIGl0IHJhdGhlciB0aGFuIG9wZW5pbmcgdGhlIGZpbGUuICBJZiBnZmNfc3JjX3ByZXByb2Nlc3Nvcl9saW5lcwoJaGFzIG5vbi1OVUxMIGVsZW1lbnRzLCBwYXNzIGl0IHRvIHByZXByb2Nlc3Nvcl9saW5lLgoJKHVuZXNjYXBlX2ZpbGVuYW1lLCBnZmNfcmVhZF9vcmlnX2ZpbGVuYW1lKTogTmV3IGZ1bmN0aW9ucy4KCSogZ2ZvcnRyYW4uaCAoZ2ZjX29wdGlvbl90KTogQWRkIGZsYWdfcHJlcHJvY2Vzc2VkLgoJKGdmY19yZWFkX29yaWdfZmlsZW5hbWUpOiBOZXcgcHJvdG90eXBlLgoJKiBvcHRpb25zLmMgKGdmY19pbml0X29wdGlvbnMpOiBDbGVhciBmbGFnX3ByZXByb2Nlc3NlZC4KCShnZmNfcG9zdF9vcHRpb25zKTogSWYgZmxhZ19wcmVwcm9jZXNzZWQsIGNhbGwKCWdmY19yZWFkX29yaWdfZmlsZW5hbWUuCgkoZ2ZjX2hhbmRsZV9vcHRpb24pOiBIYW5kbGUgT1BUX2ZwcmVwcm9jZXNzZWQuCgkqIGxhbmctc3BlY3MuaDogUGFzcyAtZnByZXByb2Nlc3NlZCB0byBmOTUxIGlmIHByZXByb2Nlc3NpbmcKCXNvdXJjZXMuCgoyMDA2LTAxLTI3ICBFcmlrIEVkZWxtYW5uICA8ZWVkZWxtYW5AZ2NjLmdudS5vcmc+CgoJKiBzeW1ib2wuYyAoZnJlZV9vbGRfc3ltYm9sKTogRml4IGNvbmZ1c2luZyBjb21tZW50LCBhbmQgYWRkIGNvZGUKCSAgdG8gZnJlZSBvbGRfc3ltYm9sLT5mb3JtYWwuCgoyMDA2LTAxLTI2ICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjU5NjQKCSogcmVzb2x2ZS5jIChyZXNvbHZlX2Z1bmN0aW9uKTogRXhjbHVkZSBzdGF0ZW1lbnQgZnVuY3Rpb25zIGZyb20KCWdsb2JhbCByZWZlcmVuY2UgY2hlY2tpbmcuCgoJUFIgZm9ydHJhbi8yNTA4NAoJUFIgZm9ydHJhbi8yMDg1MgoJUFIgZm9ydHJhbi8yNTA4NQoJUFIgZm9ydHJhbi8yNTA4NgoJKiByZXNvbHZlLmMgKHJlc29sdmVfZnVuY3Rpb24pOiBEZWNsYXJlIGEgZ2ZjX3N5bWJvbCB0byByZXBsYWNlIHRoZQoJcmVmZXJlbmNlcyB0aHJvdWdoIHRoZSBzeW10cmVlIHRvIHRoZSBzeW1ib2wgYXNzb2NpYXRlZCB3aXRoIHRoZQoJZnVuY3Rpb24gZXhwcmVzaW9uLiBHaXZlIGVycm9yIG9uIHJlZmVyZW5jZSB0byBhbiBhc3N1bWVkIGNoYXJhY3RlcgoJbGVuZ3RoIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gYW4gaW50ZXJmYWNlIG9yIGFuIGV4dGVybmFsIGZ1bmN0aW9uCgl0aGF0IGlzIG5vdCBhIGR1bW15IGFyZ3VtZW50LgoJKHJlc29sdmVfc3ltYm9sKTogR2l2ZSBlcnJvciBpZiBhbiBhc3N1bWVkIGNoYXJhY3RlciBsZW5ndGggZnVuY3Rpb24KCWlzIGFycmF5LXZhbHVlZCwgcG9pbnRlci12YWx1ZWQsIHB1cmUgb3IgcmVjdXJzaXZlLiBFbWl0IHdhcm5pbmcKCXRoYXQgY2hhcmFjdGVyKCopIHZhbHVlIGZ1bmN0aW9ucyBhcmUgb2Jzb2xlc2NlbnQgaW4gRjk1LgoKCVBSIGZvcnRyYW4vMjU0MTYKCSogdHJhbnMtZXhwci5jIChnZmNfY29udl9mdW5jdGlvbl9jYWxsKTogVGhlIGFib3ZlIHBhdGNoIHRvIHJlc29sdmUuYwoJcHJldmVudHMgYW55IGFzc3VtZWQgY2hhcmFjdGVyIGxlbmd0aCBmdW5jdGlvbiBjYWxsIGZyb20gZ2V0dGluZyBoZXJlCglleGNlcHQgaW50cmluc2ljcyBzdWNoIGFzIFNQUkVBRC4gSW4gdGhpcyBjYXNlLCBlbnN1cmUgdGhhdCBubwoJc2VnZmF1bHQgb2NjdXJzIGZyb20gcmVmZXJlbmNpbmcgbm9uLWV4aXN0ZW50IGNoYXJsZW4tPmxlbmd0aC0+CglleHByX3R5cGUgYW5kIHByb3ZpZGUgYSBiYWNrZW5kX2RlY2wgZm9yIHRoZSBjaGFybGVuIGZyb20gdGhlIGNoYXJsZW4KCW9mIHRoZSBmaXJzdCBhY3R1YWwgYXJndW1lbnQuCgoJQ3VyZSB0ZW1wIG5hbWUgY29uZnVzaW9uLgoJKiB0cmFucy1leHByLmMgKGdmY19nZXRfaW50ZXJmYWNlX21hcHBpbmdfYXJyYXkpOiBDaGFuZ2UgbmFtZSBvZgoJdGVtcG9yYXJ5IGZyb20gInBhcm0iIHRvICJpZm0iIHRvIGF2b2lkIGNsYXNoIHdpdGggdGVtcCBjb21pbmcgZnJvbQoJdHJhbnMtYXJyYXkuYy4KCjIwMDYtMDEtMjUgIEVyaWsgRWRlbG1hbm4gIDxlZWRlbG1hbkBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI1NzE2CgkqIHN5bWJvbC5jIChmcmVlX29sZF9zeW1ib2wpOiBOZXcgZnVuY3Rpb24uCgkoZ2ZjX2NvbW1pdF9zeW1ib2xzKTogVXNlIGl0LgoJKGdmY19jb21taXRfc3ltYm9sKTogTmV3IGZ1bmN0aW9uLgoJKGdmY191c2VfZGVyaXZlZCk6IFVzZSBpdC4KCSogZ2ZvcnRyYW4uaDogQWRkIHByb3RvdHlwZSBmb3IgZ2ZjX2NvbW1pdF9zeW1ib2wuCgkqIGludHJpbnNpYy5jIChnZmNfZmluZF9mdW5jdGlvbik6IFNlYXJjaCBpbiAnY29udmVyc2lvbicKCWlmIG5vdCBmb3VuZCBpbiAnZnVuY3Rpb25zJy4KCShnZmNfY29udmVydF90eXBlX3dhcm4pOiBBZGQgYSBzeW10cmVlIHRvIHRoZSBuZXcKCWV4cHJlc3Npb24gbm9kZSwgYW5kIGNvbW1pdCB0aGUgbmV3IHN5bXRyZWUtPm4uc3ltLgoJKiByZXNvbHZlLmMgKGdmY19yZXNvbHZlX2luZGV4KTogTWFrZSBzdXJlIHR5cGVzcGVjIGlzCglwcm9wZXJseSBpbml0aWFsaXplZC4KCjIwMDYtMDEtMjMgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNTkwMQoJKiBkZWNsLmMgKGdldF9wcm9jX25hbWUpOiBSZXBsYWNlIHN1YnJvdXRpbmUgYW5kIGZ1bmN0aW9uIGF0dHJpYnV0ZXMKCWluICJhbHJlYWR5IGRlZmluZWQiIHRlc3QgYnkgdGhlIGZvcm1hbCBhcmdsaXN0IHBvaW50ZXIgYmVpbmcgbm9uLU5VTEwuCgoJRml4IHJlZ3Jlc3Npb24gaW4gdGVzdGluZyBvZiBhZG1pc3NhYmlsaXR5IG9mIGF0dHJpYnV0ZXMuCgkqIHN5bWJvbC5jIChnZmNfYWRkX2F0dHJpYnV0ZSk6IElmIHRoZSBjdXJyZW50X2F0dHIgaGFzIG5vbi16ZXJvCglpbnRlbnQsIGRvIG5vdCBkbyB0aGUgY2hlY2sgZm9yIGEgZHVtbXkgYmVpbmcgdXNlZC4KCSogZGVjbC5jIChhdHRyX2RlY2wxKTogQWRkIGN1cnJlbnRfYXR0ci5pbnRlbnQgYXMgdGhlIHRoaXJkIGFyZ3VtZW50CglpbiB0aGUgY2FsbCB0byBnZmNfYWRkX2F0dHJpYnV0ZS4KCSogZ2ZvcnRyYW4uaDogQWRkIHRoZSB0aGlyZCBhcmd1bWVudCB0byB0aGUgcHJvdG90eXBlIGZvcgoJZ2ZjX2FkZF9hdHRyaWJ1dGUuCgoyMDA2LTAxLTIxICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdmb3J0cmFuc3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IFVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlCglkYXRlLgoKMjAwNi0wMS0yMSAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI1MTI0CglQUiBmb3J0cmFuLzI1NjI1CgkqIGRlY2wuYyAoZ2V0X3Byb2NfbmFtZSk6IElmIHRoZXJlIGlzIGFuIGV4aXN0aW5nCglzeW1ib2wgaW4gdGhlIGVuY29tcGFzc2luZyBuYW1lc3BhY2UsIGNhbGwgZXJyb3JzCglpZiBpdCBpcyBhIHByb2NlZHVyZSBvZiB0aGUgc2FtZSBuYW1lIG9yIHRoZSBraW5kCglmaWVsZCBpcyBzZXQsIGluZGljYXRpbmcgYSB0eXBlIGRlY2xhcmF0aW9uLgoKCVBSIGZvcnRyYW4vMjA4ODEKCVBSIGZvcnRyYW4vMjMzMDgKCVBSIGZvcnRyYW4vMjU1MzgKCVBSIGZvcnRyYW4vMjU3MTAKCSogZGVjbC5jIChhZGRfZ2xvYmFsX2VudHJ5KTogTmV3IGZ1bmN0aW9uIHRvIGNoZWNrCglmb3IgZXhpc3RpbmcgZ2xvYmFsIHN5bWJvbCB3aXRoIHRoaXMgbmFtZSBhbmQgdG8KCWNyZWF0ZSBuZXcgb25lIGlmIG5vbmUgZXhpc3RzLgoJKGdmY19tYXRjaF9lbnRyeSk6IENhbGwgYWRkX2dsb2JhbF9lbnRyeSBiZWZvcmUKCW1hdGNoaW5nIGFyZ3VtZW50IGxpc3RzIGZvciBzdWJyb3V0aW5lIGFuZCBmdW5jdGlvbgoJZW50cmllcy4KCSogZ2ZvcnRyYW4uaDogUHJvdG90eXBlIGZvciBleGlzdGluZyBmdW5jdGlvbiwKCWdsb2JhbF91c2VkLgoJKiByZXNvbHZlLmMgKHJlc29sdmVfZ2xvYmFsX3Byb2NlZHVyZSk6IE5ldyBmdW5jdGlvbgoJdG8gY2hlY2sgZ2xvYmFsIHN5bWJvbHMgZm9yIHByb2NlZHVyZXMuCgkocmVzb2x2ZV9jYWxsLCByZXNvbHZlX2Z1bmN0aW9uKTogQ2FsbHMgdG8gdGhpcwoJbmV3IGZ1bmN0aW9uIGZvciBub24tY29udGFpbmVkIGFuZCBub24tbW9kdWxlCglwcm9jZWR1cmVzLgoJKiBtYXRjaC5jIChtYXRjaF9jb21tb24pOiBBZGQgY2hlY2sgZm9yIGV4aXN0aW5nCglnbG9iYWwgc3ltYm9sLCBjcmVhdCBvbmUgaWYgbm9uZSBleGlzdHMgYW5kIGVtaXQKCWVycm9yIGlmIHRoZXJlIGlzIGEgY2xhc2guCgkqIHBhcnNlLmMgKGdsb2JhbF91c2VkKTogUmVtb3ZlIHN0YXRpYyBhbmQgdXNlIHRoZQoJZ3N5bWJvbCBuYW1lIHJhdGhlciB0aGFuIHRoZSBuZXdfYmxvY2sgbmFtZSwgc28gdGhhdAoJdGhlIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZnJvbSByZXNvbHZlLmMuCgkocGFyc2VfYmxvY2tfZGF0YSwgcGFyc2VfbW9kdWxlLCBhZGRfZ2xvYmFsX3Byb2NlZHVyZSk6CglJbXByb3ZlIGNoZWNrcyBmb3IgZXhpc3RpbmcgZ3N5bWJvbHMuICBFbWl0IGVycm9yIGlmCglhbHJlYWR5IGRlZmluZWQgb3IgaWYgcmVmZXJlbmNlcyB3ZXJlIHRvIGFub3RoZXIgdHlwZS4KCVNldCBkZWZpbmVkIGZsYWcuCgoJUFIgZm9ydHJhbi9QUjI0Mjc2CgkqIHRyYW5zLWV4cHIuYyAoZ2ZjX2NvbnZfYWxpYXNlZF9hcmcpOiBOZXcgZnVuY3Rpb24gY2FsbGVkIGJ5IAoJZ2ZjX2NvbnZfZnVuY3Rpb25fY2FsbCB0aGF0IGNvdmVydHMgYW4gZXhwcmVzc2lvbiBmb3IgYW4gYWxpYXNlZAoJY29tcG9uZW50IHJlZmVyZW5jZSB0byBhIGRlcml2ZWQgdHlwZSBhcnJheSBpbnRvIGEgdGVtcG9yYXJ5IGFycmF5CglvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZSBjb21wb25lbnQuICBUaGUgdGVtcG9yYXJ5IGlzIHBhc3NlZCBhcyBhbgoJYWN0dWFsIGFyZ3VtZW50IGZvciB0aGUgcHJvY2VkdXJlIGNhbGwgYW5kIGlzIGNvcGllZCBiYWNrIHRvIHRoZQoJZGVyaXZlZCB0eXBlIGFmdGVyIHRoZSBjYWxsLgoJKGlzX2FsaWFzZWRfYXJyYXkpOiBOZXcgZnVuY3Rpb24gdGhhdCBkZXRlY3RzIGFuIGFycmF5IHJlZmVyZW5jZQoJdGhhdCBpcyBmb2xsb3dlZCBieSBhIGNvbXBvbmVudCByZWZlcmVuY2UuCgkoZ2ZjX2NvbnZfZnVuY3Rpb25fY2FsbCk6IERldGVjdCBhbiBhbGlhc2VkIGFjdHVhbCBhcmd1bWVudCB3aXRoCglpc19hbGlhc2VkX2FycmF5IGFuZCBjb252ZXJ0IGl0IHRvIGEgdGVtcG9yYXJ5IGFuZCBiYWNrIGFnYWluCgl1c2luZyBnZmNfY29udl9hbGlhc2VkX2FyZy4KCjIwMDYtMDEtMTkgIFRvYmlhcyBTY2hswoH8dGVyICA8dG9iaWFzLnNjaGx1ZXRlckBwaHlzaWsudW5pLW11ZW5jaGVuLmRlPgoKCSogZ2ZvcnRyYW5zcGVjLmM6IFVwZGF0ZSBjb3B5cmlnaHQgeWVhcnMuCgkqIHRyYW5zLmM6IExpa2V3aXNlLgoJKiB0cmFucy1hcnJheS5jOiBMaWtld2lzZS4KCSogdHJhbnMtYXJyYXkuaDogTGlrZXdpc2UuCgkqIHRyYW5zLWRlY2wuYzogTGlrZXdpc2UuCgkqIHRyYW5zLXN0bXQuYzogTGlrZXdpc2UuCgkqIHRyYW5zLXN0bXQuaDogTGlrZXdpc2UuCgkqIHRyYW5zLXR5cGVzLmM6IExpa2V3aXNlLgoKMjAwNi0wMS0xOCAgVG9iaWFzIFNjaGzCgfx0ZXIgIDx0b2JpYXMuc2NobHVldGVyQHBoeXNpay51bmktbXVlbmNoZW4uZGU+CgoJUFIgZm9ydHJhbi8xODU0MAoJUFIgZm9ydHJhbi8xODkzNwoJKiBnZm9ydHJhbi5oIChCQlRfSEVBREVSKTogTW92ZSBkZWZpbml0aW9uIHVwLgoJKGdmY19zdF9sYWJlbCk6IEFkZCBCQlRfSEVBREVSLCByZW1vdmUgJ3ByZXYnIGFuZCAnbmV4dCcuCgkqIGlvLmMgKGZvcm1hdF9hc3Rlcmlzayk6IEFkYXB0IGluaXRpYWxpemVyLgoJKiByZXNvbHZlLmMgKHJlc29sdmVfYnJhbmNoKTogQWxsb3cgRk9SVFJBTiA2NiBjcm9zcy1ibG9jayBHT1RPcwoJYXMgZXh0ZW5zaW9uLgoJKHdhcm5fdW51c2VkX2xhYmVsKTogVGFrZSBnZmNfc3RfbGFiZWwgbGFiZWwgYXMgYXJndW1lbnQsIGFkYXB0IHRvCgluZXcgZGF0YSBzdHJ1Y3R1cmUuCgkoZ2ZjX3Jlc29sdmUpOiBBZGFwdCBjYWxsIHRvIHdhcm5fdW51c2VkX2xhYmVsLgoJKiBzeW1ib2wuYyAoY29tcGFyZV9zdF9sYWJlbHMpOiBOZXcgZnVuY3Rpb24uCgkoZ2ZjX2ZyZWVfc3RfbGFiZWwsIGZyZWVfc3RfbGFiZWxzLCBnZmNfZ2V0X3N0X2xhYmVsKTogQ29udmVydCB0bwoJdXNpbmcgYmFsYW5jZWQgYmluYXJ5IHRyZWUuCgkqIGRlY2wuYyAobWF0Y2hfY2hhcl9sZW5ndGgsIGdmY19tYXRjaF9vbGRfa2luZF9zcGVjKTogRG8gYXdheQoJd2l0aCAnY250Jy4KCSh3YXJuX3VudXNlZF9sYWJlbCk6IEFkYXB0IHRvIGJpbmFyeSB0cmVlLgoJKiBtYXRjaC5jIChnZmNfbWF0Y2hfc21hbGxfbGl0ZXJhbF9pbnQpOiBPbmx5IHNldCBjbnQgaWYgbm9uLU5VTEwuCgkqIHByaW1hcnkuYyAobWF0Y2hfa2luZF9wYXJhbSk6IERvIGF3YXkgd2l0aCBjbnQuCgoyMDA2LTAxLTE4ICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKCVBSIGZvcnRyYW4vMjA4NjkKCVBSIGZvcnRyYW4vMjA4NzUKCVBSIGZvcnRyYW4vMjUwMjQKCSogc3ltYm9sLmMgKGNoZWNrX2NvbmZsaWN0KTogQWRkIHBvaW50ZXIgdmFsdWVkIGVsZW1lbnRhbAoJZnVuY3Rpb25zIGFuZCBpbnRlcm5hbCBwcm9jZWR1cmVzIHdpdGggdGhlIGV4dGVybmFsIGF0dHJpYnV0ZQoJdG8gdGhlIGxpc3Qgb2YgY29uZmxpY3RzLgoJKGdmY19hZGRfYXR0cmlidXRlKTogTmV3IGNhdGNoLWFsbCBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZQoJY2hlY2tpbmcgb2Ygc3ltYm9sIGF0dHJpYnV0ZXMgZm9yIGF0dHJpYnV0ZSBkZWNsYXJhdGlvbgoJc3RhdGVtZW50cy4KCSogZGVjbC5jIChhdHRyX2RlY2wxKTogQ2FsbCBnZmNfYWRkX2F0dHJpYnV0ZSBmb3IgZWFjaCBvZiAtCgkoZ2ZjX21hdGNoX2V4dGVybmFsLCBnZmNfbWF0Y2hfaW50ZW50LCBnZmNfbWF0Y2hfaW50cmluc2ljLAoJZ2ZjX21hdGNoX3BvaW50ZXIsIGdmY19tYXRjaF9kaW1lbnNpb24sIGdmY19tYXRjaF90YXJnZXQpOgoJUmVtb3ZlIHNwdXJpb3VzIGNhbGxzIHRvIGNoZWNrcyBpbiBzeW1ib2wuYy4gIFNldCB0aGUKCWF0dHJpYnV0ZSBkaXJlY3RseSBhbmQgdXNlIHRoZSBjYWxsIHRvIGF0dHJfZGVjbCgpIGZvcgoJY2hlY2tpbmcuCgkqIGdmb3J0cmFuLmg6ICBBZGQgcHJvdG90eXBlIGZvciBnZmNfYWRkX2F0dHJpYnV0ZS4KCglQUiBmb3J0cmFuLzI1Nzg1CgkqIHJlc29sdmUuYyAocmVzb2x2ZV9mdW5jdGlvbik6IEV4Y2x1ZGUgUFJFU0VOVCBmcm9tIGFzc3VtZWQgc2l6ZQoJYXJndW1lbnQgY2hlY2tpbmcuIFJlcGxhY2Ugc3RyY21wJ3Mgd2l0aCBjb21wYXJpc29ucyB3aXRoIGdlbmVyaWMKCWNvZGVzLgoKMjAwNi0wMS0xNiAgUmFmYWVsIMKBwXZpbGEgZGUgRXNwwoHtbmRvbGEgIDxyYWZhZWwuZXNwaW5kb2xhQGdtYWlsLmNvbT4KCgkqIGdmb3J0cmFuc3BlYy5jIChsYW5nX3NwZWNpZmljX3NwZWNfZnVuY3Rpb25zKTogUmVtb3ZlLgoKMjAwNi0wMS0xNiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJhbnMtc3RtdC5jIChnZmNfdHJhbnNfaWZfMSk6IFVzZSBmb2xkX2J1aWxkTiBhbmQgYnVpbGRfaW50X2NzdC4KCShnZmNfdHJhbnNfYXJpdGhtZXRpY19pZik6IExpa2V3aXNlLgoJKGdmY190cmFuc19zaW1wbGVfZG8pOiBMaWtld2lzZS4KCShnZmNfdHJhbnNfZG8pOiBMaWtld2lzZS4KCShnZmNfdHJhbnNfZG9fd2hpbGUpOiBMaWtld2lzZS4KCShnZmNfdHJhbnNfbG9naWNhbF9zZWxlY3QpOiBMaWtld2lzZS4KCShnZmNfdHJhbnNfZm9yYWxsX2xvb3ApOiBMaWtld2lzZS4KCShnZW5lcmF0ZV9sb29wX2Zvcl90ZW1wX3RvX2xocyk6IExpa2V3aXNlLgoJKGdlbmVyYXRlX2xvb3BfZm9yX3Joc190b190ZW1wKTogTGlrZXdpc2UuCgkoZ2ZjX3RyYW5zX2FsbG9jYXRlKTogTGlrZXdpc2UuCgkqIHRyYW5zLmMgKGdmY19hZGRfZXhwcl90b19ibG9jayk6IERvIG5vdCBmb2xkIGV4cHIgYWdhaW4uCgoyMDA2LTAxLTE2ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmFucy1leHByLmMgKGdmY19jb252X2Z1bmN0aW9uX2NhbGwpOiBVc2UgZm9sZF9idWlsZDIuCgkqIHRyYW5zLXN0bXQuYyAoZ2ZjX3RyYW5zX2dvdG8pOiBMaWtld2lzZS4gIFVzZSBidWlsZF9pbnRfY3N0LgoJKiB0cmFucy5jIChnZmNfdHJhbnNfcnVudGltZV9jaGVjayk6IERvbid0IGZvbGQgdGhlIGNvbmRpdGlvbgoJYWdhaW4uCgoyMDA2LTAxLTEzICBTdGV2ZW4gRy4gS2FyZ2wgIDxrYXJnbHNAY29tY2FzdC5uZXQ+CgoJUFIgZm9ydHJhbi8yNTc1NgoJKiBzeW1ib2wuYyAoZ2ZjX2ZyZWVfc3RfbGFiZWwpOiBHaXZlIHZhcmlhYmxlIG1lYW5pbmdmdWwgbmFtZS4gUmVtb3ZlCgl1bm5lZWRlZCBwYXJlbnRoZXNpcy4gRml4LXVwIHRoZSBoZWFkIG9mIHRoZSBsaXN0ICgyIGxpbmVzIGdsZWFuZWQKCWZyb20gZzk1KS4KCjIwMDYtMDEtMTMgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJhbnMuYyAoZ2ZjX2FkZF9leHByX3RvX2Jsb2NrKTogRG8gbm90IGZvbGQgdGNjX3N0YXRlbWVudAoJbm9kZXMuCgoyMDA2LTAxLTExICBUb2JpYXMgU2NobMKB/HRlciAgPHRvYmlhcy5zY2hsdWV0ZXJAcGh5c2lrLnVuaS1tdWVuY2hlbi5kZT4KCgkqIHBhcnNlLmMgKG5leHRfZml4ZWQpOiBSZW1vdmUgc3VwZXJmbHVvdXMgc3RyaW5nIGNvbmNhdGVuYXRpb24uCgoyMDA2LTAxLTExICBCZXJuaGFyZCBGaXNjaGVyICA8cmVwLm5vcEBhb24uYXQ+CgoJUFIgZm9ydHJhbi8yNTQ4NgoJKiBzY2FubmVyLmMgKGxvYWRfbGluZSk6IHVzZSBtYXhsZW4gdG8gZGV0ZXJtaW5lIHRoZSBsaW5lLWxlbmd0aCB1c2VkCglmb3IgcGFkZGluZyBsaW5lcyBpbiBmaXhlZCBmb3JtLgoKMjAwNi0wMS0xMSAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251Lm9yZz4KCglQUiBmb3J0cmFuLzI1NzMwCgkqIHRyYW5zLXR5cGVzLmMgKGNvcHlfZHRfZGVjbHNfaWZlcXVhbCk6IENvcHkgYmFja2VuZCBkZWNsIGZvcgoJY2hhcmFjdGVyIGxlbmd0aHMuCgoyMDA2LTAxLTA5ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglmb3J0cmFuLzI0OTM2CgkqIHRyYW5zLXN0bXQuYyAoZ2ZjX3RyYW5zX3BvaW50ZXJfYXNzaWduX25lZWRfdGVtcCk6IFVzZSBmb2xkX2NvbnZlcnQKCXRvIGF2b2lkIHR5cGUgbWlzbWF0Y2guCgoyMDA2LTAxLTA5ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBmb3J0cmFuLzIxOTc3CgkqIHRyYW5zLWRlY2wuYyAoZ2ZjX2dlbmVyYXRlX2Z1bmN0aW9uX2NvZGUpOiBNb3ZlIHRoZSBOVUxMaW5nIG9mCgljdXJyZW50X2Zha2VfcmVzdWx0X2RlY2wgZG93biB0byBiZWxvdyBnZW5lcmF0ZV9sb2NhbF92YXJzLgoKMjAwNi0wMS0wOSAgRmVuZyBXYW5nICA8ZmVuZ3dhbmdAbnVkdC5lZHUuY24+CgoJUFIgZm9ydHJhbi8xMjQ1NgoJKiB0cmFucy1leHByLmMgKGdmY190b19zaW5nbGVfY2hhcmFjdGVyKTogTmV3IGZ1bmN0aW9uIHRoYXQgY29udmVydHMKCXN0cmluZyB0byBzaW5nbGUgY2hhcmFjdGVyIGlmIGl0cyBsZW5ndGggaXMgMS4KCShnZmNfYnVpbGRfY29tcGFyZV9zdHJpbmcpOk5ldyBmdW5jdGlvbiB0aGF0IGNvbXBhcmUgc3RyaW5nIGFuZCBoYW5kbGUKCXNpbmdsZSBjaGFyYWN0ZXIgc3BlY2lhbGx5LgoJKGdmY19jb252X2V4cHJfb3ApOiBVc2UgZ2ZjX2J1aWxkX2NvbXBhcmVfc3RyaW5nLgoJKGdmY190cmFuc19zdHJpbmdfY29weSk6IFVzZSBnZmNfdG9fc2luZ2xlX2NoYXJhY3Rlci4KCSogdHJhbnMtaW50cmluc2ljLmMgKGdmY19jb252X2ludHJpbnNpY19zdHJjbXApOiBVc2UKCWdmY19idWlsZF9jb21wYXJlX3N0cmluZy4KCSogdHJhbnMuaCAoZ2ZjX2J1aWxkX2NvbXBhcmVfc3RyaW5nKTogQWRkIHByb3RvdHlwZS4KCjIwMDYtMDEtMDkgIEZlbmcgV2FuZyAgPGZlbmd3YW5nQG51ZHQuZWR1LmNuPgoKCSogc2ltcGxpZnkuYyAoZ2ZjX3NpbXBsaWZ5X2NoYXIpOiBVc2UgVUNIQVJfTUFYIGluc3RlYWQgb2YgbGl0ZXJhbAoJY29uc3RhbnQuCgkoZ2ZjX3NpbXBsaWZ5X2ljaGFyKTogR2V0IHRoZSByZXN1bHQgZnJvbSB1bnNpbmdlZCBjaGFyIGFuZCBpbiB0aGUKCXJhbmdlIDAgdG8gVUNIQVJfTUFYIGluc3RlYWQgb2YgQ0hBUl9NSU4gdG8gQ0hBUl9NQVguCgoyMDA2LTAxLTA4ICBFcmlrIEVkZWxtYW5uICA8ZWVkZWxtYW5AZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNTA5MwoJKiByZXNvbHZlLmMgKHJlc29sdmVfZm50eXBlKTogQ2hlY2sgdGhhdCBQVUJMSUMgZnVuY3Rpb25zCglhcmVuJ3Qgb2YgUFJJVkFURSB0eXBlLgoKMjAwNi0wMS0wNyAgVG9iaWFzIFNjaGwidXRlciAgPHRvYmlhcy5zY2hsdWV0ZXJAcGh5c2lrLnVuaS1tdWVuY2hlbi5kZT4KCgkqIGRlY2wuYyAoZ2ZjX21hdGNoX2Z1bmN0aW9uX2RlY2wpOiBDb3JyZWN0bHkgZXJyb3Igb3V0IGluIGNhc2Ugb2YKCW9taXR0ZWQgZnVuY3Rpb24gYXJndW1lbnQgbGlzdC4KCjIwMDYtMDEtMDcgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yMjE0NgoJKiB0cmFucy1hcnJheS5jIChnZmNfcmV2ZXJzZV9zcyk6IFJlbW92ZSBzdGF0aWMgYXR0cmlidXRlLgoJKGdmY193YWxrX2VsZW1lbnRhbF9mdW5jdGlvbl9hcmdzKTogUmVwbGFjZSBnZmNfZXhwciAqIGFyZ3VtZW50IGZvcgoJdGhlIGZ1bmN0aW9uIGNhbGwgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBnZmNfYWN0dWFsX2FyZ2xpc3QqLiAgQ2hhbmdlCgljb2RlIGFjY29yZGluZ2x5LgoJKGdmY193YWxrX2Z1bmN0aW9uX2V4cHIpOiBDYWxsIHRvIGdmY193YWxrX2VsZW1lbnRhbF9mdW5jdGlvbl9hcmdzCglub3cgcmVxdWlyZXMgdGhlIGFjdHVhbCBhcmd1bWVudCBsaXN0IGluc3RlYWQgb2YgdGhlIGV4cHJlc3Npb24gZm9yCgl0aGUgZnVuY3Rpb24gY2FsbC4KCSogdHJhbnMtYXJyYXkuaDogTW9kaWZ5IHRoZSBwcm90b3R5cGUgZm9yIGdmY193YWxrX2VsZW1lbnRhbF9mdW5jdGlvbl9hcmdzCglhbmQgcHJvdmlkZSBhIHByb3RvdHlwZSBmb3IgZ2ZjX3JldmVyc2Vfc3MuCgkqIHRyYW5zLXN0bXQuaCAoZ2ZjX3RyYW5zX2NhbGwpOiBBZGQgdGhlIHNjYWxhcml6YXRpb24gY29kZSBmb3IgdGhlIGNhc2UKCXdoZXJlIGFuIGVsZW1lbnRhbCBzdWJyb3V0aW5lIGhhcyBhcnJheSB2YWx1ZWQgYWN0dWFsIGFyZ3VtZW50cy4KCglQUiBmb3J0cmFuLzI1MDI5CglQUiBmb3J0cmFuLzIxMjU2CglQUiBmb3J0cmFuLzIwODY4CglQUiBmb3J0cmFuLzIwODcwCgkqIHJlc29sdmUuYyAoY2hlY2tfYXNzdW1lZF9zaXplX3JlZmVyZW5jZSk6IE5ldyBmdW5jdGlvbiB0byBjaGVjayBmb3IgdXBwZXIKCWJvdW5kIGluIGFzc3VtZWQgc2l6ZSBhcnJheSByZWZlcmVuY2VzLgoJKHJlc29sdmVfYXNzdW1lZF9zaXplX2FjdHVhbCk6IE5ldyBmdW5jdGlvbiB0byBkbyBhIHZlcnkgcmVzdHJpY3RlZCBzY2FuCglvZiBhY3R1YWwgYXJndW1lbnQgZXhwcmVzc2lvbnMgb2YgdGhvc2UgcHJvY2VkdXJlcyBmb3Igd2hpY2ggaW5jb21wbGV0ZQoJYXNzdW1lZCBzaXplIGFycmF5IHJlZmVyZW5jZXMgYXJlIG5vdCBhbGxvd2VkLgoJKHJlc29sdmVfZnVuY3Rpb24sIHJlc29sdmVfY2FsbCk6IFN3aXRjaCBvZmYgYXNzdW1lZCBzaXplIGNoZWNraW5nIG9mCglhY3R1YWwgYXJndW1lbnRzLCBleGNlcHQgZm9yIGVsZW1lbnRhbCBwcm9jZWR1cmVzIGFuZCBpbnRyaW5zaWMKCWlucXVpcnkgZnVuY3Rpb25zLCBpbiBzb21lIGNpcmN1bXN0YW5jZXMuCgkocmVzb2x2ZV92YXJpYWJsZSk6IENhbGwgY2hlY2tfYXNzdW1lZF9zaXplX3JlZmVyZW5jZS4KCjIwMDYtMDEtMDUgIEplcnJ5IERlTGlzbGUgIDxqdmRlbGlzbGVAZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yNDI2OAoJKiBpby5jIChuZXh0X2NoYXJfbm90X3NwYWNlKTogTmV3IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV4dAoJY2hhcmFjdGVyIHRoYXQgaXMgbm90IHdoaXRlIHNwYWNlLgoJKGZvcm1hdF9sZXgpOiBVc2UgdGhlIG5ldyBmdW5jdGlvbiB0byBza2lwIHdoaXRlc3BhY2Ugd2l0aGluCglhIGZvcm1hdCBzdHJpbmcuCgoyMDA2LTAxLTA1ICBFcmlrIEVkZWxtYW5uICA8ZWVkZWxtYW5AZ2NjLmdudS5vcmc+CgoJUFIgZm9ydHJhbi8yMzY3NQoJKiBleHByLmMgKGdmY19leHByX3NldF9zeW1ib2xzX3JlZmVyZW5jZWQpOiBOZXcgZnVuY3Rpb24uCgkqIGdmb3J0cmFuLmg6IEFkZCBhIGZ1bmN0aW9uIHByb3RvdHlwZSBmb3IgaXQuCgkqIHJlc29sdmUuYyAocmVzb2x2ZV9mdW5jdGlvbik6IFVzZSBpdCBmb3IKCXVzZSBhc3NvY2lhdGVkIGNoYXJhY3RlciBmdW5jdGlvbnMgbGVuZ3Rocy4KCSogZXhwci5jLCBnZm9ydHJhbi5oLCByZXNvbHZlLmM6IFVwZGF0ZWQgY29weXJpZ2h0IHllYXJzLgoKMjAwNi0wMS0wMyAgU3RldmVuIEcuIEthcmdsICA8a2FyZ2xzQGNvbWNhc3QubmV0PgoKCVBSIGZvcnRyYW4vMjUxMDEKCSogcmVzb2x2ZS5jIChyZXNvbHZlX2ZvcmFsbF9pdGVyYXRvcnMpOiAgQ2hlY2sgZm9yIHNjYWxhciB2YXJpYWJsZXM7CglDaGVjayBzdHJpZGUgaXMgbm9uemVyby4KCjIwMDYtMDEtMDIgIFN0ZXZlbiBHLiBLYXJnbCAgPGthcmdsc0Bjb21jYXN0Lm5ldD4KCglQUiBmb3J0cmFuLzI0NjQwCgkqIHBhcnNlLmMgKG5leHRfZnJlZSk6IENoZWNrIGZvciB3aGl0ZXNwYWNlIGFmdGVyIHRoZSBsYWJlbC4KCSogbWF0Y2guYyAoZ2ZjX21hdGNoX3NtYWxsX2xpdGVyYWxfaW50KTogSW5pdGlhbGl6ZSBjbnQgdmFyaWFibGUuCgoyMDA2LTAxLTAxICBTdGV2ZW4gRy4gS2FyZ2wgIDxrYXJnbHNAY29tY2FzdC5uZXQ+CgoJKiBDaGFuZ2VMb2c6IFNwbGl0IHByZXZpb3VzIHllYXJzIGludG8gLi4uCgkqIENoYW5nZUxvZy0yMDAyOiBoZXJlLgoJKiBDaGFuZ2VMb2ctMjAwMzogaGVyZS4KCSogQ2hhbmdlTG9nLTIwMDQ6IGhlcmUuCgkqIENoYW5nZUxvZy0yMDA1OiBoZXJlLgo=