MjAwNy0wNS0xMyAgUmVsZWFzZSBNYW5hZ2VyCgoJKiBHQ0MgNC4yLjAgcmVsZWFzZWQuCgoyMDA3LTAzLTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhLnNyY2V4dHJhKTogUmVtb3ZlIGRlcGVuZGVuY3kuCgkoamF2YV9wYXJzZV9jKTogTmV3IHZhcmlhYmxlLgoJKGphdmEvcGFyc2UuYyk6IFJlcGxhY2Ugd2l0aCAuLi4KCSgkKGphdmFfcGFyc2VfYykpOiAuLi4gdGhpcy4KCShqYXZhL3BhcnNlLm8pOiBEZXBlbmQgb24gJChqYXZhX3BhcnNlX2MpLgoJCjIwMDctMDItMjcgIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ2NqLnRleGk6IFN0YW5kYXJkaXplIHRpdGxlIHBhZ2UuCgoyMDA2LTExLTEyICBEYXZpZCBEYW5leSAgPGRkYW5leUBhdnRyZXguY29tPgoKCVBSIGphdmEvMjk4MDUKCSogdHlwZWNrLmMgKGJ1aWxkX2phdmFfYXJyYXlfdHlwZSk6IEluY3JlYXNlIGJ1ZmZlciBzaXplcy4KCjIwMDYtMTAtMTAgIEJyb29rcyBNb3NlcyAgPGJtb3Nlc0BzdGFuZm9yZC5lZHU+CgoJKiBNYWtlLWxhbmcuaW46IEFkZGVkICJqYXZhLnBkZiIsICJnY2oucGRmIiB0YXJnZXQgc3VwcG9ydC4KCjIwMDYtMDktMTIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAocHVzaF92YWx1ZSk6IEFsd2F5cyBmbHVzaCBxdWljayBzdGFjay4KCjIwMDYtMDktMTIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzI5MDEzOgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpIDxDQUxMX0VYUFI+OiBBbHdheXMgbm90ZQoJdGhlIHB1c2ggb2YgdGhlIGNhbGxlZCBtZXRob2QncyByZXR1cm4gcmVzdWx0LgoKMjAwNi0wOS0xMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogUmVhZCBzcGVjIGZpbGUgZXZlbiBpZgoJLWZzeW50YXgtb25seS4KCjIwMDYtMDktMTIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzI4NzU0OgoJKiBleHByLmMgKGV4cGFuZF9qYXZhX2ZpZWxkX29wKTogSW5pdGlhbGl6ZSBmaWVsZCdzIGRlY2xhcmluZwoJaW50ZXJmYWNlIGlmIG5lY2Vzc2FyeS4KCjIwMDYtMDktMTIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzI4ODkyOgoJKiBleHByLmMgKGV4cGFuZF9qYXZhX2ZpZWxkX29wKTogTm8gZXJyb3IgZm9yIGFzc2lnbm1lbnRzIG5vdCBpbgoJY2xhc3MgaW5pdGlhbGl6ZXIgb3IgY29uc3RydWN0b3IuCgoyMDA2LTA4LTIyICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoamF2YV9hZGRfc3RtdCk6IEdpdmUgdGhlIHN0YXRlbWVudCBsaXN0IGEgdHlwZS4KCjIwMDYtMDgtMTYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoJICAgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAbWNraW5sYXkubmV0Lm56PgoKCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogQWRkIC1zLWJjLWFiaSB3aGVuIG5lZWRlZC4KCjIwMDYtMDgtMTAgIFNpbW9uIE1hcnRpbiAgPHNpbWFydGluQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiBqYXZhLzg5MjMKCSogcGFyc2UueSAoYnVpbGRfaW5jZGVjKTogRW1pdCBhbiBlcnJvciBpbnN0ZWFkIG9mIGFuIElDRSBpZiAnKysnCglvciAnLS0nIGlzIHVzZWQgd2l0aCBhIGNvbnN0YW50IG9wZXJhbmQuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBXaGVuIHByb2Nlc3NpbmcgYSAnKysnIG9yICctLScgZXhwcmVzc2lvbiwKCWRvbid0IGNhbGwgamF2YV9jb21wbGV0ZV90cmVlIGJ1dCBqYXZhX2NvbXBsZXRlX2xocywgc28gdGhhdCBhCglzdGF0aWMgZmluYWwgdmFyaWFibGUgb3BlcmFuZCBpcyBuZXZlciByZXBsYWNlZCBieSBpdHMgdmFsdWUuIFRoaXMKCWF2b2lkcyBhbiBJQ0UgbGF0ZXIgb24uCgkocGF0Y2hfdW5hcnlvcCk6IEZpeGVkIHR5cG8gaW4gY29tbWVudC4KCjIwMDYtMDctMjggIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBNYWtlLWxhbmcuaW46IFVzZSAkKEhFQURFUl9IKSBpbnN0ZWFkIG9mIGhlYWRlci5oIGluIGRlcGVuZGVuY2llcy4KCjIwMDYtMDctMTIgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGNoZWNrX2Zvcl9idWlsdGluKTogSWYgYSBidWlsdGluIGNvdWxkIHJlc3VsdCBpbiBhCglkaXJlY3QgY2FsbCBiZWluZyBnZW5lcmF0ZWQsIGRvbid0IHVzZSBpdCBpZiBmbGFnX2luZGlyZWN0X2Rpc3BhdGNoCglpcyBzZXQuCgoyMDA2LTA3LTEyICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAoSW52b2NhdGlvbik6IENvcnJlY3Rpb25zIGZvciBJbnZvY2F0aW9uIEFQSSBleGFtcGxlLgoKMjAwNi0wNy0wNCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChidWlsZF9maWVsZHJlZl9jYWNoZV9lbnRyeSk6IFNldCBERUNMX0lHTk9SRURfUCBvbiB0aGUKCWVudHJ5LgoKMjAwNi0wNi0yMSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBqYXZhLXRyZWUuaCAodXBkYXRlX2FsaWFzZXMpOiBSZW1vdmUKCSogZXhwci5jIChleHBhbmRfaWluYyk6IFJlbW92ZSBjYWxsIHRvIHVwZGF0ZV9hbGlhc2VzKCkuCgkoU1RPUkVfSU5URVJOQUwpOiBMaWtld2lzZS4KCSogZGVjbC5jICh1cGRhdGVfYWxpYXNlcywgaW5pdGlhbGl6ZV9sb2NhbF92YXJpYWJsZSkgCgkobWF5YmVfcHVzaGxldmVscyk6IFNldCBERUNMX1ZBTFVFX0VYUFIgZm9yIGRlYnVnZ2luZyBkZWNscy4KCjIwMDYtMDYtMTkgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTMwNQoJUFIgamF2YS8yNzkwOAoJKiBleHByLmMgKGphdmFfbW9kaWZ5X2FkZHJfZm9yX3ZvbGF0aWxlKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9qYXZhX2ZpZWxkX29wKTogSGFuZGxlIHZvbGF0aWxlIGZpZWxkcy4KCSogamF2YS1naW1wbGlmeS5jIChqYXZhX2dpbXBsaWZ5X2NvbXBvbmVudF9yZWYpOiBDYWxsCglqYXZhX21vZGlmeV9hZGRyX2Zvcl92b2xhdGlsZSB0byBnaXZlIHRoZSBmaWVsZF9yZWYgdGhlIGNvcnJlY3QKCXZvbGF0aWxlIHR5cGUuCgkoamF2YV9naW1wbGlmeV9tb2RpZnlfZXhwcik6IExpa2V3aXNlLgoJKiBqYXZhLXRyZWUuaCAoamF2YV9tb2RpZnlfYWRkcl9mb3Jfdm9sYXRpbGUpOiBOZXcgZGVjbC4KCjIwMDYtMDYtMTcgIEthcmwgQmVycnkgIDxrYXJsQGdudS5vcmc+CgoJKiBnY2oudGV4aSAoQGRpcmNhdGVnb3J5KTogVXNlICJTb2Z0d2FyZSBkZXZlbG9wbWVudCIgaW5zdGVhZAoJb2YgIlByb2dyYW1taW5nIiwgZm9sbG93aW5nIHRoZSBGcmVlIFNvZnR3YXJlIERpcmVjdG9yeS4KCjIwMDYtMDYtMTYgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogV2hlbiB1c2luZyBmbGFnX2luZGlyZWN0X2NsYXNzZXMsCglkb24ndCBpbml0aWFsaXplIHRoZSB2dGFibGUgb2YgQ2xhc3MgaW5zdGFuY2VzLgoKMjAwNi0wNi0wOSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8xMzA1CglQUiBqYXZhLzI3OTA4CgkqIGJ1aWx0aW5zLmMgKGluaXRpYWxpemVfYnVpbHRpbnMpOiBBZGQgX19zeW5jX3N5bmNocm9uaXplKCkuCgkqIGNsYXNzLmMgKGFkZF9maWVsZCk6IE1hcmsgdm9sYXRpbGUgZmllbGRzLgoJKiBqYXZhLWdpbXBsaWZ5LmMgKGphdmFfZ2ltcGxpZnlfZXhwcik6IENhbGwgbmV3IGZ1bmN0aW9ucyB0bwoJaGFuZGxlIHNlbGYtbW9kaWZ5aW5nIGV4cHJzIGFuZCBDT01QT05FTlRfUkVGcy4KCShqYXZhX2dpbXBsaWZ5X2NvbXBvbmVudF9yZWYpOiBOZXcuCgkoamF2YV9naW1wbGlmeV9tb2RpZnlfZXhwcik6IEFkZCBoYW5kbGluZyBmb3Igdm9sYXRpbGVzLgoKMjAwNi0wNi0wOCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKGxpYmdjaiBSdW50aW1lIFByb3BlcnRpZXMpOiBEb2N1bWVudAoJZ251Lmdjai51c2VyLnJlYWxuYW1lLgoKMjAwNi0wNi0wOCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2ZpZWxkX3JlZik6IFBhc3MgTlVMTF9UUkVFIGFzIFNQRUNJQUwgYXJnIHRvCglnZXRfc3ltYm9sX3RhYmxlX2luZGV4KCkuCgkobWF5YmVfcmV3cml0ZV9pbnZvY2F0aW9uKTogU2V0IFNQRUNJQUwgaWYgd2UgbmVlZCB0byBhY2Nlc3MgYQoJcHJpdmF0ZSBtZXRob2QuCgkoYnVpbGRfa25vd25fbWV0aG9kX3JlZik6IE5ldyBhcmc6IHNwZWNpYWwuICBQYXNzIGl0IHRvCglnZXRfc3ltYm9sX3RhYmxlX2luZGV4LgoJKGdldF9zeW1ib2xfdGFibGVfaW5kZXgpOiBQdXQgU1BFQ0lBTCBpbiB0aGUgVFJFRV9QVVJQT1NFIGZpZWxkIG9mCgl0aGUgbWV0aG9kIGxpc3QuCgkoYnVpbGRfaW52b2tldmlydHVhbCk6IE5ldyBhcmc6IHNwZWNpYWwuICBQYXNzIGl0IHRvCglnZXRfc3ltYm9sX3RhYmxlX2luZGV4LgoJKGV4cGFuZF9pbnZva2UpOiBOZXcgdmFyaWFibGU6IHNwZWNpYWwuCglQYXNzIGl0IHRvIG1heWJlX3Jld3JpdGVfaW52b2NhdGlvbigpLgoJUGFzcyBpdCB0byBidWlsZF9rbm93bl9tZXRob2RfcmVmKCkuCgkqIGNsYXNzLmMgKGJ1aWxkX3N5bWJvbF9lbnRyeSk6IEFkZCBuZXcgYXJnOiBzcGVjaWFsLiAgVXNlIGl0IHRvCglidWlsZCB0aGUgc3ltYm9sIHRhYmxlIGNvbmJzdHJ1Y3Rvci4KCShlbWl0X3N5bWJvbF90YWJsZSk6IEV4dHJhY3QgU1BFQ0lBTCBmcm9tIHRoZSBtZXRob2QgbGlzdCBhbmQgcGFzcwoJaXQgdG8gYnVpbGRfc3ltYm9sX2VudHJ5KCkuCgkqIHBhcnNlLnkgKHBhdGNoX2ludm9rZSk6IENhbGwgbWF5YmVfcmV3cml0ZV9pbnZvY2F0aW9uKCkgYW5kIHNldAoJc3BlY2lhbCBhY2NvcmRpbmdseS4KCjIwMDYtMDYtMDYgIERhdmlkIERhbmV5ICA8ZGRhbmV5QGF2dHJleC5jb20+CgoJKiBnY2oudGV4aSAobGliZ2NqIFJ1bnRpbWUgUHJvcGVydGllcyk6IERvY3VtZW50CglnbnUuZ2NqLnJ1bnRpbWUuTmFtZUZpbmRlci5zaG93X3JhdyBhbmQKCWdudS5nY2oucnVudGltZS5OYW1lRmluZGVyLnJlbW92ZV91bmtub3duLgoKMjAwNi0wNi0wNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamNmLWR1bXAuYyAocHJpbnRfYWNjZXNzX2ZsYWdzKTogSGFuZGxlIHZhcmFyZ3MsIGJyaWRnZSwKCXN5bnRoZXRpYywgZW51bSwgYW5ub3RhdGlvbi4KCSogamNmLmggKEFDQ19CUklER0UpOiBOZXcgbWFjcm8uCgkoQUNDX1ZBUkFSR1MpOiBMaWtld2lzZS4KCShBQ0NfU1lOVEhFVElDKTogTGlrZXdpc2UuCgkoQUNDX0VOVU0pOiBMaWtld2lzZS4KCShBQ0NfQU5OT1RBVElPTik6IExpa2V3aXNlLgoKMjAwNi0wNi0wNiAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBNYWtlLWxhbmcuaW46IFJlbmFtZSB0byBodG1sZGlyIHRvIGJ1aWxkX2h0bWxkaXIgdG8gYXZvaWQKCWluc3RhbGxpbmcgZHVyaW5nIGJ1aWxkLgoKMjAwNi0wNS0zMSAgVGhvbWFzIEZpdHpzaW1tb25zICA8Zml0enNpbUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKEV4dGVuc2lvbnMpOiBEb2N1bWVudCB0aGUgbmV3IGdjai1kYnRvb2wtYmFzZWQKCWNsYXNzbmFtZS10by1saWJyYXJ5IHJlc29sdXRpb24gbWVjaGFuaXNtLgoJRGVjbGFyZSB0aGUgb2xkIGdudS5nY2oucnVudGltZS5WTUNsYXNzTG9hZGVyLmxpYnJhcnlfY29udHJvbAoJbWVjaGFuaXNtIGRlcHJlY2F0ZWQuCgkobGliZ2NqIFJ1bnRpbWUgUHJvcGVydGllcyk6IERvY3VtZW50CglnbnUuZ2NqLnJ1bnRpbWUuVk1DbGFzc0xvYWRlci5saWJyYXJ5X2NvbnRyb2wncyBuZXcgZGVmYXVsdC4KCjIwMDYtMDUtMjkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogamF2YW9wLmggKGludDE2LCBpbnQzMiwgaW50NjQpOiBEZWZpbmUgdG8gZXhhY3RseSAxNiAocmVzcC4gMzIsIDY0KQoJYml0IHdpZGUgdHlwZS4KCShqd29yZCk6IERlZmluZSB0byB1aW50NjQgb24gNjQtYml0IGFyY2hlcy4KCSogamNmLWR1bXAuYyAocHJpbnRfY29uc3RhbnQpOiBDYXN0IEpQT09MX1VJTlQgdG8gbG9uZy4KCjIwMDYtMDUtMjggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYywgZXhjZXB0LmMsIGV4cHIuYywgamF2YS1naW1wbGlmeS5jOiBGaXggY29tbWVudAoJdHlwb3MuCgoyMDA2LTA1LTI2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGphdmFfcHVzaF9jb25zdGFudF9mcm9tX3Bvb2wpOiBIYW5kbGUgJ2xkYyBjbGFzcycuCgkqIHZlcmlmeS1nbHVlLmMgKHZmeV9jbGFzc190eXBlKTogTmV3IGZ1bmN0aW9uLgoJKiB2ZXJpZnktaW1wbC5jIChjaGVja19jb25zdGFudCk6IEFsbG93ICdsZGMgY2xhc3MnLgoJKiB2ZXJpZnkuaCAodmZ5X2NsYXNzX3R5cGUpOiBEZWNsYXJlLgoKMjAwNi0wNS0yNSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8yNzc1NgoJKiBkZWNsLmMgKG1heWJlX3B1c2hsZXZlbHMpOiBXaGVuIHZhcmlhYmxlIHJhbmdlcyBhcmUgbm9uLW5lc3RlZAoJdXBkYXRlIGFsbCBsaWZldGltZXMsIG5vdCBqdXN0IHRoZSBmaXJzdCBvbmUuCgoyMDA2LTA1LTI0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqYXZhLXRyZWUuaDogRml4ZWQgZmxhZyBkb2N1bWVudGF0aW9uLgoKMjAwNi0wNS0yNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGxpYmdjai8yNzcyOToKCSogamNmLmggKEFDQ19JTlZJU0lCTEUpOiBDaGFuZ2VkIHZhbHVlLgoKMjAwNi0wNS0yNCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8yNzc1NAoJKiBkZWNsLmMgKGphdmFfYWRkX3N0bXQpOiBVc2UgYSBTVEFURU1FTlRfTElTVCByYXRoZXIgdGhhbiBhCglDT01QT1VORF9FWFBSLgoKMjAwNi0wNS0xNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogbGFuZy5vcHQgKGZlbWl0LWNsYXNzLWZpbGUpOiBSZW1vdmUgVmFyRXhpc3RzLgoKMjAwNi0wNS0xNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogdmVyaWZ5LWltcGwuYyAodmVyaWZ5X2luc3RydWN0aW9uc18wKSA8b3BfcmV0dXJuPjogU3BlY2lhbCBjYXNlCglmb3IgT2JqZWN0Ljxpbml0Pi4KCjIwMDYtMDUtMTYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCglQUiBkcml2ZXIvMjY4ODUKCSogTWFrZS1sYW5nLmluICgkKEdDSikkKGV4ZWV4dCkpOiBSZXBsYWNlIGdjYy5vIHdpdGgKCSQoR0NDX09CSlMpLgoKMjAwNi0wNS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhL2RlY2wubyk6IEFkZCBkZXBlbmRlbmN5IG9uICQoVEFSR0VUX0gpLgoJKGphdmEvZXhwci5vKTogUmVwbGFjZSB0YXJnZXQuaCB3aXRoICQoVEFSR0VUX0gpLgoJKGphdmEvcGFyc2Uubyk6IExpa2V3aXNlLgoKMjAwNi0wNS0xMCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChlbWl0X2luZGlyZWN0X3JlZ2lzdGVyX2NsYXNzZXMpOiBGaXggY29tbWVudC4KCjIwMDYtMDUtMDQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGphdmEtdHJlZS5oICh1c2VzX2p2X21hcmtvYmpfcCk6IERlY2xhcmUuCgkqIGNsYXNzLmMgKHVzZXNfanZfbWFya29ial9wKTogUmVtb3ZlZC4KCSogYm9laG0uYyAoUFJPQ0VEVVJFX09CSkVDVF9ERVNDUklQVE9SKTogTmV3IGRlZmluZS4KCShnZXRfYm9laG1fdHlwZV9kZXNjcmlwdG9yKTogVXNlIGl0LgoJKHVzZXNfanZfbWFya29ial9wKTogTW92ZWQgZnJvbSBjbGFzcy5jLiAgUmV0dXJuIGJvb2wuCgoyMDA2LTA1LTA0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqYXZhLXRyZWUuZGVmIChUSElTX0VYUFIpOiBOb3cgYSB0Y2NfZXhwcmVzc2lvbi4KCjIwMDYtMDUtMDQgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAobWFrZV9maWVsZF92YWx1ZSk6IEFsd2F5cyBidWlsZF9hZGRyZXNzX29mIGZkZWNsIGlmCgl0aGVyZSBpcyBhbiBpbml0aWFsaXplci4KCjIwMDYtMDUtMDMgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGxpYmdjai8yNzM1MgoJKiBleHByLmMgKG1heWJlX3Jld3JpdGVfaW52b2NhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShyZXdyaXRlX2FyZ2xpc3RfZ2V0Y2xhc3MpOiBMaWtld2lzZS4KCShydWxlcyk6IE5ldy4KCShleHBhbmRfaW52b2tlKTogQ2FsbCBtYXliZV9yZXdyaXRlX2ludm9jYXRpb24uCgkqIHBhcnNlLnkgKHBhdGNoX2ludm9rZSk6IExpa2V3aXNlLgoJKiBqYXZhLXRyZWUuaDogKG1heWJlX3Jld3JpdGVfaW52b2NhdGlvbik6IE5ldyBmdW5jdGlvbi4KCjIwMDYtMDQtMjEgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogbGFuZy5jIChqYXZhX2luaXQpOiBIYW5kbGUgZmxhZ19pbmRpcmVjdF9jbGFzc2VzLgoJKiBqdmdlbm1haW4uYzogVXNlICJjbGFzcyQkIiBpbnN0ZWFkIG9mICJjbGFzcyQiLgoJKiBtYW5nbGUuYyAoamF2YV9tYW5nbGVfZGVjbCk6IEFjY2VwdCBSRUNPUkRfVFlQRXMgc3cgd2VsbCBhcwoJREVDTHMuCgkobWFuZ2xlX2NsYXNzX2ZpZWxkKTogU3BlY2lhbCBjYXNlICJjbGFzcyQkIiBhcyB3ZWxsIGFzICJjbGFzcyQiLgoJKiBjb25zdGFudHMuYyAoYnVpbGRfcmVmX2Zyb21fY29uc3RhbnRfcG9vbCk6IElmCglmbGFnX2luZGlyZWN0X2NsYXNzZXMsIGdlbmVyYXRlIGEgcmVmIGludG8gdGhlIGhlYXAuCgkqIGRlY2wuYyAoY29uc3RhbnRzX2ZpZWxkX2RlY2xfbm9kZSwKCWNvbnN0YW50c19kYXRhX2ZpZWxkX2RlY2xfbm9kZSk6IE5ldy4KCSogY2xhc3MuYyAoYnVpbGRfc3RhdGljX2NsYXNzX3JlZik6IE5ldy4KCShidWlsZF9jbGFzc2RvbGxhcl9maWVsZCk6IEZhY3RvciBvdXQgZnJvbSBidWlsZF9jbGFzc19yZWYoKS4KCShtYWtlX2ZpZWxkX3ZhbHVlKTogSGFuZGxlIHN0YXRpYyBmaWVsZHMgaW4gaGVhcC4KCShtYWtlX2NsYXNzX2RhdGEpOiBNYWtlIHN1cmUgd2UgZ2V0IGEgc3RhdGljIHJlZiB0byBjbGFzcy4KCU1ha2UgY2xhc3MgaW5pdGlhbGl6ZXIgY29uc3QgaWYgZmxhZ19pbmRpcmVjdF9jbGFzc2VzLgoJKHJlZ2lzdGVyX2NsYXNzKTogQnVpbGQgYSBjbGFzc19yZWYgZm9yIGluaXRpYWxpemF0aW9uIGlmCglmbGFnX2luZGlyZWN0X2NsYXNzZXMuCgkoZW1pdF9pbmRpcmVjdF9yZWdpc3Rlcl9jbGFzc2VzKTogTmV3LgoKMjAwNi0wNC0wOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleHByLmMsIGdqYXZhaC5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDYtMDQtMDMgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMjY4NTgKCSogZXhwci5jIChidWlsZF9maWVsZF9yZWYpOiBEb24ndCBjaGVjayB0aGUgZmllbGQgb2Zmc2V0IGlmCglmbGFnX3N5bnRheF9vbmx5LgoKMjAwNi0wMy0zMCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8yNjg1OAoJKiBsYW5nLmMgKGphdmFfYXR0cmlidXRlX3RhYmxlKTogTmV3LgoJKExBTkdfSE9PS1NfQVRUUklCVVRFX1RBQkxFKTogRGVmaW5lLgoJKiBleHByLmMgKGJ1aWxkX2ZpZWxkX3JlZik6IEFkZCBhIG51bGwgcG9pbnRlciBjaGVjayBmb3IgYWxsCglmaWVsZHMgb2Ygb2Zmc2V0ID4gNGsuICBEb24ndCBkbyBzbyBmb3IgYWNjZXNzZXMgdmlhIHRoZSB0aGlzCglwb2ludGVyLCB3aGljaCB3ZSBrbm93IGNhbiBuZXZlciBiZSBudWxsLgoJKiBjbGFzcy5jIChidWlsZF9qYXZhX21ldGhvZF90eXBlKTogTWFyayBhcmcgMSBvZiBhbGwgbm9uc3RhdGljCgltZXRob2RzIG5vbm51bGwuCgoyMDA2LTAzLTMwICBDYXJsb3MgTydEb25lbGwgIDxjYXJsb3NAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogUmVuYW1lIGRvY2RpciB0byBnY2NfZG9jZGlyLgoKMjAwNi0wMy0zMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMjYwNDI6CgkqIHBhcnNlLnkgKGphdmFfcmVvcmRlcl9maWVsZHMpOiBSZXNldCBzdXBlcmNsYXNzIGZpZWxkJ3Mgc2l6ZSBhcwoJd2VsbC4KCjIwMDYtMDMtMjggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzI2MzkwOgoJKiBwYXJzZS55IChmaW5kX21vc3Rfc3BlY2lmaWNfbWV0aG9kc19saXN0KTogQWRkZWQgJ2NsYXNzJwoJYXJndW1lbnQuCgkobG9va3VwX21ldGhvZF9pbnZva2UpOiBVcGRhdGVkLgoKMjAwNi0wMy0xNSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogVXNlIHF1YWxpZnlpbmcgdHlwZSBmb3IKCW5vbi1zdGF0aWMgbWV0aG9kIGNhbGxzLgoKMjAwNi0wMy0xNSAgRGF2aWQgRGFuZXkgIDxkZGFuZXlAYXZ0cmV4LmNvbT4KCgkqIGphdmEtdHJlZS5oIDogTW92ZWQgY29tbWVudCBmb3IgVFlQRV9ET1RfQ0xBU1MgYWRqYWNlbnQgdG8gaXRzCglkZWNsYXJhdGlvbi4KCjIwMDYtMDMtMTUgIERhdmlkIERhbmV5ICA8ZGRhbmV5QGF2dHJleC5jb20+CgoJKiBsYW5nLm9wdCAoLWZyZWR1Y2VkLXJlZmxlY3Rpb24pOiBOZXcgb3B0aW9uLgoJKiBsYW5nLmMgKGphdmFfcG9zdF9vcHRpb25zKTogR2VuZXJhdGUgYW4gZXJyb3IgaWYKCS1mcmVkdWNlZC1yZWZsZWN0aW9uIHVzZWQgd2l0aCAtZmpuaSBvciAtZmluZGlyZWN0LWRpc3BhdGNoLgoJKiBqYXZhLXRyZWUuaCAoZmxhZ19yZWR1Y2VkX3JlZmxlY3Rpb24pOiBEZWNsYXJlIG5ldyB2YXJpYWJsZS4KCSogYm9laG0uYyAoZ2V0X2JvZWhtX3R5cGVfZGVzY3JpcHRvcik6IEluZGljYXRlIGFsbCBwb2ludGVycwoJaWYgYml0bWFwIG92ZXJmbG93cyBhbmQgZmxhZ19yZWR1Y2VkX3JlZmxlY3Rpb24gc2V0LgoJKiBjbGFzcy5jICh1c2VzX2p2X21hcmtvYmpfcCk6IE5ldyBmdW5jdGlvbi4KCShtYWtlX2NsYXNzX2RhdGEpOiBNb3ZlZCBnZW5lcmF0aW9uIG9mIHZ0YWJsZSB0byBiZWZvcmUKCXJlZmxlY3Rpb24gZGF0YSwgZ2VuZXJhdGUgbGVzcyByZWZsZWN0aW9uIGRhdGEgaWYKCWZsYWdfcmVkdWNlZF9yZWZsZWN0aW9uIHNldC4KCSogZ2NqLnRleGk6IERvY3VtZW50IC1mcmVkdWNlZC1yZWZsZWN0aW9uLgoKMjAwNi0wMy0xNSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMjY2Mzg6CgkqIGNsYXNzLmMgKGdldF9pbnRlcmZhY2VfbWV0aG9kX2luZGV4KTogRG9uJ3QgcHV0IDxjbGluaXQ+IGludG8KCWludGVyZmFjZSB0YWJsZS4KCjIwMDYtMDMtMTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGFuYWx5emVfY2xpbml0X2JvZHkpOiBJZ25vcmUgZW1wdHkgc3RhdGVtZW50cy4KCjIwMDYtMDMtMDggIERhdmlkIERhbmV5ICA8ZGRhbmV5QGF2dHJleC5jb20+CgoJKiBnY2oudGV4aTogRG9jdW1lbnQgLXN0YXRpYy1saWJnY2ogb3B0aW9uLgoKMjAwNi0wMi0yMCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAocGFyc2VfY2xhc3NfZmlsZSk6IFNldCBpbnB1dF9sb2NhdGlvbiBmcm9tCgljdXJyZW50X2NsYXNzLgoKMjAwNi0wMi0xNSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChHRU5fVEFCTEUpOiBEb24ndCBwdXNoZGVjbCAqX1NZTVNfREVDTCBoZXJlLgoJKG1ha2VfY2xhc3NfZGF0YSk6IHB1c2hkZWNsX3RvcF9sZXZlbCBUWVBFX09UQUJMRV9TWU1TX0RFQ0wsCglUWVBFX0FUQUJMRV9TWU1TX0RFQ0wsIFRZUEVfSVRBQkxFX1NZTVNfREVDTCBoZXJlLgoKMjAwNi0wMi0wOSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8yNjE5MgoJKiBleHByLmMgKGV4cGFuZF9pbnZva2UpOiBBbGxvdyBtZXRob2RzIGluIGFycmF5cyB0byBiZSByZXNvbHZlZAoJaW4gdGhlaXIgc3VwZXJjbGFzcy4KCgkqIHR5cGVjay5jIChidWlsZF9qYXZhX2FycmF5X3R5cGUpOiBHZW5lcmF0ZSBUWVBFX1NUVUJfREVDTHMgZm9yCglhcnJheSB0eXBlcy4KCQoyMDA2LTAyLTA4ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8yMjU3ODoKCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogSGFuZGxlIFZJRVdfQ09OVkVSVF9FWFBSLgoJKiBidWlsdGlucy5jIChjb252ZXJ0X3JlYWwpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9idWlsdGlucyk6IEhhbmRsZSBGbG9hdC5pbnRCaXRzVG9GbG9hdCwKCUZsb2F0LmZsb2F0VG9SYXdJbnRCaXRzLCBEb3VibGUubG9uZ0JpdHNUb0RvdWJsZSwKCURvdWJsZS5kb3VibGVUb1Jhd0xvbmdCaXRzLgoKMjAwNi0wMi0wNyAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9pbnZva2UpOiAoQkMgbW9kZS4pICBJZiB3ZSBmaW5kIGEgbWV0aG9kIGluIGEKCWNsYXNzIG90aGVyIHRoYW4gdGhlIG9uZSBpbiB3aGljaCB3ZSBleHBlY3RlZCB0byBmaW5kIGl0LCBpZ25vcmUKCXRoZSByZXN1bHQuCgoJUFIgamF2YS8yNTUzNQoJKiBjb25zdGFudHMuYyAoYnVpbGRfY29uc3RhbnRzX2NvbnN0cnVjdG9yKTogbW92ZSBpbml0aWFsaXplciBpbnRvCglmaXJzdCBoYWxmd29yZCBvbiBhIDY0LWJpdCBiaWctZW5kaWFuIG1hY2hpbmUuCgoyMDA2LTAyLTA0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8yNTY3NjoKCSogYnVpbHRpbnMuYyAobWF4X2J1aWx0aW4pOiBTa2lwIGZsb2F0aW5nIHBvaW50ICdtYXgnLgoJKG1pbl9idWlsdGluKTogU2tpcCBmbG9hdGluZyBwb2ludCAnbWluJy4KCShjaGVja19mb3JfYnVpbHRpbik6IE5ldmVyIHJldHVybiBOVUxMX1RSRUUuCgoyMDA2LTAyLTA0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8yNjA5NzoKCSogZXhwci5jIChwdXNoX3R5cGUpOiBBdm9pZCBzaWRlIGVmZmVjdCBpbiBnY2NfYXNzZXJ0LgoKMjAwNi0wMi0wNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDcmVhdGUgY2hhcl90eXBlX25vZGUgYXMgYQoJcmVndWxhciBJTlRFR0VSX1RZUEUgbm9kZS4KCShwdXNoX3Byb21vdGVkX3R5cGUpOiBQcmVzZXJ2ZSBUWVBFX1NUUklOR19GTEFHIG9uIHR5cGVzLgoJKiB0eXBlY2suYyAoY29udmVydCk6IE5vIGxvbmdlciBjaGVjayBmb3IgQ0hBUl9UWVBFcyBidXQgaW5zdGVhZAoJdGVzdCBmb3IgY2hhcl90eXBlX25vZGUgYW5kIHByb21vdGVkX2NoYXJfdHlwZV9ub2RlIGFzIHNwZWNpYWwKCWluc3RhbmNlcyBvZiBJTlRFR0VSX1RZUEUgdHJlZSBjb2Rlcy4KCShwcm9tb3RlX3R5cGUsYnVpbGRfamF2YV9zaWduYXR1cmUpOiBMaWtld2lzZS4KCSogamNmLXdyaXRlLmMgKGFkanVzdF90eXBlZF9vcCk6IExpa2V3aXNlLgoJKiBtYW5nbGUuYyAobWFuZ2xlX3R5cGUpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoZG9fdW5hcnlfbnVtZXJpY19wcm9tb3Rpb24pOiBObyBsb25nZXIgaGFuZGxlIENIQVJfVFlQRS4KCSogcGFyc2UuaCAoSklOVEVHUkFMX1RZUEVfUCk6IExpa2V3aXNlLgoKMjAwNi0wMi0wNCAgQW5kcmVhcyBUb2JsZXIgIDxhLnRvYmxlckBzY2h3ZWl6LmNoPgoKCSogZXhwci5jIChqYXZhX3N0YWNrX3N3YXApOiBSZXZlcnQgZ2NjX2Fzc2VydCBwYXRjaC4KCjIwMDYtMDItMDMgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogamF2YS1naW1wbGlmeS5jOiBVc2UgZ2NjX2Fzc2VydCBhbmQgZ2NjX3VucmVhY2hhYmxlIHRocm91Z2hvdXQuCgkqIHR5cGVjay5jOiBMaWtld2lzZS4KCSogdmVyaWZ5LWltcGwuYzogTGlrZXdpc2UuCgkqIGNsYXNzLmM6IExpa2V3aXNlLgoJKiBkZWNsLmM6IExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYzogTGlrZXdpc2UuCgkqIGNvbnN0YW50cy5jOiBMaWtld2lzZS4KCSogY2hlY2staW5pdC5jOiBMaWtld2lzZS4KCSogamNmLXdyaXRlLmM6IExpa2V3aXNlLgoJKiB2ZXJpZnktZ2x1ZS5jOiBMaWtld2lzZS4KCSogbWFuZ2xlLmM6IExpa2V3aXNlLgoJKiBleHByLmM6IExpa2V3aXNlLgoJKiBsYW5nLmM6IExpa2V3aXNlLgoJKiBib2VobS5jOiBMaWtld2lzZS4KCjIwMDYtMDItMDEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGRlY2wuYyAoZW5kX2phdmFfbWV0aG9kKTogS2lsbCBoYWNrIGRpc2FibGluZyB1bml0LWF0LWEtdGltZS4KCSogbGFuZy5jIChqYXZhX2luaXRfb3B0aW9ucyk6IFNldCBub191bml0X2F0X2FfdGltZV9kZWZhdWx0LgoKMjAwNi0wMS0zMCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8yMTQyOAoJKiBwYXJzZS55OiAoc291cmNlX3N0YXJ0X2phdmFfbWV0aG9kKTogTWFyayBERUNMX0FSVElGSUNJQUwoInRoaXMiKS4KCjIwMDYtMDEtMjEgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSoganYtc2Nhbi5jICh2ZXJzaW9uKSwgamNmLWR1bXAuYyAodmVyc2lvbiksIGdqYXZhaC5jICh2ZXJzaW9uKToKCVVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlIGRhdGVzLgoKMjAwNi0wMS0xNiAgUmFmYWVsIMF2aWxhIGRlIEVzcO1uZG9sYSAgPHJhZmFlbC5lc3BpbmRvbGFAZ21haWwuY29tPgoKCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfc3BlY19mdW5jdGlvbnMpOiBSZW1vdmUuCgoyMDA2LTAxLTA2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAoQXJyYXlzKTogQWRkZWQgbW9yZSBkb2N1bWVudGF0aW9uIGZvcgoJSnZOZXdPYmplY3RBcnJheS4KCShQcmltaXRpdmUgdHlwZXMpOiBDb3JyZWN0IGluZm9ybWF0aW9uIGFib3V0IHByaW1pdGl2ZSBjbGFzc2VzLgoJKFJlZmVyZW5jZSB0eXBlcyk6IE5ldyBub2RlLgoJKEluZGV4KTogTmV3IG5vZGUuCgoyMDA1LTEyLTE2ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGpjZi1wYXJzZS5jIChzZXRfc291cmNlX2ZpbGVuYW1lKTogU2V0IHRoZSBkZWNsIHNvdXJjZSBsb2NhdGlvbgoJZXZlbiB3aGVuIHJldHVybmluZyBlYXJseS4KCjIwMDUtMTItMTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCSAgICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzI1NDI5CgkqIHBhcnNlLnkgKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogRG9uJ3QgZ2VuZXJhdGUgYWNjZXNzb3IKCW1ldGhvZHMgZm9yIGNvbnN0YW50IGZpZWxkcy4KCjIwMDUtMTItMTMgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMjUzNjYKCVBSIGphdmEvMjUzNjgKCSogY2xhc3MuYyAobWF5YmVfbGF5b3V0X3N1cGVyX2NsYXNzKTogVXBkYXRlIGN1cnJlbnRfY2xhc3MgYmVmb3JlCgljYWxsaW5nIGRvX3Jlc29sdmVfY2xhc3MuCgoyMDA1LTEyLTEyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgamF2YS8yNTMzMAoJKiBqY2Ytd3JpdGUuYyAod3JpdGVfY2xhc3NmaWxlKTogVXNlIFBJRCBpbiB0ZW1wb3JhcnkgY2xhc3MKCWZpbGUuIFNhdmUvcmVzdG9yZSBlcnJubyB3aGVuIHJlcG9ydGluZyBlcnJvci4KCjIwMDUtMTItMTAgIFRlcnJ5IExhdXJlbnpvICA8dGxhdXJlbnpvQGdtYWlsLmNvbT4KCglQUiBqYXZhLzk4NjEKCSogbWFuZ2xlLmMgKG1hbmdsZV9tZXRob2RfZGVjbCk6IE1hbmdsZSBKYXZhIG1ldGhvZHMgYnkgcHJlcGVuZGluZyAnSicKCXRvIGJhcmVfZnVuY3Rpb25fdHlwZSBhbmQgaW5jbHVkaW5nIHRoZSByZXR1cm4gdHlwZQoJKiBidWlsdGlucy5jIChpbml0aWFsaXplX2J1aWx0aW5zKSA6IENoYW5nZSBidWlsdGluIG1hbmdsZWQgbmFtZQoJY29uc3RhbnRzIHRvIGNvbmZvcm0gdG8gbmV3IG1hbmdsaW5nIHNjaGVtZQoKMjAwNS0xMi0wOCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgbGliZ2NqLzI1MjY1CgkqIGphdmEtdHJlZS5oIChlbnVtIGphdmFfdHJlZV9pbmRleCk6IEFkZCBKVElfU09GVF9OT1NVQ0hGSUVMRF9OT0RFLgoJKHNvZnRfYWJzdHJhY3RtZXRob2Rfbm9kZSk6IE5ldy4KCSogZXhwci5jIChidWlsZF9maWVsZF9yZWYpOiBBZGQgaW4tbGluZSBjaGVjayBmb3IgbWlzc2luZyBmaWVsZC4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogQWRkIHNvZnRfbm9zdWNoZmllbGRfbm9kZS4KCjIwMDUtMTItMDcgIFJhZmFlbCDBdmlsYSBkZSBFc3DtbmRvbGEgIDxyYWZhZWwuZXNwaW5kb2xhQGdtYWlsLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS5hbGwuYnVpbGQsIGphdmEuaW5zdGFsbC1ub3JtYWwpOiBSZW1vdmUuCgoyMDA1LTEyLTA3ICBSYWZhZWwgwXZpbGEgZGUgRXNw7W5kb2xhICA8cmFmYWVsLmVzcGluZG9sYUBnbWFpbC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IFJlbW92ZSBhbGwgZGVwZW5kZW5jaWVzIG9uIHMtZ3R5cGUsIGV4Y2VwdCBmb3IKCWd0LWphdmEtcGFyc2UuaC4KCjIwMDUtMTItMDcgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfdXRmOF9yZWYsIGVtaXRfcmVnaXN0ZXJfY2xhc3Nlcyk6IFVzZQoJc3dpdGNoX3RvX3NlY3Rpb24gYW5kIGdldF9zZWN0aW9uLgoKMjAwNS0xMi0wNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMjUyODM6CgkqIHBhcnNlLnkgKHBhdGNoX25ld19hcnJheV9pbml0KTogUmV2ZXJ0IHByZXZpb3VzIHBhdGNoLgoJKGxvb2t1cF9tZXRob2RfaW52b2tlKTogVXNlIHNpemUtbGVzcyBhcnJheSB0eXBlIHdoZW4gY3JlYXRpbmcgYW4KCWFub255bW91cyBjb25zdHJ1Y3Rvci4KCjIwMDUtMTItMDUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX25ld19hcnJheV9pbml0KTogRG9uJ3Qgc2V0IGxlbmd0aCBvbiBhcnJheS4KCjIwMDUtMTItMDIgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGphdmEtZ2ltcGxpZnkuYyAoamF2YV9naW1wbGlmeV9sYWJlbGVkX2Jsb2NrX2V4cHIpOiBVc2UKCWJ1aWxkTiBpbnN0ZWFkIG9mIGJ1aWxkLgoJKiBjbGFzcy5jIChmaW5pc2hfY2xhc3MpOiBMaWtld2lzZS4KCSogZXhwci5jIChqYXZhX2NyZWF0ZV9vYmplY3QpOiBMaWtld2lzZS4KCjIwMDUtMTEtMjggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE4Mjc4OgoJKiBleHByLmMgKGJ1aWxkX2puaV9zdHViKTogVW53cmFwIHRoZSByZXR1cm4gdmFsdWUuCgkqIGphdmEtdHJlZS5oIChzb2Z0X3Vud3JhcGpuaV9ub2RlKTogTmV3IGRlZmluZS4KCShlbnVtIGphdmFfdHJlZV9pbmRleCk6IEFkZGVkIEpUSV9TT0ZUX1VOV1JBUEpOSV9OT0RFLgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplCglzb2Z0X3Vud3JhcGpuaV9ub2RlLgoKMjAwNS0xMS0yNCAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKGdpaiBvcHRpb25zKTogQWRkIC1Yc3MgZG9jdW1lbnRhdGlvbi4KCjIwMDUtMTEtMDggIFdpbCBNYWhhbiAgPHdtYWhhbkBnbWFpbC5jb20+CgoJUFIgamF2YS8yMzYxNwoJKiB6ZXh0cmFjdC5jIChyZWFkX3ppcF9hcmNoaXZlKTogRml4IG91dCBvZiBtZW1vcnkgZXJyb3Igd2hlbgoJcmVhZGluZyBqYXIgZmlsZXMgd2l0aCB6aXAtc3R5bGUgY29tbWVudHMuCgoyMDA1LTExLTA3ICAgVGVycnkgTGF1cmVuem8gICA8dGxhdXJlbnpvQGdtYWlsLmNvbT4KCgkqIGdqYXZhaC5jIChIQU5ETEVfQ09ERV9BVFRSSUJVVEUpOiBPbmx5IGRlZmluZSBmb3IgRUxGIE9iamVjdAoJZm9ybWF0cy4KCSogZ2phdmFoLmMgKGRlY29tcGlsZV9tZXRob2QpOiBBZGQgQVRUUklCVVRFX1VOVVNFRAoKMjAwNS0xMC0xMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBXaWwgTWFoYW4gPHdtYWhhbkBnbWFpbC5jb20+CgoJUFIgamF2YS8yMzYyMAoJKiBjbGFzcy5jIChtYWtlX2NsYXNzKTogQ3JlYXRlIGVtcHR5IGJpbmZvIGhlcmUuCgkoc2V0X3N1cGVyX2luZm8pOiBPbmx5IGNyZWF0ZSBiaW5mbyBpZiB3ZSBoYXZlIHN1cGVyY2xhc3Nlcy4KCjIwMDUtMTAtMDMgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGdjYy5nbnUub3JnPgoKCVBSIGphdmEvMjQxMjcKCSogcGFyc2UueSAobWV0aG9kX2hlYWRlcik6IE1ha2UgdGhlIHJlc3VsdCBvZiB0aGUgcnVsZSBhIE5VTExfVFJFRQoJd2hlbiBhIHBhcnNpbmcgZXJyb3Igb2NjdXJzLgoKMjAwNS0wOS0yOSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMjQxMjA6CgkqIGpjZi1pby5jIChtZW1vaXplZF9kaXJsaXN0X2hhc2gpOiBOZXcgZnVuY3Rpb24uCgkoY2FjaGluZ19zdGF0KTogVXNlIGl0LgoKMjAwNS0wOS0yMSAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAZ2NjLmdudS5vcmc+CgoJUFIgamF2YS8yMTQxOAoJKiBjbGFzcy5jIChpbmhlcml0c19mcm9tX3ApOiBUcnkgdG8gbGF5IG91dCBzdXBlciBjbGFzcwoJaWYgaXQgaXMgbm90IGFscmVhZHkgbGFpZCBvdXQuCgkobWF5YmVfbGF5b3V0X3N1cGVyX2NsYXNzKTogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIFNVUEVSX0NMQVNTCglpcyBhIE5VTExfVFJFRS4KCjIwMDUtMDktMTggIEphbWVzIEEuIE1vcnJpc29uICA8cGh5dGhvbkBnY2MuZ251Lm9yZz4KCgkqIGJ1aWx0aW5zLmMgKG1heF9idWlsdGluLCBtaW5fYnVpbHRpbiwgYWJzX2J1aWx0aW4sCglqYXZhX2J1aWxkX2Z1bmN0aW9uX2NhbGxfZXhwcik6IFVzZSBmb2xkX2J1aWxkTi4KCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzX21ldGhvZCk6IExpa2V3aXNlLgoJKiBleHByLmMgKGphdmFfdHJ1dGh2YWx1ZV9jb252ZXJzaW9uLCBidWlsZF9qYXZhX2pzciwKCWJ1aWxkX2phdmFfYXJyYXlhY2Nlc3MsIGV4cGFuZF9qYXZhX2FycmF5bG9hZCwgZXhwYW5kX2lpbmMsCglidWlsZF9qYXZhX2Jpbm9wLCBidWlsZF9maWVsZF9yZWYsIGV4cGFuZF9jb21wYXJlLAoJYnVpbGRfa25vd25fbWV0aG9kX3JlZiwgYnVpbGRfaW52b2tldmlydHVhbCwKCXByb2Nlc3NfanZtX2luc3RydWN0aW9uKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHBhdGNoX2Jpbm9wLCBwYXRjaF9leGl0X2V4cHIpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGNvbnZlcnRfaWVlZV9yZWFsX3RvX2ludGVnZXIpOiBMaWtld2lzZS4KCShjb252ZXJ0KTogRG9uJ3QgY2FsbCBmb2xkIGFmdGVyIGNvbnZlcnRfaWVlZV9yZWFsX3RvX2ludGVnZXIuCgoyMDA1LTA5LTE0ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8yMzg5MQoJKiBwYXJzZS55IChtYXliZV9jcmVhdGVfY2xhc3NfaW50ZXJmYWNlX2RlY2wpOiBTZXQgVFlQRV9QQUNLQUdFIGZvcgoJdGhlIG5ld2x5IGNyZWF0ZWQgdHlwZS4gU2V0IGltcG9ydCBsaXN0cyBoZXJlLCBub3QgaW4gY3JlYXRlX2NsYXNzLgoJKGpkZXBfcmVzb2x2ZV9jbGFzcyk6IFNldCBjdXJyZW50X2NsYXNzLgoJKGRvX3Jlc29sdmVfY2xhc3MpOiBVc2UgY3VycmVudF9jbGFzcydzIFRZUEVfUEFDS0FHRSB0byBkZXRlcm1pbmUgCgl0aGUgY3VycmVudCBwYWNrYWdlIGNvbnRleHQsIG5vdCBjdHhwLT5wYWNrYWdlLgoJKGNpY3BfY2FjaGUpOiBSZW1vdmVkLgoJKGNsYXNzX2luX2N1cnJlbnRfcGFja2FnZSk6IFNpbXBsaWZ5IGltcGxlbWVudGF0aW9uIHVzaW5nIFRZUEVfUEFDS0FHRS4KCSogamNmLXBhcnNlLmMgKGdpdmVfbmFtZV90b19jbGFzcyk6IFNldCBUWVBFX1BBQ0tBR0UuCgkqIGphdmEtdHJlZS5oIChUWVBFX1BBQ0tBR0UpOiBOZXcgbWFjcm8uCgkoc3RydWN0IGxhbmdfdHlwZSk6IE5ldyBtZW1iZXIgJ3BhY2thZ2UnLgoKMjAwNS0wOS0wOSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgbGliZ2NqLzIzMTgyIAoJKiBleHByLmMgKHBvcF90eXBlXzApOiBJZiB0aGUgZXhwZWN0ZWQgdHlwZSBpcyBvYmplY3Qgb3IgcHRyCgkoaS5lLiB2b2lkKiksIHJldHVybiB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0IHdlIGp1c3QgcG9wcGVkIGZyb20KCXRoZSBzdGFjay4KCjIwMDUtMDktMDYgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogamF2YS1naW1wbGlmeS5jIChqYXZhX2dpbXBsaWZ5X2Jsb2NrKTogTlVMTCBvdXQgdGhlIG9sZCBCTE9DSydzCglCTE9DS19FWFBSX0JPRFkgYmVmb3JlIHJldHVybmluZyB0aGUgbmV3IEJJTkRfRVhQUi4KCjIwMDUtMDktMDYgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY2hlY2staW5pdC5jLCBkZWNsLmMsIGV4cHIuYywgZ2NqLnRleGksIGphdmEtdHJlZS5oLAoJamNmLXBhcnNlLmMsIGpjZi5oLCBwYXJzZS5oLCBwYXJzZS55LCB0eXBlY2suYzogRml4IGNvbW1lbnQKCXR5cG9zLiAgRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoKMjAwNS0wOS0wNSAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJUFIgamF2YS8yMzQzMQoJKiB0eXBlY2suYyAobG9va3VwX2RvKTogTG9vayB1cCBpbnRlcmZhY2VzIGZvciB0aGUgb3JpZ2luYWwgY2xhc3MsCglub3QgdGhlIGJhc2UgY2xhc3MuCgkqIHBhcnNlLnkgKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogRml4IGRpYWdub3N0aWMgbWVzc2FnZSBmb3IKCW1vcmUgcmVzdHJpY3RpdmUgb3ZlcnJpZGluZyBvZiBhIG1ldGhvZCBmcm9tIGFuIGludGVyZmFjZS4KCjIwMDUtMDgtMTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6IEFsd2F5cyBlbWl0IEpWX1NUQVRFX1BSRUxPQURJTkcgZm9yCgljbGFzcycgaW5pdGlhbCBzdGF0ZS4KCjIwMDUtMDgtMTYgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCVBSIGphdmEvMjIxMTMKCSogbGV4LmMgKGRvX2phdmFfbGV4KTogRGVmaW5lIE1BWF9UT0tFTl9MRU4uIEF2b2lkIG92ZXJmbG93aW5nCglgbGl0ZXJhbF90b2tlbicgZm9yIGxhcmdlIG51bWVyaWMgaW5wdXQgdG9rZW5zLgoKMjAwNS0wOC0xNiAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJUFIgamF2YS8xOTg3MAoJKiBwYXJzZS55IChuZXN0ZWRfZmllbGRfYWNjZXNzX3ApOiBSZW5hbWUgdG8gbmVzdGVkX21lbWJlcl9hY2Nlc3NfcAoJYW5kIGV4cGFuZCB0byBoYW5kbGUgbWV0aG9kIGFjY2Vzc2VzIGFjcm9zcyBuZXN0ZWQgY2xhc3Nlcy4KCShidWlsZF9vdXRlcl9tZXRob2RfYWNjZXNzX21ldGhvZCk6IFJlbmFtZSB0bwoJYnVpbGRfbmVzdGVkX21ldGhvZF9hY2Nlc3NfbWV0aG9kLiAgTWlub3IgYWRqdXN0bWVudHMgdG8gY29tbWVudHMuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBVc2UgdGhlIG5ld2x5LXJlbmFtZWQKCW5lc3RlZF9tZW1iZXJfYWNjZXNzX3AgbWV0aG9kLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IExpa2V3aXNlLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogQWxzbyBjb25zaWRlciBzdGF0aWMgbWV0aG9kcyBmb3IgYWNjZXNzCgltZXRob2QgZ2VuZXJhdGlvbi4gIE1pbm9yIGFkanVzdG1lbnRzIHRvIGNvbW1lbnRzLgoJKG1heWJlX3VzZV9hY2Nlc3NfbWV0aG9kKTogVXNlIHRoZSBtb3JlIGdlbmVyYWwKCW5lc3RlZF9tZW1lYmVyX2FjY2Vzc19wIHRvIGRldGVybWluZSBhY2Nlc3MgYWNyb3NzIG5lc3RlZCBjbGFzcwoJYm91bmRhcmllcy4gIEFsbG93IFRISVNfQVJHIHRvIGJlIE5VTEwgKGZvciBzdGF0aWMgbWV0aG9kcykuCgoyMDA1LTA4LTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8yMzMwMC4KCSogZXhwci5jIChidWlsZF9maWVsZF9yZWYpOiBEb24ndCBnZW5lcmF0ZSBvdGFibGUgcmVmZXJlbmNlIHdoZW4KCURFQ0xfRklFTERfT0ZGU0VUIGlzIDAuCgkqIGNsYXNzLmMgKG1heWJlX2xheW91dF9zdXBlcl9jbGFzcyk6IFBhc3Mgb3V0ZXIgY2xhc3MgdG8KCWRvX3Jlc29sdmVfY2xhc3MuCgoyMDA1LTA4LTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqYXZhLXRyZWUuaCAoTEFCRUxfSU5fU1VCUik6IFJlbW92ZWQuCgkoTEFCRUxfSU5fU1VCUik6IExpa2V3aXNlLgoJKExBQkVMX0lTX1NVQlJfU1RBUlQpOiBMaWtld2lzZS4KCShMQUJFTF9TVUJSX1NUQVJUKTogTGlrZXdpc2UuCgkoTEFCRUxfU1VCUl9DT05URVhUKTogTGlrZXdpc2UuCgkoTEFCRUxfQ0hBTkdFRCk6IExpa2V3aXNlLgoJKExBQkVMX1JFVFVSTl9MQUJFTCk6IExpa2V3aXNlLgoJKExBQkVMX1JFVFVSTl9UWVBFX1NUQVRFKTogTGlrZXdpc2UuCgkoTEFCRUxfUkVUVVJOX0xBQkVMUyk6IExpa2V3aXNlLgoJKFJFVFVSTl9NQVBfQURKVVNURUQpOiBMaWtld2lzZS4KCShMQUJFTF9QRU5ESU5HX0NIQUlOKTogTGlrZXdpc2UuCgoyMDA1LTA4LTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKEpBVkFfT0JKUyk6IFJlbW92ZWQgdmVyaWZ5Lm8KCShqYXZhL3ZlcmlmeS5vKTogUmVtb3ZlZC4KCSogdmVyaWZ5LmM6IFJlbW92ZWQuCgkqIGxhbmcuYyAoZmxhZ19uZXdfdmVyaWZpZXIpOiBSZW1vdmVkLgoJKGphdmFfcG9zdF9vcHRpb25zKTogVXBkYXRlZC4KCSogamF2YS10cmVlLmggKGZsYWdfbmV3X3ZlcmlmaWVyKTogUmVtb3ZlZC4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IFJlbW92ZWQuCgkqIGV4cHIuYyAocG9wX3R5cGVfMCk6IEFzc3VtZSBmbGFnX25ld192ZXJpZmllciBpcyB0cnVlLgoJKGJ1aWxkX2phdmFfY2hlY2tfaW5kZXhlZF90eXBlKTogTGlrZXdpc2UuCgkoZXhwYW5kX2phdmFfYXJyYXlzdG9yZSk6IExpa2V3aXNlLgoJKGV4cGFuZF9qYXZhX2FycmF5bG9hZCk6IExpa2V3aXNlLgoJKHBvcF9hcmd1bWVudHMpOiBMaWtld2lzZS4KCShleHBhbmRfYnl0ZV9jb2RlKTogTGlrZXdpc2UuCgkocHJvY2Vzc19qdm1faW5zdHJ1Y3Rpb24pOiBMaWtld2lzZS4KCjIwMDUtMDgtMTAgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogamF2YS1naW1wbGlmeS5jIChqYXZhX2dpbXBsaWZ5X21vZGlmeV9leHByKTogRml4IGFueSBwb2ludGVyCgl0eXBlIG1pc21hdGNoZXMgdG8gbWFrZSBsZWdhbCBHSU1QTEUuCgoyMDA1LTA4LTEwICBSb2JpbiBHcmVlbiA8Z3JlZW5yZEBncmVlbnJkLm9yZz4KCglQUiBqYXZhLzIzMjMwOgoJKiBwYXJzZS55IChtYXliZV91c2VfYWNjZXNzX21ldGhvZCk6IEdlbmVyYWxpemUgY2hlY2sgZnJvbQoJamF2YS5sYW5nLk9iamVjdCB0byBhbnkgc3VwZXJjbGFzcyBvZiBjdXJyZW50X2NsYXNzCgoyMDA1LTA4LTA4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfY2xhc3NfcmVmKTogV3JhcCB0aGUgcHJpbWFyeSBjbGFzcyB0eXBlIGluIGEKCU5PUF9FWFBSLgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocykgPENPTVBPTkVOVF9SRUYgY2FzZT46IEV4dHJhY3QgdGhlCglwcmltYXJ5IGNsYXNzIHR5cGUgZnJvbSB0aGUgTk9QX0VYUFIgaW4gd2hpY2ggaXQgd2FzIHBsYWNlZC4KCjIwMDUtMDctMjggIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogZXhwci5jIChleHBhbmRfbG9hZF9pbnRlcm5hbCk6IEZpeCBtaXNzaW5nIHBhcmVucyBpbgoJcHJlZGljYXRlLgoKMjAwNS0wNy0yOCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9sb2FkX2ludGVybmFsKTogQ29udmVydCB0byBkZXN0aW5hdGlvbiB0eXBlLgoKMjAwNS0wNy0yMiAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtaEBzdXNlLmNvbT4KCgkqIHZlcmlmeS1pbXBsLmMgKGNoZWNrX2NsYXNzX2NvbnN0YW50KTogRml4IHVuaW5pdGlhbGlzZWQgd2FybmluZ3MuCgkoY2hlY2tfY29uc3RhbnQpOiBMaWtld2lzZS4KCShjaGVja193aWRlX2NvbnN0YW50KTogTGlrZXdpc2UuCgoyMDA1LTA3LTIwICBHaW92YW5uaSBCYWpvICA8Z2lvdmFubmliYWpvQGxpYmVyby5pdD4KCglNYWtlIENPTlNUUlVDVE9SIHVzZSBWRUMgdG8gc3RvcmUgaW5pdGlhbGl6ZXJzLgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBVcGRhdGUgdG8gY29wZSB3aXRoIFZFQyBpbgoJQ09OU1RSVUNUT1JfRUxUUy4KCSogY2xhc3MuYyAobWFrZV9maWVsZF92YWx1ZSwgbWFrZV9tZXRob2RfdmFsdWUsIGdldF9kaXNwYXRjaF90YWJsZSwKCW1ha2VfY2xhc3NfZGF0YSwgZW1pdF9zeW1ib2xfdGFibGUsIGVtaXRfY2F0Y2hfdGFibGUsCgllbWl0X2Fzc2VydGlvbl90YWJsZSk6IFVzZSBidWlsZF9jb25zdHJ1Y3Rvcl9mcm9tX2xpc3QgaW5zdGVhZCBvZgoJYnVpbGRfY29uc3RydWN0b3IuCgkqIGNvbnN0YW50cy5jIChidWlsZF9jb25zdGFudHNfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCSogamF2YS1naW1wbGlmeS5jIChqYXZhX2dpbXBsaWZ5X25ld19hcnJheV9pbml0KTogVXBkYXRlIHRvIGNvcGUgd2l0aAoJVkVDIGluIENPTlNUUlVDVE9SX0VMVFMuCgkqIGphdmEtdHJlZS5oIChTVEFSVF9SRUNPUkRfQ09OU1RSVUNUT1IsIFBVU0hfU1VQRVJfVkFMVUUsCglQVVNIX0ZJRUxEX1ZBTFVFLCBGSU5JU0hfUkVDT1JEX0NPTlNUUlVDVE9SKTogQ3JlYXRlIGEgVkVDIGluc3RlYWQKCW9mIGEgVFJFRV9MSVNULgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBVcGRhdGUgdG8gY29wZSB3aXRoIFZFQyBpbgoJQ09OU1RSVUNUT1JfRUxUUy4KCSogcGFyc2UueSAoYnVpbGRfbmV3X2FycmF5X2luaXQpOiBVc2UgYnVpbGRfY29uc3RydWN0b3JfZnJvbV9saXN0CglpbnN0ZWFkIG9mIGJ1aWxkX2NvbnN0cnVjdG9yLgoJKHBhdGNoX25ld19hcnJheV9pbml0KTogVXBkYXRlIHRvIGNvcGUgd2l0aCBWRUMgaW4KCUNPTlNUUlVDVE9SX0VMVFMuCgkoYXJyYXlfY29uc3RydWN0b3JfY2hlY2tfZW50cnkpOiBMaWtld2lzZS4KCjIwMDUtMDctMTIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGp2c3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IFB1dCBmaWxlbGlzdF9maWxlbmFtZSBmaXJzdCBvbgoJY29tbWFuZCBsaW5lLgoKMjAwNS0wNy0xMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTk2NzQ6CgkqIHBhcnNlLXNjYW4ueSAoaW50ZXJmYWNlX21lbWJlcl9kZWNsYXJhdGlvbik6IEFkZGVkCgllbXB0eV9zdGF0ZW1lbnQuCgoyMDA1LTA3LTA4ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCQoJKiBqYXZhLXRyZWUuaCAoTEFCRUxfUkVUVVJOX0xBQkVMUyk6IFVzZSBkZWNsX25vbl9jb21tb24uCgkoTEFCRUxfUEVORElOR19DSEFJTik6IERpdHRvLgoJKExBQkVMX1BDKTogRGl0dG8uCgkoREVDTF9CSVRfSU5ERVgpOiBEaXR0by4JCgoyMDA1LTA3LTA3ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xODExOQoJKiBwYXJzZS55IChpbm5lcl9jbGFzc19hY2Nlc3NpYmxlKTogTmV3IGZ1bmN0aW9uLiBMb2dpYyBtb3ZlZCBmcm9tCgljaGVja19pbm5lcl9jbGFzc19hY2Nlc3MuCgkoY2hlY2tfaW5uZXJfY2xhc3NfYWNjZXNzKTogVXNlIGlubmVyX2NsYXNzX2FjY2Vzc2libGUuCgkocmVzb2x2ZV9pbm5lcl9jbGFzcyk6IFNpbXBsaWZ5IGFyZ3VtZW50cy4gQ3JlYXRlIGNpcmN1bGFyaXR5IGhhc2gKCWhlcmUuIEtlZXAgbG9va2luZyBmb3IgY2xhc3NlcyBpZiB3ZSBmb3VuZCBvbmUgdGhhdCB3YXMgaW5hY2Nlc3NpYmxlLiAKCVJldHVybiB0aGUgaW5hY2Nlc3NpYmxlIGNsYXNzIG9ubHkgaWYgdGhlcmUgaXMgbm8gb3RoZXIgbWF0Y2guCgkoZG9fcmVzb2x2ZV9jbGFzcyk6IFVwZGF0ZSBmb3IgbmV3IHJlc29sdmVfaW5uZXJfY2xhc3MgYXJndW1lbnRzLgoJRG9uJ3QgY3JlYXRlIGNpcmN1bGFyaXR5X2hhc2ggaGVyZS4KCjIwMDUtMDctMDcgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzIxMDQ1CgkqIHBhcnNlLnkgKGFkZF9leGNlcHRpb25fdG9fdGhyb3dzKTogTmV3IGZ1bmN0aW9uLgoJKHB1cmdlX3VuY2hlY2tlZF9leGNlcHRpb25zKTogUmVtb3ZlZC4KCShnZXRfY29uc3RydWN0b3Jfc3VwZXIpOiBSZW5hbWVkIGZyb20gdmVyaWZ5X2NvbnN0cnVjdG9yX3N1cGVyLiBOb3cKCXJldHVybnMgdGhlIHN1cGVyIGNvbnN0cnVjdG9yIGFmdGVyIHZlcmlmaWNhdGlvbi4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBEb24ndCB1c2UgcHVyZ2VfdW5jaGVja2VkX2V4Y2VwdGlvbnMKCW9yIHNhdmUvcmVzdG9yZSB0aGUgZXhjZXB0aW9uIGxpc3QuCgkoY2hlY2tfdGhyb3duX2V4Y2VwdGlvbnMpOiBBZGQgdW5jYXVnaHQgZXhjZXB0aW9ucyBpbiBhbm9ueW1vdXMKCWNsYXNzIGluaXRpYWxpemVycyBhbmQgY29uc3RydWN0b3JzIHRvIHRoZSB0aHJvd3MgY2xhdXNlIG9mIHRoZSBtZXRob2QuCQoKMjAwNS0wNy0wNSAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTk2NzQKCSogcGFyc2UueSAoaW50ZXJmYWNlX21lbWJlcl9kZWNsYXJhdGlvbik6IEFsbG93IGVtcHR5IHN0YXRlbWVudHMgaW4KCWludGVyZmFjZSBkZWNsYXJhdGlvbnMuCgoyMDA1LTA3LTA1ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKHBhcnNlLm8pOiBBZGp1c3QgZGVwZW5kZW5jaWVzLgoJKiBwYXJzZS55OiBJbmNsdWRlIHRyZWUtZHVtcC5oLgoKMjAwNS0wNy0wMiAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jLCBkZWNsLmMsIGV4cHIuYzogVXNlICcrJyBmbGFnIGluc3RlYWQgb2YgJUouICBVc2UgJ3EnCglmbGFnIGZvciBxdW90aW5nLgoKMjAwNS0wNy0wMSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBwYXJzZS55IChpc3N1ZV93YXJuaW5nX2Vycm9yX2Zyb21fY29udGV4dCk6IENhbGwKCXBwX291dHB1dF9mb3JtYXR0ZWRfdGV4dCB0byBiZSBhYmxlIHRvIGdldCB0aGUgYnVmZmVyLgoKMjAwNS0wNi0zMCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBwYXJzZS55IChpc3N1ZV93YXJuaW5nX2Vycm9yX2Zyb21fY29udGV4dCk6IFVwZGF0ZSBmb3IgdGhlCglyZW5hbWluZyBvZiBwcF9mb3JtYXRfdGV4dCB0byBwcF9mb3JtYXQuCgoyMDA1LTA2LTI4ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogQ2FsbAoJZGVmYXVsdF9pbml0X3Vud2luZF9yZXN1bWVfbGliZnVuYy4KCjIwMDUtMDYtMjcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzIxNTQwLCBQUiBqYXZhLzEzNzg4OgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocykgPENBU0VfRVhQUj46IFVzZQoJZm9sZF9jb25zdGFudF9mb3JfaW5pdC4KCShwYXRjaF9iaW5vcCk6IEFkZGVkICdmb2xkaW5nJyBhcmd1bWVudC4gIFVwZGF0ZWQgYWxsIGNhbGxlcnMuCgkocGF0Y2hfdW5hcnlvcCkgPE5PUF9FWFBSPjogTmV3IGNhc2UuCgkoZm9sZF9jb25zdGFudF9mb3JfaW5pdCkgPE5PUF9FWFBSPjogTGlrZXdpc2UuCgkoZm9sZF9jb25zdGFudF9mb3JfaW5pdCkgPENPTkRfRVhQUj46IEZpeCBzZW5zZSBvZiB0ZXN0LgoKMjAwNS0wNi0yNSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogYnVpbHRpbnMuYyAoZGVmaW5lX2J1aWx0aW4pOiBBY2NlcHQgbmV3IGZsYWdzIHBhcmFtZXRlci4KCShpbml0aWFsaXplX2J1aWx0aW5zKTogTWFyayB0aGUgYnVpbHRpbnMgY29uc3QgYW5kIG5vdGhyb3cgYWNjb3JkaW5nbHkuCgoyMDA1LTA2LTI1ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogYWxsIGZpbGVzOiBVcGRhdGUgRlNGIGFkZHJlc3MgaW4gY29weXJpZ2h0IGhlYWRlcnMuCgoyMDA1LTA2LTI0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiB2ZXJpZnktaW1wbC5jICh2ZXJpZnlfaW5zdHJ1Y3Rpb25zXzApOiBDb3JyZWN0bHkgaGFuZGxlCglzaXR1YXRpb24gd2hlcmUgUEMgZmFsbHMgb2ZmIGVuZC4KCjIwMDUtMDYtMjMgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzIwNjk3CgkqIHBhcnNlLnkgKGZpbmRfbW9zdF9zcGVjaWZpY19tZXRob2RzX2xpc3QpOiBSZW1vdmUgc3BlY2lhbCBjYXNlIGZvcgoJaW5uZXIgY2xhc3Nlcy4KCjIwMDUtMDYtMTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBsaWJnY2ovMjE5MDY6CgkqIGNsYXNzLmMgKG1ha2VfbWV0aG9kX3ZhbHVlKTogVXNlIHNvZnRfYWJzdHJhY3RtZXRob2Rfbm9kZSBmb3IKCWFic3RyYWN0IG1ldGhvZC4KCSogamF2YS10cmVlLmggKHNvZnRfYWJzdHJhY3RtZXRob2Rfbm9kZSk6IE5ldyBkZWZpbmUuCgkoSlRJX1NPRlRfQUJTVFJBQ1RNRVRIT0RfTk9ERSk6IE5ldyBlbnVtIGNvbnN0YW50LgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplCglzb2Z0X2Fic3RyYWN0bWV0aG9kX25vZGUuCgoyMDA1LTA2LTEzICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAocnVsZSBmb3IgaW5zdGFsbGluZyBnY2ouMSk6IERlcGVuZHMgb24gaW5zdGFsbGRpcnMuCgoyMDA1LTA2LTEzICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGV4cHIuYyAoaW50IGhpZ2hlc3RfbGFiZWxfcGNfdGhpc19tZXRob2QsCglzdGFydF9sYWJlbF9wY190aGlzX21ldGhvZCk6IE5ldyBnbG9iYWxzLgoJKGxvb2t1cF9sYWJlbCk6IEFkZCBzdGFydF9sYWJlbF9wY190aGlzX21ldGhvZCB0byBwYyBmb3IgbGFiZWwsIGFuZAoJdXBkYXRlIGhpZ2hlc3RfbGFiZWxfcGNfdGhpc19tZXRob2QuICBUaGlzIHByZXZlbnRzIGNvbmZsaWN0cyBiZXR3ZWVuCglsYWJlbHMgZnJvbSBkaWZmZXJlbnQgbWV0aG9kcy4KCSogamF2YS10cmVlLmg6IERlY2xhcmUgbmV3IGdsb2JhbHMuCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9jbGFzc19maWxlKTogSWYgbmVlZGVkIGJ1bXAKCXN0YXJ0X2xhYmVsX3BjX3RoaXNfbWV0aG9kIGFuZCByZXNldCBoaWdoZXN0X2xhYmVsX3BjX3RoaXNfbWV0aG9kLgoKMjAwNS0wNi0xMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMjE4NDQ6CgkqIHBhcnNlLnkgKG5lc3RlZF9maWVsZF9hY2Nlc3NfcCk6IEhhbmRsZSBjYXNlIHdoZXJlIG91dGVyIGZpZWxkCglpcyBpbmhlcml0ZWQgYnkgZW5jbG9zaW5nIGNsYXNzLgoKMjAwNS0wNi0xMiAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBjbGFzcy5jIChpbmhlcml0c19mcm9tX3ApOiBEbyBsb2FkX2NsYXNzIGlmIG5lZWRlZC4KCjIwMDUtMDYtMDkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdqYXZhaC5jIChlcnJvcik6IEFkZCBBVFRSSUJVVEVfUFJJTlRGXzEuCgkqIGphdmEtdHJlZS5oIChwYXJzZV9lcnJvcl9jb250ZXh0KTogTW92ZS4uLgoJKiBwYXJzZS5oIChwYXJzZV9lcnJvcl9jb250ZXh0KTogLi4uIGhlcmUsIGFkZCBBVFRSSUJVVEVfR0NDX0RJQUcuCgkqIHBhcnNlLnkgKHBhcnNlX3dhcm5pbmdfY29udGV4dCk6IEFkZCBBVFRSSUJVVEVfR0NDX0RJQUcuCgkqIHZlcmlmeS1pbXBsLmMgKGRlYnVnX3ByaW50KTogQWRkIEFUVFJJQlVURV9QUklOVEZfMS4KCjIwMDUtMDYtMDggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogdHlwZWNrLmMgKGNvbnZlcnQpOiBPbmx5IGNsZWFyIFRSRUVfT1ZFUkZMT1cgb24gSU5URUdFUl9DU1Qgbm9kZXMuCgoyMDA1LTA2LTA2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGp2LXNjYW4uYyAoZmF0YWxfZXJyb3IsIHdhcm5pbmcsIHdhcm5pbmcwKTogVXNlIGdtc2dpZCBpbnN0ZWFkIG9mCgltc2dpZCBmb3IgYXJndW1lbnQgbmFtZS4KCSogZ2phdmFoLmMgKGVycm9yKTogTGlrZXdpc2UuCgkqIGphdmEtdHJlZS5oIChwYXJzZV9lcnJvcl9jb250ZXh0KTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHBhcnNlX2Vycm9yX2NvbnRleHQsIHBhcnNlX3dhcm5pbmdfY29udGV4dCwKCWlzc3VlX3dhcm5pbmdfZXJyb3JfZnJvbV9jb250ZXh0KTogTGlrZXdpc2UuCgoyMDA1LTA2LTAxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8yMTcyMjoKCSogY2xhc3MuYyAoYnVpbGRfc3RhdGljX2ZpZWxkX3JlZik6IERvbid0IGZvbGQgY29uc3RhbnQgZmllbGRzIGlmCgljdXJyZW50IGNsYXNzIGlzIGZyb20gYSAuY2xhc3MgZmlsZSBhbmQgd2UncmUgdXNpbmcgaW5kaXJlY3QKCWRpc3BhdGNoLgoKMjAwNS0wNS0zMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogamF2YS92ZXJpZnktZ2x1ZS5jOiBEb24ndCBpbmNsdWRlIGVycm9ycy5oIGFuZCBpbmNsdWRlIHRvcGxldi5oLgoJKiBqYXZhL01ha2UtbGFuZy5pbjogVXBkYXRlcyBkZXBlbmRlbmNpZXMuCgoyMDA1LTA1LTI2ICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCglQUiBqYXZhLzE5ODcwLgoJKiBqYXZhLXRyZWUuaCAoT1VURVJfRklFTERfQUNDRVNTX0lERU5USUZJRVJfUCk6IFJlbmFtZSB0bwoJTkVTVEVEX0ZJRUxEX0FDQ0VTU19JREVOVElGSUVSX1AuCgkoRklFTERfSU5ORVJfQUNDRVNTKTogUmVuYW1lIHRvIEZJRUxEX05FU1RFRF9BQ0NFU1MuCgkoRklFTERfSU5ORVJfQUNDRVNTX1ApOiBSZW5hbWUgdG8gRklFTERfTkVTVEVEX0FDQ0VTU19QLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfY2xhc3NmaWxlKTogVXNlCglORVNURURfRklFTERfQUNDRVNTX0lERU5USUZJRVJfUCBpbnN0ZWFkIG9mCglPVVRFUl9GSUVMRF9BQ0NFU1NfSURFTlRJRklFUl9QLgoJKiBwYXJzZS55IChidWlsZF9vdXRlcl9maWVsZF9hY2Nlc3MpOiBSZW5hbWUgdG8KCWJ1aWxkX25lc3RlZF9maWVsZF9hY2Nlc3MuIFN1cHBvcnQgc3RhdGljIGZpZWxkcyBhbmQgb3V0ZXItdG8taW5uZXIKCWNsYXNzIGFjY2Vzc2VzLgoJKG91dGVyX2ZpZWxkX2FjY2Vzc19wKTogUmVuYW1lIHRvIG5lc3RlZF9maWVsZF9hY2Nlc3NfcC4gU3VwcG9ydAoJc3RhdGljIGZpZWxkcyBhbmQgZ2VuZXJhbGlzZSB0byBvdXRlci10by1pbm5lciBjbGFzcyBhbmQgc2libGluZwoJaW5uZXIgY2xhc3MgYWNjZXNzZXMuCgkob3V0ZXJfZmllbGRfZXhwYW5kZWRfYWNjZXNzX3ApOiBSZW5hbWUgdG8KCW5lc3RlZF9maWVsZF9leHBhbmRlZF9hY2Nlc3NfcCBhbmQgc3VwcG9ydCBzdGF0aWMgZmllbGRzLgoJKG91dGVyX2ZpZWxkX2FjY2Vzc19maXgpOiBSZW5hbWUgdG8gbmVzdGVkX2ZpZWxkX2FjY2Vzc19maXggYW5kCglzdXBwb3J0IHN0YXRpYyBmaWVsZHMuCgkoYnVpbGRfb3V0ZXJfZmllbGRfYWNjZXNzX2V4cHIpOiBSZW5hbWUgdG8KCWJ1aWxkX25lc3RlZF9maWVsZF9hY2Nlc3NfZXhwciBhbmQgc3VwcG9ydCBzdGF0aWMgZmllbGRzLgoJKGJ1aWxkX291dGVyX2ZpZWxkX2FjY2Vzc19tZXRob2RzKTogUmVuYW1lIHRvCglidWlsZF9uZXN0ZWRfZmllbGRfYWNjZXNzX21ldGhvZHMgYW5kIHN1cHBvcnQgc3RhdGljIGZpZWxkcy4gRm9yCglzdGF0aWMgZmllbGRzLCBnZW5lcmF0ZSBhY2Nlc3NvcnMgd2l0aG91dCBjbGFzcyBpbnN0YW5jZSBwYXJhbWV0ZXJzLgoJKGJ1aWxkX291dGVyX2ZpZWxkX2FjY2Vzc19tZXRob2QpOiBSZW5hbWUgdG8KCWJ1aWxkX25lc3RlZF9maWVsZF9hY2Nlc3NfbWV0aG9kIGFuZCBzdXBwb3J0IHN0YXRpYyBmaWVsZHMuCgkoYnVpbGRfb3V0ZXJfbWV0aG9kX2FjY2Vzc19tZXRob2QpOiBVc2UKCU5FU1RFRF9GSUVMRF9BQ0NFU1NfSURFTlRJRklFUl9QIGluc3RlYWQgb2YKCU9VVEVSX0ZJRUxEX0FDQ0VTU19JREVOVElGSUVSX1AuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBDb25zaWRlciBzdGF0aWMgZmllbGQgYWNjZXNzZXMgYWNyb3NzCgluZXN0ZWQgY2xhc3Nlcy4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBMaWtld2lzZS4KCShqYXZhX2NvbXBsZXRlX2xocyk6IFVzZSBuZXN0ZWRfZmllbGRfYWNjZXNzX2ZpeCBpbnN0ZWFkIG9mCglvdXRlcl9maWVsZF9hY2Nlc3NfZml4LgoJKHBhdGNoX3VuYXJ5X29wKTogUmVuYW1lIG91dGVyX2ZpZWxkX2ZsYWcgdG8gbmVzdGVkX2ZpZWxkX2ZsYWcuCglVc2UgbmVzdGVkX2ZpZWxkX2V4cGFuZGVkX2FjY2Vzc19wIGluc3RlYWQgb2YKCW91dGVyX2ZpZWxkX2V4cGFuZGVkX2FjY2Vzc19wLiBVc2UgbmVzdGVkX2ZpZWxkX2FjY2Vzc19maXggaW5zdGVhZAoJb2Ygb3V0ZXJfZmllbGRfYWNjZXNzX2ZpeC4KCShjaGVja190aHJvd25fZXhjZXB0aW9ucyk6IFVzZSBORVNURURfRklFTERfQUNDRVNTX0lERU5USUZJRVJfUAoJaW5zdGVhZCBvZiBPVVRFUl9GSUVMRF9BQ0NFU1NfSURFTlRJRklFUl9QLgoKMjAwNS0wNS0yNiAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogZGVjbC5jIChHQ0pfQklOQVJZQ09NUEFUX0FERElUSU9OLCAKCUdDSl9CT09UU1RSQVBfTE9BREVSX0FERElUSU9OKTogUmVtb3ZlZC4KCShGTEFHX0JJTkFSWUNPTVBBVF9BQkksIEZMQUdfQk9PVFNUUkFQX0xPQURFUiwKCU1JTk9SX0JJTkFSWUNPTVBBVF9BQklfVkVSU0lPTik6IE5ldy4KCShHQ0pfQ1VSUkVOVF9CQ19BQklfVkVSU0lPTik6IFVzZSBuZXcgbWV0aG9kIHRvIGNhbGN1bGF0ZSB2ZXJzaW9uIElELgoJKHBhcnNlX3ZlcnNpb24pOiBDYWxjdWxhdGUgdmVyc2lvbiBJRCB1c2luZyBuZXcgbWV0aG9kLiBVc2UgYml0LWZsYWdzCglmb3IgZmxhZ19pbmRpcmVjdF9kaXNwYXRjaCBhbmQgZmxhZ19ib290c3RyYXBfY2xhc3Nlcy4KCjIwMDUtMDUtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgbGliZ2NqLzIxNjkyCgkqIE1ha2UtbGFuZy5pbiAoamF2YS9tYW5nbGUubyk6IERlcGVuZCBvbiBMQU5HSE9PS1NfREVGX0guCgkqIGNsYXNzLmMgKGJ1aWxkX2NsYXNzX3JlZik6IFNldCBERUNMX0NMQVNTX0ZJRUxEX1AgYW5kCglERUNMX0NPTlRFWFQ7IGF2b2lkIHB1c2hkZWNsX3RvcF9sZXZlbC4KCShidWlsZF9kdGFibGVfZGVjbCk6IFNldCBERUNMX1ZUQUJMRV9QIGFuZCBERUNMX0NPTlRFWFQuCgkobGF5b3V0X2NsYXNzKTogRG9uJ3QgU0VUX0RFQ0xfQVNTRU1CTEVSX05BTUUuCgkobGF5b3V0X2NsYXNzX21ldGhvZCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGphdmFfbWFya19jbmlfZGVjbF9sb2NhbCk6IE5ldy4KCShqYXZhX21hcmtfY2xhc3NfbG9jYWwpOiBVc2UgaXQuCgkqIGphdmEtdHJlZS5oIChERUNMX0xPQ0FMX0NOSV9NRVRIT0RfUCk6IE5ldy4KCShERUNMX0NMQVNTX0ZJRUxEX1AsIERFQ0xfVlRBQkxFX1ApOiBOZXcuCgkoc3RydWN0IGxhbmdfZGVjbF9mdW5jKTogQWRkIGxvY2FsX2NuaTsKCShzdHJ1Y3QgbGFuZ19kZWNsX3Zhcik6IEFkZCBjbGFzc19maWVsZCwgdnRhYmxlLgoJKGphdmFfbWFuZ2xlX2RlY2wpOiBEZWNsYXJlLgoJKiBsYW5nLmMgKExBTkdfSE9PS1NfU0VUX0RFQ0xfQVNTRU1CTEVSX05BTUUpOiBOZXcuCgkqIG1hbmdsZS5jOiBSZW1vdmUgZHVwIG9ic3RhY2suaDsgaW5jbHVkZSBsYW5naG9va3MtZGVmLmguCgkobWFuZ2xlX29ic3RhY2tfMSk6IE5ldy4KCShqYXZhX21hbmdsZV9kZWNsKTogUmVtb3ZlIG9ic3RhY2sgYXJndW1lbnQuICBDYWxsIG1hbmdsZV9jbGFzc19maWVsZCwKCW1hbmdsZV92dGFibGUsIGFuZCBtYW5nbGVfbG9jYWxfY25pX21ldGhvZF9kZWNsLiAgRmFsbCBiYWNrIHRvCglsaGRfc2V0X2RlY2xfYXNzZW1ibGVyX25hbWUgZm9yIHRoaW5ncyB0aGF0IGRvbid0IG5lZWQgbWFuZ2xpbmcuCgkobWFuZ2xlX2NsYXNzX2ZpZWxkKTogUmVuYW1lIGZyb20gamF2YV9tYW5nbGVfY2xhc3NfZmllbGQsIG1ha2UKCXN0YXRpYywgZG9uJ3QgY2FsbCBpbml0X21hbmdsaW5nIG9yIGZpbmlzaF9tYW5nbGluZy4KCShtYW5nbGVfdnRhYmxlKTogU2ltaWxhcmx5LgoJKG1hbmdsZV9sb2NhbF9jbmlfbWV0aG9kX2RlY2wpOiBOZXcuCgkoaW5pdF9tYW5nbGluZyk6IFJlbW92ZSBvYnN0YWNrIGFyZ3VtZW50LiAgVXNlICZtYW5nbGVfb2JzdGFja18xLAoJZ2NjX2Fzc2VydCwgYW5kIE1BTkdMRV9SQVdfU1RSSU5HLgoJKGZpbmlzaF9tYW5nbGluZyk6IFVzZSBnY2NfYXNzZXJ0LCByZW1vdmUgaWYgMCBkZWJ1Z2dpbmcgY29kZS4KCjIwMDUtMDUtMjUgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoc2V0X2NvbnN0YW50X3ZhbHVlKTogTW92ZSB3YXJuaW5nIGNvbnRyb2wgZnJvbSBpZigpIHRvCgl3YXJuaW5nKE9QVF8qKS4KCjIwMDUtMDUtMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChkZWZpbmVfYnVpbHRpbik6IERvbid0IGNhbGwgbWFrZV9kZWNsX3J0bC4KCSogY29uc3RhbnRzLmMgKGJ1aWxkX2NvbnN0YW50X2RhdGFfcmVmKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGJ1aWxkX3V0ZjhfcmVmKTogTGlrZXdpc2UuCgkoYnVpbGRfZmllbGRyZWZfY2FjaGVfZW50cnksIGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBMaWtld2lzZS4KCShnZXRfZGlzcGF0Y2hfdGFibGUsIGxheW91dF9jbGFzc19tZXRob2QpOiBMaWtld2lzZS4KCShidWlsZF9jbGFzc19yZWYpOiBMaWtld2lzZS4gRG9uJ3Qgc2V0IERFQ0xfU0laRSBvciBERUNMX1NJWkVfVU5JVAoJYnkgaGFuZC4KCShtYWtlX2xvY2FsX2Z1bmN0aW9uX2FsaWFzKTogRG9uJ3QgU0VUX0RFQ0xfQVNTRU1CTEVSX05BTUUuCgkobWFrZV9tZXRob2RfdmFsdWUpOiBVc2UgTUVUSE9EX0FCU1RSQUNUIGluc3RlYWQgb2YgREVDTF9SVExfU0VUX1AKCXRvIGRldGVybWluZSBpZiB3ZSBuZWVkIGEgbm9uLXplcm8gYWRkcmVzcy4KCSogZGVjbC5jIChidWlsdGluX2Z1bmN0aW9uKTogRG9uJ3QgY2FsbCBtYWtlX2RlY2xfcnRsLgoJKGdpdmVfbmFtZV90b19sb2NhbHMpOiBEb24ndCBTRVRfREVDTF9BU1NFTUJMRVJfTkFNRS4KCSogZXhwci5jIChidWlsZF9rbm93bl9tZXRob2RfcmVmKTogRG9uJ3QgY2FsbCBtYWtlX2RlY2xfcnRsLgoJKiByZXNvdXJjZS5jIChjb21waWxlX3Jlc291cmNlX2RhdGEpOiBMaWtld2lzZS4KCSogcGFyc2UueSAocmVzb2x2ZV9maWVsZF9hY2Nlc3MpOiBSZS13b3JkIGNvbW1lbnQgdG8gYXZvaWQKCWJ1aWxkaW5nIERFQ0xfUlRMLgoKMjAwNS0wNS0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKHJlZ2lzdGVyZWRfY2xhc3MpOiBUYWtlIGl0IG91dCBvZiBjbGFzc19yb290czsgdHVybiBpbnRvCglhIHZlYyBvZiB0cmVlcy4KCShyZWdpc3Rlcl9jbGFzcyk6IE1ha2Ugc3RhdGljLiAgRG9uJ3QgZHVwbGljYXRlIGRlY2wgbm9kZS4gIFVzZQoJVkVDX3NhZmVfcHVzaC4KCShlbWl0X3JlZ2lzdGVyX2NsYXNzZXMpOiBVc2UgVkVDX2l0ZXJhdGUuICBVc2Ugb3V0cHV0X2NvbnN0YW50CglpbnN0ZWFkIG9mIGFzc2VtYmxlX2ludGVnZXIuICBEb24ndCBjYWxsIG1hcmtfZGVjbF9yZWZlcmVuY2VkCglkaXJlY3RseS4KCSogamF2YS10cmVlLmggKHJlZ2lzdGVyX2NsYXNzKTogUmVtb3ZlIGRlY2wuCgoyMDA1LTA1LTE5ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIGphdmEvMTc4NDUKCgkqIHBhcnNlLnkgKHJlZ2lzdGVyX3BhY2thZ2UsIHBhY2thZ2VfbGlzdCk6IFJlbW92ZS4KCShwYWNrYWdlX2RlY2xhcmF0aW9uKTogRG8gbm90IGNhbGwgcmVnaXN0ZXJfcGFja2FnZS4KCShkb19yZXNvbHZlX2NsYXNzKTogRG8gbm90IHVzZSBwYWNrYWdlX2xpc3QuCgoyMDA1LTA1LTE1ICBHZXJhbGQgUGZlaWZlciAgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucykgPFNBVkVfRVhQUj46IFJlbW92ZQoJdW51c2VkIHZhcmlhYmxlLgoKMjAwNS0wNS0xNSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMjE1MTk6CgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucykgPFNBVkVfRVhQUj46IERvbid0IGNhbGwKCU5PVEVfUFVTSC4KCjIwMDUtMDUtMTIgIEFhcm9uIEx1Y2hrbyA8YWx1Y2hrb0ByZWRoYXQuY29tPgoKCSogZ2NqLnRleGk6IEFkZCAnLXZlcmlmeScsICctbm92ZXJpZnknLCBhbmQgJy12ZXJpZnlyZW1vdGUnLgoKMjAwNS0wNS0xMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKENvZGUgR2VuZXJhdGlvbik6IERvY3VtZW50IC1mYm9vdHN0cmFwLWNsYXNzZXMuCgkqIGRlY2wuYyAoR0NKX0JPT1RTVFJBUF9MT0FERVJfQURESVRJT04pOiBOZXcgbWFjcm8uCgkocGFyc2VfdmVyc2lvbik6IFVzZSBpdC4KCSogbGFuZy5vcHQgKC1mYm9vdHN0cmFwLWNsYXNzZXMpOiBOZXcgb3B0aW9uLgoKMjAwNS0wNS0xMCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglQUiBqYXZhLzIxNDM2CgkqIGNsYXNzLmMgKG1heWJlX2xheW91dF9zdXBlcl9jbGFzcyk6IExvb2sgZm9yIGltcG9ydHMgaW4gdGhpc19jbGFzcy4KCSogcGFyc2UuaCAoY3R4cF9mb3JfZ2VuZXJhdGlvbl9sYXN0KTogTmV3LgoJKGRvX3Jlc29sdmVfY2xhc3MpOiBBZGQgYSBwYXJhbWV0ZXIuCgkqIHBhcnNlLnkgKGN0eHBfZm9yX2dlbmVyYXRpb25fbGFzdCk6IE5ldy4KCShqYXZhX3BvcF9wYXJzZXJfY29udGV4dCk6IEFkZCBhdCBlbmQgb2YgbGlzdC4KCShmaW5kX2luX2ltcG9ydHMsIGZpbmRfaW5faW1wb3J0c19vbl9kZW1hbmQpOiBMb29rIGluIGN0eHAKCWlmIHRoZSBUWVBFX0lNUE9SVF9MSVNUIG9yIHJlc3BlY3RpdmVseSB0aGUgVFlQRV9JTVBPUlRfREVNQU5EX0xJU1Qgb2YKCXRoZSBnaXZlbiB0eXBlIGFyZSBOVUxMLgoJKGRvX3Jlc29sdmVfY2xhc3MpOiBMb29rIGludG8gdGhlIGltcG9ydHMgb2YgdGhlIG5ldyBzZWNvbmQgcGFyYW1ldGVyLgoJQWRqdXN0IHJlY3Vyc2l2ZSBjYWxscy4KCShyZXNvbHZlX2NsYXNzLCByZXNvbHZlX2lubmVyX2NsYXNzLCBmaW5kX2FzX2lubmVyX2NsYXNzKTogQWRqdXN0CgljYWxscyB0byBkb19yZXNvbHZlX2NsYXNzLgoJKGNyZWF0ZV9jbGFzcyk6IFNldCB0aGUgVFlQRV9JTVBPUlRfTElTVCBhbmQgVFlQRV9JTVBPUlRfREVNQU5EX0xJU1QuCgkoamF2YV9jb21wbGV0ZV9jbGFzcyk6IERvIG5vdCBkbyB0aGF0IGhlcmUuCgoyMDA1LTA1LTAzICBUaG9tYXMgRml0enNpbW1vbnMgIDxmaXR6c2ltQHJlZGhhdC5jb20+CgoJUFIgamF2YS8yMDMwOQoJKiBNYWtlLWxhbmcuaW4gKGphdmEpOiBBZGQgZ2puaWguCgkoSkFWQV9UQVJHRVRfSU5ERVBFTkRFTlRfQklOX1RPT0xTKTogTGlrZXdpc2UuCgkoR0pOSUhfT0JKUyk6IE5ldyB2YXJpYWJsZS4KCShnam5paCQoZXhlZXh0KSk6IE5ldyB0YXJnZXQuCgkoSkFWQV9NQU5GSUxFUyk6IEFkZCBnam5paC4xLgoJKGphdmEudW5pbnN0YWxsKTogQWRkIGdqbmloLjEuCgkoamF2YS5tb3N0bHljbGVhbik6IEFkZCBnam5paC4KCShqYXZhLm1haW50YWluZXItY2xlYW4pOiBBZGQgZ2puaWguMS4KCShqYXZhL2dqYXZhaC1qbmkubyk6IE5ldyB0YXJnZXQuCgkoLklOVEVSTUVESUFURSk6IEFkZCBnam5paC5wb2QuCgkoZ2puaWgucG9kKTogTmV3IHRhcmdldC4KCSogY29uZmlnLWxhbmcuaW4gKHN0YWdlc3R1ZmYpOiBBZGQgZ2puaWguCgkqIGdjai50ZXhpIChUb3ApOiBBZGQgZ2puaWggbm9kZS4KCShJbnZva2luZyBnY2poKTogQWRkIGRlc2NyaXB0aW9ucyBvZiAtZm9yY2UsIC1vbGQsIC10cmFjZSwgLUogYW5kCgktYm9vdGNsYXNzcGF0aCBvcHRpb25zLgoJKEludm9raW5nIGdqbmloKTogTmV3IG5vZGUuCgkqIGdqYXZhaC5jIEluaXRpYWxpemUgZmxhZ19qbmkgdG8gMSBpZiBKTklfREVGQVVMVCBpcyBkZWZpbmVkLgoJKFRPT0xOQU1FKTogTmV3IG1hY3JvLgoJKGVycm9yKTogUmVwbGFjZSBoYXJkLWNvZGVkIGdjamggd2l0aCBUT09MTkFNRS4KCShwcm9jZXNzX2ZpbGUpOiBMaWtld2lzZS4KCSh1c2FnZSk6IExpa2V3aXNlLgoJKHZlcnNpb24pOiBMaWtld2lzZS4KCShoZWxwKTogTGlrZXdpc2UuICBBZGQgaGVscCBvdXRwdXQgZm9yIC1mb3JjZSwgLW9sZCwgLXRyYWNlIGFuZCAtSgoJb3B0aW9ucy4KCShPUFRfRk9SQ0UsIE9QVF9PTEQsIE9QVF9UUkFDRSk6IE5ldyBtYWNyb3MuCgkob3B0aW9ucyk6IEFkZCBmb3JjZSwgb2xkLCB0cmFjZSBhbmQgSiBmaWVsZHMuCgkobWFpbik6IEhhbmRsZSAtZm9yY2UsIC1vbGQsIC10cmFjZSBhbmQgLUogb3B0aW9ucy4KCjIwMDUtMDUtMDMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzIxMjQ1OgoJKiBnamF2YWguYyAobWFpbik6IFVubGluayBvdXRwdXQgZmlsZSBvbiBlcnJvci4KCjIwMDUtMDUtMDMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25zdGFudHMuYywganZnZW5tYWluLmMsIGxhbmcub3B0LCByZXNvdXJjZS5jOiBVcGRhdGUKCWNvcHlyaWdodC4KCjIwMDUtMDQtMjkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfam5pX3N0dWIpOiBVcGRhdGVkIGZvciBjaGFuZ2UgdG8gYnVpbGRfYmxvY2suCgoyMDA1LTA0LTI5ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnY2MuZ251Lm9yZz4KCgkqIGV4cHIuYyAoZm9yY2VfZXZhbHVhdGlvbl9vcmRlcik6IERlY2xhcmUgJ3NhdmVkJyBlYXJsaWVyLgoKMjAwNS0wNC0yOCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8xOTI4NQoJKiBqYXZhLXRyZWUuaCAoc29mdF9yZXNvbHZlcG9vbGVudHJ5X25vZGUpOiBOZXcuCgkoYWxsb2NfY29uc3RhbnRfZmllbGRyZWYpOiBEZWNsYXJlLgoJKiBleHByLmMgKGV4cGFuZF9qYXZhX2ZpZWxkX29wKTogRG9uJ3QgY2FsbCBjbGFzc19pbml0IGZvcgoJYWNjZXNzZXMgdG8gc3RhdGljIGZpZWxkcyB3aXRoIGluZGlyZWN0IGRpc3BhdGNoLgoJKiBidWlsdGlucy5jIChpbml0aWFsaXplX2J1aWx0aW5zKTogQWRkICJfX2J1aWx0aW5fZXhwZWN0Ii4KCSogZGVjbC5jIChzb2Z0X3Jlc29sdmVwb29sZW50cnlfbm9kZSk6IE5ldyB2YXJpYWJsZS4KCShqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogQ3JlYXRlIGEgZGVjbCBmb3IKCSJfSnZfUmVzb2x2ZVBvb2xFbnRyeSIuCgkqIGNsYXNzLmMgKGJ1aWxkX2ZpZWxkcmVmX2NhY2hlX2VudHJ5KTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBSZXdyaXRlIGZvciBpbmRpcmVjdCBkaXNwYXRjaC4KCSogY29uc3RhbnRzLmMgKGZpbmRfbmFtZV9hbmRfdHlwZV9jb25zdGFudF90cmVlKTogTmV3IGZ1bmN0aW9uLgoJKGFsbG9jX2NvbnN0YW50X2ZpZWxkcmVmKTogTGlrZXdpc2UuCgkoYnVpbGRfY29uc3RhbnRzX2NvbnN0cnVjdG9yKTogSGFuZGxlIENPTlNUQU5UX0ZpZWxkcmVmIGFuZAoJQ09OU1RBTlRfTmFtZUFuZFR5cGUuCgoJUFIgamF2YS8yMTExNQoJKiBleHByLmMgKGZvcmNlX2V2YWx1YXRpb25fb3JkZXIpOiBDb252ZXJ0IG91dGdvaW5nIGFyZ3Mgc21hbGxlcgoJdGhhbiBpbnRlZ2VyLgoKMjAwNS0wNC0yNyAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKGxpYmdjaiBSdW50aW1lIFByb3BlcnRpZXMpOiBSZW1vdmUgb2Jzb2xldGUKCWdudS5nY2oucnVudGltZS5OYW1lRmluZGVyLiogc3lzdGVtIHByb3BlcnRpZXMuIFVwZGF0ZSBkb2N1bWVudGF0aW9uIAoJZm9yIGdudS5nY2oucnVudGltZS5OYW1lRmluZGVyLnVzZV9hZGRyMmxpbmUgYW5kIGdudS5nY2oucHJvZ25hbWUuCgoyMDA1LTA0LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnamF2YWguYywgamNmLWR1bXAuYywganYtc2Nhbi5jLCBqdmdlbm1haW4uYzogUmVwbGFjZSBjYWxscwoJdG8gYHVubG9ja19zdHJlYW0nIHdpdGggYHVubG9ja19zdGRfc3RyZWFtcycuCgoyMDA1LTA0LTI1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS9kZWNsLm8sIGphdmEvcmVzb3VyY2Uubyk6IERlcGVuZCBvbiAkKEVYUFJfSCkKCWluc3RlYWQgb2YganVzdCBleHByLmguCgoyMDA1LTA0LTI0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnamF2YWguYyAobWFpbik6IFVubG9jayB0aGUgc3RkaW8gc3RyZWFtcy4KCSogamNmLWR1bXAuYyAobWFpbik6IExpa2V3aXNlLgoJKiBqdi1zY2FuLmMgKG1haW4pOiBMaWtld2lzZS4KCSoganZnZW5tYWluLmMgKG1haW4pOiBMaWtld2lzZS4KCjIwMDUtMDQtMjMgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY2xhc3MuYywgZGVjbC5jLCBleHByLmMsIGpjZi1pby5jLCBqY2YtcGFyc2UuYywganYtc2Nhbi5jLAoJcGFyc2UueTogQWRqdXN0IHdhcm5pbmcoKSBjYWxsZXJzLgoKMjAwNS0wNC0yMSAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKE9iamVjdCBmaWVsZHMpOiBDaGFuZ2UgIkludGVnZXIiIHRvICJJbnQiIGluIGV4YW1wbGUKCWNvbnRydWN0b3IuCgoyMDA1LTA0LTIwICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aTogRml4IHR5cG9zIGFuZCBib2d1cyBleGFtcGxlLgoKMjAwNS0wNC0xOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGV4Y2VwdC5jOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA1LTA0LTE5ICBKdWxpYW4gQnJvd24gIDxqdWxpYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZmluaXNoX21ldGhvZCk6IFJldmVydCBwYXRjaCBmcm9tIDIwMDUtMDQtMTMgZm9yIGJyZWFraW5nCglpbmRpcmVjdCBkaXNwYXRjaCB3aXRoIFBJQy4KCjIwMDUtMDQtMTggIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogamF2YS1leGNlcHQuaCAoc3RydWN0IGVoX3JhbmdlLmhhbmRsZXIpOiBSZW1vdmUgdW51c2VkIGZpZWxkLgoJKGhhbmRsZV9uZXN0ZWRfcmFuZ2VzKTogUmVtb3ZlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoJKHNhbml0eV9jaGVja19leGNlcHRpb25fcmFuZ2UpOiBBZGQgZnVuY3Rpb24gZGVjbGFyYXRpb24uCQoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBSZW1vdmUgY2FsbCB0bwoJaGFuZGxlX25lc3RlZF9yYW5nZXMuCgkqIHZlcmlmeS1nbHVlLmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zX25ldyk6IENhbGwKCXNhbml0eV9jaGVja19leGNlcHRpb25fcmFuZ2UuCgkqIGV4Y2VwdC5jIChsaW5rX2hhbmRsZXIsIGVoX3JhbmdlX2ZyZWVsaXN0LCBsaW5rX2hhbmRsZXIsCgloYW5kbGVfbmVzdGVkX3Jhbmdlcyk6IFJlbW92ZS4KCShhZGRfaGFuZGxlcik6IFJld3JpdGUuCgkoc2FuaXR5X2NoZWNrX2V4Y2VwdGlvbl9yYW5nZSk6IE5ldyBmdW5jdGlvbi4KCShwcmludF9yYW5nZXMpOiBOZXcgZnVuY3Rpb24uCgoyMDA1LTA0LTEzICBKdWxpYW4gQnJvd24gIDxqdWxpYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZmluaXNoX21ldGhvZCk6IEdpdmUgbWV0aG9kcyBvbmNlLW9ubHkgbGlua2FnZS4KCjIwMDUtMDQtMTEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGxhbmcub3B0OiBSZWZlciB0byB0aGUgR0NDIGludGVybmFscyBkb2N1bWVudGF0aW9uIGluc3RlYWQgb2YgYy5vcHQuCgoyMDA1LTA0LTA3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBqYXZhLXRyZWUuaDogRG9uJ3QgdXNlIFBBUkFNUygpLgoKMjAwNS0wNC0wNyAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBjbGFzcy5jIChwdXNoX2NsYXNzKTogQnkgZGVmYXVsdCwgc3VwcHJlc3MgZGVidWcgb3V0cHV0LgoJKGZpbmlzaF9jbGFzcyk6IEVuYWJsZSBkZWJ1ZyBvdXRwdXQgZm9yIGNsYXNzZXMgd2UncmUgZW1pdHRpbmcuCgoyMDA1LTA0LTA3ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpOiBDb3JyZWN0IGdjai1kYnRvb2wgaW5zdHJ1Y3Rpb25zLgoKMjAwNS0wNC0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGdjai50ZXhpOiBGaXggYSB0eXBvLgoJKiBsYW5nLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDUtMDQtMDEgIFRob21hcyBGaXR6c2ltbW9ucyAgPGZpdHpzaW1AcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpIChJbnZva2luZyBnaWopOiBBZGQgZGVzY3JpcHRpb25zIG9mIG5ldyAtWCBvcHRpb25zLgoJTWVudGlvbiByZWNvZ25pemVkLWFuZC1pZ25vcmVkIGNvbXBhdGliaWxpdHkgb3B0aW9ucy4KCShNZW1vcnkgYWxsb2NhdGlvbik6IEFkZCBkZXNjcmlwdGlvbnMgb2YgSnZNYWxsb2MsIEp2UmVhbGxvYyBhbmQKCUp2RnJlZS4KCShBYm91dCBDTkkpOiBBZGQgTWVtb3J5IGFsbG9jYXRpb24gc2VjdGlvbi4KCjIwMDUtMDQtMDEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEZpeCB0eXBlcyBvZgoJX0p2X01vbml0b3JFbnRlciwgX0p2X01vbml0b3JFeGl0LCBfSnZfQWxsb2NPYmplY3QsCglfSnZfQWxsb2NPYmplY3ROb0ZpbmFsaXplciwgX0p2X1Rocm93LCBfSnZfTmV3UHJpbUFycmF5LAoJX0p2X0pOSV9Qb3BTeXN0ZW1GcmFtZSwgX0p2X2RpdkksIF9Kdl9yZW1JLCBfSnZfZGl2SiwgX0p2X3JlbUouCgoyMDA1LTAzLTMxICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBNYWtlLWxhbmcuaW4gKGNsYXNzLm8sIGRlY2wubyk6IERlcGVuZCBvbiBjZ3JhcGguaC4KCSogY2xhc3MuYzogSW5jbHVkZSBjZ3JhcGguaAoJKG1ha2VfbG9jYWxfZnVuY3RvaW5fYWxpYXMpOiBNYXJrIGFzbGlhcyBhcyBuZWVkZWQuCgkqIHJlc291cmNlLmM6IEluY2x1ZGUgY2dyYXBoLmgKCShjb21waWxlX3Jlc291cmNlX2RhdGEpOiBHbyB2aWEgY2dyYXBoIGludGVyZmFjZS4KCjIwMDUtMDMtMzAgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AYWlycy5jb20+CgoJKiBwYXJzZS55IChtYXliZV95YW5rX2NsaW5pdCk6IERvbid0IGNyYXNoIGlmIGJib2R5IGlzIE5VTEwuCgoyMDA1LTAzLTMwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqY2YtZHVtcC5jIChIQU5ETEVfSU5ORVJDTEFTU0VTX0FUVFJJQlVURSk6IEhhbmRsZSBjYXNlcyB3aGVyZQoJaW5uZXJfY2xhc3NfaW5mb19pbmRleD09MCBvciBvdXRlcl9jbGFzc19pbmZvX2luZGV4PT0wLgoKMjAwNS0wMy0yOSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKGxpYmdjaiBSdW50aW1lIFByb3BlcnRpZXMpOiBEb2N1bWVudAoJZ251Lmdjai5ydW50aW1lLmVuZG9yc2VkLmRpcnMuCgoyMDA1LTAzLTI0ICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpIChJbnZva2luZyBnY2otZGJ0b29sKTogRG9jdW1lbnQgbmV3IExJQkRJUiBvcHRpb24gdG8KCSdnY2otZGJ0b29sIC1wJy4KCjIwMDUtMDMtMjMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoR0NKX0NVUlJFTlRfQkNfQUJJX1ZFUlNJT04pOiBOZXcgZGVmaW5lLgoJKHBhcnNlX3ZlcnNpb24pOiBVc2UgaXQuCgoyMDA1LTAzLTIzICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxhbmcuYyAoTEFOR19IT09LU19UUlVUSFZBTFVFX0NPTlZFUlNJT04pOiBSZW1vdmUuCgoyMDA1LTAzLTE4ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzIwNTIyCgkqIGRlY2wuYyAodXBkYXRlX2FsaWFzZXMpOiBEb24ndCB1cGRhdGUgdmFyaWFibGVzIHRoYXQgYXJlIGFib3V0Cgl0byBkaWUuCgkobWF5YmVfcG9wbGV2ZWxzKTogQWRkIGNvbW1lbnQuCgoyMDA1LTAzLTE3ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8yMDUwMgoJKiBqY2YtcGFyc2UuYyAoZHVwbGljYXRlX2NsYXNzX3dhcm5pbmcpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9wYXJzZV9maWxlKTogQ2FsbCBkdXBsaWNhdGVfY2xhc3Nfd2FybmluZyBpZiAKCUNMQVNTX0ZST01fQ1VSUkVOVExZX0NPTVBJTEVEX1AgaXMgYWxyZWFkeSBzZXQuCgkocGFyc2VfemlwX2ZpbGVfZW50cmllcyk6IExpa2V3aXNlLiBBbHNvIHNldAoJQ0xBU1NfRlJPTV9DVVJSRU5UTFlfQ09NUElMRURfUC4KCjIwMDUtMDMtMTYgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogZXhwci5jIChleHBhbmRfamF2YV9hcnJheWxvYWQpOiBEb24ndCBnZW5lcmF0ZSBhCglOdWxsUG9pbnRlckV4Y2VwdGlvbiBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0aGUgbm9kZS4KCShidWlsZF9qYXZhX2FycmF5X2xlbmd0aF9hY2Nlc3MpOiBMaWtld2lzZS4KCjIwMDUtMDMtMTUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKFRFWElfSkFWQV9GSUxFUyk6IEFkZCBnY2MtdmVycy50ZXhpLgoKMjAwNS0wMy0xMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKEludm9raW5nIGdjai1kYnRvb2wpOiBEb2N1bWVudCAnZ2NqLWRidG9vbCAtcCcuCgkobGliZ2NqIFJ1bnRpbWUgUHJvcGVydGllcyk6IERvY3VtZW50IHRoZSBkZWZhdWx0IC5kYi4KCjIwMDUtMDMtMTAgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCVBSIGphdmEvMjAzMTIKCSogcGFyc2UueSAoY2hlY2tzX3Rocm93c19jbGF1c2VzKTogQ2hlY2sgZXhjZXB0aW9ucyBsaXN0IGV2ZW4gd2hlbgoJdGhlIGJhc2UgY2xhc3MgZG9lcyBub3QgY29tZSBmcm9tIGEgc291cmNlIGZpbGUgYmVpbmcgY29tcGlsZWQuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlICd3ZmwnLgoKMjAwNS0wMy0wOSAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJUFIgamF2YS8yMDMzOAoJKiBkZWNsLmMgKGZpbmlzaF9tZXRob2QpOiBFbWl0IF9Kdl9Jbml0Q2xhc3MgZm9yIHByaXZhdGUgc3RhdGljCgltZXRob2RzIGluc2lkZSBpbm5lciBjbGFzc2VzIGFzIHdlbGwuCgoyMDA1LTAzLTA4ICBKdWxpYW4gQnJvd24gIDxqdWxpYW5AY29kZXNvdXJjZXJ5LmNvbT4KCSogUmV2ZXJ0IHBhdGNoIGZyb20gMjAwNS0wMy0wOCBmb3IgY2F1c2luZyBib290c3RyYXAgZmFpbHVyZSBvbgoJcHBjLWRhcndpbi4KCjIwMDUtMDMtMDggIEp1bGlhbiBCcm93biAgPGp1bGlhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChmaW5pc2hfbWV0aG9kKTogR2l2ZSBtZXRob2RzIG9uY2Utb25seSBsaW5rYWdlLgoKMjAwNS0wMy0wNyAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJKiBsYW5nLmMgKGZsYWdfbmV3X3ZlcmlmaWVyKTogRW5hYmxlIGJ5IGRlZmF1bHQsIHJlZ2FyZGxlc3Mgb2YgQUJJLgoKMjAwNS0wMy0wNyAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogdmVyaWZ5LWdsdWUuYyAodmZ5X2lzX2Fzc2lnbmFibGVfZnJvbSk6IFBlcmZvcm0gc3RhdGljIGNoZWNrIHVzaW5nCgljYW5fd2lkZW5fcmVmZXJlbmNlX3RvIGlmIHRoZSBDKysgQUJJIGlzIGluIHVzZS4KCSh2ZnlfZ2V0X2ludGVyZmFjZV9jb3VudCwgdmZ5X2dldF9pbnRlcmZhY2UpOiBSZW1vdmUgdW51c2VkIGZ1bmN0aW9ucy4KCSogdmVyaWZ5LWltcGwuYyAoZGVidWdfcHJpbnQsIG1ha2VfdXRmOF9jb25zdCwgaW5pdF90eXBlLCBjb3B5X3R5cGUsCgl0eXBlX2lzcmVzb2x2ZWQsIGluaXRfc3RhdGUsIHNldF9wYywgc3RhdGVfZ2V0X3BjLAoJX0p2X0J5dGVjb2RlVmVyaWZpZXIpOiBDbGVhbiB1cCB1bnVzZWQgYW5kIGRpc2FibGVkIGZ1bmN0aW9ucy4KCSh2ZXJpZnlfZmFpbCk6IFJlcG9ydCB0aGUgY3VycmVudCBQQyBmcm9tIHRoZSB2ZXJpZmllciBjb250ZXh0LgoJKGZyZWVfc3RhdGUpOiBSZW1vdmUgI2lmIDAgYmxvY2sgdG8gZW5hYmxlIHRoaXMgZnVuY3Rpb24uCgkoZnJlZV92ZXJpZmllcl9jb250ZXh0KTogQ2FsbCBmcmVlX3N0YXRlIG9uIHN0YXRlX2xpc3QgaXRlcmF0b3IKCXZhbHVlcyBiZWZvcmUgZnJlZWluZyB0aGVtLgoJKiBleHByLmMgKHBvcF90eXBlXzApOiBQb3AgY29ycmVjdCB0eXBlIGZvciBlcnJvciBtZXNzYWdlIHdoZW4gc3RhY2sKCWNvbnRhaW5zIGEgbXVsdGktd29yZCB0eXBlLgoKMjAwNS0wMy0wNyAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2phdmFfYXJyYXlfbGVuZ3RoX2FjY2Vzcyk6IFJlbW92ZSAhZmxhZ19uZXdfdmVyaWZpZXIKCWZvciBrbm93biBOVUxMIGFycmF5IGxlbmd0aCBhY2Nlc3MuCgoyMDA1LTAzLTA3ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAoSW52b2tpbmcgZ2NqLWRidG9vbCk6IERvY3VtZW50ICctZicuCgoyMDA1LTAzLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogamNmLWR1bXAuYywgamNmLWlvLmMsIGpjZi1yZWFkZXIuYywgbGFuZy5jLCBwYXJzZS5oLAoJdHlwZWNrLmM6IFVwZGF0ZSBjb3B5cmlnaHQuCgoyMDA1LTAzLTA2ICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCglSZW1vdmUgeHJlZiBjb2RlLgoJKiB4cmVmLmMsIHhyZWYuaDogUmVtb3ZlIGZpbGUuCgkqIE1ha2UtbGFuZy5pbiAoamF2YS94cmVmLm8pOiBSZW1vdmUuCgkqIGphdmEtdHJlZS5oIChmbGFnX2VtaXRfeHJlZiwgZG9fbm90X2ZvbGQpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkqIGxhbmcuYyAoZmxhZ19lbWl0X3hyZWYpOiBSZW1vdmUgZGVmaW5pdGlvbi4KCSogcGFyc2UuaCAoREVDTF9FTkRfU09VUkNFX0xJTkUsIERFQ0xfSU5IRVJJVEVEX1NPVVJDRV9MSU5FKTogUmVtb3ZlLgoJKiB0eXBlY2suYyAoY29udmVydCk6IFJlbW92ZSB1c2Ugb2YgZG9fbm90X2ZvbGQuCgkqIHBhcnNlLnkgKGRvX25vdF9mb2xkKTogUmVtb3ZlIGRlZmluaXRpb24uCgkocGFyc2VyIGdyYW1tYXIpOiBSZW1vdmUgeHJlZiBjb2RlLgoJKG1heWJlX2NyZWF0ZV9jbGFzc19pbnRlcmZhY2VfZGVjbCwgY3JlYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkocmVnaXN0ZXJfZmllbGRzLCBtZXRob2RfaGVhZGVyLCBmaW5pc2hfbWV0aG9kX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgkoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMsIHNvdXJjZV9lbmRfamF2YV9tZXRob2QpOiBMaWtld2lzZS4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9jbGFzc2VzKTogRG8gbm90IHNldCBkb19ub3RfZm9sZC4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBSZW1vdmUgeHJlZiBjb2RlLgoJKGphdmFfZXhwYW5kX2NsYXNzZXMsIHJlc29sdmVfZmllbGRfYWNjZXNzLCBwYXRjaF9pbnZva2UpOiBMaWtld2lzZS4KCShqYXZhX2NvbXBsZXRlX3RyZWUsIGphdmFfY29tcGxldGVfbGhzLCBwYXRjaF9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgkocGF0Y2hfYmlub3AsIGJ1aWxkX3N0cmluZ19jb25jYXRlbmF0aW9uLCBwYXRjaF9hcnJheV9yZWYpOiBMaWtld2lzZS4KCShwYXRjaF9zeW5jaHJvbml6ZWRfc3RhdGVtZW50LCBwYXRjaF90aHJvd19zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShtYXliZV9idWlsZF9jbGFzc19pbml0X2Zvcl9maWVsZCk6IExpa2V3aXNlLgoKMjAwNS0wMy0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGV4cHIuYyAoYnVpbGRfZXhwcl93ZmwsIGV4cHJfYWRkX2xvY2F0aW9uKTogVXNlIFRZUEVfUAoJaW5zdGVhZCBvZiBJU19OT05fVFlQRV9DT0RFX0NMQVNTLgoKMjAwNS0wMy0wNCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8xODM2MgoJKiBjbGFzcy5jIChzZXRfbWV0aG9kX2luZGV4KTogRG9uJ3Qgc2V0IG1ldGhvZF9pbmRleCBpZiBpdCBpcwoJTlVMTF9UUkVFLgoJKGxheW91dF9jbGFzc19tZXRob2QpOiBEb24ndCBjb21wbGFpbiBhYm91dCAibm9uLXN0YXRpYyBtZXRob2QgZm9vCglvdmVycmlkZXMgc3RhdGljIG1ldGhvZCIgaW4gdGhlIGNhc2Ugb2YgaW5kaXJlY3QgZGlzcGF0Y2guCgoyMDA1LTAzLTAyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBqY2YtaW8uYyAoY2FjaGluZ19zdGF0KTogVXNlIF9fZXh0ZW5zaW9uX18gdG8gYXZvaWQgcGVkYW50aWMKCXdhcm5pbmcuCgkqIE1ha2UtbGFuZy5pbjogRG9uJ3QgZWxpZGUgd2FybmluZ3MgaW4gamNmLWlvLmMuCgoyMDA1LTAzLTAxICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCglQUiBqYXZhLzg2MDgKCSogY2hlY2staW5pdC5jICh3ZmwpOiBSZW1vdmUgc3RhdGljLgoJKGZpbmFsX2Fzc2lnbl9lcnJvciwgY2hlY2tfaW5pdCk6IFJlcGxhY2UgY2FsbHMgdG8gcGFyc2VfZXJyb3JfY29udGV4dAoJYnkgcGxhaW4gZXJyb3IuCgkoY2hlY2tfaW5pdCk6IFNhdmUsIHNldCwgYW5kIHJlc3RvcmUgaW5wdXRfbG9jYXRpb24gZm9yIGVhY2ggZXhwLgoKMjAwNS0wMy0wMSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqY2YtcmVhZGVyLmMgKGdldF9hdHRyaWJ1dGUpOiBIYW5kbGUgU291cmNlRGVidWdFeHRlbnNpb24gKEpTUiA0NSkKCWlmIEhBTkRMRV9TT1VSQ0VERUJVR0VYVEVOU0lPTl9BVFRSSUJVVEUgaXMgZGVmaW5lZC4KCSogamNmLWR1bXAuYyAoSEFORExFX1NPVVJDRURFQlVHRVhURU5TSU9OX0FUVFJJQlVURSk6IFByaW50IGNvbnRlbnRzLgoKMjAwNS0wMy0wMSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqYXZhLXRyZWUuaCAoSURFTlRJRklFUl9IQU5ETEVDTEFTU19WQUxVRSk6IFJlbW92ZSBhbmNpZW50IG1hY3JvLgoKMjAwNS0wMi0yMyAgVGhvbWFzIEZpdHpzaW1tb25zICA8Zml0enNpbUByZWRoYXQuY29tPgoKCVBSIGxpYmdjai8xNjkyMwoJKiBnY2oudGV4aSAoSW52b2NhdGlvbik6IEFkZCBkZXNjcmlwdGlvbnMgb2YgSnZWTUluaXRBcmdzIGFuZAoJSnZWTU9wdGlvbi4KCjIwMDUtMDItMjIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzIwMDU2OgoJKiB2ZXJpZnktaW1wbC5jIChFSVRIRVIpOiBOZXcgZGVmaW5lLgoJKHR5cGVzX2NvbXBhdGlibGUpOiBIYW5kbGUgaXQuCgkoY2hlY2tfZmllbGRfY29uc3RhbnQpOiBVc2UgaXQuCgoyMDA1LTAyLTE4ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8yMDA1NjoKCSogdmVyaWZ5LWltcGwuYyAodHlwZXNfZXF1YWwpOiBGaXhlZCB0ZXN0LgoKCVBSIGphdmEvMjAwNTY6CgkqIHZlcmlmeS1nbHVlLmMgKHZmeV9jbGFzc19oYXNfZmllbGQpOiBOZXcgZnVuY3Rpb24uCgkqIHZlcmlmeS5oICh2ZnlfY2xhc3NfaGFzX2ZpZWxkKTogRGVjbGFyZS4KCSogdmVyaWZ5LWltcGwuYyAoY2hlY2tfZmllbGRfY29uc3RhbnQpOiBBZGRlZCAncHV0ZmllbGQnCglhcmd1bWVudC4KCSh2ZXJpZnlfaW5zdHJ1Y3Rpb25zXzApOiBVcGRhdGVkLgoJKHR5cGVzX2VxdWFsKTogTmV3IGZ1bmN0aW9uLgoKMjAwNS0wMi0xNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTk5MjE6CgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucykgPENBTExfRVhQUj46IE5vdGUgdGhlCglzdGFjayBlZmZlY3Qgb2YgbXVsdGlhbmV3YXJyYXkuCgoyMDA1LTAyLTE0ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE5OTA3CgkqIGV4cHIuYyAoZXhwYW5kX2J5dGVfY29kZSk6IENhbGwgcHJvbW90ZV9hcmd1bWVudHMoKS4KCShwcm9tb3RlX2FyZ3VtZW50cyk6IE5ldyBmdW5jdGlvbi4KCSogZGVjbC5jIChjaGVja19sb2NhbF91bm5hbWVkX3ZhcmlhYmxlKTogUmVtb3ZlIHNwZWNpYWwgY2FzZSBmb3IKCW5ldyB2ZXJpZmllci4KCShmaW5kX2xvY2FsX3ZhcmlhYmxlKTogUHJvbW90ZSBhbGwgYm9vbGVhbiB0eXBlcyB0byBpbnQKCXdoZW4gc2VhcmNoaW5nIGZvciBsb2NhbCB2YXJpYWJsZSBkZWNscy4KCjIwMDUtMDItMTIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBidWlsdGlucy5jLCBqYXZhLWV4Y2VwdC5oLCBqY2YtcGFyc2UuYywganYtc2Nhbi5jLCBsZXguYywKCXBhcnNlLXNjYW4ueTogVXBkYXRlIGNvcHlyaWdodC4KCjIwMDUtMDItMTEgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCVBSIGphdmEvMTU1NDMKCSogcGFyc2Utc2Nhbi55IChpbnB1dF9sb2NhdGlvbik6IFJlbW92ZSB2YXJpYWJsZS4KCShtYWluX2lucHV0X2ZpbGVuYW1lKTogTmV3IC0gcmVwbGFjZXMgaW5wdXRfZmlsZW5hbWUsIHdoaWNoIGlzbid0CglzZXR0YWJsZSBpZiBVU0VfTUFQUEVEX0xPQ0FUSU9OLgoJKiBsZXguYyAoamF2YV9pbml0X2xleCk6IFdyYXAgc29tZSBtb3JlIHBsYWNlcyBpbiAjaWZuZGVmIEpDMS1MSVRFLAoJc28gd2UgZG9uJ3QgcmVmZXJlbmNlIGlucHV0X2xvY2F0aW9uIG9yIHdmbF9vcGVyYXRvciBpbiB0aGF0IGNhc2UuCgkqIGp2LXNjYW4uYyAoZXhwYW5kX2xvY2F0aW9uKTogUmVtb3ZlIC0gbm8gbG9uZ2VyIHVzZWQuCgkobWFpbik6IFNldCBtYWluX2lucHV0X2ZpbGVuYW1lIHJhdGhlciB0aGFuIGlucHV0X2ZpbGVuYW1lLgoKMjAwNS0wMi0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGluaXRpYWxpemVfYnVpbHRpbnMpOiBDYWxsIGJ1aWxkX2NvbW1vbl9idWlsdGluX25vZGVzLgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIGNvbnN0X3B0cl90eXBlX25vZGUuCgoyMDA1LTAyLTA4ICBNYXJjaW4gRGFsZWNraSAgPG1hcnRpbkBkYWxlY2tpLmRlPgoKCSogZXhwci5jIChhZGRfdHlwZV9hc3NlcnRpb24pOiBVc2UgdGhlIHByb3BlciBlbnVtZXJhdGlvbiB0eXBlLAoJc2luY2UgdGhpcyBpcyB3aGF0IGh0YWJfZmluZF9zbG90KCkgaXMgZXhwZWN0aW5nLgoKMjAwNS0wMi0wNiAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnY2oudGV4aTogVXBkYXRlIGNvcHlyaWdodCBkYXRlcy4KCjIwMDUtMDItMDIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpIChsaWJnY2ogUnVudGltZSBQcm9wZXJ0aWVzKTogRGVmYXVsdCBsaWJyYXJ5X2NvbnRyb2wKCXRvICdjYWNoZScuCgoyMDA1LTAyLTAyICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCglQUiBqYXZhLzE1NTQzCgkqIHBhcnNlLXNjYW4ueSAoZm9ybWFsX3BhcmFtZXRlcik6IFVzZSAkMiAodHlwZSkgaW5zdGVhZCBvZiAkJAoJKG1vZGlmaWVycykgd2hlbiBzcXVhcmUgYnJhY2tldHMgYXJlIHByZXNlbnQgaW4gYSBkZWNsYXJhdGlvbiBmb3IKCWEgZmluYWwgcGFyYW10ZXIuCgkqIGp2LXNjYW4uYyAobWFpbik6IFNldCBpbnB1dF9maWxlbmFtZSBhbmQgaW5wdXRfbGluZS4KCjIwMDUtMDItMDEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE5NzQyOgoJKiBnamF2YWguYyAoZ2V0X2ZpZWxkX25hbWUpOiBEb24ndCBvdmVycmlkZSBuYW1lIGZvciBKTkkgaGVhZGVyLgoKMjAwNS0wMi0wMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBJbXBsZW1lbnQgUlNISUZUX0VYUFIKCW9mIHVuc2lnbmVkIHR5cGVzIHVzaW5nIGl1c2hyIGFuZCBsdXNociBKVk0gYnl0ZWNvZGVzLgoKMjAwNS0wMi0wMSAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJUFIgamF2YS8xOTczOAoJKiBnamF2YWguYyAoam5pX3ByaW50X2Zsb2F0KTogRG8gbm90IGVtaXQgZmxvYXRpbmctcG9pbnQKCWluaXRpYWxpc2VyIGZvciBhIHN0YXRpYyBmaW5hbCBmaWVsZC4KCShqbmlfcHJpbnRfZG91YmxlKTogTGlrZXdpc2UuCgoyMDA1LTAyLTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVJldmVydDoKCTIwMDUtMDEtMzEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgkqIGdqYXZhaC5jIChwcmludF9maWVsZF9pbmZvKTogTWFyayBzdGF0aWMgZGF0YSBtZW1iZXJzIG9mCglmbG9hdGluZy1wb2ludCB0eXBlIHdpdGggIl9fZXh0ZW5zaW9uX18iLgoKMjAwNS0wMS0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdqYXZhaC5jIChwcmludF9maWVsZF9pbmZvKTogTWFyayBzdGF0aWMgZGF0YSBtZW1iZXJzIG9mCglmbG9hdGluZy1wb2ludCB0eXBlIHdpdGggIl9fZXh0ZW5zaW9uX18iLgoKMjAwNS0wMi0wMSAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJUFIgamF2YS85MTU3CgkqIHBhcnNlLnkgKGJ1aWxkX3N0cmluZ19jb25jYXRlbmF0aW9uKTogUmVtb3ZlIHJlZHVuZGFudCBpZi4KCShwYXRjaF9jb25kaXRpb25hbF9leHByKTogQXR0ZW1wdCB0byBwYXRjaF9zdHJpbmcoKSB0aGUgY29uZGl0aW9uCglvZiBhID86IGFzIHdlbGwsIGluIGFkZGl0aW9uIHRvIGl0cyBvdGhlciBvcGVyYW5kcy4KCjIwMDUtMDEtMjUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS9qYXZhLXRyZWUtaW5saW5lLm8pOiBSZW1vdmVkLgoKMjAwNS0wMS0yNSAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJUFIgamF2YS8xOTA3MAoJKiBwYXJzZS55IChwYXRjaF9iaW5vcCk6IEFsbG93IGNvbXBhcmlzb25zIGFnYWluc3QgTlVMTCBvbmx5CglpZiB0aGUgb3RoZXIgb3BlcmFuZCBpcyBvZiBhIHJlZmVyZW5jZSB0eXBlLgoKMjAwNS0wMS0yNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamF2YS10cmVlLmggKGdjal9hYmlfdmVyc2lvbik6IERlY2xhcmUuCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6IFB1c2ggZ2NqX2FiaV92ZXJzaW9uIGludG8gIm5leHQiCglmaWVsZC4gIFJlbmFtZWQgZmllbGQuCgkqIGRlY2wuYyAoZ2NqX2FiaV92ZXJzaW9uKTogTmV3IGdsb2JhbC4KCShwYXJzZV92ZXJzaW9uKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDYWxsIGl0LiAgUmVuYW1lZCAnbmV4dCcgZmllbGQuCglJbmNsdWRlIHZlcnNpb24uaC4KCShHQ0pfQklOQVJZQ09NUEFUX0FERElUSU9OKTogTmV3IGRlZmluZS4KCjIwMDUtMDEtMjQgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIGphdmEvMTkyOTUKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogQ29udmVyc2lvbnMgYmV0d2VlbgoJaW50ZWdlciB0eXBlcyBvZiB0aGUgc2FtZSBwcmVjaXNpb24gc2hvdWxkbid0IGdlbmVyYXRlIHdpZGVuaW5nCglvciBuYXJyb3dpbmcgY29udmVyc2lvbiBieXRlY29kZXMuCgoyMDA1LTAxLTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogamF2YS1leGNlcHQuaCwgamF2YS10cmVlLmg6IFJlbW92ZSB1bnVzZWQgcHJvdG90eXBlcy4KCjIwMDUtMDEtMjAgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdjYy5nbnUub3JnPgoKCVBSIGphdmEvMTgwOTE6CgkqIGpjZi13cml0ZS5jIChwZXJmb3JtX3JlbG9jYXRpb25zKTogRG9uJ3QgY2FsbCBtZW1jcHkgaWYgc291cmNlCglhbmQgZGVzdGluYXRpb24gYXJlIHRoZSBzYW1lLgoKMjAwNS0wMS0xNyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogdmVyaWZ5LWltcGwuYyAoZ2V0X3Nob3J0KTogU2lnbiBleHRlbmQuCgkoZ2V0X2ludCk6IExpa2V3aXNlLgoKMjAwNS0wMS0xMiAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2puaV9zdHViKTogUmVwbGFjZSBtaXN0YWtlbiB1c2Ugb2YgVFlQRV9TSVpFX1VOSVQKCXdpdGggVFlQRV9TSVpFLgoKMjAwNS0wMS0xMCAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJKiB2ZXJpZnkuYzogUmV2ZXJ0IHRvIHRoZSB2ZXJzaW9uIGJlZm9yZSB0aGUgQkMtQUJJIG1lcmdlLgoKMjAwNS0wMS0xMCAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJUFIgamF2YS8xOTI3NwoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBUYWtlIGNhcmUgb2YgcmVmZXJlbmNlcyB0aGF0IGRvIG5vdAoJaGF2ZSBhbiBleHBsaWNpdCBmaW5hbCB2YXJpYWJsZSBkZWNsYXJhdGlvbiAoZS5nLiBhcnJheSBsZW5ndGgKCWFjY2VzcykgZm9yIHByZS9wb3N0IGluL2RlLWNyZW1lbnQgb3BlcmF0b3JzLgoKMjAwNS0wMS0wOCAgTWFyayBXaWVsYWFyZCAgPG1hcmtAa2xvbXAub3JnPgoKCSogcGFyc2UueSAocHJvY2Vzc19pbXBvcnRzKTogQWxsb2NhdGUgKGFuZCBmcmVlKSBvcmlnaW5hbF9uYW1lIG9ubHkKCXdoZW4gbm90IGFscmVhZHkgZGVmaW5lZC4KCSogamNmLXBhcnNlLmMgKHJlYWRfY2xhc3MpOiBGcmVlIHJlc3VsdHMgb2YgZmluZF9jbGFzcygpIGFuZAoJbHJlYWxwYXRoKCkuCgkoamF2YV9wYXJzZV9maWxlKTogS2VlcCBwb2ludGVyIHRvIGhlYWQgb2YgZmlsZV9saXN0IGFuZCBmcmVlIHdoZW4KCWRvbmUuIEZyZWUgcmVzdWx0IG9mIGxyZWFscGF0aCgpLgoKMjAwNS0wMS0wNSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKFN0YW5kYXJkIFByb3BlcnRpZXMpOiBqYXZhLmV4dC5kaXJzIGlzIG5vdyB1c2VkLgoKMjAwNC0xMi0yMCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiB0eXBlY2suYzogVXNlIGZvbGRfY29udmVydCBmb3IgaW50cyBhbmQgYm9vbGVhbnMuCgoyMDA0LTEyLTE3ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE4OTMxCgkqIHR5cGVjay5jIChjb252ZXJ0KTogVXNlIGEgQ09OVkVSVF9FWFBSIHdoZW4gY29udmVydGluZyB0bwoJQk9PTEVBTl9UWVBFIG9yIENIQVJfVFlQRS4KCShjb252ZXJ0X3RvX2Jvb2xlYW4sIGNvbnZlcnRfdG9fY2hhcikgOiBSZW1vdmUuCgkqIGNvbnZlcnQuaCAoY29udmVydF90b19ib29sZWFuLCBjb252ZXJ0X3RvX2NoYXIpIDogUmVtb3ZlLgoJKiBleHByLmMgKGV4cGFuZF9sb2FkX2ludGVybmFsKTogRG8gdHlwZSBjb252ZXJzaW9uIGlmIHR5cGUgaXMgbm90CglhcyByZXF1aXJlZC4KCjIwMDQtMTItMTMgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgdGFyZ2V0LzE4NDU5CgkqIGNsYXNzLmMgKGVtaXRfcmVnaXN0ZXJfY2xhc3Nlcyk6IFVzZSBUQVJHRVRfVVNFX0pDUl9TRUNUSU9OLgoJVXBkYXRlIGNvbW1lbnQuCgoyMDA0LTEyLTA3ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE4ODExOgoJKiBqY2YtcGFyc2UuYyAobG9hZF9jbGFzcyk6IFJlbW92ZSBzYW5pdHkgdGVzdCBmb3IgbWlzc2luZyBpbm5lcgoJY2xhc3MgZmlsZS4KCjIwMDQtMTItMDYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoSkFWQV9NQU5GSUxFUyk6IEFkZGVkIGdjai1kYnRvb2wuCgkoamF2YS51bmluc3RhbGwpOiBMaWtld2lzZS4KCShqYXZhLm1haW50YWluZXItY2xlYW4pOiBMaWtld2lzZS4KCSguSU5URVJNRURJQVRFKTogTGlrZXdpc2UuCgkoamF2YS5pbnN0YWxsLW1hbik6IExpa2V3aXNlLgoJKGdjai1kYnRvb2wucG9kKTogTmV3IHRhcmdldC4KCSogZ2NqLnRleGkgKENvZGUgR2VuZXJhdGlvbik6IERvY3VtZW50IC1maW5kaXJlY3QtZGlzcGF0Y2guCgkobGliZ2NqIFJ1bnRpbWUgUHJvcGVydGllcyk6IERvY3VtZW50CglnbnUuZ2NqLnByZWNvbXBpbGVkLmRiLnBhdGguCgkoVG9wKTogTGluayB0byAiSW52b2tpbmcgZ2NqLWRidG9vbCIuCgoyMDA0LTEyLTA2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNDg1MzoKCSogamF2YS10cmVlLmggKGV4dHJhY3RfZmllbGRfZGVjbCk6IERlY2xhcmUuCgkqIHBhcnNlLnkgKGV4dHJhY3RfZmllbGRfZGVjbCk6IFJlbmFtZWQgZnJvbQoJc3RyaXBfb3V0X3N0YXRpY19maWVsZF9hY2Nlc3NfZGVjbC4gIE5vIGxvbmdlciBzdGF0aWMuCgkqIGNoZWNrLWluaXQuYyAoZ2V0X3ZhcmlhYmxlX2RlY2wpOiBVbndyYXAgQ09NUE9VTkRfRVhQUnMuCgoyMDA0LTEyLTAzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBsYW5nLmMgKGZsYWdfbmV3X3ZlcmlmaWVyKTogRGVmaW5lLgoJKGphdmFfcG9zdF9vcHRpb25zKTogU2V0IGZsYWdfbmV3X3ZlcmlmaWVyIGlmIGluZGlyZWN0IGRpc3BhdGNoCglpcyBiZWluZyB1c2VkLgoJKiBsYW5nLm9wdCAoZm5ldy12ZXJpZmllcik6IFJlbW92ZWQuCgoyMDA0LTEyLTAzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgYm9vdHN0cmFwLzE0NjE0OgoJKiBNYWtlLWxhbmcuaW4gKGphdmEuaW5zdGFsbC1jb21tb24pOiBPbmx5IGluc3RhbGwgdHJhbnNmb3JtZWQKCWdjamggaWYgZ2NqLWNyb3NzIGV4aXN0cy4KCjIwMDQtMTItMDMgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTg4MTIKCSogZXhjZXB0LmMgKGxpbmtfaGFuZGxlcik6IFBhdGNoICdvdXRlcicgZmllbGQgb2Ygc2libGluZ3Mgb2YgdGhlCglyYW5nZSB3ZSdyZSBkZW1vdGluZy4KCjIwMDQtMTItMDMgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTg2OTcKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzX21ldGhvZCk6IERvbid0IGZhaWwgdG8gb3ZlcnJpZGUgYSBtZXRob2QKCXNpbXBseSBiZWNhdXNlIGl0IGhhcyBERUNMX0FSVElGSUNJQUwgc2V0LgoKMjAwNC0xMi0wMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTY2NzU6CgkqIHBhcnNlLnkgKGNyYWZ0X2NvbnN0cnVjdG9yKTogU3BlY2lhbCBjYXNlIG51bGxfcG9pbnRlcl9ub2RlLgoKMjAwNC0xMi0wMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTg3NDE6CgkqIGphdmEtZ2ltcGxpZnkuYyAoamF2YV9naW1wbGlmeV9leHByKTogRG9uJ3QgY2FsbAoJU0VUX0VYUFJfTE9DQVRJT04gdW5sZXNzIHdyYXBwZWQgdHJlZSBpcyBhbiBleHByZXNzaW9uLgoKMjAwNC0xMS0yNyAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqY2YtcGFyc2UuYyAoc2V0X3NvdXJjZV9maWxlbmFtZSk6ICBJbXByb3ZlbWVudCB0byBBbmRyZXcncyBmaXg6CglGaXggZmVuY2Vwb3N0IGVycm9yIGluICdpJywgd2hpY2ggZ290IGV4ZWN1dGVkIG9uZSB0b28gbWFueSB0aW1lcy4KCUFsc28sIGZvbGQgbWVtY3B5IGludG8gZXhwbGljaXQgbG9vcCwgYXMgb3JpZ2luYWxseSBpbnRlbmRlZC4KCUFsc28sIGZyZWUgdGVtcG9yYXJ5ICdidWYnIHdoaWNoIG90aGVyd2lzZSBsZWFrcy4KCjIwMDQtMTEtMjcgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogZXhwci5jIChidWlsZF9leHByX3dmbCk6IE9ubHkgZGVjbGFyZSBsYXN0X2ZpbGUgYW5kIGxhc3RfZmlsZW5vZGUKCWxvY2FsIHN0YXRpYyB2YXJpYWJsZXMgaWYgbm90IFVTRV9NQVBQRURfTE9DQVRJT04uCgoyMDA0LTExLTI3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY2xhc3MuYywgZGVjbC5jLCBleHByLmM6IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwNC0xMS0yNiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgamF2YS8xODMwNQoJKiBkZWNsLmMgKGVuZF9qYXZhX21ldGhvZCk6IENhbGwKCWF0dGFjaF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb25fZmxhZ3Mgb24gYWxsIHRoZSBpbml0X2RlY2xzLgoJKiBwYXJzZS55IChhdHRhY2hfaW5pdF90ZXN0X2luaXRpYWxpemF0aW9uX2ZsYWdzKTogTW92ZSB0byAuLi4KCSogZXhwci5jIChhdHRhY2hfaW5pdF90ZXN0X2luaXRpYWxpemF0aW9uX2ZsYWdzKTogaGVyZSBhbmQKCXN1cHBvcnQgQklORF9FWFBSIGFsc28uCgkqIGphdmEtdHJlZS5oIChhdHRhY2hfaW5pdF90ZXN0X2luaXRpYWxpemF0aW9uX2ZsYWdzKTogUHJvdG90eXBlLgoJKiBqY2YtcGFyc2UuYyAocGFyc2VfY2xhc3NfZmlsZSk6IERvbid0IGRpc2FibGUgY2xhc3MgaW5pdAoJb3B0aW1pemF0aW9uLgoKMjAwNC0xMS0yNSAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnamF2YWguYywgamNmLWR1bXAuYywganYtc2Nhbi5jLCBqdnNwZWMuYzogQXZvaWQgYCBhcyBsZWZ0IHF1b3RlCglpbiBkaWFnbm9zdGljcy4KCjIwMDQtMTEtMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB2ZXJpZnktZ2x1ZS5jICh2ZnlfaW5pdF9uYW1lLCB2ZnlfY2xpbml0X25hbWUsIHZmeV9vYmplY3RfdHlwZSwKCXZmeV9zdHJpbmdfdHlwZSwgdmZ5X3Rocm93YWJsZV90eXBlKTogVXNlIEFOU0kgZGVjbGFyYXRpb24gZm9ybS4KCjIwMDQtMTEtMjQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHZlcmlmeS5jIChkZWZlcl9tZXJnaW5nKTogRG9uJ3QgdXNlIEMrKy1zdHlsZSBjb21tZW50LgoJKiB2ZXJpZnkuaCAoamF2YV9vcGNvZGUpOiBBZGRlZCBqYXZhX29wY29kZV9lbmQuCgkqIGNsYXNzLmMgKGJ1aWxkX2NsYXNzX3JlZik6IFJlbW92ZSBDKysgY29tbWVudCBhbmQgb2xkIEZJWE1FLgoKCSogdmVyaWZ5LWltcGwuYyAodmZ5X3B1c2hfdHlwZSk6IFJlbW92ZWQgYm9ndXMgInJldHVybiIuCgkoaW5pdGlhbGl6ZV9zdGFjayk6IFVzZSB2ZnlfYWxsb2MgYW5kIHZmeV9mcmVlLgoJKHZlcmlmeV9pbnN0cnVjdGlvbnNfMCk6IExpa2V3aXNlLgoKCSogTWVyZ2VkIGdjai1hYmktMi1kZXYtYnJhbmNoIHRvIHRydW5rLgoKMjAwNC0xMS0yNCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAocGFyc2VfY2xhc3NfZmlsZSk6IFNldCBmaWxlX3N0YXJ0X2xvY2F0aW9uLgoKMjAwNC0xMS0xMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAobWFrZV9maWVsZF92YWx1ZSk6IERvbid0IGNhbGwgYnVpbGRfc3RhdGljX2ZpZWxkX3JlZi4KCShidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogRG9uJ3QgZW1pdCBkaXJlY3QgcmVmZXJlbmNlcyB3aGVuIHVzaW5nCglpbmRpcmVjdCBkaXNwYXRjaC4KCgkqIGdjai50ZXhpIChJbnZva2luZyBnaWopOiBEb2N1bWVudCAtdmVyYm9zZS4gIFB1dCAtdmVyYm9zZSBhbmQKCS12ZXJib3NlOmNsYXNzIGludG8gbWFuIHBhZ2Ugc3lub3BzaXMuCgoyMDA0LTExLTA5ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2phdmFfYXJyYXlzdG9yZV9jaGVjayk6IFN0aWxsIGdlbmVyYXRlIGNoZWNrIGlmCgllbGVtZW50IHR5cGUgaXMgaXRzZWxmIGFuIGFycmF5LgoKMjAwNC0xMS0wOCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamF2YS10cmVlLmggKHNvZnRfY2hlY2tfYXNzaWdubWVudF9ub2RlKTogUmVtb3ZlZC4KCShlbnVtIGphdmFfdHJlZV9pbmRleCk6IFJlbW92ZWQgSlRJX1NPRlRfQ0hFQ0tfQVNTSUdOTUVOVF9OT0RFLgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBpbml0aWFsaXplCglzb2Z0X2NoZWNrX2Fzc2lnbm1lbnRfbm9kZS4KCjIwMDQtMTEtMDUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzc19tZXRob2RzKTogRG9uJ3QgYWRkIE1pcmFuZGEgbWV0aG9kcyB3aGVuCgl1c2luZyBpbmRpcmVjdCBkaXNwYXRjaC4KCjIwMDQtMTEtMDUgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6IENhbGwgZW1pdF9hc3NlcnRpb25fdGFibGUgdG8gc2V0IHRoZQoJJ2Fzc2VydGlvbl90YWJsZScgZmllbGQuCgkoYnVpbGRfc2lnbmF0dXJlX2Zvcl9saWJnY2opOiBNb3ZlIGhlcmUgZnJvbSBleHByLmMuCgkoYWRkX2Fzc2VydGlvbl90YWJsZV9lbnRyeSk6IE5ldyBmdW5jdGlvbi4gQ2FsbGJhY2sgZm9yIGFzc2VydGlvbgoJaGFzaHRhYmxlIHRyYXZlcnNhbC4KCShlbWl0X2Fzc2VydGlvbl90YWJsZSk6IE5ldy4gVGFrZSBjbGFzcyBhcmd1bWVudCwgYW5kIGdlbmVyYXRlCglhc3NlcnRpb24gdGFibGUgREVDTCBiYXNlZCBvbiB0aGUgVFlQRV9BU1NFUlRJT05TIGhhc2h0YWJsZS4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IERlZmluZSBhc3NlcnRpb25fZW50cnlfdHlwZSByZWNvcmQuCglQdXNoICdhc3NlcnRpb25fdGFibGUnIGNsYXNzIGZpZWxkIGluc3RlYWQgb2YgJ3ZlcmlmeScuCgkqIGV4cHIuYyAodHlwZV9hc3NlcnRpb25fZXEpOiBDb21wYXJlICdhc3NlcnRpb25fY29kZScgZmllbGQuCgkodHlwZV9hc3NlcnRpb25faGFzaCk6IEluY2x1ZGUgJ2Fzc2VydGlvbl9jb2RlJyBpbiBoYXNoLgoJKGFkZF90eXBlX2Fzc2VydGlvbik6IFJld3JpdHRlbi4gVGFrZSBjbGFzcyBhbmQgYXNzZXJ0aW9uX2NvZGUKCWFyZ3VtZW50cy4gQWRkIGFzc2VydGlvbnMgdG8gdGhlIFRZUEVfQVNTRVJUSU9OUyBoYXNodGFibGUuCgkoY2FuX3dpZGVuX3JlZmVyZW5jZV90byk6IFVzZSBuZXcgYWRkX3R5cGVfYXNzZXJ0aW9uKCkgYXJndW1lbnRzLgoJKiBqYXZhLXRyZWUuaCAoamF2YV90cmVlX2luZGV4KTogQWRkIEpUSV9BU1NFUlRJT05fRU5UUllfVFlQRSwKCUpUSV9BU1NFUlRJT05fVEFCTEVfVFlQRS4gUmVtb3ZlIEpUSV9WRVJJRllfSURFTlRJRklFUl9OT0RFLgoJKHZlcmlmeV9pZGVudGlmaWVyX25vZGUpOiBSZW1vdmVkLgoJKGFzc2VydGlvbl9lbnRyeV90eXBlLCBhc3NlcnRpb25fdGFibGVfdHlwZSk6IE5ldy4KCShBU1NFUlRJT05fVFlQRVNfQ09NUEFUSUJMRSwgQVNTRVJUSU9OX0lTX0lOU1RBTlRJQUJMRSk6IE5ldy4gVHlwZQoJYXNzZXJ0aW9uIGNvZGUgZGVmaW5pdGlvbnMuCgkoc3RydWN0IHR5cGVfYXNzZXJ0aW9uKTogQWRkIGFzc2VydGlvbl9jb2RlLiBSZW5hbWUgJ3NvdXJjZV90eXBlJyBhbmQKCSd0YXJnZXRfdHlwZScgdG8gJ29wMScgYW5kICdvcDInLgoJKGFkZF90eXBlX2Fzc2VydGlvbik6IERlY2xhcmUuCgkobGFuZ19wcmludGFibGVfbmFtZV93bHMpOiBSZW1vdmUgdW51c2VkIGRlZmluaXRpb24uCgkqIHZlcmlmeS1nbHVlLmM6ICh2ZnlfaXNfYXNzaWduYWJsZV9mcm9tKTogTmV3LiBDYWxsIGFkZF90eXBlX2Fzc2VydGlvbgoJdG8gZW1pdCBydW50aW1lIGFzc2VydGlvbi4KCSh2Znlfbm90ZV9zdGFja190eXBlKTogQ2xlYW4gdXAgbm9uLUM5MCBkZWNsYXJhdGlvbnMuCgkodmZ5X25vdGVfbG9jYWxfdHlwZSk6IExpa2V3aXNlLgoJKiB2ZXJpZnkuaCAodmZ5X2lzX2Fzc2lnbmFibGVfZnJvbSk6IERlY2xhcmUuCgkqIHZlcmlmeS1pbXBsLmMgKGlzX2Fzc2lnbmFibGVfZnJvbV9zbG93KTogUmVtb3ZlIHVudXNlZCBmdW5jdGlvbi4KCShyZWZfY29tcGF0aWJsZSk6IFJlbmFtZSBhcmd1bWVudHMuIENhbGwgdmZ5X2lzX2Fzc2lnbmFibGVfZnJvbSgpCglpbnN0ZWFkIG9mIGlzX2Fzc2lnbmFibGVfZnJvbV9zbG93KCkuCgkodHlwZXNfY29tcGF0aWJsZSk6IFJlaW5zdGF0ZSByZWZfY29tcGF0aWJsZSgpIGNhbGwuCgoyMDA0LTExLTA0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogUmV2ZXJ0ZWQgcHJldmlvdXMgcGF0Y2guCgoJKiBjbGFzcy5jIChidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogRG9uJ3QgZW1pdCBkaXJlY3QgcmVmZXJlbmNlcwoJd2hlbiB1c2luZyBpbmRpcmVjdCBkaXNwYXRjaC4KCjIwMDQtMTEtMDMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2phdmFfYXJyYXlsb2FkKTogU2V0IGxoc190eXBlX25vZGUuCgkoZXhwYW5kX2phdmFfYXJyYXlzdG9yZSk6IFNldCByaHNfdHlwZV9ub2RlLgoKMjAwNC0xMS0wMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamNmLXBhcnNlLmMgKGNvbXB1dGVfY2xhc3NfbmFtZSk6IFVzZSBmaWxlbmFtZSBsZW5ndGggZnJvbSB6aXAKCWRpcmVjdG9yeSwgbm90IHN0cmxlbi4KCgkqIGV4cHIuYyAoZXhwYW5kX2ludm9rZSk6IE1hcmsgbmV3IGludGVyZmFjZSBtZXRob2RzIGFzIGFic3RyYWN0LgoKMjAwNC0xMS0wMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogdmVyaWZ5LWltcGwuYyAocHVzaF9qdW1wKTogUmVtb3ZlZCBjaGVjayBmb3IgdW5pbml0aWFsaXplZAoJb2JqZWN0cy4KCShwdXNoX2V4Y2VwdGlvbl9qdW1wKTogTGlrZXdpc2UuCgkoaGFuZGxlX3JldF9pbnNuKTogTGlrZXdpc2UuCgkoaGFuZGxlX2pzcl9pbnNuKTogTGlrZXdpc2UuCgkoc3RhdGVfY2hlY2tfbm9fdW5pbml0aWFsaXplZF9vYmplY3RzKTogUmVtb3ZlZC4KCgkqIGRlY2wuYyAoY2hlY2tfbG9jYWxfdW5uYW1lZF92YXJpYWJsZSk6IFJlY29nbml6ZQoJcHJvbW90ZWQtdG8taW50IHBhcmFtZXRlcnMgd2hlbiB1c2luZyB0aGUgbmV3IHZlcmlmaWVyLgoJKiBleHByLmMgKGV4cGFuZF9qYXZhX2FycmF5c3RvcmUpOiBFeHBsaWNpdGx5IHJlcXVlc3QgYXJyYXkgdHlwZQoJd2hlbiB1c2luZyBuZXcgdmVyaWZpZXIuCgkoZXhwYW5kX2phdmFfYXJyYXlsb2FkKTogTGlrZXdpc2UuCgkoaW52b2tlX2J1aWxkX2R0YWJsZSk6IERvbid0IHBhc3Mgb2JqZWN0X3R5cGVfbm9kZSBhcwoJZXhwcmVzc2lvbiBhcmd1bWVudCB0byBidWlsZF9qYXZhX2luZGlyZWN0X3JlZi4KCShidWlsZF9qYXZhX2NoZWNrX2luZGV4ZWRfdHlwZSk6IERvIG5vdGhpbmcuCgkoYnVpbGRfamF2YV9hcnJheXN0b3JlX2NoZWNrKTogSGFuZGxlIGNhc2Ugd2hlcmUgYXJyYXkgZG9lc24ndAoJaGF2ZSBhcnJheSB0eXBlLgoJKGJ1aWxkX2phdmFfYXJyYXlfbGVuZ3RoX2FjY2Vzcyk6IExpa2V3aXNlLgoJKGV4cGFuZF9pbnZva2UpOiBIYW5kbGUgY2FzZSB3aGVyZSBpbnRlcmZhY2Ugb3ZlcnJpZGVzIGEgbWV0aG9kCglmcm9tIE9iamVjdC4KCShwb3BfdHlwZV8wKTogQWx3YXlzIHN1Y2NlZWQgZm9yIHJlZmVyZW5jZSB0eXBlcy4KCShwcm9jZXNzX2p2bV9pbnN0cnVjdGlvbik6IERvbid0IHBvcCBhIHZhbHVlIGluIGEgZGVhZAoJZXhjZXB0aW9uIGhhbmRsZXIuCgkocG9wX2FyZ3VtZW50cyk6IENvbnZlcnQgYXJndW1lbnRzIHRvIGNvcnJlY3QgdHlwZXMuCgoyMDA0LTEwLTI5ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGpjZi1wYXJzZS5jIChnaXZlX25hbWVfdG9fY2xhc3MpOiBSZW1vdmUgbGluZSB0aGF0IHdhcwoJaW5jb3JyZWN0bHkgbWVyZ2VkLgoKMjAwNC0xMC0yOSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAoc2V0X3NvdXJjZV9maWxlbmFtZSk6IEFkZCBjb2RlIHRvIGJ1aWxkIG5ldyBzZm5hbWUuCgoyMDA0LTEwLTIwICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoZW5kX2phdmFfbWV0aG9kKTogRG9uJ3QgZXhwYW5kIGlmIGZsYWdfc3ludGF4X29ubHkuCgoyMDA0LTEwLTI2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiB2ZXJpZnkuaCAodmZ5X25vdGlmeV92ZXJpZmllZCk6IFJlbW92ZWQuCgkqIHZlcmlmeS1nbHVlLmMgKHZmeV9ub3RpZnlfdmVyaWZpZWQpOiBSZW1vdmVkLgoKMjAwNC0xMC0yNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogdmVyaWZ5LWltcGwuYyAoZGVidWdfcHJpbnRfc3RhdGUpOiBEZWNsYXJlIGBpJyBiZWZvcmUgY29kZS4KCShtZXJnZV90eXBlcyk6IE1vZGlmeSBgdCcgd2hlbiBpdCBpcyBudWxsX3R5cGUuCgoyMDA0LTEwLTI2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiB2ZXJpZnktaW1wbC5jICh0eXBlX3ByaW50KTogUmVuYW1lZCBmcm9tIHByaW50LiAgTm93IHN0YXRpYyBhbmQKCXRha2VzIGFuIGFyZ3VtZW50LgoJKGRlYnVnX3ByaW50X3N0YXRlKTogVXNlIHR5cGVfcHJpbnQuCgoyMDA0LTEwLTI1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2ludm9rZWludGVyZmFjZSk6IENvbXB1dGUgY29ycmVjdCBvZmZzZXQgZm9yCglpbmRleCBpbnRvIGludGVyZmFjZSBtZXRob2RzLgoKMjAwNC0xMC0yMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamF2YS10cmVlLmggKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zX25ldyk6IERlY2xhcmUuCgoJKiBqdnNwZWMuYyAoanZnZW5tYWluX3NwZWMpOiBSZW1vdmUgLWZuZXctdmVyaWZpZXIgZnJvbSBjYzEKCWNvbW1hbmQgbGluZS4KCgkqIHZlcmlmeS1pbXBsLmMgKHZlcmlmeV9pbnN0cnVjdGlvbnMpOiBDb3JyZWN0bHkgaGFuZGxlIHdpZGUKCXR5cGVzIG9uIHRoZSBzdGFjay4KCSogdmVyaWZ5LWdsdWUuYyAodmZ5X2dldF9jbGFzc19uYW1lKTogVXNlIERFQ0xfTkFNRS4KCSh2ZnlfZ2V0X2NvbXBvbmVudF90eXBlKTogU3RyaXAgcG9pbnRlciB0eXBlcy4KCSh2ZnlfZmluZF9jbGFzcyk6IFVzZSBnZXRfdHlwZV9mcm9tX3NpZ25hdHVyZS4gIFN0cmlwIHBvaW50ZXIKCXR5cGVzLgoJSW5jbHVkZSBqYXZhLWV4Y2VwdC5oLgoKMjAwNC0xMC0yMCAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogdmVyaWZ5LWltcGwuYyAodHlwZV9hcnJheV9lbGVtZW50cG9wX3JhdywgdmZ5X3BvcF90eXBlX3QsCgl2ZnlfcHVzaF90eXBlX3QsIHNldF92YXJpYWJsZSwgYWRkX25ld19zdGF0ZSwgbWVyZ2VfaW50bywKCWhhbmRsZV9qc3JfaW5zbiwgYnJhbmNoX3ByZXBhc3MsIGNoZWNrX2NsYXNzX2NvbnN0YW50LAoJY2hlY2tfd2lkZV9jb25zdGFudCwgZ2V0X29uZV90eXBlLCBjb21wdXRlX3N0YXRpY190eXBlcywKCXZlcmlmeV9pbnN0cnVjdGlvbnNfMCk6IENsZWFuIHVwIEM5OSBkZWNsYXJhdGlvbnMgYWZ0ZXIgc3RhdGVtZW50cy4KCjIwMDQtMTAtMjAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHZlcmlmeS1pbXBsLmMgKG1lcmdlX3JlZnMpOiBDb21wYXJlIHJlZmVyZW5jZSBhZ2FpbnN0IGl0ZXJhdG9yLAoJbm90IHJlZjIuCgoJKiB2ZXJpZnktZ2x1ZS5jICh2ZnlfdGFnKTogTWFzayBvZmYgcmVzb2x2ZWQgZmxhZy4KCjIwMDQtMTAtMTkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHZlcmlmeS1pbXBsLmMgKHZlcmlmeV9pbnN0cnVjdGlvbnMpOiBDYWxsIHZmeV9ub3RlX2xvY2FsX3R5cGUuCgkoaW5pdF9zdGF0ZV93aXRoX3N0YWNrKTogSW5pdGlhbGl6ZSBgdGhpc190eXBlJyBpbiBzdGF0ZS4KCSh2ZXJpZnlfbWV0aG9kKTogVXNlIGRlYnVnX3ByaW50LgoJKiB2ZXJpZnktZ2x1ZS5jICh2ZnlfaXNfcHJpbWl0aXZlKTogUmVtb3ZlZCBkZWJ1Z2dpbmcgcHJpbnQuCgkodmZ5X25vdGVfc3RhY2tfZGVwdGgpOiBSZXZlcnRlZCBsYXN0IHBhdGNoLgoJKHZmeV9ub3RlX3N0YWNrX3R5cGUpOiBOb3RlIHBvaW50ZXIgdG8gT2JqZWN0LCBub3QgT2JqZWN0LgoJKHZmeV9ub3RlX2xvY2FsX3R5cGUpOiBMaWtld2lzZS4KCgkqIHZlcmlmeS5oICh2Znlfbm90ZV9pbnN0cnVjdGlvbl9zZWVuKTogRGVjbGFyZS4KCSogdmVyaWZ5LWdsdWUuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnNfbmV3KTogU2V0CglCQ09ERV9FWENFUFRJT05fVEFSR0VUIG9uIHRhcmdldCBpbnN0cnVjdGlvbi4KCSh2Znlfbm90ZV9pbnN0cnVjdGlvbl9zZWVuKTogTmV3IGZ1bmN0aW9uLgoJKiB2ZXJpZnktaW1wbC5jIChGTEFHX0lOU05fU0VFTik6IE5ldyBkZWZpbmUuCgkodmVyaWZ5X2luc3RydWN0aW9uc18wKTogU2V0IGZsYWcgb24gaW5zdHJ1Y3Rpb24uICBTYXZlIHN0YXRlIGZvcgoJUEM9MCBsYXRlci4KCSh2ZXJpZnlfaW5zdHJ1Y3Rpb25zKTogQ2FsbCB2Znlfbm90ZV9pbnN0cnVjdGlvbl9zZWVuLgoKCSogdmVyaWZ5LWdsdWUuYyAodmZ5X25vdGVfc3RhY2tfZGVwdGgpOiBGaXggb2ZmLWJ5LW9uZSBlcnJvci4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9uc19uZXcpOiBDYWxsIG1ldGhvZF9pbml0X2V4Y2VwdGlvbnMsCglhZGRfaGFuZGxlciwgYW5kIGhhbmRsZV9uZXN0ZWRfcmFuZ2VzLgoJKiB2ZXJpZnktaW1wbC5jICh2ZXJpZnlfbWV0aG9kKTogUmV0dXJuIDEgb24gc3VjY2Vzcy4KCSh2ZXJpZnlfaW5zdHJ1Y3Rpb25zXzApOiBTYXZlIHRoZSBzdGF0ZSBhdCBQQz0wLgoKCSogdmVyaWZ5LWltcGwuYyAoaW5pdF90eXBlX2Zyb21fY2xhc3MpOiBTZXQgaXNfcmVzb2x2ZWQgYW5kCglyZWZfbmV4dCBvbiBuZXcgcmVmX2ludGVyc2VjdGlvbi4KCShpbml0X3R5cGVfZnJvbV9zdHJpbmcpOiBMaWtld2lzZS4KCjIwMDQtMTAtMTUgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2J5dGVjb2RlKTogVXNlIHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zX25ldwoJaWYgZmxhZ19uZXdfdmVyaWZpZXIgaXMgc2V0LgoJKiBqYXZhLXRyZWUuaCAoZmxhZ19uZXdfdmVyaWZpZXIpOiBEZWNsYXJlLgoJKiBsYW5nLm9wdCAoZm5ldy12ZXJpZmllcik6IE5ldyBvcHRpb24uCgkqIHZlcmlmeS1pbXBsLmM6IFdvcmsgYXJvdW5kIG5hbWVzcGFjZSBwb2xsdXRpb24gYnkgdW5kZWYnaW5nCgknY3VycmVudF9jbGFzcycuCgkoc3RydWN0IHZlcmlmaWVyX2NvbnRleHQpOiBNYWtlICdieXRlY29kZScgY29uc3QuCgkodmVyaWZ5X2ZhaWxfcGMpOiBQYXNzIC0xIFBDIGFyZ3VtZW50IHRvIHZmeV9mYWlsLgoJKHR5cGVzX2NvbXBhdGlibGUpOiBGb3IgdGhlIEJDLUFCSSwgYWx3YXlzIGNvbnNpZGVyIHJlZmVyZW5jZSB0eXBlcwoJY29tcGF0aWJsZS4KCShjaGVja19jbGFzc19jb25zdGFudCk6IFVzZSB2ZnItPmN1cnJlbnRfY2xhc3MuCgkoY2hlY2tfY29uc3RhbnQpOiBMaWtld2lzZS4KCShjaGVja193aWRlX2NvbnN0YW50KTogTGlrZXdpc2UuCgkoY2hlY2tfZmllbGRfY29uc3RhbnQpOiBDaGVjayBmb3IgJ0wnIGF0IHN0YXJ0IG9mIHR5cGUgbmFtZS4KCShnZXRfb25lX3R5cGUpOiBSZXR1cm4gcG9pbnRlciBpbnN0ZWFkIG9mIHR5cGUuIFNldCB0eXBlIHJlc3VsdCBpbgoJY2FsbGVyIHZpYSBwYXNzZWQgdHlwZSBwb2ludGVyLgoJKGNvbXB1dGVfYXJndW1lbnRfdHlwZXMpOiBVcGRhdGUgdG8gdXNlIG5ldyBnZXRfb25lX3R5cGUgYXJndW1lbnRzLgoJKGNvbXB1dGVfcmV0dXJuX3R5cGUpOiBMaWtld2lzZS4KCShtYWtlX3ZlcmlmaWVyX2NvbnRleHQpOiBOZXcuIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplICd2ZnInLgoJKGZyZWVfdmVyaWZpZXJfY29udGV4dCk6IE5ldy4gRnJlZSAndmZyJyBhbmQgaXRzIGNvbnRlbnRzLgoJKHZlcmlmeV9tZXRob2QpOiBSZW1vdmUgQVRUUklCVVRFX1VOVVNFRC4gQ2FsbCBtYWtlX3ZlcmlmaWVyX2NvbnRleHQKCWFuZCBmcmVlX3ZlcmlmaWVyX2NvbnRleHQuCgoyMDA0LTEwLTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiB2ZXJpZnktZ2x1ZS5jICh2Znlfbm90ZV9sb2NhbF90eXBlKTogTWFyayBhcmd1bWVudCBhcyB1bnVzZWQuCgkqIHZlcmlmeS5oICh2ZnlfZmFpbCk6IEZpeGVkIGZvcm1hdHRpbmcuCgoJKiB2ZXJpZnktaW1wbC5jICh2ZnIpOiBGaXhlZCBjb21tZW50IGZvcm1hdHRpbmcuCgkoY29sbGFwc2VfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCSh2ZXJpZnlfaW5zdHJ1Y3Rpb25zKTogTm90aWZ5IGNvbXBpbGVyIGFib3V0IHR5cGUgbWFwLgoJKiB2ZXJpZnkuaCAodmZ5X25vdGVfc3RhY2tfZGVwdGgpOiBVcGRhdGVkLgoJKHZmeV9ub3RlX3N0YWNrX3R5cGUpOiBMaWtld2lzZS4KCSh2Znlfbm90ZV9sb2NhbF90eXBlKTogTGlrZXdpc2UuCgkodmZ5X3Vuc3VpdGFibGVfdHlwZSwgdmZ5X3JldHVybl9hZGRyZXNzX3R5cGUsIHZmeV9udWxsX3R5cGUpOgoJRGVjbGFyZS4KCSogdmVyaWZ5LWdsdWUuYyAodmZ5X25vdGVfc3RhY2tfZGVwdGgpOiBDb3JyZWN0bHkgc2l6ZSB0eXBlCglzdGF0ZS4gIEFkZGVkIGBtZXRob2QnIGFyZ3VtZW50LgoJKHZmeV9ub3RlX3N0YWNrX3R5cGUpOiBSZW5hbWVkIGZyb20gdmZ5X25vdGVfdHlwZS4gIEFkZGVkIGBtZXRob2QnCglhcmd1bWVudC4KCSh2Znlfbm90ZV9sb2NhbF90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKHZmeV91bnN1aXRhYmxlX3R5cGUpOiBMaWtld2lzZS4KCSh2ZnlfcmV0dXJuX2FkZHJlc3NfdHlwZSk6IExpa2V3aXNlLgoJKHZmeV9udWxsX3R5cGUpOiBMaWtld2lzZS4KCgkqIHZlcmlmeS5oIChWRllfSU5fR0NDKTogUmVtb3ZlZC4KCShWRllfV0FOVF9UWVBFTUFQKTogUmVtb3ZlZC4KCSogdmVyaWZ5LWltcGwuYyAodmVyaWZ5X2luc3RydWN0aW9uc18wKTogUmVtb3ZlZCB1c2VsZXNzICJcIi4KCShzdHJ1Y3Qgc3RhdGUpIDxuZXh0PjogVW5jb21tZW50LgoKMjAwNC0xMC0xMyAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogdmVyaWZ5LWltcGwuYzogRm9ybWF0dGluZyBmaXhlcy4gUmVmb3JtYXQgQysrLXN0eWxlIGNvbW1lbnRzIHRvCglDLXN0eWxlLgoKMjAwNC0xMC0wNiAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogTWFrZS1sYW5nLmluICh2ZXJpZnkubyk6IFJlLWVuYWJsZWQgdGhpcyB0YXJnZXQuCgkqIHZlcmlmeS1nbHVlLmMgKHZmeV9nZXRfaW50ZXJmYWNlX2NvdW50KTogQWRkIEFUVFJJQlVURV9VTlVTRUQuCgkodmZ5X2dldF9pbnRlcmZhY2UpOiBMaWtld2lzZS4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9uc19uZXcpOiBSZW5hbWVkIGZyb20gdmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMuCgkqIHZlcmlmeS5oICh2ZXJpZnlfanZtX2luc3RydWN0aW9uc19uZXcpOiBEZWNsYXJlLgoJKiB2ZXJpZnktaW1wbC5jIChmcmVlX3N0YXRlKTogVGVtcG9yYXJpbHkgY29tbWVudCBvdXQgdW51c2VkCglmdW5jdGlvbi4KCjIwMDQtMTAtMDYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGphdmEtdHJlZS5oIChKVl9TVEFURV9SRUFEKTogTmV3IGVudW0gdmFsdWUuCgoyMDA0LTEwLTA2ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiB2ZXJpZnkuaDogTmV3IGZpbGUuCgoyMDA0LTEwLTA1ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiB2ZXJpZnktaW1wbC5jLCB2ZXJpZnktZ2x1ZS5jLCB2ZXJpZnkuaDogTmV3IGZpbGVzLgoJKiBNYWtlLWxhbmcuaW46IEFkZCBydWxlcyBmb3IgdmVyaWZ5LWltcGwubyBhbmQgdmVyaWZ5LWdsdWUuby4KCjIwMDQtMDktMjQgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogZGVjbC5jIChjaGVja19sb2NhbF91bm5hbWVkX3ZhcmlhYmxlKTogQWx3YXlzIHVzZSB0aGUgUEFSTV9ERUNMCglmb3IgYSBzbG90IGlmIGl0J3Mgb2YgcG9pbnRlciB0eXBlLgoKMjAwNC0wOS0xNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogQ29ycmVjdGx5IGluaXRpYWxpemUgInN0YXRlIiBmaWVsZC4KCUluaXRpYWxpemUgImVuZ2luZSIgZmllbGQuCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkZCAiZW5naW5lIiBmaWVsZC4KCjIwMDQtMDktMTAgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTI3NjAKCSogZXhwci5jIChidWlsZF9pbnZva2VpbnRlcmZhY2UpOiBVc2UgZmFzdCBtZXRob2QgZm9yIGludGVyZmFjZQoJZGlzcGF0Y2guCgkqIGphdmEtdHJlZS5oIChlbnVtIGphdmFfdHJlZV9pbmRleCk6IEFkZCBKVElfSVRBQkxFX1RZUEUsCglKVElfSVRBQkxFX1BUUl9UWVBFLgoJKHN0cnVjdCBsYW5nX3R5cGUpOiBBZGQgIGl0YWJsZV9tZXRob2RzLCBpdGFibGVfZGVjbCwgaXRhYmxlX3N5bXNfZGVjbC4KCShlbWl0X3N5bWJvbF90YWJsZSk6IEFkZCBuZXcgYXJnLCBlbGVtZW50X3NpemUuCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgQ2xhc3MuaXRhYmxlLgoJKiBjbGFzcy5jIChHRU5fVEFCTEUpOiBOZXcgbWFjcm8uCgkoZ2VuX2luZGlyZWN0X2Rpc3BhdGNoX3RhYmxlcyk6IFVzZSBpdC4gIEFkZCBpdGFibGUuCgkobWFrZV9jbGFzc19kYXRhKTogQWRkIG5ldyBhcmcgZm9yIGVtaXRfc3ltYm9sX3RhYmxlKCkuCglFbWl0IGl0YWJsZS4KCShhZGRfbWlyYW5kYV9tZXRob2RzKTogTWFrZSBzdXJlIHNlYXJjaF9jbGFzcyBoYXMgYmVlbiBwYXJzZWQuCgkoZW1pdF9zeW1ib2xfdGFibGUpOiBBZGQgbmV3IGFyZywgZWxlbWVudF9zaXplLgoKMjAwNC0wOS0wNiAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiB2ZXJpZnkuYyAobWVyZ2VfdHlwZXMpOiBSZXR1cm4gT2JqZWN0IGZvciBhbGwgbWVyZ2VzIG9mCglpbnRlcmZhY2VzLgoJKiBleHByLmMgKGFkZF90eXBlX2Fzc2VydGlvbik6IERvbid0IGdlbmVyYXRlIGFzc2VydGlvbnMgd2hlbgoJc291cmNlIHR5cGUgaXMgYXJyYXkgb2YgT2JqZWN0LgoKMjAwNC0wOS0wMyAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfY2xhc3MpOiBOdWxsaWZ5IFRZUEVfVkVSSUZZX01FVEhPRC4KCgkqIGxhbmcuYyAoamF2YV9wb3N0X29wdGlvbnMpOiBGb3JjZSBmbGFnX3ZlcmlmeV9pbnZvY2F0aW9ucyBpZgoJd2UncmUgbm90IHVzaW5nIGluZGlyZWN0IGRpc3BhdGNoLgoKCSogZXhwci5jIChwb3BfdHlwZV8wKTogTW92ZSB0ZXN0IGZvciBpbnRlcmZhY2VzIGJlZm9yZSBjYWxsIHRvCgljYW5fd2lkZW5fcmVmZXJlbmNlX3RvKCkuCgkoYnVpbGRfc2lnbmF0dXJlX2Zvcl9saWJnY2opOiBSZW1vdmUgZ2VuZXJhdGlvbiBvZiBjYW5vbmljYWwgYXJyYXkKCXR5cGUuCgkoYWRkX3R5cGVfYXNzZXJ0aW9uKTogQ2Fub25pY2FsaXplIGJvdGggYXJyYXlzLgoJRG9uJ3QgYXNzZXJ0IHRoYXQgdHlwZSBYIGNhbiBiZSBhc3NpZ25lZCB0byBPYmplY3QuCglEb24ndCBhc3NlcnQgdGhhdCB0eXBlIFggYW4gYmUgYXNzaWduZWQgdG8gdHlwZSBYLgoJRG9uJ3QgYXNzZXJ0IHRoYXQgT2JqZWN0IGNhbiBiZSBhc3NpZ25lZCB0byB0eXBlIFguCgkoY2FuX3dpZGVuX3JlZmVyZW5jZV90byk6IFdhcm4gd2hlbmV2ZXIgd2UgZ2VuZXJhdGUgYW4gYXNzZXJ0aW9uLgoJKHByb2Nlc3NfanZtX2luc3RydWN0aW9uKTogVXNlIHRocm93YWJsZV90eXBlX25vZGUgZm9yIHRoZSB0eXBlIG9mCglhbiBleGNlcHRpb24gY2xhc3MuCgoyMDA0LTA5LTAxICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IENoYW5nZQoJdmVyaWZ5X2lkZW50aWZpZXJfbm9kZSB0byAiX192ZXJpZnkiLgoJKiBleHByLmMgKGFkZF90eXBlX2Fzc2VydGlvbik6IFVzZSB2ZXJpZnlfaWRlbnRpZmllcl9ub2RlIGZvciBuYW1lLgoJKiBqYXZhLXRyZWUuaCAodmVyaWZ5X2lkZW50aWZpZXJfbm9kZSk6IENoYW5nZSB0byAiX192ZXJpZnkiLgoKCSogZXhwci5jIChidWlsZF9zaWduYXR1cmVfZm9yX2xpYmdjaik6IE5ldyBmdW5jdGlvbi4KCShhZGRfdHlwZV9hc3NlcnRpb24pOiBVc2UgaXQgdG8gY29uc3RydWN0IHNpZ25hdHVyZXMgZm9yCglzb3VyY2VfdHlwZSBhbmQgdGFyZ2V0X3R5cGUuCgoyMDA0LTA4LTI3ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGphdmEtdHJlZS5oIChlbnVtIGphdmFfdHJlZV9pbmRleCk6IEFkZCBKVElfVkVSSUZZX0lERU5USUZJRVJfTk9ERS4KCSh2ZXJpZnlfaWRlbnRpZmllcl9ub2RlKTogTmV3LgoJKFRZUEVfVkVSSUZZX01FVEhPRCk6IE5ldy4KCShzdHJ1Y3QgdHlwZV9hc3NlcnRpb24pOiBOZXcgdHlwZS4KCSogZXhwci5jICh0eXBlX2Fzc2VydGlvbl9lcSk6IE5ldyBmdW5jdGlvbi4KCSh0eXBlX2Fzc2VydGlvbl9oYXNoKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF90eXBlX2Fzc2VydGlvbik6IE5ldyBmdW5jdGlvbi4KCShjYW5fd2lkZW5fcmVmZXJlbmNlX3RvKTogQ2FsbCBhZGRfdHlwZV9hc3NlcnRpb24oKS4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogQWRkIHZlcmlmeV9pZGVudGlmaWVyX25vZGUuCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6IEluaXRpYWxpemUgVFlQRV9WRVJJRllfTUVUSE9EICh0eXBlKS4KCShmaW5pc2hfY2xhc3MpOiBPdXRwdXQgVFlQRV9WRVJJRllfTUVUSE9EICh0eXBlKS4KCgkqIGRlY2wuYyAoZW5kX2phdmFfbWV0aG9kKTogTnVsbGlmeSB1bnVzZWQgZmllbGRzLgoKMjAwNC0wOC0xNyAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiB2ZXJpZnkuYyAoZGVmZXJfbWVyZ2luZyk6IFF1aWV0ZW4uCgkqIGpjZi1wYXJzZS5jIChsb2FkX2NsYXNzKTogT25seSB0cnkgdG8gb3BlbiBhIGNsYXNzIGZpbGUgaWYgaXQncwoJamF2YS5sYW5nLk9iamVjdCBvciBpZiBpdCdzIHBhcnQgb2YgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24uCglDaGVjayB0aGF0IHRoZSBjbGFzcyB3ZSBqdXN0IHRyaWVkIHRvIGxvYWQgaXMgdGhlIGNsYXNzIHdlIGp1c3QKCWxvYWRlZC4gIFF1aWV0ZW4uCgkoamF2YV9wYXJzZV9maWxlKTogU2V0IGZsYWdfdmVyaWZ5X2ludm9jYXRpb25zIG9mZiBpZiB3ZSdyZQoJY29tcGlsaW5nIGZyb20gLmNsYXNzLgoJKHBhcnNlX3ppcF9maWxlX2VudHJpZXMpOiBBYm9ydCBpZiB3ZSB0cnkgdG8gcmVhZCBhIGR1bW15IGNsYXNzLgoJKiBleHByLmMgKGNhbl93aWRlbl9yZWZlcmVuY2VfdG8pOiBRdWlldGVuLgoJKGJ1aWxkX2ludm9rZXZpcnR1YWwpOiBBYm9ydCBpZiB3ZSB0cnkgdG8gaW52b2tldmlydHVhbCBhbgoJaW50ZXJmYWNlLgoJKGV4cGFuZF9pbnZva2UpOiBEb24ndCBidWlsZCBhIG5vbi1pbnRlcmZhY2UgY2FsbCB0byBhbiBpbnRlcmZhY2UuCgkoYnVpbGRfaW5zdGFuY2VvZik6IERvbid0IGRvIHByZW1hdHVyZSBvcHRpbWl6YXRpb24gaWYKCWZsYWdfdmVyaWZ5X2ludm9jYXRpb25zIGlzIG5vdCBzZXQuCgkqIGNsYXNzLmMgKHNldF9zdXBlcl9pbmZvKTogRGlzYWJsZSBjb2RlIHRoYXQgaW5oZXJpdHMgVFlQRV9EVU1NWQoJZnJvbSBzdXBlcmNsYXNzLgoJKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBBZGQgY29ycmVjdCB0eXBlIGNvbnZlcnNpb24gZm9yCglmaWVsZF9hZGRyZXNzLgoJKGFkZF9taXJhbmRhX21ldGhvZHMpOiBEaXNhYmxlIGdlbmVyYXRpb24gb2YgTWlyYW5kYSBtZXRob2RzIGZvcgoJZHVtbXkgY2xhc3Nlcy4KCShsYXlvdXRfY2xhc3NfbWV0aG9kKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgbm9uLXN0YXRpYyBtZXRob2QKCW92ZXJyaWRlcyBzdGF0aWMgbWV0aG9kIHdpdGggZHVtbXkgY2xhc3Nlcy4KCjIwMDQtMDgtMTMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBSZS1lbmFibGUgYXRhYmxlIGxvb2t1cHMgZm9yCglzdGF0aWMgZmllbGRzLgoKCSogcGFyc2UueSAoc3RyaXBfb3V0X3N0YXRpY19maWVsZF9hY2Nlc3NfZGVjbCk6IEluZGVudGF0aW9uIGZpeC4KCjIwMDQtMDgtMTEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpIChsaWJnY2ogUnVudGltZSBQcm9wZXJ0aWVzKTogRG9jdW1lbnQgbmV3IHByb3BlcnRpZXMuCgoyMDA0LTA4LTA2ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGpjZi1wYXJzZS5jIChsb2FkX2NsYXNzKTogQ2hlY2sgdGhhdCB3ZSByZWFsbHkgaGF2ZSBsb2FkZWQgdGhlCgljbGFzcyB3ZSdyZSBsb29raW5nIGZvci4KCjIwMDQtMDctMTkgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogQ29tbWVudCBjaGFuZ2Ugb25seS4KCgkqIHR5cGVjay5jIChidWlsZF9qYXZhX2FycmF5X3R5cGUpOiBBZGQgc2l6ZSBmaWVsZCB0byBhcnJheSBuYW1lLgoKCSogamF2YS10cmVlLmggKExPQ0FMX1NMT1RfUCk6IE5ldy4KCSh1cGRhdGVfYWxpYXNlcyk6IEFkZCBQQyBhcmd1bWVudC4KCShwdXNoZGVjbF9mdW5jdGlvbl9sZXZlbCk6IE5ldyBmdW5jdGlvbi4KCgkqIGphdmEtZ2ltcGxpZnkuYyAoamF2YV9naW1wbGlmeV9leHByKTogSGFuZGxlIFZBUl9ERUNMLAoJTU9ESUZZX0VYUFIsIGFuZCBTQVZFX0VYUFIuCgkoamF2YV9naW1wbGlmeV9tb2RpZnlfZXhwcik6IE5ldyBmdW5jdGlvbi4KCgkqIGV4cHIuYyAocHVzaF90eXBlXzApOiBDYWxsIGZpbmRfc3RhY2tfc2xvdCgpIHRvIGNyZWF0ZSB0ZW1wb3JhcnkuCgkoZXhwYW5kX2lpbmMpOiBQYXNzIFBDIHRvIHVwZGF0ZV9hbGlhc2VzKCkuCgkoU1RPUkVfSU5URVJOQUwpOiBMaWtld2lzZS4KCShwcm9jZXNzX2p2bV9pbnN0cnVjdGlvbik6IExpa2V3aXNlLgoKCSogZGVjbC5jIChiYXNlX2RlY2xfbWFwKTogTmV3IHZhcmlhYmxlLgoJKHVuaXEpOiBOZXcgdmFyaWFibGUuCgkodXBkYXRlX2FsaWFzZXMpOiBSZXdyaXRlIHdpdGggbW9yZSB0aG9yb3VnaCBjaGVja2luZy4KCShkZWJ1Z192YXJpYWJsZV9wKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfanZtX3Nsb3QpOiBEb24ndCBpbml0aWFsaXplIGxvY2FsIHZhcmlhYmxlLiAgRG9uJ3QgcHVzaGRlY2wuCgkoY2hlY2tfbG9jYWxfbmFtZWRfdmFyaWFibGUpOiBEZWxldGUgd2hvbGUgZnVuY3Rpb24uCgkoaW5pdGlhbGl6ZV9sb2NhbF92YXJpYWJsZSk6IE5ldyBmdW5jdGlvbi4KCShjaGVja19sb2NhbF91bm5hbWVkX3ZhcmlhYmxlKTogQWRkIGNoZWNrcyBhbmQgY29tbWVudHMuCgkoZmluZF9sb2NhbF92YXJpYWJsZSk6IFJld3JpdGUuCgkoamF2YV9yZXBsYWNlX3JlZmVyZW5jZSk6IE5ldyBmdW5jdGlvbi4KCShmdW5jdGlvbl9iaW5kaW5nX2xldmVsKTogTmV3IHZhcmlhYmxlLgoJKHB1c2hkZWNsX2Z1bmN0aW9uX2xldmVsKTogTmV3IGZ1bmN0aW9uLgoJKG1heWJlX3B1c2hsZXZlbHMpOiBTZXQgREVDTF9MT0NBTF9FTkRfUEMuCgkobWF5YmVfcHVzaGxldmVscyk6IENhbGwgcHVzaGRlY2woKSBvbiBlYWNoIG9mIHRoZSBuZXcgZGVjbHMuCgkoc3RhcnRfamF2YV9tZXRob2QpOiBSZXNldCB1bmlxLiAgQ3JlYXRlIGJhc2VfZGVjbF9tYXAuICBTZXQKCWZ1bmN0aW9uX2JpbmRpbmdfbGV2ZWwuCgkoZW5kX2phdmFfbWV0aG9kKTogTnVsbCB1bnVzZWQgZmllbGRzIHRvIHNhdmUgbWVtb3J5LgoKMjAwNC0wNi0yOSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX3N0YXJ0X2phdmFfaGFuZGxlcik6IFB1c2ggYSBuZXcgYmluZGluZyBsZXZlbC4KCURvbid0IGJ1aWxkIGEgVFJZX0NBVENIX0VYUFIgbm93LCB3ZSdsbCBkbyBpdCBsYXRlci4gIENhbGwKCXJlZ2lzdGVyX2V4Y2VwdGlvbl9yYW5nZSgpIHRvIHJlZ2lzdGVyIHdoZXJlIHdlJ2xsIGRvIGl0LgoJKGV4cGFuZF9lbmRfamF2YV9oYW5kbGVyKTogUmVtb3ZlIG9sZCBib2d1cyBjb2RlLiAgUmVwbGFjZSB3aXRoCgluZXcgbG9naWMgdGhhdCBzaW1wbHkgYnVpbGRzIFRSWV9DQVRDSF9FWFBScyBhbmQgaW5zZXJ0cyB0aGVtIGF0Cgl0aGUgdG9wIG9mIHRoZSBleHByZXNzaW9uIHdlJ3JlIGN1cmVudGx5IGJ1aWxkaW5nLgoJKG1heWJlX2VuZF90cnkpOiBEZWxldGUuCgkqIGRlY2wuYyAoYmluZGluZ19sZXZlbC5leGNlcHRpb25fcmFuZ2UpOiBOZXcgZmllbGQuCgkoY2xlYXJfYmluZGluZ19sZXZlbCk6IEFkZCBmaWVsZCBleGNlcHRpb25fcmFuZ2UuICBSZWZvcm1hdC4KCShwb3BsZXZlbCk6IENhbGwgZXhwYW5kX2VuZF9qYXZhX2hhbmRsZXIoKS4KCShwb3BsZXZlbCk6IENhbGwgamF2YV9hZGRfc3RtdCBvbmx5IGlmIGZ1bmN0aW9uYm9keSBpcyBmYWxzZS4KCShtYXliZV9wb3BsZXZlbHMpOiBEb24ndCBjYWxsIG1heWJlX2VuZF90cnkoKSBmcm9tIGhlcmUuCgkoZW5kX2phdmFfbWV0aG9kKTogQ2xlYXIgbm8gbG9uZ2VyIHVzZWQgdHJlZXMgaW4gZnVuY3Rpb24gZGVjbC4KCShyZWdpc3Rlcl9leGNlcHRpb25fcmFuZ2UpOiBOZXcgZnVuY3Rpb24uCgkqIGphdmEtdHJlZS5oIChyZWdpc3Rlcl9leGNlcHRpb25fcmFuZ2UsIHN0cnVjdCBlaF9yYW5nZSk6IERlY2xhcmUuCgoyMDA0LTA2LTIyICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGdlbl9pbmRpcmVjdF9kaXNwYXRjaF90YWJsZXMpOiBTZXQgdGhlIERFQ0xfT1dORVIgb2YKCXRoZSBvdGFibGUuCgkqIGNoZWNrLWluaXQuYyAoZ2V0X3ZhcmlhYmxlX2RlY2wpOiBUZWFjaCBjaGVjay1pbml0IGFib3V0CglGSUVMRF9ERUNMcyBhZGRyZXNzZWQgdmlhIHRoZSBvdGFibGUuCgkqIGpjZi1wYXJzZS5jIChsb2FkX2NsYXNzKTogQ2hlY2sgQ0xBU1NfTE9BREVEX1AsIG5vdAoJQ0xBU1NfUEFSU0VEX1AuCgoyMDA0LTA1LTI4ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGpjZi1wYXJzZS5jIChsb2FkX2NsYXNzKTogRG9uJ3QgdHJ5IHRvIHJlYWQgYSBjbGFzcyB0aGF0IHdlJ3ZlCglhbHJlYWR5IHJlYWQuCgoJKiBleHByLmMgKGJ1aWxkX2ludm9rZWludGVyZmFjZSk6IFVzZSB0aGUgb2xkLWZhc2hpb25lZCB3YXkgb2YKCWRvaW5nIGluZGlyZWN0IGRpc3BhdGNoOiBsb29rIHVwIGludGVyZmFjZXMgYnkgbmFtZS4KCSogamF2YS10cmVlLmggKGVudW0gamF2YV90cmVlX2luZGV4KTogQWRkCglKVElfU09GVF9MT09LVVBJTlRFUkZBQ0VNRVRIT0RCWU5BTUVfTk9ERQoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGQKCXNvZnRfbG9va3VwaW50ZXJmYWNlbWV0aG9kYnluYW1lX25vZGUuCgoJKiBnamF2YWguYyAocHJpbnRfbWV0aG9kX2luZm8pOiBGaW5hbCBtZXRob2RzIGhhdmUgdnRhYmxlIGVudHJpZXMsCglzbyBnamF2YWggbmVlZHMgdG8gb3V0cHV0IHRoZW0uCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzc19tZXRob2QpOiBHZW5lcmF0ZSB2dGFibGUgZW50cmllcyBmb3IgZmluYWwKCW1ldGhvZHMuCgkqIHBhcnNlLnkgKGludm9jYXRpb25fbW9kZSk6IFVzZSBJTlZPS0VfVklSVFVBTCBmb3IgaW5kaXJlY3QKCWRpc3BhdGNoLCBldmVuIGlmIGEgbWV0aG9kIGlzIGZpbmFsLgoKMjAwNC0wNS0yNSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChidWlsZF9zeW1ib2xfZW50cnkpOiBDb252ZXJ0IHRoZSBuYW1lcyBvZiBjb25zdHJ1Y3RvcnMKCXRvIGluaXRfaWRlbnRpZmllcl9ub2RlIHdoZW4gZ2VuZXJhdGluZyBhbiBlbnRyeSBmb3IgdGhlIGluZGlyZWN0CglkaXNwYXRjaCB0YWJsZS4KCgkqIGV4cHIuYyAoYnVpbGRfa25vd25fbWV0aG9kX3JlZik6IEdlbmVyYXRlIGluZGlyZWN0IGNhbGxzIGZvcgoJYWxsIG1ldGhvZHMgbWFya2VkIERFQ0xfRVhURVJOQUwgb3IgVFJFRV9QVUJMSUMuCgoyMDA0LTA1LTI0ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfa25vd25fbWV0aG9kX3JlZik6IE1ha2Ugc3VyZSBBUlJBWV9SRUYgYWNjZXNzIHRvCglhdGFibGUgZWxlbWVudCBpcyBvZiB0aGUgcmlnaHQgdHlwZS4KCgkqIGNsYXNzLmMgKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBDYXN0IHBvaW50ZXIgdG8gY29ycmVjdCB0eXBlCglmb3IgZmllbGQuCgoyMDA0LTA0LTIwICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBNZXJnZWQgd2l0aCBIRUFEIGFzIG9mIDIwMDQwNTE0LiBEaWZmIGFnYWluc3QKCWdjai1hYmktMi1tZXJnZS0yMDA0MDUxNC4KCjIwMDQtMDQtMTYgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogdmVyaWZ5LmMgKGNoZWNrX3BlbmRpbmdfYmxvY2spOiBEaXNhYmxlIHN1YnJvdXRpbmUgY2hlY2tzLgoJKGRlZmVyX21lcmdpbmcpOiBOZXcgZnVuY3Rpb24uCgkobWVyZ2VfdHlwZXMpOiBJZiB0eXBlcyBhcmUgZHVtbXksIHVzZSBkZWZlcl9tZXJnaW5nIHRvIGNvbWJpbmUgdGhlbS4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IElmIGludm9jYXRpb24gaXMgaW52b2tlaW50ZXJmYWNlIGFuZAoJdGFyZ2V0IGlzIGR1bW15LCBhc3N1bWUgdGFyZ2V0IHJlYWxseSBpcyBhbiBpbnRlcmZhY2UuCgoJKiBwYXJzZS55IChwYXRjaF9pbnZva2UpOiBCcmVhayBvdXQgY2FsbCB0byBqYXZhX2NyZWF0ZV9vYmplY3QuCgoJKiBsYW5nLmMgKGZsYWdfdmVyaWZ5X2ludm9jYXRpb25zKTogTmV3LgoKCSogamNmLXBhcnNlLmMgKGxvYWRfY2xhc3MpOiBJZiB3ZSd2ZSBhbHJlYWR5IGZhaWxlZCB0byBsb2FkIGEKCWNsYXNzLCBkb24ndCB0cnkgYWdhaW4uCgkobG9hZF9jbGFzcyk6IElmIHdlIGNhbid0IGZpbmQgYSAuY2xhc3MgZmlsZSwgZG9uJ3QgZmFpbCwgYnV0IGVtaXQKCWEgd2FybmluZy4KCShwYXJzZV9jbGFzc19maWxlKTogRG9uJ3QgYWN0IG9uIGR1bW15IG1ldGhvZHMuCgoJKiBqYXZhLXRyZWUuaCAoZmxhZ192ZXJpZnlfaW52b2NhdGlvbnMpOiBOZXcuCgkoVFlQRV9EVU1NWSk6IE5ldy4KCShsYW5nX3R5cGUuZHVtbXlfY2xhc3MpOiBOZXcgZmllbGQuCgkoamF2YV9jcmVhdGVfb2JqZWN0KTogTmV3IGZ1bmN0aW9uLgoJKE1FVEhPRF9EVU1NWSk6IE5ldy4KCgkqIGV4cHIuYyAoYnVpbGRfZmllbGRfcmVmKTogV2lkZW4gZmllbGQgb2Zmc2V0LgoJKHBvcF90eXBlXzApOiBJZiB0aGUgdHlwZSBpbiBzdGFja190eXBlX21hcCBpcyBhIFRSRUVfTElTVCwgY2hlY2sKCXRoYXQgZWFjaCBvZiBpdHMgZWxlbWVudHMgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBvbmUgd2UncmUKCXBvcHBpbmcuCgkocG9wX3R5cGVfMCk6IElzc3VlIGEgd2FybmluZyB0byBzYXkgdGhhdCB3ZSBuZWVkIHRvIGdlbmVyYXRlIGEKCXJ1bnRpbWUgY2hlY2suCgkoamF2YV9jcmVhdGVfb2JqZWN0KTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX2ZpZWxkX3JlZik6IE9ubHkgZ2VuZXJhdGUgaGFyZCByZWZzIGlmIHdlJ3JlIG5vdCB1c2luZwoJaW5kaXJlY3QgZGlzcGF0Y2guCgkoZXhwYW5kX2phdmFfZmllbGRfb3ApOiBJZiB3ZSdyZSB1c2luZyAhdmVyaWZ5X2ludm9jYXRpb25zIGFuZCB3ZQoJc2VlIGEgbWlzc2luZyBmaWVsZCwgZ2VuZXJhdGUgYSBkZWNsIGZvciBpdC4KCgkoZXhwYW5kX2ludm9rZSk6IElmIGEgY2xhc3MgZG9lc24ndCBoYXZlIHRoZSBtZXRob2Qgd2Ugc2VlayBhbmQKCXdlJ3JlIHVzaW5nICFmbGFnX3ZlcmlmeV9pbnZvY2F0aW9ucywgZ2VuZXJhdGUgYSBkZWNsIGZvciB0aGUKCW1ldGhvZCBub3cuCgoJKGJ1aWxkX2tub3duX21ldGhvZF9yZWYpOiBBbHdheXMgdXNlIGluZGlyZWN0IGRpc3BhdGNoIHZpYSB0aGUKCWF0YWJsZSBmb3Igc3RhdGljIG1ldGhvZHMuCgoJKGV4cGFuZF9qYXZhX05FVyk6IEJyZWFrIG91dCBvYmplY3QgY3JlYXRpb24gaW50byBuZXcgZnVuY3Rpb24sCglqYXZhX2NyZWF0ZV9vYmplY3QuCgoJKGNhbl93aWRlbl9yZWZlcmVuY2VfdG8pOiBJc3N1ZSBhIHdhcm5pbmcgdG8gc2F5IHRoYXQgd2UgbmVlZCB0bwoJZ2VuZXJhdGUgYSBydW50aW1lIGNoZWNrLgoKCSogY2xhc3MuYyAoc2V0X3N1cGVyX2luZm8pOiBJbmhlcml0IFRZUEVfRFVNTVkgZnJvbSBzdXJlY2xhc3MuCgkobWFrZV9tZXRob2RfdmFsdWUpOiBBbHNvIHVzZSBpbmRleCBmb3IgaW50ZXJmYWNlcy4KCShtYWtlX2NsYXNzX2RhdGEpOiBTa2lwIGR1bW15IGZpZWxkIGZvciBpbmhlcml0ZWQgZGF0YS4KCURvbid0IGJ1aWxkIG1ldGhvZCBhcnJheSBmb3IgZHVtbXkgbWV0aG9kcy4KCVNldCBzaXplX2luX2J5dGUgdG8gLTEgd2hlbiB1c2luZyBpbmlyZWN0IGRpc3BhdGNoCglEb24ndCBidWlsZCBhIGhhcmQgY2xhc3MgcmVmIGlmIHdlIGRvbid0IGhhdmUgYSBoYXJkIHJlZiB0byBvdXIKCXN1cGVyY2xhc3MsIG9yIGlmIHdlJ3JlIHVzaW5nIGluaXJlY3QgZGlzcGF0Y2guCglOdWxsIG91dCBkaXNwYXRjaCB0YWJsZXMuCgoJKGxheW91dF9jbGFzc19tZXRob2QpOiBEb24ndCBjb21wbGFpbiBhYm91dCBub24tc3RhdGljIG1ldGhvZAoJb3ZlcnJpZGVzIHN0YXRpYyBtZXRob2QgaXMgbWV0aG9kIGlzIGFydGlmaWNpYWwuCgoJKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBEaXNhYmxlIGF0YWJsZSByZWZlcmVuY2VzIHRvIHN0YXRpYwoJZmllbGRzIGZvciB0aGUgdGltZSBiZWluZy4KCgkobGF5b3V0X2NsYXNzX21ldGhvZHMpOiBDaGVjayBmb3IgQ0xBU1NfSU5URVJGQUNFIGFzCgl3ZWxsIGFzIENMQVNTX0FCU1RSQUNULgoKMjAwNC0xMS0yNCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogRG9uJ3QgY2hlY2sgZmxhZ19pbmxpbmVfZnVuY3Rpb25zLgoJKiBsYW5nLmMgKGZsYWdfcmVhbGx5X2lubGluZSk6IFJlbW92ZSB1bnVzZWQgZmxhZy4KCShqYXZhX2hhbmRsZV9vcHRpb24pOiBEb24ndCBzZXQgaXQgaGVyZS4gIFJlbW92ZSBzcGVjaWFsIGhhbmRsaW5nCglvZiBmbGFnX2lubGluZV9mdW5jdGlvbnMgZm9yIEphdmEuCgkoamF2YV9pbml0KTogRG9uJ3Qgc2V0IGZsYWdfaW5saW5lX3RyZWVzIGhlcmUuICBBbHJlYWR5IGRvbmUuLi4KCShqYXZhX3Bvc3Rfb3B0aW9ucyk6IC4uLmhlcmUuICBEb24ndCBjbGVhciBmbGFnX2lubGluZV9mdW5jdGlvbnMuCgoyMDA0LTExLTI0ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBqYXZhLWdpbXBsaWZ5LmMgKGphdmFfZ2ltcGxpZnlfbGFiZWxlZF9ibG9ja19leHByKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfZ2ltcGxpZnlfZXhpdF9ibG9ja19leHByKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfZ2ltcGxpZnlfZXhwcik6IFVzZSB0aGVtIHRvIGdpbXBsaWZ5IEVYSVRfQkxPQ0tfRVhQUiBhbmQKCUxBQkVMRURfQkxPQ0tfRVhQUi4KCSogamF2YS10cmVlLmRlZiAoTEFCRUxFRF9CTE9DS19FWFBSKTogTW92ZWQgZnJvbSB0cmVlLmRlZi4KCShFWElUX0JMT0NLX0VYUFIpOiBMaWtld2lzZS4KCSogamF2YS10cmVlLmggKExBQkVMRURfQkxPQ0tfTEFCRUwpOiBNb3ZlZCBmcm9tIHRyZWUuaC4KCShMQUJFTEVEX0JMT0NLX0JPRFkpOiBMaWtld2lzZS4KCShFWElUX0JMT0NLX0xBQkVMRURfQkxPQ0spOiBMaWtld2lzZS4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogRG9uJ3QgaGFuZGxlIHRoZSB1bnVzZWQKCUVYSVRfQkxPQ0tfUkVUVVJOIG9wZXJhbmQuICBVc2UgRVhJVF9CTE9DS19MQUJFTEVEX0JMT0NLIGluc3RlYWQgb2YKCVRSRUVfT1BFUkFORC4KCSogbGFuZy5jIChqYXZhX3RyZWVfaW5saW5pbmdfd2Fsa19zdWJ0cmVlcyk6IEhhbmRsZSBFWElUX0JMT0NLX0VYUFIuCgkoamF2YV9kdW1wX3RyZWUpOiBVc2UgTEFCRUxFRF9CTE9DS19MQUJFTCwgTEFCRUxFRF9CTE9DS19CT0RZLCBhbmQKCUVYSVRfQkxPQ0tfTEFCRUxFRF9CTE9DSyBpbnN0ZWFkIG9mIFRSRUVfT1BFUkFORC4gIERvbid0IGhhbmRsZSB0aGUKCXNlY29uZCBvcGVyYW5kIG9mIEVYSVRfQkxPQ0tfRVhQUi4KCSogcGFyc2UueSAoZmluZF9leHByX3dpdGhfd2ZsKTogVXNlIExBQkVMRURfQkxPQ0tfQk9EWSBpbnN0ZWFkIG9mCglUUkVFX09QRVJBTkQuCgkoYnVpbGRfYmNfc3RhdGVtZW50KTogVXNlIGJ1aWxkMSB0byBidWlsZCBFWElUX0JMT0NLX0VYUFIgbm9kZXMuCgoyMDA0LTExLTIzICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIHhyZWYuaCAoeHJlZl9mbGFnX3ZhbHVlKTogUmVtb3ZlLgoJKHhyZWZfc2V0X2RhdGEsIHhyZWZfZ2V0X2RhdGEpOiBMaWtld2lzZS4KCSh4cmVmX3NldF9jdXJyZW50X2ZwKTogTGlrZXdpc2UuCgkoWFJFRl9OT05FKTogTGlrZXdpc2UuCgkoWFJFRl9HRVRfREFUQSk6IExpa2V3aXNlLgoJKiB4cmVmLmMgKHhyZWZfZmxhZ192YWx1ZSk6IFJlbW92ZS4KCSh4cmVmX3NldF9kYXRhLCB4cmVmX2dldF9kYXRhKTogTGlrZXdpc2UuCgkoeHJlZl9zZXRfY3VycmVudF9mcCk6IExpa2V3aXNlLgoKMjAwNC0xMS0yMyAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBnamF2YWguYyAob3V0cHV0X2RpcmVjdG9yeSk6IE1ha2Ugc3RhdGljLgoJKHRlbXBfZGlyZWN0b3J5KTogTGlrZXdpc2UuCgoyMDA0LTExLTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGluc3RuX3B0cl90eXBlX25vZGUpOiBSZW1vdmVkLgoJKGxpbmVOdW1iZXJzX3B0cl90eXBlX25vZGUpOiBSZW1vdmVkLgoJKGppbnRfdHlwZSk6IFJlbW92ZWQuCgkoamludF9wdHJfdHlwZSk6IFJlbW92ZWQuCgoyMDA0LTExLTA5ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBqYXZhLzE1NTc2CgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IElnbm9yZSBERUNMX0VYUFIuCgkqIGV4cHIuYyAoYWx3YXlzX2luaXRpYWxpemVfY2xhc3NfcCk6IFJlZW5hYmxlLgoJKGJ1aWxkX2NsYXNzX2luaXQpOiBVc2UgYSB2YXJpYWJsZSB0byBzdG9yZSB0aGUgZGVjbC4gIEFsc28gdXNlCglib29sZWFuX2ZhbHNlX25vZGUgaW5zdGVhZCBvZiBpbnRlZ2VyX3plcm9fbm9kZS4KCSogcGFyc2UueSAoYXR0YWNoX2luaXRfdGVzdF9pbml0aWFsaXphdGlvbl9mbGFncyk6IEFkZCBhIGRlY2xfZXhwcgoJdG8gdGhlIGJsb2NrLgoKMjAwNC0xMS0wOCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTY4NDM6CgkqIGdqYXZhaC5jIChIQU5ETEVfRU5EX0ZJRUxEKTogQ2FsbCBwcmludF9maWVsZF9pbmZvIHdoZW4KCWdlbmVyYXRpbmcgYSBKTkkgaGVhZGVyLgoJKHByaW50X2ZpZWxkX2luZm8pOiBIYW5kbGUgSk5JIGhlYWRlcnMuCgkoam5pX3ByaW50X2Zsb2F0KTogTGlrZXdpc2UuCgkoam5pX3ByaW50X2RvdWJsZSk6IExpa2V3aXNlLgoKMjAwNC0xMS0wOCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBkZWNsLmMgKGVuZF9qYXZhX21ldGhvZCk6IFJlbW92ZSBkdXBsaWNhdGVkIGNvZGUuCgoyMDA0LTExLTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoJICAgIEdlcmFsZCBQZmVpZmVyICA8Z2VyYWxkQHBmZWlmZXIuY29tPgoKCSogbGV4LmggKEhBVkVfSUNPTlYpOiBVbmRlZmluZSBpZiB3ZSBkbyBub3QgaGF2ZSBIQVZFX0lDT05WX0gKCWFzIHdlbGwuCgoyMDA0LTExLTAyICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNzI2NQoJKiBjbGFzcy5jOiBSZWluc3RhdGUgMjAwNC0wOC0xOCBwYXRjaC4KCShtYWtlX2xvY2FsX2Z1bmN0aW9uX2FsaWFzKTogRG9uJ3QgY3JlYXRlIGFuIGFsaWFzIGZvciBleHRlcm4gKG5hdGl2ZSkKCWZ1bmN0aW9ucy4KCjIwMDQtMTAtMjIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgamF2YS8xNzI2NQoJKiBjbGFzcy5jIChtYWtlX2xvY2FsX2Z1bmN0aW9uX2FsaWFzKTogUmV2ZXJ0IDIwMDQtMDgtMTggY2hhbmdlLgoJKG1ha2VfbWV0aG9kX3ZhbHVlKTogTGlrZXdpc2UuCgoyMDA0LTEwLTIxICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE4MDkxOgoJKiBqY2YtcGFyc2UuYyAoc2V0X3NvdXJjZV9maWxlbmFtZSk6IEFkZCBjb2RlIHRvIGJ1aWxkIG5ldyBzZm5hbWUuCgoyMDA0LTEwLTIwICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoZW5kX2phdmFfbWV0aG9kKTogRG9uJ3QgZXhwYW5kIGlmIGZsYWdfc3ludGF4X29ubHkuCglSZW1vdmUgZHVwbGljYXRlZCBjb2RlIGJsb2NrLgoKMjAwNC0xMC0xOCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogTWFrZS1sYW5nLmluIChqYXZhL3BhcnNlLm8td2FybiwgamF2YS9wYXJzZS1zY2FuLm8td2Fybik6CglOZXcgcnVsZXMgdG8gd29yayBhcm91bmQgb2xkIEJpc29uIHdhcm5pbmdzLgoKMjAwNC0xMC0xNyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogY2xhc3MuYyAoaWRlbnRfc3Vic3QpOiBBbHdheXMgYWxsb2NhIGJ1ZmZlci4KCSogamF2YS1vcGNvZGVzLmggKExBU1RfQU5EX1VOVVNFRF9KQVZBX09QQ09ERSk6IEFkZCB0aGlzIGR1bW15CglvcGNvZGUgYWZ0ZXIgaW5jbHVkaW5nIGphdmFvcC5kZWYuCgkqIGpjZi1kdW1wLmMgKENIRUNLX1BDX0lOX1JBTkdFKTogUmV0dXJuIDAgZnJvbSB0aGUgYXJtIG9mIHRoZQoJY29uZGl0aW9uYWwgZXhwcmVzc2lvbiB0aGF0IGV4aXRzLCB0byBhdm9pZCB3YXJuaW5ncy4KCSogdmVyaWZ5LmMgKENIRUNLX1BDX0lOX1JBTkdFKTogTWFyayB0aGUgX19HTlVDX18gZGVmaW5pdGlvbiBhcwoJYSB1c2VyIG9mIGFuIGV4dGVuc2lvbi4KCSogd2luMzItaG9zdC5jOiBNb3ZlIGNoZWNrIGRvd24gdG8gaGF2ZSBub24tZW1wdHkgZmlsZSB3aGVuCglXSU4zMiBpcyBub3QgZGVmaW5lZC4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS13YXJuKTogQWRkIFNUUklDVF9XQVJOLgoJKGphdmEvamNmLWlvLm8td2Fybik6IERvbid0IGhhdmUgV2Vycm9yIGZvciB0aGlzIGZpbGUuCgkqIGpjZi1pby5jIChjYWNoaW5nX3N0YXQpOiBBZGQgRklYTUUgZm9yIG5vbi1QT1NJWCBzY2FuZGlyIHVzZS4KCjIwMDQtMTAtMTYgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGV4cHIuYyAoZXhwcl9hZGRfbG9jYXRpb24pOiBNb3ZlIGRlY2xhcmF0aW9uIHRvIGJlZm9yZSBhbGwKCXN0YXRlbWVudHMuCgkqIHBhcnNlLnkgKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBEaXR0by4KCSogbGV4LmMgKGphdmFfcGVla191bmljb2RlKTogRGl0dG8uCgoyMDA0LTEwLTE2ICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCgkqIGNoZWNrLWluaXQuYzogVXNlICU8LCAlPiBhbmQgJXEgZm9yIHF1b3RpbmcgaW4gZGlhZ25vc3RpY3MsCglpZiBwb3NzaWJsZSwgZWxzZSBjb252ZXJ0IGBmb28nIHRvICdmb28nLgoJKiBjbGFzcy5jOiBMaWtld2lzZS4KCSogZGVjbC5jOiBMaWtld2lzZS4KCSogZXhwci5jOiBMaWtld2lzZS4KCSogamNmLWlvLmM6IExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYzogTGlrZXdpc2UuCgkqIGxhbmcuYzogTGlrZXdpc2UuCgkqIGxleC5jOiBMaWtld2lzZS4KCSogcGFyc2UuaDogTGlrZXdpc2UuCgoyMDA0LTEwLTE2ICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCgkqIHBhcnNlLnkgKHBhcnNlX3dhcm5pbmdfY29udGV4dCk6IFJlbW92ZSBBVFRSSUJVVEVfUFJJTlRGXzIgYW5kCglyZW5hbWUgcGFyYW1ldGVyICdtc2cnIHRvICdtc2dpZCcgaW4gZnVuY3Rpb24gZGVjbGFyYXRpb24uCgkoaXNzdWVfd2FybmluZ19lcnJvcl9mcm9tX2NvbnRleHQpOiBMaWtld2lzZS4KCSh5eWVycm9yKTogUmVuYW1lIHBhcmFtZXRlciAnbXNnJyB0byAnbXNnaWQnLgoJKGFsbCBvdmVyKTogVXNlIG5ldyBxdW90aW5nIHN0eWxlIGZvciBkaWFnbm9zdGljcy4KCjIwMDQtMTAtMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBib2VobS5jLCBidWlsdGlucy5jLCBqYXZhLWV4Y2VwdC5oLCBqY2YtaW8uYywgamNmLXBhdGguYywKCWpjZi5oLCBsYW5nLXNwZWNzLmgsIGxleC5jLCBsZXguaCwgcmVzb3VyY2UuYywgd2luMzItaG9zdC5jOgoJVXBkYXRlIGNvcHlyaWdodC4KCjIwMDQtMTAtMTQgIE1hdHQgQXVzdGVybiAgPGF1c3Rlcm5AYXBwbGUuY29tPgoKCSogbGFuZy5jIChqYXZhX3RyZWVfaW5saW5pbmdfd2Fsa19zdWJ0cmVlcyk6IExhc3QgYXJnIGlzIHN0cnVjdAoJcG9pbnRlcl9zZXRfdCogbm93LgoKMjAwNC0xMC0xMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTU1Nzg6CgkqIGxhbmcub3B0ICgtLWV4dGRpcnMpOiBEb2N1bWVudC4KCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogUmVjb2duaXplIC1lbmNvZGluZyBhbmQKCS1leHRkaXJzLgoKMjAwNC0xMC0wNiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogcGFyc2UueSAoaXNzdWVfd2FybmluZ19lcnJvcl9mcm9tX2NvbnRleHQpOiBVc2UgdmFfbGlzdCAqCglpbnN0ZWFkIG9mIHZhX2xpc3QgcGFyYW1ldGVyLgoJKHBhcnNlX2Vycm9yX2NvbnRleHQpOiBVcGRhdGUgY2FsbC4KCShwYXJzZV93YXJuaW5nX2NvbnRleHQpOiBMaWtld2lzZS4KCjIwMDQtMTAtMDUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwYXJzZS55LCBwYXJzZS1zY2FuLnk6IEFkZCBsaXN0IG9mIGRpYWdub3N0aWMgbWVzc2FnZXMgdG8KCWluc3VsYXRlIHRyYW5zbGF0aW9uIHRlbXBsYXRlIGZyb20gdmVyc2lvbiBvZiB5YWNjL2Jpc29uIHVzZWQKCXRvIGNvbXBpbGUgdGhlIGdyYW1tYXIuCgoyMDA0LTEwLTA1ICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCglQcmVwYXJlIGZvciAlcSwgJTwgYW5kICU+IGluIGRpYWdub3N0aWMgbWVzc2FnZSBzdHJpbmdzLgoJKiBqYXZhLXRyZWUuaCAocGFyc2VfZXJyb3JfY29udGV4dCk6IHJlbW92ZSBBVFRSSUJVVEVfUFJJTlRGXzIuCglOYW1lIHNlY29uZCBwYXJhbWV0ZXIgJ21zZ2lkJy4KCSogcGFyc2UueTogQWRkaXRpb25hbGx5IGluY2x1ZGUgcHJldHR5LXByaW50LmggYW5kIGRpYWdub3N0aWMuaC4KCShpc3N1ZV93YXJuaW5nX2Vycm9yX2Zyb21fY29udGV4dCk6IFVzZSBwcmV0dHktcHJpbnRlciBmdW5jdGlvbnMKCWluc3RlYWQgb2YgdnNwcmludGYgZm9yIGNvbnN0cnVjdGluZyBmb3JtYXR0ZWQgbWVzc2FnZXMuIFJlbmFtZQoJcGFyYW1ldGVyICdtc2cnIHRvICdtc2dpZCcuCgkocGFyc2VfZXJyb3JfY29udGV4dCk6IFJlbmFtZSBwYXJhbWV0ZXIgJ21zZycgdG8gJ21zZ2lkJy4KCShwYXJzZV93YXJuaW5nX2NvbnRleHQpOiBMaWtld2lzZS4KCjIwMDQtMTAtMDUgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTc3NzkKCSogamNmLXBhcnNlLmMgKHBhcnNlX3ppcF9maWxlX2VudHJpZXMpOiBJZiBhIGNsYXNzIGhhcyBhCglzdXBlcmNsYXNzIGFuZCBhIFRZUEVfU0laRSBvZiB6ZXJvLCBsYXkgaXQgb3V0LgoKMjAwNC0wOS0zMCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNzczMwoJKiBqY2YtcGFyc2UuYyAoY29tcHV0ZV9jbGFzc19uYW1lKTogUmV3cml0ZS4KCjIwMDQtMTAtMDEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGphdmEuYyAoamF2YV9leHBhbmRfYm9keSk6IFVwZGF0ZSBjYWxsIG9mIHRyZWVfcmVzdF9vZl9jb21waWxhdGlvbi4KCjIwMDQtMTAtMDEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBsZXguYzogRml4IGEgY29tbWVudCB0eXBvLgoKMjAwNC0xMC0wMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGphdmEtdHJlZS5oOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA0LTA5LTMwICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCglTaW1wbGlmeSBsZXhlci4gIEltcGxlbWVudCAtLWVuYWJsZS1tYXBwZWQtbG9jYXRpb24gc3VwcG9ydC4KCSogamNmLXBhcnNlLmMgKHBhcnNlX2NsYXNzX2ZpbGUpOiAgVXNlIGxpbmVtYXBfbGluZV9zdGFydC4KCShwYXJzZV9zb3VyY2VfZmlsZV8xKTogUGFzcyBmaWxlbmFtZSBhcyBleHRyYSBwYXJhbWV0ZXIsIHNvIHdlIGNhbiBjYWxsCglsaW5lbWFwX2FkZCBhbmQgc2V0IGlucHV0X2xvY2F0aW9uIGhlcmUsIHJhdGhlciB0aGFuIGluIGJvdGggY2FsbGVycy4KCShyZWFkX2NsYXNzKTogUGFzcyBjb3BpZWQgZmlsZW5hbWUgdG8gcGFyc2Vfc291cmNlX2ZpbGVfMS4KCURvbid0IGluaXRpYWxpemUgd2ZsX29wZXJhdG9yIC0gb25seSBuZWVkZWQgZm9yIHNvdXJjZSBjb21waWxhdGlvbi4KCShyZWFkX2NsYXNzLCBqY2ZfcGFyc2UpOiAgQ2FsbCBsaW5lbWFwX2FkZCB3aXRoIExDX0xFQVZFLgoJKiBsZXguaDogIFJlbW92ZSBhIGJ1bmNoIG9mIGRlYnVnZ2luZyBtYWNyb3MuCgkqIGxleC5oIChzdHJ1Y3RfamF2YV9saW5lLCBzdHJ1Y3QgamF2YV9lcnJvcik6ICBSZW1vdmUgdHlwZXMuCgkoSkFWQV9DT0xVTU5fREVMVEEpOiAgUmVtb3ZlIC0gdXNlIGphdmFfbGV4ZXIubmV4dF9jb2x1bXMgaW5zdGVhZC4KCShzdHJ1Y3QgamF2YV9sY19zKTogIFJlbW92ZSBwcmV2X2NvbCBmaWVsZC4KCShzdHJ1Y3QgamF2YV9sZXhlcik6ICBOZXcgZmllbGRzIG5leHRfdW5pY29kZSwgbmV4dF9jb2x1bW5zLCBhbmQKCWF2YWlsX3VuaWNvZGUuICBOZXcgcG9zaXRpb24gZmllbGQsIGFuZCBtYXliZSB0b2tlbl9zdGFydCBmaWVsZC4KCURvbid0IG5lZWQgaGl0X2VvZiBmaWVsZCAtIHVzZSBuZXh0X3VuaWNvZGUgPT0gLTEgaW5zdGVhZC4KCShKQVZBX0lOVEVHRVJBTF9SQU5HRV9FUlJPUik6ICBSZW5hbWUgdG8gSkFWQV9SQU5HRV9FUlJPUi4KCShKQVZBX1JBTkdFX0VSUk9SLCBKQVZBX0ZMT0FUX0FOR0VfRVJST1IpOiAgVXBkYXRlIGFjY29yZGluZ2x5LgoJKiBwYXJzZS5oOiAgVmFyaW91cyBjaGFuZ2VzIGZvciBVU0VfTUFQUEVEX0xPQ0FUSU9OLgoJKEVYUFJfV0ZMX0VNSVRfTElORV9OT1RFKTogWFhYCgkoQlVJTERfRVhQUl9XRkwsIEVYUFJfV0ZMX0FERF9DT0wpOiBSZW1vdmUgbm8tbG9uZ2VyLXVzZWQgbWFjcm9zLgoJKHN0cnVjdCBwYXJzZXJfY3R4dCk6ICBOZXcgZmlsZV9zdGFydF9sb2NhdGlvbiBmaWVsZC4KCVJlbW92ZSBwX2xpbmUsIGNfbGluZSBmaWVsZHMgc2luY2Ugd2Ugbm8gbG9uZ2VyIHNhdmUgbGluZXMuCglSZW1vdmUgZWxjLCBsaW5lbm8sIGFuZCBjdXJyZW50X2pjZiBmaWVsZHMgLSBubyBsb25nZXIgdXNlZC4KCSogcGFyc2UueTogIFVwZGF0ZXMgZm9yIFVTRV9NQVBQRURfTE9DQVRJT04gYW5kIG5ldyBsZXhlci4KCURvbid0IHVzZSBFWFBSX1dGTF9BRERfQ09MIHNpbmNlIHRoYXQgaXNuJ3QgdHJpdmlhbCB3aXRoCglzb3VyY2VfbG9jYXRpb24gYW5kIGlzIHByb2JhYmx5IG5vdCBuZWVkZWQgYW55bW9yZSBhbnl3YXkuCglVc2UgbmV3IGV4cHJfYWRkX0xvY2F0aW9uIGZ1bmN0aW9uLgoJKFNFVF9FWFBSX0xPQ0FUSU9OX0ZST01fVE9LRU4pOiAgTmV3IGNvbnZlbmllbmNlIG1hY3JvLgoJKGphdmFfcG9wX3BhcnNlcl9jb250ZXh0KTogIE1pbm9yIGNsZWFudXAuCgkoamF2YV9wYXJzZXJfY29udGV4dF9zYXZlX2dsb2JhbCwgamF2YV9wYXJzZXJfY29udGV4dF9yZXN0b3JlX2dsb2JhbCwKCWphdmFfcG9wX3BhcnNlcl9jb250ZXh0KTogIFNhdmUvcmVzdG9yZSBpbnB1dF9sb2NhdGlvbiBhcyBhIHVuaXQuCgkoaXNzdWVfd2FybmluZ19lcnJvcl9mcm9tX2NvbnRleHQpOiAgSWYgVVNFX01BUFBFRF9MT0NBVElPTiB0YWtlCglhIHNvdXJjZV9sb2NhdGlvbiBpbnN0ZWFkIG9mIGEgd2ZsIGNvbnRleHQgbm9kZS4KCShjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24pOiAgaW5wdXRfZmlsZW5hbWUgaXMgbm90IGFkZHJlc3NhYmxlLgoJKGNyZWF0ZV9hcnRpZmljaWFsX21ldGhvZCk6ICBDYWxsaW5nIGphdmFfcGFyc2VyX2NvbnRleHRfc2F2ZV9nbG9iYWwKCWFuZCBqYXZhX3BhcnNlcl9jb250ZXh0X3Jlc3RvcmVfZ2xvYmFsIGlzIG92ZXJraWxsLiAgSW5zdGVhZCwKCXRlbXBvcmFyaWx5IHNldCBpbnB1dF9sb2NhdGlvbiBmcm9tIGNsYXNzIGRlY2wuCgkoamF2YV9sYXlvdXRfc2Vlbl9jbGFzc19tZXRob2RzKTogU2V0IGlucHV0X2xvY2F0aW9uIGZyb20gbWV0aG9kIGRlY2wuCgkoZml4X2NvbnN0cnVjdG9ycyk6IE1ha2UgbW9yZSByb2J1c3QgaWYgbm8gRVhQUl9XSVRIX0ZJTEVfTE9DQVRJT04uCgkoZmluaXNoX2xvb3BfYm9keSk6ICBMaWtld2lzZS4KCSogbGV4LmM6IFVwZGF0ZXMgZm9yIFVTRV9NQVBQRURfTE9DQVRJT04uICBVc2UgYnVpbGRfdW5rbndvbl93ZmwuCgkoamF2YV9zcHJpbnRfdW5pY29kZSk6ICBUYWtlIGEgY2hhcmFjdGVyLCBub3QgaW5kZXggaW4gbGluZS4KCShqYXZhX3NuZWFrX3VuY29kZSk6ICBSZXBsYWNlZCBieSBqYXZhX3BlZWtfdW5pY29kZS4KCShqYXZhX3VuZ2V0X3VuaWNvZGUpOiAgTm8gbG9uZ2VyIHVzZWQuCgkoamF2YV9hbGxvY2F0ZV9uZXdfbGluZS4gamF2YV9zdG9yZV91bmljb2RlKTogIFJlbW92ZWQsIHNpbmNlIHdlCglubyBsb25nZXIgcmVtZW1iZXIgImxpbmVzIi4KCShqYXZhX25ld19sZXhlcik6ICBVcGRhdGUgZm9yIG5ldyBkYXRhIHN0cnVjdHVyZXMuCgkoamF2YV9yZWFkX2NoYXIpOiAgTW92ZSB1bmdldF92YWx1ZSBjaGVja2luZyB0byBqYXZhX3JlYWRfdW5pY29kZS4KCShqYXZhX2dldF91bmljb2RlLCBqYXZhX3BlZWtfdW5pY29kZSwgamF2YV9uZXh0X3VuaWNvZGUpOiBOZXcgbW9yZQoJZWZmaWNpZW50IGZ1bmN0aW9ucyB0aGF0IGFyZSB1c2VkIGRpcmVjdGx5IHdoZW4gbGV4aW5nLgoJKGphdmFfcmVhZF91bmljb2RlX2NvbGxhcHNpbmdfdGVybWluYXRvcnMpOiAgTm8gbG9uZ2VyIG5lZWRlZC4KCShqYXZhX3BhcnNlX2VuZF9jb21tZW50LCBqYXZhX3BhcnNlX2VzY2FwZV9zZXF1ZW5jZSwgZG9famF2YV9sZXgpOgoJUmUtb3JnYW5pemUgdG8gdXNlIGphdmFfcGVla191bmljb2RlIHRvIGF2b2lkIGphdmFfdW5nZXRfdW5pY29kZS4KCShqYXZhX3BhcnNlX2VzY2FwZV9zZXF1ZW5jZSk6ICBSZXdyaXRlIHRvIGJlIHNpbXBsZXIgLyBtb3JlIGVmZmljaWVudC4KCShkb19qYXZhX2xleCk6ICBMb3RzIG9mIG1vdmluZ3MgYXJvdW5kIHRvIGF2b2lkIGphdmFfdW5nZXRfdW5pY29kZSwKCWNvbWJpbmUgc3dpdGNoIGJyYW5jaGVzLCBhbmQgdGVzdCBmb3IgY29tbW9uIHRva2VuIGtpbmRzIGVhcmxpZXIuCgkoamF2YV9sZXhfZXJyb3IpOiAgUmV3cml0ZS4KCSoganYtc2Nhbi5jIChleHBhbmRfbG9jYXRpb24pOiBOZXcgZnVuY3Rpb24sIGNvcGllZCBmcm9tIHRyZWUuYy4KCShtYWluKTogU2V0IGN0eHAtPmZpbGVuYW1lIGluc3RlYWQgb2Ygc2V0dGluZyBpbnB1dF9maWxlbmFtZSBkaXJlY3RseS4KCjIwMDQtMDktMzAgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCU1vcmUgY2xlYW51cCBmb3IgLS1lbmFibGUtbWFwcGVkLWxvY2F0aW9uLgoJKiBjbGFzcy5jIChwdXNoX2NsYXNzKTogIElmIFVTRV9NQVBQRURfTE9DQVRJT04gZG9uJ3Qgc2V0CglpbnB1dF9sb2NhdGlvbiBoZXJlLiAgSW5zdGVhZCBkbyBpdCBpbiBnaXZlX25hbWVfdG9fY2xhc3MuCgkoYnVpbGRfY2xhc3NfcmVmKTogIFNldCBERUNMX0FSVElGSUNJQUwsIGZvciB0aGUgc2FrZSBvZiBkd2FyZjJvdXQuCgkqIGV4cHIuYyAoZXhwYW5kX2J5dGVfY29kZSk6IENhbGwgbGluZW1hcF9saW5lX3N0YXJ0LgoJKiBleHByLmMgKGJ1aWxkX2V4cHJfd2ZsKTogIElmIFVTRV9NQVBQRURfTE9DQVRJT04sIGNoYW5nZSBmaW5hbAoJcGFyYW1ldGVycyB0byBhIHNvdXJjZV9sb2NhdGlvbi4gIERvbid0IG5lZWQgRVhQUl9XRkxfRklMRU5BTUVfTk9ERS4KCShleHByX2FkZF9sb2NhdGlvbik6ICBOZXcgZnVuY3Rpb24sIGlmIFVTRV9NQVBQRURfTE9DQVRJT04uCgkqIGNsYXNzLmMgKG1heWJlX2xheW91dF9zdXBlcl9jbGFzcyk6ICBBZGp1c3QgYnVpbGRfZXhwcl93ZmwgY2FsbAoJdG8gVVNFX01BUFBFRF9MT0NBVElPTiBjYXNlLgoKCSogamF2YS10cmVlLmggKEpBVkFfRklMRV9QLCBaSVBfRklMRV9QKTogIFJlbW92ZSB1bnVzZWQgbWFjcm9zLgoJKiBqY2YtcGFyc2UuYyAoamF2YV9wYXJzZV9maWxlKTogRG9uJ3Qgc2V0IGlucHV0X2ZpbGVuYW1lLgoJVXNlIElTX0FfQ09NTUFORF9MSU5FX0ZJTEVOQU1FX1AgdG8gY2hlY2sgZm9yIGR1cGxpY2F0ZSBmaWxlbmFtZXMuCglDcmVhdGUgYSBsaXN0IG9mIFRSQU5TTEFUSU9OX1VOSVRfREVDTC4KCShjdXJyZW50X2ZpbGVfbGlzdCk6ICBJcyBub3cgYSBUUkFOU0xBVElPTl9VTklUX0RFQ0wgY2hhaW4uICBUaGUKCXJlYXNvbiBpcyBzbyB3ZSBjYW4gc2V0IGEgREVDTF9TT1VSQ0VfTE9DQVRJT04gZm9yIGVhY2ggZmlsZS4KCShqYXZhX3BhcnNlX2ZpbGUpOiAgRG9uJ3Qgc2V0IHVudXNlZCBaSVBfRklMRV9QLCBKQVZBX0ZJTEVfUC4uCglDcmVhdGUgbGluZS1tYXAgTENfRU5URVIvTENfTEVBVkUgZW50cmllcyBmb3IgYXJjaGl2ZSBpdHNlbGYuCgkoZmlsZV9zdGFydF9sb2NhdGlvbik6ICBOZXcgc3RhdGljLgoJKHNldF9zb3VyY2VfZmlsZW5hbWUpOiAgQXZvaWQgZXh0cmEgYWNjZXNzIHRvIGlucHV0X2ZpbGVuYW1lIG1hY3JvLgoJQ29uY2F0ZW5hdGUgbmV3IG5hbWUgd2l0aCBjbGFzcydzIHBhY2thZ2UgcHJlZml4LgoJKHNldF9zb3VyY2VfZmlsZW5hbWUsIGdpdmVfbmFtZV90b19jbGFzcyk6IFVwZGF0ZS4KCShnaXZlX25hbWVfdG9fY2xhc3MpOiAgU2V0IGNsYXNzJ3MgImxpbmUgMCIgaW5wdXRfbG9jYXRpb24gaGVyZS4KCShwYXJzZV9jbGFzc19maWxlKTogIFNldCBpbnB1dF9sb2NhdGlvbiBhcyBhIHVuaXQuCgoJKiBqY2YtcGFyc2UuYyAobG9hZF9jbGFzcyk6IFNhbml0eSB0ZXN0IGlmIG1pc3NpbmcgaW5uZXIgY2xhc3MgZmlsZS4KCjIwMDQtMDktMjkgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogamF2YS10cmVlLmg6ICBSZWRlZmluZSBzb21lIG1hY3JvcyBhbmQgYWRkIHNvbWUgZGVjbGFyYXRpb24KCXRvIGhhbmRsZSB0aGUgVVNFX01BUFBFRF9MT0NBVElPTiBjYXNlLgoJKiBwYXJzZS5oIChFWFBSX1dGTF9RVUFMSUZJQ0FUSU9OKTogIFVzZSBvcGVyYW5kIDEsIG5vdCAyLgoJKiBqYXZhLXRyZWUuaCAoRVhQUl9XRkxfRklMRU5BTUVfTk9ERSk6ICBVc2Ugb3BlcmFuZCAyLCBub3QgMS4KCSogamF2YS10cmVlLmRlZiAoRVhQUl9XSVRIX0ZJTEVfTE9DQVRJT04pOiBPbmx5IG5lZWQgdHdvIG9wZXJhbmRzIGluCglVU0VfTUFQUEVEX0xPQ0FUSU9OIGNhc2UsIHNpbmNlIEVYUFJfV0ZMX0ZJTEVOQU1FX05PREUgaXMgZ29uZS4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IEhhbmRsZSBVU0VfTUFQUEVEX0xPQ0FUSU9OIGNhc2UuCgkqIGRlY2wuYyAoZmluaXNoX21ldGhvZCwgamF2YV9hZGRfc3RtdCk6IExpa2V3aXNlLgoJKiBqYXZhLWdpbXBsaWZ5LmMgKGphdmEtZ2ltcGxpZnkuYyk6ICBMaWtld2lzZS4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogIExpa2V3aXNlLgoJKiBsYW5nLmMgKGphdmFfcG9zdF9vcHRpb25zKTogTGlrZXdpc2UgLSBjYWxsIGxpbmVtYXBfYWRkLgoKMjAwNC0wOS0yOSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNzAwNwoJKiBwYXJzZS55IChwYXRjaF9iaW5vcCk6IERvbid0IG1lc3Mgd2l0aCB0aGUgVFJFRV9TSURFX0VGRkVDVFMgb2YgdGhlCglyZXN1bHQgb2YgVFJVTkNfTU9EX0VYUFIuCgkocGF0Y2hfdW5hcnlvcCk6IExpa2V3aXNlIGZvciBDT05WRVJUX0VYUFIsIHdoaWNoIG1heSB0aHJvdy4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogTWFyawoJc29mdF9sb29rdXBpbnRlcmZhY2VtZXRob2Rfbm9kZSBhbmQgc29mdF9pbnN0YW5jZW9mX25vZGUgcHVyZS4KCjIwMDQtMDktMjggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE1NzEwOgoJKiBjbGFzcy5jIChhZGRfbWlyYW5kYV9tZXRob2RzKTogTG9hZCBzdXBlcmludGVyZmFjZSBpZiBub3QKCWFscmVhZHkgbG9hZGVkLgoKMjAwNC0wOS0yOCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNzU4NgoJKiBqY2YtcGFyc2UuYyAobG9hZF9jbGFzcyk6IERvbid0IHRyeSB0byByZWFkIGEgY2xhc3MgdGhhdCB3ZSd2ZQoJYWxyZWFkeSByZWFkLgoKMjAwNC0wOS0yOCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAobG9hZF9jbGFzcyk6IEJhY2sgb3V0IHByZXZpb3VzIGJyb2tlbiBwYXRjaC4KCjIwMDQtMDktMjggIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTc1ODYKCSogamNmLXBhcnNlLmMgKGxvYWRfY2xhc3MpOiBEb24ndCB0cnkgdG8gcmVhZCBhIGNsYXNzIHRoYXQgd2UndmUKCWFscmVhZHkgcmVhZC4KCUNoZWNrIHRoYXQgd2UgcmVhbGx5IGRpZCByZWFkIHRoZSByaWdodCBjbGFzcy4KCjIwMDQtMDktMjUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE3NTAwOgoJKiBwYXJzZS55IChjcmVhdGVfYXJ0aWZpY2lhbF9tZXRob2QpOiBVc2UgYWRkX21ldGhvZF8xLgoKMjAwNC0wOS0yNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGV4cHIuYywgamNmLWR1bXAuYywgcGFyc2Utc2Nhbi55LCBwYXJzZS55OiBGaXgKCWNvbW1lbnQgdHlwb3MuCgkqIGdjai50ZXhpOiBGaXggdHlwb3MuCgoyMDA0LTA5LTI0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNTY1NjoKCSogcGFyc2UueSAoY2xhc3NfaW5zdGFuY2VfY3JlYXRpb25fZXhwcmVzc2lvbik6IFNldCBgJCQnIHRvIE5VTEwKCWluIGVycm9yIHBhcnRzIG9mIHJ1bGUuCgkodW5hcnlfZXhwcmVzc2lvbik6IERvbid0IGNhbGwgZXJyb3JfaWZfbnVtZXJpY19vdmVyZmxvdyB3aGVuICQxCglpcyBOVUxMLgoKMjAwNC0wOS0yNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTY3ODk6CgkqIHBhcnNlLnkgKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IFNldAoJQ0FOX0NPTVBMRVRFX05PUk1BTExZIG9uIGZpcnN0IGNhbGwgd2hlbiBjaGFpbmluZyBzdGF0aWMgY2FsbHMuCgkqIGV4cHIuYyAoZm9yY2VfZXZhbHVhdGlvbl9vcmRlcik6IENoZWNrIGZvciBlbXB0eSBhcmd1bWVudCBsaXN0CglhZnRlciBzdHJpcHBpbmcgQ09NUE9VTkRfRVhQUi4KCjIwMDQtMDktMjMgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTY5Mjc6CgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogQ2FsbCBwYXRjaF9zdHJpbmcoKSBvbiBPcGVyYW5kIDEgb2YKCUNPTkRfRVhQUnMuCgoyMDA0LTA5LTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNzMyOToKCSogamF2YS1naW1wbGlmeS5jIChqYXZhX2dpbXBsaWZ5X2V4cHIpIDxTQVZFX0VYUFI+OiBJZ25vcmUgY2FzZQoJd2hlcmUgb3BlcmFuZCBpcyBudWxsLgoKMjAwNC0wOS0yMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTczODA6CgkqIHBhcnNlLnkgKG5vdF9hY2Nlc3NpYmxlX3ApOiBBbGxvdyBhY2Nlc3MgdG8gcHJvdGVjdGVkIG1lbWJlcnMKCWV2ZW4gd2hlbiBjbGFzcyBpcyBub3Qgc3RhdGljLgoKMjAwNC0wOS0yMiAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2UtbGFuZy5pbjogUmV2ZXJ0IHRoZSBnY2Mtbm9uZS5vIGNoYW5nZS4KCjIwMDQtMDktMjIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9hbm9ueW1vdXNfY2xhc3MpOiBWRUNfc3BhY2UgcmV0dXJucyB0cnVlIGlmIHRoZXJlCglpcyBzcGFjZS4KCjIwMDQtMDktMjEgIE1hdHQgQXVzdGVybiAgPGF1c3Rlcm5AYXBwbGUuY29tPgoKCUZpeCBib290c3RyYXAuCgkqIGdqYXZhaC5jIChmcmVlX21ldGhvZF9uYW1lX2xpc3QpOiBGaXggZnVuY3Rpb24gZGVmaW5pdGlvbiBzbwoJaXQncyBhIHByb3BlciBDIHByb3RvdHlwZS4KCjIwMDQtMDktMjEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE3NTc1OgoJKiBnamF2YWguYyAoZnJlZV9tZXRob2RfbmFtZV9saXN0KTogTmV3IG1ldGhvZC4KCShtYWluKTogQ2FsbCBpdC4KCjIwMDQtMDktMTcgIEplZmZyZXkgRC4gT2xkaGFtICA8b2xkaGFtQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGphdmEtdHJlZS5kZWY6IFVzZSB0cmVlX2NvZGVfY2xhc3MgZW51bWVyYXRpb24gY29uc3RhbnRzCglpbnN0ZWFkIG9mIGNvZGUgbGV0dGVycy4KCSogamF2YS1naW1wbGlmeS5jLCBqY2Ytd3JpdGUuYywgbGFuZy5jLCBwYXJzZS55OiBVcGRhdGUgZm9yCgluZXcgdHJlZS1jbGFzcyBlbnVtZXJhdGlvbiBjb25zdGFudHMuCgoyMDA0LTA5LTEzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNzIxNjoKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzX21ldGhvZCk6IFB1dCBzeW50aGV0aWMgbWV0aG9kcyBpbnRvIHRoZQoJdnRhYmxlLgoKMjAwNC0wOS0xMSAgQW5kcmV3IFBpbnNraSAgPGFwaW5za2lAYXBwbGUuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhL2dnYy1ub25lLmMpOiBDaGFuZ2UgZGVwZW5kZW5jeQoJZm9yIGdnYy5oIGludG8gJChHR0NfSCkuCgoyMDA0LTA5LTExICBNb2hhbiBFbWJhciAgPGdudXN0dWZmQHRoaXNpc2Nvb2wuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhL3dpbjMyLWhvc3Qubyk6IEFkZCBkZXBlbmRlbmN5IG9uCgljb3JldHlwZXMuaC4KCSogd2luMzItaG9zdC5jOiBBZGQgaW5jbHVkZXMgZm9yIGNvcmV0eXBlcy5oLCBqY2YuaAoKMjAwNC0wOS0xMSAgTW9oYW4gRW1iYXIgIDxnbnVzdHVmZkB0aGlzaXNjb29sLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoR0NKSF9PQkpTKTogQ2hhbmdlIGRlcGVuZGVuY3kgZnJvbQoJZ2djLW5vbmUubyB0byBqYXZhL2dnYy1ub25lLm8KCShKQ0ZEVU1QX09CSlMpOiBMaWtld2lzZS4KCShqYXZhL2dnYy1ub25lLm8pOiBOZXcgdGFyZ2V0LgoKMjAwNC0wOC0yNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGJvZWhtLmMgKGdldF9ib2VobV90eXBlX2Rlc2NyaXB0b3IpOiAgQWRqdXN0IGJ1aWxkX2ludF9jc3QgY2FsbHMuCgkqIGNsYXNzLmMgKGJ1aWxkX3V0ZjhfcmVmLCBidWlsZF9zdGF0aWNfZmllbGRfcmVmLAoJbWFrZV9maWVsZF92YWx1ZSwgbWFrZV9tZXRob2RfdmFsdWUsIGdldF9kaXNwYXRjaF90YWJsZSwKCW1ha2VfY2xhc3NfZGF0YSwgZW1pdF9zeW1ib2xfdGFibGUsIGVtaXRfY2F0Y2hfdGFibGUpOiBMaWtld2lzZS4KCSogY29uc3RhbnRzLmMgKGdldF90YWdfbm9kZSwgYnVpbGRfcmVmX2Zyb21fY29uc3RhbnRfcG9vbCwKCWJ1aWxkX2NvbnN0YW50c19jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCSogZXhwci5jIChidWlsZF9qYXZhX2FycmF5X2xlbmd0aF9hY2Nlc3MsIGJ1aWxkX25ld2FycmF5LAoJZXhwYW5kX2phdmFfbXVsdGlhbmV3YXJyYXksIGV4cGFuZF9qYXZhX3B1c2hjLCBleHBhbmRfaWluYywKCWJ1aWxkX2phdmFfYmlub3AsIGJ1aWxkX2ZpZWxkX3JlZiwgZXhwYW5kX2phdmFfYWRkX2Nhc2UsCglleHBhbmRfamF2YV9jYWxsLCBidWlsZF9rbm93bl9tZXRob2RfcmVmLCBidWlsZF9pbnZva2V2aXJ0dWFsLAoJYnVpbGRfaW52b2tlaW50ZXJmYWNlLCBidWlsZF9qbmlfc3R1Yik6IExpa2V3aXNlLgoJKiBqYXZhLWdpbXBsaWZ5LmMgKGphdmFfZ2ltcGxpZnlfbmV3X2FycmF5X2luaXQpOiBMaWtld2lzZS4KCSogamNmLXBhcnNlLmMgKGdldF9jb25zdGFudCk6IExpa2V3aXNlLgoJKiBsZXguYyAoZG9famF2YV9sZXgpOiBMaWtld2lzZS4KCSogcGFyc2UueSAocGF0Y2hfYmlub3AsIHBhdGNoX3VuYXJ5b3AsIHBhdGNoX2Nhc3QsCglidWlsZF9uZXdhcnJheV9ub2RlLCBwYXRjaF9uZXdhcnJheSk6IExpa2V3aXNlLgoJKiByZXNvdXJjZS5jIChjb21waWxlX3Jlc291cmNlX2RhdGEpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX3ByaW1fYXJyYXlfdHlwZSk6IExpa2V3aXNlLgoKMjAwNC0wOC0yNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkanVzdAoJaW5pdGlhbGl6ZV9zaXpldHlwZXMgY2FsbC4KCjIwMDQtMDgtMjMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBqdi1zY2FuLmMgKGZhbmN5X2Fib3J0KTogQWRkLgoKMjAwNC0wOC0yMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9hcnJheWFjY2Vzcyk6IFVzZSBjb252ZXJ0IHRvIGNoYW5nZQoJbGVuJ3MgdHlwZS4KCjIwMDQtMDgtMTkgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfbG9jYWxfZnVuY3Rpb25fYWxpYXMpOiBBbGxvY2F0ZSBleHRyYSBzcGFjZSBmb3IgJ0wnCglpbiBuYW1lIGJ1ZmZlci4gUmVwb3J0ZWQgYnkgVGhvbWFzIE5ldW1hbm4uCgoyMDA0LTA4LTE5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcGFyc2UuaCAoSkFWQV9SQURJWDEwX0ZMQUcpOiBSZW5hbWUgdG8gLi4uCgkoSkFWQV9OT1RfUkFESVgxMF9GTEFHKTogLi4uIGhlcmUuICBJbnZlcnQgbWVhbmluZy4KCSogbGV4LmMgKGRvX2phdmFfbGV4KTogQWRqdXN0LgoJKGVycm9yX2lmX251bWVyaWNfb3ZlcmZsb3cpOiBMaWtld2lzZS4KCjIwMDQtMDgtMTggIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfbG9jYWxfZnVuY3Rpb25fYWxpYXMpOiBPbmx5IG1ha2UgYSBuZXcgZGVjbCBpZiB3ZQoJc3VwcG9ydCBhbGlhcyBhdHRyaWJ1dGUgb24gYWxsIGRlY2xzLgoKMjAwNC0wOC0xOCAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAobWFrZV9sb2NhbF9mdW5jdGlvbl9hbGlhcyk6IE5ldyBmdW5jdGlvbi4gQ3JlYXRlIGxvY2FsCglhbGlhcyBmb3IgcHVibGljIG1ldGhvZCBERUNMLgoJKG1ha2VfbWV0aG9kX3ZhbHVlKTogVXNlIG1ha2VfbG9jYWxfZnVuY3Rpb25fYWxpYXMuCgkqIHBhcnNlLnkgKGNyYWZ0X2NvbnN0cnVjdG9yKTogRG9uJ3Qgc3BlY2lhbC1jYXNlIGFub255bW91cyBjbGFzc2VzLgoJQWx3YXlzIHNldCBjdG9yX25hbWUgdG8gaW5pdF9pZGVudGlmaWVyX25vZGUuCgkobG9va3VwX21ldGhvZF9pbnZva2UpOiBDYWxsIGxheW91dF9jbGFzc19tZXRob2Qgd2hlbiBjcmVhdGluZwoJYW5vbnltb3VzIGNsYXNzIGNvbnN0cnVjdG9yLgoKMjAwNC0wOC0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGphdmEtZ2ltcGxpZnkuYyAoamF2YV9naW1wbGlmeV9leHByKTogTW92ZSAnMicgaGFuZGxpbmcgaW50bwoJZGVmYXVsdCBjYXNlLiAgVHJlYXQgJzwnIHNpbWlsYXJseS4gIFVwZGF0ZSBmb3IKCWlzX2dpbXBsZV9mb3JtYWxfdG1wX3ZhciBuYW1lIGNoYW5nZS4KCjIwMDQtMDgtMTcgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogbGFuZy5jIChsYW5nX3ByaW50YWJsZV9uYW1lKTogT2JleSB2ZXJib3NlIGZsYWcuCgkqIHBhcnNlLnkgKGNvbnN0cnVjdG9yX2NpcmN1bGFyaXR5X21zZyk6IFNldCBWRVJCT1NFIGFyZyBmb3IKCWxhbmdfcHJpbnRhYmxlX25hbWUoKS4KCSh2ZXJpZnlfY29uc3RydWN0b3JfY2lyY3VsYXJpdHksIGdldF9wcmludGFibGVfbWV0aG9kX25hbWUsCgljaGVja19hYnN0cmFjdF9tZXRob2RfZGVmaW5pdGlvbnMsIGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzLAoJamF2YV9jaGVja19hYnN0cmFjdF9tZXRob2RzLCBjaGVja19pbm5lcl9jbGFzc19hY2Nlc3MsCglmaXhfY29uc3RydWN0b3JzLCBwYXRjaF9tZXRob2RfaW52b2NhdGlvbiwgcGF0Y2hfcmV0dXJuKToKCUxpa2V3aXNlLgoJKiBleHByLmMgKHBvcF90eXBlXzApOiBMaWtld2lzZS4KCgkqIGphdmEtdHJlZS5oIChsYW5nX3ByaW50YWJsZV9uYW1lX3dscyk6IERlbGV0ZS4KCjIwMDQtMDgtMTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzg0NzM6CgkqIHBhcnNlLnkgKHByaW1hcnkpOiBDaGFuZ2VkIGZvciBpbml0aWFsaXplZCBhbmQgdW5pbml0aWFsaXplZAoJYXJyYXkgY3JlYXRpb25zLgoJKGFycmF5X2FjY2Vzcyk6IEhhbmRsZSBhcnJheV9jcmVhdGlvbl9pbml0aWFsaXplZC4KCShhcnJheV9jcmVhdGlvbl9leHByZXNzaW9uKTogU3BsaXQgaW50bwoJYXJyYXlfY3JlYXRpb25faW5pdGlhbGl6ZWQgYW5kIGFycmF5X2NyZWF0aW9uX3VuaW5pdGlhbGl6ZWQuCgoyMDA0LTA4LTE2ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGpjZi13cml0ZS5jIChmaW5kX2NvbnN0YW50X2luZGV4KTogQ2Fub25pY2FsaXplIE5hTnMgd2hlbgoJZ2VuZXJhdGluZyBieXRlY29kZS4KCjIwMDQtMDgtMTYgIEVsbGlvdCBMZWUgPHNvcHdpdGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzk2NzcKCSogamNmLXBhcnNlLmMgKGphdmFfcGFyc2VfZmlsZSk6IEhhbmRsZSBmaWxlbmFtZXMgd2l0aCBlbWJlZGRlZAoJc3BhY2VzLCBhbmQgcXVvdGVkIGZpbGVsaXN0cy4KCjIwMDQtMDgtMTUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBib2VobS5jIChnZXRfYm9laG1fdHlwZV9kZXNjcmlwdG9yKTogVXNlIGJ1aWxkX2ludF9jc3QuCgkqIGNsYXNzLmMgKGJ1aWxkX3V0ZjhfcmVmLCBidWlsZF9zdGF0aWNfZmllbGRfcmVmLAoJbWFrZV9maWVsZF92YWx1ZSwgbWFrZV9tZXRob2RfdmFsdWUsIGdldF9kaXNwYXRjaF90YWJsZSwKCW1ha2VfY2xhc3NfZGF0YSwgZW1pdF9zeW1ib2xfdGFibGUsIGVtaXRfY2F0Y2hfdGFibGUpOiBMaWtld2lzZS4KCSogY29uc3RhbnRzLmMgKGdldF90YWdfbm9kZSwgIGJ1aWxkX3JlZl9mcm9tX2NvbnN0YW50X3Bvb2wsCglidWlsZF9jb25zdGFudHNfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9hcnJheV9sZW5ndGhfYWNjZXNzLCBidWlsZF9uZXdhcnJheSwKCWV4cGFuZF9qYXZhX211bHRpYW5ld2FycmF5LCBleHBhbmRfamF2YV9wdXNoYywgZXhwYW5kX2lpbmMsCglidWlsZF9qYXZhX2Jpbm9wLCBidWlsZF9maWVsZF9yZWYsIGV4cGFuZF9qYXZhX2FkZF9jYXNlLAoJZXhwYW5kX2phdmFfY2FsbCwgYnVpbGRfa25vd25fbWV0aG9kX3JlZiwgYnVpbGRfaW52b2tldmlydHVhbCwKCWJ1aWxkX2ludm9rZWludGVyZmFjZSwgYnVpbGRfam5pX3N0dWIpOiBMaWtld2lzZS4KCSogamF2YS1naW1wbGlmeS5jIChqYXZhX2dpbXBsaWZ5X25ld19hcnJheV9pbml0KTogTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jIChnZXRfY29uc3RhbnQpOiBMaWtld2lzZS4KCSogbGV4LmMgKGRvX2phdmFfbGV4KTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHBhdGNoX2Jpbm9wLCBwYXRjaF91bmFyeW9wLCBwYXRjaF9jYXN0LAoJYnVpbGRfbnVsbF9vZl90eXBlLCBwYXRjaF9uZXdhcnJheSk6IExpa2V3aXNlLgoJKiByZXNvdXJjZS5jIChjb21waWxlX3Jlc291cmNlX2RhdGEpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX3ByaW1fYXJyYXlfdHlwZSk6IExpa2V3aXNlLgoKMjAwNC0wOC0xMCAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogamF2YS1naW1wbGlmeS5jIChqYXZhX2dpbXBsaWZ5X25ld19hcnJheV9pbml0KTogVXNlIGNyZWF0ZV90bXBfdmFyLgoJRG9uJ3QgY3JlYXRlIEJMT0NLIGhlcmUgb3IgY2FsbCBqYXZhX2dpbXBsaWZ5X2Jsb2NrLgoKMjAwNC0wOC0wOSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogamF2YS10cmVlLmggKGZsYWdfZGVwcmVjYXRlZCk6IFJlbW92ZWQuCgkqIGxhbmcub3B0IChXZGVwcmVjYXRlZCk6IFVzZSBleGlzdGluZyBWYXIod2Fybl9kZXByZWNhdGVkKS4KCSogcGFyc2UueSAoY2hlY2tfZGVwcmVjYXRpb24pOiBDaGVjayB3YXJuX2RlcHJlY2F0ZWQgaW5zdGVhZCBvZgoJZmxhZ19kZXByZWNhdGVkLgoKMjAwNC0wOC0wNiAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGxhbmcuYyAoZmxhZ19lbWl0X2NsYXNzX2ZpbGVzLCBmbGFnX2ZpbGVsaXN0X2ZpbGUsIGZsYWdfcmVkdW5kYW50LAoJZmxhZ191c2VfZGl2aWRlX3N1YnJvdXRpbmUsIGZsYWdfdXNlX2JvZWhtX2djLCBmbGFnX3N0b3JlX2NoZWNrLAoJZmxhZ19oYXNoX3N5bmNocm9uaXphdGlvbiwgZmxhZ19hc3NlcnQsIGZsYWdfam5pLCBmbGFnX25ld2VyLAoJZmxhZ19jaGVja19yZWZlcmVuY2VzLCBmbGFnX2V4dHJhbmVvdXNfc2VtaWNvbG9uLCBmbGFnX2RlcHJlY2F0ZWQsCglmbGFnX2ZvcmNlX2NsYXNzZXNfYXJjaGl2ZV9jaGVjaywgZmxhZ19vcHRpbWl6ZV9zY2ksCglmbGFnX2luZGlyZWN0X2Rpc3BhdGNoKTogUmVtb3ZlIGV4cGxpY2l0IGRlY2xhcmF0aW9ucy4KCSogbGFuZy5vcHQ6IEFkZCBpbXBsaWNpdCBkZWNsYXJlL2RlZmluZS9hc3NpZ24uICBSZW1vdmUgb2Jzb2xldGUKCWZpbmFsIGNvbW1lbnQuCgoyMDA0LTA4LTA1ICBNaWNoYWVsIENoYXN0YWluICA8bWVjLmdudUBtaW5kc3ByaW5nLmNvbT4KCglQUiBib290c3RyYXAvMTQ4OTMKCSogTWFrZS1sYW5nLmluIChqYXZhLmluc3RhbGwtbWFuKTogSW5zdGFsbCBmcm9tIGVpdGhlciBidWlsZAoJdHJlZSBvciBzb3VyY2UgdHJlZSwgd2hpY2hldmVyIGhhcyB0aGUgZmlsZSBmaXJzdC4KCjIwMDQtMDgtMDUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NvbnN0YW50KTogQWRqdXN0IGZvcmNlX2ZpdF90eXBlIGNhbGwuCgkqIGxleC5oIChTRVRfTFZBTF9OT0RFX1RZUEUpOiBSZW1vdmUuCgkqIGxleC5jIChqYXZhX3BlcmZvcm1fYXRvZik6IFVzZSBTRVRfTFZBTF9OT0RFIGRpcmVjdGx5LgoJKGRvX2phdmFfbGV4KTogTGlrZXdpc2UuIEFkanVzdCBmb3JjZV9maXRfdHlwZSBjYWxsLgoKMjAwNC0wOC0wNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiB0eXBlY2suYyAoY29udmVydF9pZWVlX3JlYWxfdG9faW50ZWdlcik6IENhbGwgZm9sZCBvbiB0aGUgcmFuZ2UKCWNoZWNraW5nIHRyZWVzIGFzIHRoZXkncmUgYmVpbmcgYnVpbHQuCgkoY29udmVydCk6IENhbGwgY29udmVydF9pZWVlX3JlYWxfdG9faW50ZWdlciBpZiB3ZSdyZQoJY29udmVydGluZyBhIGNvbnN0YW50LCBldmVuIGlmIHdlJ3JlIHdyaXRpbmcgYSBjbGFzcyBmaWxlLgoKMjAwNC0wOC0wMiAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTY3MDEKCSogcGFyc2UueSAoZm9sZF9jb25zdGFudF9mb3JfaW5pdCk6IENhbGwgcmVzb2x2ZV9maWVsZF9hY2Nlc3Mgd2l0aAoJY29ycmVjdCBjdXJyZW50X2NsYXNzIGNvbnRleHQuCgoyMDA0LTA4LTAxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGRlY2wuYyAodXBkYXRlX2FsaWFzZXMsIGluaXRpYWxpemVfbG9jYWxfdmFyaWFibGUpOiBSZXBsYWNlIGNhbGxzCgl0byBidWlsZCB3aXRoIGNhbGxzIHRvIGJ1aWxkTi4KCSogamF2YS1naW1wbGlmeS5jIChqYXZhX2dpbXBsaWZ5X21vZGlmeV9leHByKTogTGlrZXdpc2UuCgkqIGphdmEtdHJlZS5oIChCVUlMRF9NT05JVE9SX0VOVEVSLCBCVUlMRF9NT05JVE9SX0VYSVQpOiBMaWtld2lzZS4KCSogcGFyc2UuaCAoQlVJTERfVEhST1cpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoc3dpdGNoX2V4cHJlc3Npb24sIHN5bmNocm9uaXplZF9zdGF0ZW1lbnQsCgljYXRjaF9jbGF1c2VfcGFyYW1ldGVyLCBhcnJheV9jcmVhdGlvbl9leHByZXNzaW9uLAoJY29uZGl0aW9uYWxfZXhwcmVzc2lvbiwgbWFrZV9xdWFsaWZpZWRfbmFtZSwKCXJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSwgcGF0Y2hfbWV0aG9kX2ludm9jYXRpb24sCglwYXRjaF9pbnZva2UsIGJ1aWxkX21ldGhvZF9pbnZvY2F0aW9uLCBidWlsZF9uZXdfaW52b2NhdGlvbiwKCWJ1aWxkX2Fzc2lnbm1lbnQsIHBhdGNoX2Fzc2lnbm1lbnQsIGJ1aWxkX2Jpbm9wLCBwYXRjaF9iaW5vcCwKCWJ1aWxkX3N0cmluZ19jb25jYXRlbmF0aW9uLCBidWlsZF9pbmNkZWMsIHBhdGNoX3VuYXJ5b3AsCglwYXRjaF9jYXN0LCBidWlsZF9hcnJheV9yZWYsIGJ1aWxkX25ld2FycmF5X25vZGUsIHBhdGNoX25ld2FycmF5LAoJcGF0Y2hfcmV0dXJuLCBidWlsZF9pZl9lbHNlX3N0YXRlbWVudCwgYnVpbGRfbGFiZWxlZF9ibG9jaywKCWJ1aWxkX25ld19sb29wLCBidWlsZF9sb29wX2JvZHksIGJ1aWxkX2JjX3N0YXRlbWVudCwKCWJ1aWxkX2Fzc2VydGlvbiwgZW5jYXBzdWxhdGVfd2l0aF90cnlfY2F0Y2gsIGJ1aWxkX3RyeV9zdGF0ZW1lbnQsCglidWlsZF90cnlfZmluYWxseV9zdGF0ZW1lbnQsIHBhdGNoX3N5bmNocm9uaXplZF9zdGF0ZW1lbnQsCgllbWl0X3Rlc3RfaW5pdGlhbGl6YXRpb24pOiBMaWtld2lzZSwgcmVwbGFjZSBidWlsZCB3aXRoIGJ1aWxkTi4KCjIwMDQtMDctMjggIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogbGFuZy5jIChMQU5HX0hPT0tTX1VOU0FGRV9GT1JfUkVFVkFMKTogRGVsZXRlLgoJKGphdmFfdW5zYWZlX2Zvcl9yZWV2YWwpOiBEaXR0by4KCjIwMDQtMDctMjYgICAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIHBhcnNlLnkgKGJ1aWxkX3N1cGVyX2ludm9jYXRpb24pOiBBZGp1c3QgZGVjbGFyYXRpb24gb3JkZXIgdG8KCWF2b2lkIGRlY2xhcmF0aW9uIGFmdGVyIHN0YXRlbWVudC4KCjIwMDQtMDctMjUgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGRlY2wuYzogUmVuYW1lIGFsbCBpZGVudGlmaWVycyBuYW1lZCBgY2xhc3MnIHRvIGBjbCcuCgoyMDA0LTA3LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZGVjbC5jIChidWlsZF9yZXN1bHRfZGVjbCk6IFNldCBERUNMX0FSVElGSUNJQUwgYW5kIERFQ0xfSUdOT1JFRF9QLgoKMjAwNC0wNy0yMyAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBib2VobS5jIChzZXRfYml0KTogSW1wcm92ZSB0eXBlIHNhZmV0eSB3cnQgdW5zaWduZWRuZXNzLgoJKiBnamF2YWguYyAodGhyb3dhYmxlX3AsIGRlY29kZV9zaWduYXR1cmVfcGllY2UsCglwcmludF9mdWxsX2N4eF9uYW1lLCBwcmludF9pbmNsdWRlLCBhZGRfbmFtZWxldCwgYWRkX2NsYXNzX2RlY2wsCglwcm9jZXNzX2ZpbGUpOiBMaWtld2lzZS4KCSogamNmLWR1bXAuYyAobWFpbik6IExpa2V3aXNlLgoJKiBqY2YtaW8uYyAocmVhZF96aXBfbWVtYmVyKTogTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jIChIQU5ETEVfQ09OU1RBTlRfVXRmOCwgZ2V0X2NvbnN0YW50LAoJZ2l2ZV9uYW1lX3RvX2NsYXNzLCBnZXRfY2xhc3NfY29uc3RhbnQpOiBMaWtld2lzZS4KCSogamNmLXdyaXRlLmMgKGZpbmRfY29uc3RhbnRfd2lkZSwgcHVzaF9sb25nX2NvbnN0LAoJZ2VuZXJhdGVfY2xhc3NmaWxlKTogTGlrZXdpc2UuCgkqIGxleC5jIChqYXZhX25ld19sZXhlciwgamF2YV9yZWFkX2NoYXIsIGN4eF9rZXl3b3JkX3ApOiBMaWtld2lzZS4KCSogcGFyc2UueSAocmVhZF9pbXBvcnRfZGlyKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChwYXJzZV9zaWduYXR1cmVfdHlwZSk6IExpa2V3aXNlLgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBMaWtld2lzZS4KCSogemV4dHJhY3QuYyAoZmluZF96aXBfZmlsZV9zdGFydCwgcmVhZF96aXBfYXJjaGl2ZSk6IExpa2V3aXNlLgoKMjAwNC0wNy0yMyAgVGhvbWFzIEZpdHpzaW1tb25zICA8Zml0enNpbUByZWRoYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBSZXBsYWNlIHJtaWMgYW5kIHJtaXJlZ2lzdHJ5IHJlZmVyZW5jZXMgd2l0aAoJZ3JtaWMgYW5kIGdybWlyZWdpc3RyeS4KCSogZ2NqLnRleGk6IExpa2V3aXNlLgoKMjAwNC0wNy0yMCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNjQzMS4KCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogQ29tbWVudCBjaGFuZ2Ugb25seS4KCgkqIHR5cGVjay5jIChidWlsZF9qYXZhX2FycmF5X3R5cGUpOiBBZGQgc2l6ZSBmaWVsZCB0byBhcnJheSBuYW1lLgoKCSogamF2YS10cmVlLmggKExPQ0FMX1NMT1RfUCk6IE5ldy4KCSh1cGRhdGVfYWxpYXNlcyk6IEFkZCBQQyBhcmd1bWVudC4KCShwdXNoZGVjbF9mdW5jdGlvbl9sZXZlbCk6IE5ldyBmdW5jdGlvbi4KCgkqIGphdmEtZ2ltcGxpZnkuYyAoamF2YV9naW1wbGlmeV9leHByKTogSGFuZGxlIFZBUl9ERUNMLAoJTU9ESUZZX0VYUFIsIGFuZCBTQVZFX0VYUFIuCgkoamF2YV9naW1wbGlmeV9tb2RpZnlfZXhwcik6IE5ldyBmdW5jdGlvbi4KCgkqIGV4cHIuYyAocHVzaF90eXBlXzApOiBDYWxsIGZpbmRfc3RhY2tfc2xvdCgpIHRvIGNyZWF0ZSB0ZW1wb3JhcnkuCgkoZXhwYW5kX2lpbmMpOiBQYXNzIFBDIHRvIHVwZGF0ZV9hbGlhc2VzKCkuCgkoU1RPUkVfSU5URVJOQUwpOiBMaWtld2lzZS4KCShwcm9jZXNzX2p2bV9pbnN0cnVjdGlvbik6IExpa2V3aXNlLgoKCSogZGVjbC5jIChiYXNlX2RlY2xfbWFwKTogTmV3IHZhcmlhYmxlLgoJKHVuaXEpOiBOZXcgdmFyaWFibGUuCgkodXBkYXRlX2FsaWFzZXMpOiBSZXdyaXRlIHdpdGggbW9yZSB0aG9yb3VnaCBjaGVja2luZy4KCShkZWJ1Z192YXJpYWJsZV9wKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfanZtX3Nsb3QpOiBEb24ndCBpbml0aWFsaXplIGxvY2FsIHZhcmlhYmxlLiAgRG9uJ3QgcHVzaGRlY2wuCgkoY2hlY2tfbG9jYWxfbmFtZWRfdmFyaWFibGUpOiBEZWxldGUgd2hvbGUgZnVuY3Rpb24uCgkoaW5pdGlhbGl6ZV9sb2NhbF92YXJpYWJsZSk6IE5ldyBmdW5jdGlvbi4KCShjaGVja19sb2NhbF91bm5hbWVkX3ZhcmlhYmxlKTogQWRkIGNoZWNrcyBhbmQgY29tbWVudHMuCgkoZmluZF9sb2NhbF92YXJpYWJsZSk6IFJld3JpdGUuCgkoamF2YV9yZXBsYWNlX3JlZmVyZW5jZSk6IE5ldyBmdW5jdGlvbi4KCShmdW5jdGlvbl9iaW5kaW5nX2xldmVsKTogTmV3IHZhcmlhYmxlLgoJKHB1c2hkZWNsX2Z1bmN0aW9uX2xldmVsKTogTmV3IGZ1bmN0aW9uLgoJKG1heWJlX3B1c2hsZXZlbHMpOiBTZXQgREVDTF9MT0NBTF9FTkRfUEMuCgkobWF5YmVfcHVzaGxldmVscyk6IENhbGwgcHVzaGRlY2woKSBvbiBlYWNoIG9mIHRoZSBuZXcgZGVjbHMuCgkoc3RhcnRfamF2YV9tZXRob2QpOiBSZXNldCB1bmlxLiAgQ3JlYXRlIGJhc2VfZGVjbF9tYXAuICBTZXQKCWZ1bmN0aW9uX2JpbmRpbmdfbGV2ZWwuCgkoZW5kX2phdmFfbWV0aG9kKTogTnVsbCB1bnVzZWQgZmllbGRzIHRvIHNhdmUgbWVtb3J5LgoKMjAwNC0wNy0yMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGFkZF9pbnRlcmZhY2VfZG8pOiBSZW1vdmUuCgkoc2V0X3N1cGVyX2luZm8sIGludGVyZmFjZV9vZl9wLCBtYXliZV9hZGRfaW50ZXJmYWNlLAoJYWRkX2ludGVyZmFjZSwgbWFrZV9jbGFzc19kYXRhLCBsYXlvdXRfY2xhc3MsCglhZGRfbWlyYW5kYV9tZXRob2RzKTogQWRqdXN0IEJJTkZPIGFjY2Vzc29ycyBhbmQgYWRkaXRpb24uCgkqIGV4cHIuYyAoY2FuX3dpZGVuX3JlZmVyZW5jZV90bywgbG9va3VwX2ZpZWxkKTogQWRqdXN0IEJJTkZPCglhY2Nlc3NvcnMuCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9jbGFzc2ZpbGUpOiBMaWtld2lzZS4KCSogcGFyc2UueSAocGF0Y2hfYW5vbnltb3VzX2NsYXNzLCBjaGVja19pbm5lcl9jaXJjdWxhcl9yZWZlcmVuY2UsCgljaGVja19jaXJjdWxhcl9yZWZlcmVuY2UsIGphdmFfY29tcGxldGVfY2xhc3MsCgljaGVja19hYnN0cmFjdF9tZXRob2RfZGVmaW5pdGlvbnMsCglqYXZhX2NoZWNrX2Fic3RyYWN0X21ldGhvZF9kZWZpbml0aW9ucywKCWNoZWNrX2ludGVyZmFjZV90aHJvd3NfY2xhdXNlcywgamF2YV9jaGVja19hYnN0cmFjdF9tZXRob2RzLAoJbG9va3VwX2phdmFfaW50ZXJmYWNlX21ldGhvZDIsCglmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBBZGp1c3QgQklORk8gYWNjZXNzb3JzCglhbmQgYWRkaXRpb24uCgkqIHR5cGVjay5jIChmaW5kX21ldGhvZF9pbl9pbnRlcmZhY2VzKTogQWRqdXN0IEJJTkZPIGFjY2Vzc29ycy4KCjIwMDQtMDctMTggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAobWF4X2J1aWx0aW4sIG1pbl9idWlsdGluLAoJamF2YV9idWlsZF9mdW5jdGlvbl9jYWxsX2V4cHIpOiBSZXBsYWNlIGNhbGxzIHRvIGJ1aWxkIHdpdGggYnVpbGROLgoJKiBjbGFzcy5jIChidWlsZF9jbGFzc19yZWYsIGJ1aWxkX3N0YXRpY19maWVsZF9yZWYsCglnZXRfZGlzcGF0Y2hfdGFibGUsIG1ha2VfY2xhc3NfZGF0YSwgbGF5b3V0X2NsYXNzX21ldGhvZCk6IExpa2V3aXNlLgoJKiBjb25zdGFudHMuYyAoYnVpbGRfcmVmX2Zyb21fY29uc3RhbnRfcG9vbCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHVwZGF0ZV9hbGlhc2VzLCBwdXNoX2p2bV9zbG90LCBwb3BsZXZlbCwgZmluaXNoX21ldGhvZCwKCWFkZF9zdG10X3RvX2NvbXBvdW5kKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChidWlsZF9leGNlcHRpb25fb2JqZWN0X3JlZiwgZXhwYW5kX2VuZF9qYXZhX2hhbmRsZXIpOgoJTGlrZXdpc2UuCgkqIGphdmEtZ2ltcGxpZnkuYyAoamF2YV9naW1wbGlmeV9jYXNlX2V4cHIsCglqYXZhX2dpbXBsaWZ5X2RlZmF1bHRfZXhwciwgamF2YV9naW1wbGlmeV9ibG9jaywKCWphdmFfZ2ltcGxpZnlfbmV3X2FycmF5X2luaXQsIGphdmFfZ2ltcGxpZnlfdHJ5X2V4cHIpOiBMaWtld2lzZS4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChjb252ZXJ0X2llZWVfcmVhbF90b19pbnRlZ2VyKTogTGlrZXdpc2UuCgoyMDA0LTA3LTE3ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGphdmEtdHJlZS5oIChidWlsdGluX2Z1bmN0aW9uKTogRGVjbGFyZS4KCjIwMDQtMDctMTYgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMsIGphdmFfZXhwYW5kX2NsYXNzZXMpOiBEb24ndAoJYWJ1c2UgcmVzdG9yZV9saW5lX251bWJlcl9zdGF0dXMuCgoyMDA0LTA3LTE1ICBGcmFuayBDaC4gRWlnbGVyICA8ZmNoZUByZWRoYXQuY29tPgoKCWcrKy8xNTg2MQoJKiBqY2YtcGFyc2UuYyAoamF2YV9lbWl0X3N0YXRpY19jb25zdHJ1Y3Rvcik6IFNwZWNpZnkgZGVmYXVsdAoJcHJpb3JpdHkuCgoyMDA0LTA3LTEzICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGphdmEtdHJlZS5oIChhbGxfY2xhc3NfZmlsZW5hbWUpOiAgUmVtb3ZlIHVzZWxlc3MgbWFjcm8uCgkoZW51bSBqYXZhX3RyZWVfaW5kZXgpOiAgUmVtb3ZlIEpUSV9BTExfQ0xBU1NfRklMRU5BTUUgY29uc3RhbnQuCgkoQlVJTERfRklMRU5BTUVfSURFTlRJRklFUl9OT0RFKTogIFJlbW92ZSB1c2VsZXNzIG1hY3JvLgoJKiBwYXJzZS55IChqYXZhX3BhcnNlcl9jb250ZXh0X3Jlc3RvcmVfZ2xvYmFsKTogIFJlcGxhY2UKCUJVSUxEX0ZJTEVOQU1FX0lERU5USUZJRVJfTk9ERSBieSBwbGFpbiBnZXRfaWRlbnRpZmllci4KCSogamNmLXBhcnNlLmMgKHJlYWRfY2xhc3MsIGphdmFfcGFyc2VfZmlsZSk6ICBMaWtld2lzZS4KCjIwMDQtMDctMTIgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE2NDc0CglnamF2YWguYyAocHJpbnRfZmllbGRfaW5mbyk6IEVtaXQgY29uc3RhbnQgb25seSBpZiBmaWVsZCBpcyBzdGF0aWMuCgoyMDA0LTA3LTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGV4cHIuYyAoamF2YV90cnV0aHZhbHVlX2NvbnZlcnNpb24sIGZsdXNoX3F1aWNrX3N0YWNrLAoJamF2YV9zdGFja19zd2FwLCBqYXZhX3N0YWNrX2R1cCwgYnVpbGRfamF2YV9hdGhyb3csIGJ1aWxkX2phdmFfanNyLAoJYnVpbGRfamF2YV9yZXQsIGJ1aWxkX2phdmFfdGhyb3dfb3V0X29mX2JvdW5kc19leGNlcHRpb24sCglidWlsZF9qYXZhX2FycmF5X2xlbmd0aF9hY2Nlc3MsIGphdmFfY2hlY2tfcmVmZXJlbmNlLAoJYnVpbGRfamF2YV9hcnJheWFjY2VzcywgYnVpbGRfamF2YV9hcnJheXN0b3JlX2NoZWNrLCBidWlsZF9uZXdhcnJheSwKCWJ1aWxkX2FuZXdhcnJheSwgZXhwYW5kX2phdmFfbXVsdGlhbmV3YXJyYXksIGV4cGFuZF9qYXZhX2FycmF5c3RvcmUsCglleHBhbmRfamF2YV9hcnJheWxvYWQsIGJ1aWxkX2phdmFfbW9uaXRvciwgZXhwYW5kX2phdmFfcmV0dXJuLAoJZXhwYW5kX2xvYWRfaW50ZXJuYWwsIGV4cGFuZF9qYXZhX05FVywgYnVpbGRfZ2V0X2NsYXNzLAoJYnVpbGRfaW5zdGFuY2VvZiwgZXhwYW5kX2phdmFfQ0hFQ0tDQVNULCBleHBhbmRfaWluYywKCWJ1aWxkX2phdmFfc29mdF9kaXZtb2QsIGJ1aWxkX2phdmFfYmlub3AsIGJ1aWxkX2ZpZWxkX3JlZiwKCWV4cGFuZF9jb21wYXJlLCBleHBhbmRfamF2YV9nb3RvLCBleHBhbmRfamF2YV9zd2l0Y2gsCglleHBhbmRfamF2YV9hZGRfY2FzZSwgYnVpbGRfY2xhc3NfaW5pdCwgYnVpbGRfa25vd25fbWV0aG9kX3JlZiwKCWludm9rZV9idWlsZF9kdGFibGUsIGJ1aWxkX2ludm9rZXZpcnR1YWwsIGJ1aWxkX2ludm9rZWludGVyZmFjZSwKCWV4cGFuZF9pbnZva2UsIGJ1aWxkX2puaV9zdHViLCBleHBhbmRfamF2YV9maWVsZF9vcCwKCWphdmFfZXhwYW5kX2V4cHIsIGV4cGFuZF9ieXRlX2NvZGUsIFNUT1JFX0lOVEVSTkFMLAoJZm9yY2VfZXZhbHVhdGlvbl9vcmRlciwgZW1pdF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb24pOiBDb252ZXJ0CgljYWxscyB0byAiYnVpbGQiIGludG8gY2FsbHMgdG8gdGhlIHByZWZlcmVkICJidWlsZE4iIGZ1bmN0aW9ucy4KCjIwMDQtMDctMTEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogamF2YS10cmVlLmggKHNldF9ibG9jayk6IFJlbW92ZS4KCSogbGFuZy5jIChqYXZhX2NsZWFyX2JpbmRpbmdfc3RhY2spOiBOZXcuCgkoTEFOR19IT09LU19DTEVBUl9CSU5ESU5HX1NUQUNLKTogRGVmaW5lLgoJKiBkZWNsLmMgKHN0cnVjdCBiaW5kaW5nX2xldmVsKTogUmVtb3ZlIHRoaXNfYmxvY2suCgkoY2xlYXJfYmluZGluZ19sZXZlbCk6IExpa2V3aXNlLgoJKHBvcGxldmVsKTogRG9uJ3QgaGFuZGxlIHRoaXNfYmxvY2suCgkoc2V0X2Jsb2NrKTogUmVtb3ZlLgoKMjAwNC0wNy0xMCAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoY29tbW9uX2VuY2xvc2luZ19jb250ZXh0X3ApOiBSZW1vdmUgc3RhdGVtZW50IHdpdGggbm8KCXNpZGUtZWZmZWN0cy4KCjIwMDQtMDctMDkgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzg2MTgKCSogcGFyc2UueSAoY3JlYXRlX2Fub255bW91c19jbGFzcyk6IFJlbW92ZSAnbG9jYXRpb24nIGFyZ3VtZW50LiBVc2UKCXRoZSBXRkwgZnJvbSBUWVBFX05BTUUgdG8gZ2V0IGxpbmUgbnVtYmVyIGZvciB0aGUgZGVjbC4gRml4IGNvbW1lbnQuCgkoY3JhZnRfY29uc3RydWN0b3IpOiBJbmhlcml0IGFjY2VzcyBmbGFncyBmb3IgaW1wbGljaXQgY29uc3RydWN0b3IKCWZyb20gdGhlIGVuY2xvc2luZyBjbGFzcy4KCShjcmVhdGVfY2xhc3MpOiBGaXggY29tbWVudCB0eXBvLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IFBhc3MgdHlwZSBvZiBxdWFsaWZpZXIgdG8KCW5vdF9hY2Nlc3NpYmxlX3AsIG5vdCB0aGUgdHlwZSBpbiB3aGljaCB0YXJnZXQgZmllbGQgd2FzIGZvdW5kLgoJKG5vdF9hY2Nlc3NpYmxlX3ApOiBIYW5kbGUgaW5uZXIgY2xhc3Nlcy4gRXhwYW5kIHByb3RlY3RlZAoJcXVhbGlmaWVyLXN1YnR5cGUgY2hlY2sgdG8gZW5jbG9zaW5nIGluc3RhbmNlcywgYnV0IGRvbid0IGFwcGx5IHRoaXMKCWNoZWNrIHRvIHN0YXRpYyBtZW1iZXJzLiBBbGxvdyBwcm90ZWN0ZWQgYWNjZXNzIHRvIGlubmVyIGNsYXNzZXMKCW9mIGEgc3VidHlwZS4gQWxsb3cgcHJpdmF0ZSBhY2Nlc3Mgd2l0aGluIGNvbW1vbiBlbmNsb3NpbmcgY29udGV4dC4KCShidWlsZF9zdXBlcl9pbnZvY2F0aW9uKTogR2V0IFdGTCBsaW5lIG51bWJlciBpbmZvIGZyb20gY3VycmVudAoJY2xhc3MgZGVjbC4KCShidWlsZF9pbmNvbXBsZXRlX2NsYXNzX3JlZik6IFVwZGF0ZSBmb3IgbmV3IGNyZWF0ZV9hbm9ueW1vdXNfY2xhc3MKCXNpZ25hdHVyZS4KCSogcGFyc2UuaCAoSU5ORVJfRU5DTE9TSU5HX1NDT1BFX0NIRUNLKTogVXNlCgljb21tb25fZW5jbG9zaW5nX2luc3RhbmNlX3AuCgkqIGNsYXNzLmMgKGNvbW1vbl9lbmNsb3NpbmdfY29udGV4dF9wKTogTmV3LiBEZXRlcm1pbmUgaWYgdHlwZXMKCXNoYXJlIGEgY29tbW9uIGVuY2xvc2luZyBjb250ZXh0LCBldmVuIGFjcm9zcyBzdGF0aWMgY29udGV4dHMuCgkoY29tbW9uX2VuY2xvc2luZ19pbnN0YW5jZV9wKTogUmVuYW1lZCBmcm9tCgljb21tb25fZW5jbG9zaW5nX2NvbnRleHRfcC4gRGV0ZXJtaW5lcyBpZiB0eXBlcyBzaGFyZSBhIGNvbW1vbgoJbm9uLXN0YXRpYyBlbmNsb3NpbmcgaW5zdGFuY2UuCgkqIGphdmEtdHJlZS5oIChjb21tb25fZW5jbG9zaW5nX2luc3RhbmNlX3ApOiBEZWNsYXJlLgoJKiBqY2Ytd3JpdGUuYyAoZ2V0X21ldGhvZF9hY2Nlc3NfZmxhZ3MpOiBOZXcuIFN1cnByZXNzIHByaXZhdGUgZmxhZwoJZm9yIGlubmVyIGNsYXNzIGNvbnN0cnVjdG9ycy4KCShnZW5lcmF0ZV9jbGFzc2ZpbGUpOiBVc2UgZ2V0X21ldGhvZF9hY2Nlc3NfZmxhZ3MuCgoyMDA0LTA3LTA5ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChpbnRlcmZhY2Vfb2ZfcCk6IENoZWNrIGZvciBudWxsIFRZUEVfQklORk8uCgoyMDA0LTA3LTA5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAobWFrZV9jbGFzcyk6IERvIG5vdCBjcmVhdGUgYmluZm8gaGVyZS4KCShzZXRfc3VwZXJfaW5mbyk6IENyZWF0ZSBpdCBoZXJlLgoJKiBqYXZhLXRyZWUuaCAoQ0xBU1NfSEFTX1NVUEVSKTogQ29wZSB3aXRoIGxhY2sgb2YgYSBiaW5mby4KCjIwMDQtMDctMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGNhc2VfaWRlbnRpdHksIGdldF9wcmltaXRpdmVfYXJyYXlfdnRhYmxlLAoJamF2YV9leHBhbmRfZXhwciwgZW1pdF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb24pOiBSZW1vdmUuCgkqIGphdmEtdHJlZS5oIChqYXZhX2V4cGFuZF9leHByKTogUmVtb3ZlLgoJKiBsYW5nLmMgKExBTkdfSE9PS1NfRVhQQU5EX0VYUFIpOiBSZW1vdmUuCgoyMDA0LTA3LTA3ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiAgQWRkIGEgTk9QX0VYUFI7IG90aGVyd2lzZSB3ZQoJZ2V0IGludGVybmFsIGVycm9yIGR1ZSB0byBtaXNtYXRjaGVkIHR5cGVzLgoKCSogZ2NqLnRleGkgKEludm9raW5nIGdpaik6ICBEb2N1bWVudCBuZXcgLXZlcmJvc2U6Y2xhc3MgZmxhZy4KCgkqIGdjai50ZXhpIChMaW5raW5nKTogICBOZXcgbm9kZS4gIERvY3VtZW50IC1sZ2lqIHVzYWdlLgoKMjAwNC0wNy0wNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGphdmEtdHJlZS5oIChDTEFTU1RZUEVfU1BVRVIpOiBBZGp1c3QgQklORk8gbWFjcm9zLgoJKFRZUEVfTlZJUlRVQUxTLCBUWVBFX1ZUQUJMRSk6IExpa2V3aXNlLgoJKiBqYXZhL2NsYXNzLmMgKHNldF9zdXBlcl9pbmZvLCBjbGFzc19kZXB0aCwgaW50ZXJmYWNlX29mX3AsCgltYXliZV9hZGRfaW50ZXJmYWNlLCBhZGRfaW50ZXJmYWNlLCBtYWtlX2NsYXNzX2RhdGEsCglsYXlvdXRfY2xhc3MsIGFkZF9taXJhbmRhX21ldGhvZHMpOiBBZGp1c3QgQklORk8gbWFjcm9zLgoJKiBleHByLmMgKGNhbl93aWRlbl9yZWZlcmVuY2VfdG8sIGxvb2t1cF9maWVsZCk6IExpa2V3aXNlLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfY2xhc3NmaWxlKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHBhdGNoX2Fub255bW91c19jbGFzcywKCWNoZWNrX2lubmVyX2NpcmN1bGFyX3JlZmVyZW5jZSwgY2hlY2tfY2lyY3VsYXJfcmVmZXJlbmNlLAoJamF2YV9jb21wbGV0ZV9jbGFzcywgY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2RlZmluaXRpb25zLAoJamF2YV9jaGVja19hYnN0cmFjdF9tZXRob2RfZGVmaW5pdGlvbnMsCgljaGVja19pbnRlcmZhY2VfdGhyb3dzX2NsYXVzZXMsIGphdmFfY2hlY2tfYWJzdHJhY3RfbWV0aG9kcywKCWxvb2t1cF9qYXZhX2ludGVyZmFjZV9tZXRob2QyLAoJZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChmaW5kX21ldGhvZF9pbl9pbnRlcmZhY2UpOiBMaWtld2lzZS4KCSogdmVyaWZ5LmMgKG1lcmdlX3R5cGVzKTogTGlrZXdpc2UuCgoyMDA0LTA3LTA2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogamF2YS10cmVlLmggKENMQVNTX0hBU19TVVBFUl9GTEFHKTogVXNlIEJJTkZPX0ZMQUdfMS4KCSogY2xhc3MuYyAoYWRkX2ludGVyZmFjZV9kbyk6IFVzZSBCSU5GT19WSVJUVUFMX1AuCgoyMDA0LTA3LTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAobWFrZV9jbGFzcyk6IFVzZSBtYWtlX3RyZWVfYmluZm8uCgkoc2V0X3N1cGVyX2luZm8sIGFkZF9pbnRlcmZhY2VfZG8pOiBMaWtld2lzZS4KCSogamF2YS10cmVlLmggKENMQVNTX0hBU19TVVBFUl9GTEFHKTogRXhwZWN0IGEgQklORk8uCgoyMDA0LTA3LTA0ICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCgkqIHZlcmlmeS5jOiBDb3JyZWN0IGFycmF5IGVsZW1lbnQgYWNjZXNzIGZvcm1hdHRpbmcgdGhpbmtvLgoKMjAwNC0wNy0wNCAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJKiB2ZXJpZnkuYzogSW5zZXJ0IGEgc2hvcnQgYmx1cmIgYXQgdGhlIHN0YXJ0IHJlZmVycmluZyB0byB0aGUgSlZNUy4KCShtZXJnZV90eXBlX3N0YXRlKTogUmVtb3ZlIHJlZHVuZGFudCBuZXN0ZWQgaWYgc3RhdGVtZW50LgoJKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogRW5zdXJlIGN1cnJlbnRfc3ViciBpcyBpbml0aWFsaXNlZCB0bwoJTlVMTF9UUkVFLgoJTWlub3IgZm9ybWF0dGluZyBmaXhlcyBhbGwgb3ZlciB0aGUgcGxhY2UuCgoyMDA0LTA3LTAyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zIDxjYXNlIFNBVkVfRVhQUj4pOiBSZXdyaXRlLgoKMjAwNC0wNy0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKHJlZ2lzdGVyQ2xhc3NfbGliZnVuYyk6IFJlbW92ZS4KCShpbml0X2NsYXNzX3Byb2Nlc3NpbmcpOiBEb24ndCBzZXQgaXQuCgkoZW1pdF9yZWdpc3Rlcl9jbGFzc2VzKTogVGFrZSBsaXN0X3AgcGFyYW1ldGVyLiAgRmlsbCBpdCBpbgoJd2l0aCBfSnZfUmVnaXN0ZXJDbGFzcyBjYWxscy4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogRG9uJ3QgY2FsbAoJaW5pdF9yZXNvdXJjZV9wcm9jZXNzaW5nLgoJKiBqY2YtcGFyc2UuYyAoamF2YV9lbWl0X3N0YXRpY19jb25zdHJ1Y3Rvcik6IE5ldy4KCShqYXZhX3BhcnNlX2ZpbGUpOiBDYWxsIGl0LgoJKiByZXNvdXJjZS5jIChyZWdpc3RlclJlc291cmNlX2xpYmZ1bmMpOiBSZW1vdmUuCgkoaW5pdF9yZXNvdXJjZV9wcm9jZXNzaW5nKTogUmVtb3ZlLgoJKHdyaXRlX3Jlc291cmNlX2NvbnN0cnVjdG9yKTogVGFrZSBsaXN0X3AgcGFyYW1ldGVyLiAgRmlsbCBpdCBpbgoJd2l0aCBfSnZfUmVnaXN0ZXJSZXNvdXJjZSBjYWxscy4KCSogamF2YS10cmVlLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoKMjAwNC0wNi0yOSAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTI2MgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3NfbWV0aG9kKTogRG8gbm90IG92ZXJyaWRlIHBhY2thZ2UtcHJpdmF0ZQoJbWV0aG9kIGlmIGl0cyBpbiBhIGRpZmZlcmVudCBwYWNrYWdlLgoJKHNwbGl0X3F1YWxpZmllZF9uYW1lKTogTW92ZSBoZXJlIGZyb20gcGFyc2UueS4gUmVuYW1lIGZyb20KCWJyZWFrZG93bl9xdWFsaWZpZWQuIEFkZCBjb21tZW50LgoJKGluX3NhbWVfcGFja2FnZSk6IE1vdmUgaGVyZSBmcm9tIHBhcnNlLnkuIEFkZCBjb21tZW50LgoJKiBqYXZhLXRyZWUuaCAoYnJlYWtfZG93bl9xdWFsaWZpZWQsIGluX3NhbWVfcGFja2FnZSk6IERlY2xhcmUuCgkoaW5fc2FtZV9wYWNrYWdlKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKGJyZWFrZG93bl9xdWFsaWZpZWQsIGluX3NhbWVfcGFja2FnZSk6IE1vdmVkIHRvIGNsYXNzLmMuCglDYWxsZXJzIHVwZGF0ZWQuCgoyMDA0LTA2LTI5ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfamF2YV9oYW5kbGVyKTogUHVzaCBhIG5ldyBiaW5kaW5nIGxldmVsLgoJRG9uJ3QgYnVpbGQgYSBUUllfQ0FUQ0hfRVhQUiBub3csIHdlJ2xsIGRvIGl0IGxhdGVyLiAgQ2FsbAoJcmVnaXN0ZXJfZXhjZXB0aW9uX3JhbmdlKCkgdG8gcmVnaXN0ZXIgd2hlcmUgd2UnbGwgZG8gaXQuCgkoZXhwYW5kX2VuZF9qYXZhX2hhbmRsZXIpOiBSZW1vdmUgb2xkIGJvZ3VzIGNvZGUuICBSZXBsYWNlIHdpdGgKCW5ldyBsb2dpYyB0aGF0IHNpbXBseSBidWlsZHMgVFJZX0NBVENIX0VYUFJzIGFuZCBpbnNlcnRzIHRoZW0gYXQKCXRoZSB0b3Agb2YgdGhlIGV4cHJlc3Npb24gd2UncmUgY3VyZW50bHkgYnVpbGRpbmcuCgkobWF5YmVfZW5kX3RyeSk6IERlbGV0ZS4KCSogZGVjbC5jIChiaW5kaW5nX2xldmVsLmV4Y2VwdGlvbl9yYW5nZSk6IE5ldyBmaWVsZC4KCShjbGVhcl9iaW5kaW5nX2xldmVsKTogQWRkIGZpZWxkIGV4Y2VwdGlvbl9yYW5nZS4gIFJlZm9ybWF0LgoJKHBvcGxldmVsKTogQ2FsbCBleHBhbmRfZW5kX2phdmFfaGFuZGxlcigpLgoJKHBvcGxldmVsKTogQ2FsbCBqYXZhX2FkZF9zdG10IG9ubHkgaWYgZnVuY3Rpb25ib2R5IGlzIGZhbHNlLgoJKG1heWJlX3BvcGxldmVscyk6IERvbid0IGNhbGwgbWF5YmVfZW5kX3RyeSgpIGZyb20gaGVyZS4KCShlbmRfamF2YV9tZXRob2QpOiBDbGVhciBubyBsb25nZXIgdXNlZCB0cmVlcyBpbiBmdW5jdGlvbiBkZWNsLgoJKHJlZ2lzdGVyX2V4Y2VwdGlvbl9yYW5nZSk6IE5ldyBmdW5jdGlvbi4KCSogamF2YS10cmVlLmggKHJlZ2lzdGVyX2V4Y2VwdGlvbl9yYW5nZSwgc3RydWN0IGVoX3JhbmdlKTogRGVjbGFyZS4KCjIwMDQtMDYtMjggIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZXRfY2xhc3NmaWxlX21vZGlmaWVycyk6IEZvcm1hdHRpbmcgZml4ZXMuCgoyMDA0LTA2LTI3ICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCglGb3JtYXR0aW5nIGZpeGVzLgoJKiBleHByLmMgKGNsYXNzX2hhc19maW5hbGl6ZV9tZXRob2QpOiBGaXggbWV0aG9kIG5hbWUgaW5kZW50YXRpb24uCgkoZXhwYW5kX2phdmFfY2FsbCk6IFJlbW92ZSBLJlIgc3R5bGUgcGFyYW1ldGVyIGRlY2xhcmF0aW9uLgoJKGV4cGFuZF9pbnZva2UpOiBGaXggc3RhdGVtZW50IGluZGVudGF0aW9uLgoJKGV4cGFuZF9qYXZhX2ZpZWxkX29wKTogTGlrZXdpc2UuCgkqIHBhcnNlLXNjYW4ueTogRml4IHR5cG8uCgkocmVzZXRfcmVwb3J0KTogRml4IG1ldGhvZCBuYW1lIGluZGVudGF0aW9uLgoJKiBwYXJzZS55ICh1bnJlc29sdmVkX3R5cGVfcCwgYnVpbGRfZXhwcl9ibG9jayk6IFJlbW92ZSBleHRyYSBibGFuawoJbGluZS4gRml4IHR5cG9zLgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBEb2N1bWVudCBwYXJhbWV0ZXJzLCBpbnNlcnQKCXBhZ2UgYnJlYWsuCgkqIGxhbmcuYyAobGFuZ19pbml0X3NvdXJjZSk6IEZpeCBtZXRob2QgbmFtZSBpbmRlbnRhdGlvbi4KCSogY2xhc3MuYyAoY29tbW9uX2VuY2xvc2luZ19jb250ZXh0X3ApOiBMaWtld2lzZS4KCShlbWl0X3N5bWJvbF90YWJsZSk6IEZpeCBwYXJhbWV0ZXIgbGlzdCBpbmRlbnRhdGlvbi4KCSogZGVjbC5jIChhZGRfc3RtdF90b19jb21wb3VuZCwgamF2YV9hZGRfc3RtdCk6IFJlbW92ZSBLJlIgc3R5bGUKCXBhcmFtZXRlciBkZWNsYXJhdGlvbi4KCSogY29uc3RhbnRzLmM6IEZpeCBjb3B5cmlnaHQgbm90aWNlIGluZGVudGF0aW9uLgoJKiB0eXBlY2suYyAoZmluZF9tZXRob2RfaW5fc3VwZXJjbGFzc2VzKTogRml4IHBhcmFtZXRlciBsaXN0CglpbmRlbnRhdGlvbi4KCShmaW5kX21ldGhvZF9pbl9pbnRlcmZhY2VzKTogTGlrZXdpc2UuCgkqIHpleHRyYWN0LmMgKG1ha2Vsb25nKTogRml4IG1ldGhvZCBuYW1lIGluZGVudGF0aW9uLgoKMjAwNC0wNi0yNiAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTU3MTUuCgkqIHBhcnNlLnkgKGNyZWF0ZV9pbnRlcmZhY2UpOiBTZXQgY29ycmVjdCBhY2Nlc3MgbW9kaWZpZXJzIGZvcgoJaW50ZXJmYWNlcy4KCSogamNmLXdyaXRlLmMgKGdldF9jbGFzc2ZpbGVfbW9kaWZpZXJzKTogTmV3IGZ1bmN0aW9uLgoJKGdlbmVyYXRlX2NsYXNzZmlsZSk6IFVzZSBnZXRfY2xhc3NmaWxlX21vZGlmaWVycywgbm90CglnZXRfYWNjZXNzX2ZsYWdzLgoKMjAwNC0wNi0yNiAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocmVnaXN0ZXJfaW5jb21wbGV0ZV90eXBlKTogU2V0IEpERVBfRU5DTE9TSU5HIGZvciAic3VwZXIiCglkZXBlbmRlbmN5IHRvIGN1cnJlbnQgcGFyc2VyIGNvbnRleHQsIG5vdCBOVUxMX1RSRUUsIGZvciB0b3AtbGV2ZWwKCWNsYXNzZXMuCgkoamRlcF9yZXNvbHZlX2NsYXNzKTogRW5hYmxlIG1lbWJlciBhY2Nlc3MgY2hlY2sgZm9yIGFsbCBpbm5lcgoJY2xhc3MgZGVwZW5kZW5jaWVzLgoKMjAwNC0wNi0yNiAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocXVhbGlmeV9hbmRfZmluZCk6IFBhc3MgdHlwZSBkZWNsLCBub3QgaWRlbnRpZmllciwgdG8KCWxvYWRfY2xhc3MuCgoyMDA0LTA2LTI2ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNTczNAoJKiBleHByLmMgKGV4cGFuZF9qYXZhX2ZpZWxkX29wKTogRW5zdXJlIHRoYXQgdGFyZ2V0IGNsYXNzIGZvciBzdGF0aWMKCWZpZWxkIGFjY2VzcyBoYXMgYmVlbiBsb2FkZWQuCgoyMDA0LTA2LTI2ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgkgICAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJUFIgamF2YS8xMjA3LCBqYXZhLzE2MTc4CgkqIGpjZi1wYXJzZS5jIChsb2FkX2NsYXNzKTogUmV0dXJuIGltbWVkaWF0ZWx5IGlmIHBhc3NlZCBhIHR5cGUgZGVjbAoJd2hlcmUgQ0xBU1NfRlJPTV9TT1VSQ0VfUCBpcyBzZXQuIFJlbW92ZSBGSVhNRS4KCSogcGFyc2UueSAoZG9fcmVzb2x2ZV9jbGFzcyk6IFJlbW92ZSBjaGVja3MgZm9yIENMQVNTX0ZST01fU09VUkNFX1AKCWJlZm9yZSBjYWxsaW5nIGxvYWRfY2xhc3MuCgkocXVhbGlmeV9hbmRfZmluZCk6IExpa2V3aXNlLgoJKGZpbmRfaW5faW1wb3J0c19vbl9kZW1hbmQpOiBMaWtld2lzZS4KCShmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBMaWtld2lzZS4KCjIwMDQtMDYtMjQgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfbGF5b3V0X3NlZW5fY2xhc3NfbWV0aG9kcyk6IERvbid0IGNhbGwgbG9hZF9jbGFzcwoJb24gY2xhc3MgZGVmaW5lZCBieSBzb3VyY2UgcGFyc2VyLgoKMjAwNC0wNi0yMyAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoc2V0X25lc3RlZF9jbGFzc19zaW1wbGVfbmFtZV92YWx1ZSk6IFJlbW92ZWQuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfY2xhc3MpOiBSZW1vdmUgY2FsbHMgdG8KCXNldF9uZXN0ZWRfY2xhc3Nfc2ltcGxlX25hbWVfdmFsdWUuCgoyMDA0LTA2LTIyICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCSAgICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCglGaXhlcyBQUiBqYXZhLzE2MTEzLgoJKiBkZWNsLmMgKGZvcmNlX3BvcGxldmVscyk6IFJlbW92ZSBjYWxsIHRvIGV4cGFuZF9lbmRfYmluZGluZ3MuCgoyMDA0LTA2LTIyICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCgkqIHBhcnNlLnkgKGNyZWF0ZV9jbGFzcyk6IENvcnJlY3QgZGlhZ25vc3RpYyBtZXNzYWdlIGFib3V0CglqYXZhLmxhbmcuT2JqZWN0IGV4dGVuZGluZyBhbnl0aGluZyBlbHNlLgoKMjAwNC0wNi0yMSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNsYXNzLmMgKGJ1aWxkX2NsYXNzX3JlZik6IEFkZCBuZXcgb3BlcmFuZCBmb3IgQ09NUE9ORU5UX1JFRi4KCShidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogTGlrZXdpc2UgYW5kIGFkZCBuZXcgb3BlcmFuZHMgZm9yIEFSUkFZX1JFRi4KCSogY29uc3RhbnRzLmMgKGJ1aWxkX3JlZl9mcm9tX2NvbnN0YW50X3Bvb2wpOiBMaWtld2lzZS4KCSogZXhwci5jIChidWlsZF9qYXZhX2FycmF5X2xlbmd0aF9hY2Nlc3MpOiBMaWtld2lzZS4KCShidWlsZF9nZXRfY2xhc3MsIGJ1aWxkX2ZpZWxkX3JlZiwgYnVpbGRfa25vd25fbWV0aG9kX3JlZik6IExpa2V3aXNlLgoJKGludm9rZV9idWlsZF9kdGFibGUsIGJ1aWxkX2ludm9rZXZpcnR1YWwpOiBMaWtld2lzZS4KCShidWlsZF9pbnZva2VpbnRlcmZhY2UsIGphdmFfZXhwYW5kX2V4cHIpOiBMaWtld2lzZS4KCShlbWl0X2luaXRfdGVzdF9pbml0aWFsaXphdGlvbik6IExpa2V3aXNlLgoJKiBqYXZhLWdpbXBsaWZ5LmMgKGphdmFfZ2ltcGxpZnlfbmV3X2FycmF5X2luaXQpOiBMaWtld2lzZS4KCSogcGFyc2UueSAobWFrZV9xdWFsaWZlZF9uYW1lLCBidWlsZF9hcnJheV9yZWYpOiBMaWtld2lzZS4KCjIwMDQtMDYtMjEgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogamF2YS1naW1wbGlmeS5jIChqYXZhX2dpbXBsaWZ5X2Jsb2NrKTogc2V0IFRSRUVfVVNFRCBvbiB0aGUgbmV3CglibG9jay4KCjIwMDQtMDYtMjEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogamNmLmggKHN0cnVjdCBKQ0YpOiBDaGFuZ2UgamF2YV9zb3VyY2UsIHJpZ2h0X3ppcCBhbmQgZmluaXNoZWQKCXRvIHVuc2lnbmVkIGludC4KCSogbGV4LmggKHN0cnVjdCBqYXZhX2xleGVyKTogQ2hhbmdlIGhpdF9lb2YsIHJlYWRfYW55dGhpbmcsCglieXRlX3N3YXAgYW5kIHVzZV9mYWxsYmFjayB0byB1bnNpZ25lZCBpbnQuCgkqIHBhcnNlLmggKHN0cnVjdCBfamRlcCk6IENoYW5nZSBmbGFnMCB0byB1bnNpZ25lZCBpbnQuCgoyMDA0LTA2LTE3ICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCglGaXhlcyBQUiBqYXZhLzEzOTQ4CgkqIHBhcnNlLnkgKGphdmFfbGF5b3V0X3NlZW5fY2xhc3NfbWV0aG9kcyk6IEVuc3VyZSBjbGFzcyBpcyBsb2FkZWQKCWJlZm9yZSB0cnlpbmcgdG8gbGF5IG91dCBpdHMgbWV0aG9kcy4KCSogamNmLXBhcnNlLmMgKHJlYWRfY2xhc3MpOiBUcmFjayBwYXJzZWQgZmlsZXMgdXNpbmcgY2Fub25pY2FsIHBhdGhzCglvYnRhaW5lZCB2aWEgbHJlYWxwYXRoIGZyb20gbGliaWJlcnR5LgoJKGphdmFfcGFyc2VfZmlsZSk6IExpa2V3aXNlLgoJKHBhcnNlX3NvdXJjZV9maWxlXzEpOiBSZW5hbWUgZm9ybWFsIHBhcmFtZXRlciB0byByZWZsZWN0IGl0cwoJbW9kaWZpZWQgcHVycG9zZS4gTWlub3IgZm9ybWF0dGluZyBmaXguCgoyMDA0LTA2LTE1ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogY2xhc3MuYyAoZW1pdF9yZWdpc3Rlcl9jbGFzc2VzKTogTWFrZSB0aGUgZnVuY3Rpb24gdW5pbmxpbmFibGUsCglkbyBub3Qgc2V0IGN1cnJlbnRfZnVuY3Rpb25fY2Fubm90X2lubGluZS4KCSogcmVzb3VyY2UuYyAod3JpdGVfcmVzb3VyY2VfY29uc3RydWN0b3IpOiBEbyBub3QgcmVzZXQKCWZsYWdfaW5saW5lX2Z1bmN0aW9ucyBhcm91bmQgcmVzdF9vZl9jb21waWxhdGlvbi4KCjIwMDQtMDYtMDggIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGphdmEvMTU3NjkKCSogZXhwci5jIChqYXZhX3RydXRodmFsdWVfY29udmVyc2lvbik6IEhhbmRsZQoJVU5FUV9FWFBSLCBVTkxFX0VYUFIsIFVOR0VfRVhQUiwgVU5MVF9FWFBSLCBVTkdUX0VYUFIsCglPUkRFUkVEX0VYUFIsIGFuZCBVTk9SREVSRURfRVhQUiBhcyBjb21wYXJpc29uIG9wZXJhdG9ycywKCWkuZS4gcmV0dXJuIHRoZSBleHByZXNzaW9uLgoKMjAwNC0wNi0wMyBNYXJrIEcuIEFkYW1zICA8bWFyay5nLmFkYW1zQHN5bXBhdGljby5jYT4KCgkqIGdqYXZhaC5jOiBJbmNsdWRlIHZlcnNpb24uaAoKMjAwNC0wNS0zMSAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2NvbmRpdGlvbmFsKTogQ29ycmVjdCBoYW5kbGluZwoJb2YgdW5vcmRlcmVkIGNvbmRpdGlvbmFscy4gQWRkIGNvbW1lbnQuCgoyMDA0LTA1LTI5ICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCSAgICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGphdmEtdHJlZS5oIChERUNMX0xPQ0FMX0ZJTkFMX0lVRCk6IE5ldyBtYWNybyB0byB0ZXN0IGlmIGEKCWxvY2FsIHZhcmlhYmxlIHdhcyBpbml0aWFsaXNlZCB1cG9uIGRlY2xhcmF0aW9uLgoJKiBwYXJzZS55IChkZWNsYXJlX2xvY2FsX3ZhcmlhYmxlcyk6IFNldCBERUNMX0xPQ0FMX0ZJTkFMX0lVRCBpZgoJdmFyaWFibGUgd2FzIGZpbmFsIGFuZCBpbml0aWFsaXNlZCB1cG9uIGRlY2xhcmF0aW9uLgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2ZpbmFsX3JlYXNzaWduZWQpOiBHaXZlIGVycm9yIG9ubHkgaWYgYSBibGFuawoJZmluYWwgaXMgbm90IGRlZmluaXRlbHkgdW5hc3NpZ25lZCBvciBpZiBhbiBpbml0aWFsaXNlZCBmaW5hbCBpcwoJcmVhc3NpZ25lZC4KCShjaGVja19ib29sX2luaXQpOiBSZXNwZWN0IEpMUzIgMTYuMS43IHJlcXVpcmVtZW50cyBmb3IgYm9vbGVhbgoJYXNzaWdubWVudCBleHByZXNzaW9ucy4gUmVtb3ZlIGNhc2UgTU9ESUZZX0VYUFIsIGxhYmVsIGRvX2RlZmF1bHQuCgkoY2hlY2tfaW5pdCk6IFBlcmZvcm0gaW5pdGlhbGlzZWQtdmFyaWFibGUtcmVtb3Zpbmctb3B0aW1pc2F0aW9uCglvbmx5IG9uIG5vbi1maW5hbCBsb2NhbCB2YXJpYWJsZXMuCgoyMDA0LTA1LTI4ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfY29uZGl0aW9uYWwpOiBIYW5kbGUgYmlub3BzCglVTkxUX0VYUFIsIFVOTEVfRVhQUiwgVU5HVF9FWFBSLCBVTkdFX0VYUFIsIFVORVFfRVhQUiwKCWFuZCBMVEdUX0VYUFIuCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBMaWtld2lzZS4KCjIwMDQtMDUtMjggIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IEhhbmRsZSBiaW5vcHMgVU5MVF9FWFBSLCBVTkxFX0VYUFIsCglVTkdUX0VYUFIsIFVOR0VfRVhQUiwgVU5FUV9FWFBSLCBhbmQgTFRHVF9FWFBSLgoKMjAwNC0wNS0yOCAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKE9iamVjdCBhbGxvY2F0aW9uKTogUmVtb3ZlIF9Kdl9BbGxvY0J5dGVzLgoJKE1peGluZyB3aXRoIEMrKyk6IERvY3VtZW50IEp2QWxsb2NCeXRlcyBhbmQgUmF3RGF0YU1hbmFnZWQuCgoyMDA0LTA1LTI2ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKHN0cnVjdCBiaW5kaW5nX2xldmVsKTogQWRkIEdUWSBtYXJrZXIuIENvbXBpbGUKCWJpbmRpbmdfZGVwdGggdW5jb25kaXRpb25hbGx5LgoJKGN1cnJlbnRfYmluZGluZ19sZXZlbCwgZnJlZV9iaW5kaW5nX2xldmVsLCBnbG9iYWxfYmluZGluZ19sZXZlbCk6CglMaWtld2lzZS4KCShjbGVhcl9iaW5kaW5nX2xldmVsKTogVW5jb25kaXRpb25hbGx5IHNldCBiaW5kaW5nX2RlcHRoLgoJKG1ha2VfYmluZGluZ19sZXZlbCk6IFVzZSBnZ2NfYWxsb2NfY2xlYXJlZCwgbm90IHhtYWxsb2MuCgoyMDA0LTA1LTI2ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBsZXguYyAoamF2YV9uZXdfbGV4ZXIpOiBTZXQgJ2VuY29kaW5nJy4KCShqYXZhX3JlYWRfY2hhcik6IEltcHJvdmUgZXJyb3IgbWVzc2FnZSBmb3IgdW5yZWNvZ25pemVkIGNoYXJhY3RlcnMuCgkqIGxleC5oIChzdHJ1Y3QgamF2YV9sZXhlcik6IE5ldyBmaWVsZCAnZW5jb2RpbmcnLgoKMjAwNC0wNS0yMyAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIE1ha2UtbGFuZy5pbjogTGluayBpbiAkKExJQkNQUCkgaW5zdGVhZCBvZiBta2RlcHMuby4KCjIwMDQtMDUtMjEgIE1hcmsgV2llbGFhcmQgIDxtYXJrQGtsb21wLm9yZz4KCgkqIGdqYXZhaC5jIChwcmludF9zdHViX29yX2puaSk6IE1hcmsgZnVuY3Rpb25zIG9ubHkgSk5JRVhQT1JULCBub3QKCWV4dGVybi4KCjIwMDQtMDUtMTkgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiB0eXBlY2suYzogUmVtb3ZlIG5vbi1wcmludGFibGUgY2hhcmFjdGVyIDE2MC4KCjIwMDQtMDUtMTcgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCSogY2hlY2staW5pdC5jOiBDb3JyZWN0IG1pbm9yIHR5cG9zLgoKMjAwNC0wNS0xMyAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4sIGV4cHIuYywgamF2YS1naW1wbGlmeS5jOiBSZW5hbWUKCXRyZWUtc2ltcGxlLltjaF0gdG8gdHJlZS1naW1wbGUuW2NoXS4KCjIwMDQtMDUtMTQgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCSogamF2YS1naW1wbGlmeS5jIChqYXZhX2dpbXBsaWZ5X2V4cHIpOiBDb3JyZWN0IG1pbm9yIHR5cG9zLgoKMjAwNC0wNS0xMyAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJTWVyZ2UgZnJvbSB0cmVlLXNzYS0yMDAyMDYxOS1icmFuY2guICBTZWUKCUNoYW5nZUxvZy50cmVlLXNzYSBmb3IgZGV0YWlscy4KCgkqIE1ha2UtbGFuZy5pbiwgYnVpbHRpbnMuYywgY2hlY2staW5pdC5jLCBjbGFzcy5jLAoJY29uc3RhbnRzLmMsIGRlY2wuYywgZXhjZXB0LmMsIGV4cHIuYywgamF2YS1leGNlcHQuaCwKCWphdmEtdHJlZS5kZWYsIGphdmEtdHJlZS5oLCBqY2YtcGFyc2UuYywgamNmLXdyaXRlLmMsCglsYW5nLmMsIGxhbmcub3B0LCBwYXJzZS55LCByZXNvdXJjZS5jOiBNZXJnZWQuCgkqIGphdmEtZ2ltcGxpZnkuYzogTmV3IGZpbGUuCgoyMDA0LTA1LTEwICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGNyZWF0ZV9jbGFzcyk6IFNldCBUWVBFX1ZGSUVMRC4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgoJKiBleHByLmMgKGJ1aWxkX2ludm9rZXZpcnR1YWwpOiBSZW1vdmUgREVDTF9WSU5ERVggb2Zmc2V0IGFkanVzdG1lbnQuCgkqIGNsYXNzLmMgKG1ha2VfbWV0aG9kX3ZhbHVlKTogUmVwbGFjZSBERUNMX1ZJTkRFWCB3aXRoIGNhbGwgdG8KCWdldF9tZXRob2RfaW5kZXgoKS4KCShnZXRfZGlzcGF0Y2hfdmVjdG9yKTogTGlrZXdpc2UuCgkobGF5b3V0X2NsYXNzX21ldGhvZCk6IExpa2V3aXNlLgoJUmVwbGFjZSBzZXQgb2YgREVDTF9WSU5ERVggd2l0aCBjYWxsIHRvIHNldF9tZXRob2RfaW5kZXgoKS4KCShzZXRfbWV0aG9kX2luZGV4KTogTmV3IGZ1bmN0aW9uLgoJKGdldF9tZXRob2RfaW5kZXgpOiBOZXcgZnVuY3Rpb24uCgkqIGphdmEtdHJlZS5oIChzZXRfbWV0aG9kX2luZGV4KTogTmV3IGZ1bmN0aW9uIGRlY2wuCgkoZ2V0X21ldGhvZF9pbmRleCk6IE5ldyBmdW5jdGlvbiBkZWNsLgoKMjAwNC0wNS0xMCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBwYXJzZS55IChjaGVja19wa2dfY2xhc3NfYWNjZXNzKTogQWRkIG5ldyBhcmd1bWVudAoJYW5kIHVzZSBpdCB3aGVuIGNsIGlzIE5VTEwgdG8gY2FsbCBsb29rdXBfY2wgb24gaXQuCgkocGFyc2VyX2NoZWNrX3N1cGVyX2ludGVyZmFjZSk6IERvIG5vdCBjYWxsIGxvb2t1cF9jbC4KCVBhc3MgdGhpc19kZWNsIHRvIGNoZWNrX3BrZ19jbGFzc19hY2Nlc3MgYW5kIE5VTEwKCWluc3RlYWQgb2YgbG9va3VwX2NsLgoJKHBhcnNlcl9jaGVja19zdXBlcik6IFVwZGF0ZSBmb3IgY2hhbmdlIGluCgljaGVja19wa2dfY2xhc3NfYWNjZXNzLgoJKGRvX3Jlc29sdmVfY2xhc3MpOiBMaWtld2lzZS4KCShwcm9jZXNzX2ltcG9ydHMpOiBMaWtld2lzZS4KCShmaW5kX2luX2ltcG9ydHNfb25fZGVtYW5kKTogTGlrZXdpc2UuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogTGlrZXdpc2UuCgoyMDA0LTA1LTA2ICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCglGaXhlcyBQUiBqYXZhLzk2ODUsIFBSIGphdmEvMTUwNzMKCSogcGFyc2UueSAoYWNjZXNzaWJpbGl0eV9zdHJpbmcpOiBOZXcgbWV0aG9kLgoJKG5vdF9hY2Nlc3NpYmxlX2ZpZWxkX2Vycm9yKTogVXNlIGFjY2Vzc2liaWxpdHlfc3RyaW5nKCkKCWluc3RlYWQgb2YgamF2YV9hY2NzdHJpbmdfbG9va3VwKCkuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogQ2hlY2sgd2l0aAoJY2hlY2tfcGtnX2NsYXNzX2FjY2VzcygpIGJlZm9yZSBhbGxvd2luZyBhY2Nlc3MgdXNpbmcKCXF1YWxpZmllZCBuYW1lcy4KCUZpeCBjb21tZW50IHR5cG8uCglVc2UgY2hlY2tfcGtnX2NsYXNzX2FjY2VzcygpIGluc3RlYWQgb2Ygbm90X2FjY2Vzc2libGVfcCgpCglmb3IgdW5xdWFsaWZpZWQgdHlwZXMuCgkobm90X2FjY2Vzc2libGVfcCk6IFVzZSBERUNMX0NPTlRFWFQgKG1lbWJlcikgaW5zdGVhZCBvZgoJUkVGRVJFTkNFIGZvciBwYWNrYWdlLXByaXZhdGUgYWNjZXNzIGNoZWNraW5nLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogVXNlIGFjY2Vzc2liaWxpdHlfc3RyaW5nKCkgaW5zdGVhZAoJb2YgamF2YV9hY2NzdHJpbmdfbG9va3VwKCkuCgoyMDA0LTA0LTMwICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCglGaXhlcyBQUiBqYXZhLzE1MTMzCgkqIGdqYXZhaC5jIChzdHJ1Y3QgbWV0aG9kX25hbWUpOiBBZGQgbWVtYmVyIGlzX25hdGl2ZS4KCShvdmVybG9hZGVkX2puaV9tZXRob2RfZXhpc3RzX3ApOiBNYXRjaCBjYW5kaWRhdGUgbWV0aG9kIG9ubHkgaWYKCWl0IGlzIG5hdGl2ZS4KCShwcmludF9tZXRob2RfaW5mbyk6IEluaXRpYWxpc2UgaXNfbmF0aXZlIGZsYWcgZnJvbSB0aGUgbWV0aG9kJ3MKCWFjY2VzcyBmbGFncy4KCjIwMDQtMDQtMzAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoamF2YV9idWlsdGlucyk6IEFkZCBhY29zLCBhc2luLCBjZWlsIGFuZCBmbG9vci4KCShpbml0aWFsaXplX2J1aWx0aW5zKTogTGlrZXdpc2UsIGRlZmluZSBhY29zLCBhc2luLCBjZWlsIGFuZCBmbG9vci4KCjIwMDQtMDQtMjIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogcmVzb3VyY2UuYyAod3JpdGVfcmVzb3VyY2VfY29uc3RydWN0b3IpOiBHdWFyZCBjYWxsIHRvIHBvc3NpYmx5CglOVUxMIHRhcmdldG0uYXNtX291dC5jb25zdHJ1Y3RvciB3aXRoIHRhcmdldG0uaGF2ZV9jdG9yc19kdG9ycy4KCjIwMDQtMDQtMTkgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6IEFkZCBuZXcgZmllbGQgYXV4X2luZm8uCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IFB1c2ggdHlwZSBhbmQgZGVjbCBmb3IKCWBhdXhfaW5mbycuCgoyMDA0LTA0LTE1ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9qYXZhX05FVyk6IERvbid0IHVzZSBzaXplIGFyZ3VtZW50IGZvcgoJX0p2X0FsbG9jT2JqZWN0IGNhbGxzLgoJKiBwYXJzZS55IChwYXRjaF9pbnZva2UpOiBMaWtld2lzZS4KCjIwMDQtMDQtMTIgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfaW52b2tlaW50ZXJmYWNlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgdG8KCWZpeCB3YXJuaW5ncy4KCjIwMDQtMDQtMTIgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGdldF9pbnRlcmZhY2VfbWV0aG9kX2luZGV4KTogTmV3IGZ1bmN0aW9uLiBSZXR1cm4gZGlzcGF0Y2gKCWluZGV4IGZvciBpbnRlcmZhY2UgbWV0aG9kLgoJKG1ha2VfbWV0aG9kX3ZhbHVlKTogRm9yIGludGVyZmFjZSBtZXRob2RzLCBzZXQgaW5kZXggZmllbGQgdG8KCWlmYWNlIGRpc3BhdGNoIGluZGV4LCBub3QgREVDTF9WSU5ERVguCgkqIGV4cHIuYyAoYnVpbGRfaW52b2tlaW50ZXJmYWNlKTogVXNlIGdldF9pbnRlcmZhY2VfbWV0aG9kX2luZGV4LgoKMjAwNC0wMy0zMSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IFVzZSBUWVBFX1VOU0lHTkVELgoKMjAwNC0wMy0zMSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNDEwNAoJKiBqY2YtaW8uYyAob3BlbmRpcl9pbl96aXApOiBUaWR5IHVwIGVycm9yIGhhbmRsaW5nLgoKMjAwNC0wMy0zMCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGJ1aWx0aW5zLmMsIGV4cHIuYywgamNmLmgsIHBhcnNlLmg6IFVzZSBuZXcgc2hvcnRlcgoJZm9ybSBvZiBHVFkgbWFya2Vycy4KCjIwMDQtMDMtMjUgIE1hcmN1cyBNZWlzc25lciAgPG1laXNzbmVyQHN1c2UuZGU+CgoJUFIgamF2YS8xNDY4OToKCSogamNmLXBhdGguYyAoamNmX3BhdGhfZXh0ZGlyc19hcmcpOiBBZGQgbWlzc2luZyBjbG9zZWRpci4KCjIwMDQtMDMtMjMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE0MzE1OgoJKiBqY2Ytd3JpdGUuYyAobWFrZV9jbGFzc19maWxlX25hbWUpOiBEb24ndCByZXBvcnQgaWYgbWtkaXIKCWZhaWxlZCB3aXRoIEVFWElTVC4KCjIwMDQtMDMtMjMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpIChFeHRlbnNpb25zKTogRG9jdW1lbnQgR0NKX1BST1BFUlRJRVMuCgoyMDA0LTAzLTIwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY2xhc3MuYywgZ2phdmFoLmMsIGxhbmcuYzogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGdjai50ZXhpOiBGaXggdHlwb3MuCgoyMDA0LTAzLTE5ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGdjai50ZXhpIChDb2RlIEdlbmVyYXRpb24pOiAgRG9jdW1lbnQgbmV3IGZsYWdzIGFuZCBhc3NlcnQgZGVmYXVsdHMuCgoJKiBjbGFzcy5jIChhc3N1bWVfY29tcGlsZWRfbm9kZV9zdHJ1Y3QpOiAgUmVuYW1lIHR5cGUgdG8KCWNsYXNzX2ZsYWdfbm9kZV9zdHJ1Y3QsIGFzIGl0IGlzIG5vdyBhbHNvIHVzZWQgZm9yIGVuYWJsZV9hc3NlcnRpb25zLgoJUmVuYW1lIGFzc3VtZV9jb21waWxlZF9ub2RlIHR5cGVkZWYuICBSZW5hbWUgZXhjbHVkZXAgZmllbGQgdG8gdmFsdWUuCgkoZmluZF9hc3N1bWVfY29tcGlsZWRfbm9kZSk6ICBSZW5hbWUgZnVuY3Rpb24gdG8gZmluZF9jbGFzc19mbGFnX25vZGUuCglNaW5vciBvcHRpbWl6YXRpb24gLSBhdm9pZCBuZWVkbGVzcyBzdHJsZW4uCgkoYWRkX2Fzc3VtZV9jb21waWxlZCk6ICBTb21lIHR3ZWFraW5nIGFuZCBvcHRpbWl6YXRpb24uCglSZW5hbWUgYW5kIGdlbmVyYWxpemUgdG8gYWRkX2NsYXNzX2ZsYWcgdGFrZW0gYW4gZXh0cmEgcGFyYW1ldGVyLgoJKGFkZF9hc3N1bWVfY29tcGxlZCk6ICBOZXcganVzdCBjYWxscyBhZGRfY2xhc3NfZmxhZy4KCShhZGRfZW5hYmxlX2Fzc2VydCwgZW5hYmxlX2Fzc2VydGlvbnMpOiAgTmV3IGZ1bmN0aW9ucy4KCShlbmFibGVfYXNzZXJ0X3RyZWUpOiAgTmV3IHN0YXRpYy4KCSogamF2YS10cmVlLmggKGFkZF9lbmFibGVfYXNzZXJ0LCBlbmFibGVfYXNzZXJ0aW9ucyk6IE5ldyBkZWNsYXJhdGlvbnMuCgkqIGxhbmcub3B0IChmZW5hYmxlLWFzc2VydGlvbnMsIGZlbmFibGUtYXNzZXJ0aW9ucz0sCglmZGlzYWJsZS1hc3NlcnRpb25zLCBmZGlzYWJsZS1hc3NlcnRpb25zPSk6ICBOZXcgb3B0aW9ucy4KCSogbGFuZy5jIChqYXZhX2hhbmRsZV9vcHRpb24pOiAgSGFuZGxlIG5ldyBvcHRpb25zLgoJKiBwYXJzZS55IChidWlsZF9pbmNvbXBsZXRlX2NsYXNzX3JlZik6ICBIYW5kbGUgY2xhc3MkIGluIGFuIGlubmVyCgljbGFzcyBpbiBhbiBpbnRlcmZhY2UgLSBjcmVhdGUgaGVscGVyIGNsYXNzIG5lc3RlZCBpbiBvdXRlciBpbnRlcmZhY2UuCgkoYnVpbGRfYXNzZXJ0aW9uKTogIFNob3J0LWNpcmN1aXQgaWYgZW5hYmxlX2Fzc2VydGlvbnMgaXMgZmFsc2UuCgoyMDA0LTAzLTE4ICBSaWNoYXJkIEtlbm5lciA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBqYXZhLXRyZWUuaDogQ2hhbmdlcyB0aHJvdWdob3V0IHRvIGFkZCBjaGVja2luZyB0byBtYWNyb3MKCWFuZCBudW1lcm91cyB3aGl0ZXNwYWNlIGNoYW5nZXMuCgkoVkFSX09SX0ZJRUxEX0NIRUNLKTogTmV3IG1hY3JvLgoJKiBqY2Ytd3JpdGUuYyAoZ2V0X2FjY2Vzc19mbGFncyk6IFVzZSBGSUVMRF9QVUJMSUMsIE1FVEhPRF9QVUJMSUMsCglGSUVMRF9GSU5BTCwgYW5kIE1FVEhPRF9GSU5BTCBpbnN0ZWFkIG9mIENMQVNTX1BVQkxJQyBhbmQgQ0xBU1NfRklOQUwuCgoyMDA0LTAzLTE2ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGpjZi1qdW1wLmMgKG9wdGlvbnMpOiAgTmV3IC0tcHJpbnQtY29uc3RhbnRzIG9wdGlvbi4KCSogZ2NqLnRleGkgKEludm9raW5nIGpjZi1kdW1wKTogIERvY3VtZW50IC0tcHJpbnQtY29uc3RhbnRzLgoKCSogamNmLWR1bXAuYyAoZmxhZ19wcmludF9jb25zdGFudF9wb29sKTogIERlZmF1bHQgdG8gb2ZmLgoJKHByaW50X2NvbnN0YW50X3RlcnNlX3dpdGhfaW5kZXgpOiAgTmV3IGhlbHBlciBmdW5jdGlvbi4KCSh2YXJpb3VzIHBsYWNlcyk6ICBDaGVjayBmbGFnX3ByaW50X2NvbnN0YW50X3Bvb2wgd2hlcmUgbWlzc2luZy4KCShtYWluKTogIElmIHZlcmJvc2Ugc2V0IGZsYWdfcHJpbnRfY29uc3RhbnRfcG9vbC4KCShIQU5ETEVfSU5ORVJDTEFTU0VTX0FUVFJJQlVURSk6ICBOdWxsIGlubmVyIGNsYXNzIG5hbWUgaXMgYW5vbnltb3VzLgoKMjAwNC0wMy0xNSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNDU4MQoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocyk6IENoZWNrIHRoYXQgZmluYWwgdmFyaWFibGUgaGFzIGFuCglpbml0aWFsaXplci4KCjIwMDQtMDMtMTIgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTQ1NTEKCSogdHlwZWNrLmMgKGNvbnZlcnQpOiBDbGVhciBUUkVFX09WRVJGTE9XIGFmdGVyIGFuIGludGVnZXIKCWNvbnZlcnNpb24uCgoyMDA0LTAyLTI5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChqYXZhX3BhcnNlX2ZpbGUpOiBIYW5kbGUgdGhlIGNhc2UgdGhhdCBpbnB1dF9maWxlbmFtZQoJaXMgTlVMTC4KCjIwMDQtMDItMjcgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogcGFyc2UueSAoYnVpbGRfYXNzZXJ0aW9uKTogIFJlLWRvIDAyLTI1IGNoYW5nZSBmb2xsb3dpbmcgSmVmZiBTdHVybQoJc3VnZ2VzdGlvbjogIFVzZSBidWlsZF9pbmNvbXBsZXRlX2NsYXNzX3JlZi4KCVRoaXMgZml4ZXMgUFIgamF2YS8xMzUwOCwgamF2YS8xMTcxNC4KCjIwMDQtMDItMjcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBqYXZhL3BhcnNlLmg6IFVwZGF0ZSBjb3B5cmlnaHQuCgoyMDA0LTAyLTI2ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE0MjMxOgoJKiBwYXJzZS55IChjaGVja19pbnRlcmZhY2VfdGhyb3dzX2NsYXVzZXMpOiBDaGVjayBmb3IKCSFNRVRIT0RfSU5WSVNJQkxFIChpZmFjZV9tZXRob2QpLgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3NfbWV0aG9kcyk6IENoZWNrIGZvciBDTEFTU19JTlRFUkZBQ0UgYXMKCXdlbGwgYXMgQ0xBU1NfQUJTVFJBQ1QuCgoyMDA0LTAyLTI1ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIHBhcnNlLnkgKGJ1aWxkX2Fzc2VydGlvbik6ICBJZiB3ZSdyZSBpbiBhbiBpbm5lciBjbGFzcywgY3JlYXRlIHRoZQoJY2xhc3MkIGhlbHBlciByb3V0aW5lIGluIHRoZSBvdXRlciBjbGFzcy4KCjIwMDQtMDItMTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChzd2l0Y2hfbGFiZWwpOiBVc2UgbWFrZV9ub2RlIGZvciBERUZBVUxUX0VYUFIuCgoyMDA0LTAyLTE2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS5pbnN0YWxsLW1hbik6IEFkZCBleHRyYSBkZXBlbmRlbmNpZXMuCgoyMDA0LTAyLTEzICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogSW5zdGFsbCBtYW4gcGFnZXMgdW5kZXIgdGhlIHNhbWUgbmFtZXMKCShwb3NzaWJseSB0cmFuc2Zvcm1lZCkgYXMgdGhlIHByb2dyYW0gdGhleSBkb2N1bWVudC4KCjIwMDQtMDItMTAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogZ2phdmFoLmM6IEluY2x1ZGUgImludGwuaCIuCgkoZXJyb3IpOiBOZXcgZnVuY3Rpb24uCgkobWFpbik6IENhbGwgZ2NjX2luaXRfbGliaW50bC4KCShnZXRfZmllbGRfbmFtZSwgdGhyb3dhYmxlX3AsIHByaW50X2NfZGVjbCwgcHJpbnRfZnVsbF9jeHhfbmFtZSwKCXByaW50X3N0dWJfb3Jfam5pLCBwcm9jZXNzX2ZpbGUsIG1haW4pOiBVc2UgZXJyb3IgcmF0aGVyIHRoYW4KCWZwcmludGYuCgkocHJpbnRfbWV0aG9kX2luZm8sIHVzYWdlLCBoZWxwLCB2ZXJzaW9uLCBtYWluKTogTWFyayBzdHJpbmdzIGZvcgoJdHJhbnNsYXRpb24gd2l0aCBfLiAgQXZvaWQgc3BsaXR0aW5nIHVwIHNlbnRlbmNlcy4gIFNlbmQKCWluZm9ybWF0aW9uIG1lc3NhZ2VzIHRvIHN0ZG91dC4KCSogamNmLWR1bXAuYzogSW5jbHVkZSAiaW50bC5oIi4KCShtYWluKTogQ2FsbCBnY2NfaW5pdF9saWJpbnRsLgoJKHByb2Nlc3NfY2xhc3MsIHVzYWdlLCBoZWxwLCB2ZXJzaW9uLCBtYWluLCBDSEVDS19QQ19JTl9SQU5HRSk6CglNYXJrIGVycm9yLCB1c2FnZSBhbmQgdmVyc2lvbiBtZXNzYWdlcyBmb3IgdHJhbnNsYXRpb24gd2l0aCBfLgoJQXZvaWQgc3BsaXR0aW5nIHVwIHNlbnRlbmNlcy4KCSoganYtc2Nhbi5jOiBJbmNsdWRlICJpbnRsLmgiLgoJKGZhdGFsX2Vycm9yLCB3YXJuaW5nKTogQ2hhbmdlIHBhcmFtZXRlciBzIHRvIG1zZ2lkLiAgVHJhbnNsYXRlCgltZXNzYWdlcy4KCShtYWluKTogQ2FsbCBnY2NfaW5pdF9saWJpbnRsLgoJKHVzYWdlLCBoZWxwLCB2ZXJzaW9uKTogTWFyayBlcnJvciwgdXNhZ2UgYW5kIHZlcnNpb24gbWVzc2FnZXMgZm9yCgl0cmFuc2xhdGlvbiB3aXRoIF8uICBBdm9pZCBzcGxpdHRpbmcgdXAgc2VudGVuY2VzLgoJKiBqdmdlbm1haW4uYzogSW5jbHVkZSAiaW50bC5oIi4KCShtYWluKTogQ2FsbCBnY2NfaW5pdF9saWJpbnRsLgoJKHVzYWdlLCBtYWluKTogTWFyayBlcnJvciBtZXNzYWdlcyBmb3IgdHJhbnNsYXRpb24gd2l0aCBfLgoJKiBNYWtlLWxhbmcuaW4gKEdDSkhfT0JKUywgSlZTQ0FOX09CSlMsIEpDRkRVTVBfT0JKUywKCUpWR0VOTUFJTl9PQkpTKTogQWRkIGludGwuby4KCShqYXZhL2pjZi1kdW1wLm8sIGphdmEvZ2phdmFoLm8sIGphdmEvanYtc2Nhbi5vLAoJamF2YS9qdmdlbm1haW4ubyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoyMDA0LTAyLTA4ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6ICBJbiBjYXNlIG9mIGluYWNjZXNzaWJsZQoJY2xhc3MgZG9uJ3QgdXNlIG5vdF9hY2Nlc3NpYmxlX2ZpZWxkX2Vycm9yLCB3aGljaCBjYW4gZ2V0IGNvbmZ1c2VkLgoKMjAwNC0wMi0wNSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCglNYWtlLWxhbmcuaW4gKHBvLWdlbmVyYXRlZCk6ICBEZWxldGUuCgoyMDA0LTAyLTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogTWFrZS1sYW5nLmluIChqYXZhL2RlY2wubywgamF2YS9leHByLm8sIGphdmEvcGFyc2Uubyk6CglEZXBlbmQgb24gdGFyZ2V0LmguCgkqIGRlY2wuYzogSW5jbHVkZSB0YXJnZXQuaC4KCShzdGFydF9qYXZhX21ldGhvZCk6IFJlcGxhY2UgUFJPTU9URV9QUk9UT1RZUEVTIHdpdGgKCXRhcmdldG0uY2FsbHMucHJvbW90ZV9wcm90b3R5cGVzLgoJKiBleHByLmM6IEluY2x1ZGUgdGFyZ2V0LmguCgkocG9wX2FyZ3VtZW50cyk6IFJlcGxhY2UgUFJPTU9URV9QUk9UT1RZUEVTIHdpdGgKCXRhcmdldG0uY2FsbHMucHJvbW90ZV9wcm90b3R5cGVzLgoJKiBwYXJzZS55OiBJbmNsdWRlIHRhcmdldC5oLgoJKHN0YXJ0X2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBSZXBsYWNlIFBST01PVEVfUFJPVE9UWVBFUwoJd2l0aCB0YXJnZXRtLmNhbGxzLnByb21vdGVfcHJvdG90eXBlcy4KCjIwMDQtMDItMDQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0eXBlY2suYzogVXBkYXRlIGNvcHlyaWdodC4KCjIwMDQtMDItMDIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IFJlbW92ZSBkdXBsaWNhdGUKCWdudS9nY2ovUmF3RGF0YS4KCjIwMDQtMDEtMzAgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlLWxhbmcuaW4gKGRvYy9nY2ouZHZpKTogVXNlICQoYWJzX2RvY2RpcikuCgoyMDA0LTAxLTI4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGV4cHIuYyAoYnVpbGRfZmllbGRfcmVmKTogTW92ZSB2YXJpYWJsZQoJZGVmaW5pdGlvbiB1cC4KCjIwMDQtMDEtMjggIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogZXhwci5jIChidWlsZF9maWVsZF9yZWYpOiBXaWRlbiBmaWVsZCBvZmZzZXQuCgoyMDA0LTAxLTI3ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglqYXZhLzEzMjczCgkqIHBhcnNlLnkgKGNoZWNrX2ludGVyZmFjZV90aHJvd3NfY2xhdXNlcyk6IE1ha2Ugc3VyZSBjbGFzc19kZWNsCgloYXMgYmVlbiBsb2FkZWQuCgoyMDA0LTAxLTIyICBKZWZmIFN0dXJtICA8anN0dXJtQG9uZS1wb2ludC5jb20+CgoJUFIgamF2YS8xMzczMwoJKiBwYXJzZS55IChwYXRjaF9hc3NpZ25tZW50KTogRG9uJ3QgbW9kaWZ5IGxoc190eXBlIGZvcgoJcmVmZXJlbmNlIGFzc2lnbm1lbnRzLgoKMjAwNC0wMS0yMCAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2UtbGFuZy5pbjogUmVwbGFjZSAkKGRvY2Rpcikgd2l0aCBkb2MuCgkoamF2YS5pbmZvLCBqYXZhLnNyY2luZm8sIGphdmEubWFuLCBqYXZhLnNyY21hbik6IE5ldyBydWxlcy4KCShqYXZhLmluc3RhbGwtbWFuKTogUmV2YW1wIHJ1bGUuCgoyMDA0LTAxLTIwICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZS1sYW5nLmluIChKQVZBX0lOU1RBTExfTkFNRSwgSkFWQV9UQVJHRVRfSU5TVEFMTF9OQU1FLAoJR0NKSF9UQVJHRVRfSU5TVEFMTF9OQU1FKTogRGVmaW5lIHZpYSBhIGltbWVkaWF0ZSAkKHNoZWxsKQoJaW5zdGVhZCBvZiBkZWZlcnJlZCBiYWNrcXVvdGUuCgoyMDA0LTAxLTE2ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIHR5cGVjay5jIChmaW5kX21ldGhvZF9pbl9pbnRlcmZhY2VzKTogTW92ZSB2YXJpYWJsZQoJZGVmaW5pdGlvbiB1cC4KCjIwMDQtMDEtMTYgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTMyNzM6CgkqIHR5cGVjay5jIChzaGFsbG93X2ZpbmRfbWV0aG9kKTogTmV3LgoJKGZpbmRfbWV0aG9kX2luX3N1cGVyY2xhc3Nlcyk6IE5ldy4KCShmaW5kX21ldGhvZF9pbl9pbnRlcmZhY2VzKTogTmV3LgoJKGxvb2t1cF9kbyk6IFJld3JpdGUuCgkqIGphdmEtdHJlZS5oIChTRUFSQ0hfT05MWV9JTlRFUkZBQ0UpOiBEZWxldGUuCgoJKiBqY2YtcGFyc2UuYyAocmVhZF9jbGFzcyk6IFNhdmUgYW5kIHJlc3RvcmUgb3V0cHV0X2NsYXNzLgoJKiBkZWNsLmMgKGphdmFfZXhwYW5kX2JvZHkpOiBTZXQgb3V0cHV0X2NsYXNzIGZyb20gZm5kZWNsLgoKMjAwNC0wMS0xNSAgTWljaGFlbCBDaGFzdGFpbiAgPG1lYy5nbnVAbWluZHNwcmluZy5jb20+CgoJKiBjbGFzcy5jIChnZW5faW5kaXJlY3RfZGlzcGF0Y2hfdGFibGVzKTogRml4IHN0cmluZyBsZW5ndGgKCWNhbGN1bGF0aW9ucy4KCjIwMDQtMDEtMTUgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlLWxhbmcuaW4gKHBhcnNlLmMsIHBhcnNlLXNjYW4uYyk6IEFsd2F5cyBidWlsZCBpbiBkb2MgZGlyZWN0b3J5LgoJKGphdmEuc3JjZXh0cmEpOiBDb3B5IGFib3ZlIGJhY2sgdG8gc291cmNlIGRpcmVjdG9yeSBpZiByZXF1ZXN0ZWQuCgkocG8tZ2VuZXJhdGVkKTogRGVsZXRlIHJlZmVyZW5jZSB0byAkKHBhcnNlZGlyKS4KCShqYXZhL3BhcnNlLm8sIGphdmEvcGFyc2Utc2Nhbi5vKTogRGVsZXRlIHJlZmVyZW5jZSB0byAkKHBhcnNlZGlyKS4KCVVzZSBpbXBsaWNpdCBydWxlLgoKMjAwNC0wMS0xNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbGFuZy5jIChqYXZhX2VzdGltYXRlX251bV9pbnNuc18xKTogRml4IGJ1ZyBpbiBNT0RJRllfRVhQUiBjb3N0Cgllc3RpbWF0aW9uLgoKMjAwNC0wMS0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGphdmEtdHJlZS5oIChqYXZhX2V4cGFuZF9leHByKTogQ2hhbmdlIHByb3RvdHlwZS4KCSogZXhwci5jIChqYXZhX2V4cGFuZF9leHByKTogQWRkIGFsdF9ydGwgcGFyYW1ldGVyLgoKMjAwNC0wMS0wOSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8xMjc1NToKCSogcGFyc2UueSAoamF2YV9maXhfY29uc3RydWN0b3JzKTogIFNldCBvdXRwdXRfY2xhc3MuCgkoamF2YV9yZW9yZGVyX2ZpZWxkcyk6IExpa2V3aXNlLgoJKGphdmFfbGF5b3V0X2NsYXNzZXMpOiBMaWtld2lzZS4KCShqYXZhX2V4cGFuZF9jbGFzc2VzKTogR2VuZXJhdGUgaW5kaXJlY3QgZGlzcGF0Y2ggdGFibGVzLgoJKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBTZXQgb3V0cHV0X2NsYXNzLgoJKGphdmFfZmluaXNoX2NsYXNzZXMpOiBMaWtld2lzZS4KCSogbGFuZy5jIChqYXZhX2luaXQpOiBUdXJuIG9uIGFsd2F5c19pbml0aWFsaXplX2NsYXNzX3AgaWYgd2UncmUKCXVzaW5nIGluZGlyZWN0IGRpc1thdGNoLgoJKGphdmFfZGVjbF9va19mb3Jfc2liY2FsbCk6IFVzZSBvdXRwdXRfY2xhc3MsIG5vdCBjdXJyZW50X2NsYXNzLgoJKGphdmFfZ2V0X2NhbGxlZV9mbmRlY2wpOiBVc2UgY2xhc3MgbG9jYWwgYXRhYmxlLgoJKiBqY2YtcGFyc2UuYwoJKGFsd2F5c19pbml0aWFsaXplX2NsYXNzX3ApOiBEZWNsIG1vdmVkIHRvIGphdmEtdHJlZS5oLgoJKEhBTkRMRV9DTEFTU19JTkZPKTogU2V0IG91dHB1dF9jbGFzcy4KCShyZWFkX2NsYXNzKTogTGlrZXdpc2UuCgkocGFyc2VfY2xhc3NfZmlsZSk6IENhbGwgZ2VuX2luZGlyZWN0X2Rpc3BhdGNoX3RhYmxlcy4KCShwYXJzZV96aXBfZmlsZV9lbnRyaWVzKTogU2V0IG91dHB1dF9jbGFzcy4KCShqYXZhX3BhcnNlX2ZpbGUpOiBTZXQgb3V0cHV0X2NsYXNzLiAgRG9uJ3QgZW1pdCBzeW1ib2wgdGFibGVzLgoJKiBqYXZhLXRyZWUuaCAob3V0cHV0X2NsYXNzKTogTmV3LgoJUmVtb3ZlIGdsb2JhbCBkZWNsYXJhdGlvbnMgZm9yIG90YWJsZSwgYXRhYmxlLCBhbmQgY3RhYmxlLgoJKGFsd2F5c19pbml0aWFsaXplX2NsYXNzX3ApOiBtb3ZlZCBoZXJlIGZyb20gZGVjbC5jLgoJKERFQ0xfT1dORVIpOiBOZXcuCgkoVFlQRV9BVEFCTEVfTUVUSE9EUywgVFlQRV9BVEFCTEVfU1lNU19ERUNMLCBUWVBFX0FUQUJMRV9ERUNMLAoJVFlQRV9PVEFCTEVfTUVUSE9EUywgVFlQRV9PVEFCTEVfU1lNU19ERUNMLCBUWVBFX09UQUJMRV9ERUNMLAoJVFlQRV9DVEFCTEVfREVDTCwgVFlQRV9DQVRDSF9DTEFTU0VTKTogTmV3LgoJKHN0cnVjdCBsYW5nX3R5cGUpOiBBZGQgb3RhYmxlX21ldGhvZHMsIG90YWJsZV9kZWNsLAoJb3RhYmxlX3N5bXNfZGVjbCwgYXRhYmxlX21ldGhvZHMsIGF0YWJsZV9kZWNsLCBhdGFibGVfc3ltc19kZWNsLAoJY3RhYmxlX2RlY2wsIGNhdGNoX2NsYXNzZXMsIHR5cGVfdG9fcnVudGltZV9tYXAuCgkqIGV4cHIuYyAoYnVpbGRfZmllbGRfcmVmKTogTWFrZSBvdGFibGUsIGF0YWJsZSwgYW5kIGN0YWJsZSBjbGFzcwoJbG9jYWwgcmF0aGVyIHRoYW4gZ2xvYmFsLgoJKGJ1aWxkX2tub3duX21ldGhvZF9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9pbnZva2VpbnRlcmZhY2UpOiBMaWtld2lzZS4KCShqYXZhX2V4cGFuZF9leHByKTogUGFzcyBydW50aW1lIHR5cGUgKHJhdGhlciB0aGFuIGFjdHVhbCB0eXBlKSB0bwoJZXhwYW5kX3N0YXJ0X2NhdGNoLgoJKiBleGNlcHQuYyAocHJlcGFyZV9laF90YWJsZV90eXBlKTogQ3JlYXRlIFRZUEVfVE9fUlVOVElNRV9NQVAgZm9yCgl0aGlzIGNsYXNzLiAgTG9vayB1cCBlYWNoIGNsYXNzIGluIHRoYXQgbWFwIHRvIGRlbGV0ZSBkdXBsaWNhdGVzLgoJKGV4cGFuZF9lbmRfamF2YV9oYW5kbGVyKTogUGFzcyBydW50aW1lIHR5cGUgKHJhdGhlciB0aGFuIGFjdHVhbAoJdHlwZSkgdG8gZXhwYW5kX3N0YXJ0X2NhdGNoLgoJKiBkZWNsLmM6IChhbHdheXNfaW5pdGlhbGl6ZV9jbGFzc19wKTogRGVjbCBtb3ZlZCB0byBqYXZhLXRyZWUuaC4KCShkb19ub3RoaW5nKTogTmV3LgoJKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBSZWFycmFuZ2UgdGhpbmdzLiAgUmVtb3ZlIGdsb2JhbAoJZGVjbGFyYXRpb25zIG9mIG90YWJsZSwgYXRhYmxlLCBhbmQgY3RhYmxlLgoJKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBNYWtlIGxhbmdfZWhfcnVudGltZV90eXBlIGRvX25vdGhpbmcuCgkoamF2YV9leHBhbmRfYm9keSk6IFNldCBvdXRwdXRfY2xhc3MuCgkqIGNvbnN0YW50cy5jIChidWlsZF9jb25zdGFudF9kYXRhX3JlZik6IFVzZSBvdXRwdXRfY2xhc3MsIG5vdAoJY3VycmVudF9jbGFzcy4KCShhbGxvY19uYW1lX2NvbnN0YW50KTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGdlbl9pbmRpcmVjdF9kaXNwYXRjaF90YWJsZXMpOiBOZXcuCgkoYnVpbGRfY2xhc3NfcmVmKTogR2VuZXJhdGUgaGFyZCByZWZlcmVuY2UgdG8gc3VwZXJjbGFzcywgZXZlbiBpZgoJdXNpbmcgaW5kaXJlY3QgZGlzcGF0Y2guCgkoYnVpbGRfc3RhdGljX2ZpZWxkX3JlZik6IFVzZSBjbGFzcyBsb2NhbCBhdGFibGUuCgkobWFrZV9jbGFzc19kYXRhKTogR2VuZXJhdGUgaGFyZCByZWZlcmVuY2UgdG8gc3VwZXJjbGFzcywgZXZlbiBpZgoJdXNpbmcgaW5kaXJlY3QgZGlzcGF0Y2guCglHZW5lcmF0ZSBzeW1ib2xpYyByZWZlcmVuY2VzIHRvIGludGVyZmFjZXMgd2hlbiB1c2luZyBpbmRpcmVjdAoJZGlzcGF0Y2guCgkobWFrZV9jbGFzc19kYXRhKTogRW1pdCBvdGFibGUsIGF0YWJsZSwgYW5kIGN0YWJsZS4KCU1ha2Ugb3RhYmxlLCBhdGFibGUsIGFuZCBjdGFibGUgY2xhc3MgbG9jYWwgcmF0aGVyIHRoYW4gZ2xvYmFsLgoJKGVtaXRfY2F0Y2hfdGFibGUpOiBNYWtlIG90YWJsZSwgYXRhYmxlLCBhbmQgY3RhYmxlIGNsYXNzIGxvY2FsCglyYXRoZXIgdGhhbiBnbG9iYWwuCgoyMDAzLTEyLTI1ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIHBhcnNlLnkgKGNhdGNoX2NsYXVzZV9wYXJhbWV0ZXIpOiBGaXggdHlwby4KCglQUiBqYXZhLzEzNDA0CgkqIHBhcnNlLnk6IChjYXRjaF9jbGF1c2VfcGFyYW1ldGVyKTogUmV0dXJuIGVhcmx5IGlmICQzLCBha2EKCWZvcm1hbF9wYXJhbWV0ZXIsIGlzIG51bGwuCgoyMDAzLTEyLTIwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY2xhc3MuYzogUmVtb3ZlIHVzZXMgb2YgInJlZ2lzdGVyIiBzcGVjaWZpZXIgaW4KCWRlY2xhcmF0aW9ucyBvZiBhcmd1bWVudHMgYW5kIGxvY2FsIHZhcmlhYmxlcy4KCSogZGVjbC5jOiBMaWtld2lzZS4KCSogZXhwci5jOiBMaWtld2lzZS4KCSogZ2phdmFoLmM6IExpa2V3aXNlLgoJKiBqY2YtZHVtcC5jOiBMaWtld2lzZS4KCSogamNmLWlvLmM6IExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYzogTGlrZXdpc2UuCgkqIGpjZi13cml0ZS5jOiBMaWtld2lzZS4KCSoga2V5d29yZC5oOiBMaWtld2lzZS4KCSogcGFyc2UueTogTGlrZXdpc2UuCgkqIHR5cGVjay5jOiBMaWtld2lzZS4KCSogdmVyaWZ5LmM6IExpa2V3aXNlLgoKMjAwMy0xMi0wNiAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2UtbGFuZy5pbiAoR0NKX0NST1NTX05BTUUpOiBEZWxldGUuCgkoamF2YS5pbnN0YWxsX2NvbW1vbiwgamF2YS5pbnN0YWxsLW1hbik6IEFkanVzdCBmb3IgYWJvdmUuCgkoamF2YS51bmluc3RhbGwpOiBMaWtld2lzZS4KCjIwMDMtMTItMDMgIE1pY2hhZWwgS29jaCAgPGtvbnF1ZXJvckBnbXguZGU+CgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOgoJUHVzaCBmaWVsZCB2YWx1ZSB0byAnaGFja19zaWduZXJzJyBpbnN0ZWFkIG9mICdzaWduZXJzJy4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKToKCVB1c2ggZmllbGQgJ2hhY2tfc2lnbmVycycgaW5zdGVhZCBvZiAnc2lnbmVycycuCgoyMDAzLTEyLTAzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbGV4Lmg6IENoZWNrIGJvdGggSEFWRV9JQ09OViBhbmQgSEFWRV9JQ09OVl9IIGJlZm9yZQoJaW5jbHVkaW5nIGljb252LmguCgoyMDAzLTEyLTAzICBSYWxwaCBMb2FkZXIgIDxyY2xAaWh1Zy5jby5uej4KCglQUiBqYXZhLzEyMzc0OgoJKiBwYXJzZS55IChxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogUmVtb3ZlIGxvdHMgb2YgYnJva2VuCglmaWVsZCBhY2Nlc3MgcHJvY2Vzc2luZyAtIHRoZXJlJ3Mgbm8gbmVlZCB0byBkbyB0aGF0IGhlcmUsCgliZWNhdXNlIHdlIGhhdmUgcmVzb2x2ZV9maWVsZF9hY2Nlc3MuICBSZW1vdmUKCVJFU09MVkVfRVhQUkVTU0lPTl9OQU1FX1AgYXMgaXQgaXNuJ3QgdXNlZCBhbnl3aGVyZSBlbHNlLgoJKiBqYXZhLXRyZWUuaDogUmVtb3ZlIFJFU09MVkVfRVhQUkVTU0lPTl9OQU1FX1AgYXMgaXQgaXNuJ3QKCXVzZWQuCgoyMDAzLTEyLTAxICBKZWZmIFN0dXJtICA8anN0dXJtQG9uZS1wb2ludC5jb20+CgoJRml4IFBSIGphdmEvMTMyMzcKCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9saHMpOiBTYXZlIGxvY2F0aW9uIHByaW9yIHRvIHBhdGNoaW5nCglDQUxMX0VYUFIuCgoyMDAzLTExLTI1ICBNb2hhbiBFbWJhciAgPGdudXN0dWZmQHRoaXNpc2Nvb2wuY29tPgoKCVBSIGphdmEvMTI1NDgKCSogcmVzb3VyY2UuYyAod3JpdGVfcmVzb3VyY2VfY29uc3RydWN0b3IpOiBBcHBlbmQKCSJfcmVzb3VyY2UiIHRvIGNvbnN0cnVjdG9yIGlkZW50aWZpZXIgbmFtZS4KCjIwMDMtMTEtMjUgIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCglGaXggUFIgamF2YS8xMzE4My4KCSogY29uc3RhbnRzLmMgKGNwb29sX2Zvcl9jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCShvdXRnb2luZ19jcG9vbCk6IFJlbW92ZSBnbG9iYWwgdmFyaWFibGUuCgkoYWxsb2NfbmFtZV9jb25zdGFudCk6IFVzZSBjcG9vbF9mb3JfY2xhc3MuCgkoYnVpbGRfY29uc3RhbnRzX2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoamF2YV9leHBhbmRfYm9keSk6IFNldCBjdXJyZW50X2NsYXNzLgoJKiBqYXZhLXRyZWUuaCAob3V0Z29pbmdfY3Bvb2wpIFJlbW92ZSBkZWNsYXJhdGlvbi4KCShpbml0X291dGdvaW5nX2Nwb29sKTogTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jIChpbml0X291dGdvaW5nX2Nwb29sKTogUmVtb3ZlIGZ1bmN0aW9uLgoJKHBhcnNlX2NsYXNzX2ZpbGUpOiBEb24ndCBjYWxsIGluaXRfb3V0Z29pbmdfY3Bvb2wuCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiBEb24ndCBjYWxsCglpbml0X291dGdvaW5nX2Nwb29sLiAgRG9uJ3Qgc2F2ZSBvdXRnb2luZ19jcG9vbC4KCShqYXZhX2V4cGFuZF9jbGFzc2VzKTogRG9uJ3QgcmVzdG9yZSBvdXRnb2luZ19jcG9vbC4KCShqYXZhX2ZpbmlzaF9jbGFzc2VzKTogTGlrZXdpc2UuCgoyMDAzLTExLTI0ICBNb2hhbiBFbWJhciAgPGdudXN0dWZmQHRoaXNpc2Nvb2wuY29tPgoKCSogTWFrZS1sYW5nLmluOiAoamF2YS5pbnN0YWxsLWNvbW1vbikgQWRkCglzeW1saW5rIGZvciAkKHRhcmdldF9ub25jYW5vbmljYWwpLWdjamggZm9yCgluYXRpdmUgYnVpbGRzLgoKMjAwMy0xMS0yMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEuZXh0cmFjbGVhbik6IERlbGV0ZS4KCjIwMDMtMTEtMjAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogTWFrZS1sYW5nLmluIChjaGVjay1qYXZhKTogQWRkLgoKMjAwMy0xMS0xOSAgSmVmZiBTdHVybSAgPGpzdHVybUBvbmUtcG9pbnQuY29tPgoKCUZpeCBQUiBqYXZhLzEzMDI0LgoJKiBleGNlcHQuYyAocHJlcGFyZV9laF90YWJsZV90eXBlKTogQWxsb2NhdGUgdmFyaWFibGUtc2l6ZWQKCWJ1ZmZlciBgYnVmJyB3aXRoIGFsbG9jYS4KCjIwMDMtMTEtMTcgIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCglGaXggUFIgamF2YS8xMjg1Ny4KCglkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBpbml0aWFsaXplCgljbGFzc19ub3RfZm91bmRfdHlwZV9ub2RlLCBub19jbGFzc19kZWZfZm91bmRfdHlwZV9ub2RlLgoKCWphdmEtdHJlZS5oIChKVElfQ0xBU1NfTk9UX0ZPVU5EX1RZUEVfTk9ERSwKCUpUSV9OT19DTEFTU19ERUZfRk9VTkRfVFlQRV9OT0RFKTogUmVtb3ZlIGZyb20gamF2YV90cmVlX2luZGV4LgoJKGNsYXNzX25vdF9mb3VuZF90eXBlX25vZGUsIG5vX2NsYXNzX2RlZl9mb3VuZF90eXBlX25vZGUpOgoJRG9uJ3QgZGVmaW5lLgoKCXBhcnNlLnkgKGJ1aWxkX2RvdF9jbGFzc19tZXRob2RfaW52b2NhdGlvbik6IEFkZCB0aGlzX2NsYXNzCglhcmd1bWVudC4gIFF1YWxpZnkgbWV0aG9kIGludm9jYXRpb25zIHRvIGEgZGlmZmVyZW50IGNsYXNzLgoJKGNyZWF0ZV9uZXdfcGFyc2VyX2NvbnRleHQpOiBJbml0aWFsaXplIHNhdmVkX2RhdGFfY3R4IHRvIDAuCgkoamF2YV9wYXJzZXJfY29udGV4dF9zYXZlX2dsb2JhbCk6IEluaXRpYWxpemUgc2F2ZWRfZGF0YV9jdHggdG8gMS4KCShidWlsZF9kb3RfY2xhc3NfbWV0aG9kKTogRG9uJ3QgbG9hZCBjbGFzc2VzLiAgUmVnaXN0ZXIKCWluY29tcGxldGUgdHlwZXMuCgkoYnVpbGRfaW5jb21wbGV0ZV9jbGFzc19yZWYpOiBTcGVjaWFsIGNhc2VzIGZvciBpbnRlcmZhY2VzCglhbmQgaW5uZXIgY2xhc3Nlcy4gIE1vdmUgYnVpbGRfZG90X2NsYXNzX21ldGhvZCBjYWxsIHRvIGhlcmUuLi4KCShwYXRjaF9pbmNvbXBsZXRlX2NsYXNzX3JlZik6IC4uLmZyb20gaGVyZS4gIFBhc3MgY3VycmVudF9jbGFzcwoJdG8gYnVpbGRfZG90X2NsYXNzX21ldGhvZF9pbnZvY2F0aW9uLgoJKGJ1aWxkX2Fzc2VydGlvbik6IFBhc3MgY2xhc3NfdHlwZSB0bwoJYnVpbGRfZG90X2NsYXNzX21ldGhvZF9pbnZvY2F0aW9uLgoJKGVuY2Fwc3VsYXRlX3dpdGhfdHJ5X2NhdGNoKTogSGFuZGxlIEVYUFJfV0lUSF9GSUxFX0xPQ0FUSU9OIG5vZGUuCgoyMDAzLTExLTE3ICBKZWZmIFN0dXJtICA8anN0dXJtQG9uZS1wb2ludC5jb20+CgoJRml4IFBSIGphdmEvMTI3MzkuCgkqIGphdmEtdHJlZS5oIChCTE9DS19FTVBUWV9QKTogRGVmaW5lLgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocyk6IENoZWNrIGZvciBlbXB0eSBibG9ja3MKCWluIFRSWV9GSU5BTExZX0VYUFIgY2FzZS4KCjIwMDMtMTEtMTcgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogamF2YS10cmVlLmggKExPQ0FMX1ZBUl9PVVRfT0ZfU0NPUEVfUCk6IE5ldy4KCShzdHJ1Y3QgbGFuZ19kZWNsX3ZhcjpmcmVlZCk6IE5ldyB2YXJpYWJsZS4KCSogZGVjbC5jIChwb3BsZXZlbCk6IE1hcmsgbG9jYWwgdmFycyB0aGF0IGhhdmUgZ29uZSBvdXQgb2Ygc2NvcGUuCgkocHVzaF9qdm1fc2xvdCk6IERvbid0IHVzZSB0aGUgUlRMIG9mIGEgdmFyIHRoYXQgaGFzIGdvbmUgb3V0IG9mCglzY29wZS4KCjIwMDMtMTEtMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhLnRhZ3MpOiBDcmVhdGUgVEFHUy5zdWIgZmlsZXMgaW4gZWFjaCBkaXJlY3RvcnkKCWFuZCBUQUdTIGZpbGVzIHRoYXQgaW5jbHVkZSB0aGVtIGZvciBlYWNoIGZyb250IGVuZC4KCjIwMDMtMTEtMTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGdqYXZhaC5jIChwcmludF9zdHViX29yX2puaSk6IFBhc3MgYGVudicgdG8gRmF0YWxFcnJvci4KCjIwMDMtMTEtMTIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIG9wdGltaXphdGlvbi8xMjU0NwoJKiBsYW5nLmMgKGphdmFfdHJlZV9pbmxpbmluZ193YWxrX3N1YnRyZWVzKTogSnVzdCB3YWxrCglCTE9DS19FWFBSX0JPRFkgZGlyZWN0bHkuCgoyMDAzLTExLTEyICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzExMDQ1CgkqIHBhcnNlLnkgKGZvbGRfY29uc3RhbnRfZm9yX2luaXQpOiBDaGVjayB0aGF0IHdlIHJlYWxseSBkbyBoYXZlIGEKCWNvbnN0YW50LgoKCVBSIGphdmEvMTE1MzMKCSogbGFuZy5jIChtZXJnZV9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb24pOiBDbGVhciBERUNMX0lOSVRJQUwgZm9yCglpbml0X3Rlc3RfZGVjbHMgYmVpbmcgaW5saW5lZC4KCglQUiBqYXZhLzEyODkwOgoJKiBwYXJzZS55IChkb19yZXNvbHZlX2NsYXNzKTogQ2hlY2sgcmV0dXJuIHZhbHVlIGZyb20KCWJyZWFrZG93bl9xdWFsaWZpZWQoKS4KCjIwMDMtMTEtMTEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzEyOTE1OgoJKiBwYXJzZS55IChtZXJnZV9zdHJpbmdfY3N0ZSk6IEhhbmRsZSBjYXNlIHdoZXJlIHdlIGhhdmUgYQoJcG9pbnRlciB0aGF0IGhhcHBlbnMgdG8gYmUgemVybywgbm90IG51bGxfcG9pbnRlcl9ub2RlLgoKMjAwMy0xMS0xMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamNmLXBhcnNlLmMgKGNsYXNzaWZ5X3ppcF9maWxlKTogQ29ycmVjdGx5IGNvbXBhcmUKCWZpbGVuYW1lX2xlbmd0aCBhZ2FpbnN0IGxlbmd0aCBvZiBtYW5pZmVzdCBmaWxlJ3MgbmFtZS4KCjIwMDMtMTEtMDggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzEyODk0OgoJKiBqY2YtcGFyc2UuYyAoY2xhc3NpZnlfemlwX2ZpbGUpOiBPbmx5IHNraXAgTUFOSUZFU1QuTUYgZmlsZS4KCjIwMDMtMTEtMDYgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogZXhwci5jIChqYXZhX3N0YWNrX3N3YXApOiBNYWtlIHN1cmUgZGVzdGluYXRpb24gc3RhY2sgc2xvdHMgYXJlCglvZiB0aGUgY29ycmVjdCB0eXBlLgoKMjAwMy0xMS0wMyAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2UtbGFuZy5pbiAoZHZpKTogTW92ZSB0YXJnZXRzIHRvICQoZG9jb2JqZGlyKS4KCShnY2ouZHZpKTogU2ltcGxpZnkgcnVsZSBhbmQgYWRqdXN0IHRhcmdldC4KCShnY2ouaW5mbyk6IFNpbXBsaWZ5IHJ1bGUuCgkoZ2NqLnBvZCk6IE5ldyBpbnRlcm1lZGlhdGUgcnVsZS4KCShnY2poLnBvZCk6IExpa2V3aXNlLgoJKGp2LXNjYW4ucG9kKTogTGlrZXdpc2UuCgkoamNmLWR1bXAucG9kKTogTGlrZXdpc2UuCgkoZ2lqLnBvZCk6IExpa2V3aXNlLgoJKGp2LWNvbnZlcnQucG9kKTogTGlrZXdpc2UuCgkocm1pYy5wb2QpOiBMaWtld2lzZS4KCShybWlyZWdpc3RyeS5wb2QpOiBMaWtld2lzZS4KCShnY2ouMSk6IERlbGV0ZS4KCShnY2poLjEpOiBEZWxldGUuCgkoanYtc2Nhbi4xKTogRGVsZXRlLgoJKGpjZi1kdW1wLjEpOiBEZWxldGUuCgkoZ2lqLjEpOiBEZWxldGUuCgkoanYtY29udmVydC4xKTogRGVsZXRlLgoJKHJtaWMuMSk6IERlbGV0ZS4KCShybWlyZWdpc3RyeS4xKTogRGVsZXRlLgoKMjAwMy0xMS0wMiAgSmVmZiBTdHVybSAgPGpzdHVybUBvbmUtcG9pbnQuY29tPgoKCUZpeGVzIFBSIGphdmEvMTI4NjYuCgkqIHBhcnNlLnkgKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IE1vdmUgdGVzdAoJZm9yIG91dGVyIGZpZWxkIGFjY2VzcyBtZXRob2RzIGZyb20gaGVyZS4uLgoJKGNoZWNrX3Rocm93bl9leGNlcHRpb25zKSAuLi50byBoZXJlLgoKMjAwMy0xMS0wMSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIC5jdnNpZ25vcmU6IERlbGV0ZS4KCjIwMDMtMTAtMjggIEZyYW5rIENoLiBFaWdsZXIgIDxmY2hlQHJlZGhhdC5jb20+CgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBEb24ndCB3YXJuIGFib3V0IGxlZ2FsCgllaCBiaW5kaW5nIHJlZ2lvbnMgZ2VuZXJhdGVkIGZvciBleGFtcGxlIGJ5IGpkayAxLjQuMS4KCjIwMDMtMTAtMjQgIERhdmlkIFMuIE1pbGxlciAgPGRhdmVtQHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAoamNmX3BhcnNlKTogRml4IGFyZ3MgdG8gZmF0YWxfZXJyb3IoKS4KCjIwMDMtMTAtMjIgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogbGFuZy5jIChMQU5HX0hPT0tTX0dFVF9DQUxMRUVfRk5ERUNMKTogTmV3LgoJKGphdmFfZ2V0X2NhbGxlZV9mbmRlY2wpOiBOZXcuCgoJKiBqY2YtcGFyc2UuYyAoamF2YV9wYXJzZV9maWxlKTogQ2FsbCBlbWl0X2NhdGNoX3RhYmxlKCkuCgoJKiBqYXZhLXRyZWUuaCAoY3RhYmxlX2RlY2wpOiBOZXcuCgkoY2F0Y2hfY2xhc3Nlcyk6ICBOZXcuCgkoamF2YV90cmVlX2luZGV4KTogQWRkIEpUSV9DVEFCTEVfREVDTCwgSlRJX0NBVENIX0NMQVNTRVMuCgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGQgY2F0Y2hfY2xhc3NfdHlwZS4KCUFkZCBjdGFibGVfZGVjbC4KCUFkZCBjYXRjaF9jbGFzc2VzIGZpZWxkLgoKCSogY2xhc3MuYyAoYnVpbGRfaW5kaXJlY3RfY2xhc3NfcmVmKTogQnJlYWsgb3V0IGZyb20KCWJ1aWxkX2NsYXNzX3JlZi4KCShtYWtlX2ZpZWxkX3ZhbHVlKTogQ2hlY2sgZmxhZ19pbmRpcmVjdF9kaXNwYXRjaC4KCShtYWtlX2NsYXNzX2RhdGEpOiBEaXR0by4KCVRpZHkgdXNlcyBvZiBQVVNIX0ZJRUxEX1ZBTFVFLgoJQWRkIGZpZWxkIGNhdGNoX2NsYXNzZXMuCgkobWFrZV9jYXRjaF9jbGFzc19yZWNvcmQpOiBOZXcuCgoJKiBqYXZhLXRyZWUuaCAoUFVTSF9GSUVMRF9WQUxVRSk6IFRpZHkuCgoyMDAzLTEwLTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogamNmLXdyaXRlLmM6IEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCSogcGFyc2UueTogTGlrZXdpc2UuCgoyMDAzLTEwLTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogQ2hhbmdlTG9nOiBGaXggdHlwb3MuCgkqIGV4cHIuYzogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGpjZi13cml0ZS5jOiBMaWtld2lzZS4KCSogbGFuZy5jOiBMaWtld2lzZS4KCSogbGV4LmM6IExpa2V3aXNlLgoJKiBtYW5nbGUuYzogTGlrZXdpc2UuCgkqIHBhcnNlLXNjYW4ueTogTGlrZXdpc2UuCgkqIHBhcnNlLnk6IExpa2V3aXNlLgoKMjAwMy0xMC0yMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZXhwci5jIChleHBhbmRfYnl0ZV9jb2RlKTogT25seSB3YXJuIGFib3V0IGRlYWQgYnl0ZWNvZGUgd2hlbgoJZXh0cmFfd2FybmluZ3MgaXMgc2V0LgoKMjAwMy0xMC0yMiAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUBtY2tpbmxheS5uZXQubno+CgoJRml4IGZvcglQUiBqYXZhLzEyNTg2LgoJKiBtYW5nbGUuYyAoZmluZF9jb21wcmVzc2lvbl9yZWNvcmRfbWF0Y2gpOiBEb24ndCBpdGVyYXRlIHRocm91Z2gKCXBhY2thZ2UgbmFtZXNwYWNlIGVsZW1lbnRzIHVubGVzcyB0aGV5IGFsbCBtYXRjaCBjb21wcmVzc2lvbl90YWJsZQoJZW50cmllcy4KCjIwMDMtMTAtMjAgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlLWxhbmcuaW4gKGluZm8pOiBIb25vciAkKHBhcnNlZGlyKSBhbmQgJChkb2NvYmpkaXIpLgoJKGdlbmVyYXRlLW1hbnBhZ2VzKTogTGlrZXdpc2UuCgkoamF2YS5tYWludGFpbmVyLWNsZWFuKTogTGlrZXdpc2UuCgkoZ2NqLmluZm8pOiBMaWtld2lzZS4KCShnY2ouMSk6IExpa2V3aXNlLgoJKGdjamguMSk6IExpa2V3aXNlLgoJKGp2LXNjYW4uMSk6IExpa2V3aXNlLgoJKGpjZi1kdW1wLjEpOiBMaWtld2lzZS4KCShnaWouMSk6IExpa2V3aXNlLgoJKGp2LWNvbnZlcnQuMSk6IExpa2V3aXNlLgoJKHJtaWMuMSk6IExpa2V3aXNlLgoJKHJtaXJlZ2lzdHJ5LjEpOiBMaWtld2lzZS4KCShqYXZhLmluc3RhbGwtbWFuKTogTGlrZXdpc2UuCgkocGFyc2Utc2Nhbi5vKTogTW92ZSBhbmQgZGVmaW5lIGNvbXBsZXRlIGNvbXBpbGUgbGluZS4KCShwYXJzZS5vKTogTGlrZXdpc2UuCgkoamNmLXRyZWUtaW5saW5lLm8pOiBNb3ZlLgoKMjAwMy0xMC0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoaW5mbyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgkoamF2YS5pbnN0YWxsLWluZm8pOiBSZW1vdmUuCgkoJChzcmNkaXIpL2phdmEvZ2NqLmluZm8pOiBSZXBsYWNlIHdpdGggLi4uCgkoJChkb2NvYmpkaXIpL2djai5pbmZvKTogLi4uIHRoaXMuCgoyMDAzLTEwLTE0ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIE1ha2UtbGFuZy5pbjogUmVwbGFjZSB1c2VzIG9mICQodGFyZ2V0X2FsaWFzKSB3aXRoCgkkKHRhcmdldF9ub25jYW5vbmljYWwpLgoKMjAwMy0xMC0wOSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogRGVjbGFyZSBzaWduZXJzIGZpZWxkLgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBTZXQgc2lnbmVycyBmaWVsZC4KCjIwMDMtMTAtMDkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfYXNzaWdubWVudCk6IFVzZSBtYWtlX25vZGUgdG8gY3JlYXRlIGEgQkxPQ0suCgkqIHBhcnNlLmggKEJVSUxEX1BUUl9GUk9NX05BTUUpOiBVc2UgbWFrZV9ub2RlIHRvIGNyZWF0ZSBhCglQT0lOVEVSX1RZUEUuCgoyMDAzLTEwLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhLmluZm8pOiBSZXBsYWNlIHdpdGggLi4uCgkoaW5mbyk6IC4uLiB0aGlzLgoJKGphdmEuZHZpKTogUmVwbGFjZSB3aXRoIC4uLgoJKGR2aSk6IC4uLiB0aGlzLgoJKGphdmEuZ2VuZXJhdGVkLW1hbnBhZ2VzKTogUmVwbGFjZSB3aXRoIC4uLgoKMjAwMy0xMC0wMyAgS2VsbGV5IENvb2sgIDxrZWxsZXljb29rQHdpZGVvcGVud2VzdC5jb20+CgoJKiBidWlsdGlucy5jLCBqY2YuaCwganZzcGVjLmM6IFJlbW92ZSBQQVJBTVMgbWFjcm9zLgoKMjAwMy0xMC0wMSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAoamF2YV9wYXJzZV9maWxlKTogV3JpdGUgb3RhYmxlIGFuZCBhdGFibGUuCgkqIGphdmEtdHJlZS5oIChhdGFibGVfbWV0aG9kcyk6IE5ldy4KCShhdGFibGVfZGVjbCk6IE5ldy4KCShhdGFibGVfc3ltc19kZWNsKTogTmV3LgoJKGVudW0gamF2YV90cmVlX2luZGV4KTogQWRkIEpUSV9BVEFCTEVfTUVUSE9EUywgSlRJX0FUQUJMRV9ERUNMLAoJSlRJX0FUQUJMRV9TWU1TX0RFQ0wuICBSZW5hbWUgSlRJX01FVEhPRF9TWU1CT0wqIHRvIEpUSV9TWU1CT0wqLgoJKHN5bWJvbF8qdHlwZSk6IFJlbmFtZSBtZXRob2Rfc3ltYm9sKiB0byBzeW1ib2wqdHlwZS4KCShlbWl0X29mZnNldF9zeW1ib2xfdGFibGUpOiBEZWxldGUuCgkoZW1pdF9zeW1ib2xfdGFibGUpOiBOZXcuCgkoZ2V0X3N5bWJvbF90YWJsZV9pbmRleCk6IE5ldy4KCShhdGFibGVfdHlwZSk6IE5ldy4KCSogZXhwci5jIChidWlsZF9maWVsZF9yZWYpOiBIYW5kbGUgZmxhZ19pbmRpcmVjdF9kaXNwYXRjaC4KCShidWlsZF9rbm93bl9tZXRob2RfcmVmKTogTGlrZXdpc2UuCgkoZ2V0X3N5bWJvbF90YWJsZV9pbmRleCk6IFJlbmFtZSBmcm9tIGdldF9vZmZzZXRfdGFibGVfaW5kZXguCglQYXJhbWV0ZXJpemUgdG8gYWxsb3cgcmUtdXNlIGJ5IGRpZmZlcmluZyB0eXBlcyBvZiBzeW1ib2wgdGFibGUuCgkoYnVpbGRfaW52b2tldmlydHVhbCk6IFBhc3MgdGFibGUgdG8gZ2V0X29mZnNldF90YWJsZV9pbmRleC4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogUHVzaCB0eXBlcyBhbmQgZGVjbHMgZm9yCglhdGFibGUgYW5kIGF0YWJsZV9zeXltcy4KCSogY2xhc3MuYyAoYnVpbGRfc3RhdGljX2ZpZWxkX3JlZik6IEhhbmRsZSBmbGFnX2luZGlyZWN0X2Rpc3BhdGNoLgoJKG1ha2VfY2xhc3NfZGF0YSk6IEFkZCBuZXcgZmllbGRzIGF0YWJsZSBhbmQgYXRhYmxlX3N5bXMuCgkoZW1pdF9zeW1ib2xfdGFibGUpOiBSZW5hbWUgZnJvbSBlbWl0X29mZnNldF9zeW1ib2xfdGFibGUuCglQYXJhbWV0ZXJpemUgdG8gYWxsb3cgcmUtdXNlIGJ5IGRpZmZlcmVudCB0eXBlcyBvZiBzeW1ib2wgdGFibGUuCgkoYnVpbGRfc3ltYm9sX2VudHJ5KTogUmVuYW1lZCBmcm9tIGJ1aWxkX21ldGhvZF9zeW1ib2xzX2VudHJ5LgoKMjAwMy0wOS0zMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBJbXBsZW1lbnQgZXZhbHVhdGUtb25jZQoJc2VtYW50aWNzIGZvciBTQVZFX0VYUFIsIGJ5IGNhY2hpbmcgdGhlIHJlc3VsdCBpbiBhIHRlbXBvcmFyeS4KCjIwMDMtMDktMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBTYXZlIGFuZCByZXN0b3JlIGlucHV0X2xvY2F0aW9uCglpbnN0ZWFkIG9mIGZpbGUgYW5kIGxpbmUgc2VwYXJhdGVseS4KCSogZGVjbC5jIChqYXZhX2V4cGFuZF9ib2R5KTogTGlrZXdpc2UuCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChzYWZlX2xheW91dF9jbGFzcyk6IExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYyAocmVhZF9jbGFzcywgcGFyc2VfY2xhc3NfZmlsZSk6IExpa2V3aXNlLgoJKGphdmFfcGFyc2VfZmlsZSk6IFVzZSAlSCBmb3Igd2FybmluZyBsb2NhdG9yLgoKMjAwMy0wOS0yOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBleHByLmMgKGphdmFfY2hlY2tfcmVmZXJlbmNlKTogVXNlIHRoZSBzZW1hbnRpY3Mgb2YgQ09ORF9FWFBScwoJd2l0aCB2b2lkLXR5cGUgYnJhbmNoZXMgaW5zdGVhZCBvZiB1c2luZyBhIENPTVBPVU5EX0VYUFIuCgoyMDAzLTA5LTI4ICBKZWZmIFN0dXJtICA8anN0dXJtQG9uZS1wb2ludC5jb20+CgoJKiBkZWNsLmMgKGphdmFfb3B0aW1pemVfaW5saW5lLCBkdW1wX2Z1bmN0aW9uKTogUmVtb3ZlLgoJKiBqYXZhLXRyZWUuaCAoamF2YV9vcHRpbWl6ZV9pbmxpbmUpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkqIGpjZi1wYXJzZS5jIChqYXZhX3BhcnNlX2ZpbGUpOiBBc3N1bWUgZmxhZ191bml0X2F0X2FfdGltZSBpcyBzZXQuCgkqIHBhcnNlLnkgKHNvdXJjZV9lbmRfamF2YV9tZXRob2QsIGphdmFfZXhwYW5kX2NsYXNzZXMpOgoJTGlrZXdpc2UuICBSZW1vdmUgZGVhZCBjb2RlLgoKMjAwMy0wOS0yNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBsYW5nLmMgKGphdmFfaW5pdF9vcHRpb25zKTogU2V0IGZsYWdfZXZhbHVhdGlvbl9vcmRlci4KCSogZXhwci5jIChmb3JjZV9ldmFsdWF0aW9uX29yZGVyKTogRG9uJ3QgYXR0ZW1wdCB0byBmb3JjZQoJZXZhbHVhdGlvbiBvcmRlciBvZiBiaW5hcnkgb3BlcmF0aW9ucyB1c2luZyBzYXZlX2V4cHIuCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogTm8gbG9uZ2VyIG5lZWQgdG8gY2FsbAoJZm9yY2VfZXZhbHVhdGlvbl9vcmRlciB3aGVuIGNvbnN0cnVjdGluZyBiaW5hcnkgb3BlcmF0b3JzLgoKMjAwMy0wOS0yNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgkgICAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUBtY2tpbmxheS5uZXQubno+CgoJUFIgamF2YS8xMzMzOgoJKiBwYXJzZS55IChub3RfYWNjZXNzaWJsZV9maWVsZF9lcnJvcik6IE5ldyBmdW5jdGlvbi4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IENoZWNrIGZpZWxkIGFjY2VzcyBwZXJtaXNzaW9ucy4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBVc2UKCW5vdF9hY2Nlc3NpYmxlX2ZpZWxkX2Vycm9yLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IExpa2V3aXNlLgoKMjAwMy0wOS0yNCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjbGFzcy5jIChidWlsZF91dGY4X3JlZik6IFRlc3QgZm9yIEhBVkVfR0FTX1NIRl9NRVJHRSB2YWx1ZS4KCjIwMDMtMDktMjMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogT3B0aW1pemUgYmluYXJ5IG9wZXJhdGlvbnMKCXdpdGggZXF1YWwgb3BlcmFuZHMgd2l0aG91dCBzaWRlLWVmZmVjdHMuCgoyMDAzLTA5LTIyICBKZWZmIFN0dXJtICA8anN0dXJtQG9uZS1wb2ludC5jb20+CgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBlbWl0IG90YWJsZSBkZWNscwoJaWYgZmxhZ19pbmRpcmVjdF9kaXNwYXRjaCBpcyBub3Qgc2V0LgoKMjAwMy0wOS0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMsIGRlY2wuYywgamNmLXBhcnNlLmMsIGpjZi13cml0ZS5jLCBwYXJzZS55LAoJcmVzb3VyY2UuYzogUmV2ZXJ0LgoKMjAwMy0wOS0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMsIGRlY2wuYywgamNmLXBhcnNlLmMsIGpjZi13cml0ZS5jLCBwYXJzZS55LAoJcmVzb3VyY2UuYzogVXBkYXRlIGZvciBERUNMX1NPVVJDRV9MT0NBVElPTiByZW5hbWUgYW5kIGNoYW5nZSB0byBjb25zdC4KCjIwMDMtMDktMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjaGVjay1pbml0LmMsIGNsYXNzLmMsIGRlY2wuYywgZXhwci5jOiBVc2UgJUogaW4gZGlhZ25vc3RpY3MuCgoyMDAzLTA5LTE4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGV4cHIuYyAoamF2YV90cnV0aHZhbHVlX2NvbnZlcnNpb24pOiBSZW1vdmUgRkZTX0VYUFIgY2FzZS4KCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogTGlrZXdpc2UuCgoyMDAzLTA5LTE4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IEFkZCBzdXBwb3J0IGZvciBmY29uc3RfMi4KCjIwMDMtMDktMTYgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogQWRkIE1JTl9FWFBSIGFuZCBNQVhfRVhQUi4KCjIwMDMtMDktMTcgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCUZpeGVzIFBSIGphdmEvOTU3NwoJKiBtYW5nbGUuYyAoZmluZF9jb21wcmVzc2lvbl9yZWNvcmRfbWF0Y2gpOiBTa2lwCglvdmVyIGEgIjZKQXJyYXkiICh0aGUgYXJyYXkgdGVtcGxhdGUgbWFuZ2xlZCBzdHJpbmcpCglJREVOVElGSUVSX05PREUuCgkobWFuZ2xlX2FycmF5X3R5cGUpOiBDb3JyZWN0IG1pbm9yIHR5cG8uCgkoYXRtcyk6IE1vdmUgZGVmaW5pdGlvbiB0byB0aGUgYmVnaW5uaW5nLgoKMjAwMy0wOS0xNiAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUBtY2tpbmxheS5uZXQubno+CgoJKiBjbGFzcy5jIChhZGRfbWlyYW5kYV9tZXRob2RzKTogRW5zdXJlIHN1cGVyLWludGVyZmFjZXMgYXJlIGxhaWQKCW91dC4gRml4IGZvciBQUiBqYXZhLzEyMjU0LgoKMjAwMy0wOS0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHNvdXJjZV9lbmRfamF2YV9tZXRob2QpOiBVcGRhdGUgZm9yIG5ldwoJY2dyYXBoX2ZpbmFsaXplX2Z1bmN0aW9uIGFyZ3VtZW50LgoKMjAwMy0wOS0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHNvdXJjZV9lbmRfamF2YV9tZXRob2QpOiBVcGRhdGUgY2FsbCB0bwoJY2dyYXBoX2ZpbmFsaXplX2Z1bmN0aW9uLgoKMjAwMy0wOS0wMyAgSmVmZiBTdHVybSAgPGpzdHVybUBvbmUtcG9pbnQuY29tPgoKCSogZGVjbC5jIChqYXZhX2V4cGFuZF9ib2R5KTogTmV3IGZ1bmN0aW9uLgoJKiBleHByLmMgKGJ1aWxkX2NsYXNzX2luaXQpOiBTZXQgREVDTF9JR05PUkVEX1AuCgkqIGphdmEtdHJlZS5oIChzdGFydF9jb21wbGV0ZV9leHBhbmRfbWV0aG9kLAoJamF2YV9leHBhbmRfYm9keSk6IERlY2xhcmUuCgkqIGpjZi1wYXJzZS5jIChjZ3JhcGguaCk6IEluY2x1ZGUuCgkoamF2YV9wYXJzZV9maWxlKTogSGFuZGxlIGZsYWdfdW5pdF9hdF9hX3RpbWUuCgkqIGxhbmcuYyAoTEFOR19IT09LU19UUkVFX0lOTElOSU5HX1NUQVJUX0lOTElOSU5HLAoJTEFOR19IT09LU19DQUxMR1JBUEhfRVhQQU5EX0ZVTkNUSU9OKTogRGVmaW5lLgoJKGphdmFfZXN0aW1hdGVfbnVtX2luc25zKTogVXNlIHdhbGtfdHJlZV93aXRob3V0X2R1cGxpY2F0ZXMuCgkoamF2YV9zdGFydF9pbmxpbmluZyk6IE5ldyBmdW5jdGlvbi4KCSogcGFyc2UuaCAoamF2YV9maW5pc2hfY2xhc3Nlcyk6IERlY2xhcmUuCgkqIHBhcnNlLnk6IEluY2x1ZGUgY2dyYXBoLmguCgkoYmxvY2spOiBEb24ndCBzcGVjaWFsLWNhc2UgZW1wdHkgYmxvY2sgcHJvZHVjdGlvbi4KCShjcmFmdF9jb25zdHJ1Y3Rvcik6IFNldCBERUNMX0lOTElORS4KCShzb3VyY2VfZW5kX2phdmFfbWV0aG9kKTogSGFuZGxlIGZsYWdfdW5pdF9hdF9hX3RpbWUuCglSZXBsYWNlIGlubGluZSBjb2RlIHdpdGggY2FsbCB0byBqYXZhX2V4cGFuZF9ib2R5LgoJKHN0YXJ0X2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBSZW1vdmUgc3RhdGljIG1vZGlmaWVyLgoJKGphdmFfZXhwYW5kX21ldGhvZF9ib2RpZXMpOiBQYXRjaCBmdW5jdGlvbiB0cmVlIGZvcgoJY2xhc3MgaW5pdGlhbGl6YXRpb24gYW5kL29yIHN5bmNocm9uaXphdGlvbiBhcyBuZWVkZWQuCglEb24ndCBiZWdpbiBSVEwgZXhwYW5zaW9uIHlldC4KCShqYXZhX2V4cGFuZF9jbGFzc2VzKTogQ2hlY2sgZmxhZ191bml0X2F0X2FfdGltZSBiZWZvcmUKCWNhbGxpbmcgZmluaXNoX2NsYXNzLgoJKGphdmFfZmluaXNoX2NsYXNzZXMpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9jb21wbGV0ZV9saHMpOiBFbnN1cmUgQ09NUE9VTkRfRVhQUiBoYXMgbm9uLU5VTEwgdHlwZS4KCShwYXRjaF9hc3NpZ25tZW50KTogU2V0IERFQ0xfQ09OVEVYVCBvbiB0ZW1wb3JhcnkgdmFyaWFibGUuCgkoZW1pdF90ZXN0X2luaXRpYWxpemF0aW9uKTogU2V0IERFQ0xfSUdOT1JFRF9QLgoKMjAwMy0wOS0wMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5jIChlbnVtIGJ1aWx0aW5fdHlwZSk6IERlbGV0ZSB1bnVzZWQgZW51bWVyYXRpb24uCgkqIE1ha2UtbGFuZy5pbiAoamF2YS9idWlsdGlucy5vKTogUmVtb3ZlIGJ1aWx0LXR5cGVzLmRlZiBkZXBlbmRlbmN5LgoKMjAwMy0wOC0yOCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKEV4dGVuc2lvbnMpOiBEb2N1bWVudCBnY2psaWIgVVJMcy4KCjIwMDMtMDgtMjAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpIChFeHRlbnNpb25zKTogQWRkZWQgeHJlZi4KCShsaWJnY2ogUnVudGltZSBQcm9wZXJ0aWVzKTogRG9jdW1lbnQKCWdudS5nY2oucnVudGltZS5WTUNsYXNzTG9hZGVyLmxpYnJhcnlfY29udHJvbC4KCjIwMDMtMDgtMjAgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogZXhjZXB0LmMgKHByZXBhcmVfZWhfdGFibGVfdHlwZSk6IFVzZSBuZXcgZW5jb2RpbmcgZm9yIGV4Y2VwdGlvbgoJaGFuZGxlcnMgd2hlbiB1c2luZyAtZm5vLWFzc3VtZS1jb21waWxlZC4KCjIwMDMtMDgtMTMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpIChJbnZva2luZyBnaWopOiBEb2N1bWVudCAtWCBhbmQgLT8uCgoyMDAzLTA4LTEzICBNb2hhbiBFbWJhciAgPGdudXN0dWZmQHRoaXNpc2Nvb2wuY29tPgoKCSogTWFrZS1sYW5nLmluOiBBZGRlZCBtaXNzaW5nIHdpbjMyLWhvc3QubyB0byBKQVZBX09CSlMsCglHQ0pIX09CSlMsIEpDRkRVTVBfT0JKUwoJKiB3aW4zMi1ob3N0LmM6IFJlbW92ZWQgdGhlIHVubmVjZXNzYXJ5IGFuZCBicm9rZW4gZGVwZW5kZW5jeQoJb24gamNmLmgKCjIwMDMtMDgtMTEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogVHlwbyBmaXhlcy4gIENhbGwKCWNoZWNrX2ludGVyZmFjZV90aHJvd3NfY2xhdXNlcy4gIFVzZQoJY2hlY2tfY29uY3JldGVfdGhyb3dzX2NsYXVzZXMuCgkoY2hlY2tfaW50ZXJmYWNlX3Rocm93c19jbGF1c2VzKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX2NvbmNyZXRlX3Rocm93c19jbGF1c2VzKTogTmV3IGZ1bmN0aW9uLgoJKGhhY2tfaXNfYWNjZXNzaWJsZV9wKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmRfbW9zdF9zcGVjaWZpY19tZXRob2RzX2xpc3QpOiBBZGRlZCBGSVhNRS4KCSogdHlwZWNrLmMgKGxvb2t1cF9kbyk6IFVzZSBgZmxhZ3MnIGFyZ3VtZW50IHRvIGRlY2lkZSB3aGF0IHRvCglkby4gIFJlaW1wbGVtZW50ZWQuCgkobG9va3VwX2FyZ3VtZW50X21ldGhvZF9nZW5lcmljKTogTmV3IGZ1bmN0aW9uLgoJKGxvb2t1cF9hcmd1bWVudF9tZXRob2QyKTogUmVtb3ZlZC4KCSogamNmLmggKEFDQ19JTlZJU0lCTEUpOiBOZXcgZGVmaW5lLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfY2xhc3NmaWxlKTogU2tpcCBpbnZpc2libGUgbWV0aG9kcy4KCSogY2xhc3MuYyAoYWRkX21pcmFuZGFfbWV0aG9kcyk6IE5ldyBmdW5jdGlvbi4KCShsYXlvdXRfY2xhc3NfbWV0aG9kcyk6IFVzZSBpdC4KCShnZXRfYWNjZXNzX2ZsYWdzX2Zyb21fZGVjbCk6IFVzZSBBQ0NfSU5WSVNJQkxFLgoJKiBqYXZhLXRyZWUuaCAoTUVUSE9EX0lOVklTSUJMRSk6IE5ldyBkZWZpbmUuCgkobGFuZ19kZWNsX2Z1bmMpIFtpbnZpc2libGVdOiBOZXcgZmllbGQuCgkobG9va3VwX2FyZ3VtZW50X21ldGhvZF9nZW5lcmljKTogRGVjbGFyZS4KCShTRUFSQ0hfSU5URVJGQUNFKTogTmV3IGRlZmluZS4KCShTRUFSQ0hfU1VQRVIpOiBMaWtld2lzZS4KCShTRUFSQ0hfT05MWV9JTlRFUkZBQ0UpOiBMaWtld2lzZS4KCShTRUFSQ0hfVklTSUJMRSk6IExpa2V3aXNlLgoJKGxvb2t1cF9hcmd1bWVudF9tZXRob2QyKTogUmVtb3ZlZCBkZWNsYXJhdGlvbi4KCjIwMDMtMDgtMDUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGaXggZm9yIFBSIGphdmEvMTE2MDA6CgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogU2VlIHdoZXRoZXIgd2UncmUgY2FsbGluZyBhIG1ldGhvZAoJb24gYW4gYXJyYXkuCgkoY2hlY2tfdGhyb3duX2V4Y2VwdGlvbnMpOiBBZGRlZCBgaXNfYXJyYXlfY2FsbCcgYXJndW1lbnQ7CglmaXhlZCBgY2xvbmUnIGNoZWNraW5nOyB1cGRhdGVkIGFsbCBjYWxsZXJzLgoKMjAwMy0wOC0wNSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogamF2YS10cmVlLmggKERFQ0xfRVNUSU1BVEVEX0lOU05TKTogUmVtb3ZlIChtb3ZlZCB0byB0cmVlLmgpLgoKMjAwMy0wOC0wMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamF2YS10cmVlLmggKE1FVEhPRF9UUkFOU0lFTlQpOiBSZW1vdmVkLgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogUmVtb3ZlZCBzb21lIGRlYWQgY29kZS4KCSogY2xhc3MuYyAoZ2V0X2FjY2Vzc19mbGFnc19mcm9tX2RlY2wpOiBDYW4ndCBoYXZlIHRyYW5zaWVudAoJbWV0aG9kLgoJKGFkZF9tZXRob2RfMSk6IENhbid0IGhhdmUgYSB0cmFuc2llbnQgbWV0aG9kLgoKMjAwMy0wNy0yOCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSoganZzcGVjLmM6IENvbnZlcnQgdG8gSVNPIEM5MCBwcm90b3R5cGVzLgoKMjAwMy0wNy0yNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZm9yY2VfcG9wbGV2ZWxzKTogRml4IHdhcm5pbmcgY2FsbC4KCjIwMDMtMDctMjUgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogZXhwci5jIChleHBhbmRfamF2YV9maWVsZF9vcCk6IERvbid0IHVzZSB4eHhfd2l0aF9kZWNsCgkoZXhwYW5kX2phdmFfZmllbGRfb3ApOiBMaWtld2lzZS4KCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzX21ldGhvZCk6IExpa2V3aXNlCgkoZW1pdF9yZWdpc3Rlcl9jbGFzc2VzKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBMaWtld2lzZS4KCShwb3BsZXZlbCk6IExpa2V3aXNlLgoJKGZvcmNlX3BvcGxldmVscyk6IExpa2V3aXNlLgoJKGdpdmVfbmFtZV90b19sb2NhbHMpOiBMaWtld2lzZS4KCSogY2hlY2staW5pdC5jIChjaGVja19mb3JfaW5pdGlhbGl6YXRpb24pOiBMaWtld2lzZS4KCjIwMDMtMDctMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogamF2YS10cmVlLmg6IE1vdmUgYm9vbGVhbl90eXBlX25vZGUgZXQgYWwgdG8gdGhlIGJhY2sgZW5kLgoKMjAwMy0wNy0xOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2xhc3MuYyBqYXZhLXRyZWUuaCBqY2Ytd3JpdGUuYyBqdnNwZWMuYzogUmVtb3ZlIHVubmVjZXNzYXJ5CgljYXN0cy4KCjIwMDMtMDctMTkgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGxhbmcub3B0OiBEb24ndCBzaG93IC1NRF8gYW5kIC1NRERfLgoKMjAwMy0wNy0xOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogbGFuZy1vcHRpb25zLmg6IFJlbW92ZS4KCSogbGFuZy5vcHQ6IEFkZCBoZWxwIHRleHQuCgoyMDAzLTA3LTE1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZXhwci5jOiBSZW1vdmUgdGhlIGxhc3QgYXJndW1lbnQgdG8gZXhwYW5kX2Fzc2lnbm1lbnQoKS4KCjIwMDMtMDctMDkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGphdmEtdHJlZS5oIChERUNMX05VTV9TVE1UUyk6IFJlbmFtZSB0by4uLgoJKERFQ0xfRVNUSU1BVEVEX0lOU05TKTogLi4uIHRoaXMuCgkqIGxhbmcuYyAoamF2YV9lc3RpbWF0ZV9udW1faW5zbnMsIGphdmFfZXN0aW1hdGVfbnVtX2luc25zXzEpOgoJTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkoTEFOR19IT09LU19UUkVFX0lOTElOSU5HX0VTVElNQVRFX05VTV9JTlNOUyk6IERlZmluZS4KCSogcGFyc2VyLnkgKGFkZF9zdG10X3RvX2NvbXBvdW5kKTogRG8gbm90IGFjY291bnQgc3RhdGVtZW50cy4KCjIwMDMtMDctMDggIE1hcmsgV2llbGFhcmQgIDxtYXJrQGtsb21wLm9yZz4KCgkqIGdjai50ZXhpOiBDTkkgbm93IGV4cGFuZHMgdG8gQ29tcGlsZWQgTmF0aXZlIEludGVyZmFjZS4KCjIwMDMtMDctMDggIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogTWFrZS1sYW5nLmluIChqYXZhL2djai5kdmkpOiBVc2UgUFdEX0NPTU1BTkQuCgoyMDAzLTA3LTA3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZXhwci5jIChleHBhbmRfYnl0ZV9jb2RlKTogQWRqaXN0IGVtaXRfbGluZV9ub3RlIGNhbGwuCgoyMDAzLTA3LTA2ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBsYW5nLmMgKGphdmFfaGFuZGxlX29wdGlvbik6IERvbid0IGhhbmRsZSBmaWxlbmFtZXMuCgoyMDAzLTA3LTAyICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogamNmLXBhdGguYzogRG9uJ3QgZGVmYXVsdC1kZWZpbmUgUEFUSF9TRVBBUkFUT1Igbm9yCglESVJfU0VQQVJBVE9SLgoJVXNlIEZJTEVOQU1FX0NNUC4KCSogamNmLXdyaXRlLmM6IERvbid0IGRlZmF1bHQtZGVmaW5lIERJUl9TRVBBUkFUT1IuCgkqIGpjZi5oOiBEZWxldGUgQ09NUEFSRV9GSUxFTkFNRVMgZGVmaW5pdGlvbi4KCjIwMDMtMDctMDIgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGxhbmcuYyAoamF2YV9pbml0X29wdGlvbnMpOiBVcGRhdGUgcHJvdG90eXBlLgoKMjAwMy0wNy0wMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAocG9wbGV2ZWwpOiBBZGp1c3QgZGVmaW5lX2xhYmVsIGNhbGwuCgoyMDAzLTA2LTI3ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ2phdmFoLmMgKGZsYWdfam5pKTogTWFrZSBub24tc3RhdGljLgoJKiBwYXJzZS1zY2FuLnkgKGN0eHApOiBNYWtlIG5vbi1zdGF0aWMuCgoJKiBjbGFzcy5jIChidWlsZF9tZXRob2Rfc3ltYm9sc19lbnRyeSkKCSogZXhwci5jIChnZXRfb2Zmc2V0X3RhYmxlX2luZGV4KQoJKiBqY2YtcGFyc2UuYyAoamNmX3BhcnNlKToKCU1hcmsgdGhlIGRlZmluaXRpb24gc3RhdGljLCBtYXRjaGluZyB0aGUgZm9yd2FyZCBkZWNsYXJhdGlvbi4KCjIwMDMtMDYtMjYgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGxhbmcuYyAoamF2YV9oYW5kbGVfb3B0aW9uKTogRG9uJ3QgY2hlY2sgZm9yIG1pc3NpbmcgYXJndW1lbnRzLgoKMjAwMy0wNi0yMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKHB1c2hfY2xhc3MpOiBVc2UgYSBsb2NhdGlvbl90IHRvIHNhdmUgcGxhY2UuCgkoZW1pdF9yZWdpc3Rlcl9jbGFzc2VzKTogU2V0IGlucHV0X2xvY2F0aW9uLiBBZGp1c3QKCWV4cGFuZF9mdW5jdGlvbl9lbmQgY2FsbC4KCSogcmVzb3VyY2UuYyAod3JpdGVfcmVzb3VyY2VfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCSogZGVjbC5jIChlbmRfamF2YV9tZXRob2QpOiBBZGp1c3QgZXhwYW5kX2Z1bmN0aW9uX2VuZCBjYWxsLgoJKiBwYXJzZS55IChzb3VyY2VfZW5kX2phdmFfbWV0aG9kKTogTGlrZXdpc2UuCgoyMDAzLTA2LTE3ICBSb2JlcnQgQWJlbGVzICA8cmFiZWxlc0BhcmNoYWVsb2dpYy5jb20+CgoJKiBsYW5nLmMgKGphdmFfaGFuZGxlX29wdGlvbik6IExpa2V3aXNlLgoKMjAwMy0wNi0xNiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogbGFuZy5jIChqYXZhX2hhbmRsZV9vcHRpb24pOiBTcGVjaWFsLWNhc2luZyBvZiBvcHRpb25hbAoJam9pbmVkIGFyZ3VtZW50cyBubyBsb25nZXIgbmVlZGVkLgoJKiBsYW5nLm9wdDogVXBkYXRlIHN3aXRjaGVzIHRoYXQgdGFrZSBvcHRpb25hbCBhcmd1bWVudC4KCjIwMDMtMDYtMTUgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGxhbmcub3B0OiBEZWNsYXJlIEphdmEuCgkqIGxhbmcuYyAoamF2YV9pbml0X29wdGlvbnMpOiBVcGRhdGUuCgoyMDAzLTA2LTE1ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBsYW5nLmMgKHZlcnNpb25fZmxhZyk6IFJlbmFtZSB0byB2X2ZsYWcgdG8gYXZvaWQgY2xhc2ggdy8gdG9wbGV2LmguCgoyMDAzLTA2LTE0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBsYW5nLXNwZWNzLmg6IFJld3JpdGUgLU1EIGFuZCAtTU1EIHRvIGFwcGVuZCBhbiB1bmRlcnNjb3JlLgoJKiBsYW5nLmMgKGphdmFfaGFuZGxlX29wdGlvbik6IC1NRCBhbmQgLU1NRCBoYXZlIGFuIHVuZGVyc2NvcmUuCgkqIGxhbmcub3B0OiAtTUQgYW5kIC1NTUQgaGF2ZSBhbiB1bmRlcnNjb3JlLgoKMjAwMy0wNi0xNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGVtaXRfcmVnaXN0ZXJfY2xhc3Nlcyk6IEFkanVzdCBpbml0X2Z1bmN0aW9uX3N0YXJ0CgljYWxsLgoJKiBkZWNsLmMgKGNvbXBsZXRlX3N0YXJ0X2phdmFfbWV0aG9kKTogTGlrZXdpc2UuCgkqIHJlc291cmNlLmMgKHdyaXRlX3Jlc291cmNlX2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgoyMDAzLTA2LTE0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlLWxhbmcuaW46IFVwZGF0ZSB0byB1c2Ugb3B0aW9ucy5jIGFuZCBvcHRpb25zLmguCgkqIGxhbmcuYzogSW5jbHVkZSBvcHRpb25zLmggbm90IGotb3B0aW9ucy5oLgoJKGphdmFfaGFuZGxlX29wdGlvbik6IEFib3J0IG9uIHVucmVjb2duaXplZCBvcHRpb24uCgkoamF2YV9pbml0X29wdGlvbnMpOiBSZXF1ZXN0IEphdmEgc3dpdGNoZXMuCgoyMDAzLTA2LTExICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlLWxhbmcuaW46IEhhbmRsZSBtb3N0bHljbGVhbi4KCjIwMDMtMDYtMTEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGxhbmcuYyAoamF2YV9oYW5kbGVfb3B0aW9uKTogVXBkYXRlIGRlcGVuZGVuY3lfdHJhY2tpbmcgZm9yCglPUFRfTUYgY2FzZS4KCgkqIGxhbmcuYyAoamF2YV9oYW5kbGVfb3B0aW9uKTogT1BUX2Zib290Y2xhc3NwYXRoXyBjYW4gdGFrZSBhbgoJZW1wdHkgYXJndW1lbnQuCgoyMDAzLTA2LTEwICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHJlc291cmNlLmMgKHdyaXRlX3Jlc291cmNlX2NvbnN0cnVjdG9yKTogVXNlIGV4cGFuZF9leHByIHRvCglnZW5lcmF0ZSB0aGUgYWRkcmVzcyBvZiB0aGUgbGFiZWwgYXR0YWNoZWQgdG8gYSByZXNvdXJjZS4KCSogTWFrZS1sYW5nLmluIChqYXZhL3Jlc291cmNlLm8pOiBBZGQgZXhwci5oCgoyMDAzLTA2LTEwICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGxhbmcuYyAoTEFOR19IT09LU19ERUNMX09LX0ZPUl9TSUJDQUxMKTogTmV3LgoJKGphdmFfZGVjbF9va19mb3Jfc2liY2FsbCk6IE5ldy4KCjIwMDMtMDYtMDkgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIE1ha2UtbGFuZy5pbiAoSkFWQV9PQkpTLCBqYXZhL2xhbmcubyk6IFVwZGF0ZS4KCShqYXZhL2otb3B0aW9ucy5jLCBqYXZhL2otb3B0aW9ucy5oKTogTmV3LgoJKiBqYXZhLXRyZWUuaCAocmVzb3VyY2VfbmFtZSwgY29tcGlsZV9yZXNvdXJjZV9maWxlLAoJY29tcGlsZV9yZXNvdXJjZV9kYXRhKTogQ29uc3RpZnkuCgkqIGpjZi13cml0ZS5jIChqY2Zfd3JpdGVfYmFzZV9kaXJlY3RvcnkpOiBTaW1pbGFybHkuCgkqIGpjZi5oIChqY2Zfd3JpdGVfYmFzZV9kaXJlY3RvcnkpOiBTaW1pbGFybHkuCgkqIGxhbmcuYzogSW5jbHVkZSBqLW9wdGlvbnMuaC4KCShjbF9vcHRpb25zX2NvdW50LCBjbF9vcHRpb25zLCBzdHJpbmdfb3B0aW9uLCBqYXZhX2RlY29kZV9vcHRpb24sCglsYW5nX2Zfb3B0aW9ucywgbGFuZ19XX29wdGlvbnMsIExBTkdfSE9PS1NfREVDT0RFX09QVElPTiwKCXByb2Nlc3Nfb3B0aW9uX3dpdGhfbm8pOiBSZW1vdmUuCgkocmVzb3VyY2VfbmFtZSk6IENvbnN0aWZ5LgoJKExBTkdfSE9PS1NfSEFORExFX09QVElPTik6IE92ZXJyaWRlLgoJKGphdmFfaGFuZGxlX29wdGlvbik6IE5ldy4KCShqYXZhX2luaXQpOiBEb24ndCBjYWxsIGpjZl9wYXRoX2luaXQuCgkoamF2YV9pbml0X29wdGlvbnMpOiBDYWxsIGpjZl9wYXRoX2luaXQuCgkqIGxhbmcub3B0OiBOZXcuCgkqIHJlc291cmNlLmMgKGNvbXBpbGVfcmVzb3VyY2VfZGF0YSwgY29tcGlsZV9yZXNvdXJjZV9maWxlKTogQ29uc3RpZnkuCgoyMDAzLTA2LTA5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogamF2YS10cmVlLmggKERFQ0xfRlVOQ1RJT05fTEFTVF9MSU5FKTogTmV3LgoJKHN0cnVjdCBsYW5nX2RlY2xfZnVuYyk6IEFkZCBsYXN0X2xpbmUgZmllbGQuCgkqIHBhcnNlLmggKERFQ0xfU09VUkNFX0xJTkVfTUVSR0UsIERFQ0xfU09VUkNFX0xJTkVfRklSU1QsCglERUNMX1NPVVJDRV9MSU5FX0xBU1QpOiBSZW1vdmUuCgkqIHBhcnNlLnkgKG1pc3NpbmdfcmV0dXJuX2Vycm9yLCBmaW5pc2hfbWV0aG9kX2RlY2xhcmF0aW9uLAoJbG9va3VwX2NsLCBzdGFydF9hcnRpZmljaWFsX21ldGhvZF9ib2R5LCBzb3VyY2VfZW5kX2phdmFfbWV0aG9kLAoJc3RhcnRfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IEFkanVzdC4KCjIwMDMtMDYtMDggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGp2c3BlYy5jIChqdmdlbm1haW5fc3BlYyk6IEFkZGVkIGAqJyBhZnRlciBmYXNzdW1lLWNvbXBpbGVkIGFuZAoJZm5vLWFzc3VtZS1jb21waWxlZC4KCjIwMDMtMDYtMDggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZGVmaW5lX2J1aWx0aW5fdHlwZSwgYnVpbHRpbl90eXBlcyk6IERlbGV0ZS4KCShkZWZpbmVfYnVpbHRpbik6IFJld3JpdHRlbiB0byB0YWtlIGp1c3QgdGhlIGJ1aWx0LWluIGNvZGUsCgl0aGUgZnVuY3Rpb24ncyBuYW1lLCB0eXBlIGFuZCBmYWxsYmFjayBsaWJyYXJ5IGZ1bmN0aW9uIG5hbWUuCglBbGwgYnVpbHQtaW5zIHVzZWQgYnkgSmF2YSBhcmUgaW1wbGljaXQgYW5kIEJVSUxUX0lOX05PUk1BTC4KCShpbml0aWFsaXplX2J1aWx0aW5zKTogT3ZlcmhhdWwgdG8gZGVmaW5lIHRoZSBHQ0MgYnVpbHRpbnMKCXVzZWQgYnkgZ2NqIG1hbnVhbGx5LCBwcm92aWRpbmcgdGhlIEphdmEgcnVuLXRpbWUncwoJaW1wbGVtZW50YXRpb25zIGFzIHRoZSBmYWxsYmFjayBsaWJyYXJ5IGZ1bmN0aW9uLgoKMjAwMy0wNi0wOCAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9jYXN0KTogRml4IGNvbnZlcnNpb25zIGZyb20gZmxvYXRpbmctcG9pbnQgdG8KCWludGVncmFsIHR5cGVzLgoKMjAwMy0wNi0wOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogTWFrZS1sYW5nLmluOiBVcGRhdGUuCgkqIGxhbmcuYzogSW5jbHVkZSBvcHRzLmguIERlZmluZSBjbF9vcHRpb25zX2NvdW50IGFuZCBjbF9vcHRpb25zLgoKMjAwMy0wNi0wNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogbGFuZy5jIChqYXZhX2luaXRfb3B0aW9ucyk6IFVwZGF0ZS4KCjIwMDMtMDYtMDUgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIE1ha2UtbGFuZy5pbjogIEFkZCBzdXBwb3J0IGZvciBzdGFnZXByb2ZpbGUgYW5kIHN0YWdlZmVlZGJhY2sKCjIwMDMtMDUtMzEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogbGFuZy5jIChqYXZhX2luaXRfb3B0aW9ucyk6IFByZXNjcmliZSB3cmFwLWFyb3VuZCB0d28ncwoJY29tcGxlbWVudCBhcml0aG1ldGljIG92ZXJmbG93IGJ5IHNldHRpbmcgZmxhZ193cmFwdi4KCjIwMDMtMDUtMjkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoY29zX2J1aWx0aW4sIHNpbl9idWlsdGluLCBzcXJ0X2J1aWx0aW4pOiBEZWxldGUuCgkoYnVpbHRpbl9yZWNvcmQpOiBBZGQgYW4gYWRkaXRpb25hbCBidWlsdGluX2NvZGUgZmllbGQgdG8KCXJlY29yZCB3aGljaCBHQ0MgYnVpbHQtaW4gY29ycmVzcG9uZHMgdG8gdGhlIEphdmEgZnVuY3Rpb24uCgkoamF2YV9idWlsdGlucyk6ICBBZGQgbmV3IGVudHJpZXMgZm9yIGF0YW4sIGF0YW4yLCBleHAsIGxvZywKCXBvdyBhbmQgdGFuLgoJKG1heF9idWlsdGluLCBtaW5fYnVpbHRpbiwgYWJzX2J1aWx0aW4pOiBQZXJmb3JtIGNvbnN0YW50Cglmb2xkaW5nIG9uIHRoZSByZXN1bHRpbmcgdHJlZS4KCShqYXZhX2J1aWxkX2Z1bmN0aW9uX2NhbGxfZXhwcik6IExpa2V3aXNlLCBwZXJmb3JtIGNvbnN0YW50Cglmb2xkaW5nIG9uIHRoZSByZXN1bHRpbmcgdHJlZS4KCShpbml0aWFsaXplX2J1aWx0aW5zKTogVGhlIE5VTEwgY3JlYXRvcnMgYXJlIG5vdyBhbGxvd2VkIGluCgl0aGUgamF2YV9idWlsdGlucyB0YWJsZSwgd2hpY2ggaXMgbm93IHRlcm1pbmF0ZWQgYnkgYW4gZW50cnkKCXdpdGggYnVpbHRpbl9jb2RlID09IEVORF9CVUlMVElOUy4KCShjaGVja19mb3JfYnVpbHRpbik6IExpa2V3aXNlLiAgSWYgdGhlIG1hdGNoaW5nIGNyZWF0b3IgaXMKCU5VTEwsIGNvbnN0cnVjdCB0aGUgY2FsbCB1c2luZyBqYXZhX2J1aWxkX2Z1bmN0aW9uX2NhbGxfZXhwcgoJZGlyZWN0bHkgd2l0aCB0aGUgZGVjbCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgYnVpbHRpbl9jb2RlLgoKMjAwMy0wNS0yMyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiB3aW4zMi1ob3N0LmM6IE5vcm1hbGl6ZSBjb3B5cmlnaHQgYm9pbGVycGxhdGUuCgoyMDAzLTA1LTE2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBwYXJzZS55IChwcmludF9pbnRfbm9kZSk6IFVzZSBzdHJpbmcgY29uY2F0ZW50YXRpb24gb24KCUhPU1RfV0lERV9JTlRfUFJJTlRfKiBmb3JtYXQgc3BlY2lmaWVyIHRvIGNvbGxhcHNlIG11bHRpcGxlCglmdW5jdGlvbiBjYWxscyBpbnRvIG9uZS4KCjIwMDMtMDUtMTMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBqY2YtcGFyc2UuYywgamNmLXdyaXRlLmMsIGxleC5jOiBSZXBsYWNlIGFsbCBjYWxscyB0bwoJZmF0YWxfaW9fZXJyb3Igd2l0aCBjYWxscyB0byBmYXRhbF9lcnJvcjsgYWRkICI6ICVtIiB0byB0aGUgZW5kIG9mCglhbGwgdGhlIGFmZmVjdGVkIGVycm9yIG1lc3NhZ2VzLgoKMjAwMy0wNS0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzc19tZXRob2QpOiBTZXQgREVDTF9FWFRFUk5BTC4KCSogZGVjbC5jIChqYXZhX21hcmtfZGVjbF9sb2NhbCwgamF2YV9tYXJrX2NsYXNzX2xvY2FsKTogTmV3LgoJKiBqYXZhLXRyZWUuaCAoamF2YV9tYXJrX2NsYXNzX2xvY2FsKTogRGVjbGFyZS4KCSogamNmLXBhcnNlLmMgKHBhcnNlX2NsYXNzX2ZpbGUpOiBVc2UgaXQuCgkqIHBhcnNlLnkgKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBMaWtld2lzZS4KCjIwMDMtMDUtMDQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEvcGFyc2UubywgamF2YS9wYXJzZS1zY2FuLm8pOiBEZXBlbmQgb24gaW5wdXQuaC4KCSogbGV4Lmg6ICNpbmNsdWRlIGlucHV0LmguCgkqIGp2LXNjYW4uYyAoaW5wdXRfZmlsZW5hbWUpOiBSZW1vdmUuCgoyMDAzLTA1LTAyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xMDQ5MToKCSogZ2phdmFoLmMgKEhBTkRMRV9JTk5FUkNMQVNTRVNfQVRUUklCVVRFKTogTmV3IG1hY3JvLgoJKGhhbmRsZV9pbm5lcl9jbGFzc2VzKTogTmV3IGZ1bmN0aW9uLgoKMjAwMy0wNS0wMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTA0NTk6CgkqIHBhcnNlLnkgKGZpbmlzaF9mb3JfbG9vcCk6IERvIG5vdGhpbmcgaWYgdXBkYXRlIGV4cHJlc3Npb24gaXMgYQoJRVhQUl9XRkxfTk9ERSB3cmFwcGluZyBub3RoaW5nLgoJKGphdmFfY29tcGxldGVfbGhzKSA8Q09NUE9VTkRfRVhQUj46IExpa2V3aXNlLgoKMjAwMy0wNS0wMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxleC5oIChpbnB1dF9saW5lbm8pOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkqIHBhcnNlLXNjYW4ueTogI2luY2x1ZGUgaW5wdXQuaC4KCShpbnB1dF9maWxlbmFtZSk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShpbnB1dF9sb2NhdGlvbik6IEFkZCBkZWZpbml0aW9uLgoJKGlucHV0X2xpbmUpOiBSZW1vdmUgZGVmaW5pdGlvbi4KCjIwMDMtMDUtMDEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBsZXguaCAobGluZW5vKTogUmVuYW1lIHRvIC4uLgoJKGlucHV0X2xpbmUpOiAuLi4gaGVyZQoJKiBwYXJzZS1zY2FuLnkgKGxpbmVubyk6IFJlbmFtZSB0byAuLi4KCShpbnB1dF9saW5lKTogLi4uIGhlcmUuCgkocmVzZXRfcmVwb3J0KTogUmVuYW1lIGxpbmVubyB0byBpbnB1dF9saW5lLgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAocHVzaF9jbGFzcyk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGNvbXBsZXRlX3N0YXJ0X2phdmFfbWV0aG9kLCBlbmRfamF2YV9tZXRob2QpOiBMaWtld2lzZS4KCSogZXhwci5jIChleHBhbmRfYnl0ZV9jb2RlKTogTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jIChnaXZlX25hbWVfdG9fY2xhc3MsIHBhcnNlX2NsYXNzX2ZpbGUpOiBMaWtld2lzZS4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogTGlrZXdpc2UuCgkqIGxleC5jIChqYXZhX2luaXRfbGV4LCBqYXZhX2FsbG9jYXRlX25ld19saW5lLAoJZG9famF2YV9sZXgpOiBMaWtld2lzZS4KCSogcGFyc2UuaCAoWVlOT1RfVFdJQ0UpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoZW1wdHlfc3RhdGVtZW50LCBleHByZXNzaW9uX3N0YXRlbWVudCwKCWphdmFfcG9wX3BhcnNlcl9jb250ZXh0LCBqYXZhX3BhcnNlcl9jb250ZXh0X3NhdmVfZ2xvYmFsLAoJeXllcnJvciwgcmVnaXN0ZXJfZmllbGRzLCBtZXRob2RfaGVhZGVyLCBzYWZlX2xheW91dF9jbGFzcywKCWZpbmRfaW5faW1wb3J0c19vbl9kZW1hbmQsIGNyZWF0ZV9hcnRpZmljaWFsX21ldGhvZCwKCXNvdXJjZV9lbmRfamF2YV9tZXRob2QsIHN0YXJ0X2NvbXBsZXRlX2V4cGFuZF9tZXRob2QsCglidWlsZF90aGlzbl9hc3NpZ24sIGphdmFfY29tcGxldGVfbGhzLAoJbWF5YmVfYWJzb3JiX3Njb3BpbmdfYmxvY2spOiBMaWtld2lzZS4KCjIwMDMtMDQtMjAgIE1vaGFuIEVtYmFyICA8Z251c3R1ZmZAdGhpc2lzY29vbC5jb20+CgoJKiBqY2YtaW8uYyAoZmluZF9jbGFzcyk6IHVzZSBESVJfU0VQQVJBVE9SIGluc3RlYWQgb2YKCScvJyB3aGVuIGNvbXB1dGluZyBqYXZhIHNvdXJjZSBmaWxlbmFtZQoKMjAwMy0wNC0xMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2phdmFoLmMgKHByaW50X2NfZGVjbCk6IEluZGVudGF0aW9uIGZpeC4KCjIwMDMtMDQtMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChtYWtlX2ZpZWxkX3ZhbHVlLCBtYWtlX21ldGhvZF92YWx1ZSwgZ2V0X2Rpc3BhdGNoX3RhYmxlKQoJKG1ha2VfY2xhc3NfZGF0YSwgZW1pdF9vZmZzZXRfc3ltYm9sX3RhYmxlKQoJKiBjb25zdGFudHMuYyAoYnVpbGRfY29uc3RhbnRzX2NvbnN0cnVjdG9yKQoJKiBqYXZhLXRyZWUuaCAoU1RBUlRfUkVDT1JEX0NPTlNUUlVDVE9SKQoJKiBwYXJzZS55IChtYXliZV9idWlsZF9hcnJheV9lbGVtZW50X3dmbCk6CglVc2UgYnVpbGRfY29uc3RydWN0b3IuCgoyMDAzLTA0LTEwICBFcmljIEJsYWtlICA8ZWJiOUBlbWFpbC5ieXUuZWR1PgoKCVBSIGphdmEvMTAyNTM6CgkqIHBhcnNlLnkgKHN0cmluZ19jb252ZXJ0X2ludF9jc3QpOiBBbHdheXMgdXNlIGF0IGxlYXN0IG9uZSBkaWdpdAoJaW4gc3RyaW5nIGNvbnZlcnNpb24uIFJlbW92ZSBBU0NJSSBkZXBlbmRlbmNlLgoJKG1lcmdlX3N0cmluZ19jc3RlKTogRml4IG1lcmdpbmcgb2YgMy1ieXRlIFVURi04IGNoYXJhY3RlcnMuCgoyMDAzLTAzLTE2ICBNb2hhbiBFbWJhciAgPGdudXN0dWZmQHRoaXNpc2Nvb2wuY29tPgoKCSogTWFrZS1sYW5nLmluOiBhZGRlZCB3aW4zMi1ob3N0LmMKCSogamNmLmg6IGRlZmluZWQgbWFjcm8gSkNGX09QRU5fRVhBQ1RfQ0FTRSB3aGljaAoJcmVzb2x2ZXMgdG8gb3BlbigpIG9uIG5vbi1XaW4zMiBwbGF0Zm9ybXMgYW5kCglXaW4zMi1zcGVjaWZpYyBqY2Zfb3Blbl9leGFjdF9jYXNlKCkgb24gV2luMzIKCSogamNmLWlvLmMgKGZpbmRfY2xhc3MpOiB1c2UgSkNGX09QRU5fRVhBQ1RfQ0FTRQoJd2hlbiB0cnlpbmcgLmphdmEgYW5kIC5jbGFzcyBmaWxlcwoJKiB3aW4zMi1ob3N0LmM6IGFkZGVkIHRvIHJlcG9zaXRvcnkuIERlZmluZXMKCVdpbjMyLXNwZWNpZmljIGpjZl9vcGVuX2V4YWN0X2Nhc2UoKQoKMjAwMy0wNC0xMCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoc3RydWN0IGpjZl9wYXJ0aWFsKTogbnVtX2pzcnM6IG5ldyBmaWVsZC4KCShtYXliZV9mcmVlX2xvY2FsdmFyKTogUmVuYW1lZCBmcm9tIGxvY2FsdmFyX2ZyZWUuCglBZGQgbmV3IGFyZywgcmVhbGx5LgoJKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogU2V0IG5ldyB2YXJpYWJsZSwganNycy4KCU9ubHkgZnJlZSBsb2NhbCB2YXJzIGlmIG5vIGpzciBpbnNucyBoYXZlIGJlZW4gZW1pdHR0ZWQuCglDYWxsIG1heWJlX2ZyZWVfbG9jYWx2YXIsIG5vdCBsb2NhbHZhcl9mcmVlLgoKMjAwMy0wMy0zMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBnY2oudGV4aTogUmVtb3ZlIEAgYXQgc3RhcnQgb2YgZmlsZS4KCjIwMDMtMDMtMjUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGNyZWF0ZV9pbnRlcmZhY2UpOiBDYWxsIENIRUNLX0RFUFJFQ0FURUQuCgoyMDAzLTAzLTIzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluOiBMaW5rIGpjZi1kdW1wIGFnYWluc3QgJChMREVYUF9MSUIpLgoKMjAwMy0wMy0yMSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGphdmFvcC5oIChqZmxvYXQsIGpkb3VibGUpOiBNYWtlIHRoZW0gc3RydWN0dXJlcyBtaXJyb3JpbmcKCXRoZSBiaXQgZmllbGRzIG9mIElFRUUgZmxvYXQgYW5kIGRvdWJsZSByZXNwZWN0aXZlbHkuCgkoSkZMT0FUX0ZJTklURSwgSkZMT0FUX1FOQU5fTUFTSywgSkZMT0FUX0VYUF9CSUFTLAoJSkRPVUJMRV9GSU5JVEUsIEpET1VCTEVfUU5BTl9NQVNLLCBKRE9VQkxFX0VYUF9CSUFTKTogTmV3LgoJKHVuaW9uIFdvcmQsIHVuaW9uIERXb3JkKTogRGVsZXRlLgoJKFdPUkRfVE9fRkxPQVQsIFdPUkRTX1RPX0RPVUJMRSk6IFVwZGF0ZSB0byBtYXRjaC4KCgkqIGdqYXZhaC5jIChqYXZhX2Zsb2F0X2Zpbml0ZSwgamF2YV9kb3VibGVfZmluaXRlLCBGX05BTl9NQVNLLAoJRF9OQU5fTUFTSyk6IERlbGV0ZS4KCShqbmlfcHJpbnRfZmxvYXQsIGpuaV9wcmludF9kb3VibGUpOiBOZXcuICBHZW5lcmF0ZQoJaGV4YWRlY2ltYWwgZmxvYXRpbmcgY29uc3RhbnRzLgoJKHByaW50X2ZpZWxkX2luZm8pOiBVc2Ugam5pX3ByaW50X2Zsb2F0L2RvdWJsZS4KCgkqIGpjZi1kdW1wLmM6IEluY2x1ZGUgbWF0aC5oLiAgVXNlIGxkZXhwL2ZyZXhwIHRvIGFzc2VtYmxlCglmaW5pdGUgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBmb3Igb3V0cHV0OyBzcGVjaWFsIGNhc2UKCW5vbi1maW5pdGUgZmxvYXRzLgoKMjAwMy0wMy0xOSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBsYW5nLmMgKGphdmFfZHVtcF90cmVlKTogQ2hhbmdlIHJldHVybiB0eXBlIGZyb20gJ2ludCcgdG8gJ2Jvb2wnLgoJUmVwbGFjZSAwIGFuZCAxIHdpdGggdHJ1ZSBhbmQgZmFsc2UgaW4gcmV0dXJuIHN0YXRlbWVudHMuCgoyMDAzLTAzLTE5ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBsZXguYyAoZG9famF2YV9sZXgpOiBSZW5hbWVkIGZyb20gamF2YV9sZXguCgkoamF2YV9sZXgpOiBOZXcgZnVuY3Rpb24uCglJbmNsdWRlIHRpbWV2YXIuaC4KCjIwMDMtMDMtMTMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfaW5uZXJfY2xhc3MpOiBFcnJvciBpZiBxdWFsaWZpZXIgaXMgYSBwcmltaXRpdmUKCXR5cGUuCgoyMDAzLTAzLTA0ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGdqYXZhaC5jIChpc19maXJzdF9kYXRhX21lbWJlcik6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkocHJpbnRfY19kZWNsKTogSWYgaXQncyB0aGUgZmlyc3QgZGF0YSBtZW1iZXIsIGFsaWduIGl0IGFzIHRoZQoJc3VwZXJjbGFzcy4KCShwcm9jZXNzX2ZpbGUpOiBTZXQgaXNfZmlyc3RfZGF0YV9tZW1iZXIuCgoyMDAzLTAzLTExICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChyZXNvbHZlX2ZpZWxkX2FjY2Vzcyk6IEluaXRpYWxpemUgY2xhc3MgaWYgZmllbGQgaXMKCWZvdW5kIGluIGFub3RoZXIgc3RhdGljIGZpZWxkLgoJKiBleHByLmMgKGJ1aWxkX2NsYXNzX2luaXQpOiBEb24ndCBvcHRpbWl6ZSBvdXQgaW5pdGlhbGl6YXRpb24gb2YKCWltcGxlbWVudGVkIGludGVyZmFjZS4KCjIwMDMtMDMtMTEgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogamNmLWlvLmMgKGNhY2hpbmdfc3RhdCk6IEluaXRpYWxpemUgb3JpZ3NlcCB0byByZW1vdmUgY29tcGlsZXIKCXdhcm5pbmcuCgoyMDAzLTAzLTEwICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCgkqIGpjZi1pby5jIChjYWNoaW5nX3N0YXQpOiBBY2NvdW50IGZvciBib3RoIERJUl9TRVBBUkFUT1IKCWFuZCBESVJfU0VQQVJBVE9SXzIgZm9yIGEgdGFyZ2V0LgoJQ29ycmVjdCBtaW5vciB0eXBvcy4KCgkqIGpjZi13cml0ZS5jIChtYWtlX2NsYXNzX2ZpbGVfbmFtZSk6IFRha2UgYm90aCBESVJfU0VQQVJBVE9SCglhbmQgRElSX1NFUEFSQVRPUl8yIGZvciBhIHRhcmdldCBpbnRvIGFjY291bnQuCgoyMDAzLTAzLTA4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBsYW5nLmMgKGphdmFfaW5pdCk6IFVwZGF0ZSBwcm90b3R5cGUsIG1vdmUgY29kZSB0byBqYXZhX3Bvc3Rfb3B0aW9ucy4KCShqYXZhX3Bvc3Rfb3B0aW9ucyk6IFNpbWlsYXJseS4KCjIwMDMtMDMtMDUgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCSogamNmLmggKENPTVBBUkVfRklMRU5BTUVTKTogTmV3IG1hY3JvIHNpbWlsYXIgdG8gInN0cmNtcCIgdG8KCWNvbXBhcmUgZmlsZSBuYW1lIGNvbXBvbmVudHMgZGVwZW5kaW5nIG9uIHRoZSBjYXNlLXNlbnNpdGl2aXR5CglvciBvdGhlcndpc2Ugb2YgdGhlIGhvc3QgZmlsZSBzeXN0ZW0uCgoJKiBqY2YtcGF0aC5jIChhZGRfZW50cnkpOiBVc2UgQ09NUEFSRV9GSUxFTkFNRVMgaW5zdGVhZCBvZgoJInN0cmNtcCIgdG8gY29tcGFyZSBmaWxlIG5hbWUgY29tcG9uZW50cy4KCVVzZSBJU19ESVJfU0VQQVJBVE9SIGluc3RlYWQgb2YgY29tcGFyaW5nIGRpcmVjdGx5IGFnYWluc3QKCURJUl9TRVBBUkFUT1IuCgkoamNmX3BhdGhfZXh0ZGlyc19hcmcpOiBVc2UgSVNfRElSX1NFUEFSQVRPUiBpbnN0ZWFkIG9mCgljb21wYXJpbmcgZGlyZWN0bHkgYWdhaW5zdCBESVJfU0VQQVJBVE9SLgoKMjAwMy0wMy0wNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhLnRhZ3MpOiBOZXcgdGFyZ2V0LgoKMjAwMy0wMy0wMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBqYXZhL2J1aWx0aW5zLmMgKGJ1aWx0aW5fdHlwZSk6IEhhbmRsZSBERUZfRlVOQ1RJT05fVFlQRV9WQVJfMy4KCShpbml0aWFsaXplX2J1aWx0aW5zKTogSGFuZGxlIERFRl9GVU5DVElPTl9UWVBFX1ZBUl8zLgoKMjAwMy0wMy0wMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoamRlcF9yZXNvbHZlX2NsYXNzKTogT25seSBjaGVjayBkZXByZWNhdGlvbiBpZiB3ZSBmb3VuZAoJYSBkZWNsLgoKMjAwMy0wMi0yOCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvOTY5NToKCSogY2xhc3MuYyAobWF5YmVfbGF5b3V0X3N1cGVyX2NsYXNzKTogQWx3YXlzIHBhc3MgYSBXRkwgdG8KCWRvX3Jlc29sdmVfY2xhc3MuCgkqIHBhcnNlLnkgKGRvX3Jlc29sdmVfY2xhc3MpOiBVcGRhdGVkIGNvbW1lbnQgdG8gZXhwbGFpbgoJcGFyYW1ldGVycy4KCjIwMDMtMDItMjYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9jbGFzc2ZpbGUpOiBDaGVjayB3aGV0aGVyIGNsYXNzIGlzCglkZXByZWNhdGVkIGJlZm9yZSB3cml0aW5nIGF0dHJpYnV0ZSBjb3VudC4KCjIwMDMtMDItMjUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogamF2YS9kZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBHZXQgc29mdF9mbW9kX25vZGUgZnJvbQoJYnVpbHRfaW5fZGVjbHNbQlVJTFRfSU5fRk1PRF0gcmF0aGVyIHRoYW4gZGVmaW5lIGl0IG91cnNlbHZlcy4KCjIwMDMtMDItMjMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGxhbmctb3B0aW9ucy5oOiBBZGRlZCAtV2RlcHJlY2F0ZWQuCgkqIGdjai50ZXhpIChXYXJuaW5ncyk6IERvY3VtZW50IC1XZGVwcmVjYXRlZC4KCSogamF2YS10cmVlLmggKGZsYWdfZGVwcmVjYXRlZCk6IERlY2xhcmUuCgkqIGxhbmcuYyAobGFuZ19XX29wdGlvbnMpOiBBZGRlZCBkZXByZWNhdGVkLgoJKGZsYWdfZGVwcmVjYXRlZCk6IE5ldyBnbG9iYWwuCgkqIGNoYXJ0YWJsZXMuaDogUmVidWlsdC4KCSogZ2VuLXRhYmxlLnBsIChwcm9jZXNzX29uZSk6IExvb2sgYXQgd2hpdGVzcGFjZS4KCShwcmludF90YWJsZXMpOiBEZWZpbmUgTEVUVEVSX1NQQUNFLCBMRVRURVJfTUFTSy4KCSogcGFyc2UuaCAoQ0xFQVJfREVQUkVDQVRFRCk6IE5ldyBtYWNyby4KCShDSEVDS19ERVBSRUNBVEVEX05PX1JFU0VUKTogTmV3IG1hY3JvLgoJKiBqY2YtcGFyc2UuYyAoaGFuZGxlX2RlcHJlY2F0ZWQpOiBOZXcgZnVuY3Rpb24uCgkoSEFORExFX0RFUFJFQ0FURURfQVRUUklCVVRFKTogTmV3IGRlZmluZS4KCSogamNmLXJlYWRlci5jIChnZXRfYXR0cmlidXRlKTogSGFuZGxlIERlcHJlY2F0ZWQgYXR0cmlidXRlLgoJKiBwYXJzZS55IChyZXNvbHZlX3R5cGVfZHVyaW5nX3BhdGNoKTogQ2hlY2sgZGVwcmVjYXRpb24uCgkoamRlcF9yZXNvbHZlX2NsYXNzKTogTGlrZXdpc2UuCgkocHJvY2Vzc19pbXBvcnRzKTogTGlrZXdpc2UuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBMaWtld2lzZS4KCShjaGVja19kZXByZWNhdGlvbik6IFN0cmlwIGFycmF5cyBmcm9tIGRlY2wuICBDaGVjawoJZmxhZ19kZXByZWNhdGVkLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogQWxzbyBjaGVjayB0aGUgcGFydGljdWxhciBjb25zdHJ1Y3RvcgoJZm9yIGRlcHJlY2F0aW9uLgoJKHJlZ2lzdGVyX2ZpZWxkcyk6IFVzZSBDSEVDS19ERVBSRUNBVEVEX05PX1JFU0VUIGluIGxvb3AuCgkqIGpjZi13cml0ZS5jIChhcHBlbmRfZGVwcmVjYXRlZF9hdHRyaWJ1dGUpOiBOZXcgZnVuY3Rpb24uCgkoZ2VuZXJhdGVfY2xhc3NmaWxlKTogR2VuZXJhdGUgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgd2hlbgoJYXBwcm9wcmlhdGUuCgkqIGxleC5jIChqYXZhX3BhcnNlX2RvY19zZWN0aW9uKTogUmV0dXJuIHR5cGUgbm93IHZvaWQuICBSZXdyb3RlLgoJKGphdmFfbGV4KSBbY2FzZSAnKiddOiBTaW1wbGlmeSBsb2dpYy4KCShqYXZhX3N0YXJ0X2NoYXJfcCk6IFVzZSBMRVRURVJfTUFTSy4KCShqYXZhX3BhcnRfY2hhcl9wKTogTGlrZXdpc2UuCgkoamF2YV9zcGFjZV9jaGFyX3ApOiBOZXcgZnVuY3Rpb24uCgoyMDAzLTAyLTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCUNoYW5nZSBiYXNlIGNsYXNzIGFjY2VzcyByZXByZXNlbnRhdGlvbi4KCSogamF2YS9jbGFzcy5jIChzZXRfc3VwZXJfaW5mbyk6IERvbid0IHNldCBUUkVFX1ZJQV9QVUJMSUMuCgkoYWRkX2ludGVyZmFjZV9kbyk6IExpa2V3aXNlLgoKMjAwMy0wMi0xMiAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDaGFuZ2UKCXNvZnRfbG9va3Vwam5pbWV0aG9kX25vZGUgdG8gcmVmbGVjdCB0aGUgY2hhbmdlIGluCglzaWduYXR1cmUgb2YgX0p2X0xvb2t1cEpOSU1ldGhvZCBpbiBsaWJqYXZhL2puaS5jYwoJKiBleHByLmMgKGJ1aWxkX2puaV9zdHViKTogQ2FsY3VsYXRlIGFuZCBwYXNzIHRoZSBzaXplCglvbiB0aGUgc3RhY2sgb2YgdGhlIGFyZ3VtZW50cyB0byBhIEpOSSBmdW5jdGlvbi4gVXNlCgluZXcgdGFyZ2V0IG1hY3JvIE1PRElGWV9KTklfTUVUSE9EX0NBTEwgdG8gYWxsb3cgYQoJdGFyZ2V0IHRvIG1vZGlmeSB0aGUgY2FsbCB0byBhIEpOSSBtZXRob2QuCgoyMDAzLTAyLTA4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGpjZi1pby5jIChqYXZhX29yX2NsYXNzX2ZpbGUpOiBVc2UgbGliaWJlcnR5J3MgbGJhc2VuYW1lCglpbnN0ZWFkIG9mIGJhc2VuYW1lIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzIG9uIFRydTY0LgoKMjAwMy0wMi0wNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBnY2oudGV4aTogVXBkYXRlIHRvIEdGREwgMS4yLgoKMjAwMy0wMS0zMSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChqYXZhX2V4cGFuZF9jbGFzc2VzKTogU2NhbiB0aGUgd2hvbGUgY2xhc3MgbGlzdCBsb29raW5nCglmb3IgYWNjZXNzIG1ldGhvZHMgdGhhdCBoYXZlbid0IHlldCBiZWVuIGV4cGFuZGVkLgoKMjAwMy0wMS0zMSBBZHJpYW4gQnVuayA8YnVua0Bmcy50dW0uZGU+CgoJRml4IGZvciBqYXZhLzQyNjk6CgoJKiBqdi1zY2FuLmM6IFVzZSBIQVZFX0xBTkdJTkZPX0NPREVTRVQgaW5zdGVhZCBvZiBIQVZFX05MX0xBTkdJTkZPCgl0byBmaXggYm9vdHN0cmFwIG9uIHNwYXJjLXVua25vd24tbmV0YnNkZWxmMS41LgoJKiBqY2YtcGFyc2UuYzogTGlrZXdpc2UuCgoyMDAzLTAxLTMxICBNYXJrIFdpZWxhYXJkICA8bWFya0BrbG9tcC5vcmc+CgoJKiBnamF2YWguYyAodGhyb3dhYmxlX3ApOiBBbGxvY2F0ZSAxIG1vcmUgYnl0ZSBmb3Igc3RyaW5nLgoKMjAwMy0wMS0zMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3MpOiBVc2UgQklORk9fRUxUUy4KCShzZXRfc3VwZXJfaW5mbyk6IExpa2V3c2UuCgkoYWRkX2ludGVyZmFjZV9kbyk6IExpa2V3aXNlLgoKMjAwMy0wMS0zMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamNmLXBhcnNlLmMgKHJlYWRfY2xhc3MpOiBVcGRhdGUgaWRlbnRpZmllcidzIGNsYXNzIHZhbHVlIGlmIGl0CgljaGFuZ2VkIGR1cmluZyBwYXJzaW5nLgoKMjAwMy0wMS0zMCAgTG9yZW4gSmFtZXMgUml0dGxlICA8bGpyaXR0bGVAYWNtLm9yZz4KCgkqIE1ha2UtbGFuZy5pbiAocG8tZ2VuZXJhdGVkKTogRmluZCB0aGUgdGFyZ2V0cyBpbiAkKHBhcnNlZGlyKS4KCVByb3BhZ2F0ZSBjaGFuZ2UgdG8gYWxsIG90aGVyIHJ1bGVzIGFzIHJlcXVpcmVkLgoJKGphdmEvcGFyc2Utc2Nhbi5vKTogQWRkIGV4cGxpY2l0IGRlcGVuZGVuY3kgb24KCSQocGFyc2VkaXIpL2phdmEvcGFyc2Utc2Nhbi5jIC4KCjIwMDMtMDEtMjkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX2Fzc2lnbm1lbnQpOiBPbmx5IHRyYW5zZm9ybSB0aGUgcmhzIG9mIGFuCglhc3NpZ25tZW50IHdoZW4gY29tcGlsaW5nIHRvIG5hdGl2ZS4KCjIwMDMtMDEtMjggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9jb25kaXRpb25hbCk6IFR5cG8gZml4ZXMuCgoyMDAzLTAxLTI4ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBsZXguYyAoamF2YV9sZXgpOiBEb24ndCBpbmNsdWRlIFVFT0YgYXMgcGFydCBvZiB0b2tlbi4KCShqYXZhX3JlYWRfdW5pY29kZSk6IEVycm9yIGlmIFx1IHNlcXVlbmNlIHByZW1hdHVyZWx5IHRlcm1pbmF0ZWQuCgoyMDAzLTAxLTI3ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcyk6IENoZWNrIGZvciBjb25zdHJ1Y3QgYWZ0ZXIKCWNoZWNraW5nIHR5cGVzIGluIHRocm93cyBjbGF1c2UuCgoyMDAzLTAxLTI0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogT25seSBhIFN0cmluZyBvciBudW1lcmljIGZpZWxkCgljYW4gZm9sZCB0byBhIGNvbnN0YW50LgoKMjAwMy0wMS0yMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamNmLXBhcnNlLmMgKHBhcnNlX3ppcF9maWxlX2VudHJpZXMpOiBPdmVyd3JpdGUgdHJhaWxpbmcgXDAgb2YKCWZpbGUgbmFtZSBpbiByZXNvdXJjZSBidWZmZXIuCgoyMDAzLTAxLTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2tub3duX21ldGhvZF9yZWYpOiBVc2UgbWV0aG9kJ3MgY29udGV4dCB0byBmaW5kCgltZXRob2QgdGFibGUgaW5kZXguCgoyMDAzLTAxLTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBjb25zdGFudHMuYyAoc2V0X2NvbnN0YW50X2VudHJ5KTogQWxsb2NhdGVkIGNsZWFyZWQgbWVtb3J5LgoKMjAwMy0wMS0yMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamF2YS10cmVlLmg6IERvbid0IHVzZSBQQVJBTVMuCgkqIHJlc291cmNlLmM6IEFkZCBwcm90b3R5cGVzIGZvciBhbGwgZnVuY3Rpb25zLgoJKHdyaXRlX3Jlc291cmNlX2NvbnN0cnVjdG9yKTogVXNlIGBjb25zdCBjaGFyIConIHRvIGF2b2lkCgl3YXJuaW5nLgoKMjAwMy0wMS0yMiBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGpjZi1wYXJzZS5jIChwcm9jZXNzX3ppcF9kaXIpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoKMjAwMy0wMS0yMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZXhwci5jIChidWlsZF9pbnZva2VpbnRlcmZhY2UpOiBBYm9ydCBpZiBtZXRob2QncyBjb250ZXh0IGlzIG5vdAoJYW4gaW50ZXJmYWNlLgoKMjAwMy0wMS0yMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKElucHV0IGFuZCBvdXRwdXQgZmlsZXMpOiBNZW50aW9uIG5vbi1jbGFzcyBlbnRyaWVzLgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDYWxsCglpbml0X3Jlc291cmNlX3Byb2Nlc3NpbmcuCgkqIGphdmEtdHJlZS5oIChjb21waWxlX3Jlc291cmNlX2RhdGEsIHdyaXRlX3Jlc291cmNlX2NvbnN0cnVjdG9yLAoJY29tcGlsZV9yZXNvdXJjZV9maWxlLCBpbml0X3Jlc291cmNlX3Byb2Nlc3NpbmcpOiBEZWNsYXJlLgoJKiBjb25maWctbGFuZy5pbiAoZ3RmaWxlcyk6IEFkZGVkIHJlc291cmNlLmMuCgkqIE1ha2UtbGFuZy5pbiAoZ3QtamF2YS1yZXNvdXJjZS5oKTogTmV3IHRhcmdldC4KCShKQVZBX09CSlMpOiBBZGRlZCByZXNvdXJjZS5vLgoJKGphdmEvcmVzb3VyY2Uubyk6IE5ldyB0YXJnZXQuCgkqIHJlc291cmNlLmM6IE5ldyBmaWxlLgoJKiBjbGFzcy5jIChjb21waWxlX3Jlc291cmNlX2ZpbGUpOiBNb3ZlZCB0byByZXNvdXJjZS5jLgoJKHJlZ2lzdGVyUmVzb3VyY2VfbGliZnVuYyk6IExpa2V3aXNlLgoJKHV0ZjhfZGVjbF9saXN0KTogTWFyayB3aXRoIEdUWTsgbm93IHN0YXRpYy4KCSogamNmLXBhcnNlLmMgKGNsYXNzaWZ5X3ppcF9maWxlKTogTmV3IGZ1bmN0aW9uLgoJKHBhcnNlX3ppcF9maWxlX2VudHJpZXMpOiBVc2UgaXQ7IGNvbXBpbGUgLnByb3BlcnRpZXMgZmlsZXMuCgkocHJvY2Vzc196aXBfZGlyKTogVXNlIGNsYXNzaWZ5X3ppcF9maWxlIGFuZCBjb21wdXRlX2NsYXNzX25hbWUuCglEb24ndCB3cml0ZSBjbGFzcyBuYW1lIGludG8gemlwIGRpcmVjdG9yeS4KCShqYXZhX3BhcnNlX2ZpbGUpOiBDYWxsIHdyaXRlX3Jlc291cmNlX2NvbnN0cnVjdG9yLgoJKGNvbXB1dGVfY2xhc3NfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCSogamNmLWlvLmMgKHJlYWRfemlwX21lbWJlcik6IFJlaW5kZW50ZWQuCgoyMDAzLTAxLTIxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChzdXBlcnNfYWxsX2NvbXBpbGVkKTogTmV3IGZ1bmN0aW9uLgoJKG1ha2VfY2xhc3NfZGF0YSk6IFVzZSBpdC4KCjIwMDMtMDEtMjEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKG1ldGhvZF9oZWFkZXIpOiBOYXRpdmUgbWV0aG9kIGNhbid0IGJlIHN0cmljdGZwLgoJTm8gbWV0aG9kIGNhbiBiZSB0cmFuc2llbnQgb3Igdm9sYXRpbGUuCgoyMDAzLTAxLTIxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJTWFrZS1sYW5nLmluIChqdnNwZWMuby13YXJuKTogQWRkIC1Xbm8tZXJyb3IuCgoyMDAzLTAxLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY2hlY2staW5pdC5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogY2xhc3MuYzogTGlrZXdpc2UuCgkqIGNvbnN0YW50cy5jOiBMaWtld2lzZS4KCSogZGVjbC5jOiBMaWtld2lzZS4KCSogZXhjZXB0LmM6IExpa2V3aXNlLgoJKiBleHByLmM6IExpa2V3aXNlLgoJKiBqYXZhLWV4Y2VwdC5oOiBMaWtld2lzZS4KCSogamF2YS10cmVlLmg6IExpa2V3aXNlLgoJKiBqYXZhb3AuaDogTGlrZXdpc2UuCgkqIGpjZi1kdW1wLmM6IExpa2V3aXNlLgoJKiBqY2YtaW8uYzogTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jOiBMaWtld2lzZS4KCSogamNmLXdyaXRlLmM6IExpa2V3aXNlLgoJKiBsYW5nLmM6IExpa2V3aXNlLgoJKiBtYW5nbGUuYzogTGlrZXdpc2UuCgkqIHR5cGVjay5jOiBMaWtld2lzZS4KCSogdmVyaWZ5LmM6IExpa2V3aXNlLgoKMjAwMy0wMS0xOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluIChqYXZhL2pjZi13cml0ZS5vKTogRGVwZW5kIG9uICQoVE1fUF9IKS4KCSogamNmLXdyaXRlLmM6IEluY2x1ZGUgInRtX3AuaCIuCgoyMDAzLTAxLTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBqY2YtaW8uYyAoY2FjaGluZ19zdGF0KTogQ2FzdCB0aGUgM3JkIGFyZyBvZiBzY2FuZGlyIHRvIHZvaWQqLgoKMjAwMy0wMS0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoamF2YV9idWlsZF9mdW5jdGlvbl9jYWxsX2V4cHIpOiBSZW5hbWVkIGZyb20KCWJ1aWxkX2Z1bmN0aW9uX2NhbGxfZXhwci4gIEFsbCBjYWxsZXJzIGNoYW5nZWQuCgoJKiBNYWtlLWxhbmcuaW4gKGphdmEvamNmLXBhcnNlLm8pOiBEZXBlbmQgb24gJChUTV9QX0gpLgoJKiBqY2YtcGFyc2UuYzogSW5jbHVkZSB0bV9wLmguCgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBBdm9pZCBzaWduZWQvdW5zaWduZWQKCXdhcm5pbmcuCgoyMDAzLTAxLTE0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBDaGVjayB0aGF0IHN1cGVyIGlzIGNvbXBpbGVkIGJlZm9yZQoJYnVpbGRpbmcgY2xhc3MgcmVmZXJlbmNlIHRvIGl0LgoKMjAwMy0wMS0xNCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBfSnZfTmV3TXVsdGlBcnJheSBpcyBhCgl2YXJhcmdzIGZ1bmN0aW9uIC0tIGNvcnJlY3QuCgoyMDAzLTAxLTE0ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IFRlbXBvcmFyaWx5IGJhY2sgb3V0IHByZXZpb3VzIHBhdGNoLgoKMjAwMy0wMS0xNCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBfSnZfTmV3TXVsdGlBcnJheSBpcyBhCgl2YXJhcmdzIGZ1bmN0aW9uIC0tIGNvcnJlY3QuCgoJKiBwYXJzZS55IChwYXRjaF9hc3NpZ25tZW50KTogQ29weSB0aGUgcmhzIG9mIGFuIGFzc2lnbm1lbnQgaW50byBhCgl0ZW1wb3JhcnkgaWYgdGhlIFJIUyBpcyBhIHJlZmVyZW5jZS4KCjIwMDMtMDEtMTEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2UtbGFuZy5pbiAoa2V5d29yZC5oKTogUGFzcyAiLUwgQU5TSS1DIiB0byBncGVyZi4KCSoga2V5d29yZC5oOiBSZWdlbmVyYXRlZC4KCgkqIEFsbCBGaWxlczogQ29udmVydCB0byBJU08gQyBzdHlsZSBmdW5jdGlvbiBkZWZpbml0aW9ucy4KCjIwMDMtMDEtMDkgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogcGFyc2UueSAoY2hlY2tfcGtnX2NsYXNzX2FjY2Vzcyk6IEFOU0lmeSBkZWZpbml0aW9uLgoKMjAwMy0wMS0wOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVjbC5jLCBwYXJzZS1zY2FuLnksIHBhcnNlLnk6IERvbid0IGNhc3QgcmV0dXJuIHZhbHVlIG9mCgl4bWFsbG9jIGV0IGFsLgoKCSogY2xhc3MuYywgZ2phdmFoLmMsIHBhcnNlLnksIHZlcmlmeS5jOiBEb24ndCB1c2UgUFRSLgoKMjAwMy0wMS0wOSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJTWVyZ2UgZnJvbSBwY2gtYnJhbmNoOgoKCTIwMDItMTItMDIgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhL2dqYXZhaC5vKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCSogZ2phdmFoLmM6IEluY2x1ZGUgZ2djLmguCgoJMjAwMi0wOC0xNiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogTWFrZS1sYW5nLmluIChHQ0pIX09CSlMpOiBBZGQgZ2djLW5vbmUuby4KCShKQ0ZEVU1QX09CSlMpOiBBZGQgZ2djLW5vbmUuby4KCShqYXZhL2pjZi1kdW1wLm8pOiBEZXBlbmQgb24gR0dDX0guCgkqIGpjZi1yZWFkZXIuYyAoamNmX3BhcnNlX2NvbnN0YW50X3Bvb2wpOiBVc2UgZ2djX2FsbG9jIHRvIGFsbG9jYXRlCglDUG9vbCBzdWJzdHJ1Y3R1cmVzLgoJKiBqY2YtcGFyc2UuYyAocHJvY2Vzc196aXBfZGlyKTogVXNlIGdnY19hbGxvYyB0byBhbGxvY2F0ZSBKQ0ZzLgoJKiBqY2YtZHVtcC5jOiBJbmNsdWRlIGdnYy5oLgoKCTIwMDItMDgtMDggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGpjZi5oICh1bmlvbiBjcG9vbF9lbnRyeSk6IE5ldy4KCShzdHJ1Y3QgQ1Bvb2wpOiBVc2UgZ2VuZ3R5cGUgdG8gbWFyay4gIENoYW5nZSBmaWVsZCAnZGF0YScgdG8gYmUKCWFuIGFycmF5IG9mIHVuaW9ucy4KCShzdHJ1Y3QgSkNGKTogVXNlIGdlbmd0eXBlIHRvIG1hcmsuCgkoQ1BPT0xfVUlOVCk6IFVwZGF0ZSBmb3IgbmV3IGNwb29sX2VudHJ5IHR5cGUuCgkoQ1BPT0xfVVNIT1JUMSk6IExpa2V3aXNlLgoJKENQT09MX1VTSE9SVDIpOiBMaWtld2lzZS4KCShDUE9PTF9GSU5JU0gpOiBVc2UgR0MgdG8gZnJlZSBjcG9vbCBzdWJmaWVsZHMuCgkqIHBhcnNlLmggKHN0cnVjdCBwYXJzZXJfY3R4dCk6IE1hcmsgZmllbGQgY3VycmVudF9qY2YuCgkqIGxleC5jIChqYXZhX2luaXRfbGV4KTogVXNlIEdDIHRvIGFsbG9jYXRlIHN0cnVjdCBKQ0YuCgkqIGpjZi1wYXJzZS5jIChIQU5ETEVfQ09OU1RBTlRfVXRmOCk6IFVwZGF0ZSBmb3IgbmV3IGNwb29sX2VudHJ5IHR5cGUuCgkobWFpbl9qY2YpOiBVc2UgZ2VuZ3R5cGUgdG8gbWFyay4KCShnZ2NfbWFya19qY2YpOiBEZWxldGUuCgkoZ2V0X2NvbnN0YW50KTogVXBkYXRlIGZvciBuZXcgY3Bvb2xfZW50cnkgdHlwZS4KCShnaXZlX25hbWVfdG9fY2xhc3MpOiBMaWtld2lzZS4KCShnZXRfY2xhc3NfY29uc3RhbnQpOiBMaWtld2lzZS4KCShpbml0X291dGdvaW5nX2Nwb29sKTogVXNlIEdHQyB0byBhbGxvY2F0ZSBzdHJ1Y3QgQ1Bvb2wuCgkoamF2YV9wYXJzZV9maWxlKTogVXNlIEdHQyB0byBhbGxvY2F0ZSBzdHJ1Y3QgSkNGLgoJKGluaXRfamNmX3BhcnNlKTogRG9uJ3QgY2FsbCBnZ2NfYWRkX3Jvb3QuCgkqIGpjZi1yZWFkZXIuYyAoamNmX3BhcnNlX2NvbnN0YW50X3Bvb2wpOiBVcGRhdGUgZm9yIG5ldwoJY3Bvb2xfZW50cnkgdHlwZS4KCSogamF2YS10cmVlLmggKGN1cnJlbnRfamNmKTogVXNlIGdlbmd0eXBlIHRvIG1hcmsuCgkoQ1BPT0xfVVRGKTogVXBkYXRlIGZvciBuZXcgY3Bvb2xfZW50cnkgdHlwZS4KCShvdXRnb2luZ19jcG9vbCk6IFVzZSBnZW5ndHlwZSB0byBtYXJrLgoJKHN0cnVjdCBsYW5nX3R5cGUpOiBHQyBzdHJ1Y3QgSkNGIGFuZCBzdHJ1Y3QgQ1Bvb2wuCgkqIGNvbmZpZy1sYW5nLmluIChndGZpbGVzKTogQWRkIGpjZi5oLgoJKiBjb25zdGFudHMuYyAoZmluZF90cmVlX2NvbnN0YW50KTogTmV3LgoJKHNldF9jb25zdGFudF9lbnRyeSk6IEFsbG9jYXRlIGNwb29sIHN1YmZpZWxkcyB1c2luZyBHR0MuICBVcGRhdGUKCWZvciBuZXcgY3Bvb2xfZW50cnkgdHlwZS4KCShmaW5kX2NvbnN0YW50MSk6IFVwZGF0ZSBmb3IgbmV3IGNwb29sX2VudHJ5IHR5cGUuCgkoZmluZF9jb25zdGFudDIpOiBMaWtld2lzZS4KCShmaW5kX3V0ZjhfY29uc3RhbnQpOiBVc2UgZmluZF90cmVlX2NvbnN0YW50LgoJKGZpbmRfY2xhc3Nfb3Jfc3RyaW5nX2NvbnN0YW50KTogUmVtb3ZlIHVubmVjZXNzYXJ5IGNhc3QgdG8gandvcmQuCglVcGRhdGUgZm9yIG5ldyBjcG9vbF9lbnRyeSB0eXBlLgoJKGNvdW50X2NvbnN0YW50X3Bvb2xfYnl0ZXMpOiBVcGRhdGUgZm9yIG5ldyBjcG9vbF9lbnRyeSB0eXBlLgoJKHdyaXRlX2NvbnN0YW50X3Bvb2wpOiBMaWtld2lzZS4KCShhbGxvY19uYW1lX2NvbnN0YW50KTogVXNlIGZpbmRfdHJlZV9jb25zdGFudC4KCShidWlsZF9jb25zdGFudHNfY29uc3RydWN0b3IpOiBVcGRhdGUgZm9yIG5ldyBjcG9vbF9lbnRyeSB0eXBlLgoKCTIwMDItMDgtMDggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKG1hcmtfcGFyc2VyX2N0eHQpOiBEZWxldGUuCgkoZ29hbCk6IERvbid0IHVzZSBnZ2NfYWRkX3Jvb3QuCgkoY3JlYXRlX25ld19wYXJzZXJfY29udGV4dCk6IFVzZSBHQyB0byBhbGxvY2F0ZSBzdHJ1Y3QgcGFyc2VyX2N0eHQuCgkoamF2YV9wb3BfcGFyc2VyX2NvbnRleHQpOiBMZXQgR0MgZnJlZSBwYXJzZXJfY3R4dC4KCShqYXZhX3BhcnNlcl9jb250ZXh0X3Jlc3VtZSk6IExpa2V3aXNlLgoJKiBwYXJzZS5oIChzdHJ1Y3QgcGFyc2VyX2N0eHQpOiBVc2UgZ2VuZ3R5cGUgdG8gbWFyay4KCShjdHhwKTogTGlrZXdpc2UuCgkoY3R4cF9mb3JfZ2VuZXJhdGlvbik6IExpa2V3aXNlLgoJKiBsZXguaCAoc3RydWN0IGphdmFfbGNfcyk6IE1hcmsgZm9yIGdlbmd0eXBlLgoJKGphdmFfbGV4ZXIpOiBSZWFycmFuZ2UgZm9yIGdlbmd0eXBlLgoJKiBjb25maWctbGFuZy5pbiAoZ3RmaWxlcyk6IEFkZCBsZXguaCwgcGFyc2UuaC4KCjIwMDMtMDEtMDkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIEFsbCBGaWxlczogUmVtb3ZlIFBBUkFNUyBtYWNyby4KCgkqIGV4cHIuYywgZ2phdmFoLmMsIGphdmFvcC5oLCBqY2YtZHVtcC5jLCBqY2YtaW8uYywgamNmLXJlYWRlci5jLAoJamNmLXdyaXRlLmMsIGpjZi5oLCBqdi1zY2FuLmM6IERvbid0IHJlbHkgb24gdGhlIGBERUZVTicsIGBBTkQnIG9yCglgX19TVERDX18nIG1hY3Jvcy4KCgkqIGp2LXNjYW4uYywgcGFyc2UueTogUmVtb3ZlIFZQQVJBTVMsIFZBX09QRU4sIFZBX0ZJWEVEQVJHIGFuZAoJVkFfQ0xPU0UuCgoyMDAzLTAxLTA5ICBDaHJpc3RpYW4gQ29ybmVsc3NlbiAgPGNjb3JuQGNzLnR1LWJlcmxpbi5kZT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS5pbnN0YWxsLWNvbW1vbiwgamF2YS51bmluc3RhbGwsCglqYXZhLmluc3RhbGwtaW5mbywgamF2YS5pbnN0YWxsLW1hbik6IFByZXBlbmQgJChERVNURElSKQoJdG8gZGVzdGluYXRpb24gcGF0aHMgaW4gYWxsICh1bilpbnN0YWxsYXRpb24gY29tbWFuZHMuCgkoamF2YS5pbnN0YWxsLWNvbW1vbik6IFJld3JpdGUgJChMTikgY29tbWFuZCB0byBzdXBwb3J0CglERVNURElSIHdpdGggImxuIiBhcyB3ZWxsIGFzIHdpdGggImxuIC1zIi4KCjIwMDMtMDEtMDggIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogamF2YS10cmVlLmg6IFByb3RlY3QgYWdhaW5zdCBtdWx0aXBsZSBpbmNsdXNpb24uCgoyMDAzLTAxLTA3ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChhZGRfYXNzdW1lX2NvbXBpbGVkKTogRG9uJ3QgYWRqdXN0IHBhcmVudCBpZiB3ZSdyZQoJYWxyZWFkeSBhdCB0aGUgcm9vdCBvZiB0cmVlLgoKMjAwMy0wMS0wNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGFuZy5jIChkdW1wX2NvbXBvdW5kX2V4cHIpOiBQcm90b3R5cGUuCgoyMDAzLTAxLTAzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRml4IGZvciBQUiBqYXZhLzg3MTI6CgkqIGV4cHIuYyAoYnVpbGRfaW5zdGFuY2VvZik6IEJ1aWxkIGFuIE5FX0VYUFIsIG5vdCBhIENPTkRfRVhQUiwKCXdoZW4gc2ltcGx5IGNoZWNraW5nIGFnYWluc3QgYG51bGwnLgoKMjAwMy0wMS0wMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKFN0YW5kYXJkIFByb3BlcnRpZXMpOiBEb2N1bWVudCBodHRwLnByb3h5SG9zdCBhbmQKCWh0dHAucHJveHlQb3J0LgoKCSogZ2NqLnRleGkgKEdOVSBDbGFzc3BhdGggUHJvcGVydGllcyk6IERvY3VtZW50IG5ldyBwcm9wZXJ0aWVzLgoKMjAwMy0wMS0wMiAgU3RldmVuIEJvc3NjaGVyIDxzLmJvc3NjaGVyQHN0dWRlbnQudHVkZWxmdC5ubD4KCgkqIGphdmEvamNmLXJlYWRlci5jLCBqYXZhL2p2Z2VubWFpbi5jLCBqYXZhL2tleXdvcmQuZ3BlcmYsCglqYXZhL2xhbmctb3B0aW9ucy5oLCBqYXZhL21hbmdsZS5jLCBqYXZhL21hbmdsZV9uYW1lLmMsCglqYXZhL3hyZWYuYywgamF2YS96ZXh0cmFjdC5jLGphdmEvemlwZmlsZS5oOiBGaXggY29weXJpZ2h0IHllYXJzLgoKMjAwMy0wMS0wMSAgU3RldmVuIEJvc3NjaGVyICA8cy5ib3NzY2hlckBzdHVkZW50LnR1ZGVsZnQubmw+CgoJKiBNYWtlLWxhbmcuaW4sIGJvZWhtLmMsIGJ1ZmZlci5jLAoJICBidWZmZXIuaCwgYnVpbHRpbnMuYywgY2xhc3MuYywKCSAgY29uZmlnLWxhbmcuaW4sIGNvbnN0YW50cy5jLAoJICBjb252ZXJ0LmgsIGRlY2wuYywgZXhjZXB0LmMsCgkgIGV4cHIuYywgamF2YS1leGNlcHQuaCwKCSAgamF2YS10cmVlLmgsIGphdmFvcC5kZWYsCgkgIGpjZi1wYXJzZS5jLCBqY2Ytd3JpdGUuYywKCSAganYtc2Nhbi5jLCBqdmdlbm1haW4uYywKCSAganZzcGVjLmMsIGtleXdvcmQuZ3BlcmYsCgkgIGtleXdvcmQuaCwgbGFuZy1vcHRpb25zLmgsCgkgIGxhbmctc3BlY3MuaCwgbGFuZy5jLCBsZXguYywKCSAgbGV4LmgsIG1hbmdsZS5jLCBtYW5nbGVfbmFtZS5jLAoJICBwYXJzZS1zY2FuLnksIHBhcnNlLmgsIHBhcnNlLnksCgkgIHR5cGVjay5jLCB2ZXJpZnkuYywgeHJlZi5jLAoJICB4cmVmLmg6IFJlcGxhY2UgIkdOVSBDQyIgd2l0aAoJICAiR0NDIiBpbiB0aGUgY29weXJpZ2h0IGhlYWRlci4KCgkqIGNoZWNrLWluaXQuYywgZ2phdmFoLmMsIGphdmFvcC5oLAoJICBqY2YtZGVwZW5kLmMsIGpjZi1kdW1wLmMsIGpjZi1pby5jLAoJICBqY2YtcGF0aC5jLCBqY2YtcmVhZGVyLmMsIGpjZi5oLAoJICB6ZXh0cmFjdC5jLCB6aXBmaWxlLmg6IFRoZXNlIGZpbGVzIGFyZQoJICAicGFydCBvZiBHQ0MiLiBBbHNvIHNheSAiR0NDIiBub3QgIkdOVSBDQyIuCgoyMDAyLTEyLTMwICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogUHJvdGVjdCBhZ2FpbnN0IHRleGkycG9kL3BvZDJtYW4gZmFpbGluZy4KCjIwMDItMTItMjggIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogZ2NqLnRleGk6IFVzZSBAY29weWluZy4KCjIwMDItMTItMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnamF2YWguYyAocHJpbnRfbmFtZV9mb3Jfc3R1Yl9vcl9qbmkpOiBBZGp1c3QgY2FsbCB0bwoJcHJpbnRfY3h4X2NsYXNzbmFtZS4KCShwcmludF9jeHhfY2xhc3NuYW1lKTogQWRkIGFkZF9zY29wZSBwYXJhbWV0ZXIuCgkocHJpbnRfY2xhc3NfZGVjbHMpOiBEbyBub3QgZW1pdCBhIHNlbWljb2xvbiBhZnRlciB0aGUgZXh0ZXJuCgkiSmF2YSIgYmxvY2suCgkocHJvY2Vzc19maWxlKTogQWRqdXN0IGNhbGxzIHRvIHByaW50X2N4eF9jbGFzc25hbWUuCgoyMDAyLTEyLTIzICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGdjai50ZXhpOiBJbmNsdWRlIENvdmVyIFRleHRzIGluIG1hbiBwYWdlLgoKMjAwMi0xMi0yMyAgSmVmZiBTdHVybSAgPGpzdHVybUBvbmUtcG9pbnQuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfc3RhdGljX2ZpZWxkX3JlZik6IENoZWNrIEZJRUxEX0ZJTkFMLgoKCSogY29uc3RhbnRzLmMgKGFsbG9jX2NsYXNzX2NvbnN0YW50KTogVXNlIFRZUEVfQ1BPT0xfREFUQV9SRUYKCWluc3RlYWQgb2YgY3VycmVudF9jb25zdGFudF9wb29sX2RhdGFfcmVmLgoJKiBqYXZhLXRyZWUuaCAoY3VycmVudF9jb25zdGFudF9wb29sX2RhdGFfcmVmKTogVW5kZWZpbmUuCgkoSlRJX0NVUlJFTlRfQ09OU1RBTlRfUE9PTF9EQVRBX1JFRik6IFJlbW92ZS4KCSogamNmLXBhcnNlLmMgKGluaXRfb3V0Z29pbmdfY3Bvb2wpOiBEb24ndCBpbml0aWFsaXplCgljdXJyZW50X2NvbnN0YW50X3Bvb2xfZGF0YV9yZWYuCgoJKiBleGNlcHQuYyAocHJlcGFyZV9laF90YWJsZV90eXBlICk6IFVzZSBERUNMX05BTUUgb2YgY2xhc3MgdHlwZSwKCW5vdCBidWlsZF9pbnRlcm5hbF9jbGFzc19uYW1lLgoKCSogcGFyc2UueSAocGF0Y2hfaW5jb21wbGV0ZV9jbGFzc19yZWYpOiBBbHdheXMgZW1pdCBgY2xhc3MkJyBtZXRob2QuCglVc2UgaXQgd2hlbiBjbGFzcyByZWYgaXNuJ3QgY2VydGFpbiB0byBiZSBjb21waWxlZC4KCjIwMDItMTItMjMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogZ2NqLnRleGk6IEluY2x1ZGUgZ2NjLWNvbW1vbi50ZXhpLgoJKiBNYWtlLWxhbmcuaW4gKCQoc3JjZGlyKS9qYXZhL2djai5pbmZvLCBqYXZhL2djai5kdmkpOiBEZXBlbmQgb24KCSQoc3JjZGlyKS9kb2MvaW5jbHVkZS9nY2MtY29tbW9uLnRleGkuCgoyMDAyLTEyLTIyICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpIChMaW1pdGF0aW9ucyk6IEFkZCBub3RlIGFib3V0IG9yZy54bWwuc2F4IGFuZAoJb3JnLnczYy5kb20uCgoyMDAyLTEyLTIwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpIFtTV0lUQ0hfRVhQUl06IEhhbmRsZSBjYXNlCgl3aGVyZSBtaW5pbXVtIGNhc2UgdmFsdWUgaXMgSW50ZWdlci5NSU5fVkFMVUUuCglGaXhlcyBQUiBqYXZhLzg5NTUuCgoyMDAyLTEyLTE4ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX2ludm9rZSk6IEZvcmNlIGV2YWx1YXRpb24gb3JkZXIgd2hlbiBgY2hlY2snIGlzCglzZXQuICBGb3IgUFIgbGliZ2NqLzg5NDUuCgoyMDAyLTEyLTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ2NqLnRleGk6IENoYW5nZSB2ZXJzaW9uIG51bWJlciB0byAzLjQuCgoyMDAyLTEyLTA1ICBSYW5qaXQgTWF0aGV3IDxybWF0aGV3QGhvdG1haWwuY29tPgoJQW5kcmV3IEhhbGV5IDxhcGhAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHNvdXJjZV9lbmRfamF2YV9tZXRob2QpOiBSZW1vdmUgY3VzdG9tIGVuY29kaW5nIG9mIGxpbmUKCW51bWJlcnMgZm9yIGEgZnVuY3Rpb24gZGVjbCBiZWZvcmUgcGFzc2luZyBpdCB0byB0aGUgYmFjayBlbmQuCgoyMDAyLTEyLTAzICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6IE5ldyBmaWVsZCwgImNoYWluIi4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgoyMDAyLTEyLTAyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRm9yIFBSIGphdmEvODc0MDoKCSogcGFyc2UueSAoZG9fcmVzb2x2ZV9jbGFzcyk6IEhhbmRsZSBxdWFsaWZpZWQgbmFtZSB2aWEKCXJlY3Vyc2lvbi4KCjIwMDItMTEtMzAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBib2VobS5jLCBidWZmZXIuYywgYnVpbHRpbnMuYywgY2hlY2staW5pdC5jLCBjbGFzcy5jLAoJY29uc3RhbnRzLmMsIGRlY2wuYywgZXhjZXB0LmMsIGV4cHIuYywgZ2phdmFoLmMsIGpjZi1kZXBlbmQuYywKCWpjZi1kdW1wLmMsIGpjZi1pby5jLCBqY2YtcGFyc2UuYywgamNmLXBhdGguYywgamNmLXdyaXRlLmMsCglqdi1zY2FuLmMsIGp2Z2VubWFpbi5jLCBqdnNwZWMuYywgbGFuZy5jLCBtYW5nbGUuYywgbWFuZ2xlX25hbWUuYywKCXBhcnNlLXNjYW4ueSwgcGFyc2UueSwgdHlwZWNrLmMsIHZlcmlmeS5jLCB4cmVmLmMsIHpleHRyYWN0LmM6CglJbmNsdWRlIGNvcmV0eXBlcy5oIGFuZCB0bS5oLgoJKiBNYWtlLWxhbmcuaW46IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoyMDAyLTExLTI3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBVc2UgYExMJyBvbiA2NC1iaXQgY29uc3RhbnQuCgoyMDAyLTExLTI1ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIGpjZi1yZWFkZXIuYzogRG9uJ3QgZXhwYW5kIEpDRl9yZWFkdTQgaW5zaWRlIHRoZQoJZXhwYW5zaW9uIG9mIEpDRl9TS0lQLgoKMjAwMi0xMS0yNSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiBqY2YtcmVhZGVyLmM6IERvbid0IGV4cGFuZCBKQ0ZfcmVhZHU0IGluc2lkZSB0aGUKCWV4cGFuc2lvbiBvZiBKQ0ZfU0tJUC4KCjIwMDItMTEtMjIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX2Jpbm9wKTogQ2FzdCByaWdodCBoYW5kIHNpZGUgb2Ygc2hpZnQgZXhwcmVzc2lvbgoJdG8gYGludCcuICBGaXhlcyBQUiBqYXZhLzg2NzYuCgoyMDAyLTExLTIyICBSYW5qaXQgTWF0aGV3IDxybWF0aGV3QGhvdG1haWwuY29tPgoJICAgIEFuZHJldyBIYWxleSA8YXBoQHJlZGhhdC5jb20+CgoJKiBnY2MvamF2YS9qY2Ytd3JpdGUuYyAod3JpdGVfY2xhc3NmaWxlKTogUmVtb3ZlIHRhcmdldAoJY2xhc3MgZmlsZSwgaWYgaXQgZXhpc3RzLCBiZWZvcmUgcmVuYW1pbmcgdGhlIHRlbXBvcmFyeQoJY2xhc3MgZmlsZSB0byBpdC4KCjIwMDItMTEtMTkgIEphc29uIFRob3JwZSAgPHRob3JwZWpAd2FzYWJpc3lzdGVtcy5jb20+CgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19zcGVjX2Z1bmN0aW9ucyk6IE5ldy4KCjIwMDItMTEtMTggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGaXggZm9yIFBSIGphdmEvNzkxMjoKCSogZXhwci5jIChjYW5fd2lkZW5fcmVmZXJlbmNlX3RvKTogQWxsb3cgY2FzdCBvZiBhcnJheSB0bwoJQ2xvbmVhYmxlIG9yIFNlcmlhbGl6YWJsZS4KCSogamF2YS10cmVlLmggKGphdmFfbGFuZ19jbG9uZWFibGVfaWRlbnRpZmllcl9ub2RlKTogRGVjbGFyZS4KCShqYXZhX2lvX3NlcmlhbGl6YWJsZV9pZGVudGlmaWVyX25vZGUpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoamF2YV9sYW5nX2Nsb25lYWJsZSwgamF2YV9pb19zZXJpYWxpemFibGUpOiBSZW1vdmVkLgoJKHZhbGlkX3JlZl9hc3NpZ25jb252X2Nhc3RfcCk6IFVzZSBuZXcgaWRlbnRpZmllciBub2Rlcy4KCSogbGV4LmMgKGphdmFfaW5pdF9sZXgpOiBEb24ndCBpbml0aWFsaXplIGphdmFfbGFuZ19jbG9uZWFibGUgYW5kCglqYXZhX2lvX3NlcmlhbGl6YWJsZS4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZQoJamF2YV9sYW5nX2Nsb25lYWJsZV9pZGVudGlmaWVyX25vZGUgYW5kCglqYXZhX2lvX3NlcmlhbGl6YWJsZV9pZGVudGlmaWVyX25vZGUuCgkoamF2YV9sYW5nX2Nsb25lYWJsZV9pZGVudGlmaWVyX25vZGUpOiBOZXcgZ2xvYmFsLgoJKGphdmFfaW9fc2VyaWFsaXphYmxlX2lkZW50aWZpZXJfbm9kZSk6IExpa2V3aXNlLgoKMjAwMi0xMS0xNCAgSmVucy1NaWNoYWVsIEhvZmZtYW5uICA8amVuc21oQGdteC5kZT4KCgkqIGJ1ZmZlci5jOiBSZW1vdmUgdW5uZWNlc3NhcnkgY2FzdHMuCgkqIGNoZWNrLWluaXQuYzogTGlrZXdpc2UuCgkqIGNsYXNzLmM6IExpa2V3aXNlLgoJKiBjb25zdGFudHMuYzogTGlrZXdpc2UuCgkqIGRlY2wuYzogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jOiBMaWtld2lzZS4KCSogZ2phdmFoLmM6IExpa2V3aXNlLgoJKiBqY2YtaW8uYzogTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jOiBMaWtld2lzZS4KCSogamNmLXBhdGguYzogTGlrZXdpc2UuCgkqIGp2c3BlYy5jOiBMaWtld2lzZS4KCSogbGFuZy5jOiBMaWtld2lzZS4KCSogbGV4LmM6IExpa2V3aXNlLgoJKiB2ZXJpZnkuYzogTGlrZXdpc2UuCgoyMDAyLTExLTA2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnamF2YWguYyAocHJpbnRfc3R1Yl9vcl9qbmkpOiBJbmNsdWRlIEpOSUVYUE9SVCBhbmQgSk5JQ0FMTCBpbgoJYSBKTkkgaGVhZGVyLgoKMjAwMi0xMS0wNSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCUZpeCBmb3IgUFIgamF2YS82Mzg4LgoJKiBsZXguaCAoSkFWQV9JTlRFR1JBTF9SQU5HRV9FUlJPUik6IFdyYXAgaW4gZG8uLi53aGlsZS4KCSogamF2YS10cmVlLmggKGVudW0gamF2YV90cmVlX2luZGV4KTogTmV3IHZhbHVlcwoJSlRJX0RFQ0lNQUxfSU5UX01BWF9OT0RFLCBKVElfREVDSU1BTF9MT05HX01BWF9OT0RFLgoJKGRlY2ltYWxfaW50X21heCwgZGVjaW1hbF9sb25nX21heCk6IE5ldyBkZWZpbmVzLgoJKiBsZXguYyAoeXlsZXgpOiBSZXdyb3RlIHJhbmdlIGNoZWNraW5nLiAgU2lnbiBleHRlbmQgbGl0ZXJhbHMuCgkoZXJyb3JfaWZfbnVtZXJpY19vdmVyZmxvdyk6IFJld3JvdGUgcmFuZ2UgY2hlY2tpbmcuCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgZGVjaW1hbF9pbnRfbWF4LAoJZGVjaW1hbF9sb25nX21heC4KCjIwMDItMTEtMDIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGphdmEtdHJlZS5oOiBNb3ZlIEpWX1NUQVRFX0VSUk9SIGJlZm9yZSBKVl9TVEFURV9ET05FLgoKCSogY2xhc3MuYyAobWFrZV9tZXRob2RfdmFsdWUpOiBQdXQgY2xhc3MgbmFtZSwgbm90IHNpZ25hdHVyZSwgaW50bwoJYHRocm93cycgZmllbGQuICBGb3IgUFIgamF2YS84NDE1LgoKMjAwMi0xMC0yNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKEludm9raW5nIGdpaik6IERvY3VtZW50IC0tc2hvd3ZlcnNpb24uCgkoU3RhbmRhcmQgUHJvcGVydGllcyk6IGphdmEubGlicmFyeS5wYXRoIG5vdyBzZXQuCgoyMDAyLTEwLTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnamF2YWguYyAoZGVjb2RlX3NpZ25hdHVyZV9waWVjZSk6IEluIEpOSSBtb2RlLCBwcmludAoJYGpvYmplY3RBcnJheScgd2hlbiBhcnJheSBkZXB0aCBpcyBub256ZXJvLgoJRml4ZXMgUFIgamF2YS84Mjk2LgoKMjAwMi0xMC0xNSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9pbnZva2UpOiBDYWxsIGZvcmNlX2V2YWx1YXRpb25fb3JkZXIgb24gYSBzdGF0aWMKCWFyZyBsaXN0LgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IENhbGwgZm9yY2VfZXZhbHVhdGlvbl9vcmRlcgoJb24gYSBhcmcgbGlzdCB0aGF0IGlzIHBhcnQgb2YgYSBRdWFsaWZpZWQgRXhwcmVzc2lvbiBOYW1lLgoKCSogbGFuZy5jIChkdW1wX2NvbXBvdW5kX2V4cHIpOiBOZXcuCgkoamF2YV9kdW1wX3RyZWUpOiBOZXcuCgoyMDAyLTEwLTIwICBSYW5qaXQgTWF0aGV3IDxybWF0aGV3QGhvdG1haWwuY29tPgoKCSogZ2NqLnRleGk6IEFkZGVkIGl0ZW0gZGVzY3JpYmluZyB0aGUgR0NKIHJ1bnRpbWUgcHJvcGVydHkKCSJnbnUuZ2NqLnByb2duYW1lIi4KCjIwMDItMTAtMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NvbnN0YW50KTogRml4IHR5cGUgd2FybmluZy4KCjIwMDItMTAtMTUgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogamF2YS10cmVlLmggKGphdmFfaW5saW5pbmdfbWVyZ2Vfc3RhdGljX2luaXRpYWxpemVycyk6IERlY2xhcmUuCgkoamF2YV9pbmxpbmluZ19tYXBfc3RhdGljX2luaXRpYWxpemVycyk6IERlY2xhcmUuCgoyMDAyLTEwLTE0ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUtaW5saW5lLmMgKHJlbWFwX2Jsb2NrKTogQWxsIGxvY2FsIGNsYXNzIGluaXRpYWxpemF0aW9uCglmbGFncyBnbyBpbiB0aGUgb3V0ZXJtb3N0IHNjb3BlLgoJKGV4cGFuZF9jYWxsX2lubGluZSk6IENhbGwgamF2YV9pbmxpbmluZ19tYXBfc3RhdGljX2luaXRpYWxpemVycy4KCShleHBhbmRfY2FsbF9pbmxpbmUpOiBDYWxsIGphdmFfaW5saW5pbmdfbWVyZ2Vfc3RhdGljX2luaXRpYWxpemVycy4KCSogamF2YS9sYW5nLmMgKG1lcmdlX2luaXRfdGVzdF9pbml0aWFsaXphdGlvbik6IE5ldy4KCShqYXZhX2lubGluaW5nX21lcmdlX3N0YXRpY19pbml0aWFsaXplcnMpOiBOZXcuCgkoaW5saW5lX2luaXRfdGVzdF9pbml0aWFsaXphdGlvbik6IE5ldy4KCShqYXZhX2lubGluaW5nX21hcF9zdGF0aWNfaW5pdGlhbGl6ZXJzKTogTmV3LgoKMjAwMi0xMC0xMSAgTWFyayBXaWVsYWFyZCAgPG1hcmtAa2xvbXAub3JnPgoKCSogZ2NqLnRleGkgKENvbXBhdGliaWxpdHkpOiBBZGQgTGltaXRhdGlvbnMgYW5kIEV4dGVuc2lvbnMgc2VjdGlvbi4KCjIwMDItMTAtMTAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNsYXNzLmMgKEpBVkFfVFJFRUhBU0hIQVNIX0gpOiBVc2UgaHRhYl9oYXNoX3BvaW50ZXIuCgoyMDAyLTEwLTA5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBwYXJzZS55IChtZXJnZV9zdHJpbmdfY3N0ZSk6IEFkZCBwYXJlbnRoZXNlcyBhcm91bmQgJiB3aXRoaW4gfC4KCjIwMDItMTAtMDggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHZhcmlhYmxlX2RlY2xhcmF0b3JfaWQpOiBTaW1wbGlmeSBlcnJvciBwYXRoIGZvcgoJYXJyYXkgZGVjbGFyYXRvciBlcnJvci4gIEZvciBQUiBqYXZhLzgwMDMuCgoyMDAyLTEwLTA4ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ2phdmFoLmMsIGpjZi1kdW1wLmMsIGp2LXNjYW4uYzogR2xvYmFsbHkgcmVwbGFjZSBHQ0NCVUdVUkwgd2l0aAoJYnVnX3JlcG9ydF91cmwuCgoyMDAyLTEwLTA4ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGF0dGFjaF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb25fZmxhZ3MpOiBDaGVjayBmb3IKCWVycm9yX21hcmtfbm9kZS4KCjIwMDItMTAtMDcgIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgoKCSogcGFyc2UueSAobWVyZ2Vfc3RyaW5nX2NzdGUpOiBGaXggYnVnIGluIHN0cmluZyBjb25jYXRlbmF0aW9uLgoKMjAwMi0xMC0wMyAgTWljaGFlbCBLb2NoICA8a29ucXVlcm9yQGdteC5kZT4KCgkqIGdjai50ZXhpIChTdGFuZGFyZCBwcm9wZXJ0aWVzKToKCUNoYW5nZSBkZWZhdWx0IG9mIGphdmEuYXd0LnRvb2xraXQgdG8gZ251LmF3dC5ndGsuR3RrVG9vbGtpdC4KCjIwMDItMTAtMDIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG9wdGltaXphdGlvbi82NjI3CgkqIGxhbmcuYyAoamF2YV9pbml0KTogSWYgc3RvcmluZyB0aGUgdmJpdCBpbiBmdW5jdGlvbgoJcG9pbnRlcnMsIGVuc3VyZSB0aGF0IGZvcmNlX2FsaWduX2Z1bmN0aW9uc19sb2cgaXMgYXRsZWFzdAoJb25lIHRvIGFpZCBjb21wYXRhYmlsaXR5IHdpdGggZysrIHZ0YWJsZXMuCgoyMDAyLTEwLTAxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogamNmLWR1bXAuYyAocHJpbnRfY29uc3RhbnQsIGNhc2UgQ09OU1RBTlRfZmxvYXQpOiBEb24ndCBmYWxsCglmb3VsIG9mIHR5cGUtYmFzZWQgYWxpYXNpbmcuCgoyMDAyLTA5LTMwICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpIChJbnZva2luZyBqdi1zY2FuKTogRml4IHRleGluZm8uCgoyMDAyLTA5LTI4ICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpIChJbnZva2luZyBqdi1zY2FuKTogQWRkIC0tbm8tYXNzZXJ0IGRvY3VtZW50YXRpb24uCgkoQ29kZSBHZW5lcmF0aW9uKTogQWRkIC1mbm8tYXNzZXJ0IGRvY3VtZW50YXRpb24uCgkqIGp2LXNjYW4uYyAoZmxhZ19hc3NlcnQpOiBOZXcgZ2xvYmFsLgoJKG9wdGlvbnMpOiBBZGQgYXNzZXJ0IG9wdGlvbi4KCShoZWxwKTogQWRkIC0tbm8tYXNzZXJ0IGRvY3VtZW50YXRpb24uCgkqIHBhcnNlLXNjYW4ueSAoZmxhZ19hc3NlcnQpOiBOZXcgZ2xvYmFsLgoJKiBsYW5nLmMgKGxhbmdfZl9vcHRpb25zKTogQWRkIC1mYXNzZXJ0Ly1mbm8tYXNzZXJ0IHN1cHBvcnQuCgkoZmxhZ19hc3NlcnQpOiBOZXcgZ2xvYmFsLgoJKiBqYXZhLXRyZWUuaCAoZmxhZ19hc3NlcnQpOiBOZXcgZ2xvYmFsLgoJKiBsZXguYyAoamF2YV9sZXgpOiBPYmV5IGZsYWdfYXNzZXJ0LgoJKiBqdnNwZWMuYyAoanZnZW5tYWluX3NwZWMpOiBTdHJpcCAtZmFzc2VydC8tZm5vLWFzc2VydCB3aGVuCgljYWxsaW5nIGNjMS4KCjIwMDItMDktMjYgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogZXhwci5jIChidWlsZF9qYXZhX2FycmF5X2xlbmd0aF9hY2Nlc3MpOiBDaGVjayBmb3IgbnVsbCBwb2ludGVyLgoJKiBleHByLmMgKGV4cGFuZF9qYXZhX2FycmF5bG9hZCk6IExpa2V3aXNlLgoKMjAwMi0wOS0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGpjZi1wYXJzZS5jIChnZXRfY29uc3RhbnQpOiBEZWNvZGUgZnJvbSBJRUVFIG5vIG1hdHRlcgoJd2hhdCB0aGUgdGFyZ2V0IGZvcm1hdC4KCjIwMDItMDktMjAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBDaGFuZ2VMb2c6IEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCSogY2xhc3MuYzogTGlrZXdpc2UuCgkqIGRlY2wuYzogTGlrZXdpc2UuCgkqIGV4cHIuYzogTGlrZXdpc2UuCgkqIGdqYXZhaC5jOiBMaWtld2lzZS4KCSogamF2YS10cmVlLmg6IExpa2V3aXNlLgoJKiBqY2YtZHVtcC5jOiBMaWtld2lzZS4KCSogamNmLXBhcnNlLmM6IExpa2V3aXNlLgoJKiBqdnNwZWMuYzogTGlrZXdpc2UuCgkqIGxhbmcuYzogTGlrZXdpc2UuCgkqIG1hbmdsZS5jOiBMaWtld2lzZS4KCSogcGFyc2UueTogTGlrZXdpc2UuCgoyMDAyLTA5LTE3ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBsZXguYyAoamF2YV9yZWFkX3VuaWNvZGVfY29sbGFwc2luZ190ZXJtaW5hdG9ycyk6IEhhbmRsZSBjYXNlCgl3aGVyZSBcciBhcHBlYXJzIGF0IEVPRi4gIEZpeGVzIFBSIGphdmEvNzk1MC4KCjIwMDItMDktMTYgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoKMjAwMi0wOS0xNiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBqYXZhLXRyZWUuaCAodW5pb24gbGFuZ190cmVlX25vZGUpOiBBZGQgY2hhaW5fbmV4dCBvcHRpb24uCgoyMDAyLTA5LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogamNmLXBhcnNlLmMgKGdldF9jb25zdGFudCk6IFJ1bnRpbWUgY2hlY2sgZm9yIElFRUUgZm9ybWF0OwoJdXNlIG5ldyByZWFsLmggaW50ZXJmYWNlLgoJKiBqY2Ytd3JpdGUuYyAoZmluZF9jb25zdGFudF9pbmRleCk6IFVzZSBuZXcgcmVhbC5oIGludGVyZmFjZS4KCSogbGV4LmMgKElTX1pFUk8pOiBVc2UgUkVBTF9WQUxVRVNfRVFVQUwuCgoyMDAyLTA5LTE1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogbGFuZy5jOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgoyMDAyLTA5LTExICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIHBhcnNlLnkgKGZvbGRfY29uc3RhbnRfZm9yX2luaXQpOiAgSWYgYSBWQVJfREVDTCwgY29udmVydCBudW1lcmljYWwKCWNvbnN0YW50IHRvIHRoZSB0eXBlIG9mIHRoZSBmaWVsZC4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiAgUmVtb3ZlIG5vdy1yZWR1bmRhbnQgY29kZS4KCgkqIHBhcnNlLnkgKGZvbGRfY29uc3RhbnRfZm9yX2luaXQpOiAgJ251bGwnIGlzIG5vdCBhIGNvbnN0YW50IGV4cHIuCgoyMDAyLTA5LTAzICBKZXNzZSBSb3NlbnN0b2NrICA8am1yQHVnY3MuY2FsdGVjaC5lZHU+CgoJRm9yIFBSIGphdmEvNTc5NDoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKSBbT1BDT0RFX2pzcl06IE9ubHkgcHVzaCB0aGUKCXJldHVybiBsYWJlbCBpZiBhIHJldCBpbnN0cnVjdGlvbiBmb3IgdGhlIGpzciBoYXMgYmVlbiByZWFjaGVkLgoKMjAwMi0wOS0wOSAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJKiBwYXJzZS55IChESVJfU0VQQVJBVE9SKTogRG9uJ3QgZGVmaW5lLgoJKGNoZWNrX2NsYXNzX2ludGVyZmFjZV9jcmVhdGlvbik6IFVzZSBJU19ESVJfU0VQQVJBVE9SLgoKMjAwMi0wOC0yOCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBBbGxvdyBleGNlcHRpb24gaGFuZGxlcgoJaW5zaWRlIGNvZGUgdGhhdCBpcyBiZWluZyBwcm90ZWN0ZWQsIGJ1dCBnZW5lcmF0ZSBhIHdhcm5pbmcuCgkqIGV4Y2VwdC5jIChsaW5rX2hhbmRsZXIpOiBJbml0aWFsaXplIGBleHBhbmRlZCcgaW4gbmV3IGVoX3JhbmdlLgoJKGJpbmRpbmdfZGVwdGgsIGlzX2NsYXNzX2xldmVsLCBjdXJyZW50X3BjKTogRGVjbGFyZSBleHRlcm4uCgoyMDAyLTA5LTAxICBNYXJrIFdpZWxhYXJkIDxtYXJrQGtsb21wLm9yZz4KCgkqIGdjai50ZXhpOiBBZGQgY2hhcHRlciBhYm91dCBzeXN0ZW0gcHJvcGVydGllcy4KCUZpeGVkIHNvbWUgdHlwb3MuCgoyMDAyLTA4LTI2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBwYXJzZS55ICh0cnlfYnVpbHRpbl9hc3NpZ25jb252KTogQWxsb3cgbmFycm93aW5nIHByaW1pdGl2ZQoJY29udmVyc2lvbiBpZiBSSFNfVFlQRSBpcyBieXRlLCBzaG9ydCwgb3IgY2hhci4KCjIwMDItMDgtMjIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpIChJbnZva2luZyBnaWopOiBEb2N1bWVudCAtY3AgYW5kIC1jbGFzc3BhdGguCgoyMDAyLTA4LTIxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEvamNmLXBhdGgubyk6IFVzZSAkKGRhdGFkaXIpLCBub3QKCSQocHJlZml4KS9zaGFyZS4gIEZvciBQUiBsaWJnY2ovNzYzMy4KCglGb3IgUFIgamF2YS82MDA1IGFuZCBQUiBqYXZhLzc2MTE6CgkqIGxhbmcuYyAoTEFOR19IT09LU19DQU5fVVNFX0JJVEZJRUxEU19QKTogTmV3IGRlZmluZS4KCShqYXZhX2Nhbl91c2VfYml0X2ZpZWxkc19wKTogTmV3IGZ1bmN0aW9uLgoKMjAwMi0wOC0xNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKENsYXNzIEluaXRpYWxpemF0aW9uKTogTWVudGlvbiBjbGFzcyBpbml0aWFsaXphdGlvbiBvZgoJYXJyYXlzLgoKMjAwMi0wNy0zMCAgQW5kcmV3IEhhbGV5ICA8YXBoQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhLXRyZWUtaW5saW5lLm8pOiBOZXcuCgkoSkFWQV9PQkpTKTogQWRkIGphdmEtdHJlZS1pbmxpbmUuby4KCSogcGFyc2UueSAoc291cmNlX2VuZF9qYXZhX21ldGhvZCk6IENhbGwgamF2YV9vcHRpbWl6ZV9pbmxpbmUuCgkoamF2YV9leHBhbmRfbWV0aG9kX2JvZGllcyk6IFNhdmUgbWV0aG9kJ3MgdHJlZSBpbgoJREVDTF9TQVZFRF9UUkVFLgoJKGFkZF9zdG10X3RvX2NvbXBvdW5kKTogS2VlcCB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIHN0YXRtZW50cy4KCSogbGFuZy5jIChqYXZhX2luaXQpOiBFbmFibGUgZmxhZ19pbmxpbmVfdHJlZXMuCgkoamF2YV9wb3N0X29wdGlvbnMpOiBJZiBmbGFnX2lubGluZV9mdW5jdGlvbnMgaXMgb24sIGVuYWJsZQoJZmxhZ19pbmxpbmVfdHJlZXMgaW5zdHJlYWQuCgkoZGVjbF9jb25zdGFudF92YWx1ZSk6IE5ldy4KCShqYXZhX3RyZWVfaW5saW5pbmdfd2Fsa19zdWJ0cmVlcyk6IE5ldy4KCSogamF2YS10cmVlLmggKERFQ0xfTlVNX1NUTVRTKTogTmV3IG1hY3JvLgoJKGphdmFfb3B0aW1pemVfaW5saW5lKTogRGVjbGFyZS4KCSogZXhwci5jIChqYXZhX2V4cGFuZF9leHByKTogQWxsb3cgYSBCTE9DSyB0byByZXR1cm4gYSB2YWx1ZS4KCUhhbmRsZSBhIExBQkVMX0VYUFIuCgkqIGRlY2wuYyAoYnVpbGRfcmVzdWx0X2RlY2wpOiBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBERUNMX1JFU1VMVAoJZG9uJ3QgbWFrZSBhbm90aGVyLgoJKGR1bXBfZnVuY3Rpb24pOiBOZXcuCgkoamF2YV9vcHRpbWl6ZV9pbmxpbmUpOiBOZXcuCgkoZHVtcF9mdW5jdGlvbik6IE5ldy4KCjIwMDItMDgtMTMgIEplc3NlIFJvc2Vuc3RvY2sgIDxqbXJAZnVsY3J1bW1pY3JvLmNvbT4KCglGb3IgUFIgamF2YS83NDgzOgoJKiBwYXJzZS55IChidWlsZF9hc3NlcnRpb24pOiBJbnZlcnQgcmV0dXJuIGZyb20KCWRlc2lyZWRBc3NlcnRpb25TdGF0dXMuCgoyMDAyLTA4LTA4ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBqY2Ytd3JpdGUuYyAoZ2V0X2FjY2Vzc19mbGFncyk6IFJldHVybiBjb3JyZWN0IGFjY2VzcyBmbGFncyBmb3IKCXByaXZhdGUgYW5kIHByb3RlY3RlZCBpbm5lciBjbGFzc2VzLgoKMjAwMi0wOC0wOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGphdmEvTWFrZS1sYW5nLmluIChqYXZhLm1vc3RseWNsZWFuKTogUmVtb3ZlIGNvdmVyYWdlIGZpbGVzLgoKMjAwMi0wOC0wNSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogbWFuZ2xlX25hbWUuYzogRG9uJ3QgaW5jbHVkZSBvYnN0YWNrLmggdHdpY2UuCgkqIHhyZWYuYzogRG9uJ3QgaW5jbHVkZSBvYnN0YWNrLmguCgoyMDAyLTA4LTA0ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jOiAocGVybWFuZW50X29ic3RhY2spOiBEZWxldGUgZGVjbGFyYXRpb24uCgkqIGNvbnN0YW50cy5jOiAocGVybWFuZW50X29ic3RhY2spOiBEZWxldGUgZGVjbGFyYXRpb24uCgkqIGV4Y2VwdC5jOiAocGVybWFuZW50X29ic3RhY2spOiBEZWxldGUgZGVjbGFyYXRpb24uCgkqIGV4cHIuYzogKHBlcm1hbmVudF9vYnN0YWNrKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKiBqY2YtcGFyc2UuYzogKHBlcm1hbmVudF9vYnN0YWNrKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKHNhdmVhYmxlX29ic3RhY2spOiBEZWxldGUgZGVjbGFyYXRpb24uCgkqIHBhcnNlLmg6IChwZXJtYW5lbnRfb2JzdGFjayk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCSogdHlwZWNrLmM6IChwZXJtYW5lbnRfb2JzdGFjayk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCjIwMDItMDgtMDQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogZ2NqLnRleGkgKHZlcnNpb24tZ2NjKTogSW5jcmVhc2UgdG8gMy4zLgoKMjAwMi0wNy0yMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogbGV4LmMgKGphdmFfbGV4KTogQ2hlY2sgZm9yIGBlJyBvciBgRScgYWZ0ZXIgMC4KCjIwMDItMDctMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBsYW5nLmMgKGphdmFfdW5zYWZlX2Zvcl9yZWV2YWwpOiBOZXcuCgkoTEFOR19IT09LU19VTlNBRkVfRk9SX1JFRVZBTCk6IE5ldy4KCjIwMDItMDctMjEgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGpjZi1wYXRoLmMgKEdFVF9FTlZfUEFUSF9MSVNUKTogUmVtb3ZlLgoJKGpjZl9wYXRoX2luaXQpOiBVc2UgR0VUX0VOVklST05NRU5ULgoKMjAwMi0wNy0xMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgWmFjayBXZWluYmVyZyA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYnVpbHRpbnMuYyAoaW5pdGlhbGl6ZV9idWlsdGlucyk6IFJlbW92ZSBkZWZpbmVzIHRoYXQKCWhhbmRsZWQgQy9DKysgc3BlY2lmaWMganVuayBoZXJlYnkgcmVtb3ZlZCBmcm9tIGJ1aWx0aW5zLmRlZi4KCjIwMDItMDctMDcgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGxhbmcuYyAoamF2YV9wb3N0X29wdGlvbnMpOiBVcGRhdGUgcHJvdG90eXBlLgoKMjAwMi0wNy0wNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5jIChpbml0aWFsaXplX2J1aWx0aW5zKTogSWdub3JlIHRoZSBhZGRpdGlvbmFsCglwYXJhbWV0ZXIgdG8gREVGX0JVSUxUSU4uICBIYW5kbGUgbW9yZSBDL0MrKyBzcGVjaWZpYyBqdW5rIGluCgl0aGUgYnVpbHRpbnMuZGVmIGZpbGUuCgoyMDAyLTA3LTAxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRm9yIFBSIGxpYmdjai83MDczOgoJKiBwYXJzZS55IChwYXRjaF9pbmNvbXBsZXRlX2NsYXNzX3JlZik6IEhhbmRsZSBWT0lEX1RZUEUKCXNwZWNpYWxseS4KCjIwMDItMDctMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogamF2YS9kZWNsLmMgKGJ1aWx0aW5fZnVuY3Rpb24pOiBBY2NlcHQgYWRkaXRpb25hbCBwYXJhbWV0ZXIuCgkoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IFBhc3MgYW4gYWRkaXRpb25hbCBOVUxMX1RSRUUKCWFyZ3VtZW50IHRvIGJ1aWx0aW5fZnVuY3Rpb24uCgoyMDAyLTA2LTI5ICBULkouIE1hdGhlciAgPHRqbWF0aGVyQG1heG1pbmQuY29tPgoKCSogZ2NqLnRleGk6IEZpeGVkIGdjaiBpbnZvY2F0aW9uIGV4YW1wbGUgc28gdGhhdCBpdCBjb21waWxlcy4KCjIwMDItMDYtMjYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxleC5jIChqYXZhX2luaXRfbGV4KTogQXZvaWQgaW5jb3JyZWN0IGhhcmRjb2RlZCBjb25zdGFudCAxMS4KCSogcGFyc2UueSAobWFya19wYXJzZXJfY3R4dCk6IExpa2V3aXNlLgoJKGNoZWNrX21vZGlmaWVycywgZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBBdm9pZCBpbmNvcnJlY3QKCWhhcmRjb2RlZCBjb25zdGFudCAxMC4KCgkqIGxleC5jIChqYXZhX3JlYWRfY2hhcik6IEF2b2lkICJjb21wYXJpc29uIGlzIGFsd2F5cyB0cnVlIgoJd2FybmluZy4KCjIwMDItMDYtMjUgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBleHByLmMgKEpTUik6IEF2b2lkIHVuZGVmaW5lZCBvcGVyYXRpb24gb24gUEMuCgoyMDAyLTA2LTIxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZWNsLmMgKGNsZWFyX2JpbmRpbmdfbGV2ZWwpOiBDb25zdC1pZnkuCgoyMDAyLTA2LTEzICBBa2ltIERlbWFpbGxlICA8YWtpbUBlcGl0YS5mcj4KCgkqIHBhcnNlLnkgKGNsYXNzX2RlY2xhcmF0aW9uLCBpbnRlcmZhY2VfZGVjbGFyYXRpb24pOiBNYWtlIHN1cmUKCWFsbCB0aGVpciBydWxlcyBoYXZlIGFuIGFjdGlvbiwgaW4gb3JkZXIgdG8gYXZvaWQgbWVhbmluZ2xlc3MgYCQkCgk9ICQxJyBhbmQgdGhlaXIgdHlwZSBjbGFzaGVzLgoKMjAwMi0wNi0xMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2NsYXNzZmlsZSk6IFVzZSBGSUVMRF9TWU5USEVUSUMuCgkqIHBhcnNlLXNjYW4ueSAoc3RhdGVtZW50X3dpdGhvdXRfdHJhaWxpbmdfc3Vic3RhdGVtZW50KTogQWRkZWQKCWFzc2VydF9zdGF0ZW1lbnQuCgkoYXNzZXJ0X3N0YXRlbWVudCk6IE5ldyBydWxlLgoJKiBqYXZhLXRyZWUuaCAoc3RydWN0IGxhbmdfdHlwZSkgW2Fzc2VydGlvbnNdOiBOZXcgZmllbGQuCgkoVFlQRV9VU0VTX0FTU0VSVElPTlMpOiBOZXcgbWFjcm8uCgkoQ0xBU1NfVVNFU19BU1NFUlRJT05TKTogTGlrZXdpc2UuCgkoRklFTERfU1lOVEhFVElDKTogTmV3IGRlZmluZS4KCSogbGV4LmMgKGphdmFfbHZhbDspOiBBZGRlZCBBU1NFUlRfVEsuCgkqIHBhcnNlLnkgKEFTU0VSVF9USyk6IEFkZGVkLgoJKHN0YXRlbWVudF93aXRob3V0X3RyYWlsaW5nX3N1YnN0YXRlbWVudCk6IEFkZGVkIGFzc2VydF9zdGF0ZW1lbnQuCgkoYXNzZXJ0X3N0YXRlbWVudCk6IE5ldyBydWxlLgoJKGJ1aWxkX2Fzc2VydGlvbik6IE5ldyBmdW5jdGlvbi4KCShtYXliZV9nZW5lcmF0ZV9wcmVfZXhwYW5kX2NsaW5pdCk6IENyZWF0ZSBhbmQgaW5pdGlhbGl6ZQoJJGFzc2VydGlvbnNEaXNhYmxlZC4KCShsb29rdXBfcGFja2FnZV90eXBlKTogUmVtb3ZlZCBkZWNsLgoJKiBrZXl3b3JkLmg6IFJlYnVpbHQuCgkqIGtleXdvcmQuZ3BlcmYgKGFzc2VydCk6IE5ldyB0b2tlbi4KCjIwMDItMDYtMTAgIEFraW0gRGVtYWlsbGUgIDxha2ltQGVwaXRhLmZyPgoKCSogcGFyc2UueSAoaW50ZXJmYWNlX3R5cGVfbGlzdCwgY2xhc3NfbWVtYmVyX2RlY2xhcmF0aW9uKQoJKHVuYXJ5X2V4cHJlc3Npb25fbm90X3BsdXNfbWludXMpOiBSZW1vdmUgZHVwbGljYXRlICV0eXBlLgoJV2hpdGVzcGFjZSBjaGFuZ2VzLgoKMjAwMi0wNi0wOSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhL2xhbmcubyk6IFVzZSBMQU5HSE9PS1NfREVGX0guCgoJKiBwYXJzZS55IChtZXRob2RfaGVhZGVyKTogR2l2ZSBlcnJvciBtZXNzYWdlIGluIGFsbCBjYXNlcy4KCUZpeGVzIFBSIGphdmEvNjg2NS4KCjIwMDItMDYtMTAgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCglEb24ndCB1c2UgUlRMIGlubGluaW5nLiBGaXggZm9yIFBSIGphdmEvNjgyMC4KCSogbGFuZy5jIChMQU5HX0hPT0tTX1BPU1RfT1BUSU9OUyk6IERlZmluZS4KCShmbGFnX3JlYWxseV9pbmxpbmUpOiBOZXcuCgkoamF2YV9kZWNvZGVfb3B0aW9uKTogU2V0IGZsYWdfcmVhbGx5X2lubGluZSBpZiAtZmlubGluZS1mdW5jdGlvbnMKCWlzIHNlZW4uCgkoamF2YV9wb3N0X29wdGlvbnMpOiBOZXcgZnVuY3Rpb24uIFR1cm4gb2ZmIGlubGluaW5nIHVubGVzcwoJZmxhZ19yZWFsbHlfaW5saW5lIGlzIHNldC4KCjIwMDItMDYtMTAgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIGdqYXZhaC5jICh0aHJvd2FibGVfcCk6IEFjY2VwdCBhcmd1bWVudCBhcyBlaXRoZXIgYSBjbGFzc25hbWUgb3IKCXNpZ25hdHVyZSBmcmFnbWVudC4gQ3JlYXRlIG51bGwtdGVybWluYXRlZCBjbGFzc25hbWUgc3RyaW5nIGZvciBzdXBlcgoJd2hlbiBjYWxsaW5nIGl0c2VsZiByZWN1cnNpdmVseS4KCShkZWNvZGVfc2lnbmF0dXJlX3BpZWNlKTogU2tpcCBmaXJzdCBjaGFyYWN0ZXIgZnJvbSBjbGFzcyBuYW1lCglzaWduYXR1cmUgd2hlbiBjYWxsaW5nIHRocm93YWJsZV9wLgoKMjAwMi0wNi0wOCAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogamNmLXBhdGguYyAoamNmX3BhdGhfaW5pdCk6IEFsbG9jYXRlIDEgbW9yZSBieXRlIGZvciBzdHJpbmcuCgoyMDAyLTA2LTA0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqY2Ytd3JpdGUuYyAocGVyZm9ybV9yZWxvY2F0aW9ucyk6IE9wdG1pemUgYSBnb3RvIHRvIGEgZ290by4KCjIwMDItMDYtMDQgIE1pY2hhZWwgS29jaCAgPGtvbnF1ZXJvckBnbXguZGU+CgoJKiBnY2oudGV4aSAoSW5wdXQgT3B0aW9ucyk6IEZpeGVkIHR5cG8uCgoyMDAyLTA2LTA0ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogamF2YS10cmVlLmgsIGNsYXNzLmMsIGV4cHIuYywgamNmLXBhcnNlLmMsIHBhcnNlLnksCgl0eXBlY2suYywgdmVyaWZ5LmM6IFJlbW92ZSBhbGwgI2lmIEpBVkFfVVNFX0hBTkRMRVMgYmxvY2tzLAoJYWxsIG1lbnRpb24gb2YgQ0xBU1NfVE9fSEFORExFX1RZUEUgb3IgSEFORExFX1RPX0NMQVNTX1RZUEUsCglhbmQgYWxsIG5vdy1wb2ludGxlc3MgbG9jYWwgdmFyaWFibGVzLiAgUmVuYW1lIG90aGVyIGxvY2FsCgl2YXJpYWJsZXMgdG8gcmVmbGVjdCB0aGVpciBub3QgYmVpbmcgaGFuZGxlcy4KCgkqIGphdmEtdHJlZS5oLCBqY2YtZHVtcC5jLCBqY2YtaW8uYzogUmVtb3ZlIGFsbAoJI2lmIEpDRl9VU0VfU1RESU8gYmxvY2tzLgoKCSogcGFyc2UueTogQWRkIG1pc3Npbmcgc2VtaWNvbG9uIGF0IGVuZCBvZiBydWxlLgoKMjAwMi0wNi0wMyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogY2hlY2staW5pdC5jIChhdHRhY2hfaW5pdGlhbGl6ZWRfc3RhdGljX2NsYXNzKTogRGVsZXRlLCB1bnVzZWQuCgkqIHBhcnNlLnk6IFVzZSBodGFiX3QgaW5zdGVhZCBvZiBzdHJ1Y3QgaGFzaHRhYmxlLCB1cGRhdGUKCWFsbCB1c2VzLgoJKiBqYXZhLXRyZWUuaDogSW5jbHVkZSBoYXNodGFiLmggaW5zdGVhZCBvZiBoYXNoLmguCgkoc3RydWN0IGxhbmdfZGVjbF9mdW5jKTogVXNlIGh0YWJfdCwgc2V0IHVwIGZvciBnZW5ndHlwZS4KCShzdHJ1Y3QgaW5pdF90ZXN0X2hhc2hfZW50cnkpOiBEZWxldGUuCgkoc3RydWN0IHRyZWV0cmVlaGFzaF9lbnRyeSk6IE5ldy4KCShqYXZhX3RyZWV0cmVlaGFzaF9maW5kKTogTmV3CgkoamF2YV90cmVldHJlZWhhc2hfbmV3KTogTmV3IHByb3RvdHlwZS4KCShqYXZhX3RyZWV0cmVlaGFzaF9jcmVhdGUpOiBOZXcgcHJvdG90eXBlLgoJKGphdmFfbWFya190cmVlKTogRGVsZXRlIHByb3RvdHlwZS4KCShqYXZhX2hhc2hfaGFzaF90cmVlX25vZGUpOiBEZWxldGUgcHJvdG90eXBlLgoJKGphdmFfaGFzaF9jb21wYXJlX3RyZWVfbm9kZSk6IERlbGV0ZSBwcm90b3R5cGUuCgkoYXR0YWNoX2luaXRpYWxpemVkX3N0YXRpY19jbGFzcyk6IERlbGV0ZSBwcm90b3R5cGUuCgkqIGV4cHIuYyAoYnVpbGRfY2xhc3NfaW5pdCk6IFVwZGF0ZSB0byB1c2UgamF2YV90cmVldHJlZWhhc2gKCWZ1bmN0aW9ucy4KCShqYXZhX2V4cGFuZF9leHByKTogVXBkYXRlIHRvIHVzZSBodGFiX3QuCgkoZW1pdF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb24pOiBMaWtld2lzZS4KCSogZGVjbC5jIChqYXZhX21hcmtfdHJlZSk6IERlbGV0ZS4KCSogY2xhc3MuYyAoaW5pdF90ZXN0X2hhc2hfbmV3ZnVuYyk6IERlbGV0ZS4KCShqYXZhX2hhc2hfaGFzaF90cmVlX25vZGUpOiBEZWxldGUuCgkoamF2YV9oYXNoX2NvbXBhcmVfdHJlZV9ub2RlKTogRGVsZXRlLgoJKGFkZF9tZXRob2RfMSk6IFVwZGF0ZSB0byB1c2UgamF2YV90cmVldHJlZWhhc2ggZnVuY3Rpb25zLgoJKEpBVkFfVFJFRUhBU0hIQVNIX0gpOiBOZXcgbWFjcm8uCgkoamF2YV90cmVldHJlZWhhc2hfaGFzaCk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX3RyZWV0cmVlaGFzaF9jb21wYXJlKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfdHJlZXRyZWVoYXNoX2ZpbmQpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV90cmVldHJlZWhhc2hfbmV3KTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfdHJlZXRyZWVoYXNoX2NyZWF0ZSk6IE5ldyBmdW5jdGlvbi4KCSogTWFrZS1sYW5nLmluIChKQVZBX1RSRUVfSCk6IFJlcGxhY2UgaGFzaC5oIGJ5IEhBU0hUQUJfSC4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS9wYXJzZS5vKTogRGVwZW5kIG9uIGRlYnVnLmguCgkqIGphdmEtdHJlZS5oIChzdHJ1Y3QgbGFuZ19pZGVudGlmaWVyKTogVXNlIGdlbmd0eXBlLgoJKHVuaW9uIGxhbmdfdHJlZV9ub2RlKTogTmV3LgoJKHN0cnVjdCBsYW5nX2RlY2xfZnVuYyk6IFVzZSBnZW5ndHlwZS4KCShzdHJ1Y3QgbGFuZ19kZWNsX3Zhcik6IExpa2V3aXNlLgoJKHN0cnVjdCBsYW5nX2RlY2wpOiBMaWtld2lzZS4KCSogcGFyc2UueTogSW5jbHVkZSBkZWJ1Zy5oLgoJKiBsYW5nLmMgKExBTkdfSE9PS1NfTUFSS19UUkVFKTogRGVsZXRlLgoKCSogbGFuZy5jIChzdHJ1Y3QgbGFuZ3VhZ2VfZnVuY3Rpb24pOiBOZXcgZHVtbXkgc3RydWN0dXJlLgoKCSogamF2YS10cmVlLmggKE1BWUJFX0NSRUFURV9WQVJfTEFOR19ERUNMX1NQRUNJRklDKTogU2V0CglkZXNjcmltaW5hdG9yIGZvciBERUNMX0xBTkdfU1BFQ0lGSUMuCgkoc3RydWN0IGxhbmdfZGVjbF9mdW5jKTogUmVuYW1lIGZyb20gc3RydWN0IGxhbmdfZGVjbC4KCShlbnVtIGxhbmdfZGVjbF9kZXNjKTogTmV3LgoJKHN0cnVjdCBsYW5nX2RlY2wpOiBNYWtlIGl0IGEgdW5pb24uICBVcGRhdGUgYWxsIHRoZSBhY2Nlc3NvciBtYWNyb3MuCgkoc3RydWN0IGxhbmdfdHlwZSk6IFVzZSBnZW5ndHlwZS4KCSogY2xhc3MuYyAoYWRkX21ldGhvZF8xKTogU2V0IGRlc2NyaW1pbmF0b3IgZm9yIERFQ0xfTEFOR19TUEVDSUZJQy4KCSogZGVjbC5jIChqYXZhX2R1cF9sYW5nX3NwZWNpZmljX2RlY2wpOiBBbGwgbGFuZ19kZWNsIHN0cnVjdHVyZXMKCWFyZSBub3cgdGhlIHNhbWUgc2l6ZS4KCShsYW5nX21hcmtfdHJlZSk6IFVzZSBnZW5ndHlwZSB0byBtYXJrIFRZUEVfTEFOR19TUEVDSUZJQzsKCXVzZSBkaXNjcmltaW5hdG9yIHRvIG1hcmsgREVDTF9MQU5HX1NQRUNJRklDLgoKCSogTWFrZS1sYW5nLmluIChndC1qYXZhLWJ1aWx0aW5zLmgpOiBOZXcgcnVsZS4KCShqYXZhL2J1aWx0aW5zLm8pOiBBZGQgZGVwZW5kZW5jeSBvbiBndC08ZmlsZW5hbWU+LmguCgkqIGJ1aWx0aW5zLmM6IFVzZSBnZW5ndHlwZSBmb3Igcm9vdHMuCgkodW5pb24gc3RyaW5nX29yX3RyZWUpOiBVc2UgZ2VuZ3R5cGUuCgkoc3RydWN0IGJ1aWx0aW5fcmVjb3JkKTogVXNlIGdlbmd0eXBlLgoJKiBjb25maWctbGFuZy5pbiAoZ3RmaWxlcyk6IEFkZCBidWlsdGlucy5jLgoKCSogTWFrZS1sYW5nLmluIChndC1qYXZhLWNsYXNzLmgsIGd0LWphdmEtY29uc3RhbnRzLmgsCglndC1qYXZhLWRlY2wuaCwgZ3QtamF2YS1leHByLmgsIGd0LWphdmEtamNmLXBhcnNlLmgsCglndC1qYXZhLWpjZi13cml0ZS5oLCBndC1qYXZhLWxhbmcuaCwgZ3QtamF2YS1tYW5nbGUuaCwKCWd0LWphdmEtcGFyc2UuaCwgZ3R5cGUtamF2YS5oKTogQWRkIHJ1bGVzIHRvIGdlbmVyYXRlLgoJKHBhcnNlLm8pOiBBZGQgZGVwZW5kZW5jeSBvbiBndC1qYXZhLXBhcnNlLmgsIGd0LWphdmEuaC4KCShjbGFzcy5vKTogQWRkIGRlcGVuZGVuY3kgb24gZ3QtKi5oLgoJKGNvbnN0YW50cy5vKTogTGlrZXdpc2UuCgkoZGVjbC5vKTogTGlrZXdpc2UuCgkoZXhwci5vKTogTGlrZXdpc2UuCgkoamNmLXBhcnNlLm8pOiBMaWtld2lzZS4KCShqY2Ytd3JpdGUubyk6IExpa2V3aXNlLgoJKGxhbmcubyk6IExpa2V3aXNlLgoJKiBjb25maWctbGFuZy5pbiAoZ3RmaWxlcyk6IE5ldy4KCSogY2xhc3MuYzogUmVwbGFjZSB1c2VzIG9mIGdnY19hZGRfKiB3aXRoIEdUWSBtYXJrZXJzLiAgSW5jbHVkZSBndC0qLmguCgkqIGNvbnN0YW50cy5jOiBSZXBsYWNlIHVzZXMgb2YgZ2djX2FkZF8qIHdpdGggR1RZIG1hcmtlcnMuCglJbmNsdWRlIGd0LSouaC4KCSogZGVjbC5jOiBSZXBsYWNlIHVzZXMgb2YgZ2djX2FkZF8qIHdpdGggR1RZIG1hcmtlcnMuICBJbmNsdWRlIGd0LSouaC4KCSogZXhwci5jOiBSZXBsYWNlIHVzZXMgb2YgZ2djX2FkZF8qIHdpdGggR1RZIG1hcmtlcnMuICBJbmNsdWRlIGd0LSouaC4KCSogamF2YS10cmVlLmg6IFJlcGxhY2UgdXNlcyBvZiBnZ2NfYWRkXyogd2l0aCBHVFkgbWFya2Vycy4KCSogamNmLXBhcnNlLmM6IFJlcGxhY2UgdXNlcyBvZiBnZ2NfYWRkXyogd2l0aCBHVFkgbWFya2Vycy4KCUluY2x1ZGUgZ3QtKi5oLgoJKiBqY2Ytd3JpdGUuYzogUmVwbGFjZSB1c2VzIG9mIGdnY19hZGRfKiB3aXRoIEdUWSBtYXJrZXJzLgoJSW5jbHVkZSBndC0qLmguCgkqIGxhbmcuYzogUmVwbGFjZSB1c2VzIG9mIGdnY19hZGRfKiB3aXRoIEdUWSBtYXJrZXJzLiAgSW5jbHVkZSBndC0qLmguCgkqIG1hbmdsZS5jOiBSZXBsYWNlIHVzZXMgb2YgZ2djX2FkZF8qIHdpdGggR1RZIG1hcmtlcnMuICBJbmNsdWRlCglndC0qLmguCgkqIHBhcnNlLnk6IFJlcGxhY2UgdXNlcyBvZiBnZ2NfYWRkXyogd2l0aCBHVFkgbWFya2Vycy4gIEluY2x1ZGUgZ3QtKi5oLgoJSW5jbHVkZSBndHlwZS1qYXZhLmguCgoyMDAyLTA2LTAyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRml4IGZvciBQUiBqYXZhLzU5MTM6CgkqIHBhcnNlLnkgKHBhdGNoX2Jpbm9wKTogQ2FsbCBwYXRjaF9zdHJpbmcgb24gb3AxLgoKMjAwMi0wNi0wMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCUZpeCBmb3IgUFIgamF2YS8xMzQzLCBQUiBqYXZhLzYzMzY6CgkqIHBhcnNlLnkgKG1ha2VfbmVzdGVkX2NsYXNzX25hbWUpOiBSZW1vdmUgZXh0cmFuZW91cyBgZWxzZSc7IGZpeAoJZm9ybWF0dGluZy4gIENoYW5nZWQgcmV0dXJuIHR5cGUuCgkoYW5vbnltb3VzX2NsYXNzX2NvdW50ZXIpOiBNb3ZlZCB0byB0b3Agb2YgZmlsZS4KCShtYXliZV9tYWtlX25lc3RlZF9jbGFzc19uYW1lKTogQXBwZW5kIG51bWJlciB0byBjbGFzcyBuYW1lIGZvcgoJZnVuY3Rpb24tbG9jYWwgY2xhc3Nlcy4KCjIwMDItMDUtMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMsIGpjZi1wYXJzZS5jLCBwYXJzZS55LCB0eXBlY2suYzogSW5jbHVkZSByZWFsLmguCgkqIE1ha2UtbGFuZy5pbjogVXBkYXRlIGRlcGVuZGVuY3kgbGlzdHMuCgoyMDAyLTA1LTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ2phdmFoLmMgKHRocm93YWJsZV9wKTogRG8gbm90IGZyZWUgdGhlIG5hbWUgb2YgdGhlIGNsYXNzIGFmdGVyCglwYXNzaW5nIGl0IHRvIGZpbmRfY2xhc3MuCgkqIGphdmEtdHJlZS5oIChDTEFTU19CRUlOR19MQUlET1VUKTogUmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9uLgoJKiBqY2YtaW8uYyAoZGlyZW50LmgpOiBJbmNsdWRlIGl0LgoJKGZubWF0Y2guaCk6IExpa2V3aXNlLgoJKGNvbXBhcmVfcGF0aCk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX29yX2NsYXNzX2ZpbGUpOiBMaWtld2lzZS4KCShtZW1vaXplZF9kaXJsaXN0X2VudHJ5KTogTmV3IHR5cGUuCgkobWVtb2l6ZWRfZGlybGlzdF9sb29rdXBfZXEpOiBOZXcgZnVuY3Rpb24uCgkobWVtb2l6ZWRfZGlybGlzdHMpOiBOZXcgdmFyaWFibGUuCgkoY2FjaGluZ19zdGF0KTogTmV3IGZ1bmN0aW9uLgoJKG1lbW9pemVkX2NsYXNzX2xvb2t1cF9lcSk6IE5ldyBmdW5jdGlvbi4KCShtZW1vaXplZF9jbGFzc19sb29rdXBzKTogTGlrZXdpc2UuCgkoZmluZF9jbGFzcyk6IFVzZSBtZW1vaXplZF9jbGFzc19sb29rdXBzIGFuZCBjYWNoaW5nX3N0YXQuCgkqIGpjZi5oIChKQ0ZfVVNFX1NDQU5ESVIpOiBEZWZpbmUuCgkqIHBhcnNlLnkgKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBXcml0ZSB0aGUgY2xhc3MgZmlsZXMgaW4gcmV2ZXJzZQoJb3JkZXIuCgoyMDAyLTA1LTE2ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIE1ha2UtbGFuZy5pbjogQWxsb3cgZm9yIFBXRENNRCB0byBvdmVycmlkZSBoYXJkY29kZWQgcHdkLgoKMjAwMi0wNS0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGpjZi13cml0ZS5jICh3cml0ZV9jbGFzc2ZpbGUpOiBVbmxpbmsgdGhlIHRlbXBvcmFyeSBmaWxlIGlmIGl0CgljYW5ub3QgYmUgcmVuYW1lZC4gIFVzZSBjb25jYXQgdG8gYnVpbGQgdXAgdGhlIG5hbWUgb2YgdGhlCgl0ZW1wb3JhcnkgZmlsZS4KCjIwMDItMDUtMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBqY2Ytd3JpdGUuYyAod3JpdGVfY2xhc3NmaWxlKTogV3JpdGUgdGhlIGZpbGUgdG8gYQoJdGVtcG9yYXJ5IGZpbGUgYW5kIHRoZW4gcmVuYW1lIGl0LgoKMjAwMi0wNS0wNyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2phdmFoLmMgKHRocm93YWJsZV9wKTogVXNlIHhzdHJkdXAsIG5vdCBzdHJkdXAuCgoJRml4IGZvciBQUiBqYXZhLzEyMDA6CgkqIGdqYXZhaC5jICh0aHJvd2FibGVfcCk6IE5ldyBmdW5jdGlvbi4KCShkZWNvZGVfc2lnbmF0dXJlX3BpZWNlKTogVXNlIGl0LiAgQSBgV2Vha1JlZmVyZW5jZScgaXNuJ3QgdGhlCglzYW1lIGFzIGEgYGp3ZWFrJy4KCUluY2x1ZGUgaGFzaHRhYi5oLgoJKGdjamhfc3RyZXEpOiBOZXcgZnVuY3Rpb24uCgoyMDAyLTA1LTA3ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBwYXJzZS55IChmaW5pc2hfZm9yX2xvb3ApOiBGaXggaWYgc3RhdGVtZW50LgoKMjAwMi0wNS0wNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCUZpeCBmb3IgUFIgamF2YS81OTQxOgoJKiBwYXJzZS55IChmaW5pc2hfZm9yX2xvb3ApOiBTZXQgU1VQUFJFU1NfVU5SRUFDSEFCTEVfRVJST1IgZm9yCglsb29wIHVwZGF0ZSBleHByZXNzaW9uLgoJKGphdmFfY29tcGxldGVfbGhzKTogVXNlIFNVUFBSRVNTX1VOUkVBQ0hBQkxFX0VSUk9SLgoJKiBqYXZhLXRyZWUuaCAoU1VQUFJFU1NfVU5SRUFDSEFCTEVfRVJST1IpOiBOZXcgbWFjcm8uCgoyMDAyLTA1LTA0ICBNYXJrIFdpZWxhYXJkICA8bWFya0BrbG9tcC5vcmc+CgoJRm9yIFBSIGphdmEvNjUxOToKCSogcGFyc2UueSAoYnVpbGRfc3RyaW5nX2NvbmNhdGVuYXRpb24pOiBSZXR1cm4ganVzdCBvcDEgb25seSB3aGVuIG9wMgoJaXMgbnVsbCBhbmQgb3AxIGlzIGEgU1RSSU5HX0NTVCwgb3RoZXJ3aXNlIGFsd2F5cyBjb25zdHJ1Y3QgYQoJU3RyaW5nQnVmZmVyLgoKMjAwMi0wNC0yNyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCUZvciBQUiBqYXZhLzYzODI6CgkqIHBhcnNlLnkgKHN0cmluZ19jb252ZXJ0X2ludF9jc3QpOiBOZXcgZnVuY3Rpb24uCgkobWVyZ2Vfc3RyaW5nX2NzdGUpOiBVc2UgaXQuCgoyMDAyLTA0LTI1ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBqYXZhLXRyZWUuaCAoamF2YV9wYXJzZV9maWxlKTogVXBkYXRlLgoJKGphdmFfc2V0X3l5ZGVidWcpOiBSZW1vdmUuCgkqIGpjZi1wYXJzZS5jICh5eWRlYnVnKTogUmVtb3ZlLgoJKGphdmFfc2V0X3l5ZGVidWcpOiBEaWUuCgkoamF2YV9wYXJzZV9maWxlKTogVXBkYXRlLgoJKiBsYW5nLmMgKExBTkdfSE9PS1NfU0VUX1lZREVCVUcpOiBSZW1vdmUuCgoyMDAyLTA0LTI0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRm9yIFBSIGphdmEvNjQyNToKCSogcGFyc2UueSAocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSkgW2Nhc2UgQ0FMTF9FWFBSXTogQWx3YXlzIGNob29zZQoJRVhQUl9XRkxfUVVBTElGSUNBVElPTiBvZiBxdWFsX3dmbC4KCjIwMDItMDQtMjMgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogZXhwci5jIChQUkVfSlNSKTogIENhbGwgTk9URV9MQUJFTCBmb3IgcmV0dXJuIGFkZHJlc3MuCgkqIGphdmEtdHJlZS5oIChCQ09ERV9SRVRVUk5fVEFSR0VUKTogIFJlbW92ZWQgLSBuZXZlciBzZXQuCgkoQkNPREVfVEFSR0VUKTogIFJlbW92ZSBCQ09ERV9SRVRVUk5fVEFSR0VULgoKMjAwMi0wNC0yMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCUZvciBQUiBqYXZhLzYzMTQ6CgkqIGp2c3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IFVzZSAtLXJlc291cmNlLCBub3QgLVIuICBBbHNvCglyZWNvZ25pemUgYC1mY29tcGlsZS1yZXNvdXJjZT0nLgoJKiBnY2oudGV4aSAoSW52b2tpbmcgZ2NqKTogVXNlIC0tcmVzb3VyY2UsIG5vdCAtUi4gIEV4cGFuZGVkIHRleHQKCWEgYml0LgoKMjAwMi0wNC0yMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYzogKHl5cGFyc2UpOiBEb24ndCBwcmVwZW5kICIuLyIgdG8gcmVsYXRpdmUKCXBhdGhzLiBGaXhlcyBQUiBqYXZhLzI3OTEuCgoyMDAyLTA0LTE5ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGpjZi13cml0ZS5jIChwdXNoX2xvbmdfY29uc3QpOiBsbywgaGk6IE5ldyB2YXJpYWJsZXMuCglVc2UgcnNoaWZ0X2RvdWJsZSB0byBleHRyYWN0IHRoZSBoaWdoIHBhcnQgb2YgYSA2NC1iaXQgbG9uZy4KCVVzZSBXT1JEX1RPX0lOVCB0byBleHRyYWN0IHRoZSBsb3cgcGFydC4KCgkqIGpjZi1wYXJzZS5jIChnZXRfY29uc3RhbnQpOiBDT05TVEFOVF9JbnRlZ2VyOiBVc2UgYW4gdW5zaWduZWQKCUhPU1RfV0lERV9JTlQgZm9yIG51bS4gIFVzZSBKUE9PTF9VSU5UIHRvIGdldCBpdC4KCUNPTlNUQU5UX0RvdWJsZTogVXNlIEpQT09MX1VJTlQgdG8gZ2V0IGJvdGggaGFsdmUgb2YgYSBkb3VibGUuCgoyMDAyLTA0LTE4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiB0eXBlY2suYyAoaW5jb21wbGV0ZV90eXBlX2Vycm9yKTogUmVtb3ZlLgoKMjAwMi0wNC0xOCAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogU2V0IERFQ0xfQUxJR04gb24gc3RhdGljIGNsYXNzIGRhdGEsCglmb3IgaGFzaCBzeW5jaHJvbml6YXRpb24uCgkqIGV4cHIuYyAoamF2YV9leHBhbmRfZXhwcik6IFNldCBERUNMX0FMSUdOIG9uIHN0YXRpYyBhcnJheSBvYmplY3RzLgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBzZXQgVFlQRV9BTElHTiBmb3IKCWNsYXNzX3R5cGVfbm9kZS4KCjIwMDItMDQtMTYgIE1hcmsgV2llbGFhcmQgIDxtYXJrQGtsb21wLm9yZz4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IE9ubHkgd3JpdGUgY29uc3RfMCBpZiBub3QKCW5lZ2F0aXZlIHplcm8uCgoyMDAyLTA0LTE2ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJRml4IGZvciBQUiBqYXZhLzYyOTQ6CgkqIHBhcnNlLmggKElOTkVSX0lOVEVSRkFDRV9NT0RJRklFUlMpOiBBbGxvdyBBQ0NfUFJJVkFURSBmb3IgaW5uZXIKCWludGVyZmFjZXMuCgoyMDAyLTA0LTE1ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJRml4IGZvciBQUiBqYXZhLzYwODU6CgkqIHBhcnNlLnkgKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogQWx3YXlzIHVzZSBidWlsZF9hY2Nlc3NfdG9fdGhpc24KCXRvIGdldCBlbmNsb3NpbmcgInRoaXMiIGFyZ3VtZW50IGZvciBpbm5lci1jbGFzcyBjb25zdHJ1Y3RvcgoJaW52b2NhdGlvbi4gUGFzcyBjb3JyZWN0IGFyZ3VtZW50cyB0byBidWlsZF9hY2Nlc3NfdG9fdGhpc24uCgoyMDAyLTA0LTEwICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBnY2oudGV4aSAoSW5wdXQgT3B0aW9ucyk6IEZpeCBleHRkaXJzIHBhdGNoLgoKMjAwMi0wNC0xMCAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CgoJKiBqY2YtcGF0aC5jIChqY2ZfcGF0aF9pbml0KSA6IENsZWFuIHVwIGxvY2FsIGV4dGRpcnMgZGVjbGFyYXRpb24uCgoyMDAyLTA0LTA5ICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpIChJbnB1dCBPcHRpb25zKTogQWRkIC0tZXh0ZGlycyBkb2N1bWVudGF0aW9uLgoJKiBqY2YtZHVtcC5jIChPUFRfZXh0ZGlycyk6IE5ldyBtYWNyby4KCShvcHRpb25zKTogQWRkIGV4dGRpcnMgb3B0aW9uLgoJKGhlbHApOiBEZXNjcmliZSAtLWV4dGRpcnMuCgkobWFpbik6IEhhbmRsZSBPUFRfZXh0ZGlycy4KCSogZ2phdmFoLmMgKE9QVF9leHRkaXJzKTogTmV3IG1hY3JvLgoJKG9wdGlvbnMpOiBBZGQgZXh0ZGlycyBvcHRpb24uCgkoaGVscCk6IERlc2NyaWJlIC0tZXh0ZGlycy4KCShtYWluKTogSGFuZGxlIE9QVF9leHRkaXJzLgoJKiBqY2YtcGF0aC5jIChqY2ZfcGF0aF9pbml0KTogQWRkIGV4dGRpcnMgc3VwcG9ydC4KCShqY2ZfcGF0aF9leHRkaXJzX2FyZyk6IE5ldyBmdW5jdGlvbi4KCShleHRlbnNpb25zKTogTmV3IHZhcmlhYmxlIHRvIGhvbGQgZXh0ZW5zaW9ucyBwYXRoIGVudHJpZXMuCgkqIGp2c3BlYy5jOiBSZW1vdmUgLWZleHRkaXJzPSB3aGVuIGNvbXBpbGluZyBtYWluKCkuCgkqIGxhbmcuYyAoamF2YV9kZWNvZGVfb3B0aW9uKTogSGFuZGxlIC1mZXh0ZGlycz0uCgkqIGpjZi5oIChqY2ZfcGF0aF9leHRkaXJzX2FyZyk6IERlY2xhcmUgbmV3IGZ1bmN0aW9uLgoJKiBNYWtlLWxhbmcuaW46IENvbXBpbGUgamNmLXBhdGggd2l0aCB2ZXJzaW9uIGluZm8gZm9yIHVzZSBpbgoJaWRlbnRpZnlpbmcgdGhlIGFwcHJvcHJpYXRlIGxpYmdjai5qYXIuCgoyMDAyLTA0LTA4ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRm9yIFBSIGxpYmdjai81MzAzOgoJKiAuY3ZzaWdub3JlOiBBZGRlZCBybWljLjEgYW5kIHJtaXJlZ2lzdHJ5LjEuCgkqIGdjai50ZXhpIChUb3ApOiBMaW5rIHRvIG5ldyBub2Rlcy4KCShJbnZva2luZyBybWljKTogTmV3IG5vZGUuCgkoSW52b2tpbmcgcm1pcmVnaXN0cnkpOiBMaWtld2lzZS4KCSogTWFrZS1sYW5nLmluIChqYXZhLmdlbmVyYXRlZC1tYW5wYWdlcyk6IEFkZGVkIHJtaWMuMSBhbmQKCXJtaXJlZ2lzdHJ5LjEuCgkoamF2YS5tYWludGFpbmVyLWNsZWFuKTogTGlrZXdpc2UuCgkoJChzcmNkaXIpL2phdmEvcm1pYy4xKTogTmV3IHRhcmdldC4KCSgkKHNyY2RpcikvamF2YS9ybWlyZWdpc3RyeS4xKTogTGlrZXdpc2UuCgkoamF2YS5pbnN0YWxsLW1hbik6IEhhbmRsZSBybWljLjEgYW5kIHJtaXJlZ2lzdHJ5LjEuCgoyMDAyLTA0LTA4ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBnY2oudGV4aSAoSW52b2NhdGlvbik6IFVwZGF0ZSBKdkF0dGFjaEN1cnJlbnRUaHJlYWQgZG9jdW1lbnRhdGlvbi4KCUFkZCBub3RlIGFib3V0IGhhbmRsaW5nIHVuY2F1Z2h0IGV4Y2VwdGlvbnMuIEFkZCBhbiBleGNlcHRpb24gaGFuZGxlcgoJdG8gZXhhbXBsZS4KCjIwMDItMDQtMDggIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIHBhcnNlLnkgKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IENsZWFyICJmcm9tX3N1cGVyIiBmbGFnCglhZnRlciB1c2luZyBpdCB0byBwYXRjaCBDQUxMX0VYUFIuCgoyMDAyLTA0LTA4ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBnY2oudGV4aSAoSW52b2NhdGlvbik6IERvY3VtZW50IENOSSBpbnZvY2F0aW9uIEFQSS4KCjIwMDItMDQtMDQgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGV4cHIuYyAodHJ1dGh2YWx1ZV9jb252ZXJzaW9uKTogUmVuYW1lLiAgVXBkYXRlLgoJKGV4cGFuZF9jb21wYXJlKTogVXBkYXRlLgoJKiBqYXZhLXRyZWUuaCAoamF2YV90cnV0aHZhbHVlX2NvbnZlcnNpb24pOiBOZXcuCgkqIGxhbmcuYyAoTEFOR19IT09LU19UUlVUSFZBTFVFX0NPTlZFUlNJT04pOiBSZWRlZmluZS4KCjIwMDItMDQtMDEgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGphdmEtdHJlZS5oIChqYXZhX21hcmtfYWRkcmVzc2FibGUpOiBOZXcuCgkqIGxhbmcuYyAoTEFOR19IT09LU19NQVJLX0FERFJFU1NBQkxFKTogUmVkZWZpbmUuCgkqIHR5cGVjay5jIChtYXJrX2FkZHJlc3NhYmxlKTogUmVuYW1lLCB1cGRhdGUuCgoyMDAyLTA0LTAxICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBleHByLmMgKGJ1aWxkX2phdmFfYmlub3ApOiBVcGRhdGUuCgkqIGphdmEtdHJlZS5oIChqYXZhX3NpZ25lZF90eXBlLCBqYXZhX3Vuc2lnbmVkX3R5cGUsCglqYXZhX3NpZ25lZF9vcl91bnNpZ25lZF90eXBlKTogVXBkYXRlLgoJKiBsYW5nLmMgKExBTkdfSE9PS1NfU0lHTkVEX1RZUEUsIExBTkdfSE9PS1NfVU5TSUdORURfVFlQRSwKCUxBTkdfSE9PS1NfU0lHTkVEX09SX1VOU0lHTkVEX1RZUEUpOiBOZXcuCgkqIHBhcnNlLnkgKHBhdGNoX2Jpbm9wKTogVXBkYXRlLgoJKiB0eXBlY2suYyAoc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUsIHVuc2lnbmVkX3R5cGUsCglzaWduZWRfdHlwZSk6IFVwZGF0ZS4KCjIwMDItMDMtMzEgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGxhbmcuYyAoTEFOR19IT09LU19QUklOVF9FUlJPUl9GVU5DVElPTik6IFJlZGVmaW5lLgoJKGphdmFfZHVtbXlfcHJpbnQpOiBSZW1vdmUuCgkobGFuZ19wcmludF9lcnJvcik6IFJlbmFtZS4gIEV4aXQgZWFybHkgaWYgaW5oaWJpdGluZyBvdXRwdXQuCgkoaW5oaWJpdF9lcnJvcl9wcmludGluZ19mdW5jdGlvbik6IE5ldy4KCShqYXZhX2luaXQpOiBEb24ndCBzZXQgaG9vay4KCShsYW5nX2luaXRfc291cmNlKTogVXNlIG5ldyBib29sZWFuLgoKMjAwMi0wMy0yOSAgTWFydGluIEthaGxlcnQgIDxtYXJ0aW4ua2FobGVydEBpbmZpbmVvbi5jb20+CgoJKiBwYXJzZS55IChkb19yZXNvbHZlX2NsYXNzKTogRml4IGluZmluaXRlIHJlY3Vyc2lvbi4KCjIwMDItMDMtMjkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGNoZWNrX2lubmVyX2NpcmN1bGFyX3JlZmVyZW5jZSk6IElnbm9yZSBpbmNvbXBsZXRlCgl0eXBlcy4KCjIwMDItMDMtMjkgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIE1ha2UtbGFuZy5pbiAoYnVpbHRpbnMubyk6IFVwZGF0ZS4KCSogYm9laG0uYyAoZ2V0X2JvZWhtX3R5cGVfZGVzY3JpcHRvcik6IFVwZGF0ZS4KCSogYnVpbHRpbnMuYzogSW5jbHVkZSBsYW5naG9va3MuaC4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogVXBkYXRlLgoJKiBqYXZhLXRyZWUuaCAoamF2YV90eXBlX2Zvcl9tb2RlLCBqYXZhX3R5cGVfZm9yX3NpemUpOiBOZXcuCgkqIGxhbmcuYyAoTEFOR19IT09LU19UWVBFX0ZPUl9NT0RFLCBMQU5HX0hPT0tTX1RZUEVfRk9SX1NJYVpFKToKCVJlZGVmaW5lLgoJKiB0eXBlY2suYyAodHlwZV9mb3JfbW9kZSwgdHlwZV9mb3Jfc2l6ZSk6IFVwZGF0ZS4KCjIwMDItMDMtMjkgIE1hcnRpbiBLYWhsZXJ0ICA8bWFydGluLmthaGxlcnRAaW5maW5lb24uY29tPgoKCSogbGV4LmMgKGphdmFfbmV3X2xleGVyKTogQWxpYXMgIjY0NiIgdG8gREVGQVVMVF9FTkNPRElORy4KCjIwMDItMDMtMjggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfZW5kX2phdmFfaGFuZGxlcik6IElmIHRoZSBoYW5kbGVyIHR5cGUgaXMgTlVMTCwKCXVzZSBqYXZhLmxhbmcuVGhyb3dhYmxlLiAgRml4ZXMgUFIgamF2YS81OTg2LgoKMjAwMi0wMy0yOCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJRml4IGZvciBQUiBqYXZhLzQ3MTU6CgkqIGpjZi1wYXJzZS5jIChwYXJzZV9zb3VyY2VfZmlsZV8zKTogTmV3IGZ1bmN0aW9uLgoJKHJlYWRfY2xhc3MpOiBDYWxsIGl0LgoJKGphdmFfcGFyc2VfZmlsZSk6IExpa2V3aXNlLgoKMjAwMi0wMy0yOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogamF2YS9sYW5nLmMgKGphdmFfaW5pdF9vcHRpb25zKTogU2V0IGZsYWdfdHJhcHBpbmdfbWF0aCB0byAwLgoKMjAwMi0wMy0yOCAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogcGFyc2UueSAocmVzb2x2ZV9wYWNrYWdlKTogSW5pdGlhbGl6ZSAiZGVjbCIuCgkobG9va3VwX3BhY2thZ2VfdHlwZSk6IFJlbW92ZSB1bnVzZWQgZnVuY3Rpb24uCgoyMDAyLTAzLTI4ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJRml4IGZvciBQUiBqYXZhLzU5OTM6CgkqIHBhcnNlLnkgKHJlc29sdmVfcGFja2FnZSk6IFJldHVybiB0aGUgZGVjbCBpZiByZXNvbHV0aW9uIHdhcwoJc3VjY2Vzc2Z1bC4gRG9uJ3Qgc3BlY2lhbCBjYXNlICJqYXZhLmxhbmciIGFuZCAiamF2YS5sYW5nLnJlZmxlY3QiCglwYWNrYWdlcy4gU2V0IHR5cGVfbmFtZSB0byB0aGUgbWVyZ2VkIGlkZW50aWZpZXIuCgkocmVzb2x2ZWRfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IFByaW50IGVycm9yIHVzaW5nICJuYW1lIiBpZgoJcmVzb2x2ZV9wYWNrYWdlIHJldHVybnMgTlVMTF9UUkVFLgoKMjAwMi0wMy0yNyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZXhwci5jIChleHBhbmRfaW52b2tlKTogRG9uJ3QgZ2VuZXJhdGUgbnVsbCBwb2ludGVyIGNoZWNrIGlmCgl3ZSdyZSBjYWxsaW5nIDxpbml0Pi4KCjIwMDItMDMtMjcgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogUmVuYW1lIGphdmFfZXhwYW5kX2V4cHIsCglmaXggcHJvdG90eXBlLgoJKiBqYXZhLXRyZWUuaCAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogU2ltaWxhcmx5LgoJKiBsYW5nLmMgKExBTkdfSE9PS1NfRVhQQU5EX0VYUFIpOiBSZWRlZmluZS4KCShqYXZhX2luaXQpOiBEb24ndCBzZXQgaG9vay4KCjIwMDItMDMtMjcgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCglGaXggZm9yIFBSIGphdmEvNTg1MDoKCSogcGFyc2UueSAobG9va3VwX2ZpZWxkX3dyYXBwZXIpOiBDYWxsIGl0c2VsZiByZWN1cnNpdmVseSBmb3IgZW5jbG9zaW5nCgljb250ZXh0IGlmIGZpZWxkIHdhcyBub3QgZm91bmQgaW4gdGhlIGN1cnJlbnQgc2NvcGUuCgkqIGV4cHIuYyAobG9va3VwX2ZpZWxkKTogRG9uJ3QgbG9vayBpbiBlbmNsb3NpbmcgY29udGV4dHMuCgoyMDAyLTAzLTI2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRml4IGZvciBQUiBqYXZhLzU5NDI6CgkqIHBhcnNlLnkgKGluaXRfc3JjX3BhcnNlKTogQWRkZWQgc2FuaXR5IGNoZWNrLgoJKiBwYXJzZS5oIChzdHJ1Y3QgcGFyc2VyX2N0eHQpIFttb2RpZmllcl9jdHhdOiBBcnJheSBoYXMgMTIKCWVsZW1lbnRzLCBub3QgMTEuCgoyMDAyLTAzLTI2ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBkZWNsLmMgKGxhbmdfbWFya190cmVlKTogUmVuYW1lIGphdmFfbWFya190cmVlLgoJKiBqYXZhLXRyZWUuaCAoamF2YV9tYXJrX3RyZWUpOiBOZXcuCgkqIGphdmEtbGFuZy5jIChMQU5HX0hPT0tTX01BUktfVFJFRSk6IFJlZGVmaW5lLgoKMjAwMi0wMy0yNSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxleC5jOiBDaGFuZ2UgamF2YV9wZXJmb3JtX2F0b2YgdG8gdGFrZSBub3JtYWwgcGFyYW1ldGVycwoJaW5zdGVhZCBvZiBhIHBvaW50ZXIgdG8gYSBwYXJhbWV0ZXIgYmxvY2suICBDYWxsIGl0IGRpcmVjdGx5Cglmcm9tIGphdmFfbGV4LgoKMjAwMi0wMy0yMiAgTWFyayBXaWVsYWFyZCAgPG1hcmtAa2xvbXAub3JnPgoKCUZpeCBmb3IgUFIgamF2YS81MzY4OgoJKiBwYXJzZS55IChyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBVc2UgZGVjbCBub3QgZmllbGRfZGVjbAoJd2hlbiBwcmludGluZyBlcnJvciBtZXNzYWdlLgoKMjAwMi0wMy0yNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogZGVjbC5jIChtYXliZV9idWlsZF9jbGVhbnVwKTogUmVtb3ZlLgoKMjAwMi0wMy0yMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCUFuZHJldyBIYWxleSAgPGFwaEBjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfZmllbGRfcmVmKTogRG9uJ3QgYnVpbGQgYSBjaGVjayBpZiB0aGUgZmllbGQgaXMgYQoJbWVtYmVyIG9mIGB0aGlzJy4KCjIwMDItMDMtMjEgIEVyaWMgQmxha2UgIDxlYmI5QGVtYWlsLmJ5dS5lZHU+CgoJRml4IGZvciBQUiBqYXZhLzYwMjY6CgkqIGxleC5jIChqYXZhX2xleCk6IEZpeCBwYXJzaW5nIG9mIGNvbnNlY3V0aXZlIGZsb2F0cy4KCjIwMDItMDMtMjEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGJ1aWxkX2FjY2Vzc190b190aGlzbik6IFN0b3Agd2hlbiBGUk9NIGlzIG5vdCBhbiBpbm5lcgoJY2xhc3MuCgoyMDAyLTAzLTIxICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBjcC10cmVlLmggKHB1c2hkZWNsLCBwdXNobGV2ZWwsIHBvcGxldmVsLCBzZXRfYmxvY2ssCglpbnNlcnRfYmxvY2ssIGdldGRlY2xzLCBrZXB0X2xldmVsX3AsIGdsb2JhbF9iaW5kaW5nc19wKTogTmV3LgoKMjAwMi0wMy0yMCAgTmljIEZlcnJpZXIgIDxuZmVycmllckB0YXBzZWxsZmVycmllci5jby51az4KCgkqIGdjai50ZXhpOiBAY29kZXtnY2p9IGJlY29tZXMgQGNvbW1hbmR7Z2NqfS4KCUBjb2Rle2djY30gYmVjb21lcyBAY29tbWFuZHtnY2N9LgoJR2NqUmF3IGNoYW5nZWQgdG8gZ251LmdjYy5SYXdEYXRhLgoKMjAwMi0wMy0yMCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogZGVjbC5jIChzdGFydF9qYXZhX21ldGhvZCk6IFVzZSBuZXcgaG9vay4KCSogbGFuZy5jIChMQU5HX0hPT0tTX0RFQ0xfUFJJTlRBQkxFX05BTUUpOiBSZWRlZmluZS4KCShqYXZhX2luaXQpOiBSZW1vdmUgb2xkIGhvb2suCgoyMDAyLTAzLTE4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGRlZmluZV9idWlsdGluKTogRG8gbm90aGluZyBpZiBgdHlwZScgaXMgbnVsbC4KCUZpeGVzIFBSIGphdmEvNTg3Ni4KCjIwMDItMDMtMTggIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIHBhcnNlLnkgKHBhcnNlcl9jaGVja19zdXBlcl9pbnRlcmZhY2UpOiBGaXggZXJyb3IgbWVzc2FnZQoJZ3JhbW1hci9vcmRlci4KCjIwMDItMDMtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGpjZi1wYXJzZS5jIChnZXRfY29uc3RhbnQpOiBEZWxldGUgdW51c2VkIHZhcmlhYmxlcy4KCjIwMDItMDMtMTcgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGphdmEtdHJlZS5oIChqYXZhX3BhcnNlX2ZpbGUpOiBOZXcuCgkqIGpjZi1wYXJzZS5jICh5eXBhcnNlKTogUmVuYW1lIGphdmFfcGFyc2VfZmlsZS4KCSogbGFuZy5jIChMQU5HX0hPT0tTX1BBUlNFX0ZJTEUpOiBSZWRlZmluZS4KCjIwMDItMDMtMTYgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIHBhcnNlLnkgKGNyYWZ0X2NvbnN0cnVjdG9yKTogUmV0dXJuIHRoZSBjb25zdHJ1Y3RvciBkZWNsLgoJKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBVcGRhdGUgY29tbWVudHMuCgkobG9va3VwX21ldGhvZF9pbnZva2UpOiBDYWxsIGZpeF9jb25zdHJ1Y3RvcnMgaW1tZWRpYXRlbHkgZm9yCglhbm9ueW1vdXMgY2xhc3MuIEZpeGVzIFBSIGphdmEvNTkzNS4KCjIwMDItMDMtMTUgIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgoKCSogamNmLXBhcnNlLmMgKHl5cGFyc2UpOiBEb24ndCBlbWl0IGNsYXNzIHJlZ2lzdHJhdGlvbgoJY29uc3RydWN0b3Igd2hlbiBjb21waWxpbmcgcmVzb3VyY2UgZmlsZXMuCgoyMDAyLTAzLTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsYW5nLmMgKGphdmFfdHJlZV9jb2RlX3R5cGUsIGphdmFfdHJlZV9jb2RlX2xlbmd0aCwKCXRyZWVfY29kZV9uYW1lKTogRGVsZXRlLgoJKHRyZWVfY29kZV90eXBlLCB0cmVlX2NvZGVfbGVuZ3RoLCB0cmVlX2NvZGVfbmFtZSk6IERlZmluZS4KCShqYXZhX2luaXQpOiBEb24ndCB0cnkgdG8gY29weSBpbnRvIHRoZSB2YXJpb3VzIHRyZWVfY29kZQoJYXJyYXlzLgoKMjAwMi0wMy0xMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamNmLXBhcnNlLmMgKGdldF9jb25zdGFudCkgW0NPTlNUQU5UX1N0cmluZ106IFN0cmluZyB2YWx1ZXMgYXJlCglVVEYtOCwgbm90IFVDUy0yLiAgRml4ZXMgUFIgamF2YS81OTIzLgoKCSogcGFyc2UueSAocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IEhhbmRsZSBjYXNlIHdoZXJlIFFVQUxfV0ZMIGlzCglhIGNhbGxfZXhwciB3cmFwcGVkIGluIGEgY29udmVydC4gIEZpeGVzIFBSIGphdmEvNTg0OC4KCjIwMDItMDMtMTIgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIGpjZi13cml0ZS5jICh3cml0ZV9jbGFzc2ZpbGUpOiBJbXByb3ZlIGVycm9yIHN0cmluZ3MuCgoyMDAyLTAzLTExICBFcmljIEJsYWtlICA8ZWJiOUBlbWFpbC5ieXUuZWR1PgoKCSogbGV4LmM6IEFkanVzdCBjb21tZW50cyB0byBHTlUgc3RhbmRhcmRzLgoKMjAwMi0wMy0xMSAgRXJpYyBCbGFrZSAgPGViYjlAZW1haWwuYnl1LmVkdT4KCglGaXggZm9yIFBSIGphdmEvNTkwMjoKCSogbGV4LmMgKGphdmFfbGV4KTogRml4IHBhcnNpbmcgb2YgbGl0ZXJhbHMuCgoyMDAyLTAzLTExICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBwYXJzZS55IChwYXRjaF9hc3NpZ25tZW50KTogV3JhcCB0aGUgcmlnaHQtaGFuZC1zaWRlIHdpdGggYSBzYXZlX2V4cHIKCXRvIHByZXZlbnQgaXQgZ2V0dGluZyBldmFsdWF0ZWQgdHdpY2UgaW4gdGhlIHN0b3JlIGNoZWNraW5nIGNhc2UuCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9hcnJheXN0b3JlX2NoZWNrKTogVW53cmFwIFNBVkVfRVhQUidzIHdoZW4KCWV4YW1pbmluZyBPQkpFQ1QuCgoyMDAyLTAzLTA5ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBNYWtlIHN1cmUgY2xhc3NfdHlwZV9ub2RlCglhbGlnbm1lbnQgaXMgbm90IGxlc3MgdGhhbiA2NCBiaXRzIGlmIGhhc2ggc3luY2hyb25pemF0aW9uIGlzIGVuYWJsZWQuCgoyMDAyLTAzLTA4ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogIENoZWNrIGlmIHBhdGNoX2Fzc2lnbm1lbnQKCXJldHVybmVkIGFuIGVycm9yLW1hcmsuCgoJKiBwYXJzZS55ICh0cnlfYnVpbHRpbl9hc3NpZ25jb252KTogIERvbid0IHNwZWNpYWwtY2FzZSB6ZXJvLgoKMjAwMi0wMy0wOCAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJRml4IGZvciBQUiBqYXZhLzU4MTIuCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9qc3IpOiAgVGFrZSBwYyBhcmd1bWVudHMsIGFuZCBkbyBsb29rdXBfbGFiZWwKCWhlcmUgaW5zdGVhZCBvZiBpbiBKU1IgbWFjcm8uICBMaWtld2lzZSB3aXRoIGxvYWRfdHlwZV9zdGF0ZSBjYWxsLgoJRG8gdGhlIGxhdHRlciBvbiBpZiB0aGUgcmV0dXJuX3BjIGhhcyBiZWVuIHZlcmlmaWVkICh0aGUganNyIHJldHVybnMpLgoJKEpTUik6ICBOb3cganVzdCBjYWxsIGJ1aWxkX2phdmFfanNyLgoKMjAwMi0wMy0wNyAgSmVmZiBTdHVybSAgPGpzdHVybUBvbmUtcG9pbnQuY29tPgoKCSogamF2YS9NYWtlLWxhbmcuaW4gKEpBVkFfVEFSR0VUX0lOU1RBTExfTkFNRSk6IERlZmluZS4KCShqYXZhLmluc3RhbGwtY29tbW9uKTogTGluayBuYXRpdmUgZHJpdmVyIHRvCglKQVZBX1RBUkdFVF9JTlNUQUxMX05BTUUuCgoyMDAyLTAzLTA1ICBEYXZpZCBCaWxsaW5naHVyc3QgPERhdmlkLkJpbGxpbmdodXJzdEByaW90aW50by5jb20+CgoJKiBidWlsdGlucy5jKGNvc19idWlsdGluKTogbWV0aG9kX3JldHVybl90eXBlIEFUVFJJQlVURV9VTlVTRUQKCSogYnVpbHRpbnMuYyhzaW5fYnVpbHRpbik6IExpa2V3aXNlCgkqIGJ1aWx0aW5zLmMoc3FydF9idWlsdGluKTogTGlrZXdpc2UKCjIwMDItMDMtMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBqYXZhL2V4cHIuYywgamF2YS9qY2YtcGFyc2UuYywgamF2YS9sZXguYzoKCVJlbW92ZSBhbGwgI2lmbmRlZiBSRUFMX0FSSVRITUVUSUMgYmxvY2tzLCBtYWtlIGFsbCAjaWZkZWYKCVJFQUxfQVJJVEhNRVRJQyBibG9ja3MgdW5jb25kaXRpb25hbC4gIERlbGV0ZSBzb21lIGZ1cnRoZXIKCSNpZmRlZiBibG9ja3MgcHJlZGljYXRlZCBvbiBSRUFMX0FSSVRITUVUSUMuCgoyMDAyLTAzLTAzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjbGFzcy5jIChpbml0X2NsYXNzX3Byb2Nlc3NpbmcpOiBVc2UgQVJSQVlfU0laRSBpbiBsaWV1IG9mCglleHBsaWNpdCBzaXplb2Yvc2l6ZW9mLgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCSogamNmLXBhcnNlLmMgKGluaXRfamNmX3BhcnNlKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKGluaXRfc3JjX3BhcnNlKTogTGlrZXdpc2UuCgoyMDAyLTAzLTAyICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCglNYWtlIC0tQ0xBU1NQQVRIIGJ5IGEgc3lub255bSBmb3IgLS1jbGFzc3BhdGggYW5kIC1jbGFzc3BhdGguCglJbXBsZW1lbnQgLS1ib290Y2xhc3NwYXRoLgoJKiBqY2YtcGF0aC5jIChjbGFzc3BhdGhfdSk6ICBSZW5hbWUgc3RhdGljIHZhcmlhYmxlIHRvIGNsYXNzcGF0aF91c2VyLgoJKGNsYXNzcGF0aF9sKTogIFJlbW92ZS4KCShqY2ZfcGF0aF9DTEFTU1BBVEhfYXJnKTogIFJlbW92ZS4KCShqY2ZfcGF0aF9ib290Y2xhc3NwYXRoX2FyZyk6ICBOZXcgZnVuY3Rpb24uCgkoamNmX3BhdGhfc2VhbCk6ICBTaW1wbGlmeSBhY2NvcmRpbmdseS4KCgkqIGpjZi5oIChqY2ZfcGF0aF9ib290Y2xhc3NwYXRoX2FyZyk6ICBOZXcgZGVjbGFyYXRpb25zLgoJKGpjZl9wYXRoX0NMQVNTUEFUSCk6ICBSZW1vdmUgZGVjbGFyYXRpb24uCgkqIGp2c3BlYy5jIChqdmdlbm1haW5fc3BlYyk6ICBBbHNvIGFjY2VwdCAtZmJvb3RjbGFzc3BhdGgqLgoJKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogIFRyYW5zbGF0ZSAtYm9vdGNsYXNzcGF0aC4KCSogbGFuZy1vcHRpb25zLmg6ICBBZGQgLS1ib290Y2xhc3NwYXRoLiAgVXBkYXRlIC0tQ0xBU1NQQVRILgoJKiBsYW5nLmMgKGRlY29kZV9sYW5nX29wdGlvbnMpOiAgRG8gamNmX3BhdGhfaW5pdCBmaXJzdC4KCUhhbmRsZSAtZkNMQVNTUEFUSCBzYW1lIGFzIC1mY2xhc3NwYXRoLiAgQWxzbyBwcm9jZXNzIC1mYm9vdGNsYXNzcGF0aC4KCSogZ2phdmFoLmM6ICBBbHNvIGhhbmRsZSAtLWJvb3RjbGFzc3BhdGguCglIYW5kbGUgLS1DTEFTU1BBVEggYXMgYSBzeW5vbnVtIGZvciAtLWNsYXNzcGF0aC4KCSogamNmLWR1bXAuYzogTGlrZXdpc2UuCgoJIi4iIGlzIG5vdCBwYXJ0IG9mIHN5c3RlbSBwYXRoLCBidXQgaXMgdGhlIGRlZmF1bHQgZm9yIC0tY2xhc3NwYXRoLgoJKiBqY2YtcGF0aC5jIChqY2ZfcGF0aF9pbml0KTogIERvbid0IGFkZCAiLiIgdG8gc3lzX2RpcnMuCgkoamNmX3BhdGhfc2VhbCk6ICBBZGQgIi4iIGlmIG5vIENMQVNTUEFUSCBzcGVjaWZpZWQuCgoJKiBnY2oudGV4aTogIERvY3VtZW50IGNoYW5nZXMuCgoyMDAyLTAzLTAxICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBleHByLmMgKGJ1aWxkX2phdmFfYXJyYXlzdG9yZV9jaGVjayk6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMi0wMi0yOCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJRml4IGZvciBQUiBqYXZhLzU3NTgsIGphdmEvNTYzMjoKCSogamNmLXBhcnNlLmMgKGxvYWRfY2xhc3MpOiBSZW5hbWVkIGxvY2FsIHZhcmlhYmxlLCBjb25zaWRlciBgLicgYW4KCWlubmVyLWNsYXNzIHNlcGFyYXRvciB0b28uCgkqIHBhcnNlLnkgKGRvX3Jlc29sdmVfY2xhc3MpOiBOZXcgbG9jYWwgYGRlY2xfcmVzdWx0LicKCVByb2dyZXNzaXZlbHkgYnVpbGQgYSBuYW1lIGZvciB3aGF0IGNhbiBoYXZlIGJlZW4gbG9hZGVkLgoKMjAwMi0wMi0yOCAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogZXhwci5jIChqYXZhX2FycmF5X2RhdGFfb2Zmc2V0KTogUmVtb3ZlZCBmdW5jdGlvbi4KCShKQVZBX0FSUkFZX0xFTkdUSF9PRkZTRVQpOiBSZW1vdmVkIG1hY3JvLgoJKGJ1aWxkX2phdmFfYXJyYXlfbGVuZ3RoX2FjY2Vzcyk6IE9idGFpbiAibGVuZ3RoIiB2YWx1ZSB1c2luZyBhCglDT01QT05FTlRfUkVGLCBpbnN0ZWFkIG9mIElORElSRUNUX1JFRiBhbmQgYXJpdGhtZXRpYy4KCShidWlsZF9qYXZhX2FycmF5YWNjZXNzKTogQ29ycmVjdCBjb21tZW50LiBBY2Nlc3MgImRhdGEiIHVzaW5nIGEKCUNPTVBPTkVOVF9SRUYsIGFuZCByZXR1cm4gYW4gQVJSQVlfUkVGIGluc3RlYWQgb2YgYW4gSU5ESVJFQ1RfUkVGLgoJKGJ1aWxkX2phdmFfYXJyYXlzdG9yZV9jaGVjayk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfamF2YV9hcnJheXN0b3JlKTogVXNlIGJ1aWxkX2phdmFfYXJyYXlzdG9yZV9jaGVjay4KCSogcGFyc2UueSAocGF0Y2hfYXNzaWdubWVudCk6IFNpbXBsaWZ5IGNvZGUgdG8gaW5zZXJ0IGEgc3RvcmUgY2hlY2sKCXdoZW4gbHZhbHVlIGlzIGFuIEFSUkFZX1JFRi4gVXNlIGJ1aWxkX2phdmFfYXJyYXlzdG9yZV9jaGVjay4KCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogVXBkYXRlIHRvIHJlZmxlY3QgdGhhdCBhbiBhcnJheSBsZW5ndGgKCWFjY2VzcyBpcyBub3cgYSBDT01QT05FTlRfUkVGLgoJKiBnY2oudGV4aSAoQ29kZSBHZW5lcmF0aW9uKTogSW1wcm92ZSBkb2N1bWVudGF0aW9uIG9mCgktZm5vLWJvdW5kcy1jaGVjay4gQWRkIGRvY3VtZW50YXRpb24gZm9yIC1mbm8tc3RvcmUtY2hlY2suCgkqIGphdmEtdHJlZS5oIChmbGFnX3N0b3JlX2NoZWNrKTogRGVjbGFyZS4KCShidWlsZF9qYXZhX2FycmF5c3RvcmVfY2hlY2spOiBEZWNsYXJlLgoJKiBsYW5nLmMgKGZsYWdfc3RvcmVfY2hlY2spOiBJbml0aWFsaXplIHRvIDEuCgkobGFuZ19mX29wdGlvbnMpOiBBZGQgc3RvcmUtY2hlY2sgb3B0aW9uLgoJKiBqdnNwZWMuYzogRG9uJ3QgcGFzcyBzdG9yZS1jaGVjayBvcHRpb24gdG8ganZnZW5tYWluLgoJKiBsYW5nLW9wdGlvbnMuaDogQWRkIGhlbHAgc3RyaW5nIGZvciAtZm5vLXN0b3JlLWNoZWNrLgoKMjAwMi0wMi0yOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogZGVjbC5jIChjb3B5X2xhbmdfZGVjbCk6IFJlbmFtZSBqYXZhX2R1cF9sYW5nX3NwZWNpZmljX2RlY2wuCgkqIGphdmEtdHJlZS5oIChqYXZhX2R1cF9sYW5nX3NwZWNpZmljX2RlY2wpOiBOZXcuCgkqIGxhbmcuYyAoTEFOR19IT09LU19EVVBfTEFOR19TUEVDSUZJQ19ERUNMKTogUmVkZWZpbmUuCgoyMDAyLTAyLTI3ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYnVpbHRpbnMuYywgZGVjbC5jOiBEZWxldGUgdHJhZGl0aW9uYWwtbW9kZS1yZWxhdGVkIGNvZGUKCWNvcGllZCBmcm9tIHRoZSBDIGZyb250IGVuZCBidXQgbm90IHVzZWQsIG9yIHVzZWQgb25seSB0bwoJcGVybWl0IHRoZSBjb21waWxlciB0byBsaW5rLgoKMjAwMi0wMi0yMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCUZpeCBmb3IgUFIgamF2YS8yMzY5OgoJKiBqdnNwZWMuYyAodmVyaWZ5X2NsYXNzX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBDYWxsIGl0LgoJKEpBVkFfU1RBUlRfQ0hBUl9QKTogTmV3IG1hY3JvLgoJKEpBVkFfUEFSVF9DSEFSX1ApOiBMaWtld2lzZS4KCjIwMDItMDItMjIgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogY2xhc3MuYzogIENoYW5nZSB2dGFibGUgdG8gYmUgbW9yZSBjb21wYXRpYmxlIHdpdGggZysrIHYzIGFiaS4KCShnZXRfZGlzcGF0Y2hfdGFibGUpOiAgUHJlcGVuZCBvZmZzZXQtdG8tdG9wIChhbHdheXMgMCkgYW5kCgl0eXBlX2luZm8gcG9pbnRlciAoY3VycmVudGx5IHVuaW1wbGVtZW50ZWQgaGVuY2UgTlVMTCkgdG8gdnRhYmxlLgoJU3BlY2lmaWNhbGx5LCBwcmVwZW5kIG9mZnNldC10by10b3AgYW5kIHR5cGVpbmZvIHB0ciAoY3VycmVudGx5IG51bGwpLgoJKG1ha2VfY2xhc3NfZGF0YSk6ICBWYXJpYWJsZSBkdGFibGVfc3RhcnRfb2Zmc2V0IGlzIHNpemVvZiAyIHBvaW50ZXJzLgoJQWRqdXN0IHZ0YWJsZSBwb2ludGVycyBieSBkdGFibGVfc3RhcnRfb2Zmc2UgLSBpLmUuIHNraXAgbmV3IHdvcmRzLgoJKGJ1aWxkX2R0YWJsZV9kZWNsKTogIEFkZCBkZWNsYXJhdGlvbnMgZm9yIG5ldyBmaWVsZHMuCgoyMDAyLTAyLTIwICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogU2V0IENBTl9DT01QTEVURV9OT1JNQUxMWSBvbiBjYWxsCgl0byBmaW5pdCQgKG90aGVyd2lzZSBnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyBkcm9wcyBpdCkuIEhvd2V2ZXIsIHdlCglkb24ndCBuZWVkIHRvIHNldCBpdCBvbiB0aGUgQ09NUE9VTkRfRVhQUiAtIHRoZSBjYWxsZXIgZG9lcyB0aGF0LgoKMjAwMi0wMi0yMCAgTmljIEZlcnJpZXIgIDxuZmVycmllckB0YXBzZWxsZmVycmllci5jby51az4KCgkqIGdjai50ZXhpOiBPcHRpb24gYC0tY2xhc3NwYXRoJyBiZWNvbWVzIGAtLUNMQVNTUEFUSC4nT3B0aW9uCglgLS1DTEFTU1BBVEgnIGJlY29tZXMgYC0tY2xhc3NwYXRoLicKCSogZ2phdmFoLmM6IExpa2V3aXNlLgoJKiBqY2YtZHVtcC5jOiBMaWtld2lzZS4KCSogbGFuZy1vcHRpb25zLmg6IExpa2V3aXNlLgoJKiBsYW5nLmM6IExpa2V3aXNlLgoJKiBqY2YtcGF0aC5jOiBVcGRhdGVkIGNvbW1lbnQuCgkoamNmX3BhdGhfY2xhc3NwYXRoX2FyZyk6IFJlbmFtZWQgYGpjZl9wYXRoX0NMQVNTUEFUSF9hcmcuJwoJKGpjZl9wYXRoX0NMQVNTUEFUSF9hcmcpOiBSZW5hbWVkIGBqY2ZfcGF0aF9jbGFzc3BhdGhfYXJnLicKCSogamNmLmggKGpjZl9wYXRoX0NMQVNTUEFUSF9hcmcpOiBEaXR0by4KCShqY2ZfcGF0aF9DTEFTU1BBVEhfYXJnKTogRGl0dG8uCgkoY2xhc3NwYXRoX3UpOiBVcGRhdGVkIGxlYWRpbmcgY29tbWVudC4KCjIwMDItMDItMjAgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogYnVpbHRpbnMuYyAoY2hlY2tfZm9yX2J1aWx0aW4pOiAgTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX2NhbGxfb3JfYnVpbHRpbik6ICBSZW1vdmUuCgkqIGphdmEtdHJlZS5oOiAgVXBkYXRlIGFjY29yZGluZ2x5LgoJKiBleHByLmMgKGV4cGFuZF9pbnZva2UpOiAgVXNlIGJ1aWxkICsgY2hlY2tfZm9yX2J1aWx0aW4gaW5zdGVhZAoJb2YgYnVpbGRfY2FsbF9vcl9idWlsdGluLgoJKiBwYXJzZS55IChwYXRjaF9pbnZva2UpOiAgTGlrZXdpc2UuICBUaGlzIGF2b2lkcyBuZWVkbGVzc2x5IGNyZWF0aW5nCglhIG5ldyBDQUxMX0VYUFIgbm9kZSwgd2hpY2ggbWVhbnMgd2UgZG9uJ3QgbG9zZSB0aGUgQ0FMTF9VU0lOR19TVVBFUgoJZmxhZyAod2hpY2ggaGFkIGNhdXNlZCBqY2Ytd3JpdGUgdG8gaW5jb3JyZWN0bHkgZW1pdCBpbnZva2V2aXJ0dWFsKS4KCjIwMDItMDItMTcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGphdmEtdHJlZS5oIChUWVBFX1NUUklDVEZQKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBsYW5nX3R5cGUpIFtzdHJpY3RmcF06IE5ldyBmaWVsZC4KCShDTEFTU19TVFJJQ1RGUCk6IE5ldyBtYWNyby4KCShNRVRIT0RfU1RSSUNURlApOiBOZXcgbWFjcm8uCgkoc3RydWN0IGxhbmdfZGVjbCkgW3N0cmljdGZwXTogTmV3IGZpZWxkLgoJKiBwYXJzZS55IChtZXRob2RfaGVhZGVyKTogRGlzYWxsb3cgc3RyaWN0ZnAgY29uc3RydWN0b3Igb3IKCWFic3RyYWN0IG1ldGhvZC4KCShTVFJJQ1RfVEspOiBNb3ZlIGJlZm9yZSBNT0RJRklFUl9USy4KCSogcGFyc2UuaCAoQ0xBU1NfTU9ESUZJRVJTKTogQWRkZWQgQUNDX1NUUklDVC4KCShNRVRIT0RfTU9ESUZJRVJTKTogTGlrZXdpc2UuCgkoSU5URVJGQUNFX01PRElGSUVSUyk6IExpa2V3aXNlLgoJKiBqY2Ytd3JpdGUuYyAoZ2V0X2FjY2Vzc19mbGFncyk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChzZXRfY2xhc3NfZGVjbF9hY2Nlc3NfZmxhZ3MpOiBSZWNvZ25pemUgQUNDX1NUUklDVC4KCShhZGRfbWV0aG9kXzEpOiBMaWtld2lzZS4KCShnZXRfYWNjZXNzX2ZsYWdzX2Zyb21fZGVjbCk6IExpa2V3aXNlLgoJKiBqY2YtZHVtcC5jIChwcmludF9hY2Nlc3NfZmxhZ3MpOiBQcmludCBpbiBzdGFuZGFyZCBvcmRlci4gIEFsc28sCglyZWNvZ25pemUgc3RyaWN0ZnAgZmxhZy4KCSogamNmLmggKEFDQ19TVFJJQ1QpOiBOZXcgZGVmaW5lLgoKMjAwMi0wMi0xMiAgRGF2aWQgQmlsbGluZ2h1cnN0IDxEYXZvZC5CaWxsaW5naHVyc3RAcmlvdGludG8uY29tPgoKCSogY2xhc3MuYyhidWlsZF91dGY4X3JlZik6IE1vdmUgZGVjbGFyYXRpb24gb2YgZGVjbF9zaXplCgoyMDAyLTAyLTA3ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAoSW5wdXQgT3B0aW9ucyk6IC0tQ0xBU1NQQVRIIGRvZXMgbm90IHN1cHByZXNzIHN5c3RlbQoJcGF0aC4KCjIwMDItMDItMDQgIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfdXRmOF9yZWYpOiBQdXQgVVRGLTggY29uc3RhbnRzIGludG8gbWVyZ2VkCglzZWN0aW9ucyBpZiBhdmFpbGFibGUuCgoyMDAyLTAyLTA0ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBwYXJzZS55IChqYXZhX2V4cGFuZF9jbGFzc2VzKTogRml4IHR5cG8gaW4gc3RhdGljIGZpZWxkIGxvb3AuCgoyMDAyLTAyLTAyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoYWRkX2ZpZWxkKTogTWFyayBzdGF0aWMgZmllbGRzIGV4dGVybmFsLgoJKGJ1aWxkX2NsYXNzX3JlZik6IFJlbW92ZSByZWR1bmRhbnQgc2V0LgoJKiBwYXJzZS55IChqYXZhX2V4cGFuZF9jbGFzc2VzKTogTWFyayBzdGF0aWMgZmllbGRzIG9mIGNsYXNzZXMKCXRvIGJlIGNvbXBpbGVkIGFzIGxvY2FsLgoJKiBqY2YtcGFyc2UuYyAocGFyc2VfY2xhc3NfZmlsZSk6IExpa2V3aXNlLgoKMjAwMi0wMi0wMiAgTmljIEZlcnJpZXIgIDxuZmVycmllckB0YXBzZWxsZmVycmllci5jby51az4KCgkqIGdjai50ZXhpIChBYm91dCBDTkkpOiBOZXcgbm9kZS4KCjIwMDItMDItMDEgIENyYWlnIFJvZHJpZ3VlcyAgPHJvZHJpZ2NAZ2NjLmdudS5vcmc+CgoJUFIgamF2YS81MDgwCgkqIGpjZi1wYXJzZS5jIDogQ2hlY2sgZm9yIEhBVkVfTE9DQUxFX0ggYmVmb3JlIHVzaW5nCglzZXRsb2NhbGUoKSB3aXRoIExDX0NUWVBFIGFzIGEgcGFyYW1ldGVyLgoJKiBqdi1zY2FuLmM6IFNhbWUuCgoyMDAyLTAxLTMxICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnamF2YWguYyAodmVyc2lvbiksIGpjZi1kdW1wLmMgKHZlcnNpb24pLCBqdi1zY2FuLmMgKHZlcnNpb24pOgoJRm9sbG93IEdOVSBDb2RpbmcgU3RhbmRhcmRzIGZvciAtLXZlcnNpb24uCgoyMDAyLTAxLTI4ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2puaV9zdHViKTogRW5zdXJlIHN0b3JhZ2UgZm9yIGBtZXRoJyBpcwoJZ2VuZXJhdGVkLgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogU2V0CgljdXJyZW50X2Z1bmN0aW9uX2RlY2wgYmVmb3JlIGJ1aWxkaW5nIEpOSSBzdHViLgoKMjAwMi0wMS0yNiBBbmRyZWFzIFRvYmxlciA8YS50b2JsZXJAc2Nod2Vpei5jaD4KCgkqIGdjYy9qYXZhL2J1aWx0aW5zLmMgKHNxcnRfYnVpbHRpbik6IFVzZSBCVUlMVF9JTl9TUVJULCBub3QKCUJVSUxUX0lOX1NRUlRGLgoKMjAwMi0wMS0yMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogVXNlIGFkZF9wcmVkZWZpbmVkX2ZpbGUuCglQcmVkZWZpbmUgUmF3RGF0YS5qYXZhLgoJKHByZWRlZl9maWxlbmFtZXMpOiBSZW1vdmVkLgoJKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCByZWdpc3RlciBwcmVkZWZfZmlsZW5hbWVzLgoJKiBqY2YtcGFyc2UuYyAoYWRkX3ByZWRlZmluZWRfZmlsZSk6IE5ldyBmdW5jdGlvbi4KCShwcmVkZWZpbmVkX2ZpbGVuYW1lX3ApOiBSZXdyb3RlLgoJKHByZWRlZmluZWRfZmlsZW5hbWVfcCk6IE5vIGxvbmdlciBzdGF0aWMuCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IENhbGwgaW5pdGlhbGl6ZV9idWlsdGlucy4KCSogTWFrZS1sYW5nLmluIChKQVZBX09CSlMpOiBBZGRlZCBidWlsdGlucy5vLgoJKGphdmEvYnVpbHRpbnMubyk6IE5ldyB0YXJnZXQuCgkqIGJ1aWx0aW5zLmM6IE5ldyBmaWxlLgoJKiBwYXJzZS55IChwYXRjaF9pbnZva2UpOiBVc2UgYnVpbGRfY2FsbF9vcl9idWlsdGluLgoJKiBqYXZhLXRyZWUuaCAoYnVpbGRfY2FsbF9vcl9idWlsdGluKTogRGVjbGFyZS4KCShpbml0aWFsaXplX2J1aWx0aW5zKTogRGVjbGFyZS4KCShqYXZhX3NldF9leGNlcHRpb25fbGFuZ19jb2RlKTogUmVtb3ZlZCB1bnVzZWQgZGVjbGFyYXRpb24uCgkoUFJFREVGX0ZJTEVOQU1FU19TSVpFKTogUmVtb3ZlZC4KCShqYXZhX3RyZWVfaW5kZXgpOiBBZGRlZCBKVElfUFJFREVGX0ZJTEVOQU1FUy4KCShwcmVkZWZfZmlsZW5hbWVzKTogTmV3IGRlZmluZS4KCShhZGRfcHJlZGVmaW5lZF9maWxlKTogRGVjbGFyZS4KCShwcmVkZWZpbmVkX2ZpbGVuYW1lX3ApOiBEZWNsYXJlLgoJKiBleHByLmMgKGV4cGFuZF9pbnZva2UpOiBVc2UgYnVpbGRfY2FsbF9vcl9idWlsdGluLgoKMjAwMi0wMS0yMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcGFyc2UueSAocGF0Y2hfc3dpdGNoX3N0YXRlbWVudCk6IEZpeCBmb3JtYXQgc3BlY2lmaWVyLgoKMjAwMi0wMS0xNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCU1vcmUgZm9yIFBSIGphdmEvNTM2NToKCSogZ2phdmFoLmMgKHByaW50X3N0dWJfb3Jfam5pKTogQ2F1c2UgZXhjZXB0aW9uIHRvIGJlIHRocm93biBieQoJZGVmYXVsdC4KCShwcm9jZXNzX2ZpbGUpOiBHZW5lcmF0ZSBpbmNsdWRlIGZvcgoJamF2YS5sYW5nLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9ucy4KCjIwMDItMDEtMTUgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIC5jdnNpZ25vcmU6IEFkZCBtYW4gcGFnZXMuCgoyMDAyLTAxLTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRml4IGZvciBQUiBqYXZhLzUzNjU6CgkqIGdqYXZhaC5jIChwcm9jZXNzX2ZpbGUpOiBUdXJuIGNsYXNzIG5hbWUgaW50byBhIGZpbGUgbmFtZS4KCjIwMDItMDEtMTQgIE1hdHRoaWFzIEtsb3NlICA8ZG9rb0BkZWJpYW4ub3JnPgoKCSogZ2NqLnRleGk6IEZpeCB3aGl0ZXNwYWNlIGFuZCBmb3JtYXR0aW5nIGVycm9ycyBpbiB0aGUKCXN5bm9wc2lzIG9mIHRoZSBtYW4gcGFnZXMuIFVwZGF0ZSBjb3B5cmlnaHQuCgoyMDAyLTAxLTE0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRm9yIFBSIGxpYmdjai81MzAzOgoJKiBNYWtlLWxhbmcuaW4gKGphdmEuaW5zdGFsbC1tYW4pOiBIYW5kbGUganYtY29udmVydCBtYW4gcGFnZS4KCShqYXZhLmdlbmVyYXRlZC1tYW5wYWdlcyk6IEFkZGVkIGp2LWNvbnZlcnQuMS4KCShqYXZhLnVuaW5zdGFsbCk6IFJlbW92ZSBqdi1jb252ZXJ0LjEuCgkoamF2YS5tYWludGFpbmVyLWNsZWFuKTogTGlrZXdpc2UuCgkoJChzcmNkaXIpL2phdmEvanYtY29udmVydC4xKTogTmV3IHRhcmdldC4KCSogZ2NqLnRleGkgKFRvcCk6IExpbmsgdG8ganYtY29udmVydCBub2RlLgoJKEluZGl2aWR1YWwgdXRpbGl0aWVzKTogTGlrZXdpc2UuCgkoSW52b2tpbmcganYtY29udmVydCk6IE5ldyBub2RlLgoKMjAwMS0wMS0xMCAgSmVmZiBTdHVybSAgPGpzdHVybUBvbmUtcG9pbnQuY29tPgoJICAgIE1hcnRpbiBLYWhsZXJ0ICA8bWFydGluLmthaGxlcnRAaW5maW5lb24uY29tPgoKCSogamNmLXBhcnNlLmMgKGdldF9jb25zdGFudCk6IERvbid0IHN3YXAgbG8vaGkgZm9yIGJpZwoJZW5kaWFuIHRhcmdldHMgd2hlbiBIT1NUX0JJVFNfUEVSX1dJREVfSU5UID49IDY0LgoKMjAwMi0wMS0wMyAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0ByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoY29tcGlsZV9yZXNvdXJjZV9maWxlKTogVXBkYXRlIGNvcHlyaWdodCBkYXRlLgoJQ29uc3RpZnkgZmlsZW5hbWUgcGFyYW1ldGVyLgoJKGphdmEtdHJlZS5oKTogVXBkYXRlIGNvcHlyaWdodCBkYXRlLgoJKGNvbXBpbGVfcmVzb3VyY2VfZmlsZSk6IENvbnN0aWZ5IGZpbGVuYW1lIHBhcmFtZXRlci4KCjIwMDItMDEtMDMgIEdyYWhhbSBTdG90dCAgPGdyYWhhbXNAcmVkaGF0LmNvbT4KCgkqIGdjYy9qY2YtcGFyc2UuYzogVXBkYXRlIGNvcHlyaWdodCBkYXRlLgoJKHl5cGFyc2UpOiBDb25zdGlmeSByZXNvdXJjZV9maWxlbmFtZS4KCjIwMDItMDEtMDIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHBhcnNlLnkgKHNyY19wYXJzZV9yb290cyk6IERvbid0IG5lZWRsZXNzbHkgemVybyBpbml0LgoKMjAwMS0xMi0zMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoZHVtcF9qYXZhX3RyZWUpOiBOZXcgZnVuY3Rpb24uCgkoc291cmNlX2VuZF9qYXZhX21ldGhvZCk6IENhbGwgaXQuCgkoZW5kX2NsYXNzX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgkqIGxhbmcuYyAoamF2YV9kZWNvZGVfb3B0aW9uKTogQ2FsbCBkdW1wX3N3aXRjaF9wLgoKMjAwMS0xMi0yOCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2VuLXRhYmxlLnBsOiBEb24ndCBwcm9jZXNzIGNoYXJhY3RlcnMgYWZ0ZXIgXHVmZmZmLiAgQWRkZWQKCWNvbW1lbnQgcG9pbnRpbmcgdG8gaW5wdXQgZmlsZS4KCjIwMDEtMTItMjggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdlbi10YWJsZS5wbDogQ29uc3QtaWZ5IG91dHB1dC4gIERvY3VtZW50IHRoZSBsb2NhdGlvbiBvZiBhCglzdWl0YWJsZSB1bmljb2RlIGlucHV0IGZpbGUuCgoJKiBjaGFydGFibGVzLmg6IFJlZ2VuZXJhdGUuCgoyMDAxLTEyLTI2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjaGFydGFibGVzLmg6IENvbnN0LWlmeS4KCSogZ2phdmFoLmMgKG9wdGlvbnMpOiBMaWtld2lzZS4KCSogamNmLWR1bXAuYyAob3B0aW9ucyk6IExpa2V3aXNlLgoJKiBqdi1zY2FuLmMgKG9wdGlvbnMpOiBMaWtld2lzZS4KCSogbGV4LmMgKGphdmFfc3RhcnRfY2hhcl9wLCBqYXZhX3BhcnRfY2hhcl9wKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKGJpbm9wX2xvb2t1cCk6IExpa2V3aXNlLgoKMjAwMS0xMi0yMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluIChrZXl3b3JkLmgpOiBQYXNzIC1DIHRvIGdwZXJmIHRvIGNvbnN0LWlmeQoJdGhlIHN0YXRpYyBhcnJheXMgdGhhdCBhcmUgb3V0cHV0LgoJKiBqdnNwZWMuYyAoanZnZW5tYWluX3NwZWMpOiBNYWtlIHN0YXRpYy4KCSoga2V5d29yZC5ncGVyZiAoc3RydWN0IGphdmFfa2V5d29yZCwgamF2YV9rZXl3b3JkKTogQ29uc3QtaWZ5LgoJKiBrZXl3b3JkLmg6IFJlZ2VuZXJhdGUuCgkqIGxhbmcuYyAoc3RyaW5nX29wdGlvbiwgcHJvY2Vzc19vcHRpb25fd2l0aF9ubywgbGFuZ19mX29wdGlvbnMsCglsYW5nX1dfb3B0aW9ucyk6IENvbnN0LWlmeS4KCSogbGV4LmMgKGphdmFfbGV4KTogTGlrZXdpc2UuCgoyMDAxLTEyLTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYm9laG0uYyAoUFJPQ0VEVVJFX09CSkVDVF9ERVNDUklQVE9SKTogTWVyZ2UgaW50byAuLgoJKGdldF9ib2VobV90eXBlX2Rlc2NyaXB0b3IpOiAuLi4gaGVyZS4gIEFycmFuZ2UgZm9yIHRoZQoJVFJFRV9UWVBFIHRvIGdldCBzZXQgcHJvcGVybHkuCgoyMDAxLTEyLTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoY29tcGlsZV9yZXNvdXJjZV9maWxlKTogU2V0IFRSRUVfUFVCTElDIG9uIHRoZSBjb25zdHJ1Y3RvcgoJb25seSBpZiB0aGUgdGFyZ2V0IHJlcXVpcmVzIGNvbGxlY3QyLgoKCSogY2xhc3MuYyAoYnVpbGRfY2xhc3NfcmVmKTogTWFyayBfSnZfZm9vQ2xhc3MgREVDTF9FWFRFUk5BTC4KCjIwMDEtMTItMjAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGb3IgUFIgamF2YS80NTA5OgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocykgW0NPTVBPVU5EX0VYUFJdOiBDb3JyZWN0bHkgY29tcHV0ZQoJQ0FOX0NPTVBMRVRFX05PUk1BTExZIGZvciB0aGUgbm9kZS4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKSBbQ09NUE9VTkRfRVhQUl06IERvbid0CglnZW5lcmF0ZSBjb2RlIGZvciBzZWNvbmQgYnJhbmNoIGlmIGZpcnN0IGJyYW5jaCBjYW4ndCBjb21wbGV0ZQoJbm9ybWFsbHkuCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpIFtMT09QX0VYUFJdOiBEb24ndCBnZW5lcmF0ZSBgZ290bycgdG8KCXRoZSBsb29wIGhlYWQgaWYgdGhlIGxvb3AgYm9keSBjYW4ndCBjb21wbGV0ZSBub3JtYWxseS4KCjIwMDEtMTItMjAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGb3IgUFIgamF2YS80NzY2OgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpIFtUUllfRklOQUxMWV9FWFBSXTogSGFuZGxlCgljYXNlIHdoZXJlIGBmaW5hbGx5JyBjbGF1c2UgY2FuJ3QgY29tcGxldGUgbm9ybWFsbHkuCgoyMDAxLTEyLTIwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRml4ZXMgUFIgamF2YS81MDU3OgoJKiBwYXJzZS55IChhbmFseXplX2NsaW5pdF9ib2R5KTogQWRkZWQgdGhpc19jbGFzcyBwYXJhbWV0ZXIuCglDaGVjayBmb3IgbW9yZSBjYXNlcyB3aGVyZSB3ZSBtdXN0IGtlZXAgPGNsaW5pdD4uCgkobWF5YmVfeWFua19jbGluaXQpOiBDbGVhbmVkIHVwIGZsb3cgY29udHJvbC4KCjIwMDEtMTItMjAgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IGluaXRpYWxpemUKCWZpbml0X2xlZ19pZGVudGlmaWVyX25vZGUuCgkqIGphdmEtdHJlZS5oIChqYXZhX3RyZWVfaW5kZXgpOiBSZW1vdmUgSlRJX0ZJTklUX0xFR19JREVOVElGSUVSX05PREUuCgkoZmluaXRfbGVnX2lkZW50aWZpZXJfbm9kZSk6IFJlbW92ZS4KCShJRF9GSU5JVF9QKTogRG9uJ3QgY2hlY2sgZm9yIEpUSV9GSU5JVF9MRUdfSURFTlRJRklFUl9OT0RFLgoKMjAwMS0xMi0yMCAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogbWFuZ2xlLmMgKG1hbmdsZV9tZW1iZXJfbmFtZSk6IERvbid0IHNwZWNpYWwtY2FzZSBmb3IKCU5PX0RPTExBUl9JTl9MQUJFTC4KCSogbWFuZ2xlX25hbWUuYyAodW5pY29kZV9tYW5nbGluZ19sZW5ndGgpOiBMaWtld2lzZS4KCShhcHBlbmRfdW5pY29kZV9tYW5nbGVkX25hbWUpOiBMaWtld2lzZS4KCSogcGFyc2UueSAobWFrZV9uZXN0ZWRfY2xhc3NfbmFtZSk6IFJlbW92ZSBkZWFkIE5PX0RPTExBUl9JTl9MQUJFTAoJY29kZS4KCjIwMDEtMTItMjAgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9hcnJheV9sZW5ndGhfYWNjZXNzKTogRG9uJ3QgZm9yY2UgbnVsbCBwb2ludGVyCgljaGVjayB1bmxlc3MgZmxhZ19jaGVja19yZWZlcmVuY2VzIGlzIHNldC4KCjIwMDEtMTItMjAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGaXggZm9yIFBSIGphdmEvMzQxNzoKCSogcGFyc2UueSAocGF0Y2hfYXNzaWdubWVudCk6IEFkZGVkIHNwZWNpYWwgcHJvY2Vzc2luZyBmb3IKCWByZXR1cm4nLgoJKHBhdGNoX3JldHVybik6IERvbid0IGNvbnZlcnQgYm9vbGVhbnMgdG8gaW50ZWdlcnMsIGFuZCBkb24ndAoJc3BlY2lhbC1jYXNlIGBudWxsJy4KCjIwMDEtMTItMjAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGNvbmZpZy1sYW5nLmluIChkaWZmX2V4Y2x1ZGVzKTogUmVtb3ZlLgoKMjAwMS0xMi0xNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2NqLnRleGk6IFVwZGF0ZSBsaW5rIHRvIEdDQyBtYW51YWwuCgoyMDAxLTEyLTE3ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChsaW5rX25lc3RlZF9jbGFzc190b19lbmNsb3NpbmcpOiBSZW1vdmVkIHVzZWxlc3MKCXN0YXRlbWVudC4KCjIwMDEtMTItMTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIG1hbmdsZS5jIChtYW5nbGVfbWV0aG9kX2RlY2wpOiBOZXZlciBlbWl0IGBDMicgY29uc3RydWN0b3IuCglGaXhlcyBQUiBqYXZhLzUwODguCgoyMDAxLTEyLTE2ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBDaGFuZ2VMb2csIE1ha2UtbGFuZy5pbiwgY2xhc3MuYywgZXhwci5jLCBnY2oudGV4aSwgamF2YS10cmVlLmgsCglqY2YtcGFyc2UuYywgamNmLXdyaXRlLmMsIGxleC5jLCBwYXJzZS5oLCBwYXJzZS55LCB2ZXJpZnkuYzogRml4CglzcGVsbGluZyBlcnJvcnMuCgoyMDAxLTEyLTE2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsZXguYyAoamF2YV9yZWFkX3VuaWNvZGUsIGphdmFfbGV4KTogVXNlIGhleF9wL2hleF92YWx1ZS4KCjIwMDEtMTItMTYgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEJ1aWxkIG90YWJsZV90eXBlIGNvcnJlY3RseS4KCW90YWJsZV9kZWNsIGlzIGFuIG90YWJsZV90eXBlLgoKMjAwMS0xMi0xNSAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogamF2YS10cmVlLmggKG90YWJsZV9tZXRob2RzLCBvdGFibGVfZGVjbCwgb3RhYmxlX3N5bXNfZGVjbCwKCW90YWJsZV90eXBlLCBvdGFibGVfcHRyX3R5cGUsIG1ldGhvZF9zeW1ib2xfdHlwZSwKCW1ldGhvZF9zeW1ib2xzX2FycmF5X3R5cGUsIG1ldGhvZF9zeW1ib2xzX2FycmF5X3B0cl90eXBlKTogTmV3CglmaWVsZC9nbG9iYWwgdHJlZSBkZWZpbml0aW9ucy4KCShmbGFnX2luZGlyZWN0X2Rpc3BhdGNoKTogTmV3IGZsYWcuCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgbmV3IG90YWJsZSBhbmQKCW90YWJsZV9zeW1zIHR5cGUgbm9kZXMgYW5kIGRlY2xzLiBBZGQgbmV3IGZpZWxkICJpbmRleCIgdG8KCW1ldGhvZF90eXBlX25vZGUuCgkqIGNsYXNzLmMgKGJ1aWxkX21ldGhvZF9zeW1ib2xzX2VudHJ5KTogTmV3IGZ1bmN0aW9uLgoJKG1ha2VfbWV0aG9kX3ZhbHVlKTogU2V0ICJpbmRleCIgdG8gdG8gbWV0aG9kJ3MgdnRhYmxlIGluZGV4IGZvcgoJdmlydHVhbCBtZXRob2RzIHdoZW4gaW5kaXJlY3QtZGlzcGF0Y2ggaXMgbm90IHVzZWQuCgkobWFrZV9jbGFzc19kYXRhKTogRm9yIGluZGlyZWN0LWRpc3BhdGNoLCBkb24ndCBlbWl0IHRoZSBkdGFibGVfZGVjbCwKCWFuZCBzZXQgdnRhYmxlX21ldGhvZF9jb3VudCB0byAtMS4gU2V0IG90YWJsZSBhbmQgb3RhYmxlX3N5bXMgZmllbGQKCWlmIGluZGlyZWN0LWRpc3BhdGNoIGlzIHVzZWQgYW5kIHRoZXJlIHdhcyBzb21ldGhpbmcgdG8gcHV0IGluIHRoZW0uCgkoYnVpbGRfbWV0aG9kX3N5bWJvbHNfZW50cnkpOiBOZXcgZnVuY3Rpb24uCgkoZW1pdF9vZmZzZXRfc3ltYm9sX3RhYmxlKTogTmV3IGZ1bmN0aW9uLgoJKiBleHByLmMgKGdldF9vZmZzZXRfdGFibGVfaW5kZXgpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfaW52b2tldmlydHVhbCk6IEJ1aWxkIGFycmF5IHJlZmVyZW5jZSB0byBvdGFibGUgYXQgdGhlIGluZGV4CglyZXR1cm5lZCBieSBnZXRfb2Zmc2V0X3RhYmxlX2luZGV4LCBhbmQgdXNlIHRoZSByZXN1bHQgYXMgdGhlIHZ0YWJsZQoJb2Zmc2V0LgoJKGJ1aWxkX2ludm9rZWludGVyZmFjZSk6IFNpbWlsYXIuCgkqIGpjZi1wYXJzZS5jICh5eXBhcnNlKTogSWYgaW5kaXJlY3QtZGlzcGF0Y2gsIGNhbGwKCWVtaXRfb2Zmc2V0X3N5bWJvbF90YWJsZSBhdCB0aGUgZW5kIG9mIGNvbXBpbGF0aW9uLCBhZnRlciBhbGwgY2xhc3NlcwoJaGF2ZSBiZWVuIGdlbmVyYXRlZC4KCSoganZzcGVjLmM6IERvbid0IHBhc3MgZmluZGlyZWN0LWRpc3BhdGNoIHRvIGp2Z2VubWFpbi4KCSogbGFuZy5jIChmbGFnX2luZGlyZWN0X2Rpc3BhdGNoKTogRGVmaW5lLgoJKGxhbmdfZl9vcHRpb25zKTogQWRkIGluZGlyZWN0LWRpc3BhdGNoIGZsYWcuCgoyMDAxLTEyLTE0ICBNYXR0aGlhcyBLbG9zZSAgPGRva29AZGViaWFuLm9yZz4KCgkqIGdjai50ZXhpOiBNYXJrdXAgZm9yIG1hbiBwYWdlIGdlbmVyYXRpb24uIERvY3VtZW50IG1pc3NpbmcKCW9wdGlvbnMgcHJpbnRlZCBieSA8dG9vbD4gLS1oZWxwLgoJVGVybWluYXRlIGRlc2NyaXB0aW9uIG9mIGdpaidzIC1tcyBvcHRpb24gd2l0aCBhIGRvdC4KCSogTWFrZS1sYW5nLmluICgkKHNyY2RpcikvamF2YS8qLjEpOiBOZXcgdGFyZ2V0cy4KCShqYXZhLmdlbmVyYXRlZC1tYW5wYWdlcyBqYXZhLmluc3RhbGwtbWFuLCBqYXZhLnVuaW5zdGFsbCwKCWphdmEtbWFpbnRhaW5lci1jbGVhbikgVXBkYXRlZC4KCjIwMDEtMTItMTQgIEhhbnMgQm9laG0gIDxIYW5zX0JvZWhtQGhwLmNvbT4KCgkqIGNsYXNzLmMgKGdldF9kaXNwYXRjaF90YWJsZSk6IEZpeCBqYXZhIHZ0YWJsZSBsYXlvdXQKCWZvciBUQVJHRVRfVlRBQkxFX1VTRVNfREVTQ1JJUFRPUlMuCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUKCWFsbG9jX25vX2ZpbmFsaXplcl9ub2RlLCBmaW5hbGl6ZV9pZGVudGlmaWVyX25vZGUuCgkqIGV4cHIuYyAoY2xhc3NfaGFzX2ZpbmFsaXplX21ldGhvZCk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfamF2YV9ORVcpOiBHZW5lcmF0ZSBjYWxscyBmb3IgZmluYWxpemVyLWZyZWUgYWxsb2NhdGlvbi4KCShidWlsZF9pbnZva2V2aXJ0dWFsKTogRml4IGphdmEgdnRhYmxlIGxheW91dCBmb3IKCVRBUkdFVF9WVEFCTEVfVVNFU19ERVNDUklQVE9SUy4KCSogamF2YS10cmVlLmggKGVudW0gamF2YV90cmVlX2luZGV4KTogTmV3IGVudHJpZXM6CglKVElfQUxMT0NfTk9fRklOQUxJWkVSX05PREUsIEpUSV9GSU5BTElaRV9JREVOVElGSUVSX05PREUuCgkoYWxsb2Nfbm9fZmluYWxpemVyX25vZGUsIGZpbmFsaXplX2RlaW50aWZpZXJfbm9kZSk6IE5ldyBtYWNyb3MuCgkoY2xhc3NfaGFzX2ZpbmFsaXplX21ldGhvZCk6IGRlY2xhcmUuCgkoSEFTX0ZJTkFMSVpFUl9QKTogTmV3IG1hY3JvLgoJKiBwYXJzZS55IChwYXRjaF9pbnZva2UpOiBHZW5lcmF0ZSBjYWxscyBmb3IgZmluYWxpemVyLWZyZWUKCWFsbG9jYXRpb24uCgoyMDAxLTEyLTEyICBNYXR0aGlhcyBLbG9zZSAgPGRva29AZGViaWFuLm9yZz4KCgkqIE1ha2UtbGFuZy5pbjogSkFWQV9JTlNUQUxMX05BTUUsIEpBVkFfQ1JPU1NfTkFNRTogUmVtb3ZlCgl3aGl0ZXNwYWNlIGF0IGVuZCBvZiBsaW5lLgoKMjAwMS0xMi0xMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogbGV4LmMgKGphdmFfaW5pdF9sZXgpOiBEZWZpbmUgd2ZsX3RvX3N0cmluZyBhcwoJZ251Lmdjai5ydW50aW1lLlN0cmluZ0J1ZmZlciB1bmxlc3MgZ2VuZXJhdGluZyBieXRlY29kZS4KCjIwMDEtMTItMTEgIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfbWV0aG9kX3ZhbHVlKTogVXNlIG51bGxfcG9pbnRlcl9ub2RlIHRvCglyZXByZXNlbnQgZW1wdHkgZXhjZXB0aW9uIHRhYmxlLgoKMjAwMS0xMi0xMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KSBbU1dJVENIX0VYUFJdOiBVc2UgU1dJVENIX0hBU19ERUZBVUxULgoKMjAwMS0xMi0xMCAgRG91Z2xhcyBCLiBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoanZzcGVjLm8pOiBBZGQgJChPVVRQVVRfT1BUSU9OKS4KCjIwMDEtMTItMDkgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogY2hlY2staW5pdC5jIChjdXJyZW50X3N3aXRjaF9oYXNfZGVmYXVsdCk6ICBOZXcgc3RhdGljIGZpZWxkLgoJKGNoZWNrX2luaXQpOiAgQ2FzZSBERUZBVUxUX0VYUFI6IFNldCBjdXJyZW50X3N3aXRjaF9oYXNfZGVmYXVsdC4KCUNhc2UgU1dJVENIX0VYUFI6ICBTYXZlL3Jlc3RvcmUgY3VycmVudF9zd2l0Y2hfaGFzX2RlZmF1bHQuICBJZiBubwoJREVGQVVMVF9FWFBSIHNlZW4sIHNpbXVsYXRlIGEgZGVmYXVsdCBhbHRlcm5hdGl2ZSB0aGF0IGNvcGllcyBzdGF0ZS4KCjIwMDEtMTItMDkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IERvbid0IGFsbG93IHByZS0gb3IgcG9zdC0gaW5jcmVtZW50CglvciBkZWNyZW1lbnQgb2YgZmluYWwgdmFyaWFibGUuCgkoZmluYWxfYXNzaWduX2Vycm9yKTogTWlub3IgZXJyb3IgbWVzc2FnZSByZXdvcmRpbmcuCgoyMDAxLTEyLTA4ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqYXZhLXRyZWUuaDogRml4ZWQgdHlwby4KCgkqIGdqYXZhaC5jIChkZWNvbXBpbGVfbWV0aG9kKTogRG9uJ3QgZGVjb21waWxlIHRvIGByZXR1cm4gdGhpcycKCWZvciBzdGF0aWMgbWV0aG9kcy4KCgkqIGdqYXZhaC5jIChjeHhfa2V5d29yZHMpOiBSZS1zb3J0ZWQuCgkqIGxleC5jIChjeHhfa2V5d29yZHMpOiBSZS1zb3J0ZWQuCgoJKiBnamF2YWguYyAoSEFORExFX01FVEhPRCk6IFNldCBgZGVjb21waWxlZCcgYmVmb3JlIGRvaW5nIGFueXRoaW5nCgllbHNlLgoKCSogZ2phdmFoLmMgKHByaW50X25hbWVsZXQpOiBDbGVhciBzdWJuYW1lbGV0cy4KCShIQU5ETEVfTUVUSE9EKTogU2V0IGBtZXRob2RfcHJpbnRlZCcgZWFybGllci4KCjIwMDEtMTItMDcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGxhbmcuYyAobGFuZ19mX29wdGlvbnMpOiBBZGRlZAoJb3B0aW1pemUtc3RhdGljLWNsYXNzLWluaXRpYWxpemF0aW9uLgoJKGphdmFfZGVjb2RlX29wdGlvbik6IFJlbW92ZWQgc3BlY2lhbCBjYXNlLgoKMjAwMS0xMi0wNyAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiAgRml4IHR5cG8gZnJlZWluZyBtZW1vcnkgdHdpY2UuCgoyMDAxLTEyLTA1ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCglSZXN0b3JlIHN1cHBvcnQgZm9yIHN0YXRpYyBjbGFzcyBpbml0aWFsaXphdGlvbiBvcHRpbWl6YXRpb24uCgkqIGphdmEtdHJlZS5oIChTVEFUSUNfQ0xBU1NfSU5JVF9PUFRfUCk6IFJlLWVuYWJsZS4KCSogY2hlY2staW5pdC5jIChjaGVja19pbnQpOiAgQXQgZW5kIG9mIEJMT0NLIGhhbmRsZSBpbml0aWFsaXphdGlvbgoJYmxvY2tzLCB3aGljaCB1c2VkIHRvIGJlIGRvbmUgaW4gamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kIGJ1dCBkaWQKCW5vdCBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgY2hlY2tfZm9yX2luaXRpYWxpemF0aW9uIG1pZ2h0IGFsbG9jYXRlCgltb3JlIHRoYW4gYSB3b3JkIG9mIGJpdHMuCgkqIGRlY2wuYyAobGFuZ19tYWtlX3RyZWUpOiAgVGhlIHNtaWMgZmllbGQgaXMgbm93IGEgdHJlZS4KCSogZXhwci5jIChidWlsZF9jbGFzc19pbml0KTogIFNldCBERUNMX0ZVTkNUSU9OX0lOSVRfVEVTVF9DTEFTUyBmaWVsZC4KCSogamF2YS10cmVlLmggKERFQ0xfRlVOQ1RJT05fSU5JVF9URVNUX1RBQkxFKTogIE5ldyBtYWNyby4KCgkqIHBhcnNlLnkgKGVtaXRfdGVzdF9pbml0aWFsaXphdGlvbik6ICBDb21iaW5lIGhhc2hfbG9va3VwIGNhbGxzLgoKCSogamF2YS10cmVlLmggKERFQ0xfRlVOQ1RJT05fU1RBVElDX01FVEhPRF9JTlZPQ0FUSU9OX0NPTVBPVU5EKToKCUNoYW5nZSBmcm9tIGEgaGFzaCB0YWJsZSB0byBhIGxpc3QuCgkoc3RydWN0X2xhbmdfZGVjbCk6ICBDaGFuZ2UgZmllbGQgJ3NtaWMnIHRvIG1hdGNoLgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kXzEpOiAgSW5pdGlhbGl6ZQoJREVDTF9GVU5DVElPTl9TVEFUSUNfTUVUSE9EX0lOVk9DQVRJT05fQ09NUE9VTkQgdG8gbnVsbCBsaXN0LgoJKiBwYXJzZS55IChhZGp1c3RfaW5pdF90ZXN0X2luaXRpYWxpemF0aW9uKTogIFJlbW92ZWQgLSBpbmxpbmVkIGludG8gLQoJKGphdmFfZXhwYW5kX21ldGhvZF9ib2RpZXMpOiAtaGVyZSwgc2luY2UgJ3NtaWMnIGlzIG5vdyBhIGxpc3QuCgkocGF0Y2hfaW52b2tlKTogIEFkZCB0byAnc21pYycgbGlzdCwgaW5zdGVhZCBvZiBoYXNoX2xvb2t1cC4KCgkqIGNoZWNrLWluaXQuYyAoV09SRF9TSVpFKTogIFVzZSBCSVRTX1BFUl9VTklULgoKCSogY2xhc3MuYyAoamF2YV9oYXNoX2NvbXBhcmVfdHJlZV9ub2RlKTogIEZpeCBjYXN0cy4KCjIwMDEtMTItMDQgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogY2hlY2staW5pdC5jOiAgIEhhbmRsZSBkZWZpbml0ZSB1bmFzc2lnbm1lbnQgdG8gZmluYWxzIGluIGFkZGl0aW9uCgl0byBkZWZpbml0ZSBhc3NpZ25tZW50LgoJKGxvb3BfY3VycmVudF9sb2NhbHMpOiAgTmV3IGZpZWxkLgoJKG51bV9jdXJyZW50X2xvY2FscywgaW50IHN0YXJ0X2N1cnJlbnRfbG9jYWxzLCBudW1fY3VycmVudF93b3Jkcyk6CglNYWtlIHN0YXRpYy4KCShTRVRfUCwgQ0xFQVJfUCwgU0VUX0JJVCk6ICBBZGQgbmVlZGVkIGJ1dCBtaXNzaW5nIHBhcmVudGhlc2VzLgoJKEFTU0lHTkVEX1AsIFVOQVNTSUdORURfUCwgU0VUX0FTU0lHTkVELCBTRVRfVU5BU1NJR05FRCwKCUNMRUFSX0FTU0lHTkVELCBDTEVBUl9VTkFTU0lHTkVEKTogIE5ldyBtYWNyb3MuCgkoZ2V0X3ZhcmlhYmxlX2RlY2wsIGNoZWNrX2ZpbmFsX3JlYXNzaWduZWQpOiAgTmV3IGZ1bmN0aW9ucy4KCShjaGVja19pbml0LCBjaGVja19ib29sX2luaXQpOiAgTW9kaWZ5IGFzIG5lZWRlZCBmb3IgY2hlY2tpbmcgZmluYWxzLgoJKGNoZWNrX2Zvcl9pbml0aWFsaXphdGlvbik6ICBUYWtlIGV4dHJhIHBhcmFtZXRlciBhbmQgcmV0dXJuIHZvaWQuCglEbyBleHRyYSBzdGFydC11cCBsb2dpYyB0byBjaGVjayBmaW5hbCBmaWVsZHMgZm9yIGFzc2lnbm1lbnQuCgkqIHBhcnNlLnkgKGNoZWNrX3N0YXRpY19maW5hbF92YXJpYWJsZV9hc3NpZ25tZW50X2ZsYWcsCglyZXNldF9zdGF0aWNfZmluYWxfdmFyaWFibGVfYXNzaWdubWVudF9mbGFnLCBjaGVja19maW5hbF9hc3NpZ25tZW50LAoJY2hlY2tfZmluYWxfdmFyaWFibGVfbG9jYWxfYXNzaWdubWVudF9mbGFnLAoJcmVzZXRfZmluYWxfdmFyaWFibGVfaW5kaXJlY3RfYXNzaWdubWVudF9mbGFnLAoJcmVzZXRfZmluYWxfdmFyaWFibGVfZ2xvYmFsX2Fzc2lnbm1lbnRfZmxhZyk6ICBSZW1vdmUgZnVuY3Rpb25zLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMsIG91dGVyX2ZpZWxkX2FjY2Vzc19maXgsCglwYXRjaF9hc3NpZ25tZW50KTogUmVtb3ZlIG5vLWxvbmdlciB1c2VkIGxvZ2ljLgoJKiBqYXZhLXRyZWUuaCAoREVDTF9GSUVMRF9GSU5BTF9JVUQpOiAgQ2hhbmdlIHVzYWdlIGFuZCBjb21tZW50cy4KCSogcGFyc2UueSAocmVnaXN0ZXJfZmllbGRzLCBqYXZhX2NvbXBsZXRlX3RyZWUpOiAgVXBkYXRlIGFjY29yZGluZ2x5LgoKCSogY2hlY2staW5pdC5jIChBTExPQ19XT1JEUy9GUkVFX1dPUkRTKTogIFVzZSB4bWFsbG9jL2ZyZWUsIG5vdCBhbGxvY2EuCgkoREVDTEFSRV9CVUZGRVJTLCBSRUxFQVNFX0JVRkZFUlMsIEFMTE9DX0JVRkZFUiwgRlJFRV9CVUZGRVIpOiAgTmV3LgoJKGNoZWNrX2NvbmRfaW5pdCwgY2hlY2tfYm9vbDJfaW5pdCk6ICBVc2UgREVDTEFSRV9CVUZGRVJTLgoKCSogamF2YS10cmVlLmggKFNUQVRJQ19DTEFTU19JTklUX09QVF9QKTogIFRlbXBvcmFyaWx5IHR1cm4gb2ZmLgoKCSogamF2YS10cmVlLmggKERFQ0wgRklOQUwpOiAgTmV3IGJpdC1maWVsZC4KCShNRVRIT0RfRklOQUwsIEZJRUxEX0ZJTkFMLCBDTEFTU19GSU5BTCk6ICBEZWZpbmUgYXMgREVDTF9GSU5BTC4KCShMT0NBTF9GSU5BTF9QKTogIFVzZSBERUNMX0ZJTkFMIHJhdGhlciB0aGFuIG9sZCBMT0NBTF9GSU5BTC4KCShERUNMX0lOSVRfQ0FMTFNfVEhJUyk6ICBOZXcgbWFjcm8uCgkoc3RydWN0IGxhbmdfZGVjbCk6ICBOZXcgYml0LWZpZWxkIGluaXRfY2FsbHNfdGhpcy4KCShERUNMX0ZVTkNUSU9OX0FMTF9GSU5BTF9JTklUSUFMSVpFRCwgREVDTF9GSUVMRF9GSU5BTF9MSUlDLAoJREVDTF9GSUVMRF9GSU5BTF9JRVJSLCBMT0NBTF9GSU5BTCwgVFlQRV9IQVNfRklOQUxfVkFSSUFCTEUKCShERUNMX0JJVF9JTkRFWCk6ICBDaGFuZ2UgdG8gdXNlIHBvaW50ZXJfYWxpYXNfc2V0IHNpbmNlIHdlIG5vdwoJdXNlIGl0IGZvciBib3RoIGxvY2FsIHZhcmlhYmxlcyBhbmQgZmluYWwgZmllbGRzLgoJKHN0cnVjdCBsYW5nX2RlY2xfdmFyKTogIFJlbW92ZSBiaXQtZmllbGRzIGZpbmFsX2xpaWMsIGZpbmFsX2llcnIsCglhbmQgbG9jYWxfZmluYWwuCgkoc3RydWN0IGxhbmdfdHlwZSk6ICBSZW1vdmUgaGZ2IGJpdC1maWVsZC4KCShjaGVja19mb3JfaW5pdGlhbGl6YXRpb24pOiAgQ2hhbmdlIHRvIHJldHVybiB2b2lkLgoKCSogamF2YS10cmVlLmggKElTX0FSUkFZX0xFTkdUSF9BQ0NFU1MpOiAgTmV3IG1hY3Jvcy4KCSogZXhwci5jIChidWlsZF9qYXZhX2FycmF5X2xlbmd0aF9hY2Nlc3MpOiAgU2V0IElTX0FSUkFZX0xFTkdUSF9BQ0NFU1MuCgkqIGNoZWNrLWluaXQuYyAoZmluYWxfYXNzaWduX2Vycm9yKTogIE5ldyBoZWxwZXIgZnVuY3Rpb24uCgkoY2hlY2tfZmluYWxfcmVhc3NpZ25lZCwgY2hlY2tfaW5pdCk6ICBVc2UgaXQuCgkoY2hlY2tfaW5pdCk6ICBBbHNvIGNoZWNrIElTX0FSUkFZX0xFTkdUSF9BQ0NFU1MgZm9yIEFSUkFZLmxlbmd0aC4KCgkqIGphdmEtdHJlZS5oIChzdHJ1Y3QgbGFuZ19kZWNsLCBzdHJ1Y3QgbGFuZ19kZWNsX3Zhcik6ICBDaGFuZ2UgYWxsCgliaXQtZmllbGRzIHRvIHVuc2lnbmVkLgoKMjAwMS0xMi0wMyAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9iaW5vcCk6ICBNaW5vciBjb25zdGFudCBmb2xkaW5nLgoKCSogcGFyc2UueSAoYnVpbGRfY3VycmVudF90aGlzbik6ICBTaG9ydGVyICdidWZmZXInLgoKMjAwMS0xMi0wMyAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBkZWNsLmMgKGNvbXBsZXRlX3N0YXJ0X2phdmFfbWV0aG9kKTogIE5vdyBnZW5lcmF0ZSBUUllfRklOQUxMWV9FWFBSCglpbnN0ZWFkIG9mIENMRUFOVVBfUE9JTlRfRVhQUiBhbmQgV0lUSF9DTEVBTlVQX0VYUFIuCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6ICBSZW1vdmUgc3VwcG9ydCBmb3IKCUNMRUFOVVBfUE9JTlRfRVhQUiBhbmQgV0lUSF9DTEVBTlVQX0VYUFIgYXMgdGhleSBhcmUgbm8gbG9uZ2VyIHVzZWQuCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6ICBMaWtld2lzZS4KCjIwMDEtMTItMDMgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogdmVyaWZ5LmMgKHN1YnJvdXRpbmVfbmVzdGluZyk6ICBOZXcgZnVuY3Rpb24uCgkodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiAgVXNlIGl0IHRvIGZpeCBsb2dpYyBmb3IgY2hlY2tpbmcgdGhhdAoJd2UncmUgZG9uZSB3aXRoIHRoZSBjdXJyZW50IHN1YnJvdXRpbmUuCgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbik6IEZvciBPUENPREVfY2hlY2tjYXN0IGFuZAoJT1BDT0RFX2luc3RhbmNlb2YgdXNlIFBPUF9UWVBFIG1hY3JvIGZvciBiZXR0ZXIgZGlhZ25vc3RpY3MuCgoyMDAxLTEyLTAzICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGpjZi5oOiAgRml4IG9idmlvdXMgdHlwbyBpbiBjb21tZW50LgoJKiB0eXBlY2suYyAoYnVpbGRfbnVsbF9zaWduYXR1cmUpOiAgQWRkIGNvbW1lbnQuCgoyMDAxLTEyLTAzICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBleHByLmM6IFJlbW92ZSBsZWFkaW5nIGNhcGl0YWwgZnJvbSBkaWFnbm9zdGljIG1lc3NhZ2VzLCBhcwoJcGVyIEdOVSBjb2Rpbmcgc3RhbmRhcmRzLgoJKiBqY2YtaW8uYzogU2ltaWxhcmx5LgoJKiBqY2YtcGFyc2UuYzogU2ltaWxhcmx5LgoJKiBqdi1zY2FuLmM6IFNpbWlsYXJseS4KCSoganZzcGVjLmM6IFNpbWlsYXJseS4KCSogbWFuZ2xlLmM6IFNpbWlsYXJseS4KCjIwMDEtMTItMDIgIFRhbmcgQ2hpbmctSHVpICA8bmljaG9sYXNAY3MubnRodS5lZHUudHc+CgkgICAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2phdmFfYXJyYXlhY2Nlc3MpOiBDYWxsIHNhdmVfZXhwciBvbiBhcnJheSBmb3IKCWNvcnJlY3QgZXZhbHVhdGlvbiBvcmRlciwgbW9kaWZpZWQgY29tbWVudCwgZml4ZWQgaW5kZW50YXRpb24uCgkqIHBhcnNlLnk6IChwYXRjaF9hc3NpZ25tZW50KTogQ29ycmVjdGx5IGV4dHJhY3QgdGhlIGFycmF5IGJhc2UKCWZyb20gdGhlIHRyZWUgZ2VuZXJhdGUgYnkgYnVpbGRfamF2YV9hcnJheWFjY2VzcywgYWRkZWQgY29tbWVudHMuCgkocGF0Y2hfYXJyYXlfcmVmKTogUmVtb3ZlIFNBVkVfRVhQUiBvbiBBUlJBWV9SRUYuCglGaXhlcyBQUiBqYXZhLzMwOTYsIFBSIGphdmEvMzgwMywgUFIgamF2YS8zOTY1LgoKMjAwMS0xMi0wMSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogZXhwci5jIChleHBhbmRfYnl0ZV9jb2RlKTogUmVtb3ZlIHRyYWlsaW5nIHBlcmlvZHMgZnJvbSBtZXNzYWdlcy4KCSogamNmLXBhcnNlLmMgKGxvYWRfY2xhc3MsIGpjZl9wYXJzZSk6IFNpbWlsYXJseS4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2NsYXNzZmlsZSk6IFNpbWlsYXJseS4KCSogbGV4LmMgKGphdmFfbGV4KTogU2ltaWxhcmx5LgoKMjAwMS0xMS0zMCAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogY2xhc3MuYyAoYWRkX2ludGVyZmFjZV9kbyk6IFNldCBCSU5GT19WUFRSX0ZJRUxELgoKMjAwMS0xMS0yOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogTWFrZS1sYW5nLmluIChqYXZhLmdlbmVyYXRlZC1tYW5wYWdlcyk6IE5ldyBkdW1teSB0YXJnZXQuCgoyMDAxLTExLTI3ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGp2c3BlYy5jIChqdmdlbm1haW5fc3BlYyk6IENhbm5vdCB1c2UgJXVtYWluLCBicmVha3MKCUFTTV9GSU5BTF9TUEVDLgoJKGxhbmdfc3BlY2lmaWNfcHJlX2xpbmspOiBVc2Ugc2V0X2lucHV0IHRvIHNldCBpbnB1dF9maWxlbmFtZS4KCUFwcGVuZCBgbWFpbicgaGVyZS4KCSoganZnZW5tYWluLmMgKHVzYWdlKTogQXBwZW5kIGxpdGVyYWwgYG1haW4nIHRvIENMQVNTTkFNRS4KCShtYWluKTogRml4IGRlZmluaXRpb24uCglTdHJpcCBgbWFpbicgZnJvbSBjbGFzc25hbWUuCglGaXhlcyBQUiBqYXZhLzIyNy4KCjIwMDEtMTEtMTggIFJvZ2VyIFNheWxlIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBwYXJzZS5oIChqYXZhX2V4cGFuZF9zd2l0Y2gpOiBSZW1vdmUgb2xkIHByb3RvdHlwZS4KCjIwMDEtMTEtMTggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGaXggZm9yIFBSIGphdmEvMTQwMToKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKSBbYmlub3BdOiBIYW5kbGUgY2FzZSB3aGVyZQoJYXJnMCBpcyBudWxsLgoJKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKSBbTU9ESUZZX0VYUFJdOiBIYW5kbGUgYE9QPScgY2FzZQoJY29ycmVjdGx5LgoKMjAwMS0xMS0xOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbGFuZy5jIChmaW5pc2hfcGFyc2UpOiBSZW5hbWUgdG8gamF2YV9maW5pc2guCgkoTEFOR19IT09LU19GSU5JU0gsIGphdmFfZmluaXNoKTogTmV3LgoKMjAwMS0xMS0xNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFJlbmFtZSBqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nLgoJKiBqYXZhLXRyZWUuaDogTmV3IHByb3RvdHlwZS4KCSogbGFuZy5jIChqYXZhX2luaXQpOiBVcGRhdGUgcHJvdG90eXBlLiAgQ29tYmluZSB3aXRoIG9sZCBpbml0X3BhcnNlLgoKMjAwMS0xMS0xMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2phdmFoLmMgKG1ldGhvZF9zaWduYXR1cmUpOiBOZXcgZ2xvYmFsLgoJKEhBTkRMRV9NRVRIT0QpOiBTZXQgaXQuCgkoZGVjb21waWxlX3JldHVybl9zdGF0ZW1lbnQpOiBOZXcgZnVuY3Rpb24uCgkoZGVjb21waWxlX21ldGhvZCk6IFVzZSBpdC4KCShwcmludF9tZXRob2RfaW5mbyk6IFJlbW92ZWQgYHN5bnRoJyBhcmd1bWVudC4KCjIwMDEtMTEtMDkgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGphdmEtdHJlZS5oIChqYXZhX3NldF95eWRlYnVnKTogTmV3LgoJKiBqY2YtcGFyc2UuYyAoc2V0X3l5ZGVidWcpOiBSZW5hbWUgamF2YV9zZXRfeXlkZWJ1Zy4KCSogbGFuZy5jIChMQU5HX0hPT0tTX1NFVF9ZWURFQlVHKTogT3ZlcnJpZGUuCgkocHJpbnRfbGFuZ19kZWNsLCBwcmludF9sYW5nX3R5cGUsIHByaW50X2xhbmdfaWRlbnRpZmllciwKCXByaW50X2xhbmdfc3RhdGlzdGljcywgbGFuZ19wcmludF94bm9kZSk6IFJlbW92ZS4KCjIwMDEtMTEtMDkgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGpjZi1wYXJzZS5jIChpbml0X2xleCk6IFJlbW92ZS4KCSogbGFuZy5jIChsYW5ndWFnZV9zdHJpbmcsIGxhbmdfaWRlbnRpZnkpOiBSZW1vdmUuCgkoc3RydWN0IGxhbmdfaG9va3MpOiBDb25zdGlmeS4KCShMQU5HX0hPT0tTX05BTUUpOiBPdmVycmlkZS4KCShpbml0X3BhcnNlKTogVXBkYXRlLgoKMjAwMS0xMS0wOCAgQW5kcmVhcyBGcmFuY2sgIDxhZnJhbmNrQGdteC5kZT4KCgkqIE1ha2UtbGFuZy5pbiAoSkFWQV9JTlNUQUxMX05BTUUsIEpBVkFfQ1JPU1NfTkFNRSk6IEhhbmRsZQoJcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSB0aGUgd2F5IHN1Z2dlc3RlZCBieSBhdXRvY29uZi4KCShqYXZhLmluc3RhbGwtY29tbW9uKTogQWxzbyB0cmFuc2Zvcm0gYXV4aWxpYXJ5IHByb2dyYW0gbmFtZXMgd2l0aAoJcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZS4KCjIwMDEtMTEtMDggIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHRyYXBfb3ZlcmZsb3dfY29ybmVyX2Nhc2UpOiBOZXcgcnVsZS4KCSh1bmFyeV9leHByZXNzaW9uKTogVXNlIGl0LgoJKiBsZXguYyAoamF2YV9pbml0X2xleCk6IERvbid0IHNldCBtaW51c19zZWVuLgoJKHl5bGV4KTogRG9uJ3QgdXNlIG1pbnVzX3NlZW4uICBDb21tdW5pY2F0ZSBvdmVyZmxvdyB0byBwYXJzZXIgZm9yCglpdCB0byBoYW5kbGUuCgkoZXJyb3JfaWZfbnVtZXJpY19vdmVyZmxvdyk6IE5ldyBmdW5jdGlvbi4KCSogcGFyc2UuaCAobWludXNfc2Vlbik6IFJlbW92ZWQgZmllbGQuCgkoSkFWQV9SQURJWDEwX0ZMQUcpOiBOZXcgZGVmaW5lLgoKMjAwMS0xMS0wNyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBhdGNoIGZvciBQUiBqYXZhLzE0MTQ6CgkqIHBhcnNlLnkgKGNhc2VfbGFiZWxfbGlzdCk6IE5ldyBnbG9iYWwuCgkoZ29hbCk6IFJlZ2lzdGVyIGNhc2VfbGFiZWxfbGlzdCB3aXRoIEdDLgoJKGphdmFfY29tcGxldGVfbGhzKTogU2F2ZSBuZXcgY2FzZSBvbiBjYXNlX2xhYmVsX2xpc3QuCgkocGF0Y2hfc3dpdGNoX3N0YXRlbWVudCk6IENoZWNrIGZvciBkdXBsaWNhdGUgY2FzZSBsYWJlbHMuCgoyMDAxLTExLTA3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX2Fzc2lnbm1lbnQpOiBSZW1vdmVkIHVudXNlZCB0aGlyZCBhcmd1bWVudC4KCShqYXZhX2NvbXBsZXRlX2xocyk6IFJlbW92ZWQgdW51c2VkIHRoaXJkIGFyZ3VtZW50IHRvIHBhdGNoX2Fzc2lnbm1lbnQuCgoyMDAxLTExLTA2ICBOZWlsIEJvb3RoICA8bmVpbEBjYXQuZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbGFuZy5jOiBJbmNsdWRlIGxhbmdob29rcy1kZWYuaC4KCSogTWFrZS1sYW5nLmluOiBVcGRhdGUuCgoyMDAxLTEwLTMxICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluOiBSZXBsYWNlICQoSU5UTF9UQVJHRVRTKSB3aXRoIHBvLWdlbmVyYXRlZC4KCjIwMDEtMTAtMjkgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIG1hbmdsZS5jIChmaW5kX2NvbXByZXNzaW9uX3JlY29yZF9tYXRjaCk6IERvbid0IG1hdGNoIGNvbXByZXNzaW9uCglyZWNvcmRzIGZvciBwYWNrYWdlIG5hbWUgZWxlbWVudHMgdW5sZXNzIHRoZXkgb2NjdXIgYXQgdGhlIHN0YXJ0IG9mCgl0aGUgbmFtZS4gRml4IGZvciBQUiBqYXZhLzQ3MTcuCgoyMDAxLTEwLTI1ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBleHByLmMgKGV4cGFuZF9qYXZhX2ZpZWxkX29wKTogRG9uJ3Qgc3BlY2lhbC1jYXNlIHJlZmVyZW5jZXMgdG8KCWphdmEubGFuZy5QUklNVFlQRS5UWVBFLgoJKGJ1aWxkX3ByaW10eXBlX3R5cGVfcmVmKTogUmVtb3ZlZC4KCSogamF2YS10cmVlLmggKGJ1aWxkX3ByaW10eXBlX3R5cGVfcmVmKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogcGFyc2UueSAobWF5YmVfYnVpbGRfcHJpbXR0eXBlX3R5cGVfcmVmKTogUmVtb3ZlZC4KCShjb21wbGV0ZV9mdW5jdGlvbl9hcmd1bWVudHMpOiBEb24ndCBzcGVjaWFsLWNhc2UgcmVmZXJlbmNlcyB0bwoJamF2YS5sYW5nLlBSSU1UWVBFLlRZUEUuCgkocGF0Y2hfYXNzaWdubWVudCk6IExpa2V3aXNlLgoJKGFycmF5X2NvbnN0cnVjdG9yX2NoZWNrX2VudHJ5KTogTGlrZXdpc2UuCgoyMDAxLTEwLTI0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIG1hbmdsZS5jIChzdGF0aWMgdHJlZSBjb21wcmVzc2lvbl90YWJsZSk6IEZpeGVkIGxlYWRpbmcgY29tbWVudC4KCSogcGFyc2UuaCAoc3RydWN0IHBhcnNlcl9jdHh0KTogRml4ZWQgZmllbGQgY29tbWVudC4KCSogcGFyc2UueSAoY2hlY2tfcGtnX2NsYXNzX2FjY2Vzcyk6IE5ldyBwcm90b3R5cGUsIGZpeGVkIGxlYWRpbmcKCWNvbW1lbnQsIG5ldyBwYXJhbWV0ZXIgdXNlZCB0byBlbWl0IGVycm9yIG9ubHkgaWYgcGFzc2VkIGFzIHRydWUuCgkocGFyc2VfY2hlY2tfc3VwZXIpOiBQYXNzIGV4dHJhIGFyZ3VtZW50IHRvIGNoZWNrX3BrZ19jbGFzc19hY2Nlc3MuCgkoZG9fcmVzb2x2ZV9jbGFzcyk6IExpa2V3aXNlLgoJKHByb2Nlc3NfaW1wb3J0cyk6IExpa2V3aXNlLgoJKHJlYWRfaW1wb3J0X2Rpcik6IEZpeGVkIGluZGVudGF0aW9uLgoJKGZpbmRfaW5faW1wb3J0c19vbl9kZW1hbmQpOiBOZXcgbG9jYWwgY2xhc3NfdHlwZV9uYW1lLiBMb2NhbAoJbm9kZV90b191c2UgZGVsZXRlZC4gd2hpbGUgbG9vcCBjaGFuZ2VkIGludG8gZm9yIGxvb3AuIFJlcG9ydAoJbXVsdGlwbGUgZGVmaW5pdGlvbiBvbmx5IGZvciBhY2Nlc3NpYmxlIGNsYXNzZXMuIEltcHJvdmVkIGVycm9yCgltZXNzYWdlLgoJKHN0YXJ0X2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBMb2NhbCBgcHRyJyByZW1vdmVkLiBERUNMX0FSR1VNRU5UUwoJYXNzaWduZWQgdG8gcGFyYW1ldGVyIGxpc3QsIGZpeGVkIGluZGVudGF0aW9uLiB3aGlsZSBsb29wIGNoYW5nZWQKCWludG8gZm9yIGxvb3AsIHJlc3RvcmUgVFJFRV9DSEFJTiBvbiBsb2NhbCBgdGVtJyBiZWZvcmUgdGhlIG5leHQKCWl0ZXJhdGlvbi4KCjIwMDEtMTAtMjMgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBsYW5nLmMgKGxhbmdfZ2V0X2FsaWFzX3NldCk6IERlbGV0ZWQuCgoyMDAxLTEwLTIxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnamF2YWguYyAoam5pX3ByaW50X2NoYXIpOiBGaXggdGhpbmtvIGluIGxhc3QgY2hhbmdlLgoKCSogZ2phdmFoLmMgKGpuaV9wcmludF9jaGFyLCBkZWNvZGVfc2lnbmF0dXJlX3BpZWNlKTogVXNlCglzYWZlLWN0eXBlIG1hY3JvcyBhbmQvb3IgZm9sZCBleHRyYSBjYWxscyBpbnRvIGZld2VyIG9uZXMuCgkqIGxleC5jIChqYXZhX3JlYWRfdW5pY29kZSwgamF2YV9sZXgpOiBMaWtld2lzZS4KCSogbGV4LmggKEpBVkFfU1RBUlRfQ0hBUl9QLCBKQVZBX1BBUlRfQ0hBUl9QLCBKQVZBX0FTQ0lJX0RJR0lULAoJSkFWQV9BU0NJSV9IRVhESUdJVCwgSkFWQV9BU0NJSV9MRVRURVIpOiBMaWtld2lzZS4KCSogbWFuZ2xlX25hbWUuYyAoYXBwZW5kX3VuaWNvZGVfbWFuZ2xlZF9uYW1lLAoJdW5pY29kZV9tYW5nbGluZ19sZW5ndGgpOiBMaWtld2lzZS4KCjIwMDEtMTAtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEvbGFuZy5vKTogRGVwZW5kIG9uIGxhbmdob29rcy5oLgoKMjAwMS0xMC0xNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBsYW5nLmMgKGxhbmdob29rcy5oKTogSW5jbHVkZWQuCgkoTEFOR19IT09LU19JTklUKTogUmVkZWZpbmVkLgoJKExBTkdfSE9PS1NfSU5JVF9PUFRJT05TKTogTGlrZXdpc2UuCgkoTEFOR19IT09LU19ERUNPREVfT1BUSU9OKTogTGlrZXdpc2UuCgkoc3RydWN0IGxhbmdfaG9va3MgbGFuZ19ob29rcyk6IE5ldyBpbml0aWFsaXphdGlvbi4KCjIwMDEtMTAtMTEgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfc3luY2hyb25pemVkX3N0YXRlbWVudCk6ICBVc2UgYSBUUllfRklOQUxMWV9FWFBSCglyYXRoZXIgdGhhbiBhIENMRUFOVVBfUE9JTlRfRVhQUi9XSVRIX0NMRUFOVVBfRVhQUiBwYWlyLgoJVGhlIGZvcm1lciBpcyBzaW1wbGVyLCBhbmQgamNmLXdyaXRlLmMgaGFuZGxlcyBpdCBiZXR0ZXIuCgkoamF2YV9jb21wbGV0ZV9saHMpOiAgTm8gbG9uZ2VyIG5lZWQgdG8gaGFuZGxlIENMRUFOVVBfUE9JTlRfRVhQUgoJb3IgV0lUSF9DTEVBTlVQX0VYUFIuCgkqIGpjZi13cml0ZS5jOiAgUmV2ZXJ0IEFsZXgncyBjaGFuZ2UgZnJvbSAyMDAwLTEwLTE4LiAgSXQgaXMgbm8KCWxvbmdlciBuZWVkZWQsIGFzIHdlIGFscmVhZHkgaGFuZGxlIGVtcHR5IFRSWV9GSU5BTExZX0VYUFIgYm9kaWVzIGZpbmUuCgoJKiBwYXJzZS55IChwYXRjaF9pZl9lbHNlX3N0YXRlbWVudCk6ICBJZiB0aGUgY29uZGl0aW9uIGlzIGNvbnN0YW50LAoJb3B0aW1pemUgYXdheSB0aGUgdGVzdC4KCjIwMDEtMTAtMDkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfY2FzdCk6IENhbGwgcGF0Y2hfc3RyaW5nIG9uIHRoZSBmaXJzdCBvcGVyYW5kIG9mCgl0aGUgaW5jb21pbmcgbm9kZSwgdXBkYXRlIGl0IGlmIG5lY2Vzc2FyeS4gRml4ZXMgUFIgamF2YS80NTEwLgoKMjAwMS0xMC0wOSAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogcGFyc2UueSAoZmluZF9hc19pbm5lcl9jbGFzcyk6IERvbid0IGRpc3JlZ2FyZCB0aGUgZW5jbG9zaW5nIHNjb3BlCgl3aGVuIG5hbWUgcXVhbGlmaWVyIG1hdGNoZXMgYSBwYWNrYWdlIG5hbWUuCgoyMDAxLTEwLTA4ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRml4IGZvciBQUiBqYXZhLzQ0ODk6CgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucykgW1NXSVRDSF9FWFBSXTogQWx3YXlzCglmb3JjZSBhIG5ldyBsYWJlbCB3aGVuIGNvbXB1dGluZyBgYm9keV9ibG9jaycuCgoyMDAxLTEwLTA3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBqY2YtaW8uYyAoZm9ybWF0X3VpbnQpOiBDb25zdC1pZnkuCgkqIGxhbmcuYyAoamF2YV90cmVlX2NvZGVfdHlwZSwgamF2YV90cmVlX2NvZGVfbGVuZ3RoKTogTGlrZXdpc2UuCgkqIGxleC5jIChqYXZhX2dldF9saW5lX2NvbCk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChidWlsZF9pbmNkZWMpOiBMaWtld2lzZS4KCjIwMDEtMTAtMDUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocmVnaXN0ZXJfaW5jb21wbGV0ZV90eXBlKTogU2V0IEpERVBfU1VQRVIgdG8gYmUgZ2l2ZW4KCWEgTlVMTCBlbmNsb3NpbmcgY29udGV4dCBpZiBhcHByb3ByaWF0ZS4gRml4ZXMgUFIgamF2YS80NDY2LgoKMjAwMS0xMC0wMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9hc3NpZ25tZW50KTogVXNlIGx2YWx1ZSdzIG9yaWdpbmFsIFRZUEUgd2hlbgoJYnVpbGRpbmcgdGhlIGZpbmFsIENPTVBPVU5EX0VYUFIuCgkodHJ5X3JlZmVyZW5jZV9hc3NpZ25jb252KTogRml4ZWQgbGVhZGluZyBjb21tZW50LgoKMjAwMS0wOS0yNiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChjaGVja19maW5hbF92YXJpYWJsZV9pbmRpcmVjdF9hc3NpZ25tZW50KTogRm9yCglDT01QT1VORF9FWFBSLCByZXR1cm4gb25seSBpZiBmaW5hbHMgd2VyZSBmb3VuZCBpbml0aWFsaXplZAoJcHJvcGVybHksIGlmIG5vdCwga2VlcCBvbiBjaGVja2luZy4KCShjaGVja19maW5hbF92YXJpYWJsZV9nbG9iYWxfYXNzaWdubWVudF9mbGFnKTogTmV3IGxvY2FsCgllcnJvcl9mb3VuZCwgc2V0IHdoZW4gYXBwcm9wcmlhdGUgYW5kIHVzZWQgdG8gZGVjaWRlIHdoZXRoZXIgdG8KCXJlcG9ydCB1bmluaXRpYWxpemVkIGZpbmFscy4gRml4ZWQgdHlwbyBpbiBjb21tZW50LgoKMjAwMS0wOS0yMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRml4ZWQgdHlwbyBpbiBwcmVkZWZfZmlsZW5hbWVzCglsYXN0IHRocmVlIGluaXRpYWxpemF0aW9ucy4gRml4ZXMgUFIgamF2YS80MzYwLgoKMjAwMS0wOS0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGdldF9kaXNwYXRjaF90YWJsZSk6IEhhbmRsZSBmdW5jdGlvbiBkZXNjcmlwdG9ycy4KCShidWlsZF9kdGFibGVfZGVjbCk6IExpa2V3aXNlLgoJKiBleHByLmMgKGJ1aWxkX2ludm9rZXZpcnR1YWwpOiBMaWtld2lzZS4KCjIwMDEtMDktMjAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBCdWlsZCBjbGFzcyBpbml0aWFsaXphdGlvbgoJd2hlbiBzdGF0aWMgZmluYWxzIGFyZSB1c2VkIHRvIHF1YWxpZnkgbWV0aG9kIGludm9jYXRpb24uCglGaXhlcyBQUiBqYXZhLzQzNjYuCgoyMDAxLTA5LTE5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLmg6IChXRkxfU1RSSVBfQlJBQ0tFVCk6IFJlLXdyaXR0ZW4gdXNpbmcKCWJ1aWxkX3R5cGVfbmFtZV9mcm9tX2FycmF5X25hbWUuCgkoU1RSSU5HX1NUUklQX0JSQUNLRVRTKTogTmV3IG1hY3JvLgoJKiBwYXJzZS55IChidWlsZF90eXBlX25hbWVfZnJvbV9hcnJheV9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKGFycmF5X2NyZWF0aW9uX2V4cHJlc3Npb246KTogQWNjdW11bGF0ZSBbXXMgaW5zdGVhZCBvZiBbcy4KCShjYXN0X2V4cHJlc3Npb246KTogQWNjdW11bGF0ZSBbXXMgaW5zdGVhZCBvZiBbcyBhZnRlciBjYXN0IHR5cGUKCW5hbWUuCgkoYnVpbGRfYXJyYXlfZnJvbV9uYW1lKTogTG9jYWwgc3RyaW5nIGRlbGV0ZWQsIHVzZQoJYnVpbGRfdHlwZV9uYW1lX2Zyb21fYXJyYXlfbmFtZS4KCShidWlsZF91bnJlc29sdmVkX2FycmF5X3R5cGUpOiBBY2N1bXVsYXRlIFtdcyBpbnN0ZWFkIG9mIFtzIGFmdGVyCgl0eXBlIG5hbWUuCgkocmVnaXN0ZXJfZmllbGRzKTogRml4ZWQgY29tbWVudC4KCShyZXNvbHZlX2NsYXNzKTogTG9jYWwgbmFtZSwgYmFzZSBkZWxldGVkLCBuZXcgbG9jYWxzIHRuYW1lIGFuZAoJYXJyYXlfZGltcy4gVXNlIGJ1aWxkX3R5cGVfbmFtZV9mcm9tX2FycmF5X25hbWUuIFVzZSBhcnJheV9kaW1zIHRvCglidWlsZCBhcnJheSB0eXBlLgoJKHB1cmlmeV90eXBlX25hbWUpOiBVc2UgU1RSSU5HX1NUUklQX0JSQUNLRVRTLgoKMjAwMS0wOS0xOCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogcGFyc2UueTogVXNlIFZBX09QRU4vVkFfQ0xPU0UvVkFfRklYRURBUkcgdGhyb3VnaG91dC4KCSoganYtc2Nhbi5jOiBMaWtld2lzZS4KCjIwMDEtMDktMTcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBJbm5lciBjbGFzcyBjcmVhdGlvbiBjb250ZXh0CgljaGVjayBub3QgZW5mb3JjZWQgd2l0aGluIGNvbnN0cnVjdG9ycy4gRml4ZXMgUFIgamF2YS8xODczLgoKMjAwMS0wOS0xNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKSBbU1dJVENIX0VYUFJdOiBDYWxsCglOT1RFX1BVU0ggZm9yIHNpbmdsZS1jYXNlIHB1c2guICBGaXhlcyBQUiBqYXZhLzQxODkuCgoyMDAxLTA5LTEzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGphdmEtdHJlZS5oIChUWVBFX0lNUE9SVF9MSVNUKTogTmV3IG1hY3JvLgoJKFRZUEVfSU1QT1JUX0RFTUFORF9MSVNUKTogTGlrZXdpc2UuCgkoc3RydWN0IGxhbmdfdHlwZSk6IE5ldyBmaWVsZHMgaW1wb3J0X2xpc3QgYW5kIGltcG9ydF9kZW1hbmRfbGlzdC4KCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9jbGFzcyk6IEluaXRpYWxpemUgVFlQRV9JTVBPUlRfTElTVCBhbmQKCVRZUEVfSU1QT1JUX0RFTUFORF9MSVNUIHdpdGggY3R4cCBjb3VudGVycGFydHMuCgkoZG9fcmVzb2x2ZV9jbGFzcyk6IE5ldyBsb2NhbCBzYXZlZF9lbmNsb3NpbmdfdHlwZSwgaW5pdGlhbGl6ZWQsCglwYXNzZWQgYXMgcGFyYW1ldGVyIHRvIGZpbmRfaW5faW1wb3J0cyBhbmQgZmluZF9pbl9pbXBvcnRzX29uX2RlbWFuZC4KCShmaW5kX2luX2ltcG9ydHMpOiBBZGRlZCBwYXJhbWF0ZXIgZW5jbG9zaW5nX3R5cGUsIHVzZSBpdHMKCVRZUEVfSU1QT1JUX0xJU1Qgd2hlbiBhcHBsaWNhYmxlLgoJKGZpbmRfaW5faW1wb3J0c19vbl9kZW1hbmQpOiBBZGRlZCBwYXJhbWV0ZXIgZW5jbG9zaW5nX3R5cGUsIHVzZQoJaXRzIFRZUEVfSU1QT1JUX0RFTUFORF9MSVNUIHdoZW4gYXBwbGljYWJsZS4gUmVvcmdhbml6ZWQgbG9jYWxzCglkZWNsYXJhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24uCgkoZm9sZF9jb25zdGFudF9mb3JfaW5pdCk6IFN3aXRjaC9yZXN0b3JlIGN1cnJlbnRfY2xhc3MgdG8gdGhlCglhcHByb3ByaWF0ZSBjb250ZXh0LgoKMjAwMS0wOS0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IEZpeCB0eXBvLgoKMjAwMS0wOS0xMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZXhwci5jIChleHBhbmRfaW52b2tlKTogQ29uc3QtaWZpY2F0aW9uLgoJKiBwYXJzZS55IChwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IExpa2V3aXNlLgoKMjAwMS0wOS0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2phdmFoLmMgKGN4eF9rZXl3b3Jkcyk6IENvbnN0LWlmaWNhdGlvbi4KCSoga2V5d29yZC5ncGVyZiAoamF2YV9rZXl3b3JkKTogTGlrZXdpc2UuCgkqIGxhbmcuYyAoamF2YV90cmVlX2NvZGVfbmFtZSk6IExpa2V3aXNlLgoJKiBsZXguYyAoY3h4X2tleXdvcmRzKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKGphdmFfcGFyc2VyX2NvbnRleHRfc3VzcGVuZCwgbWVyZ2Vfc3RyaW5nX2NzdGUpOiBMaWtld2lzZS4KCjIwMDEtMDktMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBwYXJzZS5oIChjdHhwX2Zvcl9nZW5lcmF0aW9uKTogTWFyayBleHRlcm4uCgoyMDAxLTA5LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfY2xhc3NfcmVmKTogU2V0IERFQ0xfRVhURVJOQUwgYmVmb3JlIG1ha2VfZGVjbF9ydGwuCgoyMDAxLTA5LTA3ICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNhcm5lZ2llbWVsbG9uLmVkdT4KCgkqIHR5cGVjay5jIChqYXZhX2FycmF5X3R5cGVfbGVuZ3RoLCBidWlsZF9wcmltX2FycmF5X3R5cGUpOgoJUmVwcmVzZW50IGVtcHR5IGFycmF5cyBieSBOVUxMIGluZGV4LgoKMjAwMS0wOS0wNiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBqYXZhLXRyZWUuaCAoY29tcGlsZV9yZXNvdXJjZV9maWxlKTogR3JvdXBlZCB3aXRoIG90aGVyIHByb3RvdHlwZXMuCgkqIGp2c3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IFJlbW92ZWQgdW51c2VkIGxvY2FsIGBwdHIuJwoKMjAwMS0wOS0wNiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChPX0JJTkFSWSk6IERlZmluZSBpZiBuZWNlc3NhcnkuCgkocmVnaXN0ZXJSZXNvdXJjZV9saWJmdW5jKTogRGVjbGFyZS4KCShpbml0X2NsYXNzX3Byb2Nlc3NpbmcpOiBJbml0aWxpemUgcmVnaXN0ZXJSZXNvdXJjZV9saWJmdW5jLgoJKGNvbXBpbGVfcmVzb3VyY2VfZmlsZSk6IE5ldyBmdW5jdGlvbi4KCSogamF2YS10cmVlLmggKHJlc291cmNlX25hbWUpOiBEZWNsYXJlLgoJKGNvbXBpbGVfcmVzb3VyY2VfZmlsZSk6IERlY2xhcmUuCgkqIGpjZi1wYXJzZS5jICh5eXBhcnNlKTogSGFuZGxlIGNvbXBpbGluZyBqYXZhIHJlc291cmNlIGZpbGVzLgoJKiBsYW5nLmMgKGphdmFfZGVjb2RlX29wdGlvbik6IEhhbmRsZSAtZmNvbXBpbGUtcmVzb3VyY2Ugb3B0aW9uLgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBIYW5kbGUgLVIgZmxhZyBmb3IgY29tcGlsaW5nCglyZXNvdXJjZSBmaWxlcy4KCSogZ2NqLnRleGkgKENvZGUgR2VuZXJhdGlvbik6IEFkZCBkb2N1bWVudGF0aW9uIGZvciAtUiBmbGFnLgoKMjAwMS0wOS0wNSBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9jbGFzc2ZpbGUpOiBJc3N1ZSBhbiBlcnJvciBpbiBjYXNlIG9mCglmaWVsZC9pbml0aWFsIHZhbHVlIG1pc21hdGNoLgoJKiBwYXJzZS55IChhbmFseXplX2NsaW5pdF9ib2R5KTogS2VlcCA8Y2xpbml0PiBpZiBhbiBhcnJheSBpcwoJYmVpbmcgaW5pdGlhbGl6ZWQgYW5kIHdlJ3JlIGdlbmVyYXRpbmcgYnl0ZWNvZGUuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBJbiBNT0RJRllfRVhQUiBzZWN0aW9uOiBhZGRlZCBjb21tZW50cywKCXNldCBERUNMX0lOSVRJQUwgcHJvcGVybHkgd2hlbiBhcHByb3ByaWF0ZS4KCUZpeGVzIFBSIGphdmEvNDIzMAoJRml4ZXMgUFIgamF2YS80MjA0CgoyMDAxLTA5LTAxICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIHBhcnNlLnkgKG1heWJlX3lhbmtfY2xpbml0KTogIEEgZmllbGQgd2l0aG91dCBhbiBpbml0aWFsaXplciBpcyBub3QKCXJlbGV2YW50LiAgQWxsIGluaXRpYWxpemVycyBleGNlcHQgc3RhdGljIGZpbmFsIGFuZCBjb25zdGFudCByZXF1aXJlCgk8Y2xpbml0PiwgcmVnYXJkbGVzcyBvZiBmbGFnX2VtaXRfY2xhc3NfZmlsZXMuCgoyMDAxLTA4LTMxICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGNsYXNzLmMgKHNldF9jb25zdGFudF92YWx1ZSk6ICBXaGVuIG5vdCBlbWl0dGluZyBjbGFzcyBmaWxlcywgdGhlbiBhCglTdHJpbmcgQ29uc3RhbnRWYWx1ZSBpcyBhIHV0Zjhjb25zdF9wdHJfdHlwZS4KCjIwMDEtMDgtMzAgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2NsYXNzZmlsZSk6ICBDaGVjayB0aGF0IGZpZWxkIGlzIHByaW1pdGl2ZQoJb3Igc3RyaW5nIGJlZm9yZSBlbWl0dGluZyBDb25zdGFudFZhbHVlIGF0dHJpYnV0ZS4KCjIwMDEtMDgtMzAgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogcGFyc2UueSAocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogIElmIGNyZWF0aW5nIGEKCUNPTVBPVU5EX0VYUFIsIHNldCBpdCdzIHR5cGUgY29ycmVjdGx5LgoKMjAwMS0wOC0zMCAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqY2YtaW8uYyAob3Blbl9jbGFzcyk6ICBTZXQgZmlsZW5hbWUgZmllbGQuCgoJKiBqY2YtcGFyc2UsYyAocGFyc2VfY2xhc3NfZmlsZSk6ICBTZXQgY3VycmVudF9mdW5jdGlvbl9kZWNsCglmb3IgYmV0dGVyIGVycm9yIG1lc3NhZ2Ugd2hlbiBDb2RlIGF0dHJpYnV0ZSBpcyBtaXNzaW5nLgoKCSogbGFuZy5jIChwdXRfZGVjbF9ub2RlLCBsYW5nX3ByaW50X2Vycm9yKTogIFJlLWFycmFuZ2UgZm9yCgliZXR0ZXIgZGlhZ25vc3RpY3MsIGVzcGVjaWFsbHkgZm9yIGNvbnN0cnVjdG9ycy4KCjIwMDEtMDgtMzAgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2NsYXNzZmlsZSk6ICBEb24ndCB3cml0ZSBDb25zdGFudFZhbHVlCglhdHRyaWJ1dGUgaWYgZmllbGQgaXMgbm90IGZpbmFsLCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGpkay4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9jbGFzc2ZpbGUpOiAgQ29udmVydCBDb25zdGFudFZhbHVlIHZhbHVlcwoJdG8gY29ycmVjdCB0eXBlLiAgV29yay1hcm91bmQgZm9yIGZyb250LWVuZCBidWcuCgkqIGNsYXNzLmMgKHNldF9jb25zdGFudF92YWx1ZSk6ICBFcnJvciBpZiBjb25zdGFudCBoYXMgd3JvbmcgdHlwZS4KCjIwMDEtMDgtMzAgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogamNmLWR1bXAuYyAocHJpbnRfY29uc3RhbnQpOiAgRml4IGZlbmNlcG9zdCBlcnJvciBzbyAiRmxvYXQiIGFuZAoJIkRvdWJsZSIgYXJlIHByaW50ZWQgYXQgdmVyYm9zaXR5IDEuCgoJKiBqY2YtZHVtcC5jIChtYWluKTogIERpc2FibGUgZmxhZ19wcmludF9hdHRyaWJ1dGVzIGlmIC0tamF2YXAuCgoJKiBqY2YtZHVtcC5jIChTUEVDSUFMX0lJTkMpOiAgUmVtb3ZlIHVubmVlZGVkIGNhc3RzIHRvIGxvbmcuCgoyMDAxLTA4LTMwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX2Fzc2lnbm1lbnQpOiBEb24ndCB2ZXJpZnkgZmluYWwgcmUtYXNzaWdubWVudCBoZXJlLgoJKGphdmFfY29tcGxldGVfbGhzKTogVmVyaWZ5IGFzc2lnbm1lbnRzIHRvIGZpbmFscyBjYWxsaW5nCglwYXRjaF9hc3NpZ25tZW50LiBWZXJpZnkgcmUtYXNzaWdubWVudHMgdG8gZmluYWxzIGJlZm9yZSBjYWxsaW5nCglwYXRjaF9hc3NpZ25tZW50LgoKMjAwMS0wOC0yOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocyk6IEFsbG93IGZpbmFsIGxvY2FscyBpbiBDQVNFX0VYUFJzLgoJRml4ZXMgUFIgamF2YS8xNDEzCgoyMDAxLTA4LTI4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGxleC5jIChqYXZhX2xleCk6IG5ldyBsb2NhbCBmb3VuZF9oZXhfZGlnaXRzLiBTZXQgYW5kIHRoZW4gdXNlZAoJaW4gdGVzdCB0byByZWplY3QgaW52YWxpZCBoZXhhZGVjaW1hbCBudW1iZXJzLgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX3RyZWUpOiBQcmV2ZW50IHVud2FudGVkIGNhc3Qgd2l0aAoJaW5pdGlhbGl6ZWQgZmxvYXRpbmcgcG9pbnQgZmluYWxzLgoJKHBhdGNoX2Jpbm9wKTogRW1pdCBhIHdhcm5pbmcgd2hlbiBkZXRlY3RpbmcgYSBkaXZpc2lvbiBieSB6ZXJvLAoJbWFyayByZXN1bHQgbm90IGNvbnN0YW50LCBkb24ndCBzaW1wbGlmeSBub24gaW50ZWdlciBkaXZpc2lvbi4KCjIwMDEtMDgtMjggIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogamNmLXdyaXRlLmMgIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6ICBGb3IgaW5jcmVtZW50cyBhbmQKCWRlY3JlbWVudHMganVzdCByZWN1cnNlIHRvIHB1c2ggY29uc3RhbnQuICBJbXByb3ZlbWVudCBvbiBNYXJrJ3MgcGF0Y2guCgoyMDAxLTA4LTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogR2VuZXJhdGUgYW4gaW50ZWdlciB0bwoJcmVhbCBjb252ZXJzaW9uIGZvciBpbmNyZW1lbnRzIGFuZCBkZWNyZW1lbnRzIG9mIHJlYWxzLgoKMjAwMS0wOC0yNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBIYW5kbGUgdW5yZXNvbHZlZAoJcXVhbGlmaWVkIGV4cHJlc3Npb25zLCBwcmV2ZW50IG51bWVyaWNhbCBxdWFsaWZpZXJzLCBmaXhlZCB0eXBvLgoJRml4ZXMgUFIgamF2YS80MTQxCgoyMDAxLTA4LTI0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGNoZWNrX2RlcHJlY2F0aW9uKTogSGFuZGxlIFRZUEVfREVDTCBpbiBhIHNwZWNpYWwgY2FzZSwKCWRvbid0IHJlcG9ydCBhbnl0aGluZyBidXQgZGVwcmVjYXRlZCBjbGFzcyB3aGVuIG1hcmtlZCBzby4gSGFuZGxlCglWQVJfREVDTC4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IENoZWNrIGRlcHJlY2F0aW9uIG9uIG1ldGhvZHMgYW5kIHR5cGVzLgoJKHBhdGNoX2Jpbm9wKTogY29kZSBiZWNvbWVzIGFuIGVudW0gdHJlZV9jb2RlLCBhZGRlZCBkZWZhdWx0OiB0bwoJc3dpdGNoIHRvIGhhbmRsZSB0aGF0LiBEZXRlY3QgZGl2aXNpb24gYnkgemVybywgdHJ5IHRvIGZvbGQgYW5kCglyZXR1cm4gYmVmb3JlIHVzaW5nIGEgc3Vicm91dGluZS4KCjIwMDEtMDgtMjMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogamNmLXBhcnNlLmMgKHl5cGFyc2UpOiBTZXQgbWFnaWMgdG8gMCwgZG9uJ3QgaXNzdWUgZXJyb3IgZm9yIGEKCWZpbGUgc21hbGxlciB0aGFuIDQgYnl0ZXMuCgkqIHBhcnNlLnkgKGNoZWNrX2lubmVyX2NpcmN1bGFyX3JlZmVyZW5jZSk6IE5ldyBmdW5jdGlvbi4KCShjaGVja19jaXJjdWxhcl9yZWZlcmVuY2UpOiBMaWtld2lzZS4KCShhcnJheV9pbml0aWFsaXplcjopOiBBY2NlcHQgeyx9LgoJKGphdmFfY2hlY2tfY2lyY3VsYXJfcmVmZXJlbmNlKTogUmV3cml0dGVuIHVzaW5nCgljaGVja19jaXJjdWxhcl9yZWZlcmVuY2UgYW5kIGNoZWNrX2lubmVyX2NpcmN1bGFyX3JlZmVyZW5jZS4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBVbmNvbmRpdGlvbmFsbHkgc2F2ZSBhbmQgcmVzdG9yZQoJdGhlIHVucHVyZ2VkIGV4Y2VwdGlvbiBsaXN0LgoJKGJ1aWxkX2RvdF9jbGFzc19tZXRob2RfaW52b2NhdGlvbik6IFVubWFuZ2xlIHNpZ25hdHVyZSBwYXJhbWV0ZXIuCgoyMDAxLTA4LTIxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQWRkIGB0aHJvd3MnIGZpZWxkIHRvIG1ldGhvZAoJZGVzY3JpcHRvci4KCSogY2xhc3MuYyAobWFrZV9tZXRob2RfdmFsdWUpOiBDb21wdXRlIGB0aHJvd3MnIGZpZWxkIGZvciBtZXRob2QuCgoyMDAxLTA4LTIyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfaW5uZXJfY2xhc3MpOiBLZWVwIGxvY2FsX2VuY2xvc2luZyB0byBOVUxMIGlmCgljaXJjdWxhcml0eSBpcyBkZXRlY3RlZC4KCShjdG9yc191bmNoZWNrZWRfdGhyb3dzX2NsYXVzZV9wKTogRml4ZWQgbGVhZGluZyBjb21tZW50LgoKMjAwMS0wOC0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGVtaXRfcmVnaXN0ZXJfY2xhc3Nlcyk6IEFkZCBhbGlnbiBwYXJhbWV0ZXIgdG8KCWNhbGwgdG8gYXNzZW1ibGVfaW50ZWdlci4KCjIwMDEtMDgtMTYgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogamNmLXBhcnNlLmMgKGxvYWRfY2xhc3MpOiBOZXcgbG9jYWxzIHNhdmVkIGFuZCBjbGFzc19sb2FkZWQuIElmCglsb2FkaW5nIGEgY2xhc3Nfb3JfbmFtZSBmYWlscywgdHJ5IGNvbnNpZGVyaW5nIGFuIGlubmVyY2xhc3MgbmFtZQoJYW5kIGxvYWQgdGhlIGVuY2xvc2luZyBjb250ZXh0LgoJKiBwYXJzZS55IChyZXNvbHZlX2lubmVyX2NsYXNzKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmRfYXNfaW5uZXJfY2xhc3MpOiBBZGRlZCBsZWFkaW5nIGNvbW1lbnQuCgkocmVnaXN0ZXJfaW5jb21wbGV0ZV90eXBlKTogS2VlcCB0aGUgY3VycmVudCBjb250ZXh0IGFzIGVuY2xvc2luZwoJY29udGV4dCBmb3IgSkRFUF9GSUVMRCBkZXBlbmRlbmNpZXMuCgkoZG9fcmVzb2x2ZV9jbGFzcyk6IExvY2FscyBuZXdfY2xhc3NfZGVjbCBhbmQgc3VwZXIgaW5pdGlhbGl6ZWQgdG8KCU5VTEwuIENhbGwgcmVzb2x2ZV9pbm5lcl9jbGFzcywgZXhwbG9yZSB0aGUgZW5jbG9zaW5nIGNvbnRleHQKCXN1cGVyY2xhc3MgaWYgbmVjZXNzYXJ5LgoJRml4ZXMgUFIgamF2YS80MDA3CgoyMDAxLTA4LTE2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqY2YtZHVtcC5jIChtYWluKTogVXBkYXRlZCBmb3IgY2hhbmdlIHRvIGpjZl9wYXRoX3NlYWwuCgkqIGdqYXZhaC5jIChtYWluKTogVXBkYXRlZCBmb3IgY2hhbmdlIHRvIGpjZl9wYXRoX3NlYWwuCgkqIGxhbmcuYyAodmVyc2lvbl9mbGFnKTogTmV3IGdsb2JhbC4KCShqYXZhX2RlY29kZV9vcHRpb24pOiBSZWNvZ25pemUgYC12ZXJzaW9uJy4KCShqYXZhX2luaXQpOiBVcGRhdGUgZm9yIGNoYW5nZSB0byBqY2ZfcGF0aF9zZWFsLgoJKiBqY2YuaCAoamNmX3BhdGhfc2VhbCk6IEFkZGVkIGBwcmludCcgYXJndW1lbnQuCgkqIGpjZi1wYXRoLmMgKGpjZl9wYXRoX3NlYWwpOiBBZGRlZCBgcHJpbnQnIGFyZ3VtZW50LgoKMjAwMS0wOC0xMyAgWmFjayBXZWluYmVyZyAgPHphY2t3QHBhbml4LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS9kZWNsLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKiBkZWNsLmM6IEluY2x1ZGUgbGliZnVuY3MuaCwgZG9uJ3QgaW5jbHVkZSB0b3BsZXYuaC4KCjIwMDEtMDgtMTIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IGV4Y2VwdGlvbl90eXBlX25vZGUsCgljbGFzc19ub3RfZm91bmRfdHlwZV9ub2RlLCBhbmQgbm9fY2xhc3NfZGVmX2ZvdW5kX3R5cGVfbm9kZQoJaW5pdGlhbGl6ZWQuIHByZWRlZl9maWxlbmFtZXMgYXVnbWVudGVkIGFjY29yZGluZ2x5LgoJaW5zdGluaXRfaWRlbnRpZmllcl9ub2RlIGluaXRpYWxpemVkLgoJKiBqYXZhLXRyZWUuZGVmIChJTlNUQU5DRV9JTklUSUFMSVpFUlNfRVhQUik6IEVudHJ5IHJlbW92ZWQuCgkqIGphdmEtdHJlZS5oIChlbnVtIGphdmFfdHJlZV9pbmRleCk6IE5ldyBlbnRyaWVzCglKVElfRVhDRVBUSU9OX1RZUEVfTk9ERSwgSlRJX0NMQVNTX05PVF9GT1VORF9UWVBFX05PREUsCglKVElfTk9fQ0xBU1NfREVGX0ZPVU5EX1RZUEVfTk9ERSwgSlRJX0lOU1RJTklUX0lERU5USUZJRVJfTk9ERS4KCShleGNlcHRpb25fdHlwZV9ub2RlKTogTmV3IG1hY3JvLgoJKGNsYXNzX25vdF9mb3VuZF90eXBlX25vZGUpOiBMaWtld2lzZS4KCShub19jbGFzc19kZWZfZm91bmRfdHlwZV9ub2RlKTogTGlrZXdpc2UuCgkoaW5zdGluaXRfaWRlbnRpZmllcl9ub2RlKTogTGlrZXdpc2UuCgkoUFJFREVGX0ZJTEVOQU1FU19TSVpFKTogQWRqdXN0ZWQuCgkoVFlQRV9IQVNfRklOQUxfVkFSSUFCTEUpOiBGaXhlZCB0eXBvLgoJKHN0cnVjdCBsYW5nX3R5cGUpOiBGaXhlZCB0eXBvIGluIGJpdGZpZWxkIG5hbWUuCgkoREVDTF9JTlNUSU5JVF9QKTogTmV3IG1hY3JvLgoJKElEX0lOU1RJTklUX1ApOiBMaWtld2lzZS4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2NsYXNzZmlsZSk6IGluc3Rpbml0JCBiZWFycyB0aGUgU3ludGhldGljCglhdHRyaWJ1dGUuCgkqIHBhcnNlLnkgKGVuY2Fwc3VsYXRlX3dpdGhfdHJ5X2NhdGNoKTogTmV3IGZ1bmN0aW9uLgoJKGdlbmVyYXRlX2luc3Rpbml0KTogTGlrZXdpc2UuCgkoYnVpbGRfaW5zdGluaXRfaW52b2NhdGlvbik6IExpa2V3aXNlLgoJKGN0b3JzX3VuY2hlY2tlZF90aHJvd3NfY2xhdXNlX3ApOiBMaWtld2lzZS4KCShhZGRfaW5zdGFuY2VfaW5pdGlhbGl6ZXIpOiBEZWxldGVkLgoJKGJ1aWxkX2luc3RhbmNlX2luaXRpYWxpemVyKTogTGlrZXdpc2UuCgkoaW5faW5zdGFuY2VfaW5pdGlhbGl6ZXIpOiBMaWtld2lzZS4KCShjaGVja19tZXRob2RfcmVkZWZpbml0aW9uKTogaW5zdGluaXQkIG5vdCB0byBiZSB2ZXJpZmllZC4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogR2VuZXJhdGUgaW5zdGluaXQkLCBzaW1wbGlmaWVkIGNvZGUuCgkoYnVpbGRfZG90X2NsYXNzX21ldGhvZCk6IEVsaW1pbmF0ZWQgdW5uZWNlc3NhcnkgbG9jYWxzLiBVc2UKCWVuY2Fwc3VsYXRlX3dpdGhfdHJ5X2NhdGNoLCByZW1vdmVkIHVubmVjZXNzYXJ5IGNvZGUuCgkoZml4X2NvbnN0cnVjdG9ycyk6IE5ldyBsb2NhbCBpaWkuIFVzZSBidWlsZF9pbnN0aW5pdF9pbnZvY2F0aW9uLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogQWRkZWQgY29tbWVudC4KCShtYXliZV91c2VfYWNjZXNzX21ldGhvZCk6IERvbid0IGNvbnNpZGVyIGluc3Rpbml0JC4KCShmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBTaG9ydGVuIHRoZSBzZWFyY2ggZm9yCglpbnN0aW5pdCQgdG9vLgoJKGphdmFfY29tcGxldGVfbGhzKTogY2FzZSBJTlNUQU5DRV9JTklUSUFMSVpFUlNfRVhQUiByZW1vdmVkLgoJKHBhdGNoX3JldHVybik6IFVzZSBERUNMX0lOU1RJTklUX1AgaW5zdGVhZCBvZiBpbl9pbnN0YW5jZV9pbml0aWFsaXplci4KCShwYXRjaF90aHJvd19zdGF0ZW1lbnQpOiBMaWtld2lzZS4gRml4ZWQgdHlwby4KCjIwMDEtMDgtMTIgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCglSZXZlcnQ6CgkyMDAxLTA4LTAyICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCSoganZzcGVjLmMgKGp2Z2VubWFpbl9zcGVjKTogQ2Fubm90IHVzZSAldW1haW4sIGJyZWFrcwoJQVNNX0ZJTkFMX1NQRUMuCgkobGFuZ19zcGVjaWZpY19wcmVfbGluayk6IFVzZSBzZXRfaW5wdXQgdG8gc2V0IGlucHV0X2ZpbGVuYW1lLgoJQXBwZW5kIGBtYWluJyBoZXJlLgoJKiBqdmdlbm1haW4uYyAodXNhZ2UpOiBBcHBlbmQgbGl0ZXJhbCBgbWFpbicgdG8gQ0xBU1NOQU1FLgoJKG1haW4pOiBGaXggZGVmaW5pdGlvbi4KCVN0cmlwIGBtYWluJyBmcm9tIGNsYXNzbmFtZS4KCUZpeGVzIFBSIGphdmEvMjI3LgoKMjAwMS0wOC0xMSAgWmFjayBXZWluYmVyZyAgPHphY2t3QHBhbml4LmNvbT4KCgkqIGxleC5oOiBEb24ndCBpbmNsdWRlIHNldGptcC5oLiAgRG9uJ3QgZGVmaW5lCglTRVRfRkxPQVRfSEFORExFUiBvciBwcm90b3R5cGUgc2V0X2Zsb2F0X2hhbmRsZXIuCgoyMDAxLTA4LTA5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogQ2FsbCBgZXhwYW5kX2VuZF9iaW5kaW5ncycgYW5kCglgcG9wbGV2ZWwnIGluIHRoZSByaWdodCBvcmRlci4KCjIwMDEtMDgtMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGNsYXNzLm8pOiBEZXBlbmQgb24gVEFSR0VUX0guCgkqIGNsYXNzLmMgKGVtaXRfcmVnaXN0ZXJfY2xhc3Nlcyk6IFVzZSB0YXJnZXQgaG9va3MgaW5zdGVhZCBvZgoJYXNzZW1ibGVfY29uc3RydWN0b3IgYW5kIGFzc2VtYmxlX2Rlc3RydWN0b3IuCgoyMDAxLTA4LTA4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoZmxhZ3MuaCk6IEluY2x1ZGUKCShjaGVja19pbml0KTogRG9uJ3QgcmVwb3J0IHVuaW5pdGlhbGl6ZWQgc3RhdGljIGNsYXNzCglpbml0aWFsaXphdGlvbiBmbGFncywgZG9uJ3QgZnJlZSBiaXQgaW5kZXggd2hlbiBkb2luZyBzdGF0aWMgY2xhc3MKCWluaXRpYWxpemF0aW9uIG9wdGltaXphdGlvbi4KCShjaGVja19mb3JfaW5pdGlhbGl6YXRpb24pOiBSZXR1cm4gdHlwZSBjaGFuZ2VkIHRvIGB1bnNpZ25lZCBpbnQuJwoJKGF0dGFjaF9pbml0aWFsaXplZF9zdGF0aWNfY2xhc3MpOiBOZXcgZnVuY3Rpb24uCgkqIGNsYXNzLmMgKGFkZF9tZXRob2RfMSk6IENyZWF0ZSB0aGUgaW5pdGlhbGl6ZWQgc3RhdGljIGNsYXNzCgl0YWJsZSBpZiBuZWNlc3NhcnkuCgkoZmluaXNoX2NsYXNzKTogQWx3YXlzIGVtaXQgZGVmZXJyZWQgaW5saW5lIG1ldGhvZHMuCgkqIGRlY2wuYyAoZW1pdF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb24pOiBNb3ZlZCB0byBleHByLmMKCShjb21wbGV0ZV9zdGFydF9qYXZhX21ldGhvZCk6IERvbid0IHRyYXZlcnNlCglERUNMX0ZVTkNUSU9OX0lOSVRfVEVTVF9UQUJMRS4KCShsYW5nX21hcmtfdHJlZSk6IE1hcmsgaGFzaCB0YWJsZXMgaW4gZnVuY3Rpb24gZGVjbHMuCgkqIGV4cHIuYyAoZW1pdF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb24pOiBNb3ZlZCBmcm9tIGRlY2wuYy4KCShidWlsZF9jbGFzc19pbml0KTogQ3JlYXRlIExBR19ERUNMX1NQRUNJRklDIGZvciB0aGUgc3RhdGljIGNsYXNzCglpbml0aWFsaXphdGlvbiBmbGFnLCBzZXQgREVDTF9DT05URVhUIGFuZAoJTE9DQUxfQ0xBU1NfSU5JVElBTElaQVRJT05fRkxBRy4KCShqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBFbWl0IGluaXRpYWxpemF0aW9uIGNvZGUgZm9yIHN0YXRpYyBjbGFzcwoJaW5pdGlhbGl6ZWQgZmxhZ3Mgd2hlbiBlbnRlcmluZyBibG9jaywgaWYgbmVjZXNzYXJ5LgoJKiBnY2oudGV4aSAoLWZuby1vcHRpbWl6ZS1zdGF0aWMtY2xhc3MtaW5pdGlhbGl6YXRpb24pOiBEb2N1bWVudGVkLgoJKiBqYXZhLXRyZWUuaCAoZmxhZ19vcHRpbWl6ZV9zY2kpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlIGRlY2xhcmF0aW9uLgoJKERFQ0xfRlVOQ1RJT05fSU5JVElBTElaRURfQ0xBU1NfVEFCTEUpOiBOZXcgbWFjcm8uCgkoREVDTF9GVU5DVElPTl9TVEFUSUNfTUVUSE9EX0lOVk9DQVRJT05fQ09NUE9VTkQpOiBMaWtld2lzZS4KCShMT0NBTF9GSU5BTF9QKTogRml4ZWQgdHlwbyBpbiBjb21tZW50LgoJKEZJTkFMX1ZBUklBQkxFX1ApOiBMaWtld2lzZS4KCShMT0NBTF9DTEFTU19JTklUSUFMSVpBVElPX0ZMQUcpOiBOZXcgbWFjcm8uCgkoTE9DQUxfQ0xBU1NfSU5JVElBTElaQVRJT19GTEFHX1ApOiBMaWtld2lzZS4KCShzdHJ1Y3QgbGFuZ19kZWNsKTogTmV3IGZpZWxkcyBgaWN0JywgYHNtaWMnIGFuZCBgY2lmLicKCShjaGVja19mb3JfaW5pdGlhbGl6YXRpb24pOiBOZXcgcmV0dXJuZWQgdmFsdWUgZm9yIGdsb2JhbC4KCShhdHRhY2hfaW5pdGlhbGl6ZWRfc3RhdGljX2NsYXNzKTogTmV3IGdsb2JhbCBmdW5jdGlvbi4KCShTVEFUSUNfQ0xBU1NfSU5JVF9PUFRfUCk6IE5ldyBtYWNyby4KCSogbGFuZy1vcHRpb25zLmggKC1mbm8tb3B0aW1pemUtc3RhdGljLWNsYXNzLWluaXRpYWxpemF0aW9uKTogTmV3IGZsYWcuCgkqIGxhbmcuYyAoamF2YV9kZWNvZGVfb3B0aW9uKTogSGFuZGxlCglgLWZuby1vcHRpbWl6ZS1zdGF0aWMtY2xhc3MtaW5pdGlhbGl6YXRpb24nCgkqIHBhcnNlLnkgKHN0YXJ0X2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9leHBhbmRfbWV0aG9kX2JvZGllcyk6IExpa2V3aXNlLgoJKGF0dGFjaF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb25fZmxhZ3MpOiBMaWtld2lzZS4KCShhZGp1c3RfaW5pdF90ZXN0X2luaXRpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkoZW1pdF90ZXN0X2luaXRpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IE51bGxpZnkgYWJzdHJhY3QgYW5kIG5hdGl2ZSBtZXRob2QKCWJvZGllcy4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBOZXcgbG9jYWxzIGBmYm9keScsIGBibG9ja19ib2R5JwoJYW5kIGBleGNlcHRpb25fY29weS4nIFJlb3JnYW5pemVkOiBkaXJlY3RseSByZXR1cm4gb24gZW1wdHkgbWV0aG9kCglib2RpZXMsIGNhbGwgYHN0YXJ0X2NvbXBsZXRlX2V4cGFuZF9tZXRob2QnLCByZW1lbWJlciBkZWZpbml0ZWx5Cglpbml0aWFsaXplZCBzdGF0aWMgY2xhc3MgaW4gZnVuY3Rpb24sIGRvbid0IGV4cGFuZCBtZXRob2QgYm9kaWVzLgoJKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBDYWxsIGBqYXZhX2V4cGFuZF9tZXRob2RfYm9kaWVzJyBiZWZvcmUKCWBmaW5pc2hfY2xhc3MnIHdoZW4gY29tcGlsaW5nIHRvIG5hdGl2ZS4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IFVzZSBgb3JpZycgYWZ0ZXIgYnVpbGRpbmcgb3V0ZXIgY2xhc3MKCWZpZWxkIGFjY2Vzcy4KCShwYXRjaF9pbnZva2UpOiBSZW1lbWJlciBzdGF0aWMgbWV0aG9kIGludm9jYXRpb25zLgoKMjAwMS0wOC0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGVtaXRfcmVnaXN0ZXJfY2xhc3Nlcyk6IFBhc3MgYSBzeW1ib2xfcmVmIGFuZCBwcmlvcml0eQoJdG8gYXNzZW1ibGVfY29uc3RydWN0b3IuCgoyMDAxLTA4LTAyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGphdmEtdHJlZS5oIChhbGxfY2xhc3NfZmlsZW5hbWUpOiBOZXcgbWFjcm8uCgkoZW51bSBqYXZhX3RyZWVfaW5kZXgpOiBOZXcgZW51bSBgSlRJX0FMTF9DTEFTU19GSUxFTkFNRS4nCgkoQlVJTERfRklMRU5BTUVfSURFTlRJRklFUl9OT0RFKTogRml4ZWQgbGVhZGluZyBjb21tZW50LiBMaW5rCgluZXdseSBjcmVhdGVkIElERU5USUZJRVJfTk9ERSB0byBgYWxsX2NsYXNzX2ZpbGVuYW1lLicKCjIwMDEtMDgtMDEgIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCgkqIGphdmEtdHJlZS5oIChCVUlMRF9GSUxFTkFNRV9JREVOVElGSUVSX05PREUpOgoJVXNlIGdnY19hZGRfdHJlZV9yb290IHRvIHJlZ2lzdGVyIHJvb3RzLgoKMjAwMS0wNy0zMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBXSVRIX0NMRUFOVVBfRVhQUiBub2RlIHRvIHVzZSBpdHMKCXNlY29uZCBvcGVyYW5kIGNhbGxpbmcgY2hlY2tfaW5pdC4KCSogZGVjbC5jIChjb21wbGV0ZV9zdGFydF9qYXZhX21ldGhvZCk6IFN3YXBlZCBzZWNvbmQgYW5kIHRoaXJkCglhcmd1bWVudHMgd2hpbGUgY3JlYXRpbmcgV0lUSF9DTEVBTlVQX0VYUFIgbm9kZS4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogVXNlIHNlY29uZCBvcGVyYW5kCglpbnN0ZWFkIG9mIHRoaXJkIHdoZW4gaGFuZGxpbmcgV0lUSF9DTEVBTlVQX0VYUFIuCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogRXhwYW5kIHNlY29uZCBvcGVyYW5kIG9mCglXSVRIX0NMRUFOVVBfRVhQUiBub2Rlcy4KCShwYXRjaF9zeW5jaHJvbml6ZWRfc3RhdGVtZW50KTogU3dhcGVkIHNlY29uZCBhbmQgdGhpcmQgYXJndW1lbnRzCgl3aGlsZSBjcmVhdGluZyBXSVRIX0NMRUFOVVBfRVhQUiBub2RlLgoKMjAwMS0wNy0xOCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChjcmVhdGVfaW50ZXJmYWNlKTogQXZvaWQgY3ljbGljIGluaGVyaXRhbmNlIHJlcG9ydCB3aGVuCglzeW50YXggZXJyb3IgZW5jb3VudGVyZWQgZHVyaW5nIGNsYXNzIGRlZmluaXRpb24uCglGaXhlcyBQUiBqYXZhLzI5NTYKCjIwMDEtMDgtMDIgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSoganZzcGVjLmMgKGp2Z2VubWFpbl9zcGVjKTogQ2Fubm90IHVzZSAldW1haW4sIGJyZWFrcwoJQVNNX0ZJTkFMX1NQRUMuCgkobGFuZ19zcGVjaWZpY19wcmVfbGluayk6IFVzZSBzZXRfaW5wdXQgdG8gc2V0IGlucHV0X2ZpbGVuYW1lLgoJQXBwZW5kIGBtYWluJyBoZXJlLgoJKiBqdmdlbm1haW4uYyAodXNhZ2UpOiBBcHBlbmQgbGl0ZXJhbCBgbWFpbicgdG8gQ0xBU1NOQU1FLgoJKG1haW4pOiBGaXggZGVmaW5pdGlvbi4KCVN0cmlwIGBtYWluJyBmcm9tIGNsYXNzbmFtZS4KCUZpeGVzIFBSIGphdmEvMjI3LgoKMjAwMS0wNy0xOCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCUZvciBQUiBqYXZhLzI4MTI6CgkqIGxleC5oOiBVc2UgSEFWRV9JQ09OViwgbm90IEhBVkVfSUNPTlZfSC4KCSogbGV4LmMgKGphdmFfbmV3X2xleGVyKTogVXNlIElDT05WX0NPTlNULgoJKGphdmFfcmVhZF9jaGFyKTogTGlrZXdpc2UuCgkqIE1ha2UtbGFuZy5pbiAoamMxJChleGVleHQpKTogTGluayBhZ2FpbnN0IExJQklDT05WLgoJKGp2LXNjYW4kKGV4ZWV4dCkpOiBMaWtld2lzZS4KCjIwMDEtMDctMTcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UuaCAoSU5URVJGQUNFX0lOTkVSX01PRElGSUVSUyk6IERpc2FsbG93IGBwcml2YXRlLicKCSogcGFyc2UueSAoY2hlY2tfY2xhc3NfaW50ZXJmYWNlX2NyZWF0aW9uKTogQWxsb3cgYHByaXZhdGUnIGlmIHRoZQoJZW5jbG9zaW5nIGlzIG5vdCBhbiBpbnRlcmZhY2UuCgkoY3JlYXRlX2ludGVyZmFjZSk6IEludGVyZmFjZSB0YWdnZWQgcHVibGljIGlmIHRoZSBlbmNsb3NpbmcKCWNvbnRleHQJaXMgYW4gaW50ZXJmYWNlLgoJKGNyZWF0ZV9jbGFzcyk6IENsYXNzIHRhZ2dlZCBwdWJsaWMgaWYgdGhlIGVuY2xvc2luZyBjb250ZXh0CglpcyBhbiBpbnRlcmZhY2UuCglGaXhlcyBQUiBqYXZhLzI5NTkKCjIwMDEtMDctMTcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAocHVzaF9jbGFzcyk6IFNldCBERUNMX1NJWkUgdG8gYGludGVnZXJfemVyb19ub2RlLicKCUZpeGVzIFBSIGphdmEvMjY2NQoKMjAwMS0wNy0xNCAgVGltIEpvc2xpbmcgIDx0ZWpAbWVsYnBjLm9yZy5hdT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IFJlbW92ZSByZWZlcmVuY2VzIHRvIEVYUE9OX0VYUFIuCgoyMDAxLTA3LTEzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbHNoKTogU2V0IENBTl9DT01QTEVURV9OT1JNQUxMWSBhbmQgdW5zZXQKCVRSRUVfQ09OU1RBTlRfT1ZFUkZMT1cgb2YgQ0FTRV9FWFBSIHZhbHVlLgoJRml4ZXMgUFIgamF2YS8zNjAyCgoyMDAxLTA3LTEzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqdnNwZWMuYyAoanZnZW5tYWluX3NwZWMpOiBSZW1vdmUgLWZmaWxlbGlzdC1maWxlIGZyb20gY2MxCglpbnZvY2F0aW9uLgoKMjAwMS0wNy0xMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IERvbid0IG92ZXJyaWRlIHByaW1hcnkgaWYgb25lCglpcyBhbHJlYWR5IHByb3ZpZGVkLCBidXQgbGV0IHRoaXMkPG4+IGJlIGJ1aWx0LiBGaXhlZCBjb21tZW50LgoKMjAwMS0wNy0xMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChlbXB0eV9zdGF0ZW1lbnQ6KTogUmVwb3J0IGVtcHR5IHN0YXRlbWVudCBlcnJvciBvbmx5Cgl3aGVuIGZvdW5kIGF0IGNsYXNzIGRlY2xhcmF0aW9uIGxldmVsLgoJRml4ZXMgUFIgamF2YS8zNjM1CgoyMDAxLTA3LTEyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9sb2FkX2ludGVybmFsKTogTmV3IGZ1bmN0aW9uLgoJKExPQURfSU5URVJOQUwpOiBVc2UgaXQuCgoyMDAxLTA3LTExICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHZlcmlmeV9jb25zdHJ1Y3Rvcl9zdXBlcik6IENvbXBhcmUgYW5vbnltb3VzIGNsYXNzIGN0b3IKCWFyZ3Mgd2l0aCBgdmFsaWRfbWV0aG9kX2ludm9jYXRpb25fY29udmVyc2lvbl9wLicKCUZpeGVzIFBSIGphdmEvMzI4NQoKMjAwMS0wNy0xMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBsYW5nLXNwZWNzLmg6IEZvcmJpdCB0aGUgdXNlIGlmIGAtZmVtaXQtY2xhc3MtZmlsZXtzfScgd2l0aG91dAoJYC1mc3ludGF4LW9ubHkuJyBGaXhlcyBQUiBqYXZhLzMyNDgKCjIwMDEtMDctMTAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogamNmLWlvLmMgKGZpbmRfY2xhc3MpOiBDbGFyaWZpZWQgZXJyb3IgbWVzc2FnZS4gRml4ZXMgUFIgamF2YS8yNjAzCgoyMDAxLTA3LTEwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLmggKElOTkVSX0VOQ0xPU0lOR19TQ09QRV9DSEVDSyk6IE5vIGB0aGlzJyBpcyBmaW5lIGlmIHRoZQoJY3VycmVudCBmdW5jdGlvbiBpcyBzdGF0aWMuIEZpeGVzIFBSIGphdmEvMTk3MAoKMjAwMS0wNy0wOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IEFkZCBlbmNsb3NpbmcgY29udGV4dCB0byBjdG9yCgljYWxscyBpZiBuZWNlc3NhcnkuIEZpeGVzIFBSIGphdmEvMjk1MwoKMjAwMS0wNy0wOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChyZXNvbHZlX3BhY2thZ2UpOiBBYm9ydCBpZiBxdWFsaWZpZWQgZXhwcmVzc2lvbiBtZW1iZXIKCWlzbid0IHJpZ2h0LgoJKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBEb24ndCBxdWFsaWZ5IGFzIHR5cGUgaWYgYHRoaXMnIGluIHVzZS4KCUZpeGVzIFBSIGphdmEvMTM5MQoKMjAwMS0wNy0wNyAgWmFjayBXZWluYmVyZyAgPHphY2t3QHN0YW5mb3JkLmVkdT4KCgkqIHZlcmlmeS5jOiBEb24ndCB1c2UgLy8gY29tbWVudHMuCgoyMDAxLTA3LTA1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBsYW5nLmMgKGZsYWdfYXNzdW1lX2NvbXBpbGVkKTogUmVtb3ZlZC4KCSogamF2YS10cmVlLmggKGZsYWdfYXNzdW1lX2NvbXBpbGVkKTogUmVtb3ZlZC4KCSogbGFuZy1vcHRpb25zLmg6IFJlbW92ZWQgLWZmaWxlLWxpc3QtZmlsZSwgLWZ1c2UtYm9laG0tZ2MsCgktZmhhc2gtc3luY2hyb25pemF0aW9uLCAtZnVzZS1kaXZpZGUtc3Vicm91dGluZSwKCS1mY2hlY2stcmVmZXJlbmNlcywgLWZlbWl0LWNsYXNzLWZpbGUsIC1mZW1pdC1jbGFzcy1maWxlcywKCS1mYXNzdW1lLWNvbXBpbGVkLiAgVXBkYXRlZCAtLWVuY29kaW5nIGluZm9ybWF0aW9uLiAgQ2hhbmdlZAoJLWZvdXRwdXQtY2xhc3MtZGlyIHRvIGAtZCcuCgoyMDAxLTA3LTA0ICBEYW5pZWwgQmVybGluICA8ZGFuQGNnc29mdHdhcmUuY29tPgoKCSogamNmLXBhcnNlLmMgKHBhcnNlX2NsYXNzX2ZpbGUpOiBBZGQgbGluZW5vIHBhcmFtZXRlciB0bwoJZGVidWdfc3RhcnRfc291cmNlX2ZpbGUgY2FsbC4KCjIwMDEtMDctMDQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGdjai50ZXhpOiBVc2UgZ3BsLnRleGkuCgkqIE1ha2UtbGFuZy5pbiAoJChzcmNkaXIpL2phdmEvZ2NqLmluZm8sIGphdmEvZ2NqLmR2aSk6IFVwZGF0ZQoJZGVwZW5kZW5jaWVzIGFuZCB1c2UgZG9jL2luY2x1ZGUgaW4gc2VhcmNoIHBhdGguCgoyMDAxLTA3LTAzICBKZWZmIFN0dXJtICA8anN0dXJtQG9uZS1wb2ludC5jb20+CgoJKiBwYXJzZS55IChmaXhfY29uc3RydWN0b3JzKTogVGVzdCBpZiBhIENBTExfRVhQUiBpbnZva2VzCglgdGhpcycuICBJZiBzbywgZG9uJ3QgYnVpbGQgaW5zdGFuY2UgaW5pdGlhbGl6ZXJzLgoKMjAwMS0wNy0wMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IEltcHJvdmVkIGVycm9yIG1lc3NhZ2UgZm9yCglpbm5lciBjbGFzcyBjYXNlcy4gRml4ZXMgUFIgamF2YS8xOTU4CgoyMDAxLTA2LTI4ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBsYW5nLmM6ICNpbmNsdWRlIGRpYWdub3N0aWMuaAoJKGxhbmdfcHJpbnRfZXJyb3IpOiBBZGQgYSBgZGlhZ25vc3RpY19jb250ZXh0IConIHBhcmFtZXRlci4KCShqYXZhX2R1bW15X3ByaW50KTogTGlrZXdpc2UuCgkqIE1ha2UtbGFuZy5pbiAoSkFWQV9MRVhfQyk6IERlcGVuZCBvbiBkaWFnbm9zdGljLmgKCjIwMDEtMDYtMjcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogamNmLXBhcnNlLmMgKGdjY19tYXJrX2pjZik6IFRlc3QgZm9yIGEgZmluaXNoZWQgSkNGLgoJKiBqY2YuaCAodHlwZWRlZiBzdHJ1Y3QgSkNGKTogTmV3IGJpdGZpZWxkIGBmaW5pc2hlZC4nCgkoSkNGX0ZJTklTSCk6IFNldCBgZmluaXNoZWQuJwoJKEpDRl9aRVJPKTogUmVzZXQgYGZpbmlzaGVkLicKCUZpeGVzIFBSIGphdmEvMjYzMwoKMjAwMS0wNi0yNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChjbGFzc19ib2R5X2RlY2xhcmF0aW9uOik6IERvbid0IGluc3RhbGwgZW1wdHkgaW5zdGFuY2UKCWluaXRpYWxpemVycy4KCUZpeGVzIFBSIGphdmEvMTMxNAoKMjAwMS0wNi0yNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChzZXRfc3VwZXJfaW5mbyk6IENhbGwgYHNldF9jbGFzc19kZWNsX2FjY2Vzc19mbGFncy4nCgkoc2V0X2NsYXNzX2RlY2xfYWNjZXNzX2ZsYWdzKTogTmV3IGZ1bmN0aW9uLgoJKiBqYXZhLXRyZWUuaCAoc2V0X2NsYXNzX2RlY2xfYWNjZXNzX2ZsYWdzKTogTmV3IHByb3RvdHlwZS4KCSogamNmLXBhcnNlLmMgKGhhbmRsZV9pbm5lcmNsYXNzX2F0dHJpYnV0ZSk6IFJlYWQgYW5kIHNldCBhY2Nlc3MgZmxhZ3MuCgkocGFyc2VfY2xhc3NfZmlsZSk6IE5ldyBsb2NhbCBgZGVjbF9tYXhfbG9jYWxzLicgVGFrZSB3aWRlIHR5cGVzCglpbnRvIGFjY291bnQgdG8gY29tcHV0ZSBERUNMX01BWF9MT0NBTFMuCgkqIHBhcnNlLnkgKHR5cGVfaW1wb3J0X29uX2RlbWFuZF9kZWNsYXJhdGlvbjopOiBJZ25vcmUgZHVwbGljYXRlCglpbXBvcnRzIG9uIGRlbWFuZC4KCjIwMDEtMDYtMjIgIEphbiB2YW4gTWFsZSAgPGphbi52YW5tYWxlQGZlbmsud2F1Lm5sPgoKCSogemlwZmlsZS5oOiBVc2UgR0NDX0pDRl9IIGluc3RlYWQgb2YgSkNGX0guCgoyMDAxLTA2LTIwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGphdmFfaGFzaF90cmVlX25vZGUpOiBGaXhlZCBpbmRlbnRhdGlvbiBpbiBsZWFkaW5nIGNvbW1lbnQuCgkqIHBhcnNlLnkgKGRvX3Jlc29sdmVfY2xhc3MpOiBNb3ZlZCBjb21tZW50cyBvdXQgdG8gbGVhZGluZyBjb21tZW50CglzZWN0aW9uLiBSZW1vdmVkIGxvY2FsIGBzdGFydCcsIE5ldyBsb2NhbCBgX2h0JyBhbmQKCWBjaXJjdWxhcml0eV9oYXNoLicgIFJlY29yZCBgZW5jbG9zaW5nJyBpbiBoYXNoIHRhYmxlIGFuZCBzZWFyY2gKCWl0IHRvIGRldGVjdCBjaXJjdWxhcml0eS4gIFVzZSBgZW5jbG9zaW5nJyBhcyBhbiBhcmd1bWVudCB0bwoJYGxvb2t1cF9jbC4nIEZyZWUgdGhlIGhhc2ggdGFibGUgd2hlbiBkb25lLgoKMjAwMS0wNi0xOSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogbGV4LmMgKGphdmFfcmVhZF9jaGFyKTogRGlzYWxsb3cgaW52YWxpZCBhbmQgb3ZlcmxvbmcKCXNlcXVlbmNlcy4gIEZpeGVzIFBSIGphdmEvMjMxOS4KCjIwMDEtMDYtMDUgIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCgkqIGRlY2wuYyAoY3JlYXRlX3ByaW1pdGl2ZV92dGFibGUpOiBEb24ndCBjYWxsIG1ha2VfZGVjbF9ydGwuCgoyMDAxLTA2LTA0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoZm9yY2VfZXZhbHVhdGlvbl9vcmRlcik6IE1hdGNoIHdyYXBwZWQgY3RvciBjYWxscywgbG9jYXRlCglhcmd1bWVudHMgYWNjb3JkaW5nbHkuCgoyMDAxLTA2LTAyICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnY2oudGV4aTogTW92ZSBjb250ZW50cyB0byBqdXN0IGFmdGVyIHRpdGxlIHBhZ2UuCgoyMDAxLTA2LTAxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHR5cGVfbGl0ZXJhbHM6KTogVXNlIGBidWlsZF9pbmNvbXBsZXRlX2NsYXNzX3JlZicgd2l0aAoJYnVpbHRpbiB0eXBlLgoJKHBhdGNoX2luY29tcGxldGVfY2xhc3NfcmVmKTogQnVpbGQgdGhlIGNsYXNzIHJlZiwgYnVpbGQgdGhlIGNsYXNzCglpbml0IGlmIG5lY2Vzc2FyeSwgY29tcGxldGUgdGhlIHRyZWUuCglGaXhlcyBQUiBqYXZhLzI2MDUKCjIwMDEtMDUtMzEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAobG9va3VwX2ZpZWxkX3dyYXBwZXIpOiBUZXN0IGBuYW1lJyBjb2RlLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IFRlc3QgYHF1YWxfd2ZsJyBjb2RlLgoJKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBIYW5kbGUgYENPTlZFUlRfRVhQUicsIGZpeGUgaW5kZW50YXRpb24sCgloYW5kbGUgYHF1YWxfd2ZsJyBieSBjb2RlLgoJKG1heWJlX2J1aWxkX3ByaW10dHlwZV90eXBlX3JlZik6IFRlc3QgYHdmbCcgY29kZS4KCjIwMDEtMDUtMjMgIFRoZW9kb3JlIFBhcGFkb3BvdWxvICA8VGhlb2RvcmUuUGFwYWRvcG91bG9Ac29waGlhLmlucmlhLmZyPgoKCSogTWFrZS1sYW5nLmluICgkKHNyY2RpcikvamF2YS9nY2ouaW5mbyk6IEFkZGVkIGRlcGVuZGVuY2llcyBvbgoJZmRsLnRleGkuCgkoamF2YS9nY2ouZHZpKTogVXNlIFRFWEkyRFZJIGluc3RlYWQgb2YgY3VzdG9tIHRleCBjYWxscy4gIENyZWF0ZQoJdGhlIGR2aSBmaWxlIGluIHRoZSBqYXZhIGRpcmVjdG9yeS4KCjIwMDEtMDUtMjUgIFNhbSBUSCAgPHNhbUB1Y2hpY2Fnby5lZHU+CgoJKiBnZW4tdGFibGUucGwgamF2YW9wLmggamNmLmggbGV4LmgsCglwYXJzZS5oOiBGaXggaGVhZGVyIGluY2x1ZGUgZ3VhcmRzLgoKMjAwMS0wNS0yMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSoganYtc2Nhbi5jICh2ZXJzaW9uKTogVXBkYXRlIGNvcHlyaWdodCB5ZWFyLgoKMjAwMS0wNS0yMSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqY2YtcGFyc2UuYyAocmVhZF9jbGFzcyk6ICBJZiBjbGFzcyBpcyBmcm9tIC5jbGFzcyBvciAuemlwIGZpbGUKCWFuZCBpdCdzIGFscmVhZHkgYmVlbiByZWFkLCBkb24ndCBwdXNoL3BvcCBwYXJzZXIgY29udGV4dC4KCjIwMDEtMDUtMTggIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfcHJlX2xpbmspOiAgUmUtYXJyYW5nZSB0aGUgbGlua2VyCgljb21tYW5kIGxpbmUgc28gdGhlIGp2Z2VubWFpbi1nZW5lcmF0ZWQgbWFpbiBwcm9ncmFtIGNvbWVzIGZpcnN0LgoKMjAwMS0wNS0xNSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfdXRmOF9yZWYpOiBEb24ndCBnZW5lcmF0ZSBpZGVudGlmaWVyIGJhc2VkIG9uCgl1dGY4Y29uc3QgY29udGVudHMuCgoyMDAxLTA1LTEyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogamF2YS10cmVlLmRlZiAoSkFWQV9FWENfT0JKX0VYUFIpOiBOZXcuCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogRXhwYW5kIGl0LgoJKHByb2Nlc3NfanZtX2luc3RydWN0aW9uKTogQnVpbGQgSkFWQV9FWENfT0JKX0VYUFIgaW5zdGVhZCBvZgoJY2FsbGluZyBidWlsZF9leGNlcHRpb25fb2JqZWN0X3JlZi4KCSogcGFyc2UueSAoY2F0Y2hfY2xhdXNlX3BhcmFtZXRlcik6IExpa2V3aXNlLgoJKGJ1aWxkX2RvdF9jbGFzc19tZXRob2QpOiBMaWtld2lzZS4KCSh0cnlfcmVmZXJlbmNlX2Fzc2lnbmNvbnYpOiBMaWtld2lzZS4KCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogQ2hlY2sgSkFWQV9FWENfT0JKX0VYUFIgbm90IEVYQ19QVFJfRVhQUi4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogTGlrZXdpc2UuCgoyMDAxLTA1LTA3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGJ1aWxkX3VucmVzb2x2ZWRfYXJyYXlfdHlwZSk6IFNldAoJRVhQUl9XRkxfUVVBTElGSUNBVElPTiBvbiB0aGUgbmV3bHkgY3JlYXRlZCB3ZmwuCglGaXhlcyBQUiBqYXZhLzI1MzguIEZpeGVzIFBSIGphdmEvMjUzNS4KCjIwMDEtMDUtMDcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoZml4X2NvbnN0cnVjdG9ycyk6IFJlbW92ZWQgdW5uZWNlc3NhcnkgYXNzaWdubWVudCB0bwoJbG9jYWwuIE1vdmVkIGFzc2lnbm1lbnQgdG8gYHRoaXMkPG4+JywgZml4ZWQgY29tbWVudHMgYW5kCglpbmRlbnRhdGlvbi4KCShidWlsZF93Zmxfd3JhcCk6IEZpeGVkIGluZGVudGF0aW9uLgoJRml4ZXMgUFIgamF2YS8yNTk4LCBqYXZhLzI1NzkgYW5kIGphdmEvMjY1OC4KCjIwMDEtMDUtMDMgIE1vIERlSm9uZyAgPG1kZWpvbmdAcmVkaGF0LmNvbT4KCgkqIGxleC5jIChqYXZhX25ld19sZXhlcik6IENhbGwgaWNvbnZfY2xvc2Ugb24gdGVtcCBoYW5kbGUgdXNlZCB0bwoJY2hlY2sgZm9yIGJ5dGUgc3dhcC4KCjIwMDAtMDUtMDIgIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfY2xhc3NfaW5pdCk6IE1vdmUgTU9ESUZZX0VYUFIKCW91dHNpZGUgb2YgQ09ORF9FWFBSLiAgUmVtb3ZlIHZhcmlhYmxlIGBjYWxsJy4KCjIwMDEtMDUtMDIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlY2wuYzogTlVMTF9QVFIgLT4gTlVMTC4KCSogamNmLXdyaXRlLmM6IExpa2V3aXNlLgoKMjAwMS0wNS0wMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogTWFrZS1sYW5nLmluICgkKHNyY2RpcikvamF2YS9nY2ouaW5mbyk6IEFkZGVkIGAtSS4uJy4KCShqYXZhL2djai5kdmkpOiBBZGRlZCAkKHNyY2RpcikgdG8gVEVYSU5QVVRTLgoJKiBnY2oudGV4aTogVXBkYXRlZCBjb3B5cmlnaHQgdGV4dC4gIEluY2x1ZGUgZmRsLnRleGkuCgkoVG9wKTogTGluayB0byBuZXcgbm9kZS4KCjIwMDEtMDUtMDEgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogcGFyc2UuaCAoUkVHSVNURVJfSU1QT1JUKTogIFVzZSB0cmVlX2NvbnMgaW5zdGVhZCBvZiBjaGFpbm9uLgoKMjAwMS0wNS0wMSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBwYXJzZS55IChqYXZhX3BvcF9wYXJzZXJfY29udGV4dCk6ICBUaGUgVFJFRV9WQUxVRSBvZiBhIGxpbmsgaW4gdGhlCglpbXBvcnRfbGlzdCBjb250YWlucyB0aGUgbmFtZSwgbm90IHRoZSBUUkVFX1BVUlBPU0UuCgoyMDAxLTA0LTI5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBqY2YtaW8uYyAocmVhZF96aXBfbWVtYmVyKTogQ2FzdCB0byBsb25nIGluIGNvbXBhcmlzb24gd2l0aAoJc2lnbmVkIHZhbHVlLgoKCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogSW5pdGlhbGl6ZSB2YXJpYWJsZXMuCgoJKiBtYW5nbGUuYyAoZmluZF9jb21wcmVzc2lvbl9yZWNvcmRfbWF0Y2gpOiBMaWtld2lzZS4KCgkqIHR5cGVjay5jIChidWlsZF9udWxsX3NpZ25hdHVyZSk6IFByb3ZpZGUgc3RhdGljIHByb3RvdHlwZS4gIE1hcmsKCXBhcmFtZXRlciB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBJbml0aWFsaXplIHZhcmlhYmxlLgoKMjAwMS0wNC0yNyAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogcGFyc2UueSAoZG9fcmVzb2x2ZV9jbGFzcyk6IENoZWNrIGZvciBjeWNsaWMgaW5oZXJpdGFuY2UgZHVyaW5nCglpbm5lciBjbGFzcyByZXNvbHV0aW9uLgoKMjAwMS0wNC0yNyAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBwYXJzZS55IChqYXZhX2V4cGFuZF9jbGFzc2VzKTogIERvbid0IGNoYW5nZSBjdHhwX2Zvcl9nZW5lcmF0aW9uCgl3aGlsZSBpdGVyYXRpbmcsIHNpbmNlIHRoYXQgY291bGQgY2F1c2UgZ2MgdG8gbG9zZSBzdHVmZi4KCjIwMDEtMDQtMjYgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCUZpeCBtZXRob2Qgc2VhcmNoIHdydCBzY29wZSBvZiBpbm5lciBjbGFzc2VzIHRvIG1hdGNoIEpMUzIuCgkqIHR5cGVjay5jIChidWlsZF9udWxsX3NpZ25hdHVyZSk6ICBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGhhc19tZXRob2QpOiAgTmV3IGZ1bmN0aW9uLiAgVXNlcyBidWlsZF9udWxsX3NpZ25hdHVyZSBhbmQgbG9va3VwX2RvLgoJKiBqYXZhLXRyZWUuaCAoaGFzX21ldGhvZCk6ICBOZXcgZGVjbGFyYXRpb24uCgkqIHBhcnNlLnkgKGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6ICBEbyBub3Qgc2VhcmNoCgljb250ZXh0IG9mIGlubmVyIGNsYXNzZXMgaGVyZS4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6ICBTZWFyY2ggc2NvcGUsIGllLiBjdXJyZW50IGFuZCBvdXRlciBjbGFzZXMsCglmb3IgbWV0aG9kIG1hdGNoaW5nIHNpbXBsZSBuYW1lLCB0byBmaW5kIGNsYXNzLgoKMjAwMS0wNC0yNiAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMgY2FzZSBTV0lUQ0hfRVhQUik6CglGaXggdGhpbmtvOiAgSWYgYSBzaW5nbGUgY2FzZSwgdXNlIGlmX2ljbXBlcSwgbm90IGlmZXEuCgoJKiBjb25zdGFudHMuYyAoZmluZF9tZXRob2RyZWZfd2l0aF9jbGFzc19pbmRleCk6ICBOZXcgZnVuY3Rpb24uCgkoZmluZF9tZXRob2RyZWZfaW5kZXgpOiAgVXNlIGZpbmRfbWV0aG9kcmVmX3dpdGhfY2xhc3NfaW5kZXguCgkqIGphdmEtdHJlZS5oIChmaW5kX21ldGhvZHJlZl93aXRoX2NsYXNzX2luZGV4KTogIE5ldyBkZWNsYXJhdGlvbi4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zIGNhc2UgQ0FMTF9FWFBSKTogIERvbid0IGNoYW5nZQoJREVDTF9DT05URVhULCBpbnN0ZWFkIHVzZSBuZXcgZmluZF9tZXRob2RyZWZfd2l0aF9jbGFzc19pbmRleCBmdW5jdGlvbi4KCUlmIGNvbnRleHQgY2hhbmdlZCBmcm9tIGludGVyZmFjZSB0byBjbGFzcywgZG9uJ3QgdXNlIGludm9rZWludGVyZmFjZS4KCjIwMDEtMDQtMjUgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIEZvciBmaWVsZCBpbnN0cnVjdGlvbnMsCgljaGVjayB0aGF0IGZpZWxkIGluZGV4IGlzIHZhbGlkLiAgRm9yIGludm9rZSBpbnN0cnVjdGlvbnMsIGNoZWNrIHRoYXQKCW1ldGhvZCBpbmRleCBpcyB2YWxpZC4KCjIwMDEtMDQtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnLWxhbmcuaW4gKHRhcmdldF9saWJzKTogQ29weSBmcm9tICRsaWJnY2pfc2F2ZWQuCgoyMDAxLTA0LTI1ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQWRkIG5ldyBjbGFzcyAicHJvdGVjdGlvbkRvbWFpbiIKCWZpZWxkLgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBTZXQgaW5pdGlhbCB2YWx1ZSBmb3IgInByb3RlY3Rpb25Eb21haW4iLgoKMjAwMS0wNC0yMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogRml4IG1lbW9yeSBhbGxvY2F0aW9uCglkZWZpY2l0LCBieSB1c2luZyBjb25jYXQgaW4gbGlldSBvZiB4bWFsbG9jL3NwcmludGYuCgoyMDAxLTA0LTIwICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCglGaXhlcyB0byBjb21waWxlIG11bHRpcGxlIC5jbGFzcyBmaWxlcyBhdCBvbmNlLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogIERvbid0IHNldCBDTEFTU19MT0FERURfUC4KCSogamF2YS10cmVlLmggKENMQVNTX1BBUlNFRF9QKTogIE5ldyBtYWNyby4KCShDTEFTU19MT0FERURfUCk6ICBSZS1kZWZpbmUgdG8gdXNlIFRZUEVfU0laRSBhbmQgQ0xBU1NfUEFSU0VEX1AuCgkqIGpjZi1wYXJzZS5jIChqY2ZfcGFyc2Vfc291cmNlKTogIElubGluZSBpbnRvIHJlYWRfY2xhc3MuCgkocmVhZF9jbGFzcyk6ICBBdm9pZCBzb21lIGNvZGUgZHVwbGljYXRpb24uCglEb24ndCBjYWxsIEpDRl9GSU5JU0ggZm9yIGEgLmNsYXNzIGZpbGUgLSBtaWdodCBiZSBuZWVkZWQgbGF0ZXIuCgkoamNmX3BhcnNlKTogIERvbid0IGNhbGwgbGF5b3V0X2NsYXNzIGhlcmUuICBDaGVjay9zZXQgQ0xBU1NfUEFSU0VEX1AKCXJhdGhlciB0aGFuIENMQVNTX0xPQURFRF9QLCBzaW5jZSBsYXR0ZXIgaW1wbGllcyBjbGFzcyBsYWlkIG91dC4KCSh5eXBhcnNlKTogIERvIGxheW91dF9jbGFzcyBhbmQgSkNGX0ZJTklTaCBoZXJlIGluc3RlYWQsIGluIHBhc3MgMi4KCSogcGFyc2UueTogIERvbid0IG5lZWQgdG8gc2V0IENMQVNTX0xPQURFRF9QIGZvciBhcnJheSB0eXBlcy4KCjIwMDEtMDQtMTEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS9ib2VobS5vKTogRGVwZW5kIG9uIHRvcGxldi5oLgoKCSogYm9laG0uYzogSW5jbHVkZSB0b3BsZXYuaC4KCjIwMDEtMDQtMDYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCSAgICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCglGaXggZm9yIFBSIGdjai8xNDA0IGFuZCBQUiBnY2ovMjMzMjoKCSogcGFyc2UueSAoYnVpbGRfYXJyYXlfZnJvbV9uYW1lKTogSWYgd2UgdXNlIHRoZSB0eXBlX3dmbCB0aGVuCglhY2N1bXVsYXRlIGRpbWVuc2lvbnMgZnJvbSB0aGUgb3JpZ2luYWwgdHlwZSBhcyB3ZWxsLgoJKGJ1aWxkX3VucmVzb2x2ZWRfYXJyYXlfdHlwZSk6IERvbid0IG1vZGlmeSBUWVBFX09SX1dGTCBpbiBwbGFjZS4KCjIwMDEtMDQtMDYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGFuYWx5emVfY2xpbml0X2JvZHkpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgc2Vjb25kIG9wZXJhbmQKCW9mIGEgTUVUSE9EX0VYUFIgaXMgbm9uemVyby4KCjIwMDEtMDQtMDYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoJChzcmNkaXIpL2phdmEvcGFyc2Utc2Nhbi5jKTogUnVuIGJpc29uIGZyb20gYnVpbGQKCWRpcmVjdG9yeS4KCSgkKHNyY2RpcikvamF2YS9wYXJzZS5jKTogTGlrZXdpc2UuCgoyMDAxLTA0LTA1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpOiBVc2UgYHdoaWNoLWdjaicgaW5zdGVhZCBvZiBgd2hpY2gtZzc3LicKCSh2ZXJzaW9uLWdjYyk6IEluaXRpYWxpemVkLgoJKHdoaWNoLWdjaik6IExpa2V3aXNlLgoKMjAwMS0wNC0wNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBqYXZhLXRyZWUuaCAoc3RydWN0IGxhbmdfZGVjbCk6IE5ldyBtYWNybwoJYERFQ0xfRklYRURfQ09OU1RSVUNUT1JfUC4nIE5ldyBmaWVsZCBgZml4ZWRfY3Rvci4nCgkqIHBhcnNlLnkgKGJ1aWxkX2luc3RhbmNlX2luaXRpYWxpemVyKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9pbnN0YW5jZV9pbml0aWFsaXplcik6IFVzZSBpdC4KCShqYXZhX2ZpeF9jb25zdHJ1Y3RvcnMpOiBTZXQgYGN1cnJlbnRfY2xhc3MnIGJlZm9yZSBmaXggcGFzcy4KCShmaXhfY29uc3RydWN0b3JzKTogSnVzdCByZXR1cm4gaWYgYWxyZWFkeSBmaXhlZC4gTW92ZSBgc3VwZXIoKScKCWludm9jYXRpb24gYWhlYWQuIFVzZSBgYnVpbGRfaW5zdGFuY2VfaW5pdGlhbGl6ZXIuJwoJRml4ZXMgUFIgamF2YS8xMzE1LgoKMjAwMS0wNC0wNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBQYXNzIGZpZWxkJ3MKCURFQ0xfQ09OVEVYVCB0byBgbm90X2FjY2Vzc2libGVfcC4nCgkobm90X2FjY2Vzc2libGVfcCk6IENoYW5nZWQgcGFyYW1ldGVycyBvcmRlciBpbiBgaW5oZXJpdHNfZnJvbV9wJwoJaW52b2NhdGlvbi4KCjIwMDEtMDMtMjcgIEFuZHJldyBIYWxleSAgPGFwaEBjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIGxhbmctb3B0aW9ucy5oOiBBZGQgZmxhZ19jaGVja19yZWZlcmVuY2VzLgoKMjAwMS0wNC0wNCAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqYXZhLXRyZWUuaCAoQ09OU1RBTlRfVkFMVUVfUCk6ICBOZXcgbWFjcm8uCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9jbGFzc2ZpbGUpOiAgVXNlIENPTlNUQU5UX1ZBTFVFX1AuCgkqIHBhcnNlLnkgKG1heWJlX2J1aWxkX2NsYXNzX2luaXRfZm9yX2ZpZWxkKTogIE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUsIHJlc29sdmVfZmllbGRfYWNjZXNzKTogIFVzZQoJbWF5YmVfYnVpbGRfY2xhc3NfaW5pdF9mb3JfZmllbGQgaW5zdGVhZCBvZiBidWlsZF9jbGFzc19pbml0CglUaGlzIGRvZXMgbm90IGRvIHRoZSBpbml0IGlmIHRoZSBmaWVsZCBpcyBjb21waWxlLXRpbWUtY29uc3RhbnQuCgkocmVzb2x2ZV9maWVsZF9hY2Nlc3MpOiAgU2ltcGxpZnkuCgoJKiBwYXJzZS55IChmb2xkX2NvbnN0YW50X2Zvcl9pbml0KTogIE1lcmdlIHRlc3QgaW50byBzd2l0Y2guCgoyMDAxLTA0LTAzICBaYWNrIFdlaW5iZXJnICA8emFja3dAc3RhbmZvcmQuZWR1PgoKCSogTWFrZS1sYW5nLmluIChidWZmZXIubywgY2hlY2staW5pdC5vLCBjbGFzcy5vKTogRG9uJ3QgZGVwZW5kCglvbiBnYW5zaWRlY2wuaC4KCSogYnVmZmVyLmMsIGp2Z2VubWFpbi5jOiBEb24ndCBpbmNsdWRlIGdhbnNpZGVjbC5oLgoKMjAwMS0wNC0wMiAgWmFjayBXZWluYmVyZyAgPHphY2t3QHN0YW5mb3JkLmVkdT4KCgkqIGV4cHIuYyAocG9wX3R5cGVfMCk6IFNhdmUgdGhlIHJlc3VsdCBvZiB0aGUgZmlyc3QKCWxhbmdfcHJpbnRhYmxlX25hbWUgY2FsbCBpbiBhIHNjcmF0Y2ggYnVmZmVyLCBzbyBpdAoJd29uJ3QgYmUgY2xvYmJlcmVkIGJ5IHRoZSBzZWNvbmQgY2FsbC4KCjIwMDEtMDMtMzAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2Utc2Nhbi55IChhcnJheV90eXBlOik6IFJld3JpdHRlbi4KCSh0eXBlX2RlY2xhcmF0aW9uOik6IGBlbXB0eV9zdGF0ZW1lbnQnIHJlcGxhY2VzIGBTQ19USy4nCgkoY2xhc3NfbWVtYmVyX2RlY2xhcmF0aW9uOik6IGBlbXB0eSBzdGF0ZW1lbnQnIGFkZGVkLgoJKG1ldGhvZF9ib2R5Oik6IFNpbXBsaWZpZWQuCgkoc3RhdGljX2luaXRpYWxpemVyOik6IExpa2V3aXNlLgoJKHByaW1hcnlfbm9fbmV3X2FycmF5Oik6IFVzZSBgdHlwZV9saXRlcmFscy4nCgkodHlwZV9saXRlcmFsczopOiBOZXcgcnVsZS4KCShkaW1zOik6IFNldCBhbmQgdXBkYXRlIGBicmFja2V0X2NvdW50LicKCUZpeGVzIFBSIGphdmEvMTA3NC4gRml4ZXMgUFIgamF2YS8yNDEyLgoKMjAwMS0wMy0yOCAgSGFucyBCb2VobSAgPGJvZWhtQGFjbS5vcmc+CgoJKiBib2VobS5jIChQUk9DRURVUkVfT0JKRUNUX0RFU0NSSVBUT1IpOiBTZXQgdG8gdXNlIGBidWlsZF9pbnRfMi4nCgkoZ2V0X2JvZWhtX3R5cGVfZGVzY3JpcHRvcik6IFNldCB0eXBlIG9uIHJldHVybmVkIHZhbHVlIHRvIGJlIGEKCXBvaW50ZXIgbGVuZ3RoIGludGVnZXIuCgoyMDAxLTAzLTI4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBleHByLmMgKHBvcF90eXBlXzApOiBDYWxsIGBjb25jYXQnIHJhdGhlciB0aGFuIGJ1aWxkaW5nIHRoZQoJc3RyaW5nIG1hbnVhbGx5LgoJKHBvcF90eXBlKTogQWRkIGZvcm1hdCBzcGVjaWZpZXIgaW4gY2FsbCB0byBgZXJyb3InLgoKCSogcGFyc2UueSAocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBBdm9pZCBjYXN0aW5nIGF3YXkKCWNvbnN0LW5lc3MuCgoyMDAxLTAzLTI4ICBKZWZmcmV5IE9sZGhhbSAgPG9sZGhhbUBjb2Rlc291cmNlcnkuY29tPgoKCSoganZnZW5tYWluLmMgKGRvX21hbmdsZV9jbGFzc25hbWUpOiBFbmQgc3RyaW5nIGNvbnN0YW50IHdpdGggJ1wwJy4KCjIwMDEtMDMtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJSUEtNjQgQUJJIEV4Y2VwdGlvbiBIYW5kbGluZzoKCSogTWFrZS1sYW5nLmluIChleGNlcHQubyk6IERvbid0IGRlcGVuZCBvbiBlaC1jb21tb24uaC4KCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogSGFuZGxlIEVYQ19QVFJfRVhQUi4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZykgW3Rocm93X25vZGVdOiBObyBfSnZfU2psal9UaHJvdy4KCVtzb2Z0X2V4Y2VwdGlvbmluZm9fY2FsbF9ub2RlXTogUmVtb3ZlLgoJW2VoX3BlcnNvbmFsaXR5X2xpYmZ1bmMsIGxhbmdfZWhfcnVudGltZV90eXBlXTogTmV3LgoJKGVuZF9qYXZhX21ldGhvZCk6IE5vIGVtaXRfaGFuZGxlcnMuCgkqIGV4Y2VwdC5jIChqYXZhX3NldF9leGNlcHRpb25fbGFuZ19jb2RlKTogUmVtb3ZlLgoJKG1ldGhvZF9pbml0X2V4Y2VwdGlvbnMpOiBEb24ndCBjYWxsIGl0LgoJKHByZXBhcmVfZWhfdGFibGVfdHlwZSk6IE5vIENBVENIX0FMTF9UWVBFLgoJKGJ1aWxkX2V4Y2VwdGlvbl9vYmplY3RfcmVmKTogTmV3LgoJKGV4cGFuZF9lbmRfamF2YV9oYW5kbGVyKTogVXBkYXRlIGZvciBleGNlcHQuaCBuYW1lIGNoYW5nZXMuCgkoZW1pdF9oYW5kbGVycywgZXhwYW5kX3Jlc3VtZV9hZnRlcl9jYXRjaCk6IFJlbW92ZS4KCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBVcGRhdGUgZm9yIGV4Y2VwdC5oIG5hbWUgY2hhbmdlcy4KCShwcm9jZXNzX2p2bV9pbnN0cnVjdGlvbik6IFVzZSBidWlsZF9leGNlcHRpb25fb2JqZWN0X3JlZi4KCSogamF2YS10cmVlLmggKEpUSV9TT0ZUX0VYQ0VQVElPTklORk9fQ0FMTF9OT0RFKTogUmVtb3ZlLgoJKHNvZnRfZXhjZXB0aW9uaW5mb19jYWxsX25vZGUpOiBSZW1vdmUuCgkoYnVpbGRfZXhjZXB0aW9uX29iamVjdF9yZWYpOiBEZWNsYXJlLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpIFtDQUxMX0VYUFJdOiBObwoJc29mdF9leGNlcHRpb25pbmZvX2NhbGxfbm9kZS4gIE1vdmUgcHJvY2Vzc2luZyAuLi4KCVtFWENfUFRSX0VYUFJdOiAuLi4gaGVyZS4KCSogcGFyc2UuaCAoQlVJTERfQVNTSUdOX0VYQ0VQVElPTl9JTkZPKTogUmVtb3ZlIGRlYWQgY29kZS4KCSogcGFyc2UueSAoY2F0Y2hfY2xhdXNlX3BhcmFtZXRlcik6IFVzZSBidWlsZF9leGNlcHRpb25fb2JqZWN0X3JlZi4KCShzb3VyY2VfZW5kX2phdmFfbWV0aG9kKTogTm8gamF2YV9zZXRfZXhjZXB0aW9uX2xhbmdfY29kZSBvcgoJZW1pdF9oYW5kbGVycy4KCShidWlsZF9kb3RfY2xhc3NfbWV0aG9kKTogVXNlIGJ1aWxkX2V4Y2VwdGlvbl9vYmplY3RfcmVmLgoJKHRyeV9yZWZlcmVuY2VfYXNzaWduY29udik6IENoZWNrIEVYQ19QVFJfRVhQUiBub3QKCXNvZnRfZXhjZXB0aW9uaW5mb19jYWxsX25vZGUuCgoyMDAxLTAzLTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogamF2YS10cmVlLmggKHRocm93X25vZGUpOiBEZWZpbmUgYXMgYSBzaW5nbGUgbWVtYmVyIG9mCglqYXZhX2dsb2JhbF90cmVlcyBpbnN0ZWFkIG9mIGEgc2VwYXJhdGUgYXJyYXkuCgkoSlRJX1RIUk9XX05PREUpOiBOZXcuCgkqIGRlY2wuYyAodGhyb3dfbm9kZSk6IERvbid0IGRlY2xhcmUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0IGEgc2NhbGFyIHRocm93X25vZGUuCglEb24ndCByZWdpc3RlciBpdCBmb3IgZ2MuCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IFJlZmVyZW5jZSBzY2FsYXIgdGhyb3dfbm9kZS4KCSogZXhwci5jIChidWlsZF9qYXZhX2F0aHJvdyk6IExpa2V3aXNlLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBMaWtld2lzZS4KCSogcGFyc2UuaCAoQlVJTERfVEhST1cpOiBMaWtld2lzZS4KCjIwMDEtMDMtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGVuZF9qYXZhX21ldGhvZCk6IERvIG5vdCBzYXZlIGFuZCByZXN0b3JlCglmbGFnX25vbl9jYWxsX2V4Y2VwdGlvbnMuCgkqIHBhcnNlLnkgKHNvdXJjZV9lbmRfamF2YV9tZXRob2QpOiBMaWtld2lzZS4KCSogbGFuZy5jIChmbGFnX2V4Y2VwdGlvbnMpOiBEb24ndCBkZWNsYXJlLgoJKGphdmFfaW5pdF9vcHRpb25zKTogU2V0IGZsYWdfbm9uX2NhbGxfZXhjZXB0aW9ucy4gIFNldAoJZmxhZ19leGNlcHRpb25zIGhlcmUgLi4uCgkoamF2YV9pbml0KTogLi4uIG5vdCBoZXJlLgoKMjAwMS0wMy0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYywgcGFyc2UuaDogVXNlIFVTSU5HX1NKTEpfRVhDRVBUSU9OUyBpbnN0ZWFkIG9mCglleGNlcHRpb25zX3ZpYV9sb25nam1wLgoKCSogbGFuZy5jIChmbGFnX25ld19leGNlcHRpb25zKTogRG9uJ3QgZGVjbGFyZSBpdC4KCShqYXZhX2luaXRfb3B0aW9ucyk6IE9yIHNldCBpdC4KCjIwMDEtMDMtMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGVuZF9qYXZhX21ldGhvZCk6IFJlbmFtZSBhc3luY2hyb25vdXNfZXhjZXB0aW9ucyB0bwoJZmxhZ19ub25fY2FsbF9leGNlcHRpb25zLgoJKiBwYXJzZS55IChzb3VyY2VfZW5kX2phdmFfbWV0aG9kKTogTGlrZXdpc2UuCgoyMDAxLTAzLTI3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlLWxhbmcuaW46IERlcGVuZCBvbiAkKFNZU1RFTV9IKSwgbm90IHN5c3RlbS5oLgoKMjAwMS0wMy0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHBhcnNlLmggKERFQ0xfRU5EX1NPVVJDRV9MSU5FKTogRG9uJ3QgcmVseSBvbiBERUNMX0ZSQU1FX1NJWkUuCgoyMDAxLTAzLTI2ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGZpbmRfYXNfaW5uZXJfY2xhc3MpOiBGb2xsb3cgY3VycmVudCBwYWNrYWdlCglpbmRpY2F0aW9ucyBub3QgdG8gbWlzdGFraW5nbHkgbG9hZCBhbiB1bnJlbGF0ZWQgY2xhc3MuCgoyMDAxLTAzLTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25zdGFudHMuYyAoUFVUTik6IFVzZSBtZW1jcHksIG5vdCBiY29weS4KCgkqIGxleC5jIChqYXZhX3JlYWRfY2hhcik6IFVzZSBtZW1tb3ZlLCBub3QgYmNvcHkuCgoJKiBwYXJzZS55IChqYXZhX3BhcnNlcl9jb250ZXh0X3Jlc3VtZSk6IFVzZSBtZW1jcHksIG5vdCBiY29weS4KCjIwMDEtMDMtMjMgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIFJlcGxhY2UgMyBwb3BfdHlwZSBieSBQT1BfVFlQRQoJbWFjcm8gZm9yIGJldHRlciBlcnJvciBwaW4tcG9pbnRpbmcuCgkqIGphdmEtdHJlZS5oOiAgRml4IHR5cG8gaW4gY29tbWVudC4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6ICBDaGFuZ2VzIHRvIFRSWV9GSU5BTExZX0VYUFIuCglEb24ndCBpbmNsdWRlIGpzci9nb3RvIGluIGV4Y2VwdGlvbiByYW5nZS4KCUNoZWNrIGlmIHN0YXJ0IGFuZCBlbmQgb2YgZXhjZXB0aW9uIHJhbmdlIGFyZSB0aGUgc2FtZSAoYWxzbyBUUllfRVhQUikuCglEb24ndCBlbWl0IGpzciBhZnRlciB0cnlfYmxvY2sgaWYgQ0FOX0NPTVBMRVRFX05PUk1BTExZIGlzIGZhbHNlLgoJSG93ZXZlciwgZG8gZW1pdCB0aGUgZm9sbG93aW5nIGdvdG8gZXZlbiBpZiB0cnlfYmxvY2sgaXMgZW1wdHkuCglEZWZlciBmcmVlaW5nIGV4Y2VwdGlvbl9kZWNsIHVudGlsIGFmdGVyIHRoZSBmaW5hbGl6ZXIsIHRvIG1ha2UKCXN1cmUgdGhlIGxvY2FsIGlzbid0IHJldXNlZCBpbiB0aGUgZmluYWxpemVyLiAgRml4ZXMgUFIgamF2YS8xMjA4LgoKCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9saHMpOiAgSWYgdGhlIHRyeS1jbGF1c2UgaXMgZW1wdHksIGp1c3QKCXJldHVybiB0aGUgZmluYWxseS1jbGF1c2UgYW5kIHZpY2UgdmVyc2EuCgoyMDAxLTAzLTIzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpIChJbnB1dCBPcHRpb25zKTogZG9jdW1lbnRlZCB0aGUgY2hlY2sgZm9yIGF0dHJpYnV0ZQoJYGdudS5nY2MuZ2Njai1jb21waWxlZCcgYW5kIHRoZSBgLWZmb3JjZS1jbGFzc2VzLWFyY2hpdmUtY2hlY2snIGZsYWcuCgkqIGphdmEtdHJlZS5oIChmbGFnX2ZvcmNlX2NsYXNzZXNfYXJjaGl2ZV9jaGVjayk6IERlY2xhcmVkIGV4dGVybi4KCSogamNmLXBhcnNlLmMgKEhBTkRMRV9HQ0pDT01QSUxFRF9BVFRSSUJVVEUpOiBOZXcgbWFjcm8uCgkoamNmX3BhcnNlKTogQ2hlY2sgZm9yIHRoZSByaWdodCBjbGFzc2VzIGFyY2hpdmUgaWYgbmVjZXNzYXJ5LgoJKiBqY2YtcmVhZGVyLmMgKGdldF9hdHRyaWJ1dGUpOiBEZWZpbmUgYE1BVENIX0FUVFJJQlVURScgYW5kIHVzZSBpdC4KCShqY2ZfcGFyc2VfZmllbGRzKTogRml4ZWQgaW5kZW50YXRpb24uCgkqIGpjZi13cml0ZS5jIChhcHBlbmRfZ2NqX2F0dHJpYnV0ZSk6IE5ldyBmdW5jdGlvbi4KCShnZW5lcmF0ZV9jbGFzc2ZpbGUpOiBDb21wdXRlIHRoZSBhdHRyaWJ1dGUgY291bnQsIGludm9rZQoJYGFwcGVuZF9nY2pfYXR0cmlidXRlJy4KCSogamNmLmggKHR5cGVkZWYgc3RydWN0IEpDRik6IGBzZWVuX2luX3ppcCcgYW5kIGBqYXZhX3NvdXJjZScKCXR1cm5lZCBpbnRvIGJpdC1maWVsZHMuIE5ldyBiaXQtZmllbGQgYHJpZ2h0X3ppcC4nCgkoSkNGX1pFUk8pOiBTZXQgYHJpZ2h0X3ppcCcgdG8gemVyby4KCSogbGFuZy1vcHRpb25zLmggKC1mZm9yY2UtY2xhc3Nlcy1hcmNoaXZlLWNoZWNrKTogQWRkZWQgZmxhZy4KCSogbGFuZy5jIChmbGFnX2ZvcmNlX2NsYXNzZXNfYXJjaGl2ZV9jaGVjayk6IE5ldyBmbGFnLgoJKGxhbmdfZl9vcHRpb25zKTogTmV3IGVudHJ5IGBmb3JjZS1jbGFzc2VzLWFyY2hpdmUtY2hlY2suJwoJRml4ZXMgUFIgamF2YS8xMjEzLgoKMjAwMS0wMi0wNyAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAoQ29uZmlndXJlLXRpbWUgT3B0aW9ucyk6IEFkZCAtZmNoZWNrLXJlZmVyZW5jZXMuCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9pbmRpcmVjdF9yZWYpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9jaGVja19yZWZlcmVuY2UpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfamF2YV9hcnJheV9sZW5ndGhfYWNjZXNzKTogVXNlIGJ1aWxkX2phdmFfaW5kaXJlY3RfcmVmIHRvCgljaGVjayBmb3IgbnVsbCByZWZlcmVuY2VzLgoJKGJ1aWxkX2phdmFfYXJyYXlhY2Nlc3MpOiBMaWtld2lzZS4KCShidWlsZF9nZXRfY2xhc3MpOiBMaWtld2lzZS4KCShidWlsZF9maWVsZF9yZWYpOiBMaWtld2lzZS4KCShpbnZva2VfYnVpbGRfZHRhYmxlKTogTGlrZXdpc2UuCgkoYnVpbGRfaW52b2tlaW50ZXJmYWNlKTogTGlrZXdpc2UuCgkqIGxhbmcuYyAobGFuZ19mX29wdGlvbnMpOiBBZGQgZmxhZ19jaGVja19yZWZlcmVuY2VzLgoJKiBqdnNwZWMuYyAoanZnZW5tYWluX3NwZWMpOiBBZGQgZmxhZ19jaGVja19yZWZlcmVuY2VzLgoJKiBqYXZhLXRyZWUuaCAoZmxhZ19jaGVja19yZWZlcmVuY2VzKTogTmV3IHZhcmlhYmxlLgoJKiBsYW5nLmMgKGZsYWdfY2hlY2tfcmVmZXJlbmNlcyk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChwYXRjaF9pbnZva2UpOiBVc2UgamF2YV9jaGVja19yZWZlcmVuY2UuCgkocGF0Y2hfYXNzaWdubWVudCk6IEFsbG93IGZvciBleHRyYSBuZXN0aW5nIGluCglfSnZfQ2hlY2tBcnJheVN0b3JlLgoKMjAwMS0wMy0yMyAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUBhbGJhdHJvc3MuY28ubno+CgoJKiBnamF2YWguYyAoY3h4X2tleXdvcmRzKTogVXBkYXRlIGZyb20gdGhlIGRlZmluaXRpdmUgbGlzdCBpbiBjcC9sZXguYy4KCSogbGV4LmMgKGN4eF9rZXl3b3Jkcyk6IExpa2V3aXNlLgoKMjAwMS0wMy0yMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogQnJvYWRlbiBgbGVuZ3RoJwoJcmVjb2duaXRpb24uIEhlbHAgTU9ESUZZX0VYUFIgYmUgcmVzb2x2ZWQgYXMgZXhwcmVzc2lvbiBuYW1lcy4KCUZpeGVzIFBSIGphdmEvMjA2Ni4gRml4ZXMgUFIgamF2YS8yNDAwLgoKMjAwMS0wMy0yMSAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUBhbGJhdHJvc3MuY28ubno+CgoJKiBnamF2YWguYyAocHJvY2Vzc19maWxlKTogTWFyayBpbnRlcmZhY2UgZGVmaW5pdGlvbnMgd2l0aAoJIl9fYXR0cmlidXRlX18gKChqYXZhX2ludGVyZmFjZSkpIi4KCjIwMDEtMDMtMjEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzKTogRml4ZWQgcHVzaF9zdXBlcl9maWVsZCdzIHNlY29uZAoJYXJndW1lbnQuIEZpeGVzIFBSIGphdmEvMjMzMy4KCShqZGVwX3Jlc29sdmVfY2xhc3MpOiBSZXNldCBUWVBFX1NJWkUgaWYgYGVycm9yX21hcmtfbm9kZScsIGl0J3MKCXRvbyBlYXJseSB0byBsYXkgaW5uZXJjbGFzc2VzIG91dC4KCjIwMDEtMDMtMjAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCSAgICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfYXNzaWdubWVudCk6IEhhbmRsZSB0aGUgY2FzZSBvZiBhIFNBVkVfRVhQUgoJaW5zaWRlIGFuIGFycmF5IHJlZmVyZW5jZS4gSW5zZXJ0aW9uIG9mIHRoZSBhcnJheSBzdG9yZSBjaGVjawoJcmV3cml0dGVuLiBGaXhlcyBQUiBqYXZhLzIyOTkuCgoyMDAxLTAzLTIwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBsZXguYyAoamF2YV9yZWFkX3VuaWNvZGUpOiBPbmx5IGFjY2VwdCBsZWFkaW5nIGB1J3MuCgoyMDAxLTAzLTIwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAocmVhZF9jbGFzcyk6IEluaXRpYWxpemUgYGNsYXNzJy4KCjIwMDEtMDMtMjAgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY2FybmVnaWVtZWxsb24uZWR1PgoKCSogamNmX3BhcnNlLmMgKGpjZl9wYXJzZSk6IEVsaW1pbmF0ZSB1bnVzZWQgdmFyaWFibGUuCgoyMDAxLTAzLTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfY2xhc3NfcmVmKTogVXNlIFNFVF9ERUNMX0FTU0VNQkxFUl9OQU1FLgoJKGxheW91dF9jbGFzcyk6IExpa2V3aXNlLgoJKGxheW91dF9jbGFzc19tZXRob2QpOiBMaWtld2lzZS4KCShlbWl0X3JlZ2lzdGVyX2NsYXNzZXMpOiBMaWtld2lzZS4KCSogZGVjbC5jIChidWlsdGluX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoZ2l2ZV9uYW1lX3RvX2xvY2Fscyk6IExpa2V3aXNlLgoKMjAwMS0wMy0xOSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqY2YtcGFyc2UuYyAobG9hZF9pbm5lcl9jbGFzc2VzKTogIENoZWNrIENMQVNTX0xPQURFRF9QCgliZWZvcmUgdHJ5aW5nIHRvIGxvYWQgYW4gaW5uZXIgY2xhc3MuCgoJRml4ZXMgdG8gcHJvY2VzcyB0byBjb21tYW5kLWxpbmUgLmNsYXNzIGZpbGVzIGluIHR3byBwYXNzZXMuCgkqIGphdmEtdHJlZS5oIChKQVZBX0ZJTEVfUCwgQ0xBU1NfRklMRV9QLCBaSVBfRklMRV9QKTogIE5ldyBmbGFncy4KCShDTEFTU19GUk9NX0NVUlJFTlRMWV9DT01QSUxFRF9TT1VSQ0VfUCk6ICBSZW5hbWUgdG8gLi4KCShDTEFTU19GUk9NX0NVUlJFTlRMWV9DT01QSUxFRF9QKTogIC4uLiBiZWNhdXNlIGl0IGlzIG1vcmUgZ2VuZXJhbCBub3cuCgkqIGNsYXNzLmMgKGlzX2NvbXBpbGVkX2NsYXNzKTogIEZpeCBmb3IgcmVuYW1lZCBmbGFnLgoJKiBwYXJzZS55IChtYXliZV9jcmVhdGVfY2xhc3NfaW50ZXJmYWNlX2RlY2wpOiAgTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jICh5eXBhcnNlKTogIEFsc28gc2V0IGlmIGNvbXBpbGluZyAuY2xhc3MgZmlsZXMuCgkqIGpjZi1wYXJzZS5jIChyZWFkX2NsYXNzKTsgIFJlYWQgY3VycmVudF9jbGFzcy4KCShqY2ZfcGFyc2UpOiAgTWFrZSBzdGF0aWMuCgkobG9hZF9pbm5lcl9jbGFzc2VzKTogIE5ldyBmdW5jdGlvbiwgd2l0aCBjb2RlIG1vdmVkIGZyb20gamNmX3BhcnNlLAoJYmVjYXVzZSB3ZSBuZWVkIHRvIGlubmVyIGNsYXNzZXMgYWZ0ZXIgdGhlIGNvbW1hbmQtbGluZSBmaWxlcyBhcmUgcmVhZC4KCSh5eXBhcnNlKTogIFNldCBmaW5wdXQgdG8gTlVMTCB3aGVuIGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBjbG9zZWQuCglSZWR1Y2UgdXNlIG9mIG1haW5famNmIChiYXNpY2FsbHkgb25seSBmb3IgYXJjaGl2ZSkgYW5kCgl1c2UgZmlucHV0IGluc3RlYWQgb2YgbWFpbl9qY2YtPnJlYWRfc3RhdGUuCglJbmxpbmUgamNmX2ZpZ3VyZV9maWxlX3R5cGUgaW50byB5eXBhcnNlLgoJU2V0IEpBVkFfRklMRV9QLCBDTEFTU19GSUxFX1AsIG9yIFpJUF9GSUxFX1Agb24gZmlsZW5hbWUgbGlzdCBuYW1lLgoJRGVmZXIgbG9hZF9pbm5lcl9jbGFzc2VzIGFuZCBwYXJzZV9jbGFzc19maWxlIHRvIGEgc2Vjb25kIHBhc3MsCglhZnRlciB3ZSd2ZSBjb3JyZWN0bHkgbWFwcGVkIGNvbW1hbmQtbGluZSAuY2xhcyBmaWVscyB0byBjbGFzc2VzLgoJKGpjZl9maWd1cmVfZmlsZV90eXBlKTogIFJlbW92ZWQuCgkqIGpjZi5oIChKQ0ZfWklQLCBKQ0ZfQ0xBU1MsIEpDRl9TT1VSQ0UpOiAgUmVtb3ZlZCBmbGFncy4KCShKQ0ZfWkVSTyk6ICBBbHNvIGNsZWFyIHppcGQgZmllbGQuCgkqIHppcGZpbGUuaDogIENvbmRpdGlvbmFsaXplIG9uIEpDRl9IIGluc3JlYWQgb2YgSkNGX1pJUC4KCjIwMDEtMDMtMTggIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY2FybmVnaWVtZWxsb24uZWR1PgoKCSogamNmLXBhcnNlLmMgKHl5cGFyc2UpOiBDaGFuZ2UgY2ggZnJvbSBjaGFyICogdG8gY2hhci4KCjIwMDEtMDMtMTkgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogIENoZWNrIGZvciAuemlwIGFuZCAuamFyIGZpbGVzLgoJQWRkIGNvbnN0cnVjdGVkIGZpbGVsaXN0LWZpbGUgYXQgZW5kLCBmb2xsb3dpbmcgLXhqYXZhLiAgVGh1cyBhbnkgLm8KCWFuZCBsaWJyYXJ5IGZpbGVzIGFyZSBub3QgYWZmZWN0ZWQgYnkgdGhlIC14amF2YS4gIEFsc28gd3JhcAoJZXhwbGljaXQgQEZJTEUgd2l0aCAteGphdmEgYW5kIC14bm9uZS4KCjIwMDEtMDMtMTkgIEFuZHJldyBIYWxleSAgPGFwaEBjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBDYWxsIG1ha2VfZGVjbF9ydGwoKSBhZnRlcgoJc2V0dGluZyB0aGUgREVDTF9FWFRFUk5BTCBmbGFnLgoKMjAwMS0wMy0xNyAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBkZWNsLmMgKGNsZWFyX2JpbmRpbmdfbGV2ZWwpOiAgRml4IGluaXRpYWxpemVyIChicm9rZSAwMy0xNSkuCgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiAgSGFuZGxlIGVtaXR0aW5nIGlpbmMKCXdoZW4gcmVzdWx0IGlzIGlzIG5lZWRlZCAodGFyZ2V0IGlzIFNUQUNLX1RBUkdFVCkuCgoJKiBwYXJzZS5oIChKREVQX1NPTFYpOiAgUmVtb3ZlZC4KCSogcGFyc2UueSAocmVnaXN0ZXJfaW5jb21wbGV0ZV90eXBlKTogIFVzZSBKREVQX1RPX1JFU09MVkUgaW5zdGVhZC4KCgkqIHBhcnNlLnkgKGluY29tcGxldGVfY2xhc3NfbGlzdCk6IFJlbW92ZWQuCgkob2J0YWluX2luY29tcGxldGVfdHlwZSk6IERvbid0IHVzZSBvciBzZXQgaW5jb21wbGV0ZV9jbGFzc19saXN0LgoJSXQgZG9lc24ndCB3b3JrIGlmIHJlc29sdmVfY2xhc3MgY2hhbmdlcyB0aGUgbmFtZSBvZiBhbiBhcnJheSB0eXBlCgl0aGF0IGlzIG9uIHRoZSBsaXN0IGFuZCB0aGVuIHNvbWVvbmUgZWxzZSBsb29rcyBmb3IgdGhlIG1vZGlmaWVkIG5hbWUuCglBbHNvLCBzZWVtcyBsaWFibGUgdG8gYnJlYWsgd2hlbiBjb21waWxpbmcgbXVsdGlwbGUgc291cmNlIGZpbGVzIGF0CglvbmNlLiAgU28gdGhlIHNpbXBsZXN0IGlzIHRvIGp1c3QgcmVtb3ZlIGluY29tcGxldGVfY2xhc3NfbGlzdCAtCglpdCBpcyBvbmx5IGEgbWlub3Igc3BhY2Ugd2luIGFuZCBpdCBpcyBub3QgZXZlbiBjbGVhciBpdCBzYXZlcyB0aW1lLgoKCSogcGFyc2UueSAocmVzb2x2ZV9jbGFzcyk6ICBSZW1vdmUgdW5uZWVkZWQgcHJvbW90ZV90eXBlLgoKMjAwMS0wMy0xNSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqYXZhLXRyZWUuaCAoQkxPQ0tfSVNfSU1QTElDSVQpOiAgTmV3IGZsYWcuCgkqIHBhcnNlLmggKEJMT0NLX0VYUFJfT1JJR0lOKTogIFJlbW92ZWQgbWFjcm8uCgkqIHBhcnNlLnkgKGRlY2xhcmVfbG9jYWxfdmFyaWFibGVzLCBtYXliZV9hYnNvcmJfc2NvcGluZ19ibG9ja3MpOgoJVXNlIEJMT0NLX0lTX0lNUExJQ0lUIHJhdGhlciB0aGFuIEJMT0NLX0VYUFJfT1JJR0lOLgoKCSogamNmLXBhcnNlLmMgKHl5cGFyc2UpOiAgU2V0L3Jlc2V0IGlucHV0X2ZpbGVuYW1lIGZvciBzb3VyY2UgZmlsZS4KCSogcGFyc2UueSAoamF2YV9leHBhbmRfY2xhc3Nlcyk6ICBMaWtld2lzZS4KCgkqIHBhcnNlLnkgKGV4cGFuZF9zdGFydF9qYXZhX21ldGhvZCk6ICBXYXMgb25seSBjYWxsZWQgb25jZSBhbmQgaGFkIGEKCW1pc2xlYWRpbmcgbmFtZSwgc28gaW5saW5lIGluIGNhbGxlciBqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QuCgkoZW50ZXJfYV9ibG9jayk6ICBMaWtld2lzZSBpbmxpbmUgaW4gZW50ZXJfYmxvY2sgYW5kIHJlbW92ZS4KCglSZW1vdmUganVuayBmcm9tIHdoZW4gZ2NjL2phdmEgd2FzIGNyZWF0ZWQgKGJ5IGNvcHlpbmcgZnJvbSBDL0MrKykuCgkqIGRlY2wuYyAoa2VlcF9uZXh0X2xldmVsX2ZsYWcsIGtlZXBfbmV4dF9pZl9zdWJibG9ja3MpOiAgUmVtb3ZlLgoJKHN0cnVjdCBiaW5kaW5nX2xldmVsKTogIFJlbW92ZSBmaWVsZHMga2VlcCwga2VlcF9pZl9zdWJibG9ja3MsCgltb3JlX2NsZWFudXBzX29rLCBoYXZlX2NsZWFudXBzICh3aGljaCBoYXZlIG5ldmVyIGJlZW4gdXNlZCkuCgkocHVzaGxldmVsLCBwb3BsZXZlbCk6ICBSZW1vdmUgcmVsYXRlZCB1c2VsZXNzIGNvZGUuCgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiAgVGhlIGNsYXNzX2R0YWJsZV9kZWNsIChpLmUuIHRoZQoJdnRhYmxlIGZvciBDbGFzcykgc2hvdWxkIGJlIGV4dGVybmFsLCBleGNlcHQgd2hlbiBjb21waWxpbmcgQ2xhc3MuCgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiAgRml4IC1DIGhhbmRsaW5nLgoJQ2hlY2sgLXNhdmUtdGVtcHMgdG8gc2VlIGlmIHRlbXAgQEZJTEUgc2hvdWxkIGJlIGRlbGV0ZWQuCglGb2xsb3ctdXAgdG8vZml4IGZvciBGZWJydWFyeSAxNiBwYXRjaC4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6ICBCZXR0ZXIgZXJyb3IgbXNncyBmb3IgZHVwLgoJKHR5cGVfc3RhY2tfZHVwKTogIFJlbW92ZSBuby1sb25nZXIgbmVkZWQgZXJyb3IgY2hlY2suCgoyMDAxLTAzLTE1ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIG1hbmdsZS5jIChtYW5nbGVfcmVjb3JkX3R5cGUpOiBSZW5hbWUgJ2Zyb21fcG9pbnRlcicgYXJndW1lbnQKCXRvICdmb3JfcG9pbnRlcicuIElmIHRoaXMgdHlwZSBpcyBmb3IgYSBwb2ludGVyIChhcmd1bWVudCkgbWFuZ2xpbmcsCglkb24ndCBzdXJyb3VuZCB0aGUgZWxlbWVudCB3aXRoICdOLi5FJyBpZiB0aGUgdHlwZSBuYW1lIGlzCgl1bnF1YWxpZmllZC4KCjIwMDEtMDMtMTQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogVXNlIENPUFlfREVDTF9SVEwsCglERUNMX1JUTF9TRVRfUCwgZXRjLgoJKG1ha2VfbWV0aG9kX3ZhbHVlKTogTGlrZXdpc2UuCgkoZ2V0X2Rpc3BhdGNoX3RhYmxlKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKHB1c2hfanZtX3Nsb3QpOiBVc2UgQ09QWV9ERUNMX1JUTCwgREVDTF9SVExfU0VUX1AsIGV0Yy4KCjIwMDEtMDMtMDcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy1sYW5nLmluIChsYW5nX3JlcXVpcmVzKTogRGVmaW5lLgoKMjAwMS0wMy0wNyAgQnJhZCBMdWNpZXIgIDxsdWNpZXJAbWF0aC5wdXJkdWUuZWR1PgoKCSogdHlwZWNrLmMgKGNvbnZlcnQpOiBDaGVjayBmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMsCglub3QgZmxhZ19mYXN0X21hdGguCgoyMDAxLTAzLTA1ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCglGaXggYSBwcm9ibGVtIHdoZXJlIHJlc3Rfb2ZfZGVjbF9jb21waWxhdGlvbiBhcHBsaWVkIHRvCgljbGFzc19kdGFibGVfZGVjbCBjYXVzZXMgcHJvYmxlbXMgYmVjYXVzZSBpdCB3YXMgZG9uZSB0b28gZWFybHksCgliZWZvcmUgb3V0cHV0IGZpbGUgd2FzIG9wZW5lZC4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6ICBSZW1vdmUgaW5pdCBvZiBjbGFzc19kdGFibGVfZGVjbC4KCSogY2xhc3MuYyAoY2xhc3NfZHRhYmxlX2RlY2wpOiAgQWRkIG1hY3JvIC0gZWxlbWVudCBvZiBjbGFzc19yb290cy4KCShtYWtlX2NsYXNzX2RhdGEpOiAgRGVmaW5lIGNsYXNzX2R0YWJsZV9kZWNsLgoJKiBqYXZhLXRyZWUuaCAoSlRJX0NMQVNTX0RUQUJMRV9ERUNMLCBjbGFzc19kdGFibGVfZGVjbCk6ICBSZW1vdmVkLgoKMjAwMS0wMy0wMSAgWmFjayBXZWluYmVyZyAgPHphY2t3QHN0YW5mb3JkLmVkdT4KCgkqIGphdmEvY2xhc3MuYywgamF2YS9kZWNsLmMsIGphdmEvamF2YS10cmVlLmg6IFJlcGxhY2UgYWxsCgl1c2VzIG9mICdib29sZWFuJyB3aXRoICdib29sJy4KCjIwMDEtMDMtMDEgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BzdGFuZm9yZC5lZHU+CgoJKiBsYW5nLXNwZWNzLmg6IEFkZCB6ZXJvIGluaXRpYWxpemVyIGZvciBjcHBfc3BlYyBmaWVsZCB0byBhbGwKCWFycmF5IGVsZW1lbnRzLgoKMjAwMS0wMi0xNiAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJSGFuZGxlIGNvbXBpbGluZyBtdWx0aXBsZSBpbnB1dCBmaWxlcyBhdCBvbmNlLCBhbmQgQEZJTEUgc3ludGF4LgoJKiBnY2oudGV4aTogIFVwZGF0ZWQgZG9jdW1lbnRhdGlvbiB0byBtYXRjaC4KCSogamF2YS10cmVlLmggKGZsYWdfZmlsZWxpc3RfZmlsZSwgaW5pdF9zcmNfcGFyc2UpOiAgTmV3IGRlY2xhcmF0aW9ucy4KCSogamNmLXBhcnNlLmMgKHBhcnNlX3NvdXJjZV9maWxlKTogIFNwbGl0IGludG8gLi4uCgkocGFyc2Vfc291cmNlX2ZpbGVfMSk6ICBOZXcgZnVuY3Rpb24gLSBhbmQ6CgkocGFyc2Vfc291cmNlX2ZpbGVfMik6ICBOZXcgZnVuY3Rpb24uCgkoeXlwYXJzZSk6ICBPbiAtZmZpbGVsaXN0LWZpbGUsIG9wZW4gYW5kIHNjYW4gbmFtZWQgZmlsZS4KCU9uIGZpcnN0IHBhc3Mgb3ZlciBmaWxlcywgb25seSBkbyBwYXJzZV9zb3VyY2VfZmlsZV8xLgoJQSBuZXcgc2Vjb25kIHBhc3MgY2FsbHMgcGFyc2Vfc291cmNlX2ZpbGVfMiBmb3IgZWFjaCBmaWxlIHRvIGNvbXBpbGUuCgkoaW5pdF9qY2ZfcGFyc2UpOiAgQ2FsbCBpbml0X3NyY19wYXJzZS4KCSoganZzcGVjLmMgKElORElSRUNUX0ZJTEVfQVJHKTogIE5ldyBmbGFnLgoJKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogIFN1cHBvcnQgQEZJTEVMSVNULUZJTEUgc3ludGF4LCBhcyB3ZWxsCglhcyBtdWx0aXBsZSBpbnB1dCBmaWxlIGNvbWJpbmVkIGluIG9uZSBjb21waWxhdGlvbi4KCSogbGFuZy1vcHRpb25zLmg6ICBBZGQgLWZmaWxlbGlzdC1maWxlCgkqIGxhbmcuYyAoZmxhZ19maWxlbGlzdF9maWxlKTogIE5ldyBmbGFnIHZhcmlhYmxlLgoJKGxhbmdfZl9vcHRpb25zKTogIEhhbmRsZSAtZmZpbGVsaXN0LWZpbGUuCgkqIGxleC5jIChqYXZhX2luaXRfbGV4KTogRG9uJ3QgY2xlYXIgY3R4cC0+aW5jb21wbGV0ZV9jbGFzcy4KCSogcGFyc2UuaCAoc3RydWN0IHBhcnNlX2N0eHQpOiAgUmVtb3ZlIGZpZWxkcyBpbmNvbXBsZXRlX2NsYXNzIGFuZAoJZ2NsYXNzX2xpc3QgLSB1c2UgZ2xvYmFsIGZpZWxkcyBvZiBzcmNfcGFyc2Vfcm9vdHMgaW5zdGVhZC4KCSogcGFyc2UueSAoc3JjX3BhcnNlX3Jvb3RzKTogIE5ldyBhcnJheS4KCShpbmNvbXBsZXRlX2NsYXNzX2xpc3QsIGdjbGFzc19saXN0KTogIE5ldyBtYWNyb3MuCgkocHVzaF9wYXJzZXJfY29udGV4dCwgamF2YV9wb3BfcGFyc2VyX2NvbnRleHQsCglqYXZhX3BhcnNlcl9jb250ZXh0X3Jlc3VtZSk6ICBEb24ndCBmaWRkbGUgd2l0aCBkZWxldGVkIGZpZWxkcy4KCSh2YXJpb3VzKTogIFVzZSBpbmNvbXBsZXRlX2NsYXNzIGdjbGFzc19saXN0IGFuZCBnbG9iYWwgbWFjcm9zCglpbnN0ZWFkIG9mIHBhcnNlX2N0eHQgZmllbGRzIC0gdGhlIGxpc3RzIGFyZSBnbG9iYWwuCgkoaW5pdF9zcmNfcGFyc2UpOiAgTmV3IGZ1bmN0aW9uLgoKMjAwMS0wMi0yMyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGRlY2wuYyAoc2V0X2Jsb2NrKTogU2V0IE5BTUVTIGFuZCBCTE9DS1MgZnJvbSBCTE9DSy4KCjIwMDEtMDItMjAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoY2hlY2tfaW5uZXJfY2xhc3NfYWNjZXNzKTogTW92ZWQgZGVjbGFyYXRpb24gb2YgbG9jYWwKCWBlbmNsb3NpbmdfZGVjbF90eXBlJyB0byB0aGUgcmlnaHQgbG9jYXRpb24uCgoyMDAxLTAyLTE5ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIHBhcnNlLnkgKHBhcnNlcl9jaGVja19zdXBlcl9pbnRlcmZhY2UpOiBEb24ndCBjYWxsCgljaGVja19wa2dfY2xhc3NfYWNjZXNzIGZvciBhbiBpbm5lciBpbnRlcmZhY2UuCgkocGFyc2VyX2NoZWNrX3N1cGVyKTogRG9uJ3QgY2FsbCBjaGVja19wa2dfY2xhc3NfYWNjZXNzIGZvciBpbm5lcgoJY2xhc3MuCgkoZG9fcmVzb2x2ZV9jbGFzcyk6IFNpbXBsaWZ5IGVuY2xvc2luZyB0eXBlIGxvb3AuIERvbid0IGNhbGwKCWNoZWNrX3BrZ19jbGFzc19hY2Nlc3MgaWYgQ0wgYW5kIERFQ0wgYXJlIG5vdCBzZXQuCgkoZmluZF9pbl9pbXBvcnRzX29uX2RlbWFuZCk6IFNldCBERUNMIGlmIGNsYXNzX3R5cGUgbmVlZGVkIHRvIGJlCglsb2FkZWQuIERvbid0IGNhbGwgY2hlY2tfcGtnX2NsYXNzX2FjY2VzcyBmb3IgYW4gaW5uZXIgY2xhc3MuCgkoY2hlY2tfaW5uZXJfY2xhc3NfYWNjZXNzKTogUmV3cml0dGVuIHRvIGltcGxlbWVudCBtZW1iZXIgYWNjZXNzCglydWxlcyBhcyBwZXIgc3BlYyA2LjYuMS4KCShjaGVja19wa2dfY2xhc3NfYWNjZXNzKTogSGFuZGxlIHRoZSBlbXB0eSBwYWNrYWdlIGNvcnJlY3RseS4KCShpbl9zYW1lX3BhY2thZ2UpOiBOZXcgZnVuY3Rpb24uIERldGVybWluZSBpZiB0d28gY2xhc3NlcyBhcmUgaW4gdGhlCglzYW1lIHBhY2thZ2UuCgoyMDAxLTAyLTE4ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIHR5cGVjay5jIChidWlsZF9qYXZhX2FycmF5X3R5cGUpOiBEb24ndCB0cnkgdG8gcG9rZSBhIHB1YmxpYyBgY2xvbmUnCgltZXRob2QgaW50byBhcnJheSB0eXBlcy4KCSogcGFyc2UueSAocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBCeXBhc3MgYWNjZXNzIGNoZWNrIG9uIGNsb25lIGNhbGwKCXRvIGFycmF5IGluc3RhbmNlLgoKMjAwMS0wMi0xNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2luc3RhbmNlb2YpOiBDaGVjayBmb3IgYXJyYXlzIHdoZW4gdHJ5aW5nIGZvbGQgdG8KCWZhbHNlLgoKMjAwMS0wMi0xNSAgSmltIE1leWVyaW5nICA8bWV5ZXJpbmdAbHVjZW50LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS5pbnN0YWxsLWNvbW1vbik6IERlcGVuZCBvbiBgaW5zdGFsbGRpcnMnLgoJKGphdmEuaW5zdGFsbC1pbmZvKTogTGlrZXdpc2UuCgoyMDAxLTAyLTE1ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIE1ha2UtbGFuZy5pbiAoanZzcGVjLm8pOiBNb2RpZnkgcnVsZSB0byBtYXRjaCB0aGF0IG9mIGNwL2crK3NwZWMuby4KCjIwMDEtMDItMTQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCSAgICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCglGaXggZm9yIFBSIGphdmEvMTI2MS4KCSogdHlwZWNrLmMgKGJ1aWxkX2phdmFfYXJyYXlfdHlwZSk6IEFkZCBwdWJsaWMgYGNsb25lJyBtZXRob2QgdG8KCWFycmF5cy4KCSogcGFyc2UueSAocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogVXNlIGN1cnJlbnRfY2xhc3MKCXdoZW4gY2hlY2tpbmcgZm9yIGluYWNjZXNzaWJpbGl0eS4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IEZpeGVkIGVycm9yIG1lc3NhZ2Ugd2hlbiBhY2Nlc3NpYmlsaXR5CglkZW5pZWQuICBBZGRlZCBgZnJvbV9zdXBlcicgYXJndW1lbnQuCgoyMDAxLTAyLTE0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfY2xhc3MpOiBEb24ndCBidWlsZCBhIGZha2UgZGVjbC4gVXNlIHRoZSBvbmUKCWFscmVhZHkgYnVpbHQuCgkqIHR5cGVjay5jIChidWlsZF9qYXZhX2FycmF5X3R5cGUpOiBCdWlsZCBhbmQgYXNzaWduIGRlY2wgdG8gYXJyYXkKCXR5cGUuCgoyMDAxLTAyLTE0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKG5vdF9hY2Nlc3NpYmxlX3ApOiBDaGFuZ2VkIGxlYWRpbmcgY29tbWVudC4gQWRkZWQgZXh0cmEKCWB3aGVyZScgYXJndW1lbnQuIFVzZSBpdCB0byBlbmZvcmNlIHByb3RlY3RlZCBhY2Nlc3MgcnVsZXMuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogQWRkZWQgZXh0cmEgYXJndW1lbnQgdG8KCW5vdF9hY2Nlc3NpYmxlX3AuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBVc2UgYXJndW1lbnQgYHByaW1hcnknIHRvIHByb3ZpZGUKCW5vdF9hY2Nlc3NpYmxlX3Agd2l0aCBhbiBleHRyYSBhcmd1bWVudC4KCShsb29rdXBfbWV0aG9kX2ludm9rZSk6IEFkZGVkIGV4dHJhIGFyZ3VtZW50IHRvIG5vdF9hY2Nlc3NpYmxlX3AuCgkoc2VhcmNoX2FwcGxpY2FibGVfbWV0aG9kX2xpc3QpOiBMaWtld2lzZS4KCjIwMDEtMDItMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogVHJ5IHRvIHJlc29sdmUgYXMKCWFuIGlubmVyIGNsYXNzIGFjY2VzcyBvbmx5IGlmIGBkZWNsJyBpcyBhIFRZUEVfREVDTC4KCjIwMDEtMDItMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChjbGFzc2RvbGxhcl9pZGVudGlmaWVyX25vZGUpOiBJbml0aWFsaXplLgoJKiBqYXZhLXRyZWUuaCAoZW51bSBqYXZhX3RyZWVfaW5kZXgpOiBOZXcgZW50cnkKCWBKVElfQ0xBU1NET0xMQVJfSURFTlRJRklFUl9OT0RFLicKCShjbGFzc2RvbGxhcl9pZGVudGlmaWVyX25vZGUpOiBOZXcgbWFjcm8uCgkoSURfQ0xBU1NET0xMQVJfUCk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChidWlsZF9kb3RfY2xhc3NfbWV0aG9kKTogVXNlIGBjbGFzc2RvbGxhcl9pZGVudGlmaWVyX25vZGUuJwoJKGJ1aWxkX2RvdF9jbGFzc19tZXRob2RfaW52b2NhdGlvbik6IExpa2V3aXNlLgoJKGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6IGBjbGFzcyQnIGNhbid0IGJlCglpbmhlcml0ZWQuCgoyMDAxLTAyLTA5ICBSYWphIFIgSGFyaW5hdGggIDxoYXJpbmF0aEBjcy51bW4uZWR1PgoKCSogTWFrZS1sYW5nLmluIChqYXZhL21hbmdsZV9uYW1lLm8pOiBBZGQgJ21ha2UnIHByZXJlcXMuCgoyMDAxLTAyLTA5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIE1hbmtlLWxhbmcuaW4gKEpWR0VOTUFJTl9PQkpTKTogQWRkZWQgYGVycm9ycy5vJwoJKiBqdmdlbm1haW4uYyAoZXJyb3IpOiBSZXZlcnNlZCAyMDAxLTAyLTA5IHBhdGNoLiBgZXJyb3InIGlzIG5vdwoJZ29uZS4KCjIwMDEtMDItMDkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogbWFuZ2xlX25hbWUgKGFwcGVuZF91bmljb2RlX21hbmdsZWRfbmFtZSk6IEVtaXQgYF8nIG9yIGBVJwoJb3V0c2lkZSBvZiB0aGUgYF9fVScgc2VxdWVuY2UgdG9vLgoJKHVuaWNvZGVfbWFuZ2xpbmdfbGVuZ3RoKTogQ291bnQgYF8nIG9yIGBVJyBvdXRzaWRlIG9mIHRoZSBgX19VJwoJc2VxdWVuY2UgdG9vLgoKMjAwMS0wMi0wOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBqdmdlbm1haW4uYyAoZXJyb3IpOiBSZXZlcnNlZCAyMDAxLTAyLTAxIGRlbGV0aW9uLgoKMjAwMS0wMi0wOCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKEpBVkFfT0JKUyk6IEFkZGVkIGphdmEvbWFuZ2xlX25hbWUubwoJKEpWR0VOTUFJTl9PQkpTKTogTGlrZXdpc2UuCgkqIGphdmEtdHJlZS5oIChhcHBlbmRfZ3BwX21hbmdsZWRfbmFtZSk6IE5ldyBwcm90b3R5cGUuCgkqIGpjZi1wYXJzZS5jIChnZ2NfbWFya19qY2YpOiBBcmd1bWVudCBub3cgYHZvaWQgKi4nCglSZW1vdmVkIGNhc3QgY2FsbGluZyBgZ2NjX2FkZF9yb290LicKCSoganZnZW5tYWluLmMgKG1hbmdsZV9vYnN0YWNrKTogTmV3IGdsb2JhbCwgaW5pdGlhbGl6ZWQuCgkobWFpbik6IFVzZSBpdC4KCShkb19tYW5nbGVfY2xhc3MpOiBDb25zdGlmeSBsb2NhbCBgcHRyLicKCVJlbW92ZWQgbWFjcm8gYE1BTkdMRV9OQU1FLicgUmVtb3ZlZCBjYXN0IGluIGBmb3IuJyBDYWxsCglhcHBlbmRfZ3BwX21hbmdsZV9uYW1lIGFuZCB1cGRhdGUgYGNvdW50JyBpZiBuZWNlc3NhcnkuCglVc2UgYG1hbmdsZV9vYnN0YWNrLicKCSogbWFuZ2xlLmMgKGFwcGVuZF91bmljb2RlX21hbmdsZWRfbmFtZSk6IFJlbW92ZWQuCgkoYXBwZW5kX2dwcF9tYW5nbGVkX25hbWUpOiBMaWtld2lzZS4KCSh1bmljb2RlX21hbmdsaW5nX2xlbmd0aCk6IExpa2V3aXNlLgoJKG1hbmdsZV9tZW1iZXJfbmFtZSk6IFJldHVybiB0eXBlIHNldCB0byBgdm9pZC4nCgkobWFuZ2xlX2ZpZWxkX2RlY2wpOiBEb24ndCBhcHBlbmQgYFUnIGluIGVzY2FwZWQgbmFtZXMuCgkobWFuZ2xlX21ldGhvZF9kZWNsKTogTGlrZXdpc2UuCgkobWFuZ2xlX21lbWJlcl9uYW1lKTogSnVzdCB1c2UgYGFwcGVuZF9ncHBfbWFuZ2xlZF9uYW1lLicKCSogbWFuZ2xlX25hbWUuYzogTmV3IGZpbGUuCgoyMDAxLTAyLTA3ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6ICBGaXggVFJZX0ZJTkFMTFlfRVhQUiBsb2dpYy4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6ICBEb24ndCBjYWxsIGRvbmVfYWx0ZXJuYXRpdmUgYWZ0ZXIKCXByb2Nlc3NpbmcgbG9vcCBjb2RlLCBhcyBhIExPT1BfRVhQUiBuZXZlciB0ZXJtaW5hdGVzIG5vcm1hbGx5LgoKMjAwMS0wMi0wOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2NqLnRleGk6IENoYW5nZSBzb3VyY2VzLnJlZGhhdC5jb20gcmVmZXJlbmNlIHRvIGdjYy5nbnUub3JnLgoKMjAwMS0wMi0wNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2YtcGFyc2UuYyAoSEFORExFX1NZTlRIRVRJQ19BVFRSSUJVVEUpOiBEb24ndCBoYW5kbGUgZmllbGQKCURFQ0xzLgoKMjAwMS0wMi0wNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogbGV4LmMgKGphdmFfbmV3X2xleGVyKTogTG9uZ2VyIGVycm9yIG1lc3NhZ2UuCgoyMDAxLTAyLTA1ICBKZWZmIFN0dXJtICA8amVmZi5zdHVybUBjb21tZXJjZW9uZS5jb20+CgkgICAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfcHJpbV9hcnJheV90eXBlKTogQWRkZWQgbGVhZGluZyBjb21tZW50LgoJKGJ1aWxkX2phdmFfYXJyYXlfdHlwZSk6IE1vdmVkIGxvY2FscyBvdXQgb2YKCWJsb2NrLiBBbHdheXMgY3JlYXRlIHRoZSBgZGF0YScgZmllbGQsIGZpeGVkIGFsaWdubWVudCB0byBtYXRjaAoJQysrLgoKMjAwMS0wMi0wNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBEb24ndCBib3RoZXIgcmVjb21wdXRpbmcKCWBsZW5ndGgnLiAgVXNlIHJlc3Rfb2ZfZGVjbF9jb21waWxhdGlvbiwgbm90IG1ha2VfZGVjbF9ydGwuCglGaXhlcyBQUiBqYXZhLzE4NjYuCgoyMDAxLTAyLTA1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHByb2Nlc3NfaW1wb3J0cyk6IFNhdmUgdGhlIG9yaWdpbmFsIG5hbWUgb2YgdGhlIGltcG9ydAoJZm9yIGJldHRlciBlcnJvciByZXBvcnQuCgoyMDAxLTAyLTA0ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIE1ha2UtbGFuZy5pbiAoanZzcGVjLm8pOiBBZGQgRFJJVkVSX0RFRklORVMgdG8gdGhlIGxpc3QKCW9mIG1hY3JvcyB1c2VkIHdoZW4gY29tcGlsaW5nIGp2c3BlYy5jLgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBMaW5rIHdpdGggdGhlIHNoYXJlZAoJbGliZ2NjIGJ5IGRlZmF1bHQuCgoyMDAxLTAyLTA0ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogQ2FsbCBpbnRlcm5hbF9lcnJvciBpbnN0ZWFkIG9mIGZhdGFsLgoJKiBleHByLmMgKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NvbnN0YW50KTogTGlrZXdpc2UuCgkqIG1hbmdsZS5jIChqYXZhX21hbmdsZV9kZWNsKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKG1ha2VfbmVzdGVkX2NsYXNzX25hbWUsIGphdmFfY29tcGxldGVfbGhzKTogTGlrZXdpc2UuCgkob3BlcmF0b3Jfc3RyaW5nKTogTGlrZXdpc2UuCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IENhbGwgYWJvcnQgaW5zdGVhZCBvZiBmYXRhbC4KCSogY2xhc3MuYyAoYnVpbGRfY2xhc3NfcmVmKTogTGlrZXdpc2UuCgkqIGNvbnN0YW50cy5jICh3cml0ZV9jb25zdGFudF9wb29sKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoc3RhcnRfamF2YV9tZXRob2QpOiBMaWtld2lzZS4KCSogZXhwci5jIChwdXNoX3R5cGUsIGphdmFfc3RhY2tfcG9wLCBqYXZhX3N0YWNrX3N3YXApOiBMaWtld2lzZS4KCShqYXZhX3N0YWNrX2R1cCwgZW5jb2RlX25ld2FycmF5X3R5cGUpOiBMaWtld2lzZS4KCShidWlsZF9qYXZhX2FycmF5X2xlbmd0aF9hY2Nlc3MpOiBMaWtld2lzZS4KCShidWlsZF9qYXZhX2NoZWNrX2luZGV4ZWRfdHlwZSwgZXhwYW5kX2phdmFfcHVzaGMpOiBMaWtld2lzZS4KCShidWlsZF9qYXZhX3NvZnRfZGl2bW9kLCBidWlsZF9pbnZva2VpbnRlcmZhY2UpOiBMaWtld2lzZS4KCSogamF2YS10cmVlLmggKElOTkVSX0NMQVNTX1ApOiBMaWtld2lzZS4KCSogamNmLXBhcnNlLmMgKHBhcnNlX3NpZ25hdHVyZSwgZ2V0X25hbWVfY29uc3RhbnQpOiBMaWtld2lzZS4KCShnaXZlX25hbWVfdG9fY2xhc3MsIGdldF9jbGFzc19jb25zdGFudCk6IExpa2V3aXNlLgoJKiBqY2Ytd3JpdGUuYyAoQ0hFQ0tfUFVULCBDSEVDS19PUCwgZ2V0X2FjY2Vzc19mbGFncyk6IExpa2V3aXNlLgoJKGZpbmRfY29uc3RhbnRfaW5kZXgsIGdlbmVyYXRlX2J5dGVjb2RlX2NvbmRpdGlvbmFsKTogTGlrZXdpc2UuCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMsIHBlcmZvcm1fcmVsb2NhdGlvbnMpOiBMaWtld2lzZS4KCSogbGV4LmMgKGphdmFfdW5nZXRfdW5pY29kZSwgamF2YV9sZXgpOiBMaWtld2lzZS4KCSogbWFuZ2xlLmMgKG1hbmdsZV90eXBlLCBtYW5nbGVfcmVjb3JkX3R5cGUpOiBMaWtld2lzZS4KCShtYW5nbGVfcG9pbnRlcl90eXBlLCBtYW5nbGVfYXJyYXlfdHlwZSwgaW5pdF9tYW5nbGluZyk6IExpa2V3aXNlLgoJKGZpbmlzaF9tYW5nbGluZyk6IExpa2V3aXNlLgoJKiBwYXJzZS5oIChNQVJLX0ZJTkFMX1BBUk1TKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHBvcF9jdXJyZW50X29zYiwgdW5yZWFjaGFibGVfc3RtdF9lcnJvcik6IExpa2V3aXNlLgoJKG9idGFpbl9pbmNvbXBsZXRlX3R5cGUsIGphdmFfY29tcGxldGVfY2xhc3MpOiBMaWtld2lzZS4KCShqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcywgamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kKTogTGlrZXdpc2UuCgkoY3V0X2lkZW50aWZpZXJfaW5fcXVhbGlmaWVkLCBjaGVja19kZXByZWNhdGlvbik6IExpa2V3aXNlLgoJKHBhdGNoX2ludm9rZSwgZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogTGlrZXdpc2UuCgkoamF2YV9jb21wbGV0ZV9saHMsIGxvb2t1cF9uYW1lX2luX2Jsb2Nrcyk6IExpa2V3aXNlLgoJKGNoZWNrX2ZpbmFsX3ZhcmlhYmxlX2luZGlyZWN0X2Fzc2lnbm1lbnQsIGJ1aWxkX3VuYXJ5b3ApOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKHNldF9sb2NhbF90eXBlLCBwYXJzZV9zaWduYXR1cmVfdHlwZSk6IExpa2V3aXNlLgoJKHBhcnNlX3NpZ25hdHVyZV9zdHJpbmcsIGJ1aWxkX2phdmFfc2lnbmF0dXJlKTogTGlrZXdpc2U7Cgkoc2V0X2phdmFfc2lnbmF0dXJlKTogTGlrZXdpc2UuCgkqIHZlcmlmeS5jICh0eXBlX3N0YWNrX2R1cCwgQ0hFQ0tfUENfSU5fUkFOR0UpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoYWRkX21ldGhvZCk6IENhbGwgZmF0YWxfZXJyb3IgaW5zdGVhZCBvZiBmYXRhbC4KCShidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoYnVpbGRfa25vd25fbWV0aG9kX3JlZiwgZXhwYW5kX2ludm9rZSk6IExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NvbnN0YW50LCBqY2ZfcGFyc2UpOiBMaWtld2lzZS4KCSogbGV4LmMgKGphdmFfbmV3X25ld19sZXhlcik6IExpa2V3aXNlLgoJKiBqdi1zY2FuLmMgKG1haW4pOiBMaWtld2lzZS4KCShmYXRhbF9lcnJvcik6IFJlbmFtZWQgZnJvbSBmYXRhbC4KCSogamNmLXBhcnNlLmMgKHl5cGFyc2UpOiBDYWxsIGZhdGFsX2lvX2Vycm9yIGluc3RlYWQgb2YKCXBmYXRhbF93aXRoX25hbWUuCgkqIGpjZi1wYXJzZS5jIChqY2ZfcGFyc2Vfc291cmNlKTogQ2FsbCBmYXRhbF9pb19lcnJvciwgbm90IGZhdGFsLgoJKHl5cGFyc2UpOiBMaWtld2lzZS4KCSogamNmLXdyaXRlLmMgKG1ha2VfY2xhc3NfZmlsZV9uYW1lLCB3cml0ZV9jbGFzc2ZpbGUpOiBMaWtld2lzZS4KCSogbGV4LmMgKGphdmFfZ2V0X2xpbmVfY29sKTogTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jIChsb2FkX2NsYXNzKTogTWFrZSBlcnJvcnMgbm9uLWZhdGFsLgoJKiBsZXguYyAoYnl0ZXN3YXBfaW5pdCwgbmVlZF9ieXRlc3dhcCk6IE9ubHkgI2lmZGVmIEhBVkVfSUNPTlYuCgoyMDAxLTAyLTAxICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIGp2Z2VubWFpbi5jIChjbGFzc19tYW5nbGluZ19zdWZmaXgpOiBSZW1vdmUgdW51c2VkIHN0cmluZy4KCShlcnJvcik6IFJlbW92ZSB1bnVzZWQgZnVuY3Rpb24uCgkobWFpbik6IERvbid0IHVzZSAiX19hdHRyaWJ1dGVfXyBhbGlhcyIgb24gZ2VuZXJhdGVkIGNsYXNzIHN5bWJvbC4KCjIwMDEtMDEtMzAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmMgKGluaXRfamNmX3BhcnNlKTogQWRkZWQgY2FzdCB0byBnZ2NfYWRkX3Jvb3QncyBsYXN0Cglhcmd1bWVudC4KCSogcGFyc2UueSAoZmluaXNoX21ldGhvZF9kZWNsYXJhdGlvbik6IENvZGUgYWNjb3VudGluZyBmb3IgV0ZMZWQKCW1ldGhvZCBERUNMX05BTUVzIGRlbGV0ZWQuCgkoY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2RlZmluaXRpb25zKTogTGlrZXdpc2UuCgkocmVzb2x2ZV90eXBlX2R1cmluZ19wYXRjaCk6IExheW91dCByZXNvbHZlZCB0eXBlLgoJKiB0eXBlY2suYyAobG9va3VwX2RvKTogUmVtb3ZlZCB1bnVzZWQgbG9jYWwuCgoyMDAxLTAxLTMwICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIGphdmEtdHJlZS5oOiBSZW1vdmUgSlRJX0lOVEVHRVJfTkVHQVRJVkVfT05FX05PREUuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBVc2UgaW50ZWdlcl9taW51c19vbmVfbm9kZSwgbm90CglpbnRlZ2VyX25lZ2F0aXZlX29uZV9ub2RlLgoJKiBleHByLmMgKGJ1aWxkX2phdmFfYmlub3ApOiBMaWtld2lzZS4KCjIwMDEtMDEtMjQgIEplZmYgU3R1cm0gIDxqZWZmLnN0dXJtQGNvbW1lcmNlb25lLmNvbT4KCgkqIHpleHRyYWN0LmMgKHJlYWRfemlwX2FyY2hpdmUpOiBSZWFkIGZpbGVfb2Zmc2V0IGJlZm9yZSB3cml0aW5nCgl6aXBkIGFuZCBjb25zZXF1ZW50bHkgY2xvYmJlcmluZyB0aGUgaGVhZGVyIGNvbnRlbnRzLgoKMjAwMS0wMS0yNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluOiBSZW1vdmUgYWxsIGRlcGVuZGVuY2llcyBvbiBkZWZhdWx0cy5oLgoJKiBkZWNsLmM6IERvbid0IGluY2x1ZGUgZGVmYXVsdHMuaC4KCSogZXhwci5jOiBMaWtld2lzZS4KCSogcGFyc2UueTogTGlrZXdpc2UuCgoyMDAxLTAxLTI1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIENoYW5nZUxvZyAoMjAwMS0wMS0yMSk6IEZpeGVkIHR5cG8uCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzc19tZXRob2QpOiBDb2RlIGFjY291bnRpbmcgZm9yIFdGTGVkCgltZXRob2QgREVDTF9OQU1FcyBkZWxldGVkLgoJKiBjb25zdGFudC5jIChmaW5kX21ldGhvZHJlZl9pbmRleCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGxhbmdfbWFya190cmVlKTogTWFyayBgd2ZsJyBmaWVsZCBpbiBzdHJ1Y3QgbGFuZ19kZWNsLgoJKiBqYXZhLXRyZWUuaCAoREVDTF9GVU5DVElPTl9XRkwpOiBOZXcgbWFjcm8uCgkoc3RydWN0IGxhbmdfZGVjbCk6IE5ldyBmaWVsZCBgd2ZsJy4KCShqYXZhX2dldF9yZWFsX21ldGhvZF9uYW1lKTogUHJvdG90eXBlIGRlbGV0ZWQuCgkqIG1hbmdsZS5jIChtYW5nbGVfbWV0aG9kX2RlY2wpOiBDb2RlIGFjY291bnRpbmcgZm9yIFdGTGVkCgltZXRob2QgREVDTF9OQU1FcyBkZWxldGVkLgoJKiBwYXJzZS5oIChHRVRfTUVUSE9EX05BTUUpOiBNYWNybyBkZWxldGVkLgoJKiBwYXJzZS55IChyZXNldF9tZXRob2RfbmFtZSk6IERlbGV0ZWQuCgkobWV0aG9kX2hlYWRlcik6IFNldCBERUNMX0ZVTkNUSU9OX1dGTC4KCShjaGVja19hYnN0cmFjdF9tZXRob2RfaGVhZGVyKTogQ29kZSBhY2NvdW50aW5nIGZvciBXRkxlZCBtZXRob2QKCURFQ0xfTkFNRXMgZGVsZXRlZC4KCShqYXZhX2dldF9yZWFsX21ldGhvZF9uYW1lKTogRGVsZXRlZC4KCShjaGVja19tZXRob2RfcmVkZWZpbml0aW9uKTogQ29kZSBhY2NvdW50aW5nIGZvciBXRkxlZCBtZXRob2QKCURFQ0xfTkFNRXMgZGVsZXRlZC4gVXNlIERFQ0xfRlVOQ1RJT05fV0ZMLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogTGlrZXdpc2UuCgkoamF2YV9jaGVja19hYnN0cmFjdF9tZXRob2RzKTogTGlrZXdpc2UuCgkoamF2YV9leHBhbmRfY2xhc3Nlcyk6IERvbid0IGNhbGwgYHJlc2V0X21ldGhvZF9uYW1lLicKCShzZWFyY2hfYXBwbGljYWJsZV9tZXRob2RfbGlzdCk6IFVzZSBERUNMX05BTUVzIGluc3RlYWQgb2YKCUdFVF9NRVRIT0RfTkFNRS4KCSogdHlwZWNrLmMgKGxvb2t1cF9kbyk6IENvZGUgYWNjb3VudGluZyBmb3IgV0ZMZWQgbWV0aG9kCglERUNMX05BTUVzIGRlbGV0ZWQuCgoyMDAxLTAxLTI1ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGxleC5jIChqYXZhX3JlYWRfY2hhcik6IENoZWNrIGZvciBFT0YgZnJvbSBnZXRjIGZpcnN0LgoKMjAwMS0wMS0yMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3MpOiBEb24ndCBsYXkgdGhlIHN1cGVyY2xhc3Mgb3V0IGlmIGl0J3MKCWFscmVhZHkgYmVpbmcgbGFpZCBvdXQuCgkqIGpjZi1wYXJzZS5jIChoYW5kbGVfaW5uZXJjbGFzc19hdHRyaWJ1dGUpOiBOZXcgZnVuY3Rpb24uCgkoSEFORExFX0lOTkVSQ0xBU1NFU19BVFRSSUJVVEUpOiBJbnZva2UKCWhhbmRsZV9pbm5lcmNsYXNzZXNfYXR0cmlidXRlLgoJKGpjZl9wYXJzZSk6IERvbid0IGxvYWQgYW4gaW5uZXJjbGFzc2VzIGlmIGl0J3MgYWxyZWFkeSBiZWluZwoJbGFpZCBvdXQuCgkqIGpjZi13cml0ZS5jIChhcHBlbmRfaW5uZXJjbGFzc19hdHRyaWJ1dGVfZW50cnkpOiBTdGF0aWMKCWBhbm9ueW1vdXNfbmFtZScgYW5kIGl0cyBpbml0aWFsaXphdGlvbiBkZWxldGVkLiBgb2NpaScgYW5kIGBpbmknCgl0byBiZSB6ZXJvIGZvciBhbm9ueW1vdXMgY2xhc3Nlcy4KCjIwMDEtMDEtMjMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoc2V0X2NvbnN0YW50X3ZhbHVlKTogU2V0IERFQ0xfRklFTERfRklOQUxfSVVEIGlmCgluZWNlc3NhcnkuCgkqIGpjZi1wYXJzZS5jIChzZXRfc291cmNlX2ZpbGVuYW1lKTogVXNlCglNQVlCRV9DUkVBVEVfVkFSX0xBTkdfREVDTF9TUEVDSUZJQyBpZiBuZWNlc3NhcnkuCgoyMDAxLTAxLTIzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfam5pX3N0dWIpOiBTZXQgREVDTF9DT05URVhUIG9uIGBtZXRoX3Zhcicgc28gaXQKCWdldHMgYSB1bmlxdWUgYXNtIG5hbWUuCgoyMDAxLTAxLTIzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChIQU5ETEVfRU5EX01FVEhPRFMpOiBOdWxsaWZ5IGN1cnJlbnRfbWV0aG9kLgoJKEhBTkRMRV9TVEFSVF9GSUVMRCk6IEludm9rZSBNQVlCRV9DUkVBVEVfVkFSX0xBTkdfREVDTF9TUEVDSUZJQwoJaWYgbmVjZXNzYXJ5LgoJKEhBTkRMRV9TWU5USEVUSUNfQVRUUklCVVRFKTogTmV3IG1hY3JvLgoJKiBqY2YtcmVhZGVyLmMgKGdldF9hdHRyaWJ1dGUpOiBIYW5kbGUgYFN5bnRoZXRpYycgYXR0cmlidXRlLgoJKiBwYXJzZS55IChsb29rdXBfcGFja2FnZV90eXBlX2FuZF9zZXRfbmV4dCk6IERlbGV0ZWQuCgkocmVzb2x2ZV9wYWNrYWdlKTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBjb2RlLgoJKGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6IGBmaW5pdCQnIGNhbid0IGJlCglpbmhlcml0ZWQuCgkqIHZlcmlmeS5jIChwb3BfYXJndW1lbnRfdHlwZXMpOiBBZGRlZCBtaXNzaW5nIHByb3RvdHlwZS4KCjIwMDEtMDEtMjMgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCSogY29uZmlnLWxhbmcuaW46IERpc2FibGUgamF2YSBieSBkZWZhdWx0LgoKMjAwMS0wMS0yMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKENvcHlpbmcpOiBOZXcgbm9kZS4KCUFkZGVkIGNvcHlyaWdodCBpbmZvcm1hdGlvbi4KCjIwMDEtMDEtMjEgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCVZhcmlvdXMgZml4ZXMgdG8gYWxsb3cgY29tcGlsaW5nIGEgY29tcHJlc3NlZCAuamFyLy56aXAgYXJjaGl2ZS4KCSogemlwZmlsZS5oIChzdHJ1Y3QgWmlwRmlsZUNhY2hlKTogIFJlcGxhY2UgYnkgc3RydWN0IFppcEZpbGUuCgkoc3RydWN0IFppcEZpbGUpOiAgQWRkIGZpZWxkcyBuYW1lIGFuZCBuZXh0IChmcm9tICBaaXBGaWxlQ2FjaGUpLgoJKHN0cnVjdCBaaXBEaXJlY3RvcnkpOiAgTmV3IGZpZWxkIHppcGYgcG9pbnRzIHRvIG93bmluZyBaaXBGaWxlLgoJKiBqY2YuaCAoc3RydWN0IFppcERpcmVjdG9yeSk6ICBBZGQgZm9yd2FyZCBkZWNsYXJhdGlvbi4KCShzdHJ1Y3QgSkNGKTogICBEZWNsYXJlIHppcGQgZmllbGQgdG8gaGF2ZSB0eXBlIHN0cnVjdCBaaXBEaXJlY3RvcnkuCglSZW1vdmUgc2Vlbl9pbl96aXAgYW5kIHppcF9vZmZzZXQgZmllbGRzLgoJKEpDRl9TRUVOX0lOX1pJUCk6ICBOZXcgbWFjcm8uCgkqIHpleHRyYWN0LmMgKHJlYWRfemlwX2FyY2hpdmUpOiAgU2V0IFppcERpcmVjdG9yeSdzIHppcGYgZmllbGQuCgkqIGpjZi1pby5jOiAgQ2hhbmdlIGFsbCBaaXBGaWxlQ2FjaGUgdG8gWmlwRmlsZS4KCShyZWFkX3ppcF9tZW1iZXIpOiAgTmV3IGZ1bmN0aW9uLgoJKG9wZW5faW5femlwKTogIENhbGwgcmVhZF96aXBfbWVtYmVyLgoJKiBqY2YtcGFyc2UuYyAoZmluZF9pbl9jdXJyZW50X3ppcCk6ICBSZW1vdmUgZnVuY3Rpb24uCgkocmVhZF9jbGFzcyk6ICBNZXJnZSBpbiBmaW5kX2luX2N1cnJlbnRfemlwIGZ1bmN0aW9uYWxpdHkuCglDYWxsIHJlYWRfemlwX21lbWJlciBpZiBuZWVkZWQuCgkocGFyc2VfemlwX2ZpbGVfZW50cmllcyk6ICBVc2UgcmVhZF96aXBfbWVtYmVyLgoJKHByb2Nlc3NfemlwX2Rpcik6ICBVcGRhdGUgZm9yIHJlbW92ZWQgYW5kIGFkZGVkIEpDRiBmaWVsZHMuCgkoamNmX2ZpZ3VyZV9maWxlX3R5cGUpOiAgUmUtdXNlLCBkb24ndCBjb3B5IGluaXRpYWwgWmlwRmlsZSBzdHJ1Y3QuCgoyMDAxLTAxLTIxICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCglNaW5vciBvcHRpbWl6YXRpb24gb2Ygc3RhdGljIGdnYyByb290cy4KCSogamNmLXBhcnNlLmMgKHBhcnNlX3Jvb3RzKTogIE5ldyBzdGF0aWMgZmllbGQuCgkoY3VycmVudF9maWVsZCwgY3VycmVudF9tZXRob2QsIGN1cnJlbnRfZmlsZV9saXN0KTogIFJlcGxhY2UgYnkgbWFjcm9zCgluYW1pbmcgZmllbGRzIG9mIHBhcnNlX3Jvb3RzLgoJKGluaXRfamNmX3BhcnNlKTogIENvbWJpbmUgMyBnZ2NfYWRkX3RyZWVfcm9vdCBjYWxscyB0byAxLgoJKiBjbGFzcy5jIChjbGFzc19yb290cyk6ICBOZXcgc3RhdGljIGZpZWxkLgoJKHJlZ2lzdGVyZWRfY2xhc3MsIGZpZWxkc19pZGVudCwgaW5mb19pZGVudCwgY2xhc3NfbGlzdCk6CglOZXcgbWFjcm9zIG5hbWluZyBmaWVsZHMgb2YgcGFyc2Vfcm9vdHMuCgkoYnVpbGRfc3RhdGljX2ZpZWxkX3JlZik6ICBEb24ndCByZWdpc3RlciByb290cyBoZXJlLgoJKGxheW91dF9jbGFzcyk6ICBTdGF0aWMgZmllbGQgbGlzdCByZXBsYWNlZCBieSBtYWNybyBjbGFzc19saXN0LgoJKGluaXRfY2xhc3NfcHJvY2Vzc2luZyk6ICBDYWxsIGdnY19hZGRfdHJlZV9yb290IGZvciA0IHJvb3RzLgoJSW5pdGlhbGl6ZSBmaWVsZHNfaWRlbnQgYW5kIGluZm9faWRlbnQgaGVyZS4KCjIwMDEtMDEtMjEgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogamNmLXBhcnNlLmMgKGdnY19tYXJrX2pjZik6ICBOZXcgZnVuY3Rpb24uCgkoaW5pdF9qY2ZfcGFyc2UpOiAgUmVnaXN0ZXIgY3VycmVudF9qY2YgYXMgZ2djIHJvb3QuCgoyMDAxLTAxLTIxICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGxhbmcuYyAocHV0X2RlY2xfbm9kZSk6ICBQcmludCBtZXRob2QncyBuYW1lLgoKMjAwMS0wMS0yMSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiB2ZXJpZnkuYyAoVkVSSUZJQ0FUSU9OX0VSUk9SX1dJVEhfSU5ERVgpOiAgTmV3IG1hY3JvLgoJKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIFVzZSBpdCwgZm9yIGJldHRlciBlcnJvciBtZXNzYWdlcyBvbiBsb2Fkcy4KCjIwMDEtMDEtMjEgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogdmVyaWZ5LmMgKG1lcmdlX3R5cGVfc3RhdGUpOiAgU3RpbGwgbWF5IGhhdmUgdG8gbWVyZ2UgZXZlbiBpZgoJTEFCRUxfVkVSSUZJRUQgKGxhYmVsKS4KCjIwMDEtMDEtMjEgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogcGFyc2UueSAobWV0aG9kX2hlYWRlcik6ICBEb24ndCBzZXQgdGhlIERFQ0xfTkFNRSBvZiBhIEZVTkNUSU9OX0RFQ0wKCXRvIGEgRVhQUl9XSVRIX0ZJTEVfTE9DQVRJT04gLSB0aGF0IGlzIGp1c3QgdG9vIGZyYWdpbGUgYW5kIHdyb25nLgoKMjAwMS0wMS0xOSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBleHByLmMgKHBvcF90eXBlXzApOiAgT25seSByZXR1cm4gb2JqZWN0X3B0cl90eXBlX25vZGUgb24gbWlzbWF0Y2gKCWlmIGV4cGV0aW5nIGFuIGludGVyZmFjZSB0eXBlLiAgUmVmaW5lcyBUb20ncyBjaGFuZ2Ugb2YgMjAwMC0wOS0xMi4KCjIwMDEtMDEtMTggIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogZ2NqLnRleGkgKElucHV0IE9wdGlvbnMpOiBNZW50aW9uIC5qYXZhIGZpbGVzLgoKMjAwMS0wMS0xNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBsYW5nLW9wdGlvbnMuaCAoLVd1bnN1cHBvcnRlZC1qZGsxMSk6IFJlbW92ZWQuCgkqIGxhbmcuYyAoZmxhZ19ub3Rfb3ZlcnJpZGluZyk6IERlbGV0ZWQuCgkoZmxhZ19zdGF0aWNfbG9jYWxfamRrMV8xKTogTGlrZXdpc2UuCgkobGFuZ19XX29wdGlvbnMpOiBSZW1vdmVkICJ1bnN1cHBvcnRlZC1qZGsxMSIgZW50cnkuCgkqIHBhcnNlLnkgKGphdmFfY2hlY2tfbWV0aG9kcyk6IFJlbW92ZWQgZGVhZCBjb2RlLgoKMjAwMS0wMS0xNyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCUNoYW5nZXMgc3VnZ2VzdGVkIGJ5IFBlciBCb3RobmVyOgoJKiBnY2oudGV4aSAoSW5wdXQgT3B0aW9ucyk6IERvbid0IG1lbnRpb24gaW5wdXQgZmlsZXMuCgkoQ29kZSBHZW5lcmF0aW9uKTogVXBkYXRlZCAtLW1haW4gaW5mb3JtYXRpb24uCgkoSW52b2tpbmcgamNmLWR1bXApOiBNZW50aW9uIHRoYXQgLS1qYXZhcCBpcyBpbmNvbXBsZXRlLgoJRnJvbSBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvOgoJKFdhcm5pbmdzKTogRG9uJ3QgbWVudGlvbiAtV3Vuc3VwcG9ydGVkLWpkazExLgoJTXkgc3R1ZmY6CgkoQ29tcGF0aWJpbGl0eSk6IE1lbnRpb24gSkRLIDEuMi1uZXNzIG9mIGxpYnJhcmllcy4KCShSZXNvdXJjZXMpOiBNZW50aW9uIHJlc291cmNlcyB1c2VkIHdoZW4gd3JpdGluZyBnY2ouCgoyMDAxLTAxLTE3ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aTogTmV3IGZpbGUuCgkqIE1ha2UtbGFuZy5pbiAoJChzcmNkaXIpL2phdmEvZ2NqLmluZm8pOiBOZXcgdGFyZ2V0LgoJKGphdmEuaW5mbyk6IERlcGVuZCBvbiBnY2ouaW5mby4KCShqYXZhL2djai5kdmkpOiBOZXcgdGFyZ2V0LgoJKGphdmEuZHZpKTogRGVwZW5kIG9uIGdjai5kdmkuCgkoamF2YS5pbnN0YWxsLWluZm8pOiBXcm90ZS4KCjIwMDEtMDEtMTYgIEplZmYgU3R1cm0gIDxqZWZmLnN0dXJtQGFwcG5ldC5jb20+CgoJKiBleHByLmMgKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IFVzZSBUUkVFX1NZTUJPTF9SRUZFUkVOQ0VEIGFmdGVyCgloYXZpbmcgY2FsbGVkIG1ha2VfZGVjbF9ydGwuCgoyMDAxLTAxLTE0ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCglWYXJpb3VzIHBhdGNoZXMgdG8gZW1pdCBiZXR0ZXIgbWVzc2FnZXMgb24gdmVyaWZpY2F0aW9uIGVycm9ycy4KCSogZXhwci5jIChwdXNoX3R5cGVfMCk6ICBSZXR1cm4gZXJyb3IgaW5kaWNhdGlvbiBvbiBzdGFjayBvdmVyZmxvdywKCWluc3RlYWQgb2YgY2FsbGluZmcgZmF0YWwuCgkocHVzaF90eXBlKTogIE5vdyBqdXN0IGNhbGwgcHVzaF90eXBlXzAgKG5kIGZhdGFsIG9uIG92ZXJmbG93KS4KCShwb3BfdHlwZV8wKTogIFJldHVybiBkZXRhaWxlZCBlcnJvciBtZXNzYWdlIChpbiBhIGNoYXIqKiBhcmd1bWVudCkuCgkocG9wX3R5cGUpOiAgSWYgcG9wX3R5cGVfMCBmYWlscywgcHJpbnQgZXJyb3IgbWVzc2FnZS4KCShwb3BfYXJndW1lbnRfdHlwZXMpOiAgTW92ZWQgdG8gdmVyaWZ5LmMuCgkqIHZlcmlmeS5jIChwb3BfYXJndW1lbnRfdHlwZXMpOiAgTW92ZWQgZnJvbSBleHByLmMuCglSZXR1cm4gYSAocG9zc2libGUpIGVycm9yIG1lc3NhZ2UsIHJhdGhlciB0aGFuIHZvaWQuCgkoUE9QX1RZUEUsIFBPUF9UWVBFX0NPTlYsIFBVU0hfVFlQRSwgUFVTSF9QRU5ESU5HKTogIE5ldyBtYWNyb3MuCgkodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbik6ICBVc2UgbmV3IG1hY3JvcywgaW1wcm92aW5nIGVycm9yIG1lc3NhZ2VzLgoJRm9yIGNhc2UgT1BDT0RFX2FzdG9yZSB1c2Ugb2JqZWN0X3B0cl90eXBlX25vZGUuCgkqIGphdmEtdHJlZS5oIChUWVBFX1VOREVSRkxPVywgVFlQRV9VTkVYUEVDVEVEKTogIE5ldyBtYWNyb3MuCgkocG9wX3R5cGVfMCwgcHVzaF90eXBlXzAsIHBvcF9hcmd1bWVudF90eXBlcyk6ICBVcGRhdGUgYWNjb3JkaW5nbHkuCgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocyBjYXNlIEVYUFJfV0lUSF9GSUxFX0xPQ0FUSU9OKTogSWYgYm9keSBpcwoJY29uc3RhbnQsIHJldHVybiBib2R5IHdpdGhvdXQgd3JhcHBlci4gIChJbXByb3ZlcyBjb25zdGFudCBmb2xkaW5nLikKCSogbGV4LmMgKGJ1aWxkX3dmbF9ub2RlKTogIENsZWFyIFRSRUVfVFlQRSBmcm9tIHJldHVybmVkIG5vZGUuCgoyMDAxLTAxLTEzICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2phdmFfZmllbGRfb3ApOiAgQXNzaWduaW5nIHRvIGEgZmluYWwgZmllbGQgb3V0c2lkZQoJYW4gaW5pdGlhbGl6ZXIgZG9lcyBub3QgdmlvbGF0ZSBKVk0gc3BlYywgc28gc2hvdWxkIGJlIHdhcm5pbmcsIG5vdAoJZXJyb3IuICAoU3VuJ3MgdmVyaWZpZXIgZG9lcyBub3QgY29tcGxhaW4gLSB0aG91Z2ggTWljcm9Tb2Z0J3MgZG9lcy4pCgoyMDAxLTAxLTEyICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnamF2YWguYyAodmVyc2lvbiksIGpjZi1kdW1wLmMgKHZlcnNpb24pOiBVcGRhdGUgY29weXJpZ2h0IHllYXIKCXRvIDIwMDEuCgoyMDAxLTAxLTExICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIHBhcnNlLnkgKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogUGVybWl0IGluc3RhbmNlIHZhcmlhYmxlcyBmcm9tCgllbmNsb3NpbmcgY29udGV4dCBpbiBzdXBlciBjb25zdHJ1Y3RvciBjYWxsLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IFBlcm1pdCBlbmNsb3NpbmcgY2xhc3MncyBxdWFsaWZpZWQKCSJ0aGlzIiBpbiBzdXBlciBjb25zdHJ1Y3RvciBjYWxsLgoKMjAwMS0wMS0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3V0ZjhfcmVmKTogUmVtb3ZlIGxhc3QgYXJndW1lbnQgaW4gY2FsbCB0bwoJbWFrZV9kZWNsX3J0bDsgdXNlIG1ha2VfZnVuY3Rpb25fcnRsIGluc3RlYWQgb2YgbWFrZV9kZWNsX3J0bC4KCShidWlsZF9jbGFzc19yZWYpOiBMaWtld2lzZS4KCShidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogTGlrZXdpc2UuCgkoZ2V0X2Rpc3BhdGNoX3RhYmxlKTogTGlrZXdpc2UuCgkobGF5b3V0X2NsYXNzX21ldGhvZCk6IExpa2V3aXNlLgoJKGVtaXRfcmVnaXN0ZXJfY2xhc3Nlcyk6IExpa2V3aXNlLgoJKiBjb25zdGFudHMuYyAoYnVpbGRfY29uc3RhbnRfZGF0YV9yZWYpOiBMaWtld2lzZS4KCSogZGVjbC5jIChidWlsdGluX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoY3JlYXRlX3ByaW1pdGl2ZV92dGFibGUpOiBMaWtld2lzZS4KCSogZXhwci5jIChidWlsZF9rbm93bl9tZXRob2RfZGVmKTogTGlrZXdpc2UuCgkoYnVpbGRfam5pX3N0dWIpOiBMaWtld2lzZS4KCShqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBMaWtld2lzZS4KCjIwMDEtMDEtMTAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGp2c3BlYy5jIChqdmdlbm1haW5fc3BlYyk6IE9taXQgLWZlbmNvZGluZyBmcm9tIGNjMSBpbnZvY2F0aW9uLgoKMjAwMS0wMS0wOCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqYXZhLXRyZWUuaCAobGFuZ19wcmludGFibGVfbmFtZV93bHMpOiBOZXcgcHJvdG90eXBlLgoJKiBsYW5nLmMgKHB1dF9kZWNsX25hbWUpOiBSZW1vdmVkIGRlYWQgY29kZS4gVXNlIERFQ0xfQ09OVEVYVAoJcmF0aGVyIHRoYW4gYGN1cnJlbnRfY2xhc3MnIHRvIHByaW50IHR5cGUgbmFtZS4gRG9uJ3QgcHJlcGVuZCB0eXBlCgluYW1lcyB3aGVuIHByaW50aW5nIGNvbnN0cnVjdG9yIG5hbWVzLgoJKGxhbmdfcHJpbnRhYmxlX25hbWVfd2xzKTogTmV3IGZ1bmN0aW9uLgoJKiBqY2YtcGFyc2UuYyAoamNmX3BhcnNlX3NvdXJjZSk6IFBhc3MgTlVMTCBgZmlsZScgYXJndW1lbnQgdG8KCWBidWlsZF9leHByX3dmbCcsIGFsd2F5IHNldCBFWFBSX1dGTF9GSUxFTkFNRV9OT0RFLgoJKiBwYXJzZS55IChwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IE1lc3NhZ2UgdHVuZWQgZm9yIGNvbnN0cnVjdG9ycy4KCShub3RfYWNjZXNzaWJsZV9wKTogR3JhbnQgYHByaXZhdGUnIGFjY2VzcyBmcm9tIHdpdGhpbgoJZW5jbG9zaW5nIGNvbnRleHRzLgoKMjAwMS0wMS0wNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJQWxsIGZpbGVzIHdpdGggdXBkYXRlZCBjb3B5cmlnaHQgd2hlbiBhcHBsaWNhYmxlLgoJKiBNYWtlLWxhbmcuaW4gKEpWR0VOTUFJTl9PQlMpOiBSZW1vdmVkIGphdmEvbWFuZ2xlLm8uCgkqIGNsYXNzLmMgKG1hbmdsZV9jbGFzc19maWVsZCk6IEZ1bmN0aW9uIHJlbW92ZWQuCgkoYXBwZW5kX2dwcF9tYW5nbGVkX3R5cGUsIG1hbmdsZV9zdGF0aWNfZmllbGQsIG1hbmdsZV9maWVsZCk6IExpa2V3aXNlLgoJKHV0ZjhfY21wLCBjeHhfa2V5d29yZF9wKTogTW92ZWQgdG8gbGV4LmMuCgkoYnVpbGRfY2xhc3NfcmVmKTogQ2FsbCBgamF2YV9tYW5nbGVfY2xhc3NfZmllbGQnIGluc3RlYWQgb2YKCWBtYW5nbGVfY2xhc3NfZmllbGQuJwoJKGJ1aWxkX2R0YWJsZV9kZWNsKTogUmV3cml0dGVuIHRvIGNhbGwgYGphdmFfbWFuZ2xlX3Z0YWJsZS4nCgkobGF5b3V0X2NsYXNzKTogQ2FsbCBgamF2YV9tYW5nbGVfZGVjbCcgaW5zdGVhZCBvZgoJYG1hbmdsZV9zdGF0aWNfZmllbGQuJwoJKGN4eF9rZXl3b3Jkcyk6IEluaXRpYWxpemVkIHN0YXRpYyBhcnJheSBtb3ZlZCB0byBgbGV4LmMuJwoJKGxheW91dF9jbGFzc19tZXRob2QpOiBDaGFuZ2VkIGxlYWRpbmcgY29tbWVudC4gU2ltcGxpZmllZCB0bwoJY2FsbCBgamF2YV9tYW5nbGVfZGVjbC4nIExvY2FsIGBwdHInIG1vdmVkIGluIGZvciBsb29wIGJvZHkuCgkqIGRlY2wuYyAobGFuZ19tYXJrX3RyZWUpOiBNYXJrIGZpZWxkIGBwYWNrYWdlX2xpc3QuJwoJKiBqYXZhLXRyZWUuaCAoVFlQRV9QQUNLQUdFX0xJU1QpOiBOZXcgbWFjcm8uCgkoc3RydWN0IGxhbmdfdHlwZSk6IE5ldyBmaWVsZCBgcGFja2FnZV9saXN0LicKCSh1bmljb2RlX21hbmdsaW5nX2xlbmd0aCk6IFByb3RvdHlwZSByZW1vdmVkLgoJKGFwcGVuZF9ncHBfbWFuZ2xlZF9uYW1lLCBhcHBlbmRfZ3BwX21hbmdsZWRfY2xhc3N0eXBlLAoJZW1pdF91bmljb2RlX21hbmdsZWRfbmFtZSk6IExpa2V3aXNlLgoJKGN4eF9rZXl3b3JkX3ApOiBOZXcgcHJvdG90eXBlLgoJKGphdmFfbWFuZ2xlX2RlY2wsIGphdmFfbWFuZ2xlX2NsYXNzX2ZpZWxkLAoJamF2YV9tYW5nbGVfY2xhc3NfZmllbGRfZnJvbV9zdHJpbmcsIGphdmFfbWFuZ2xlX3Z0YWJsZSk6IExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYyAoamNmX3BhcnNlX3NvdXJjZSk6IENvbnN0aWZ5IGBmaWxlJyBhcmd1bWVudCB0bwoJYGJ1aWxkX2V4cHJfd2ZsLicKCSoganZnZW5tYWluLmMgKG1haW5fbWV0aG9kX3ByZWZpeCk6IEdsb2JhbCB2YXJpYWJsZSByZW1vdmVkLgoJKG1haW5fbWV0aG9kX3N1ZmZpeCk6IExpa2V3aXNlLgoJKGRvX21hbmdsZV9jbGFzc25hbWUpOiBOZXcgZnVuY3Rpb24uCgkobWFpbik6IENhbGwgaXQuIEZvcm1hdCBjaGFuZ2VkIHRvIGFjY29tbW9kYXRlIG5ldyBtYW5nbGluZyBzY2hlbWUuCgkqIGxleC5jOiAodXRmOF9jbXApOiBDb25kaXRpb25hbGx5IHByb3RvdHlwZWQuCgkoY3h4X2tleXdvcmRzKTogTW92ZWQgZnJvbSBjbGFzcy5jLCBjb25kaXRpb25hbGx5IGRlZmluZWQuCgkodXRmOF9jbXAsIGN4eF9rZXl3b3JkX3ApOiBMaWtld2lzZS4KCSogbWFuZ2xlLmMgKG9ic3RhY2suaCwgZ2djLmgpOiBJbmNsdWRlZC4KCShtYW5nbGVfZmllbGRfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShtYW5nbGVfbWV0aG9kX2RlY2wsIG1hbmdsZV90eXBlLCBtYW5nbGVfcG9pbnRlcl90eXBlLAoJbWFuZ2xlX2FycmF5X3R5cGUsIG1hbmdsZV9yZWNvcmRfdHlwZSwKCWZpbmRfY29tcHJlc3Npb25fcG9pbnRlcl9tYXRjaCwgZmluZF9jb21wcmVzc2lvbl9hcnJheV9tYXRjaCwKCWZpbmRfY29tcHJlc3Npb25fcmVjb3JkX21hdGNoLAoJZmluZF9jb21wcmVzc2lvbl9hcnJheV90ZW1wbGF0ZV9tYXRjaCwgc2V0X3R5cGVfcGFja2FnZV9saXN0LAoJZW50cnlfbWF0Y2hfcG9pbnRlcl9wLCBlbWl0X2NvbXByZXNzaW9uX3N0cmluZywgaW5pdF9tYW5nbGluZywKCWZpbmlzaF9tYW5nbGluZywgY29tcHJlc3Npb25fdGFibGVfYWRkLCBtYW5nbGVfbWVtYmVyX25hbWUpOiBMaWtld2lzZS4KCShtYW5nbGVfb2JzdGFjayk6IE5ldyBnbG9iYWwuCgkoTUFOR0xFX1JBV19TVFJJTkcpOiBOZXcgbWFjcm8uCgkodW5pY29kZV9tYW5nbGluZ19sZW5ndGgpOiBUdXJuZWQgc3RhdGljLgoJKGFwcGVuZF91bmljb2RlX21hbmdsZWRfbmFtZSk6IFJlbmFtZWQgZnJvbQoJYGVtaXRfdW5pY29kZV9tYW5nbGVkX25hbWUuJyAgVHVybmVkIHN0YXRpYy4gYG1hbmdsZV9vYnN0YWNrJwoJcmVwbGFjZXMgYG9ic3RhY2snLCByZW1vdmVkIGZyb20gdGhlIHBhcmFtZXRlciBsaXN0LgoJKGFwcGVuZF9ncHBfbWFuZ2xlZF9uYW1lKTogVHVybmVkIHN0YXRpYy4gYG1hbmdsZV9vYnN0YWNrJwoJcmVwbGFjZXMgcGFyYW1ldGVyIGBvYnN0YWNrJywgcmVtb3ZlZCBmcm9tIHRoZSBwYXJhbWV0ZXIgbGlzdC4gQ2FsbAoJYGFwcGVuZF91bmljb2RlX21hbmdsZWRfbmFtZScgaW5zdGVhZCBvZiBgZW1pdF91bmljb2RlX21hbmdsZWRfbmFtZS4KCShhcHBlbmRfZ3BwX21hbmdsZWRfY2xhc3N0eXBlKTogUmVtb3ZlZC4KCShjb21wcmVzc2lvbl90YWJsZSwgY29tcHJlc3Npb25fbmV4dCk6IE5ldyBzdGF0aWMgdmFyaWFibGVzLgoJKiBwYXJzZS55ICh0ZW1wb3Jhcnlfb2JzdGFjayk6IEV4dGVybiBkZWNsYXJhdGlvbiByZW1vdmVkLgoKMjAwMS0wMS0wNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9iaW5vcCk6IENvbXB1dGUgbWlzc2luZyB0eXBlIGluIGVycm9yIHNpdHVhdGlvbnMuCgoyMDAxLTAxLTA1ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6IFB1c2ggaW5pdGlhbCB2YWx1ZSBmb3IgImFycmF5Y2xhc3MiLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQWRkIG5ldyBjbGFzcyBmaWVsZCAiYXJyYXljbGFzcyIuCgoyMDAxLTAxLTA1ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCglGcm9tIHBhdGhhQHNvZnRsYWIuZXJpY3Nzb24uc2U6CgkqIHBhcnNlLnkgKHN3aXRjaF9sYWJlbCk6IFVzZSBidWlsZCwgbm90IGJ1aWxkMSwgdG8gY29uc3RydWN0CglERUZBVUxUX0VYUFIuCgoyMDAxLTAxLTA0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBsYW5nLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IENoYW5nZSAtTUEgdG8gLU1QLgoJKiBqY2YtZGVwZW5kLmMgKGpjZl9kZXBlbmRlbmN5X2FkZF90YXJnZXQsIGpjZl9kZXBlbmRlbmN5X3NldF90YXJnZXQpOgoJVXBkYXRlIHRvIG5ldyBwcm90b3R5cGU7IGRvIHF1b3RlIHRhcmdldHMuCgkoamNmX2RlcGVuZGVuY3lfd3JpdGUpOiBVcGRhdGUuCgoyMDAwLTEyLTIyICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCglTaG9ydGVuIHByaW1pdGl2ZSBhcnJheSBhbGxvY2F0aW9uIHBhdGg6CgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBVc2UgX0p2X05ld1ByaW1BcnJheSBub3QgX0p2X05ld0FycmF5Cgl0byBjcmVhdGUgbmV3IHByaW1pdGl2ZSBhcnJheXMuCgkqIGV4cHIuYyAoYnVpbGRfbmV3YXJyYXkpOiBJZiBnZW5lcmF0aW5nIG5hdGl2ZSBjb2RlLCBjYWxsCglzb2Z0X25ld2FycmF5X25vZGUgd2l0aCBhIHJlZmVyZW5jZSB0byB0aGUgcHJpbWl0aXZlIFRZUEUgaWRlbnRpZmllcgoJaW5zdGVhZCBvZiB0eXBlX3ZhbHVlLgoKMjAwMC0xMi0xNyAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUBhbGJhdHJvc3MuY28ubno+CgoJRml4IGZvciBQUnMgZ2NqLzMxMiBhbmQgZ2NqLzI1MzoKCSogcGFyc2UueSAodmFsaWRfcmVmX2Fzc2lnbmNvbnZfY2FzdF9wKTogTG9hZCBjbGFzc2VzIGZvciBzb3VyY2UgYW5kCglkZXN0IGlmIHRoZXkgYXJuJ3QgYWxyZWFkeS4KCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzKTogQ2FsbCBtYXliZV9sYXlvdXRfc3VwZXJfY2xhc3Mgb24KCXN1cGVyaW50ZXJmYWNlcyBhbHNvLCBidXQgb25seSBpZiBjb21waWxpbmcgZnJvbSBieXRlY29kZS4KCglGaXggZm9yIFBSIGdjai8zNzM6CgkqIHBhcnNlLnkgKGNyZWF0ZV9jbGFzcyk6IFNldCBBQ0NfU1RBVElDIGlmIGNsYXNzIGlzIGRlY2xhcmVkIGluIGFuCglpbnRlcmZhY2UuCgoyMDAwLTEyLTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAoamNmX3BhcnNlX3NvdXJjZSk6IFNldCB3Zmxfb3BlcmF0b3IgaWYgbm90IGFscmVhZHkKCXNldC4KCjIwMDAtMTItMTQgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogYm9laG0uYyAobWFya19yZWZlcmVuY2VfZmllbGRzKTogQ2hhbmdlIHRlc3QgdG8gY29ycmVjdGx5IGRldGVjdAoJYml0bWFwIG92ZXJmbG93LgoKMjAwMC0xMi0xNSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlnLWxhbmcuaW4gKGxhbmdfZGlycyk6IEFkZGVkLgoKMjAwMC0xMi0xNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChlbmRfYXJ0aWZpY2lhbF9tZXRob2RfYm9keSk6IEZpeGVkIHVuZGVmaW5lZCBiZWhhdmlvci4KCUNyZWRpdHMgZ28gdG8gcnRoIGZvciBmaW5kaW5nIGl0LgoKMjAwMC0xMi0xMyAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogcGFyc2UueSAoY2hlY2tfc3RhdGljX2ZpbmFsX3ZhcmlhYmxlX2Fzc2lnbm1lbnRfZmxhZyk6IEZpeCBzcGVsbGluZy4KCjIwMDAtMTEtMDcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoSkFWQV9MRVhfQyk6IEFkZGVkIGNoYXJ0YWJsZXMuaC4KCSogbGV4LmMgKGphdmFfaWdub3JhYmxlX2NvbnRyb2xfcCk6IFJlbW92ZWQuCgkoamF2YV9sZXR0ZXJfb3JfZGlnaXRfcCk6IFJlbW92ZWQuCgkoamF2YV9zdGFydF9jaGFyX3ApOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9yZWFkX2NoYXIpOiBSZXR1cm4gYGludCcsIG5vdCBgdW5pY29kZV90Jy4gIENoYW5nZWQKCWNhbGxlcnMuCgkoamF2YV9yZWFkX3VuaWNvZGUpOiBMaWtld2lzZS4KCShqYXZhX3JlYWRfdW5pY29kZV9jb2xsYXBzaW5nX3Rlcm1pbmF0b3JzKTogTGlrZXdpc2UuCgkoamF2YV9nZXRfdW5pY29kZSk6IExpa2V3aXNlLgoJKGphdmFfbmV3X2xleGVyKTogSW5pdGlhbGl6ZSBoaXRfZW9mLgoJKGphdmFfcGFyc2VfZW5kX2NvbW1lbnQpOiBUYWtlIGBpbnQnIGFyZ3VtZW50LgoJKGphdmFfcGFyc2VfZG9jX3NlY3Rpb24pOiBMaWtld2lzZS4KCShqYXZhX3BhcnNlX2VzY2FwZV9zZXF1ZW5jZSk6IERvbid0IGFsbG93IGJhY2tsYXNoLW5ld2xpbmUuCglSZXR1cm4gYGludCcuCgkqIGxleC5oIChKQVZBX0RJR0lUX1ApOiBSZW1vdmVkLgoJKF9KQVZBX0xFVFRFUl9PUl9ESUdJVF9QKTogUmVtb3ZlZC4KCShfSkFWQV9JREVOVElGSUVSX0lHTk9SQUJMRSk6IFJlbW92ZWQuCgkoSkFWQV9TVEFSVF9DSEFSX1ApOiBSZW5hbWVkIGZyb20gSkFWQV9JRF9DSEFSX1AuCgkoSkFWQV9QQVJUX0NIQVJfUCk6IE5ldyBtYWNyby4KCShVRU9GKTogTm93IC0xLgoJKEpBVkFfQ0hBUl9FUlJPUik6IE5vdyAtMi4KCShqYXZhX2xleGVyKTogTmV3IGZpZWxkIGBoaXRfZW9mJy4KCSogY2hhcnRhYmxlcy5oOiBOZXcgZmlsZS4KCSogZ2VuLXRhYmxlLnBsOiBuZXcgZmlsZS4KCjIwMDAtMTEtMjAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCSAgICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogT25seSBhbGxvdyBjb21wb3VuZCBhc3NpZ25tZW50IG9mCglyZWZlcmVuY2UgdHlwZSBpZiB0eXBlIGlzIFN0cmluZy4KCjIwMDAtMTItMDkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhL2pjZi1wYXRoLm86KTogbGliZ2NqLmphciByZXBsYWNlcyBsaWJnY2ouemlwLgoJamNmLXBhdGguYzogTGlrZXdpc2UuCgoyMDAwLTEyLTA5ICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KCgkqIHppcGZpbGUuaCAoWmlwRGlyZWN0b3J5KTogRGVjbGFyZSBzaXplLCB1bmNvbXByZXNzZWRfc2l6ZSwKCWZpbGVzdGFydCBhbmQgZmlsZW5hbWVfbGVuZ3RoIGFzIGludCB2YWx1ZXMuCgoyMDAwLTEyLTA3ICBNbyBEZUpvbmcgIDxtZGVqb25nQHJlZGhhdC5jb20+CgoJKiBqY2YtaW8uYyAoZmluZF9jbGFzcyk6IENvcnJlY3QgdGhlIGxvZ2ljIHRoYXQgdGVzdHMgdG8gc2VlIGlmIGEKCS5qYXZhIGZpbGUgaXMgbmV3ZXIgdGhhbiBpdHMgLmNsYXNzIGZpbGUuIFRoZSBjb21waWxlciB3YXMKCWluY29ycmVjdGx5IHByaW50aW5nIGEgd2FybmluZyB3aGVuIGZpbGUgbW9kIHRpbWVzIHdlcmUgZXF1YWwuCgoyMDAwLTEyLTA3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSoganZnZW5tYWluLmM6IFVzZSBJU1BSSU5UIG5vdCBpc2FzY2lpLgoKMjAwMC0xMi0wNiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChlbmRfYXJ0aWZpY2lhbF9tZXRob2RfYm9keSk6IEZpeGVkIHR5cG8uCgoyMDAwLTEyLTA0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogUGljayB0aGUgY29ycmVjdCBlbmNsb3NpbmcKCWNvbnRleHQgd2hlbiBjcmVhdGluZyBpbm5lciBjbGFzcyBpbnN0YW5jZXMuCglGaXhlcyBnY2ovMzMyLgoKMjAwMC0xMS0yNiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2phdmFoLmMgKHZlcnNpb24pLCBqY2YtZHVtcC5jICh2ZXJzaW9uKSwganYtc2Nhbi5jICh2ZXJzaW9uKToKCVVwZGF0ZSBjb3B5cmlnaHQgeWVhciB0byAyMDAwLgoKMjAwMC0xMS0yMyAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAoaW5pdF9qY2ZfcGFyc2UpOiBSZWdpc3RlciBjdXJyZW50X2ZpbGVfbGlzdCByb290LgoJTW92ZSBjdXJyZW50X2ZpbGVfbGlzdCBvdXQgb2YgeXlwYXJzZSBhbmQgbWFrZSBpdCBzdGF0aWMuCgoJKiBleHByLmM6IERlY2xhcmUgcXVpY2tfc3RhY2sgYW5kIHRyZWVfbGlzdF9mcmVlX2xpc3QgYXMgc3RhdGljCgkoaW5pdF9leHByX3Byb2Nlc3NpbmcpOiBSZWdpc3RlciBxdWlja19zdGFjayBhbmQKCXRyZWVfbGlzdF9mcmVlX2xpc3Qgcm9vdHMuCgoyMDAwLTExLTIyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGJ1aWxkX291dGVyX2ZpZWxkX2FjY2Vzcyk6IE5ldyBsb2NhbCBgZGVjbF9jdHgnLCB1c2UKCWl0LiBDaGVjayBmb3IgZmllbGQncyBjb250ZXh0IGFuZCBjdXJyZW50IGNsYXNzIGltbWVkaWF0ZSBvdXRlcgoJY29udGV4dCBpbmhlcml0YW5jZS4KCShvdXRlcl9maWVsZF9hY2Nlc3NfcCk6IENvbnNpZGVyIGZpZWxkcyBpbmhlcml0ZWQgZnJvbSB0aGUgbGFzdAoJZW5jbG9zaW5nIGNvbnRleHQuCgkoYnVpbGRfYWNjZXNzX3RvX3RoaXNuKTogU3RvcCBhdCB0aGUgbGFzdCBlbmNsb3NpbmcgY29udGV4dCBpZgoJbmVjZXNzYXJ5LgoJRml4ZXMgZ2NqLzM2Ny4KCjIwMDAtMTEtMjMgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGp2c3BlYy5vKTogRGVwZW5kIG9uICQoQ09ORklHX0gpLgoKMjAwMC0xMS0yMiAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUBhbGJhdHJvc3MuY28ubno+CgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NvbnN0YW50KTogQ2FsbCBVVDhfQ0hBUl9MRU5HVEggb24gYHV0ZjgnLCBub3QgdGhlCglzY3JhdGNoIGJ1ZmZlci4KCjIwMDAtMTEtMjAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGp2LXNjYW4uYyAoaGVscCk6IERvY3VtZW50IC0tY29tcGxleGl0eS4KCShvcHRpb25zKTogQWRkZWQgLS1jb21wbGV4aXR5LgoJKGZsYWdfY29tcGxleGl0eSk6IE5ldyBnbG9iYWwuCgkobWFpbik6IENhbGwgYHJlcG9ydCcuCgkqIHBhcnNlLXNjYW4ueSAoY29tcGxleGl0eSk6IE5ldyBnbG9iYWwuCgkoaWZfdGhlbl9zdGF0ZW1lbnQsIGlmX3RoZW5fZWxzZV9zdGF0ZW1lbnQsCglpZl90aGVuX2Vsc2Vfc3RhdGVtZW50X25zaSwgc3dpdGNoX2Jsb2NrX3N0YXRlbWVudF9ncm91cCwKCXdoaWxlX2V4cHJlc3Npb24sIGRvX3N0YXRlbWVudCwgZm9yX2JlZ2luLCBjb250aW51ZV9zdGF0ZW1lbnQsCgl0aHJvd19zdGF0ZW1lbnQsIGNhdGNoX2NsYXVzZSwgZmluYWxseSwgbWV0aG9kX2ludm9jYXRpb24sCgljb25kaXRpb25hbF9hbmRfZXhwcmVzc2lvbiwgY29uZGl0aW9uYWxfb3JfZXhwcmVzc2lvbiwKCWNvbmRpdGlvbmFsX2V4cHJlc3Npb24pOiBVcGRhdGUgY29tcGxleGl0eS4KCShyZXNldF9yZXBvcnQpOiBSZXNldCBjb21wbGV4aXR5LgoJKHJlcG9ydCk6IE5ldyBmdW5jdGlvbi4KCjIwMDAtMTEtMjAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGxleC5jICh5eWxleCk6IEFkZGVkIFNUUklDVF9USyBjYXNlLgoJKiBwYXJzZS55IChTVFJJQ1RfVEspOiBBZGRlZC4KCSogcGFyc2Utc2Nhbi55IChTVFJJQ1RfVEspOiBBZGRlZC4KCSogTWFrZS1sYW5nLmluICgkKHNyY2RpcikvamF2YS9rZXl3b3JkLmgpOiBBZGRlZCBtaXNzaW5nIGBcJyBhbmQKCWA7Jy4gIFVzZSA0LCBub3QgMywgd2l0aCAtayBvcHRpb24uICBDb3JyZWN0bHkgcmVuYW1lIHJlc3VsdGluZwoJZmlsZS4KCSoga2V5d29yZC5oOiBSZWJ1aWx0LgoJKiBrZXl3b3JkLmdwZXJmIChzdHJpY3RmcCk6IEFkZGVkLgoKMjAwMC0xMS0yMCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogbGV4LmMgKHl5bGV4KTogUmVjb2duaXplIGZsb2F0aW5nIHBvaW50IGNvbnN0YW50cyB3aXRoIGxlYWRpbmcKCTAuCgoyMDAwLTExLTE5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBqYXZhLXRyZWUuaCAoY3ljbGljX2luaGVyaXRhbmNlX3JlcG9ydCk6IENvbnN0aWZ5LgoJKiBwYXJzZS55IChjeWNsaWNfaW5oZXJpdGFuY2VfcmVwb3J0KTogTGlrZXdpc2UuCgoyMDAwLTExLTE3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogcGFyc2UueSAoZ29hbCk6IFJlbW92ZSBjYWxsIHRvIGdnY19hZGRfc3RyaW5nX3Jvb3QuCgoyMDAwLTExLTE2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogamNmLXBhcnNlLmMgKGdldF9jb25zdGFudCksIHBhcnNlLnkgKGRvX21lcmdlX3N0cmluZ19jc3RlKToKCUNyZWF0ZSBzdHJpbmcgaW4gc2NyYXRjaCBidWZmZXIsIHRoZW4gcGFzcyB0byBidWlsZF9zdHJpbmcuCgoyMDAwLTExLTEzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBwYXJzZS55IChpc3N1ZV93YXJuaW5nX2Vycm9yX2Zyb21fY29udGV4dCk6IEFkZAoJQVRUUklCVVRFX1BSSU5URi4KCjIwMDAtMTEtMTEgIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgoKCSogamNmLXBhcnNlLmMgKHByb2Nlc3NfemlwX2Rpcik6IEFkZCBmaW5wdXQgcGFyYW1ldGVyLgoJKGpjZl9maWd1cmVfZmlsZV90eXBlKTogQ2FsbCBwcm9jZXNzX3ppcF9kaXIgd2l0aCBhcHByb3ByaWF0ZQoJYXJndW1lbnQuCgoyMDAwLTExLTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZWNsLmMgKGNvcHlfbGFuZ19kZWNsKTogVXNlIG1lbWNweSwgbm90IGJjb3B5LgoJKiBqY2YtcGFyc2UuYyAoamNmX2ZpZ3VyZV9maWxlX3R5cGUpOiBMaWtld2lzZS4KCjIwMDAtMTEtMDkgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIHBhcnNlLnkgKGNyZWF0ZV9uZXdfcGFyc2VyX2NvbnRleHQpOiBVc2UgbWVtc2V0ICgpIGluc3RlYWQgb2YKCWJ6ZXJvICgpLgoKMjAwMC0xMS0wOCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKHByb2Nlc3NfZmlsZSk6IE9ubHkgaW5jbHVkZSBnY2ovY25pLmggd2hlbiBnZW5lcmF0aW5nCglDTkkgc3R1YnMuCgoyMDAwLTExLTA3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBleHByLmMgKG5vdGVfaW5zdHJ1Y3Rpb25zKSwgamNmLWlvLmMgKGZpbmRfY2xhc3MpLCBqY2YtcGFyc2UuYwoJKGluaXRfb3V0Z29pbmdfY3Bvb2wpLCBsZXguYyAoamF2YV9pbml0X2xleCk6IFVzZSBtZW1zZXQgKCkKCWluc3RlYWQgb2YgYnplcm8gKCkuCgoyMDAwLTExLTA1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBsZXguaCAoSkFWQV9GTE9BVF9SQU5HRV9FUlJPUik6IFR5cG8gZml4LgoJKiBsZXguYyAoSVNfWkVSTyk6IE5ldyBkZWZpbmUuCgkoamF2YV9wZXJmb3JtX2F0b2YpOiBFcnJvciBvbiBmbG9hdGluZyBwb2ludCB1bmRlcmZsb3cuCgoyMDAwLTExLTA0ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBsZXguYyAoamF2YV9wYXJzZV9lc2NhcGVfc2VxdWVuY2UpOiBPbmx5IHJlYWQgdHdvIG9jdGFsCgljaGFyYWN0ZXJzIGlmIHRoZSBmaXJzdCBvbmUgaXMgZ3JlYXRlciB0aGFuIDMuICBEb24ndCBhbGxvdwoJIm9jdGFsIiBudW1iZXJzIHRvIGluY2x1ZGUgdGhlIGRpZ2l0cyA4IG9yIDkuCgoyMDAwLTExLTA1ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEuZGlzdGRpcik6IFJlbW92ZS4KCjIwMDAtMTEtMDMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS5kdmkpOiBOZXcgdGFyZ2V0LgoJUGFydGlhbCBmaXggZm9yIFBSIG90aGVyLzU2Ny4KCgkqIGxhbmctb3B0aW9ucy5oOiBNZW50aW9uIC1Xb3V0LW9mLWRhdGUuCgkqIGpjZi1kdW1wLmMgKGZsYWdfbmV3ZXIpOiBOZXcgZ2xvYmFsLgoJKiBnamF2YWguYyAoZmxhZ19uZXdlcik6IE5ldyBnbG9iYWwuCgkqIGpjZi1pby5jIChmaW5kX2NsYXNzKTogT25seSB3YXJuIHdoZW4gZmxhZ19uZXdlciBzZXQuCgkqIGxhbmcuYyAoZmxhZ19uZXdlcik6IE5ldyBnbG9iYWwuCgkoc3RydWN0IHN0cmluZ19vcHRpb24pOiBOZXcgZGVjbGFyYXRpb24uCgkobGFuZ19XX29wdGlvbnMpOiBOZXcgZ2xvYmFsLgoJKHByb2Nlc3Nfb3B0aW9uX3dpdGhfbm8pOiBOZXcgZnVuY3Rpb24uCgkobGFuZ19kZWNvZGVfb3B0aW9uKTogVXNlIGl0LgoKCSogY2xhc3MuYyAoY3h4X2tleXdvcmRfcCk6IEFjY2VwdCBrZXl3b3JkcyB3aXRoIHRyYWlsaW5nIGAkJ3MuCgkqIGdqYXZhaC5jIChjeHhfa2V5d29yZF9zdWJzdCk6IEhhbmRsZSBhbnkgbnVtYmVyIG9mIHRyYWlsaW5nCglgJCcuCgoJKiBsZXguaCAoX0pBVkFfSURFTlRJRklFUl9JR05PUkFCTEUpOiBOZXcgbWFjcm8uCgkoSkFWQV9JRF9DSEFSX1ApOiBBbHNvIHRyeSBqYXZhX2lnbm9yYWJsZV9jb250cm9sX3AuCgkqIGxleC5jIChqYXZhX3JlYWRfdW5pY29kZSk6IFJlbW92ZWQgYHRlcm1fY29udGV4dCcgYXJndW1lbnQuCglSZWNvZ25pemUgYW55IG51bWJlciBvZiBgdScgaW4gYFx1Jy4KCShqYXZhX3JlYWRfdW5pY29kZV9jb2xsYXBzaW5nX3Rlcm1pbmF0b3JzKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfZ2V0X3VuaWNvZGUpOiBVc2UgaXQuCgkoamF2YV9saW5ldGVybWluYXRvcik6IFJlbW92ZWQuCgkoeXlsZXgpOiBQcm9kdWNlIGVycm9yIGlmIGNoYXJhY3RlciBsaXRlcmFsIGlzIG5ld2xpbmUgb3Igc2luZ2xlCglxdW90ZS4gIFJldHVybiBpZiBlb2YgZm91bmQgaW4gbWlkZGxlIG9mIGAvLycgY29tbWVudC4gIEVPRiBpbgoJYC8vJyBjb21tZW50IGlzIG9ubHkgYW4gZXJyb3IgaWYgcGVkYW50aWMuCgkoamF2YV9pZ25vcmFibGVfY29udHJvbF9wKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfcGFyc2VfZW5kX2NvbW1lbnQpOiBSZXR1cm4gaWYgZW9mIGZvdW5kIGluIG1pZGRsZSBvZgoJY29tbWVudC4KCUluY2x1ZGUgZmxhZ3MuaC4KCSoganYtc2Nhbi5jIChwZWRhbnRpYyk6IE5ldyBnbG9iYWwuCgoyMDAwLTEwLTMxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKG91dGVyX2ZpZWxkX2FjY2Vzc19wKTogSW5oZXJpdGVkIGZpZWxkcyBhcmVuJ3QKCWNvbnNpZGVyIG91dGVyIGZpZWxkcy4KCShtYXliZV9idWlsZF90aGlzbl9hY2Nlc3NfbWV0aG9kKTogVXNlCglQVVJFX0lOTkVSX0NMQVNTX1RZUEVfUCBpbnN0ZWFkIG9mIElOTkVSX0NMQVNTX1RZUEVfUC4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IFRyaWdnZXIgYW4gZXJyb3IgaWYgYSBzdGF0aWMgZmllbGQKCWlzIGJlaW5nIGFjY2Vzc2VkIGFzIGFuIG91dGVyIGZpZWxkLgoKMjAwMC0xMC0yOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKExJQkdDSl9aSVBfRklMRSk6IERlZmluZSB3aXRoIGAkKHByZWZpeCknLgoJRml4ZXMgZ2NqLzM2NS4KCjIwMDAtMTAtMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBNYWtlLWxhbmcuaW46IE1vdmUgYWxsIGJ1aWxkIHJ1bGVzIGhlcmUgZnJvbSBNYWtlZmlsZS5pbiwKCWFkYXB0IHRvIG5ldyBjb250ZXh0LiAgV3JhcCBhbGwgcnVsZXMgdGhhdCBjaGFuZ2UgdGhlIGN1cnJlbnQKCWRpcmVjdG9yeSBpbiBwYXJlbnRoZXNlcy4gIEV4cHVuZ2UgYWxsIHJlZmVyZW5jZXMgdG8gJChQKS4KCVdoZW4gb25lIGNvbW1hbmQgZGVwZW5kcyBvbiBhbm90aGVyIGFuZCB0aGV5J3JlIHJ1biBhbGwgYXQKCW9uY2UsIHVzZSAmJiB0byBzZXBhcmF0ZSB0aGVtLCBub3QgOy4gIEFkZCBPVVRQVVRfT1BUSU9OIHRvCglhbGwgb2JqZWN0LWZpbGUgZ2VuZXJhdGlvbiBydWxlcy4gIERlbGV0ZSBvYnNvbGV0ZSB2YXJpYWJsZXMuCgoJKiBNYWtlZmlsZS5pbjogRGVsZXRlLgoJKiBjb25maWctbGFuZy5pbjogRGVsZXRlIG91dHB1dHM9IGxpbmUuCgoyMDAwLTEwLTI1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogTlVMTGlmeSB0aGlzX2FyZyB3aGVuIGFscmVhZHkKCWluc2VydGVkLgoJKG1heWJlX3VzZV9hY2Nlc3NfbWV0aG9kKTogSGFuZGxlIGNhbGwgdG8gbWV0aG9kcyB1bnJlbGF0ZWQgdG8gdGhlCgljdXJyZW50IGNsYXNzLiBGaXhlZCBjb21tZW50LgoJRml4ZXMgZ2NqLzM2MS4KCjIwMDAtMTAtMjQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UuaCAoSU5ORVJfRU5DTE9TSU5HX1NDT1BFX0NIRUNLKTogQ2hlY2sgaW5oZXJpdGVkIHR5cGUgaW4KCXNjb3BlLgoKMjAwMC0xMC0yNCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogbGV4LmMgKGphdmFfbmV3X2xleGVyKTogSW5pdGlhbGl6ZSBuZXcgZmllbGRzLiAgV29yayBhcm91bmQKCWJyb2tlbiBpY29udigpIGltcGxlbWVudGF0aW9ucy4KCShqYXZhX3JlYWRfY2hhcik6IFN3YXAgYnl0ZXMgaWYgcmVxdWlyZWQuICBVc2UgZmFsbGJhY2sgZGVjb2RlciBpZgoJcmVxdWlyZWQuCgkoYnl0ZXN3YXBfaW5pdCwgbmVlZF9ieXRlc3dhcCk6IE5ldyBnbG9iYWxzLgoJKGphdmFfZGVzdHJveV9sZXhlcik6IE9ubHkgY2xvc2UgaWNvbnYgaGFuZGxlIGlmIGl0IGlzIGluIHVzZS4KCSogbGV4LmggKGphdmFfbGV4ZXIpOiBOZXcgZmllbGRzIHJlYWRfYW55dGhpbmcsIGJ5dGVfc3dhcCwKCXVzZV9mYWxsYmFjay4KCU1hZGUgb3V0X2J1ZmZlciB1bnNpZ25lZC4KCjIwMDAtMTAtMjQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocmVnaXN0ZXJfaW5jb21wbGV0ZV90eXBlKTogSW5jbHVkZSBKREVQX0ZJRUxEIGFzIGEgY2FzZQoJd2hlcmUgYW4gZW5jbG9zaW5nIGNvbnRleHQgY2FuIGJlIHNldCBvbiB0aGUgamRlcC4KCShkb19yZXNvbHZlX2NsYXNzKTogRml4ZWQgaWRlbnRhdGlvbi4KCjIwMDAtMTAtMjEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdqYXZhaC5jIChORUVEX1BFRUtfQVRUUklCVVRFLCBORUVEX1NLSVBfQVRUUklCVVRFKTogRGVmaW5lCgoJKiBqY2YtcmVhZGVyLmMgKHBlZWtfYXR0cmlidXRlLCBza2lwX2F0dHJpYnV0ZSk6IE9ubHkgZGVmaW5lCgl3aGVuIHJlcXVlc3RlZC4KCgkqIHBhcnNlLmggKHl5ZXJyb3IpOiBJZiBKQzFfTElURSwgbWFyayB3aXRoIEFUVFJJQlVURV9OT1JFVFVSTi4KCgkqIHZlcmlmeS5jIChDSEVDS19QQ19JTl9SQU5HRSk6IENhc3QgcmVzdWx0IG9mIHN0bXQtZXhwciB0byB2b2lkLgoKMjAwMC0xMC0xOCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoT1AxKTogVXBkYXRlIGBsYXN0X2JjJy4KCShzdHJ1Y3QgamNmX2Jsb2NrKTogRml4ZWQgaW5kZW50YXRpb24gYW5kIHR5cG8gaW4gY29tbWVudHMuICBOZXcKCWZpZWxkIGBsYXN0X2JjJy4KCShnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IEluc2VydCBgbm9wJyBpZiBganNyJyBpbW1lZGlhdGVseQoJZm9sbG93cyBgbW9uaXRvcmVudGVyJy4KCSogcGFyc2UueSAocGF0Y2hfc3luY2hyb25pemVkX3N0YXRlbWVudCk6IE5ldyBsb2NhbCBgdG1wJy4gQ2FsbAoJYHBhdGNoX3N0cmluZycuCglGaXhlcyBnY2ovMjMyLgoKMjAwMC0xMC0xNiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogUmVjb2duaXplIC1NRiBhbmQgLU1ULgoJKiBsYW5nLXNwZWNzLmg6IEFkZGVkICV7TUF9LCAle01GKn0sICV7TVQqfS4KCSogbGFuZy1vcHRpb25zLmg6IEFkZGVkIC1NQSwgLU1ULCAtTUYuLgoJKiBsYW5nLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IFJlY29nbml6ZSAtTUEsIC1NVCwgLU1GLgoJKERFUEVORF9UQVJHRVRfU0VUKTogTmV3IG1hY3JvLgoJKERFUEVORF9GSUxFX0FMUkVBRFlfU0VUKTogTGlrZXdpc2UuCgkoaW5pdF9wYXJzZSk6IEhhbmRsZSBuZXcgZmxhZ3MuCgkqIGpjZi5oIChqY2ZfZGVwZW5kZW5jeV9wcmludF9kdW1taWVzKTogRGVjbGFyZS4KCSogTWFrZS1sYW5nLmluIChzLWphdmEpOiBBZGRlZCBta2RlcHMuby4KCSogTWFrZWZpbGUuaW4gKEJBQ0tFTkQpOiBBZGRlZCBta2RlcHMuby4KCSguLi9nY2poJChleGVleHQpKTogQWRkZWQgbWtkZXBzLm8uCgkoLi4vamNmLWR1bXAkKGV4ZWV4dCkpOiBBZGRlZCBta2RlcHMuby4KCSogamNmLWRlcGVuZC5jOiBJbmNsdWRlIG1rZGVwcy5oLgoJKHN0cnVjdCBlbnRyeSwgZGVwZW5kZW5jaWVzLCB0YXJnZXRzLCBNQVhfT1VUUFVUX0NPTFVNTlMsCglhZGRfZW50cnkpOiBSZW1vdmVkLgoJKGpjZl9kZXBlbmRlbmN5X3Jlc2V0KTogUmV3cm90ZS4KCShkZXBlbmRlbmNpZXMpOiBOZXcgZ2xvYmFsLgoJKGpjZl9kZXBlbmRlbmN5X3NldF90YXJnZXQpOiBSZXdyb3RlLgoJKGpjZl9kZXBlbmRlbmN5X2FkZF90YXJnZXQpOiBMaWtld2lzZS4KCShqY2ZfZGVwZW5kZW5jeV9hZGRfZmlsZSk6IExpa2V3aXNlLgoJKG11bmdlKTogUmVtb3ZlZC4KCShwcmludF9lbnRzKTogUmVtb3ZlZC4KCShqY2ZfZGVwZW5kZW5jeV93cml0ZSk6IFJld3JvdGUuCgkocHJpbnRfZHVtbWllcyk6IE5ldyBnbG9iYWwuCgkoamNmX2RlcGVuZGVuY3lfcHJpbnRfZHVtbWllcyk6IE5ldyBmdW5jdGlvbgoJKGpjZl9kZXBlbmRlbmN5X3dyaXRlKTogQ2FsbCBkZXBzX2R1bW15X3RhcmdldHMgaWYgcmVxdWlyZWQuCgoyMDAwLTEwLTE4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChhZGRfY2xhc3NfZGVjbCk6IFJlbW92ZWQgdW51c2VkIHZhcmlhYmxlcyBgdG5hbWUnLAoJYHRsZW4nIGFuZCBgbmFtZV9pbmRleCcuCgkqIGphdmEtdHJlZS5oIChCVUlMRF9GSUxFTkFNRV9JREVOVElGSUVSX05PREUpOiBOZXcgbWFjcm8uCgkqIGpjZi1wYXJzZS5jIChqY2ZfcGFyc2Vfc291cmNlKTogVXNlIGl0IGFuZCBzZXQgRVhQUl9XRkxfRklMRU5BTUUKCWluIGB3Zmxfb3BlcmF0b3InIHdpdGggdmFsdWUuCgkoeXlwYXJzZSk6IFVzZSBCVUlMRF9GSUxFTkFNRV9JREVOVElGSUVSX05PREUuCgkoamNmX2ZpZ3VyZV9maWxlX3R5cGUpOiBGaXhlZCBpZGVudGF0aW9uLgoJKiBsZXguYyAoamF2YV9nZXRfbGluZV9jb2wpOiBVc2UgRU9GLiBUdW5lZCBgXicgcGxhY2VtZW50LgoJKiBwYXJzZS55IChhbmFseXplX2NsaW5pdF9ib2R5KTogTmV3IGZ1bmN0aW9uLgoJKHN0YXRpY19pbml0aWFsaXplcjopOiBSZXNldCBgY3VycmVudF9zdGF0aWNfYmxvY2snLgoJKGphdmFfcGFyc2VyX2NvbnRleHRfcmVzdG9yZV9nbG9iYWwpOiBTZXQgRVhQUl9XRkxfRklJTEVOQU1FX05PREUgaW4KCWB3Zmxfb3BlcmF0b3InIHdpdGggbmV3IHZhbHVlLgoJKGxvb2t1cF9jbCk6IFVzZSBFWFBSX1dGTF9GSUxFTkFNRS4KCShtYXliZV95YW5rX2NsaW5pdCk6IEhhbmRsZSBib2d1cyA8Y2xpbml0PiBib2RpZXMsIGNhbGwKCWFuYWx5emVfY2xpbml0X2JvZHkuCgkoYnVpbGRfb3V0ZXJfZmllbGRfYWNjZXNzKTogQWNjZXNzIHRvIHRoaXMkPG4+IGJ1aWx0IGZyb20KCWN1cnJlbnRfY2xhc3MsIG5vdCBpdHMgb3V0ZXIgY29udGV4dC4KCShidWlsZF9hY2Nlc3NfdG9fdGhpc24pOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIFRpZGllZCB0aGluZ3MgdXAuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogSGFuZGxlIGBULnRoaXMnIGFuZCBgVC50aGlzLmYoKScuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBVc2UgYGlzX3N0YXRpY19mbGFnJyB3aGVuIGFscmVhZHkKCWluaXRpYWxpemVkLgoJKHBhdGNoX25ld2FycmF5KTogUmVtb3ZlZCBhc3NpZ25tZW50IGluIHRlcm5hcnkgb3BlcmF0b3IuCgoyMDAwLTEwLTE3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChmcmVlX2VoX3Jhbmdlcyk6IERvbid0IGZyZWUgYHdob2xlX3JhbmdlJy4KCjIwMDAtMTAtMTUgIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENhbGwgaW5pdF9jbGFzc19wcm9jZXNzaW5nIGJlZm9yZQoJYW55dGhpbmcgZWxzZS4KCjIwMDAtMTAtMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogRml4ZWQgbGVhZGluZyBjb21tZW50LiBVc2UKCUxPQ0FMX0ZJTkFMX1AuCgkqIGRlY2wuYyAocHVzaF9qdm1fc2xvdCk6IFVzZSBNQVlCRV9DUkVBVEVfVkFSX0xBTkdfREVDTF9TUEVDSUZJQy4KCShnaXZlX25hbWVfdG9fbG9jYWxzKTogTGlrZXdpc2UuCgkobGFuZ19tYXJrX3RyZWUpOiBIYW5kbGUgRklFTERfREVDTC4gUmVnaXN0ZXIgYGFtJyBhbmQgYHdmbCcKCWZpZWxkcyBpbiBsYW5nX2RlY2xfdmFyLgoJKiBqYXZhLXRyZWUuaCAoREVDTF9GVU5DVElPTl9TWU5USEVUSUNfQ1RPUiwKCURFQ0xfRlVOQ1RJT05fQUxMX0ZJTkFMX0lOSVRJQUxJWkVEKTogTmV3IG1hY3Jvcy4KCShGSUVMRF9JTk5FUl9BQ0NFU1MpOiBSZW1vdmVkIHVnbHkgY2FzdCwgbWFjcm8gcmV3cml0dGVuLgoJKEZJRUxEX0lOTkVSX0FDQ0VTU19QLCBERUNMX0ZJRUxEX0ZJTkFMX0lVRCwgREVDTF9GSUVMRF9GSU5BTF9MSUlDLAoJREVDTF9GSUVMRF9GSU5BTF9JRVJSLCBERUNMX0ZJRUxEX0ZJTkFMX1dGTCk6IE5ldyBtYWNyb3MuCgkoTE9DQUxfRklOQUwpOiBSZXdyaXR0ZW4uCgkoTE9DQUxfRklOQUxfUCwgRklOQUxfVkFSSUFCTEVfUCwgQ0xBU1NfRklOQUxfVkFSSUFCTEVfUAoJTUFZQkVfQ1JFQVRFX1ZBUl9MQU5HX0RFQ0xfU1BFQ0lGSUMpOiBOZXcgbWFjcm9zLgoJKHN0cnVjdCBsYW5nX2RlY2wpOiBGaXhlZCBjb21tZW50cy4gQWRkZWQgYHN5bnRoZXRpY19jdG9yJyBhbmQKCWBpbml0X2ZpbmFsJyBmaWVsZHMuCgkoc3RydWN0IGxhbmdfZGVjbF92YXIpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIEFkZGVkIGBhbScsIGB3ZmwnLAoJYGZpbmFsX3VpZCcsIGBmaW5hbF9saWljJywgYGZpbmFsX2llcnInIGFuZCBgbG9jYWxfZmluYWwnIGZpZWxkcy4KCShUWVBFX0hBU19GSU5BTF9WQVJJQUJMRSk6IE5ldyBtYWNyby4KCShzdHJ1Y3QgbGFuZ190eXBlKTogQWRkZWQgYGFmdicgZmllbGQuCgkqIHBhcnNlLnkgKGNoZWNrX3N0YXRpY19maW5hbF92YXJpYWJsZV9hc3NpZ25tZW50X2ZsYWcpOiBOZXcgZnVuY3Rpb24uCgkocmVzZXRfc3RhdGljX2ZpbmFsX3ZhcmlhYmxlX2Fzc2lnbm1lbnRfZmxhZyk6IExpa2V3aXNlLgoJKGNoZWNrX2ZpbmFsX3ZhcmlhYmxlX2xvY2FsX2Fzc2lnbm1lbnRfZmxhZyk6IExpa2V3aXNlLgoJKHJlc2V0X2ZpbmFsX3ZhcmlhYmxlX2xvY2FsX2Fzc2lnbm1lbnRfZmxhZyk6IExpa2V3aXNlLgoJKGNoZWNrX2ZpbmFsX3ZhcmlhYmxlX2luZGlyZWN0X2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCShjaGVja19maW5hbF92YXJpYWJsZV9nbG9iYWxfYXNzaWdubWVudF9mbGFnKTogTGlrZXdpc2UuCgkoYWRkX2lubmVyX2NsYXNzX2ZpZWxkcyk6IFVzZSBMT0NBTF9GSU5BTF9QLgoJKHJlZ2lzdGVyX2ZpZWxkcyk6IEhhbmRsZSBsb2NhbCBmaW5hbHMgYW5kIGZpbmFsIHZhcmlhYmxlcy4KCShjcmFmdF9jb25zdHJ1Y3Rvcik6IFNldCBERUNMX0ZVTkNUSU9OX1NZTlRIRVRJQ19DVE9SLgoJKGRlY2xhcmVfbG9jYWxfdmFyaWFibGVzKTogQ2FsbCBNQVlCRV9DUkVBVEVfVkFSX0xBTkdfREVDTF9TUEVDSUZJQy4KCShzb3VyY2Vfc3RhcnRfamF2YV9tZXRob2QpOiBDYWxsIE1BWUJFX0NSRUFURV9WQVJfTEFOR19ERUNMX1NQRUNJRklDCglvbiBsb2NhbCBmaW5hbHMuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IExvb3AgdG8gc2V0CglUWVBFX0hBU19GSU5BTF9WQVJJQUJMRS4gQ2FsbAoJYHJlc2V0X2ZpbmFsX3ZhcmlhYmxlX2xvY2FsX2Fzc2lnbm1lbnRfZmxhZycgYW5kCglgY2hlY2tfZmluYWxfdmFyaWFibGVfbG9jYWxfYXNzaWdubWVudF9mbGFnJyBhY2NvcmRpbmdseSBiZWZvcmUKCWFuZCBhZnRlciBjb25zdHJ1Y3RvciBleHBhbnNpb24uIENhbGwKCWByZXNldF9zdGF0aWNfZmluYWxfdmFyaWFibGVfYXNzaWdubWVudF9mbGFnJwoJYmVmb3JlIGV4cGFuZGluZyA8Y2xpbml0PiBhbmQgYWZ0ZXIgY2FsbAoJYGNoZWNrX3N0YXRpY19maW5hbF92YXJpYWJsZV9hc3NpZ25tZW50X2ZsYWcnIGlmIHRoZQoJY3VycmVudF9jbGFzcyBpc24ndCBhbiBpbnRlcmZhY2UuIEFmdGVyIGFsbCBtZXRob2RzIGhhdmUgYmVlbgoJZXhwYW5kZWQsIGNhbGwgYGNoZWNrX2ZpbmFsX3ZhcmlhYmxlX2dsb2JhbF9hc3NpZ25tZW50X2ZsYWcnIGFuZAoJYGNoZWNrX3N0YXRpY19maW5hbF92YXJpYWJsZV9hc3NpZ25tZW50X2ZsYWcnIGlmIHRoZSBjdXJyZW50IGNsYXNzCglpcyBhbiBpbnRlcmZhY2UuCgkobWF5YmVfeWFua19jbGluaXQpOiBGaXhlZCB0eXBvIGluIGNvbW1lbnQuCgkoYnVpbGRfb3V0ZXJfZmllbGRfYWNjZXNzX21ldGhvZHMpOiBSZW1vdmVkIG9sZCBzYW5pdHkgY2hlY2suIFVzZQoJRklFTERfSU5ORVJfQUNDRVNTX1AuIENhbGwgTUFZQkVfQ1JFQVRFX1ZBUl9MQU5HX0RFQ0xfU1BFQ0lGSUMuCglEb24ndCBjcmVhdGUgYWNjZXNzIG1ldGhvZHMgZm9yIGZpbmFscy4KCShyZXNvbHZlX2ZpZWxkX2FjY2Vzcyk6IFVzZSBgQ0xBU1NfRklOQUxfVkFSSUFCTEVfUCcuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogTGlrZXdpc2UuIFJlc2V0IERFQ0xfRklFTERfRklOQUxfSVVEIGlmCglleGlzdGluZyBERUNMX0lOSVQgaGFzIGJlZW4gcHJvY2Vzc2VkLgoJKGphdmFfY29tcGxldGVfbGhzKTogTGlrZXdpc2UuCgkoY2hlY2tfZmluYWxfYXNzaWdubWVudCk6IEZpbHRlciBpbnB1dCBvbiBgbHZhbHVlJydzIFRSRUVfQ09ERS4KCVRlc3QgZm9yIENPTVBPTkVOVF9SRUYgdG8gZ2V0IHRvIHRoZSBGSUVMRF9ERUNMLiBJbXBsZW1lbnRlZCBuZXcKCWxvZ2ljLgoJKHBhdGNoX2Fzc2lnbm1lbnQpOiBVc2UgTE9DQUxfRklOQUxfUC4KCShmb2xkX2NvbnN0YW50X2Zvcl9pbml0KTogUmVzZXQgREVDTF9GSUVMRF9GSU5BTF9JVUQgaWYKCURFQ0xfSU5JVElBTCBpcyBudWxsaWZpZWQuCglGaXhlcyBnY2ovMTYzLgoKMjAwMC0xMC0xMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluIChwYXJzZS5jLCBwYXJzZS1zY2FuLmMpOiBDcmVhdGUgYXRvbWljYWxseS4KCgkqIE1ha2VmaWxlLmluIChwYXJzZS5jLCBwYXJzZS1zY2FuLmMpOiBMaWtld2lzZS4KCjIwMDAtMTAtMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jICh0ZW1wb3Jhcnlfb2JzdGFjayk6IFJlbW92ZS4KCShtYWtlX2NsYXNzKTogRG9uJ3QgbWVzcyB3aXRoIG9ic3Rhc2Nrcy4KCShwdXNoX2NsYXNzKTogTGlrZXdpc2UuCgkoc2V0X3N1cGVyX2luZm8pOiBMaWtld2lzZS4KCShhZGRfbWV0aG9kXzEpOiBMaWtld2lzZS4KCShhZGRfbWV0aG9kKTogTGlrZXdpc2UuCgkoYWRkX2ZpZWxkKTogTGlrZXdpc2UuCgkoYnVpbGRfdXRmOF9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9jbGFzc19yZWYpOiBMaWtld2lzZS4KCShidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogTGlrZXdpc2UuCgkoZmluaXNoX2NsYXNzKTogTGlrZXdpc2UuCgkocHVzaF9zdXBlcl9maWVsZCk6IExpa2V3aXNlLgoJKGxheW91dF9jbGFzcyk6IExpa2V3aXNlLgoJKGxheW91dF9jbGFzc19tZXRob2RzKTogTGlrZXdpc2UuCgkoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkqIGNvbnN0YW50cy5jIChnZXRfdGFnX25vZGUpOiBMaWtld2lzZS4KCShidWlsZF9jb25zdGFudF9kYXRhX3JlZik6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGdnY19wKTogUmVtb3ZlLgoJKGNvcHlfbGFuZ19kZWNsKTogVXNlIGdnY19hbGxvYy4KCShjb21wbGV0ZV9zdGFydF9qYXZhX21ldGhvZCk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShzdGFydF9qYXZhX21ldGhvZCk6IExpa2V3aXNlLgoJKGVuZF9qYXZhX21ldGhvZCk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAobGlua19oYW5kbGVyKTogVXNlIHhtYWxsb2MuCgkoZnJlZV9laF9yYW5nZXMpOiBOZXcgZnVuY3Rpb24uCgkobWV0aG9kX2luaXRfZXhjZXB0aW9ucyk6IFVzZSBpdC4KCShhZGRfaGFuZGxlcik6IFVzZSB4bWFsbG9jLgoJKGV4cGFuZF9zdGFydF9qYXZhX2hhbmRsZXIpOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkocHJlcGFyZV9laF90YWJsZV90eXBlKTogTGlrZXdpc2UuCgkoZXhwYW5kX2VuZF9qYXZhX2hhbmRsZXIpOiBMaWtld2lzZS4KCSogZXhwci5jIChwdXNoX3ZhbHVlKTogTGlrZXdpc2UuCgkoY3JlYXRlX2xhYmVsX2RlY2wpOiBMaWtld2lzZS4KCShidWlsZF9qbmlfc3R1Yik6IExpa2V3aXNlLgoJKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IExpa2V3aXNlLgoJKG5vdGVfaW5zdHJ1Y3Rpb25zKTogVXNlIHhyZWFsbG9jLgoJKGphdmFfcHVzaF9jb25zdGFudF9mcm9tX3Bvb2wpOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkocHJvY2Vzc19qdm1faW5zdHJ1Y3Rpb24pOiBMaWtld2lzZS4KCSogamF2YS10cmVlLmggKGN5Y2xpY19pbmhlcml0YW5jZV9yZXBvcnQpOiBSZW1vdmUgZHVwbGljYXRlCglkZWNsYXJhdGlvbi4KCSogamNmLXBhcnNlLmMgKGdldF9jb25zdGFudCk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShyZWFkX2NsYXNzKTogTGlrZXdpc2UuCgkoamNmX3BhcnNlKTogTGlrZXdpc2UuCgkqIGxleC5jIChleHByZXNzaW9uX29ic3RhY2spOiBSZW1vdmUuCgkoamF2YV9sZXgpOiBEb24ndCB1c2Ugb2JzdGFja19mcmVlLgoJKiBwYXJzZS5oIChleGl0X2phdmFfY29tcGxldGVfY2xhc3MpOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkoTUFOR0xFX09VVEVSX0xPQ0FMX1ZBUklBQkxFX05BTUUpOiBBZGp1c3QuCgkoTUFOR0xFX0FMSUFTX0lOSVRJQUxJWkVSX1BBUkFNRVRFUl9OQU1FX0lEKTogTGlrZXdpc2UuCgkoTUFOR0xFX0FMSUFTX0lOSVRJQUxJWkVSX1BBUkFNRVRFUl9OQU1FX1NUUklORyk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChnYW9sKTogQWRkIG1vcmUgR0Mgcm9vdHMuCgkoYWRkX2lubmVyX2NsYXNzX2ZpZWxkcyk6IEFkanVzdCBjYWxscyB0byBNQU5HTEVfKiBtYWNyb3MuCgkobG9va3VwX2ZpZWxkX3dyYXBwZXIpOiBMaWtld2lzZS4KCShvYnRhaW5faW5jb21wbGV0ZV90eXBlKTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKGJ1aWxkX2FsaWFzX2luaXRpYWxpemVyX3BhcmFtZXRlcl9saXN0KTogQWRqdXN0IGNhbGxzIHRvIE1BTkdMRV8qCgltYWNyb3MuCgkoY3JhZnRfY29uc3RydWN0b3IpOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkoc2FmZV9sYXlvdXRfY2xhc3MpOiBMaWtld2lzZS4KCShqYXZhX2NvbXBsZXRlX2NsYXNzKTogTGlrZXdpc2UuCgkoc291cmNlX2VuZF9qYXZhX21ldGhvZCk6IExpa2V3aXNlLgoJKGJ1aWxkX291dGVyX2ZpZWxkX2FjY2Vzc19tZXRob2RzKTogTGlrZXdpc2UuCgkoYnVpbGRfb3V0ZXJfbWV0aG9kX2FjY2Vzc19tZXRob2QpOiBMaWtld2lzZS4KCShtYXliZV9idWlsZF90aGlzbl9hY2Nlc3NfbWV0aG9kKTogTGlrZXdpc2UuCgkoYnVpbGRfZG90X2NsYXNzX21ldGhvZF9pbnZvY2F0aW9uKTogTGlrZXdpc2UuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogTGlrZXdpc2UuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBMaWtld2lzZS4KCShkb19tZXJnZV9zdHJpbmdfY3N0ZSk6IExpa2V3aXNlLgoJKHBhdGNoX3N0cmluZ19jc3QpOiBMaWtld2lzZS4KCShhcnJheV9jb25zdHJ1Y3Rvcl9jaGVja19lbnRyeSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9hcnJheV90eXBlKTogTGlrZXdpc2UuCgkocGFyc2Vfc2lnbmF0dXJlX3N0cmluZyk6IExpa2V3aXNlLgoJKGJ1aWxkX2phdmFfc2lnbmF0dXJlKTogTGlrZXdpc2UuCgoyMDAwLTEwLTEyICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJRml4IGZvciBQUiBnY2ovMzU2OgoJKiBnamF2YWguYyAoYWRkX2NsYXNzX2RlY2wpOiBEb24ndCBzcGVjaWFsLWNhc2UgaW5uZXIgY2xhc3Nlcy4KCShhZGRfbmFtZWxldCk6IExpa2V3aXNlLgoKMjAwMC0xMC0xMSAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AbXluZC5jb20+CgoJKiBqYXZhLXRyZWUuaDogQ29uc3RpZnkgY3VycmVudF9lbmNvZGluZy4KCSogbGFuZy5jOiBDb25zdGlmeSBjdXJyZW50X2VuY29kaW5nLgoKMjAwMC0xMC0xMCAgSmVmZiBTdHVybSAgPGplZmYuc3R1cm1AYXBwbmV0LmNvbT4KCgkqIGp2Z2VubWFpbi5jIChjbGFzc19tYW5nbGluZ19zdWZmaXgpOiBPbWl0IGAuJy4KCShtYWluKTogVXNlIGAkJyB3aGVuIE5PX0RPTExBUl9JTl9MQUJFTCBpcyBub3Qgc2V0LCBvdGhlcndpc2UgYC4nLgoKMjAwMC0xMC0xMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IFJlaW5zdGFsbCAxOTk5LTA4LTE0IEFudGhvbnkncwoJcGF0Y2guIEZpeGVzIGdjai8zNDAuCgoyMDAwLTEwLTEwICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBsZXguYyAoamF2YV9uZXdfbGV4ZXIpOiBJbml0aWFsaXplIG91dF9maXJzdCBhbmQgb3V0X2xhc3QKCWZpZWxkcy4KCSogbGV4LmggKGphdmFfbGV4ZXIpOiBBZGRlZCBvdXRfYnVmZmVyLCBvdXRfZmlyc3QsIG91dF9sYXN0LgoKMjAwMC0xMC0wOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChwb3BfY3VycmVudF9vc2IpOiBOZXcgZnVuY3Rpb24uCgkoYXJyYXlfdHlwZTopOiBVc2UgYGRpbXM6JywgY2hhbmdlZCBhY3Rpb25zCglhY2NvcmRpbmdseS4gU3VnZ2VzdGVkIGJ5IEFudGhvbnkgR3JlZW4uCgkoYXJyYXlfY3JlYXRpb25fZXhwcmVzc2lvbjopOiBVc2VkIHBvcF9jdXJyZW50X29zYi4KCShjYXN0X2V4cHJlc3Npb246KTogTGlrZXdpc2UuCgkoc2VhcmNoX2FwcGxpY2FibGVfbWV0aG9kX2xpc3QpOiBGaXhlZCBpbmRlbnRhdGlvbi4KCjIwMDAtMTAtMDggIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoYXJyYXlfdHlwZV9saXRlcmFsKTogUmVtb3ZlIHByb2R1Y3Rpb24uCgkodHlwZV9saXRlcmFscyk6IFJlZmVyIHRvIGFycmF5X3R5cGUsIG5vdCBhcnJheV90eXBlX2xpdGVyYWwuCgoyMDAwLTEwLTA3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCglQYXRjaCBjb250cmlidXRlZCBieSBDb3JleSBNaW55YXJkLgoJKiBkZWNsLmMgKGNoZWNrX2xvY2FsX25hbWVkX3ZhcmlhYmxlKTogTmV3IGZ1bmN0aW9uLgoJKHRyZWUgY2hlY2tfbG9jYWxfdW5uYW1lZF92YXJpYWJsZSk6IExpa2V3aXNlLgoJKGZpbmRfbG9jYWxfdmFyaWFibGUpOiBTcGxpdHRlZC4gQ2FsbCBjaGVja19sb2NhbF97dW59bmFtZWRfdmFyaWFibGUuCgoyMDAwLTEwLTA3ICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzcyk6IEhhbmRsZSBjYXNlIHdoZXJlIHN1cGVyY2xhc3MgY2FuJ3QgYmUKCWxheWVkIG91dCB5ZXQuCgoyMDAwLTEwLTA3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBNYWtlZmlsZS5pbiAoa2V5d29yZC5oKTogUmVmZXIgdG8gR05VIEZUUCBzaXRlIGZvciB1cGRhdGVkCglncGVyZi4KCjIwMDAtMTAtMDUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGp2c3BlYy5jIChqdmdlbm1haW5fc3BlYyk6IEFkZGVkIGAtZmRvbGxhcnMtaW4taWRlbnRpZmllcnMnLgoJKiBqdmdlbm1haW4uYyAoY2xhc3NfbWFuZ2xpbmdfcHJlZml4KTogUmVtb3ZlZC4KCShjbGFzc19tYW5nbGluZ19zdWZmaXgpOiBOZXcgZ2xvYmFsLgoJKG1haW4pOiBVc2UgaXQuCgkqIGdqYXZhaC5jIChjeHhfa2V5d29yZF9zdWJzdCk6IE1hbmdsZSBDKysga2V5d29yZHMgYnkgYXBwZW5kaW5nCglgJCcuCgkocHJpbnRfbWV0aG9kX2luZm8pOiBIYW5kbGUgb3ZlcnJpZGVzIGZvciBzdGF0aWMgYW5kIGZpbmFsCgltZXRob2RzLgoJKHByb2Nlc3NfZmlsZSk6IEdlbmVyYXRlIGRlY2xhcmF0aW9uIGZvciBjbGFzcyBvYmplY3QgZmllbGQuCgkqIGNsYXNzLmMgKGN4eF9rZXl3b3Jkcyk6IE5ldyBhcnJheS4KCSh1dGY4X2NtcCk6IE5ldyBmdW5jdGlvbi4KCShjeHhfa2V5d29yZF9wKTogTmV3IGZ1bmN0aW9uLgoJKGxheW91dF9jbGFzc19tZXRob2QpOiBNYW5nbGUgQysrIGtleXdvcmRzIGJ5IGFwcGVuZGluZyBgJCcuCgkobWFuZ2xlX2ZpZWxkKTogTmV3IGZ1bmN0aW9uLgoJKG1hbmdsZV9jbGFzc19maWVsZCk6IFVzZSBtYW5nbGVfZmllbGQuICBNYW5nbGUgY2xhc3MgbmFtZSBhcwoJYGNsYXNzJCcuCgkobWFuZ2xlX3N0YXRpY19maWVsZCk6IFVzZSBtYW5nbGVfZmllbGQuCgoyMDAwLTEwLTAzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZmluZF9sb2NhbF92YXJpYWJsZSk6IFJlbW92ZWQgdW5jZXNzYXJ5IHR5cGUgY2hlY2sgYW5kCglmaXhlZCByYW5nZSBjaGVjayB0eXBvLiBGcm9tIENvcmV5IE1pbnlhcmQuCgoyMDAwLTA5LTEzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ2l2ZV9uYW1lX3RvX2xvY2Fscyk6IE5ldyBsb2NhbCBgY29kZV9vZmZzZXQnLiBDYWxsCglgbWF5YmVfYWRqdXN0X3N0YXJ0X3BjJy4KCSogZXhwci5jIChub3RlX2luc3RydWN0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfYnl0ZV9jb2RlKTogRG9uJ3QgY29sbGVjdCBpbnNuIHN0YXJ0cyBoZXJlLgoJKHBlZWtfb3Bjb2RlX2F0X3BjKTogTmV3IGZ1bmN0aW9uLgoJKG1heWJlX2FkanVzdF9zdGFydF9wYyk6IExpa2V3aXNlLgoJKiBqYXZhLXRyZWUuaCAobWF5YmVfYWRqdXN0X3N0YXJ0X3BjKTogRGVjbGFyZS4KCShub3RlX2luc3RydWN0aW9ucyk6IExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYyAocGFyc2VfY2xhc3NfZmlsZSk6IENhbGwgYG5vdGVfaW5zdHJ1Y3Rpb25zJy4KCjIwMDAtMDktMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoZmllbGRfYWNjZXNzOik6IEZpeGVkIGluZGVudGF0aW9uLgoJKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBQcm9wZXJseSBxdWFsaWZ5IGB0aGlzLmFbYl0uYycuCgoyMDAwLTA5LTA3ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJRml4IGZvciBQUiBnY2ovMzA3OgoJKiBwYXJzZS55IChwYXRjaF9iaW5vcCk6IFVzZSBKTlVNRVJJQ19UWVBFX1AsIG5vdAoJSlBSSU1JVElWRV9UWVBFX1AsIGZvciBhcml0aG1ldGljIG9wZXJhdG9ycy4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IEluZGVudGF0aW9uIGZpeC4KCSh0cnlfYnVpbHRpbl9hc3NpZ25jb252KTogSGFuZGxlIGJvb2xlYW4gc3BlY2lhbGx5LiAgRml4ZWQgdHlwby4KCSh2YWxpZF9idWlsdGluX2Fzc2lnbmNvbnZfaWRlbnRpdHlfd2lkZW5pbmdfcCk6IEhhbmRsZSBib29sZWFuLgoJKGRvX3VuYXJ5X251bWVyaWNfcHJvbW90aW9uKTogQ2xlYW5lZCB1cCBjb2RlLgoJKHZhbGlkX2Nhc3RfdG9fcCk6IEhhbmRsZSBib29sZWFuIGNvcnJlY3RseS4KCjIwMDAtMDktMjcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChqYXZhX3JlYWRfdW5pY29kZSk6IFJlc2V0IGJzX2NvdW50IHdoZW4gZmluaXNoZWQgd2l0aAoJYFx1JyBzZXF1ZW5jZS4KCjIwMDAtMTAtMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJQ29udmVydCB0byBHQy4KCSogTWFrZS1sYW5nLmluIChzLWphdmEpOiBEb24ndCBkZXBlbmQgb24gZ2djLWNhbGxiYWNrcy5vLgoJKiBNYWtlZmlsZS5pbiAoQkFDS0VORCk6IERvbid0IGluY2x1ZGUgZ2djLWNhbGxiYWNrcy5vLgoJKHR5cGVjay5vKTogRGVwZW5kIG9uIGdnYy5oLgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kXzEpOiBVc2UgR0MgZnVuY3Rpb25zIGZvciBhbGxvY2F0aW9uLgoJKGluaXRfY2xhc3NfcHJvY2Vzc2luZyk6IFJlZ2lzdGVyIHJvb3RzLgoJKiBkZWNsLmMgKGdnY19wKTogU2V0IHRvIDEuCgkocGVuZGluZ19sb2NhbF9kZWNscyk6IE1ha2UgaXQgc3RhdGljLgoJKHB1c2hfanZtX3Nsb3QpOiBVc2UgR0MgZnVuY3Rpb25zIGZvciBhbGxvY2F0aW9uLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUmVnaXN0ZXIgcm9vdHMuCgkoZ2l2ZV9uYW1lX3RvX2xvY2Fscyk6IFVzZSBHQyBmdW5jdGlvbnMgZm9yIGFsbG9jYXRpb24uCgkobGFuZ19tYXJrX3RyZWUpOiBOZXcgZnVuY3Rpb24uCgkqIGphdmEtdHJlZS5oIChNQVlCRV9DUkVBVEVfVFlQRV9UWVBFX0xBTkdfU1BFQ0lGSUMpOiBVc2UgR0MKCWZ1bmN0aW9ucyBmb3IgYWxsb2NhdGlvbi4KCSogamNmLXBhcnNlLmMgKGpjZl9wYXJzZV9zb3VyY2UpOiBVc2UgZ2djX3N0cmR1cC4KCSogbGV4LmMgKGphdmFfbGV4KTogVXNlIGJ1aWxkX3N0cmluZywgcmF0aGVyIHRoYW4gcmVwbGljYXRpbmcgaXQKCWlubGluZS4KCSogcGFyc2UueSAoZ29hbCk6IEFkZCBtb3JlIHJvb3RzLgoJKG1hcmtfcGFyc2VyX2N0eHQpOiBOZXcgZnVuY3Rpb24uCgkqIHR5cGVjay5jOiBJbmNsdWRlIGdnYy5oLgoKMjAwMC0wOS0yOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChtYXliZV95YW5rX2NsaW5pdCk6IEFsc28ga2VlcCA8Y2xpbml0PiBpZiBpdHMgYm9keQoJY29udGFpbnMgc29tZXRoaW5nIGVsc2UgdGhhbiBNT0RJRllfRVhQUi4KCjIwMDAtMDktMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKEpBVkFfU1JDUyk6IEluY2x1ZGUgamF2YS10cmVlLmguCgkqIE1ha2VmaWxlLmluIChwYXJzZS5vKTogRGVwZW5kIG9uIGdnYy5oLgoJKGNsYXNzLm8pOiBMaWtld2lzZS4KCShjb25zdGFudHMubyk6IExpa2V3aXNlLgoJKGRlY2wubyk6IExpa2V3aXNlLgoJKGV4cHIubyk6IExpa2V3aXNlLgoJKGpjZi1wYXJzZS5vKTogTGlrZXdpc2UuCgkoamNmLXdyaXRlLm8pOiBMaWtld2lzZS4KCShtYW5nbGUubyk6IExpa2V3aXNlLgoJKiBjbGFzcy5jOiBJbmNsdWRlIGdnYy5oLgoJKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBSZWdpc3RlciBHQyByb290cy4KCShsYXlvdXRfY2xhc3MpOiBMaWtld2lzZS4KCShpbml0X2NsYXNzX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCSogY29uc3RhbnRzLmM6IEluY2x1ZGUgZ2djLmguCgkoY3VycmVudF9jb25zdGFudF9wb29sX2RhdGFfcmVmKTogUmVtb3ZlLgoJKHRhZ19ub2Rlcyk6IE1vdmUgaXQgdG8gLi4uCgkoZ2V0X3RhZ19ub2RlKTogLi4uIGhlcmUuICBSZWdpc3RlciBHQyByb290cy4KCSogZGVjbC5jOiBJbmNsdWRlIGdnYy5oLiAgUmVtb3ZlIG1hbnkgZ2xvYmFsIHRyZWUgZGVmaW5pdGlvbnMuCgkodGhyb3dfbm9kZSk6IERlZmluZS4KCShqYXZhX2dsb2JhbF90cmVlcyk6IExpa2V3aXNlLgoJKHByZWRlZl9maWxlbmFtZXMpOiBNYWtlIHRoZSBzaXplIGEgY29uc3RhbnQuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDYWxsIGluaXRfamNmX3BhcnNlLiAgUmVnaXN0ZXIgR0Mgcm9vdHMuCgkqIGV4cHIuYzogSW5jbHVkZSBnZ2MuaC4KCShpbml0X2V4cHJfcHJvY2Vzc2luZyk6IFJlZ2lzdGVyIEdDIHJvb3RzLgoJKGJ1aWxkX2ludm9rZWludGVyZmFjZSk6IExpa2V3aXNlLgoJKiBqYXZhLXRyZWUuaDogUmVwbGFjZSBleHRlcm4gdHJlZSBkZWNsYXJhdGlvbnMgd2l0aCBtYWNyb3MuCgkoamF2YV9nbG9iYWxfdHJlZXMpOiBOZXcgdmFyaWFibGUuCgkoamF2YV90cmVlX2luZGV4KTogTmV3IGVudW1lcmF0aW9uLgoJKGluaXRfamNmX3BhcnNlKTogRGVjbGFyZS4KCSogamNmLXBhcnNlLmM6IEluY2x1ZGUgZ2djLmguCgkoY3VycmVudF9jbGFzcyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShtYWluX2NsYXNzKTogTGlrZXdpc2UuCgkoYWxsX2NsYXNzX2xpc3QpOiBMaWtld2lzZS4KCShwcmVkZWZpbmVkX2ZpbGVuYW1lX3ApOiBBZGp1c3QgZm9yIGNvbnN0YW50IHNpemUgb2YKCXByZWRlZl9maWxlbmFtZXMuCgkoaW5pdF9qY2ZfcGFyc2UpOiBOZXcgZnVuY3Rpb24uCgkqIGpjZi13cml0ZS5jOiBJbmNsdWRlIGdnYy5oLgoJKGdlbmVyYXRlX2NsYXNzZmlsZSk6IFJlZ2lzdGVyIEdDIHJvb3RzLgoJKGFwcGVuZF9zeW50aGV0aWNfYXR0cmlidXRlKTogTGlrZXdpc2UuCgkoYXBwZW5kX2lubmVyY2xhc3NfYXR0cmlidXRlX2VudHJ5KTogTGlrZXdpc2UuCgkqIGxhbmcuYzogSW5jbHVkZSBnZ2MuaC4KCShsYW5nX3ByaW50X2Vycm9yKTogUmVnaXN0ZXIgR0Mgcm9vdHMuCgkqIHBhcnNlLmggKHN0cnVjdCBwYXJzZXJfY3R4dCk6IFJlbmFtZSBmaWVsZHMgdG8gYXZvaWQgY29uZmxpY3RzCgl3aXRoIG1hY3Jvcy4KCSogcGFyc2UueTogSW5jbHVkZSBnZ2MuaC4KCSh3Zmxfb3BlcmF0b3IpOiBSZW1vdmUuCgkoZ29hbCk6IFJlZ2lzdGVyIEdDIHJvb3RzLgoJKGphdmFfcG9wX3BhcnNlcl9jb250ZXh0KTogQWRqdXN0IGZvciBuZXcgZmllbGQgbmFtZXMuCgkoamF2YV9wYXJzZXJfY29udGV4dF9zYXZlX2dsb2JhbCk6IExpa2V3c2UuCgkoamF2YV9wYXJzZXJfY29udGV4dF9yZXN0b3JlX2dsb2JhbCk6IExpa2V3aXNlLgoJKGphdmFfcGFyc2VyX2NvbnRleHRfc3VzcGVuZCk6IExpa2V3aXNlLgoJKGphdmFfcGFyc2VyX2NvbnRleHRfcmVzdW1lKTogTGlrZXdpc2UuCgkodmVyaWZ5X2NvbnN0cnVjdG9yX2NpcmN1bGFyaXR5KTogUmVnaXN0ZXIgR0Mgcm9vdHMuCgkobG9va3VwX2NsKTogTGlrZXdpc2UuCgkoamF2YV9yZW9yZGVyX2ZpZWxkcyk6IExpa2V3aXNlLgoJKGJ1aWxkX2N1cnJlbnRfdGhpcyk6IExpa2V3aXNlLgoJKGNsYXNzX2luX2N1cnJlbnRfcGFja2FnZSk6IExpa2V3aXNlLgoJKGFyZ3VtZW50X3R5cGVzX2NvbnZlcnRpYmxlKTogTGlrZXdpc2UuCgkocGF0Y2hfY2FzdCk6IFJlbmFtZSB3Zmxfb3AgcGFyYW1ldGVyIHRvIGF2b2lkIG1hY3JvIGNvbmZsaWN0cy4KCjIwMDAtMDktMTQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGxleC5oOiBVc2UgSEFWRV9JQ09OVl9ILCBub3QgSEFWRV9JQ09OVi4KCjIwMDAtMDktMTMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGpjZi1wYXJzZS5jOiBJbmNsdWRlIDxsb2NhbGUuaD4uCgkqIGp2LXNjYW4uYzogSW5jbHVkZSA8bG9jYWxlLmg+LgoKMjAwMC0wOS0xMiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZXhwci5jIChwb3BfdHlwZV8wKTogUmV0dXJuIGBPYmplY3QnIGlmIHRyeWluZyB0byBtZXJnZSB0d28KCWludGVyZmFjZSB0eXBlcy4KCSogdmVyaWZ5LmMgKG1lcmdlX3R5cGVzKTogRG9uJ3QgcmV0dXJuIGBUWVBFX1VOS05PV04nIGZvcgoJaW50ZXJmYWNlIHR5cGVzOyBgT2JqZWN0JyBpcyBhbHdheXMgYSB2YWxpZCBzdXBlcnR5cGUuCgoyMDAwLTA5LTEyICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJRml4IGZvciBQUiBnY2ovMzM6CgkqIGp2LXNjYW4uYyAoaGVscCk6IERvY3VtZW50IC0tZW5jb2RpbmcuCgkob3B0aW9ucyk6IEFkZGVkIGBlbmNvZGluZycgZW50cnkuCgkoT1BUX0VOQ09ESU5HKTogTmV3IGRlZmluZS4KCShtYWluKTogSGFuZGxlIC0tZW5jb2RpbmcuCglJbmNsdWRlIDxsYW5naW5mby5oPiBpZiBubF9sYW5naW5mbyBleGlzdHMuCgkqIGxhbmctb3B0aW9ucy5oOiBEb2N1bWVudCAtLWNsYXNzcGF0aCwgLS1DTEFTU1BBVEgsIC0tbWFpbiwgYW5kCgktLWVuY29kaW5nLgoJKiBqY2YtcGFyc2UuYyBJbmNsdWRlIDxsYW5naW5mby5oPiBpZiB3ZSBoYXZlIG5sX2xhbmdpbmZvLgoJKHBhcnNlX3NvdXJjZV9maWxlKTogQ29ycmVjdGx5IGNhbGwgamF2YV9pbml0X2xleC4gIEFkZGVkIGBmaW5wdXQnCglhcmd1bWVudC4gIFVzZSBubF9sYW5naW5mbyB0byBkZXRlcm1pbmUgZGVmYXVsdCBlbmNvZGluZy4KCSogamF2YS10cmVlLmggKGN1cnJlbnRfZW5jb2RpbmcpOiBEZWNsYXJlLgoJKiBwYXJzZS55IChqYXZhX3BhcnNlcl9jb250ZXh0X3Jlc3RvcmVfZ2xvYmFsKTogRG9uJ3QgcmVzdG9yZQoJYGZpbnB1dCcuCgkoamF2YV9wYXJzZXJfY29udGV4dF9zYXZlX2dsb2JhbCk6IERvbid0IHNldCBgZmlucHV0JyBmaWVsZC4KCShqYXZhX3BvcF9wYXJzZXJfY29udGV4dCk6IERvbid0IHJlc3RvcmUgYGZpbnB1dCcuICBGcmVlIG9sZCBsZXhlcgoJaWYgcmVxdWlyZWQuCgkqIGxhbmcuYyAoY3VycmVudF9lbmNvZGluZyk6IE5ldyBnbG9iYWwuCgkobGFuZ19kZWNvZGVfb3B0aW9uKTogUmVjb2duaXplIGAtZmVuY29kaW5nPScuCgkoZmluaXNoX3BhcnNlKTogRG9uJ3QgY2xvc2UgZmlucHV0LgoJKiBwYXJzZS5oIChzdHJ1Y3QgcGFyc2VyX2N0eHQpOiBSZW1vdmVkIGBmaW5wdXQnIGFuZAoJYHVuZ2V0X3V0ZjhfdmFsdWUnIGZpZWxkcy4gIEFkZGVkIGBsZXhlcicgZmllbGQuCgkoamF2YV9pbml0X2xleCk6IEZpeGVkIGRlY2xhcmF0aW9uLgoJKiBsZXguYyAoamF2YV9uZXdfbGV4ZXIpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9kZXN0cm95X2xleGVyKTogTGlrZXdpc2UuCgkoamF2YV9yZWFkX2NoYXIpOiBBZGRlZCBgbGV4JyBhcmd1bWVudC4gIEhhbmRsZSBpY29udiBjYXNlLgoJKGphdmFfcmVhZF91bmljb2RlKTogQWRkZWQgYGxleCcgYXJndW1lbnQuICBDb3VudCBiYWNrc2xhc2hlcyBpbgoJbGV4ZXIgc3RydWN0dXJlLgoJKGphdmFfaW5pdF9sZXgpOiBBZGRlZCBgZmlucHV0JyBhbmQgYGVuY29kaW5nJyBhcmd1bWVudHMuICBTZXQKCWBsZXhlcicgZmllbGQgaW4gY3R4cC4KCShCQURfVVRGOF9WQUxVRSk6IFJlbW92ZWQuCgkoamF2YV9sZXgpOiBIYW5kbGUgc2VlaW5nIFVFT0YgaW4gdGhlIG1pZGRsZSBvZiBhIHN0cmluZyBsaXRlcmFsLgoJKiBsZXguaDogSW5jbHVkZSA8aWNvbnYuaD4gaWYgSEFWRV9JQ09OViBkZWZpbmVkLgoJKGphdmFfbGV4ZXIpOiBOZXcgc3RydWN0dXJlLgoJKFVOR0VUQyk6IFJlbW92ZWQuCgkoR0VUQyk6IFJlbW92ZWQuCgkoREVGQVVMVF9FTkNPRElORyk6IE5ldyBkZWZpbmUuCgkoamF2YV9kZXN0cm95X2xleGVyKTogRGVjbGFyZS4KCjIwMDAtMDktMTIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCglGaXggZm9yIFBSIGdjai8zNDM6CgkqIGxleC5jIChqYXZhX2luaXRfbGV4KTogSW5pdGlhbGl6ZSBqYXZhX2lvX3NlcmlhbGl6YWJsZS4KCSogcGFyc2UueSAoamF2YV9pb19zZXJpYWxpemFibGUpOiBOZXcgZ2xvYmFsLgoJKHZhbGlkX3JlZl9hc3NpZ25jb252X2Nhc3RfcCk6IEFuIGFycmF5IGNhbiBiZSBjYXN0IHRvCglzZXJpYWxpemFibGUuCgoyMDAwLTA5LTEwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBkZWNsLmMsIGV4cHIuYzogSW5jbHVkZSBkZWZhdWx0cy5oIGlmIG5vdCBhbHJlYWR5IGluY2x1ZGVkLgoJRG9uJ3QgZGVmaW5lIHRoZSAqX1RZUEVfU0laRSBtYWNyb3MuCgoyMDAwLTA5LTA5ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9hcnJheV90eXBlKTogQ29ycmVjdCBmaXJzdCBwYXJhbWV0ZXIKCWluIEFESlVTVF9GSUVMRF9BTElHTiBpbnZvY2F0aW9uLgoKMjAwMC0wOS0wNiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogbGFuZy1zcGVjcy5oOiBBbHNvIHJlY29nbml6ZSBgLWZlbWl0LWNsYXNzLWZpbGVzJy4KCjIwMDAtMDktMDUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogdmVyaWZ5LmMgKG1lcmdlX3R5cGVzKTogTG9hZCB0aGUgdHlwZXMgdG8gbWVyZ2UgaWYgbmVjZXNzYXJ5LgoKMjAwMC0wOS0wMiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CgoJKiBqY2YtaW8uYzogSW5jbHVkZSB6bGliLmguCgkob3Blbl9pbl96aXApOiBSZWFkIGNvbXByZXNzZWQgY2xhc3MgZmlsZSBhcmNoaXZlcy4KCSogemlwZmlsZS5oIChaaXBEaXJlY3RvcnkpOiBBZGQgdW5jb21wcmVzc2VkX3NpemUgYW5kCgljb21wcmVzc2lvbl9tZXRob2QgZmllbGRzLgoJKiB6ZXh0cmFjdC5jIChyZWFkX3ppcF9hcmNoaXZlKTogQ29sbGVjdCBmaWxlIGNvbXByZXNzaW9uIGluZm8uCgoyMDAwLTA4LTE1ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIHBhcnNlLnkgKGRvX3Jlc29sdmVfY2xhc3MpOiBBbHNvIGV4cGxvcmUgc3VwZXJjbGFzc2VzIG9mCglpbnRlcm1lZGlhdGUgZW5jbG9zaW5nIGNvbnRleHRzIHdoZW4gc2VhcmNoaW5nIGZvciBpbm5lciBjbGFzc2VzLgoKMjAwMC0wOC0xMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55ICh2YXJpYWJsZV9kZWNsYXJhdG9yX2lkOik6IEJldHRlciBlcnJvciBtZXNzYWdlLgoJKGV4cHJlc3Npb25fc3RhdGVtZW50Oik6IFVzZSBZWU5PVF9UV0lDRS4KCShjYXN0X2V4cHJlc3Npb246KTogTGlrZXdpc2UuCgkoYXNzaWdubWVudDopOiBMaWtld2lzZS4KCjIwMDAtMDgtMTEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoZG9fbWVyZ2Vfc3RyaW5nX2NzdGUpOiBOZXcgbG9jYWxzLiBDcmVhdGUgbmV3CglTVFJJTkdfQ1NUcyBlYWNoIHRpbWUsIHVzZSBtZW1jcHkuIEZpeGVzIGdjai8zMTEuCgoyMDAwLTA4LTA3ICBIYW5zIEJvZWhtICA8Ym9laG1AYWNtLm9yZz4KCgkqIGJvZWhtLmMgKG1hcmtfcmVmZXJlbmNlX2ZpZWxkcyk6IFNldCBtYXJraW5nIGJpdHMgZm9yIGFsbCB3b3JkcyBpbgoJYSBtdWx0aXBsZS13b3JkIHJlY29yZC4KCShnZXRfYm9laG1fdHlwZV9kZXNjcmlwdG9yKTogVXNlIHRoZSBwcm9jZWR1cmUgbWFya2luZyBkZXNjcmlwdG9yIGZvcgoJamF2YS5sYW5nLkNsYXNzLgoKMjAwMC0wOC0zMSAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYzEkKGV4ZWV4dCksIGdjamgkKGV4ZWV4dCksIGp2LXNjYW4kKGV4ZWV4dCksCglqY2YtZHVtcCQoZXhlZXh0KSk6IE1ha2UgcGFyYWxsZWwgc2FmZS4KCjIwMDAtMDgtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGpjZi1wYXJzZS5jIChzZXRfc291cmNlX2ZpbGVuYW1lKTogQ29uc3RpZnkgYSBjaGFyICouCgkqIGpjZi13cml0ZS5jIChhcHBlbmRfaW5uZXJjbGFzc2VzX2F0dHJpYnV0ZSwKCW1ha2VfY2xhc3NfZmlsZV9uYW1lKTogQ29uc3RpZnkgYSBjaGFyICouICBEb24ndCByZWN5Y2xlIGEKCXZhcmlhYmxlIGZvciBhbiB1bnJlbGF0ZWQgcHVycG9zZS4KCSogcGFyc2UueTogKGJ1aWxkX2FsaWFzX2luaXRpYWxpemVyX3BhcmFtZXRlcl9saXN0KTogQ29uc3RpZnkgYSBjaGFyICouCgkoYnJlYWtkb3duX3F1YWxpZmllZCk6IERvIG5vdCBtb2RpZnkgSURFTlRJRklFUl9QT0lOVEVSIHN0cmluZ3MuCgoyMDAwLTA4LTI5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoY2FuX3dpZGVuX3JlZmVyZW5jZV90byk6IEZpeGVkIGluZGVudGF0aW9uLgoJKiBqYXZhLXRyZWUuaCAoQ0xBU1NfTUVUSE9EX0NIRUNLRURfUCk6IEFkZGVkIGxlYWRpbmcgY29tbWVudC4KCSogcGFyc2UueTogYGZpbml0JCcgcmVwbGFjZXMgYCRmaW5pdCQnIGluIGNvbW1lbnRzLgoJKHRyeV9idWlsdGluX2Fzc2lnbmNvbnYpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuCgoyMDAwLTA4LTI1ICBHcmVnIE1jR2FyeSAgPGdyZWdAbWNnYXJ5Lm9yZz4KCgkqIGdqYXZhaC5jIChjeHhfa2V5d29yZF9zdWJzdCk6IFVzZSBBUlJBWV9TSVpFLgoKMjAwMC0wOC0yNCAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiBsYW5nLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IFVzZSBBUlJBWV9TSVpFLgoJKiBwYXJzZS55IChCSU5PUF9MT09LVVApOiBMaWtld2lzZS4KCjIwMDAtMDgtMjIgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogamF2YW9wLmggKFdPUkRfVE9fSU5UKTogTWFzayBsb3dlciAzMiBiaXRzIG9mIGEgandvcmQgYmVmb3JlCglzaWduIGV4dGVuZGluZy4gRml4ZXMgZ2NqLzMyMS4KCSogamNmLXBhcnNlLmMgKGdldF9jb25zdGFudCk6IE1hc2sgbG93ZXIgMzIgYml0cyBvZiBhIGppbnQgYmVmb3JlCgljb21iaW5pbmcgdG8gbWFrZSBhIGpsb25nLiBGaXhlcyBnY2ovMzIxLgoKMjAwMC0wOC0yMSAgTml4ICA8bml4QGVzcGVyaS5kZW1vbi5jby51az4KCgkqIGxhbmctc3BlY3MuaDogRG8gbm90IHByb2Nlc3MgLW8gb3IgcnVuIHRoZSBhc3NlbWJsZXIgaWYKCS1mc3ludGF4LW9ubHkuCgoyMDAwLTA4LTE2ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9qYXZhX2FycmF5X3R5cGUpOiBSZXdyaXRlIGNvZGUgdG8gZG8gYXJyYXkKCWFsaWdubWVudC4gIFRha2UgaW50byBhY2NvdW50IGJhY2stZW5kIG1hY3JvcyB3aGVuIGFsaWduaW5nIGFycmF5CglkYXRhLiAgUmVtb3ZlIHNldHRpbmcgb2YgVFlQRV9VU0VSX0FMSUdOOyBKYXZhIGRvZXNuJ3QgYWxsb3cgdGhlCgl1c2VyIHRvIHNldCBhbGlnbm1lbnQuIEZpeGVzIGdjai8yNTIgYW5kIDE2MC4KCjIwMDAtMDgtMDkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGNoZWNrX2Fic3RyYWN0X21ldGhvZF9kZWZpbml0aW9ucyk6IE5vdyByZXR1cm4gYGludCcuCglDaGVjayBpbXBsZW1lbnRlZCBpbnRlcmZhY2VzLiAgRml4ZXMgUFIgZ2NqLzMwNS4KCgkqIHBhcnNlLnkgKHBhdGNoX3N3aXRjaF9zdGF0ZW1lbnQpOiBEaXNhbGxvdyBgbG9uZycgaW4gc3dpdGNoCglleHByZXNzaW9ucy4gIEZpeGVzIFBSIGdjai8zMTAuCgoyMDAwLTA4LTE1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZmluaXRfbGVnX2lkZW50aWZpZXJfbm9kZSk6IE5ldyBnbG9iYWwuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBVc2UgYGZpbml0JCcgdG8gaW5pdGlhbGl6ZQoJZmluaXRfaWRlbnRpZmllcl9ub2RlLiBVc2UgYCRmaW5pdCQnIHRvIGluaXRpYWxpemUKCWZpbml0X2xlZ19pZGVudGlmaWVyX25vZGUuCgkqIGV4cHIuYyAoZXhwYW5kX2phdmFfZmllbGRfb3ApOiBVc2UgSURfRklOSVRfUC4KCSogamF2YS10cmVlLmggKGZpbml0X2lkZW50aWZpZXJfbm9kZSk6IENoYW5nZWQgYXR0YWNoZWQgY29tbWVudC4KCShmaW5pdF9sZWdfaWRlbnRpZmllcl9ub2RlKTogTmV3IGRlY2xhcmF0aW9uLgoJKElEX0ZJTklUX1ApOiBUYWtlIGZpbml0X2lkZW50aWZpZXJfbm9kZSBhbmQKCWZpbml0X2xlZ19pZGVudGlmaWVyX25vZGUgaW50byBhY2NvdW50LiBUaGlzIGlzIGEgYmFja3dhcmQKCWNvbXBhdGliaWxpdHkgaGFjay4KCjIwMDAtMDgtMTQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2NvbmRpdGlvbmFsKTogUmUtaW5zdGFsbGVkIGxvc3QKCUphbiA2IDIwMDAgcGF0Y2guCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBDaGVjayBgbmFyZ3MnIGJlZm9yZSBlbWl0dGluZyBpdC4KCSogdmVyaWZ5LmMgKG1lcmdlX3R5cGVfc3RhdGUpOiBGaXhlZCB0eXBvLgoJKiBDaGFuZ2VMb2c6IEZpeGVkIHR5cG8gaW4gc29tZSBqY2Ytd3JpdGUuYyBlbnRyaWVzIG1lbnRpb25pbmcKCWdlbmVyYXRlX2J5dGVjb2RlX3tjb25kaXRpb25hbCxpbnNuc30uCgoyMDAwLTA4LTEzICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IEFkZCBjYXNlIGZvciBCSVRfRklFTERfUkVGIChyZXF1aXJlZAoJZm9yIC1wZyBidWlsZHMpLgoKMjAwMC0wOC0xMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChtYXliZV9sYXlvdXRfc3VwZXJfY2xhc3MpOiBGaXhlZCBpbmRlbnRhdGlvbi4KCSogamF2YS10cmVlLmggKENMQVNTX01FVEhPRF9DSEVDS0VEX1ApOiBOZXcgbWFjcm8uCgkoamF2YV9jaGVja19tZXRob2RzKTogTmV3IGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NvbnN0YW50KTogTGV0IGBjaGFyX2xlbicgZ28gdXAgdG8gMy4gVXNlIGBzdHInCglpbnN0ZWFkIG9mIGBzdHJfcHRyJy4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogRW1pdCBudW1iZXIgdGhlIG9mIGFyZ3MKCW9mIGEgYGludm9rZWludGVyZmFjZScgYXQgdGhlIHJpZ2h0IHRpbWUuCgkqIHBhcnNlLmggKFdGTF9TVFJJUF9CUkFDS0VUKTogTmV3IG1hY3JvLgoJKFNFVF9UWVBFX0ZPUl9SRVNPTFVUSU9OKTogVXNlIGl0LgoJKiBwYXJzZS55IChidWlsZF91bnJlc29sdmVkX2FycmF5X3R5cGUpOiBSZXVzZSBgdHlwZV9vcl93ZmwnLgoJKGNoZWNrX2NsYXNzX2ludGVyZmFjZV9jcmVhdGlvbik6IERvbid0IGNoZWNrIGZvciBjcm9zcyBwYWNrYWdlCglpbm5lcmNsYXNzIG5hbWUgY2xhc2hlcy4KCShtZXRob2RfaGVhZGVyKTogQmVoYXZlIHByb3Blcmx5IGlmIE1ERUNMIGlzIGBlcnJvcl9tYXJrX25vZGUnLgoJKG1ldGhvZF9kZWNsYXJhdG9yKTogUmV0dXJuIGBlcnJvcl9tYXJrX25vZGUnIGlmIGJvZ3VzIGN1cnJlbnQKCWNsYXNzLgoJKHJlc29sdmVfY2xhc3MpOiBBcHBseSBXRkxfU1RSSVBfQlJBQ0tFVCBvbiBgY2wnIGlmIG5lY2Vzc2FyeS4KCShyZXNvbHZlX2FuZF9sYXlvdXQpOiBOZXcgbG9jYWwgYGRlY2xfdHlwZScsIHNldCBhbmQgdXNlZC4gQ2FsbAoJamF2YV9jaGVja19tZXRob2RzLgoJKGphdmFfY2hlY2tfbWV0aG9kcyk6IE5ldyBtZXRob2QuCgkoamF2YV9sYXlvdXRfY2xhc3Nlcyk6IFVzZSBpdC4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBObyBFSCBjaGVjayBuZWNlc3NhcnkgaW4KCWFjY2VzcyQ8bj4uCgkoamF2YV9jb21wbGV0ZV9saHMpOiBVc2UgVkFSX0RFQ0wncyBERUNMX0lOSVRJQUwgd2hlbiBldmFsdWF0aW5nCglgY2FzZScgc3RhdGVtZW50LgoJKHBhdGNoX2Fzc2lnbm1lbnQpOiBTZXQgREVDTF9JTklUSUFMIG9uIGludGVncmFsIGZpbmFsIGxvY2FsLgoKMjAwMC0wOC0wOCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqYXZhLXRyZWUuaCAoZmxhZ19leHRyYW5lb3VzX3NlbWljb2xvbik6IE5ldyBleHRlcm4uCgkqIGxhbmctb3B0aW9ucy5oOiAoLVdleHRyYW5lb3VzLXNlbWljb2xvbik6IE5ldyBvcHRpb24uCgkqIGxhbmcuYyAoZmxhZ19yZWR1bmRhbnQpOiBGaXhlZCB0eXBvIGluIGxlYWRpbmcgY29tbWVudC4KCShmbGFnX2V4dHJhbmVvdXNfc2VtaWNvbG9uKTogTmV3IGdsb2JhbC4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBTZXQgYGZsYWdfZXh0cmFuZW91c19zZW1pY29sb24nIHdoZW4KCS1XYWxsLiBEZWNvZGUgYC1XZXh0cmFuZW91cy1zZW1pY29sb24nLgoJKiBwYXJzZS55ICh0eXBlX2RlY2xhcmF0aW9uOik6IFJlbW92ZWQgYFNDX1RLJyBoYWNrLCBhZGRlZAoJYGVtcHR5X3N0YXRlbWVudCcgcnVsZS4KCShjbGFzc19ib2R5X2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgkobWV0aG9kX2JvZHk6KTogQWNjZXB0IGA7JyBhcyBhIG1ldGhvZCBib2R5LgoJKHN0YXRpY19pbml0aWFsaXplcjopOiBSZW1vdmVkIGBTQ19USycgaGFjay4KCShjb25zdHJ1Y3Rvcl9ibG9ja19lbmQ6KTogTGlrZXdpc2UuCgkoZW1wdHlfc3RhdGVtZW50Oik6IFJlcG9ydCBkZXByZWNhdGVkIGVtcHR5IGRlY2xhcmF0aW9uLiBGaXhlcwoJZ2NqLzI5NQoKMjAwMC0wOC0wNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChidWlsZF9kb3RfY2xhc3NfbWV0aG9kX2ludm9jYXRpb24pOiBDaGFuZ2VkIHBhcmFtZXRlcgoJbmFtZSB0byBgdHlwZScuIEJ1aWxkIHNpZ25hdHVyZSBmcm9tIGB0eXBlJyBhbmQgY29udmVydCBpdCB0byBhCglTVFJJTkdfQ1NUIGlmIGl0J3MgYW4gYXJyYXkuCgkocGF0Y2hfaW5jb21wbGV0ZV9jbGFzc19yZWYpOiBgYnVpbGRfZG90X2NsYXNzX21ldGhvZF9pbnZvY2F0aW9uJwoJdG8gdXNlIGByZWZfdHlwZScgZGlyZWN0bHkuCgoyMDAwLTA4LTA2ICBPdmlkaXUgUHJlZGVzY3UgIDxvdmlkaXVAY3VwLmhwLmNvbT4KCgkqIGxhbmctb3B0aW9ucy5oOiBBZGRlZCBhIGNvbW1hIGFmdGVyIHRoZSBsYXN0IGVsZW1lbnQgdG8gYXZvaWQKCXN5bnRheCBlcnJvcnMgd2hlbiBvdGhlciBsYW5ndWFnZXMgZGVmaW5lIGFkZGl0aW9uYWwgb3B0aW9ucy4KCjIwMDAtMDgtMDQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIE1ha2UtbGFuZy5pbiAoamMxLCBqdi1zY2FuKTogRGVwZW5kIG9uICQoQkFDS0VORCksIG5vdCBzdGFtcC1vYmpsaXN0LgoJKiBNYWtlZmlsZS5pbjogQWRkIEJBQ0tFTkQ7IGRlbGV0ZSBPQkpTLCBPQkpERVBTLgoJKGpjMSk6IExpbmsgd2l0aCAkKEJBQ0tFTkQpLgoJKGp2LXNjYW4pOiBEZXBlbmQgb24gdmVyc2lvbi5vLCBub3QgYWxsIG9mICQoT0JKUykgb3IgJChCQUNLRU5EKS4KCjIwMDAtMDgtMDIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGp2c3BlYy5jOiBBZGp1c3QgdHlwZSBvZiBzZWNvbmQgYXJndW1lbnQgdG8KCWxhbmdfc3BlY2lmaWNfZHJpdmVyLCBhbmQgdXBkYXRlIGNvZGUgYXMgbmVjZXNzYXJ5LgoKCSogY2xhc3MuYyAoYnVpbGRfZHRhYmxlX2RlY2wpOiBJbml0aWFsaXplIGR1bW15LgoKMjAwMC0wOC0wMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChtYXliZV95YW5rX2NsaW5pdCk6IFdoZW4gZ2VuZXJhdGluZyBieXRlY29kZTogbm9uIGVtcHR5CgltZXRob2QgYm9kaWVzIG5vdCB0byBydWxlIG91dCBkaXNjYXJkaW5nIGA8Y2xpbml0Pic7IGRvbid0IHVzZQoJPGNsaW5pdD4gdG8gaW5pdGlhbGl6ZSBzdGF0aWMgZmllbGRzIHdpdGggY29uc3RhbnQgaW5pdGlhbGl6ZXJzLgoKMjAwMC0wOC0wMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAocHJpbnRfbWV0aG9kX2luZm8pOiBBZGRlZCBgc3ludGgnIHBhcmFtZXRlci4gU2tpcAoJc3ludGhldGljIG1ldGhvZHMuCgkobWV0aG9kX3N5bnRoZXRpYyk6IE5ldyBnbG9iYWwuCgkoSEFORExFX01FVEhPRCk6IFJlY29nbml6ZSBzeW50aGV0aWMgbWV0aG9kIGFuZCB0ZWxsCglgcHJpbnRfbWV0aG9kX2luZm8nIGFib3V0IGl0LgoJKEhBTkRMRV9FTkRfTUVUSE9EKTogRG8gbm90IGlzc3VlIGFuIGFkZGl0aW9uYWwgYDtcbicgaWYgd2UncmUKCXByb2Nlc3NpbmcgYSBzeW50aGV0aWMgbWV0aG9kLgoJKiBqY2YtcmVhZGVyLmMgKHNraXBfYXR0cmlidXRlKTogTmV3IGZ1bmN0aW9uLgoJKCBza2lwX2F0dHJpYnV0ZSk6IExpa2V3aXNlLgoKMjAwMC0wOC0wMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChidWlsZF9vdXRlcl9maWVsZF9hY2Nlc3MpOiBGaXhlZCBjb21tZW50cy4KCShmaXhfY29uc3RydWN0b3JzKTogRW1pdCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhpcyQ8bj4gYmVmb3JlCgljYWxsaW5nICRmaW5pdCQuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogQnVpbGQgYW4gYWNjZXNzIHRvIGBkZWNsJyBpZgoJbmVjZXNzYXJ5LgoKMjAwMC0wNy0zMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS1zY2FuLnkgKGN1cmVudF9jbGFzcyk6IE5vbiBsb25nZXIgY29uc3QuCgkoaW5uZXJfcXVhbGlmaWVyLCBpbm5lcl9xdWFsaWZpZXJfbGVuZ3RoKTogRGVsZXRlZC4KCShjdXJyZW50X2NsYXNzX2xlbmd0aCk6IE5ldyBnbG9iYWwuCgkoYnJhY2tldF9jb3VudCk6IEZpeGVkIHR5cG8gaW4gbGVhZGluZyBjb21tZW50LgoJKGFub255bW91c19jb3VudCk6IE5ldyBnbG9iYWwuCgkoY2xhc3NfaW5zdGFuY2VfY3JlYXRpb25fZXhwcmVzc2lvbjopOiBIYW5kbGUgYW5vbnltb3VzIGNsYXNzZXMuCgkoYW5vbnltb3VzX2NsYXNzX2NyZWF0aW9uOik6IE5ldyBydWxlLgoJKHB1c2hfY2xhc3NfY29udGV4dCk6IFJld3JpdHRlbi4KCShwb3BfY2xhc3NfY29udGV4dCk6IExpa2V3aXNlLgoJKElOTkVSX1FVQUxJRklFUik6IE1hY3JvIGRlbGV0ZWQuCgkocmVwb3J0X2NsYXNzX2RlY2xhcmF0aW9uKTogY2FsbCBgcHVzaF9jbGFzc19jb250ZXh0JyB3aGVuCgllbnRlcmluZyB0aGUgZnVuY3Rpb24uIGBmcHJpbnRmJyBmb3JtYXQgbW9kaWZpZWQgbm90IHRvIHVzZQoJSU5ORVJfUVVBTElGSUVSLgoJKHJlcG9ydF9jbGFzc19kZWNsYXJhdGlvbik6IEFzc2lnbiBgcGFja2FnZV9uYW1lJyBhbmQKCWBjdXJyZW50X2NsYXNzJyB0byBOVUxMIHNlcGFyYXRlbHkuCgoyMDAwLTA3LTMxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfaW52b2tlaW50ZXJmYWNlKTogQ2FsbCBsYXlvdXRfY2xhc3NfbWV0aG9kcyBvbgoJdGFyZ2V0IGludGVyZmFjZS4KCjIwMDAtMDctMjcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCSAgICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCSAgICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6IENyZWF0ZSB2dGFibGUgZm9yIGFic3RyYWN0IGNsYXNzZXMuCgkoZ2V0X2Rpc3BhdGNoX3RhYmxlKTogQ2hhbmdlZCB0byBjb3BlIHdpdGggYWJzdHJhY3QgY2xhc3Nlcy4KCjIwMDAtMDctMjcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogRG9uJ3QgcmV2ZXJzZSB0aGUgYXJndW1lbnQKCWxpc3Qgd2hlbiBkZWFsaW5nIHdpdGggYW5vbnltb3VzIGNsYXNzIGNvbnN0cnVjdG9ycy4gRml4ZWQgdHlwbyBpbgoJY29tbWVudC4KCjIwMDAtMDctMjcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoYnVpbGRfYWxpYXNfaW5pdGlhbGl6ZXJfcGFyYW1ldGVyX2xpc3QpOiBSZXZlcnNlCgljcmFmdGVkIGxpc3Qgd2hlbiBidWlsZGluZyBhbGlhc2VzIGZvciBhbm9ueW1vdXMgY2xhc3MKCWNvbnN0cnVjdG9ycy4KCjIwMDAtMDctMjUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoamRlcF9yZXNvbHZlX2NsYXNzKTogRG9uJ3QgYm90aGVyIGNoZWNraW5nIHBvdGVudGlhbAoJaW5uZXJjbGFzcyBhY2Nlc3MgaWYgYGRlY2wnIGlzIE5VTEwuCgkoZmluZF9pbl9pbXBvcnRzX29uX2RlbWFuZCk6IFRSRUVfUFVSUE9TRSBvZiBgaW1wb3J0JyBjb250YWlucyB0aGUKCVdGTC4KCjIwMDAtMDctMjUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UuYzogUmVtb3ZlIChhZ2Fpbi4pCgoyMDAwLTA3LTI0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGZpbmRfYXNfaW5uZXJfY2xhc3MpOiBSZW1vdmVkIDIwMDAtMDctMTkgcGF0Y2hlcy4KCSogamNmLXBhcnNlLmMgKEhBTkRMRV9JTk5FUkNMQVNTRVNfQVRUUklCVVRFKTogTG9jYWwgYGRlY2wnIG1vdmVkCglvdXRzaWRlIHRoZSBgaWYnIHN0YXRlbWVudCwgYWxpYXMgdG8gaW5uZXJjbGFzcyByZW1vdmVkLCBgZGVjbCcKCXVzZWQgdG8gbWFyayB0aGUgY2xhc3MgY29tcGxldGUuCgoyMDAwLTA3LTIxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHNpbXBsZV9uYW1lOik6IEZpeGVkIHR5cG8gaW4gZXJyb3IgbWVzc2FnZS4KCjIwMDAtMDctMjEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9saHMpOiBMT09QX0VYUFI6LCBTV0lUQ0hfRVhQUjogdGhlIG5vZGUKCW9yIGl0cyBmaXJzdCBvcGVyYW5kIGNhbiBiZSBlcnJvciBtYXJrcy4KCjIwMDAtMDctMjAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UuaCAoU0VUX1RZUEVfRk9SX1JFU09MVVRJT04pOiBVc2UgR0VUX0NQQy4KCSogcGFyc2UueSAobWV0aG9kX2hlYWRlcik6IExpa2V3aXNlLgoKMjAwMC0wNy0xOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChwcm9jZXNzX2ltcG9ydHMpOiBDb25zaWRlciB0aGF0IG9uZSBtaWdodCBiZSB0cnlpbmcgdG8KCWltcG9ydCBhbiBpbm5lcmNsYXNzLiBGaXhlcyBnY2ovMjU0CgoyMDAwLTA3LTE5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGZpbmRfYXNfaW5uZXJfY2xhc3MpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlCgllbmNsb3NpbmcgY29udGV4dCBvZiBhbiBpbm5lcmNsYXNzIGhhcyBiZWVuIGxvYWRlZCBhcyBieXRlY29kZS4KCjIwMDAtMDctMTkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoc2ltcGxlX25hbWU6KTogUmVqZWN0IGAkJyBpbiB0eXBlIG5hbWVzLgoJKHJlc29sdmVfdHlwZV9kdXJpbmdfcGF0Y2gpOiBVc2UgYHR5cGUnIGFzIGEgc2Vjb25kCglhcmd1bWVudCB0byByZXNvbHZlX25vX2xheW91dC4gRml4ZXMgZ2NqLzI1Ny4KCjIwMDAtMDctMTggIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCSogcGFyc2UueSAoZmluZF9tb3N0X3NwZWNpZmljX21ldGhvZHNfbGlzdCk6IFNlbGVjdCB0aGUgb25seQoJbm9uLWFic3RyYWN0IG1ldGhvZCBldmVuIGlmIG1heCBoYXMgYmVlbiBzZXQuCglGaXhlcyBnY2ovMjg1LCBnY2ovMjk4LgoKMjAwMC0wNy0xOCAgSmVmZiBTdHVybSAgPGplZmYuc3R1cm1AYXBwbmV0LmNvbT4KCgkqIGxhbmctc3BlY3MuaDogQWRkZWQgJShqYzEpIHRvIGphdmEgY29tcGlsZXIgb3B0aW9ucy4KCjIwMDAtMDctMTQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIC5jdnNpZ25vcmU6IE5ldyBmaWxlLgoKMjAwMC0wNy0xMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChub3RfYWNjZXNzaWJsZV9wKTogQWNjZXNzIGdyYW50ZWQgdG8gaW5uZXJjbGFzc2VzCgkoaW5kaXJlY3RseSkgZXh0ZW5kaW5nIHRoZSByZWZlcmVuY2UgdHlwZS4gRml4ZXMgZ2NqLzI0OS4KCjIwMDAtMDctMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBGaXhlZCBjb21tZW50LgoJKG1heWJlX3VzZV9hY2Nlc3NfbWV0aG9kKTogQnVpbGQgdGhpcyQ8bj5zIHRvIHRoZSBjb250ZXh0IG9mIHRoZQoJdGFyZ2V0IG1ldGhvZCwgb3IgYSB0eXBlIHRoYXQgZXh0ZW5kcyBpdC4gRml4ZXMgZ2NqLzI0Mi4KCjIwMDAtMDctMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwYXJzZS5jOiBSZW1vdmUuCgoyMDAwLTA3LTEzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGZvbGRfY29uc3RhbnRfZm9yX2luaXQpOiBBdm9pZCBidWxsaXNoIGNvbnZlcnNpb24uCgoyMDAwLTA3LTEzICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBsYW5nLXNwZWNzLmg6IEFkZGVkICV7SSp9LgoKMjAwMC0wNy0xMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogbGFuZy1zcGVjcy5oOiBVc2UgdGhlIG5ldyBuYW1lZCBzcGVjcy4gIFJlbW92ZSB1bm5lY2Vzc2FyeSBicmFjZXMuCgoyMDAwLTA3LTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcGFyc2Utc2Nhbi5jOiBSZW1vdmUuCgoyMDAwLTA3LTEwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKHNldF9zdXBlcl9pbmZvKTogSGFuZGxlZCBwcm90ZWN0ZWQgaW5uZXIgY2xhc3Nlcy4KCShjb21tb25fZW5jbG9zaW5nX2NvbnRleHRfcCk6IEJhaWwgZWFybHkgaWYgYXJndW1lbnRzIGFyZW4ndCBib3RoCglpbm5lciBjbGFzc2VzLgoJKGdldF9hY2Nlc3NfZmxhZ3NfZnJvbV9kZWNsKTogSGFuZGxlIHByaXZhdGUgYW5kIHByb3RlY3RlZCBpbm5lcgoJY2xhc3Nlcy4KCSogamF2YS10cmVlLmggKFRZUEVfUFJPVEVDVEVEX0lOTkVSX0NMQVNTKTogTmV3IG1hY3JvLgoJKENMQVNTX1BST1RFQ1RFRCk6IExpa2V3aXNlLgoJKHN0cnVjdCBsYW5nX3R5cGUpOiBOZXcgYml0ZmllbGQgYHBvaWMnLgoJKiBwYXJzZS55IChqZGVwX3Jlc29sdmVfY2xhc3MpOiBDYWxsIGNoZWNrX2lubmVyX2NsYXNzX2FjY2VzcyBvbgoJaW5uZXIgY2xhc3NlcyBvbmx5LgoJKGNoZWNrX2lubmVyX2NsYXNzX2FjY2Vzcyk6IFJlbmFtZWQgYXJndW1lbnRzLCBhZGRlZAoJY29tbWVudHMuIEhhbmRsZXMgcHJvdGVjdGVkIGlubmVyIGNsYXNzZXMgKGZpeGVzIGdjai8yMjUpCgkobm90X2FjY2Vzc2libGVfcCk6IEZpeGVkIGNvbW1lbnRzLiBBdm9pZCBoYW5kbGluZyBpbm5lciBjbGFzc2VzLgoKMjAwMC0wNy0xMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBWZXJpZnkgcXVhbGlmaWVkCglhY2Nlc3MgdG8gYHRoaXMnLiBGaXhlcyBnY2ovMjM5LgoKMjAwMC0wNy0xMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfY2xhc3NmaWxlKTogRG9uJ3QgaW5zdGFsbCBDb25zdGFudFZhbHVlCglmb3IgbnVsbCBwb2ludGVycy4KCjIwMDAtMDctMDcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogSGFuZGxlIGlubmVyIGNsYXNzCglhY2Nlc3MuIEZpeGVzIGdjai8yNTYuCgoyMDAwLTA3LTA3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9jbGFzc2ZpbGUpOiBQcm9wZXJseSBpbnN0YWxsIHRoZQoJQ29uc3RhbnRWYWx1ZSBhdHRyaWJ1dGUgYW5kIHRoZSBpbml0aWFsIHZhbHVlIGNvbnN0YW50IHBvb2wgaW5kZXgKCW9uIHN0cmluZyBjb25zdGFudHMuCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogS2VlcCBERUNMX0lOSVRJQUwgd2hlbiBlbWl0dGluZwoJY2xhc3MgZmlsZXMuCgoyMDAwLTA3LTA2ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLmggKEJVSUxEX1BUUl9GUk9NX05BTUUpOiBTdXJyb3VuZCB3aXRoIGEgZG8vd2hpbGUKCWNvbnN0cnVjdC4KCSogcGFyc2UueSAoZmluZF9hc19pbm5lcl9jbGFzcyk6IEZpeGVkIHR5cG8uCgkoZG9fcmVzb2x2ZV9jbGFzcyk6IEV4cGxvcmUgZW5jbG9zaW5nIGNvbnRleHRzIHdoZW4gc2VhcmNoaW5nIGZvcgoJaW5uZXJjbGFzc2VzLiBSZW1vdmVkIGN1cmx5IGJyYWNrZXRzIGFyb3VuZCBCVUlMRF9QVFJfRlJPTV9OQU1FLgoJKGNoZWNrX2lubmVyX2NsYXNzX2FjY2Vzcyk6IENoZWNrIGBkZWNsJyB3aGljaCBjYW4gYmUgbnVsbCBpbiBjYXNlCglvZiBwcmV2aW91cyBlcnJvcnMuCgoyMDAwLTA3LTA1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5oIChqYXZhX2RlYnVnX2NvbnRleHQpOiBEZWNsYXJlZCBgZXh0ZXJuJy4KCShzYWZlX2xheW91dF9jbGFzcyk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChyZXNvbHZlX2ZpZWxkX2FjY2Vzcyk6IEZpZWxkIG11c3QgYmUgYHN0YXRpYycgaW4gb3JkZXIKCXRvIGJlIHJlcGxhY2VkIGJ5IGl0cyBpbml0aWFsIHZhbHVlLiBBZGRlZCBjb21tZW50cy4KCShmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBGaXhlZCB0eXBvLgoJKGZpbmRfbW9zdF9zcGVjaWZpY19tZXRob2RzX2xpc3QpOiBNZXRob2RzIGZvdW5kIGluIGlubmVyY2xhc3NlcwoJdGFrZSBvdmVyIG1ldGhvZHMgZm91bmRzIGluIHRoZSBlbmNsb3NpbmcgY29udGV4dHMuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogTG9vc2VuIHJlc3RyaWN0aW9ucyBvbiB0aGUgdHlwZSBvZiBERUNMcwoJdGhhdCBjYW4gYmUgcmVwbGFjZWQgYnkgdGhlaXIgaW5pdGlhbGl6YXRpb24gdmFsdWVzLgoJKHZhbGlkX3JlZl9hc3NpZ25jb252X2Nhc3RfcCk6IFJlbW92ZWQgY2FsbCB0byBgZW5jbG9zaW5nX2NvbnRleHRfcCcuCgoyMDAwLTA3LTA1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKFBBUlNFX0RJUik6IE5ldyBtYWNyby4KCShQQVJTRV9SRUxESVIpOiBMaWtld2lzZS4KCShQQVJTRV9DKTogTGlrZXdpc2UuCgkoUEFSU0VfU0NBTl9DKTogTGlrZXdpc2UuCgkoJChQQVJTRV9DKSk6IE5ldyB0YXJnZXQuCgkoJChQQVJTRV9TQ0FOX0MpKTogTGlrZXdpc2UuCgkoU0VUX0JJU09OKTogTmV3IG1hY3JvLgoJKEJJU09ORkxBR1MpOiBMaWtld2lzZS4KCShKQVZBQklTT05GTEFHUyk6IExpa2V3aXNlLgoKMjAwMC0wNy0wMiAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUBhbGJhdHJvc3MuY28ubno+CgoJKiBnamF2YWguYyAoSEFORExFX01FVEhPRCk6IENhbGwgcHJpbnRfbWV0aG9kX2luZm8gd2l0aCBhIE5VTEwgc3RyZWFtCglhcmd1bWVudCBvbiB0aGUgZmlyc3QgcGFzcyBmb3IgQ05JIGFzIHdlbGwgYXMgSk5JLgoJKHByaW50X21ldGhvZF9pbmZvKTogU2V0IHVwIG1ldGhvZCBuYW1lIG9uIHRoZSBmaXJzdCBwYXNzIG9ubHkuCgoyMDAwLTA3LTAxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHBhcnNlcl9xdWFsaWZpZWRfY2xhc3NuYW1lKTogUmVtb3ZlZCBwYXJhbWV0ZXIKCWBpc19zdGF0aWMnLgoJKGNyZWF0ZV9pbnRlcmZhY2UpOiBSZW1vdmVkIGZpcnN0IHBhc3NlZCBwYXJhbWV0ZXIgdG8KCXBhcnNlcl9xdWFsaWZpZWRfY2xhc3NuYW1lLgoJKGNyZWF0ZV9jbGFzcyk6IExpa2V3aXNlLiBEb24ndCBpbnN0YWxsIGFsaWFzIG9uIHN0YXRpYwoJaW5uZXJjbGFzc2VzLiBGaXhlcyBnY2ovMjc1LgoKMjAwMC0wNy0wMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChtYXliZV9nZW5lcmF0ZV9wcmVfZXhwYW5kX2NsaW5pdCk6IERvbid0IGJ1aWxkIGEKCWRlYnVnYWJsZSBzdGF0ZW1lbnQgd2l0aCBlbXB0eV9zdG10X25vZGUuIEZpeGVzIGdjai8yNzIKCjIwMDAtMDctMDEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZXhwci5jIChidWlsZF9pbnN0YW5jZW9mKTogTGF5b3V0IHR5cGUgYWZ0ZXIgaXQncyBsb2FkZWQuIEZpeGVzCglnY2ovMjcxLgoKMjAwMC0wNi0yOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2Ytd3JpdGUuYyAocHVzaF9sb25nX2NvbnN0KTogQXBwcm9wcmlhdGVseSBjYXN0IHNob3J0IG5lZ2F0aXZlCgljb25zdGFudCB0byBqd29yZC4KCjIwMDAtMDYtMjkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAodmVyaWZ5X2NvbnN0cnVjdG9yX3N1cGVyKTogVXNlIGxvb3AgdmFyaWFibGUKCWBtX2FyZ190eXBlJyBpbml0aWFsaXplZCB3aXRoIGBtZGVjbF9hcmdfdHlwZScuCgoyMDAwLTA2LTI5ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChyZXNvbHZlX2ZpZWxkX2FjY2Vzcyk6IEhhbmRsZSBjYXNlIHdoZXJlIGB0eXBlX2ZvdW5kJwoJaXMgTlVMTC4KCjIwMDAtMDYtMjcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZXhwci5jIChsb29rdXBfZmllbGQpOiBUaGUgc2FtZSBmaWVsZCBjYW4gYmUgZm91bmQgdGhyb3VnaCB0d28KCWRpZmZlcmVudCBpbnRlcmZhY2UuIERvbid0IGRlY2xhcmUgaXQgYW1iaWd1b3VzIGluIHRoYXQgY2FzZS4KCjIwMDAtMDYtMjcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChqYXZhX2xpbmV0ZXJtaW5hdG9yKTogRG9uJ3QgcmVjb2duaXplIFxyIGFmdGVyIFxuLiAgSWYgXHIKCWZvbGxvd3MgXHIsIHRoZW4gdW5nZXQgaXQgYXQgYSBsb3dlciBsZXZlbC4KCjIwMDAtMDYtMjYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfZmllbGRfYWNjZXNzKTogUGFzcyBkZWNsLCBub3QgREVDTF9JTklUSUFMLCB0bwoJamF2YV9jb21wbGV0ZV90cmVlLgoKMjAwMC0wNi0yNSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogcGFyc2UueSAoZm9yX3N0YXRlbWVudCk6IFdyYXAgZXhwcmVzc2lvbiBpbiBhIFdGTCBpZiBpdCBpcyBhCgljb25zdGFudC4gIEZvciBQUiBnY2ovMjY4LgoKMjAwMC0wNi0yNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChkb19yZXNvbHZlX2NsYXNzKTogTWlub3Igb3B0aW1penRpb24gaW4gdGhlIHBhY2thZ2UKCWxpc3Qgc2VhcmNoLiBSZW1vdmVkIHVubmVjZXNzYXJ5IHRlc3QgYW5kIHJldHVybiBzdGF0ZW1lbnQuCgkodmFsaWRfcmVmX2Fzc2lnbmNvbnZfY2FzdF9wKTogT3JkZXIgb2YgYXJndW1lbnRzIHRvCgllbmNsb3NpbmdfY29udGV4dF9wIGZpeGVkLgoKMjAwMC0wNi0yNCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZXhwci5jIChsb29rdXBfZmllbGQpOiBQcmludCBlcnJvciBhbmQgcmV0dXJuIGVycm9yX21hcmtfbm9kZSBpZgoJZmllbGQgcmVmZXJlbmNlIGlzIGFtYmlndW91cy4KCgkqIHBhcnNlLnkgKGNoZWNrX2Fic3RyYWN0X21ldGhvZF9kZWZpbml0aW9ucyk6IEFsc28gY2hlY2sgaWYKCWBvdGhlcl9tZXRob2QnIGlzIGFic3RyYWN0LgoKMjAwMC0wNi0yMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChzZXRfc3VwZXJfaW5mbyk6IEhhbmRsZSBBQ0NfUFJJVkFURSBmb3IgKGlubmVyKQoJY2xhc3Nlcy4KCSogamF2YS10cmVlLmggKFRZUEVfUFJJVkFURV9JTk5FUl9DTEFTUyk6IE5ldyBtYWNyby4KCShzdHJ1Y3QgbGFuZ190eXBlKTogTmV3IGZpZWxkIGBwaWMnLgoJKENMQVNTX1BSSVZBVEUpOiBOZXcgbWFjcm8uCgkqIHBhcnNlLnkgKGNoZWNrX2lubmVyX2NsYXNzX2FjY2Vzcyk6IE5ldyBmdW5jdGlvbi4KCShqZGVwX3Jlc29sdmVfY2xhc3MpOiBDYWxsIGl0LgoKMjAwMC0wNi0yMyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfaW5jb21wbGV0ZV9jbGFzc19yZWYpOiBJbml0aWFsaXplIHRoZSByZXR1cm5lZAoJY2xhc3MuICBGb3IgUFIgZ2NqLzI2MC4KCjIwMDAtMDYtMjEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKHByZXBhcmVfZWhfdGFibGVfdHlwZSk6IFVzZSBgQ0FUQ0hfQUxMX1RZUEUnLgoKMjAwMC0wNi0yMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjaGVjay1pbml0LmMgKEVOQUJMRV9KQzFfQ0hFQ0tJTkcpOiBSZXBsYWNlcyBFTkFCTEVfQ0hFQ0tJTkcgZm9yCglKYXZhIHNwZWNpZmljIGNoZWNrcy4KCSogZXhwci5jIChidWlsZF9pbnN0YW5jZW9mKTogQ0xBU1NfSU5URVJGQUNFIGFuZCBDTEFTU19GSU5BTCB1c2FnZQoJc2NyZWVuZWQgYnkgREVDTF9QLgoJKiBqYXZhLXRyZWUuZGVmIChDQVNFX0VYUFIpOiBNYXJrZWQgJ2UnLgoJKERFRkFVTFRfRVhQUik6IExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYyAoc2V0X3NvdXJjZV9maWxlbmFtZSk6IENMQVNTX0NPTVBMRVRFX1AgdXNhZ2UKCXNjcmVlbmVkIGJ5IERFQ0xfUC4KCSogamNmLXdyaXRlLmMgKEVOQUJMRV9KQzFfQ0hFQ0tJTkcpOiBSZXBsYWNlcyBFTkFCTEVfQ0hFQ0tJTkcgZm9yCglKYXZhIHNwZWNpZmljIGNoZWNrcy4KCShnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IFRlc3QgdHJ5X2Jsb2NrIGZvciBCTE9DSyBiZWZvcmUgdXNpbmcKCUJMT0NLX0VYUFJfQk9EWS4KCSogcGFyc2UueSAoYnVpbGRfd2ZsX3dyYXApOiBBZGRlZCBgbG9jYXRpb24nIGFyZ3VtZW50LiBTZXQKCUVYUFJfV0ZMX0xJTkVDT0wgYWNjb3JkaW5nbHkuCgkoZGltX2V4cHI6KTogV3JhcCBjb25zdGFudHMgd2l0aCBXRkxzLgoJKG1ldGhvZF9kZWNsYXJhdG9yKTogVXNlIFRSRUVfVFlQRSBub3QgVFlQRV9OQU1FIG9uIEdFVF9DUEMuCgkocmVzb2x2ZV9wYWNrYWdlKTogQ2hlY2sgZm9yIGBzdG10JyBub3QgYmVpbmcgYSBCTE9DSyBiZWZvcmUKCWJ1aWxkaW5nIGEgZGVidWdnYWJsZSBzdGF0ZW1lbnQgd2l0aCBpdC4KCShtYWtlX3F1YWxpZmllZF9wcmltYXJ5KTogQWRkZWQgZXh0cmEgcGFyYW1ldGVyIHRvIGJ1aWxkX3dmbF93cmFwCglpbnZvY2F0aW9uLgoJKHJlc29sdmVfZmllbGRfYWNjZXNzKTogTWFrZSBzdXJlIGBkZWNsJyBpcyBhIERFQ0wgYmVmb3JlIHRyZWF0aW5nCglpdCBhcyBzdWNoLgoJKG1heWJlX2J1aWxkX3ByaW10dHlwZV90eXBlX3JlZik6IE1ha2Ugc3VyZSBgd2ZsJydzIG5vZGUgaXMgYW4KCUlERU5USUZJRVJfTk9ERSBiZWZvcmUgdHJlYXRpbmcgaXQgYXMgc3VjaC4KCShwYXRjaF9uZXdfYXJyYXlfaW5pdCk6IE1ha2Ugc3VyZSBgZWx0JyBpcyBhIFRSRUVfTElTVCBiZWZvcmUKCXRyZWF0aW5nIGl0IGFzIHN1Y2guCgkoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogQ0xBU1NfSU5URVJGQUNFIG1hY3JvCgl0byBiZSBhcHBsaWVkIG9ubHkgb24gbm9uIGFycmF5IHR5cGVzLgoKMjAwMC0wNi0xNiAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqYXZhLXRyZWUuaCAoTEFCRUxfUkVUVVJOX0xBQkVMUywgTEFCRUxfUEVORElOR19DSEFJTik6ICBEb24ndAoJZGVmaW5lIGluIHRlcm1zIG9mIERFQ0xfUkVTVUxULCBhcyB0aGF0IGZhaWxzIHdoZW4gLS1lbmFibGUtY2hlY2tpbmcuCgoyMDAwLTA2LTE1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBqY2Ytd3JpdGUuYyAoQ0hFQ0tfUFVUKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuICBNYWtlIHBvaW50ZXIKCXR5cGVzIHRoZSBzYW1lIGluIGNvbXBhcmlzb24uCgkoQ0hFQ0tfT1ApOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCjIwMDAtMDYtMTMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2phdmFfYXJyYXlfdHlwZSk6IFNldCBUWVBFX1VTRVJfQUxJR04uCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfY2xhc3MpOiBTZXQgREVDTF9VU0VSX0FMSUdOLgoJKiBwYXJzZS5jOiBSZWJ1aWx0LgoKMjAwMC0wNi0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVjbC5jIChjcmVhdGVfcHJpbWl0aXZlX3Z0YWJsZSk6IFByb3RvdHlwZS4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IEluaXRpYWxpemUgdmFyaWFibGUKCWBzYXZlZF9jb250ZXh0Jy4KCgkqIGxhbmcuYyAobGFuZ19nZXRfYWxpYXNfc2V0KTogTWFyayBwYXJhbWV0ZXIgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoKMjAwMC0wNi0wOSAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUBhbGJhdHJvc3MuY28ubno+CgoJKiBwYXJzZS55IChmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBVc2UgYSBoYXNodGFibGUKCXRvIHRyYWNrIHNlYXJjaGVkIGNsYXNzZXMsIGFuZCBkbyBub3Qgc2VhcmNoIHRoZSBzYW1lIGNsYXNzIG1vcmUgdGhhbgoJb25jZS4gQ2FsbCBmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3Qgb24gaW1tZWRpYXRlCglzdXBlcmNsYXNzLCBpbnN0ZWFkIG9mIHNlYXJjaF9hcHBsaWNhYmxlX21ldGhvZF9saXN0IG9uIGFsbCBhbmNlc3RvcnMuCglGaXggZm9yIFBSIGdjai8yMzguCgoyMDAwLTA2LTA5ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIHBhcnNlLnkgKHJlZ2lzdGVyX2ZpZWxkcyk6IFBlcm1pdCBzdGF0aWMgZmllbGRzIGluIGlubmVyIGNsYXNzZXMKCWlmIHRoZXkgYXJlIGZpbmFsLiBGaXggZm9yIFBSIGdjai8yNTUuCgoyMDAwLTA2LTA2ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLmggKFJFR0lTVEVSX0lNUE9SVCk6IFVzZSBgY2hhaW5vbicgdG8gbGluayBuZXcgZW50cmllcy4KCSogcGFyc2UueSAoZmluZF9pbl9pbXBvcnRzKTogUmV0dXJuZWQgdHlwZSBjaGFuZ2VkIHRvIHZvaWQsCglsZWFkaW5nIGNvbW1lbnQgZml4ZWQuCgkocmVnaXN0ZXJfcGFja2FnZSk6IE5ldyBmdW5jdGlvbi4KCShxdWFsaWZ5X2FuZF9maW5kKTogTGlrZXdpc2UuCgkocGFja2FnZV9kZWNsYXJhdGlvbjopOiBVc2UgYHJlZ2lzdGVyX3BhY2thZ2UnLgoJKHNpbmdsZV90eXBlX2ltcG9ydF9kZWNsYXJhdGlvbjopOiBSZW1vdmVkIGxvY2FsIHZhcmlhYmxlCglgbm9kZScuIEFkZGVkIG1pc3NpbmcgYDsnIGZvciBjb25zaXN0ZW5jeS4KCSh0eXBlX2ltcG9ydF9vbl9kZW1hbmRfZGVjbGFyYXRpb246KTogVXNlIGBjaGFpbm9uJyB0byBsaW5rIG5ldwoJZW50cmllcy4KCShsb29rdXBfZmllbGRfd3JhcHBlcik6IExvb2t1cCBsb2NhbCB2YXJpYWJsZXMgZGVmaW5lZCBpbiBvdXRlcgoJY29udGV4dHMgZmlyc3QuCgkoamF2YV9jb21wbGV0ZV9jbGFzcyk6IERvbid0IHJldmVyc2UgdGhlIGxpc3Qgb2YgaW1wb3J0ZWQgb24gZGVtYW5kLgoJKGRvX3Jlc29sdmVfY2xhc3MpOiBSZW9yZ2FuaXplZC4gUmVtb3ZlZCBsb2NhbCB2YXJpYWJsZQoJYG9yaWdpbmFsX25hbWUnLiBDYWxsIGBxdWFsaWZ5X2FuZF9maW5kJyB3aXRoIHRoZSBjdXJyZW50IHBhY2thZ2UKCW5hbWUsIGludm9rZSBgZmluZF9pbl9pbXBvcnRzX29uX2RlbWFuZCcgcmlnaHQgYWZ0ZXIuIENhbGwKCWBxdWFsaWZ5X2FuZF9maW5kJyB3aXRoIHRoZSBwYWNrYWdlcyB3ZSd2ZSBzZWVuIHNvIGZhci4gRml4ZWQKCW9wZXJhdGlvbnMgbnVtYmVyaW5nIGluIGNvbW1lbnRzLgoJKGphdmFfZXhwYW5kX2NsYXNzKTogRG9uJ3QgcmV2ZXJzZSBgcGFja2FnZV9saXN0Jy4KCShmaW5kX21vc3Rfc3BlY2lmaWNfbWV0aG9kc19saXN0KTogTmV3IGxvY2FsIHZhcmlhYmxlcyBgYWJzdHJhY3QnCglhbmQgYGNhbmRpZGF0ZXMnLiBVc2UgdGhlbSB0byBwaWNrIHRoZSByaWdodCBtZXRob2QuCgoyMDAwLTA2LTA2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGZlcnJ1bGUuY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGNoZWNrX21vZGlmaWVyc19jb25zaXN0ZW5jeSk6IERvbid0IHN1YnRyYWN0IG91dAoJYFBVQkxJQ19USycgZnJvbSBhcmd1bWVudCB0byBUSElTX01PRElGSUVSX09OTFkuCgoyMDAwLTA2LTA0ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIE1ha2VmaWxlLmluIChJTlRMTElCUyk6IE5ldy4KCShMSUJTKTogQWRkIGFib3ZlLgoJKERFUExJQlMpOiBEaXR0by4KCjIwMDAtMDYtMDIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZ2V0X2Rpc3BhdGNoX3RhYmxlKTogQnVpbGQgdGhlIHZ0YWJsZSBkdW1teSBlbnRyeSBsaXN0CgllbGVtZW50IHdpdGggYSBudWxsIHB1cnBvc2UuIEZpeGVkIGxlYWRpbmcgY29tbWVudC4KCShidWlsZF9kdGFibGVfZGVjbCk6IEJ1aWxkIGFuIGFjY3VyYXRlIGR0YWJsZSB0eXBlIHdoZW4gYXBwcm9wcmlhdGUKCWFuZCB1c2UgaXQuCgoyMDAwLTA2LTAyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogbGFuZy5jIChsYW5nX2dldF9hbGlhc19zZXQpOiBOZXcuCgoyMDAwLTA1LTMxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfZmllbGRfYWNjZXNzKTogQ29tcGxldGUgdGhlIERFQ0xfSU5JVElBTCB0cmVlCgliZWZvcmUgdXNpbmcgaXQgYXMgdGhlIGFjY2Vzc2VkIGZpZWxkLgoKMjAwMC0wNS0zMSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmggKGJvb2xlYW5fYXJyYXlfdnRhYmxlLCBieXRlX2FycmF5X3Z0YWJsZSwKCWNoYXJfYXJyYXlfdnRhYmxlLCBzaG9ydF9hcnJheV92dGFibGUsIGludF9hcnJheV92dGFibGUsCglsb25nX2FycmF5X3Z0YWJsZSwgZmxvYXRfYXJyYXlfdnRhYmxlLCBkb3VibGVfYXJyYXlfdnRhYmxlKToKCURlY2xhcmUuCgkqIGV4cHIuYyAoZ2V0X3ByaW1pdGl2ZV9hcnJheV92dGFibGUpOiBOZXcgZnVuY3Rpb24uCgkoY3JlYXRlX3ByaW1pdGl2ZV92dGFibGUpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9sYW5nX2V4cGFuZF9leHByKTogRW5hYmxlIGNvZGUgdG8gc3RhdGljYWxseSBnZW5lcmF0ZQoJYXJyYXlzLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQ3JlYXRlIHByaW1pdGl2ZSB2dGFibGVzLgoJKGJvb2xlYW5fYXJyYXlfdnRhYmxlLCBieXRlX2FycmF5X3Z0YWJsZSwgY2hhcl9hcnJheV92dGFibGUsCglzaG9ydF9hcnJheV92dGFibGUsIGludF9hcnJheV92dGFibGUsIGxvbmdfYXJyYXlfdnRhYmxlLAoJZmxvYXRfYXJyYXlfdnRhYmxlLCBkb3VibGVfYXJyYXlfdnRhYmxlKTogRGVmaW5lLgoKMjAwMC0wNS0yNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogamF2YS9wYXJzZS55IChmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOgoJRG9uJ3QgYWRkIGFuIHVuaW5pdGlhbGl6ZWQgdmFsdWUgdG8gdGhlIGxpc3QuCgoyMDAwLTA1LTI1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChyZXNvbHZlX2ZpZWxkX2FjY2Vzcyk6IERvbid0IGNoZWNrIERFQ0xfTEFOR19TUEVDSUZJQwoJd2hlbiB0cnlpbmcgdG8gc2VlIGlmIGZpZWxkJ3MgY2xhc3Mgc2hvdWxkIGJlIGluaXRpYWxpemVkLiAgQWx3YXlzCglpbml0aWFsaXplIGZpZWxkJ3MgZGVjbGFyaW5nIGNsYXNzLCBub3QgcXVhbGlmaWVkIGNsYXNzLgoJRm9yIFBSIGdjai8xNjIuCgoJKiBwYXJzZS55IChhcnJheV9jb25zdHJ1Y3Rvcl9jaGVja19lbnRyeSk6IFBhc3MgYHdmbF92YWx1ZScsIG5vdAoJYHdmbF9vcGVyYXRvcicsIHRvIG1heWJlX2J1aWxkX3ByaW10dHlwZV90eXBlX3JlZi4KCUZpeGVzIFBSIGdjai8yMzUuCgoyMDAwLTA1LTIzICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIHBhcnNlLnkgKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogRG9uJ3QgdHJ5IHRvIGxvb2t1cCBtZXRob2RzCglpbiBwcmltaXRpdmUgdHlwZXMuCgoyMDAwLTA1LTAyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfZmllbGRfYWNjZXNzKTogQ2FsbCB0aGUgYXBwcm9wcmlhdGUgPGNsaW5pdD4KCWJlZm9yZSBhY2Nlc3NpbmcgdGhlIGxlbmd0aCBvZiBhIHN0YXRpYyBhcnJheS4gQ3JhZnQgYSBkZWNsIGZvcgoJdGhlIGZpZWxkIHdoaWxlIGl0cyB0aW1lLiBGaXhlcyBQUiBnY2ovMTI5LgoKMjAwMC0wNS0wMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChyZXNvbHZlX3BhY2thZ2UpOiBDb3JyZWN0bHkgc2V0IGAqbmV4dCcgKHdhcyBvZmYgYnkKCW9uZS4pCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogRml4ZWQgY29tbWVudC4KCjIwMDAtMDQtMjcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmMgKGpjZl9wYXJzZV9zb3VyY2UpOiBSZXNldCBjdXJyZW50X2NsYXNzIGFuZAoJY3VycmVudF9mdW5jdGlvbl9kZWNsIHRvIE5VTEwgYmVmb3JlIHBhcnNpbmcgYSBuZXcgZmlsZS4KCjIwMDAtMDQtMjcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoYmxvY2tfZW5kOik6IElmIHRoZSBjb2xsZWN0ZWQgYmxvY2sgZG9lc24ndCBmZWF0dXJlIGEKCXN0YXRlbWVudCwgaW5zZXJ0IGFuIGVtcHR5IHN0YXRlbWVudC4KCjIwMDAtMDQtMTcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAobWF5YmVfeWFua19jbGluaXQpOiBOZXcgZnVuY3Rpb24uCgkobWF5YmVfZ2VuZXJhdGVfcHJlX2V4cGFuZF9jbGluaXQpOiBBbHdheXMgbGluayA8Y2xpbml0PiBhdCB0aGUKCWVuZCBvZiB0aGUgbGlzdCBvZiBtZXRob2RzIGJlbG9uZ2luZyB0byBhIGNsYXNzLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IENoZWNrIHdoZXRoZXIgPGNsaW5pdD4gaXMgcmVhbGx5CgluZWNlc3NhcnkgYW5kIGV4cGFuZCBpdCBhY2NvcmRpbmdseS4KCjIwMDAtMDQtMTcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoZm9sZF9jb25zdGFudF9mb3JfaW5pdCk6IExldCBWQVJfREVDTCBhbmQgRklFTERfREVDTCBiZQoJcHJvY2Vzc2VkIGJ5IHRoZSBtZXRob2QncyBzd2l0Y2ggc3RhdGVtZW50LgoKMjAwMC0wNS0xOSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmg6IEFkZGVkIGluaXQgc3RhdGUgZW51bS4KCSogZGVjbC5jIChlbWl0X2luaXRfdGVzdF9pbml0aWFsaXphdGlvbik6IEluaXRpYWxpemUgY2xhc3MKCWluaXRpYWxpemF0aW9uIGNoZWNrIHZhcmlhYmxlIGJ5IGxvb2tpbmcgYXQgY2xhc3MnIHN0YXRlLgoKMjAwMC0wNS0xOSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmggKGJ1aWxkX2luc3RhbmNlb2YpOiBEZWNsYXJlLgoJKGJ1aWxkX2dldF9jbGFzcyk6IERlY2xhcmUuCgkqIHBhcnNlLnkgKHBhdGNoX2Jpbm9wKTogVXNlIGJ1aWxkX2luc3RhbmNlb2YuCgkqIGV4cHIuYyAoYnVpbGRfaW5zdGFuY2VvZik6IE5ldyBmdW5jdGlvbi4gIElmIGNsYXNzIGlzIGZpbmFsLAoJZG9uJ3QgbWFrZSBhIGZ1bmN0aW9uIGNhbGwuCgkoZXhwYW5kX2phdmFfSU5TVEFOQ0VPRik6IFVzZSBpdC4KCShidWlsZF9nZXRfY2xhc3MpOiBOZXcgZnVuY3Rpb24uCgoyMDAwLTA1LTE4ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9jbGFzc2ZpbGUpOiBTY2FuIHRoZSBzb3VyY2VfZmlsZSBmb3IKCXNsYXNoZXMgd2l0aCB0aGUgcmlnaHQgcG9pbnRlciB2YXJpYWJsZS4KCjIwMDAtMDUtMTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGxhbmcuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogVXBkYXRlIC1XdW51c2VkIGZsYWdzIGJ5IGNhbGxpbmcKCXNldF9XdW51c2VkLgoJKiBkZWNsLmMgKHBvcGxldmVsKTogUmVwbGFjZSB3YXJuX3VudXNlZCB3aXRoIHdhcm5fdW51c2VkX2xhYmVsLgoKMjAwMC0wNS0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY2hlY2tfaW5pdC5jIChjaGVja19pbml0KTogQ29uc3RpZnkgbG9jYWwgY2hhciAqLgoJKiBjbGFzcy5jIChwdXNoX2NsYXNzKTogQ29uc3RpZnkgbG9jYWwgY2hhciAqLgoJKiBqYXZhX3RyZWUuaDogVXBkYXRlIHByb3RvdHlwZXMuCgkqIGpjZi1pby5jIChvcGVuX2NsYXNzKTogQ29uc3RpZnkgZmlsZW5hbWUgcGFyYW1ldGVyIGFuZAoJcmV0dXJuIHZhbHVlLgoJKGZpbmRfY2xhc3MpOiBSZW1vdmUgcmVkdW5kYW50IHN0cmluZyBjb3B5LiAgQ2FzdCByZXR1cm4gZnJvbQoJb3Blbl9jbGFzcy4KCSogamNmLXBhcnNlLmMgKHJlYWRfY2xhc3MsIHBhcnNlX2NsYXNzX2ZpbGUsIHl5cGFyc2UpOgoJQ29uc3RpZnkgbG9jYWwgY2hhciAqLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMsIGdlbmVyYXRlX2NsYXNzZmlsZSk6CglDb25zdGlmeSBsb2NhbCBjaGFyICouCgkqIGpjZi5oIChKQ0YpOiBDb25zdGlmeSBmaWxlbmFtZSBhbmQgY2xhc3NuYW1lLgoJKEpDRl9GSU5JU0gpOiBDYXN0IGFyZ3MgdG8gRlJFRSB0byBjaGFyICogd2hlbiBhcHByb3ByaWF0ZS4KCSogbGFuZy5jIChpbml0X3BhcnNlKTogQ29uc3RpZnkgcGFyYW1ldGVyIGFuZCByZXR1cm4gdmFsdWUuCgkqIGxleC5jIChqYXZhX2dldF9saW5lX2NvbCk6IENvbnN0aWZ5IGZpbGVuYW1lIHBhcmFtZXRlci4KCSogcGFyc2UuaDogQ29uc3RpZnkgcGFyc2VyX2N0eHQuZmlsZW5hbWUuICBVcGRhdGUgcHJvdG90eXBlcy4KCSogcGFyc2UueSAoamF2YV9wYXJzZXJfY29udGV4dF9zdXNwZW5kLAoJaXNzdWVfd2FybmluZ19lcnJvcl9mcm9tX2NvbnRleHQsIHNhZmVfbGF5b3V0X2NsYXNzKTogQ29uc3RpZnkKCWxvY2FsIGNoYXIgKi4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZS4KCjIwMDAtMDUtMDggIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfam5pX3N0dWIpOiBDYWNoZSB0aGUgcmVzdWx0IG9mCglfSnZfTG9va3VwSk5JTWV0aG9kLgoKMjAwMC0wNS0wNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHByZWRlZl9maWxlbmFtZXNfc2l6ZSk6IE5vdyA3LgoJKHByZWRlZl9maWxlbmFtZXMpOiBOZXcgc2V2ZW50aCBlbnRyeS4KCjIwMDAtMDUtMDQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGJvZWhtLmMgKG1hcmtfcmVmZXJlbmNlX2ZpZWxkcyk6IERvbid0IG1hcmsgUmF3RGF0YSBmaWVsZHMuCglLZWVwIHRyYWNrIG9mIHdoZW4gd2UndmUgc2VlbiBhIHJlZmVyZW5jZSBmaWVsZCBhZnRlciBhCglub24tcmVmZXJlbmNlIGZpZWxkLgoJKGdldF9ib2VobV90eXBlX2Rlc2NyaXB0b3IpOiBIYW5kbGUgY2FzZSB3aGVyZSB3ZSBzZWUKCW5vbi1yZWZlcmVuY2UgZmllbGRzIGJ1dCBubyB0cmFpbGluZyByZWZlcmVuY2UgZmllbGQuCgkqIGRlY2wuYyAocmF3ZGF0YV9wdHJfdHlwZV9ub2RlKTogRGVmaW5lLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSByYXdkYXRhX3B0cl90eXBlX25vZGUuCgkqIGphdmEtdHJlZS5oIChyYXdkYXRhX3B0cl90eXBlX25vZGUpOiBEZWNsYXJlLgoKMjAwMC0wNS0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogamNmLWR1bXAuYyAoU1BFQ0lBTF9JSU5DKTogRW5zdXJlIGFyZ3VtZW50cyBtYXRjaCBmb3JtYXQKCXNwZWNpZmllcnMgaW4gY2FsbHMgdG8gZnByaW50Zi4KCjIwMDAtMDUtMDMgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogZXhwci5jIChidWlsZF9qYXZhX2pzcik6IFVzZSBlbWl0X2p1bXAsIG5vdCBleHBhbmRfZ290by4KCgkqIGphdmFvcC5oIChXT1JEX1RPX0lOVCk6IE5ldyBmdW5jdGlvbi4KCShJTU1FRElBVEVfczQpOiBVc2UgV09SRF9UT19JTlQuCgkqIGpjZi5oIChKUE9PTF9JTlQpOiBEaXR0by4KCgkqIGdqYXZhaC5jIChkZWNvZGVfc2lnbmF0dXJlX3BpZWNlKTogRG9uJ3QgdHJlYXQgYCQnIGFzIG5hbWVzcGFjZQoJc2VwYXJhdG9yLgoKMjAwMC0wNC0xOSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoYWRkX21ldGhvZF8xKTogU2V0IGJvdGggREVDTF9FWFRFUk5BTCBhbmQgTUVUSE9EX05BVElWRQoJb24gbmF0aXZlIGZ1bmN0aW9uLgoJKiBqY2YtcGFyc2UuYyAocGFyc2VfY2xhc3NfZmlsZSk6IENhbGwgYnVpbGRfam5pX3N0dWIgZm9yIG5hdGl2ZQoJSk5JIG1ldGhvZHMuCgkqIGV4cHIuYyAoYnVpbGRfam5pX3N0dWIpOiBOZXcgZnVuY3Rpb24uCgkqIGxhbmctc3BlY3MuaDogLWZqbmkgYW5kIC1mZW1pdC1jbGFzcy1maWxlIGFyZSBpbmNvbXBhdGlibGUuCgkqIHBhcnNlLmM6IFJlYnVpbHQuCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiBFeHBhbmQgYSBuYXRpdmUgbWV0aG9kCglhbmQgY2FsbCBidWlsZF9qbmlfc3R1YiBpZiAtZmpuaSBnaXZlbi4KCSogbGFuZy1vcHRpb25zLmg6IERvY3VtZW50IC1mam5pLgoJKiBsYW5nLmMgKGZsYWdfam5pKTogTmV3IGdsb2JhbC4KCShsYW5nX2Zfb3B0aW9ucyk6IEFkZGVkIGBqbmknIGVudHJ5LgoJKiBqYXZhLXRyZWUuaCAoc29mdF9sb29rdXBqbmltZXRob2Rfbm9kZSwKCXNvZnRfZ2V0am5pZW52bmV3ZnJhbWVfbm9kZSwgc29mdF9qbmlwb3BzeXN0ZW1mcmFtZV9ub2RlKToKCURlY2xhcmUuCgkoZmxhZ19qbmkpOiBEZWNsYXJlLgoJKGJ1aWxkX2puaV9zdHViKTogRGVjbGFyZS4KCShzdHJ1Y3QgbGFuZ19kZWNsKTogQWRkZWQgYG5hdGl2ZScgZmxhZy4KCShNRVRIT0RfTkFUSVZFKTogUmVkZWZpbmVkIHRvIHVzZSBgbmF0aXZlJyBmaWVsZCBvZiBsYW5nIHNwZWNpZmljCglzdHJ1Y3R1cmUuCgkqIGRlY2wuYyAoc29mdF9sb29rdXBqbmltZXRob2Rfbm9kZSwgc29mdF9nZXRqbmllbnZuZXdmcmFtZV9ub2RlLAoJc29mdF9qbmlwb3BzeXN0ZW1mcmFtZV9ub2RlKTogTmV3IGdsb2JhbHMuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBTZXQgdGhlbS4gIF9Kdl9Jbml0Q2xhc3Mgb25seSB0YWtlcyBvbmUKCWFyZ3VtZW50LgoKCSogamF2YS10cmVlLmRlZjogUHV0IGludG8gYEMnIG1vZGUuCgoyMDAwLTA0LTI3ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJRml4IGZvciBQUiBnY2ovMjoKCSogZXhwci5jIChleHBhbmRfaW52b2tlKTogR2VuZXJhdGUgY2hlY2sgdG8gc2VlIGlmIG9iamVjdCBwb2ludGVyCglpcyBudWxsIGluIG5vbnZpcnR1YWwgaW52b2NhdGlvbiBjYXNlLgoJKiBqYXZhLXRyZWUuaCAoc29mdF9udWxscG9pbnRlcl9ub2RlKTogRGVjbGFyZS4KCSogZGVjbC5jIChzb2Z0X251bGxwb2ludGVyX25vZGUpOiBOZXcgZ2xvYmFsLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBzb2Z0X251bGxwb2ludGVyX25vZGUuCgkqIHBhcnNlLnkgKGludm9jYXRpb25fbW9kZSk6IFJldHVybiBJTlZPS0VfTk9OVklSVFVBTCBmb3IgYGZpbmFsJwoJb3IgYHByaXZhdGUnIG1ldGhvZHMuCgkocGF0Y2hfaW52b2tlKTogSGFuZGxlIElOVk9LRV9OT05WSVJUVUFMIGNhc2UuCgoyMDAwLTA0LTI2ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY29tcGxldGVfc3RhcnRfamF2YV9tZXRob2QpOiBEb24ndCBjYWxsIF9Kdl9Jbml0Q2xhc3MKCWZyb20gPGNsaW5pdD4KCjIwMDAtMDQtMjYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHpleHRyYWN0LmMgKGZpbmRfemlwX2ZpbGVfc3RhcnQpOiBOZXcgZnVuY3Rpb24uCgkocmVhZF96aXBfYXJjaGl2ZSk6IFVzZSBpdC4KCjIwMDAtMDQtMjUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocmVnaXN0ZXJfaW5jb21wbGV0ZV90eXBlKTogSGFuZGxlIEpERVBfQU5PTllNT1VTLgoKMjAwMC0wNC0yNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChjb21tb25fZW5jbG9zaW5nX2NvbnRleHRfcCk6IE5ldyBmdW5jdGlvbi4KCSogamF2YS10cmVlLmggKGNvbW1vbl9lbmNsb3NpbmdfY29udGV4dF9wKTogQWRkZWQgcHJvdG90eXBlLgoJKiBwYXJzZS5oIChJTk5FUl9FTkNMT1NJTkdfU0NPUEVfQ0hFQ0spOiBSZWxheGVkIHRlc3QgdG8gYWxsb3cKCWNsYXNzZXMgc2hhcmluZyBhbiBvdXRlciBjb250ZXh0IHdpdGggdGhlIGN1cnJlbnQgaW5zdGFuY2UuCgkqIHBhcnNlLnkgKGJ1aWxkX2FjY2Vzc190b190aGlzbik6IEZpeGVkIGxlYWRpbmcgY29tbWVudC4KCSh2ZXJpZnlfY29uc3RydWN0b3Jfc3VwZXIpOiBOZXcgbG9jYWwgYHN1cHBlcl9pbm5lcicuIFNraXAKCWVuY2xvc2luZyBjb250ZXh0IGFyZ3VtZW50IGluIHRoZSBjYXNlIG9mIGlubmVyIGNsYXNzIGNvbnN0cnVjdG9ycy4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IEluc2VydCBwcm9wZXIgY29udGV4dCBhcyBzZWNvbmQKCXBhcmFtZXRlciB0byBwdXJlIGlubmVyIGNsYXNzIGNvbnN0cnVjdG9yIHN1cGVyIGludm9jYXRpb25zLgoKMjAwMC0wNC0yNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChlbmRfY2xhc3NfZGVjbGFyYXRpb24pOiBSZXNldCB0aGUgaW50ZXJmYWNlIG51bWJlcgoJY291bnRlci4KCjIwMDAtMDQtMjQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoc291cmNlX3N0YXJ0X2phdmFfbWV0aG9kKTogRGVsZXRlZCB1bm5lY2Vzc2FyeSBjb2RlLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogRml4ZWQgY29tbWVudC4KCjIwMDAtMDQtMjQgIFJvYmVydCBMaXBlIDxyb2JlcnRsaXBlQHVzYS5uZXQ+CgoJKiBwYXJzZS5oIChfamRlcCk6IE1lbWJlciBga2luZCcgbm93IEVOVU1fQklURklFTEQuCgoyMDAwLTA0LTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBib2VobS5jIChtYXJrX3JlZmVyZW5jZV9maWVsZHMpOiBVc2UgaW50X2J5dGVfcG9zaXRpb24uCgoyMDAwLTA0LTIyICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBib2VobS5jIChtYXJrX3JlZmVyZW5jZV9maWVsZHMpOiBPbmx5IGNhbGwgYnl0ZV9wb3NpdGlvbiBvbgoJbm9uLXN0YXRpYyBmaWVsZHMuCgoyMDAwLTA0LTIyICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBib2VobS5jIChtYXJrX3JlZmVyZW5jZV9maWVsZHMpOiBBZGRlZCBgbGFzdF92aWV3X2luZGV4JwoJYXJndW1lbnQuICBVc2UgREVDTF9GSUVMRF9PRkZTRVQgdG8gZGV0ZXJtaW5lIGZpZWxkJ3Mgb2Zmc2V0LgoKMjAwMC0wNC0yMCAgTW8gRGVKb25nICA8bWRlam9uZ0BjeWdudXMuY29tPgoKCSogcGFyc2UuaCAoSU5URVJGQUNFX0lOTkVSX01PRElGSUVSUyk6IE5ldyBtYWNyby4KCSogcGFyc2UueSAoY2hlY2tfY2xhc3NfaW50ZXJmYWNlX2NyZWF0aW9uKTogRml4ZWQgY29tbWVudHMuIFNlbGVjdAoJcGVybWl0dGVkIG1vZGlmaWVycyBmb3IgKGlubmVyKSBpbnRlcmZhY2VzLiBDaGFuZ2VkIGVycm9yIG1lc3NhZ2UKCXRvIHJlcG9ydCByZWplY3RlZCBtb2RpZmllcnMgdXNlZCB3aXRoIGxvY2FsIGNsYXNzZXMuCgoyMDAwLTA0LTIwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLmggKElOTkVSX0VOQ0xPU0lOR19TQ09QRV9DSEVDSyk6IEltbWVkaWF0ZSBpbm5lciBjbGFzc2VzCglvZiBkaXJlY3RseSBpbmhlcml0ZWQgdHlwZSBjb25zaWRlcmVkIGluIHNjb3BlLgoJKiBwYXJzZS55IChkb19yZXNvbHZlX2NsYXNzKTogU2VhcmNoIGluaGVyaXRlZCBjbGFzc2VzIGZvciBpbm5lcgoJY2xhc3Nlcy4KCjIwMDAtMDQtMjAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKG5vdF9hY2Nlc3NpYmxlX3ApOiBVc2UgbWVtYmVyJ3MgY2xhc3MsIG5vdCBjdXJyZW50CgljbGFzcywgd2hlbiBkb2luZyBpbmhlcml0YW5jZSBjaGVjayBmb3IgcHJvdGVjdGVkIHJlZmVyZW5jZS4KCUZpeGVzIFBSIGdjai8xMjQuCgoyMDAwLTA0LTIwICBKYXNvbiBTY2hyb2VkZXIgIDxzaHJvZGVAc3VibmF0dXJlLmNvbT4KCgkqIGpjZi1kdW1wLmMgKFNQRUNJQUxfSUlOQyk6IEZpeGVkIHR5cG8gcHJpbnRpbmcgaWluYyBpbnN0cnVjdGlvbi4KCjIwMDAtMDQtMTkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAobG9va3VwX2ZpZWxkX3dyYXBwZXIpOiBTZWFyY2ggZm9yIGZpbmFsIGxvY2FsIGFsaWFzZXMuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBMZXQgbG9va3VwX2ZpZWxkX3dyYXBwZXIgc2VhcmNoIGZvcgoJZmluYWwgbG9jYWwgYWxpYXNlcy4gRm9yY2UgdGhlIHZhbHVlIG9mIGBuYW1lJyBpZiBvbmUgaXMgZm91bmQuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IENPTlZFUlRfRVhQUiBpcyBlbm91Z2ggdG8gbm93IHdlIGhhdmUKCWFuIGV4cHJlc3Npb24gbmFtZS4gRml4ZWQgY29tbWVudHMuCgoyMDAwLTA0LTE5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHl5ZXJyb3IpOiBgbXNnJyBjYW4gYmUgbnVsbCwgZG9uJ3QgdXNlIGl0IGluIHRoYXQgY2FzZS4KCjIwMDAtMDQtMTkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChjeHhfa2V5d29yZF9zdWJzdCk6IEF2b2lkIHBvdGVudGlhbCBpbmZpbml0ZSBsb29wLgoKMjAwMC0wNC0xOCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChtYXliZV9tYWtlX25lc3RlZF9jbGFzc19uYW1lKTogVXNlIGBvYnN0YWNrX2dyb3cwJy4KCjIwMDAtMDQtMTggIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCglQUiBnY2ovMjExOgoJKiBnamF2YWguYyAodXRmOF9jbXApOiBDaGFuZ2VkIHJldHVybiB2YWx1ZS4KCShjeHhfa2V5d29yZF9zdWJzdCk6IEhhbmRsZSBhbGwgQysrIGtleXdvcmRzLiAgQWxsb2NhdGUgbmV3IHJldHVybgoJcmVzdWx0LgoJKGN4eF9rZXl3b3Jkcyk6IE5ldyBnbG9iYWwuCgkoZ2V0X2ZpZWxkX25hbWUpOiBIYW5kbGUgbmV3IHJlc3VsdCBvZiBjeHhfa2V5d29yZF9zdWJzdC4KCShwcmludF9tZXRob2RfaW5mbyk6IExpa2V3aXNlLgoKMjAwMC0wNC0xNyAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUBhbGJhdHJvc3MuY28ubno+CgoJKiBnamF2YWguYyAocHJpbnRfbmFtZV9mb3Jfc3R1Yl9vcl9qbmkpOiBEb24ndCBwcmVmaXggbWV0aG9kIG5hbWVzCgl3aXRoIGEgbmV3bGluZSwgZm9yIENOSS4KCShwcmludF9zdHViX29yX2puaSk6IFByaW50IGEgc3BhY2Ugb3IgbmV3bGluZSBiZWZvcmUgbWV0aG9kIG5hbWUgZm9yCglDTkkgYXMgd2VsbCBhcyBKTkkuCgkocHJpbnRfY3h4X2NsYXNzbmFtZSk6IERvbid0IHdyaXRlIGxlYWRpbmcgIjo6IiBpbiBDTkkgc3R1YiBtZXRob2QuCgkocHJvY2Vzc19maWxlKTogSW5jbHVkZSBnY2ovY25pLmggaWYgZ2VuZXJhdGluZyBDTkkgc3R1YnMuCgoyMDAwLTA0LTE2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAoZGVjb21waWxlX21ldGhvZCk6IFVzZSBwcmludF9maWVsZF9uYW1lLgoJRml4ZXMgUFIgZ2NqLzIwNS4KCjIwMDAtMDQtMTQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoamF2YV9leHBhbmRfY2xhc3Nlcyk6IFJldmVyc2UgdGhlIHBhY2thZ2UgbGlzdCBvbmNlLgoJKGphdmFfY29tcGxldGVfbGhzKTogUExVU19FWFBSOiBkb24ndCB0cnkgcmhzIGFuZCBsaHMgYXQgc3RyaW5nCglyZWR1Y3Rpb24uCgkocGF0Y2hfYmlub3ApOiBOZXcgdGVtcCBgY24nLiBDYWxsIHBhdGNoX3N0cmluZyBvbiBMSFMvUkhTIG9mCgl0aGUgYD09JyBhbmQgYCE9JyBvcGVyYXRvcnMuCgoyMDAwLTA0LTA1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IEF0IGludm9jYXRpb24gdGltZSwKCWFsd2F5cyByZWxhdGUgYW4gaW50ZXJmYWNlIG1ldGhvZCB0byB0aGUgdHlwZSBvZiBpdHMgc2VsZWN0b3IuCgoyMDAwLTA0LTA1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJRml4IGZvciBQUiBnY2ovMjoKCSogZXhwci5jIChleHBhbmRfaW52b2tlKTogR2VuZXJhdGUgY2hlY2sgdG8gc2VlIGlmIG9iamVjdCBwb2ludGVyCglpcyBudWxsIGluIG5vbnZpcnR1YWwgaW52b2NhdGlvbiBjYXNlLgoJKiBqYXZhLXRyZWUuaCAoc29mdF9udWxscG9pbnRlcl9ub2RlKTogRGVjbGFyZS4KCSogZGVjbC5jIChzb2Z0X251bGxwb2ludGVyX25vZGUpOiBOZXcgZ2xvYmFsLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBzb2Z0X251bGxwb2ludGVyX25vZGUuCgkqIHBhcnNlLnkgKGludm9jYXRpb25fbW9kZSk6IFJldHVybiBJTlZPS0VfTk9OVklSVFVBTCBmb3IgYGZpbmFsJwoJb3IgYHByaXZhdGUnIG1ldGhvZHMuCgkocGF0Y2hfaW52b2tlKTogSGFuZGxlIElOVk9LRV9OT05WSVJUVUFMIGNhc2UuCgoyMDAwLTA0LTA1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJRml4IGZvciBQUiBnY2ovMTQwOgoJKiBwYXJzZS55IChjaGVja19maW5hbF9hc3NpZ25tZW50KTogUmVjb2duaXplIGFzc2lnbm1lbnRzIHRvIHRoZQoJYGxlbmd0aCcgZmllbGQgb2YgYW4gYXJyYXkgd2hlbiBnZW5lcmF0aW5nIGNsYXNzIGZpbGVzLgoKMjAwMC0wNC0wNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChkZWNsX2hhc2gpOiBQcm90b3R5cGUgcmVtb3ZlZC4KCShkZWNsX2NvbXBhcmUpOiBMaWtld2lzZS4KCjIwMDAtMDQtMDUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLmggKFRISVNfTU9ESUZJRVJfT05MWSk6IENoYW5nZWQgbWVhbmluZyBvZiBgdicgcGFyYW1ldGVyLgoJKiBwYXJzZS55IChjaGVja19tb2RpZmllcnNfY29uc2lzdGVuY3kpOiBDaGVjayBmb3IgZmluYWwvdm9sYXRpbGUKCWNsYXNoLiAgRml4ZXMgUFIgZ2NqLzE2NC4KCjIwMDAtMDQtMDUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYzogKGphdmFfaGFzaF9oYXNoX3RyZWVfbm9kZSk6IFJlbmFtZWQgZnJvbSBgZGVjbF9oYXNoJywKCW1hZGUgZ2xvYmFsLgoJKGphdmFfaGFzaF9jb21wYXJlX3RyZWVfbm9kZSk6IFJlbmFtZWQgZnJvbSBgZGVjbF9jb21wYXJlLCBtYWRlCglnbG9iYWwuCgkoYWRkX21ldGhvZF8xKTogVXNlIGBqYXZhX2hhc2hfaGFzaF90cmVlX25vZGUnIGFuZAoJYGphdmFfaGFzaF9jb21wYXJlX3RyZWVfbm9kZScuCgkqIGphdmEtdHJlZS5oOiAoamF2YV9oYXNoX2hhc2hfdHJlZV9ub2RlKTogUHJvdG90eXBlZC4KCShqYXZhX2hhc2hfY29tcGFyZV90cmVlX25vZGUpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogQ3JlYXRlLAoJZGVsZXRlIGFuZCB1c2UgYSBoYXNoIHRhYmxlIHRvIHJlbWVtYmVyIGFscmVhZHkgc2VhcmNoZWQgaW50ZXJmYWNlcy4KCjIwMDAtMDQtMDMgIE1hdHQgV2Vsc2ggIDxtZHdAY3MuYmVya2VsZXkuZWR1PgoKCSogamNmLWRlcGVuZC5jIChhZGRfZW50cnkpOiBGaXhlZCBidWcgd2hlcmUgbGlzdCB3YXMgYWx3YXlzIHJlcGxhY2VkCgl3aXRoIGxhdGVzdCBlbnRyeS4KCjIwMDAtMDQtMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJvZWhtLmMgKG1hcmtfcmVmZXJlbmNlX2ZpZWxkcywgc2V0X2JpdCk6IFByb3RvdHlwZS4KCShzZXRfYml0KTogVW4tQU5TSS1meSBkZWZpbml0aW9uLgoKCSogY2xhc3MuYyAoaW5pdF90ZXN0X2hhc2hfbmV3ZnVuYywgZGVjbF9oYXNoLCBkZWNsX2NvbXBhcmUpOgoJUHJvdG90eXBlLgoKCSogZGVjbC5jIChlbWl0X2luaXRfdGVzdF9pbml0aWFsaXphdGlvbik6IExpa2V3aXNlLgoKCSogZ2phdmFoLmMgKGpuaV9wcmludF9jaGFyKTogTGlrZXdpc2UuCgoJKiBwYXJzZS55IChjcmVhdGVfbmV3X3BhcnNlcl9jb250ZXh0KTogTGlrZXdpc2UuCgoyMDAwLTAzLTMwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogQWRkZWQgQW50aG9ueSdzIFRodSBKYW4gNiAyMDAwCglwYXRjaCBtaXNzaW5nIGh1bmsuIEZpeGVkIGluZGVudGF0aW9uLgoKMjAwMC0wMy0zMCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKERfTkFOX01BU0spOiBPbmx5IGRlZmluZSBhcyB3b3JkLXJldmVyc2VkIHdoZW4KCUhPU1RfRkxPQVRfV09SRFNfQklHX0VORElBTiBhbmQgSE9TVF9XT1JEU19CSUdfRU5ESUFOIGRpc2FncmVlLgoKMjAwMC0wMy0yOCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS1zY2FuLnkgKHBvcF9jbGFzc19jb250ZXh0KTogUmVzZXQgYGlubmVyX3F1YWxpZmllcl9sZW5ndGgnCgl3aGVuIG5lZ2F0aXZlICpiZWZvcmUqIHVzaW5nIGl0IGFzIGFuIGFycmF5IGluZGV4LgoJKiBDaGFuZ2VMb2c6IEZpeGVkIHR5cG8uCgoyMDAwLTAzLTI4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLXNjYW4ueSAocG9wX2NsYXNzX2NvbnRleHQpOiBSZXNldCBgaW5uZXJfcXVhbGlmaWVyX2xlbmd0aCcKCXRvIDAgd2hlbiBpdCByZWFjaGVzIC0xLgoKMjAwMC0wMy0yNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NvbnN0YW50KTogUHJvcGVybHkgY2FzdCBgbnVtJyBkdXJpbmcgdGhlCglpbnZvY2F0aW9uIG9mIGBhZGRfZG91YmxlJy4KCSogamNmLXdyaXRlLmMgKHB1c2hfbG9uZ19jb25zdCk6IFByb3Blcmx5IGNhc3QgYGxvJyBiZWZvcmUKCWNvbXBhcmluZyBpdCB0byBzaG9ydCBib3VuZHMuCgkqIHBhcnNlLXNjYW4ueSAoaW50ZXJmYWNlX2RlY2xhcmF0aW9uOik6IFJ1bGUgcmUtYXJyYW5nZSBzbyB0aGF0CglgaW50ZXJmYWNlX2JvZHk6JyBpcyByZWR1Y2VkIGFmdGVyIHRoZSBjdXJyZW50IGludGVyZmFjZSBpcwoJcHVzaGVkLgoKMjAwMC0wMy0yNiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSoganZzcGVjLmMgKGp2Z2VubWFpbl9zcGVjKTogQWRkIGAlezwuLi59JyBjb25zdHJ1Y3QgZm9yIGVhY2gKCUphdmEtc3BlY2lmaWMgYC1mJyBvcHRpb24uCgoyMDAwLTAzLTI2ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IE9ubHkgY2FsbCBpbml0aWFsaXplX3NpemV0eXBlcyBvbmNlLgoJQWRqdXN0IG9yZGVyIG9mIG1ha2luZyB0eXBlcy4KCU1ha2UgYml0c2l6ZV8qX25vZGUgdmFsdWVzLgoKMjAwMC0wMy0yNSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNsYXNzLmMgKG1ha2VfZmllbGRfdmFsdWUpOiBVc2UgYnl0ZV9wb3NpdGlvbi4KCSogZXhwci5jIChKQVZBX0FSUkFZX0xFTkdUSF9PRkZTRVQpOiBVc2UgYnl0ZV9wb3NpdGlvbi4KCShqYXZhX2FycmF5X2RhdGFfb2Zmc2V0KTogTGlrZXdpc2UuCgkqIGphdmEtdHJlZS5oIChNQVlCRV9DUkVBVEVfVFlQRV9UWVBFX0xBTkdfU1BFQ0lGSUMpOiBBZGQgY2FzZSB0bwoJYnplcm8gY2FsbC4KCjIwMDAtMDMtMjIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2RlZmluaXRpb25zKTogTmV3IGxvY2FsCglgZW5kX3R5cGVfcmVhY2hlZCcuIE1ha2Ugc3VyZSB3ZSBhbHNvIGNvbnNpZGVyIGBlbmRfdHlwZScuCgkoamF2YV9jaGVja19hYnN0cmFjdF9tZXRob2RfZGVmaW5pdGlvbnMpOiBNYWtlIHN1cmUgd2UgZXZlbnR1YWxseQoJY29uc2lkZXIgYGphdmEubGFuZy5PYmplY3QnLgoJKG1heWJlX3VzZV9hY2Nlc3NfbWV0aG9kKTogRG9uJ3QgdXNlIGFjY2VzcyBtZXRob2QgaWYgbm90IGluIHRoZQoJY29udGV4dCBvZiBhIHB1cmUgaW5uZXIgY2xhc3Mgb3IgaWYgdGhlIG1ldGhvZCdzIGNvbnRleHQgaXMgcmlnaHQuCgkoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogTmV3IHN0YXRpYyBmbGFnCglgb2JqZWN0X2RvbmUnLiBEb24ndCBzZWFyY2ggYWJzdHJhY3QgY2xhc3NlcyBhcyBpbnRlcmZhY2VzLiBGaXhlZAoJaW5kZW50YXRpb24uIEZpeGVkIHRoZSBgamF2YS5sYW5nLk9iamVjdCcgb25seSBzZWFyY2guIFNlYXJjaAoJY2xhc3MgaW50ZXJmYWNlKHMpIGZpcnN0LCB0aGVuIGZ1bGx5IHNlYXJjaCBlbmNsb3NpbmcgY29udGV4dHMuCgkoZmluZF9tb3N0X3NwZWNpZmljX21ldGhvZHNfbGlzdCk6IFBpY2sgdGhlIGNsb3Nlc3QgY2FuZGlkYXRlIHdoZW4KCXRoZXkncmUgYWxsIGFic3RyYWN0LgoKMjAwMC0wMy0yMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBUUllfRklOQUxMWV9FWFBSOgoJcHJvcGVybHkgaW5pdGlhbGl6ZSBgZmluaXNoZWRfbGFiZWwnLiBEb24ndCBlbWl0IGdvdG9zIGZvciBlbXB0eQoJdHJ5IHN0YXRlbWVudHMuCgoyMDAwLTAzLTE5ICBNYXJ0aW4gdi4gTG9ld2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZXhjZXB0LmMgKGVtaXRfaGFuZGxlcnMpOiBDbGVhciBjYXRjaF9jbGF1c2VzX2xhc3QuCgoyMDAwLTAzLTE3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGNoZWNrX21ldGhvZF90eXBlc19jb21wbGV0ZSk6IE5ldyBmdW5jdGlvbi4KCShjcmVhdGVfY2xhc3MpOiBSZXNldCBhbm9ueW1vdXMgY2xhc3MgY291bnRlciBvbmx5IHdoZW4gc2VlaW5nIGFuCglub24gaW5uZXIgY2xhc3NlLgoJKGphdmFfY29tcGxldGVfY2xhc3MpOiBKREVQX01FVEhPRDogRG9uJ3QgcmVjb21wdXRlIHNpZ25hdHVyZQoJaWYgaW5jb21wbGV0ZS4KCjIwMDAtMDMtMTcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfc3RhdGljX3JlZik6IEZpeGVkIGluZGVudGF0aW9uIGluIGNvbW1lbnQuCgkqIGphdmEtdHJlZS5kZWYgKFRSWV9FWFBSKTogRml4ZWQgdHlwbyBpbiBuYW1lLgoJKENMQVNTX0xJVEVSQUwpOiBMaWtld2lzZS4KCSogamF2YS10cmVlLmg6IChUWVBFX0RPVF9DTEFTUyk6IE5ldyBtYWNyby4KCShzdHJ1Y3QgbGFuZ190eXBlKTogTmV3IGZpZWxkIGBkb3RfY2xhc3MnLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBGaXhlZCBlcnJvciBtZXNzYWdlLgoJKGdlbmVyYXRlX2NsYXNzZmlsZSk6IE1ldGhvZCBgY2xhc3MkJyBpcyBzeW50aGV0aWMuCgkqIHBhcnNlLnkgKGJ1aWxkX2RvX2NsYXNzX21ldGhvZCk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9kb3RfY2xhc3NfbWV0aG9kX2ludm9jYXRpb24pOiBMaWtld2lzZS4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogRXhwYW5kIFRZUEVfRE9UX0NMQVNTIGlmIG5lY2Vzc2FyeS4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBIYW5kbGUgQ0xBU1NfTElURVJBTC4KCShxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogTGlrZXdpc2UuCgkocGF0Y2hfaW5jb21wbGV0ZV9jbGFzc19yZWYpOiBJbnZva2Ugc3ludGhldGljIG1ldGhvZCBpZiBuZWNlc3NhcnkuCgkoYnVpbGRfdHJ5X3N0YXRlbWVudCk6IEZpeGVkIGxlYWRpbmcgY29tbWVudC4KCjIwMDAtMDMtMTcgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjbGFzcy5jIChtYWtlX2ZpZWxkX3ZhbHVlKTogUHJvcGVybHkgaGFuZGxlIHNpemVzLgoJKGdldF9kaXNwYXRjaF92ZWN0b3IpOiBVc2UgdHJlZV9sb3dfY3N0IGFuZCBob3N0X2ludGVnZXJwLgoJKGxheW91dF9jbGFzc19tZXRob2QpOiBDb3VudCB1c2luZyB0cmVlcy4KCSogZGVjbC5jIChwdXNoX3Byb21vdGVkX3R5cGUpOiBTZXQgVFlQRV97TUlOLE1BWH1fVkFMVUUgd2l0aCBjb3B5X25vZGUuCgkqIGV4cHIuYyAoamF2YV9hcnJheV9kYXRhX29mZnNldCk6IFVzZSBpbnRfYml0X3Bvc2l0aW9uLgoJKGJ1aWxkX25ld2FycmF5LCBidWlsZF9hbmV3YXJyYXkpOiBVc2UgaG9zdF9pbnRlZ2VycCBhbmQgdHJlZV9sb3dfY3N0LgoJKGJ1aWxkX2ludm9rZXZpcnR1YWwpOiBVc2UgdHJlZV9sb3dfY3N0IGFuZCBkbyBjb21wdXRhdGlvbnMgd2l0aCB0cmVlcy4KCjIwMDAtMDMtMTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGxhbmcuYyAoZmxhZ19oYXNoX3N5bmNocm9uaXphdGlvbik6IE5ldyBnbG9iYWwuCgkobGFuZ19mX29wdGlvbnMpOiBBZGRlZCBgaGFzaC1zeW5jaHJvbml6YXRpb24nLgoJKiBsYW5nLW9wdGlvbnMuaDogTWVudGlvbiAtZmhhc2gtc3luY2hyb25pemF0aW9uLgoJKiBqYXZhLXRyZWUuaCAoZmxhZ19oYXNoX3N5bmNocm9uaXphdGlvbik6IERlY2xhcmUuCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogT25seSBwdXNoIGBzeW5jX2luZm8nIHZhbHVlIHdoZW4KCWhhc2ggdGFibGUgc3luY2hyb25pemF0aW9uIGlzIGRpc2FibGVkLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogT25seSBwdXNoIGBzeW5jX2luZm8nIHZhbHVlIHdoZW4KCWhhc2ggdGFibGUgc3luY2hyb25pemF0aW9uIGlzIGRpc2FibGVkLgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBPbmx5IHB1c2ggYHN5bmNfaW5mbycgZmllbGQgd2hlbiBoYXNoCgl0YWJsZSBzeW5jaHJvbml6YXRpb24gaXMgZGlzYWJsZWQuICBSZW1vdmVkIGRlYWQgY29kZS4KCjIwMDAtMDMtMTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGxhbmcuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogRW5hYmxlIC1XdW51c2VkIHdoZW4gLVdhbGwgZ2l2ZW4uCgoyMDAwLTAzLTE1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLmggKElOTkVSX0VOQ0xPU0lOR19TQ09QRV9DSEVDSyk6IERpc3JlZ2FyZCBhbm9ueW1vdXMKCWNsYXNzZXMuCgkqIHBhcnNlLnkgKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogSGFuZGxlIGFub255bW91cyBjbGFzc2VzCgljcmVhdGlvbiBpbiBzdGF0aWMgY29udGV4dC4KCjIwMDAtMDMtMTUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UuaCAoSU5ORVJfRU5DTE9TSU5HX1NDT1BFX0NIRUNLKTogTmV3IG1hY3JvLgoJKiBwYXJzZS55IChyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBVc2UgaXQuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBMaWtld2lzZS4KCjIwMDAtMDMtMTUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocmVnaXN0ZXJfaW5jb21wbGV0ZV90eXBlKTogSkRFUF9FTkNMT1NJTkcgc2V0CglkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgZGVwZW5kZW5jeSB3aGljaCBkaWN0YXRlcyB3aGF0IHRoZQoJY3VycmVudCBjbGFzcyBpcy4KCSh1bnJlc29sdmVkX3R5cGVfcCk6IFJlc29sdmVkIHR5cGVzIGxpbWl0ZWQgdG8gdGhlIGN1cnJlbnQgY2xhc3MuCgoyMDAwLTAzLTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IHR5cGUgb2YgYHN5bmNfaW5mbycgdG8gYmUKCXBvaW50ZXIgdG8gT2JqZWN0LgoKCSogYm9laG0uYyAoZ2V0X2JvZWhtX3R5cGVfZGVzY3JpcHRvcik6IENvcnJlY3RseSBjb21wdXRlIGBiaXRzJy4KCUNvcnJlY3RseSBjb21wdXRlIGJpdCBudW1iZXIgZm9yIGN1cnJlbnQgc2xvdC4gIFplcm8gYGhpZ2gnIGFuZAoJYGxvdycgaW4gRFNfTEVOR1RIIGNhc2UuICBEb24ndCBza2lwIGluaGVyaXRlZCBmaWVsZHMuICBVc2UKCW1hcmtfcmVmZXJlbmNlX2ZpZWxkcy4KCShtYXJrX3JlZmVyZW5jZV9maWVsZHMpOiBOZXcgZnVuY3Rpb24uCgoyMDAwLTAzLTE0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHJlZ2lzdGVyX2luY29tcGxldGVfdHlwZSk6IEZpeGVkIGluaXRpYWxpemF0aW9uIG9mCglKREVQX0VOQ0xPU0lORy4KCjIwMDAtMDItMjggIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2Utc2Nhbi55IChpbm5lcl9xdWFsaWZpZXIsIGlubmVyX3F1YWxpZmllcl9sZW5ndGgpOiBOZXcKCXN0YXRpYyBnbG9iYWxzLgoJKHB1c2hfY2xhc3NfY29udGV4dCwgcG9wX2NsYXNzX2NvbnRleHQpOiBOZXcgZnVuY3Rpb24uCgkoY2xhc3NfYm9keTopOiBDYWxsIHBvcF9jbGFzc19jb250ZXh0LgoJKGludGVyZmFjZV9ib2R5Oik6IExpa2V3aXNlLgoJKElOTkVSX1FVQUxJRklFUik6IE5ldyBtYWNyby4KCShyZXBvcnRfY2xhc3NfZGVjbGFyYXRpb24pOiBDaGFuZ2VkIG91dHB1dCBmb3JtYXQgYW5kIHVzZQoJSU5ORVJfUVVBTElGSUVSLiBDYWxsIHB1c2hfY2xhc3NfY29udGV4dC4KCjIwMDAtMDItMTQgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogQWRkIG5ldyBjYXNlcyBmb3IgdW5hcnkgYW5kIGJpbmFyeQoJdHJlZSBub2Rlcy4KCjIwMDAtMDMtMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocmVzb2x2ZV9wYWNrYWdlKTogU2V0IGBuZXh0JyBvbmNlIGEgdHlwZSBuYW1lIGhhcyBiZWVuCglwcm9ncmVzc2l2ZWx5IGRpc2NvdmVyZWQuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogUHJvcGFnYXRlIHJlc29sdXRpb24gb25seSBpZgoJdGhlcmUgYXJlIHJlbWFpbmluZyBxdWFsaWZpZXJzLiBUYWtlIGludG8gYWNjb3VudCBgcScgbWlnaHQgaGF2ZQoJYmVlbiBjbGVhcmVkIGFmdGVyIHJlLXF1YWxpZmljYXRpb24uCgkqIHBhcnNlLnkgKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogTmV3IGxvY2FsIGByZXNvbHZlZCcuCglTZWN0aW9uIGRlYWxpbmcgd2l0aCBxdWFsaWZpZWQgZXhwcmVzc2lvbiByZXdyaXR0ZW4gdG8gdXNlCglyZXNvbHZlX2ZpZWxkX2FjY2Vzcy4KCjIwMDAtMDMtMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UuaCAoUFVTSF9DUEMpOiBGaXhlZCBpbmRlbnRhdGlvbi4KCShERUJVR19DUEMpOiBOZXcgbWFjcm8uCgkoU0VUX0NQQ19JTklUSUFMSVpFUl9TVE1ULCBTRVRfQ1BDX1NUQVRJQ19JTklUSUFMSVpFUl9TVE1ULAoJU0VUX0NQQ19JTlNUQU5DRV9JTklUSUFMSVpFUl9TVE1UKTogTmV3IG1hY3Jvcy4KCSogcGFyc2UueSAoY2xhc3NfYm9keV9kZWNsYXJhdGlvbjopOiBVc2UKCVNFVF9DUENfSU5TVEFOQ0VfSU5JVElBTElaRVJfU1RNVC4KCShtZXRob2RfZGVjbGFyYXRpb246KTogQ2hlY2sgZm9yIG51bGwgY3VycmVudF9mdW5jdGlvbl9kZWNsLgoJKHN0YXRpY19pbml0aWFsaXplcjopOiBVc2UgU0VUX0NQQ19TVEFUSUNfSU5JVElBTElaRVJfU1RNVC4KCShqYXZhX3BhcnNlcl9jb250ZXh0X3BvcF9pbml0aWFsaXplZF9maWVsZCk6IEJldHRlciBoYW5kbGluZyBvZgoJZW1wdHkgbGlzdHMuCgkobWF5YmVfbWFrZV9uZXN0ZWRfY2xhc3NfbmFtZSk6IE1hcmsgbmVzdGVkIGNsYXNzIG5hbWUgYXMKCXF1YWxpZmllZCB3aGVuIG5lY2Vzc2FyeS4KCShlbmRfY2xhc3NfZGVjbGFyYXRpb24pOiBEb24ndCBjYWxsIGphdmFfcGFyc2VfY29udGV4dF9yZXN1bWUgd2hlbgoJb25lIG9yIG1vcmUgZXJyb3Igb2NjdXJyZWQuCgkoYWRkX2lubmVyX2NsYXNzX2ZpZWxkcyk6IFVzZSBTRVRfQ1BDX0lOSVRJQUxJWkVSX1NUTVQuCgkocmVnaXN0ZXJfZmllbGRzKTogVXNlIFNFVF9DUENfU1RBVElDX0lOSVRJQUxJWkVSX1NUTVQgYW5kCglTRVRfQ1BDX0lOSVRJQUxJWkVSX1NUTVQuCgkobWV0aG9kX2hlYWRlcik6IENoZWNrIGZvciBpbm5lciBjbGFzc2VzIGRlY2xhcmluZyBzdGF0aWMgbWV0aG9kcy4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBIYW5kbGUgc2l0dWF0aW9uIHdoZXJlIGB0aGlzJwoJaXMgaW1wbGllZC4KCjIwMDAtMDMtMTMgIEhhbnMgQm9laG0gPGJvZWhtQGFjbS5vcmc+CgoJKiB0eXBlY2suYyAoYnVpbGRfcHJpbV9hcnJheV90eXBlKTogQ29ycmVjdGx5IHNldCB0aGUgaGlnaCB3b3JkIHRvby4KCjIwMDAtMDMtMDkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IExlYXZlIDxjbGluaXQ+IG91dCBvZgoJb3JkaW5hcnkgbWV0aG9kcy4KCShtYXliZV9nZW5lcmF0ZV9wcmVfZXhwYW5kX2NsaW5pdCk6IFB1dCA8Y2xpbml0PiBhdCB0aGUgZW5kIG9mIHRoZQoJbGlzdCBvZiBtZXRob2RzIGZvciBpbnRlcmZhY2VzLgoKMjAwMC0wMy0wNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogUHJvcGVybHkgaGFuZGxlIGV4cHJlc3Npb25zCgl1c2luZyBgbnVsbCcuCgoyMDAwLTAzLTA3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGNoZWNrX2ZpbmFsX2Fzc2lnbm1lbnQpOiBFeHRlbmRlZCB0byBwcm9jZXNzCglDT01QT1VORF9FWFBSLgoJKHBhdGNoX2Fzc2lnbm1lbnQpOiBIYXZlIGNoZWNrX2ZpbmFsX2Fzc2lnbm1lbnQgY2FsbGVkIG9ubHkgb25jZS4KCjIwMDAtMDMtMDcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmggKElTX0lOSVRfQ0hFQ0tFRCk6IE5ldyBmbGFnLgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBUZXN0IGFuZCBzZXQgSVNfSU5JVF9DSEVDS0VELgoJKiBwYXJzZS55IChwYXRjaF9zdHJpbmcpOiBDYWxsIGZvcmNlX2V2YWx1YXRpb25fb3JkZXIgb24gdGhlCgljb21wbGV0ZWQgc3RyaW5nIGNvbmNhdGVuYXRpb24gdHJlZS4KCSogZXhwci5jIChmb3JjZV9ldmFsdWF0aW9uX29yZGVyKTogQ2FsbCBmb3JjZV9ldmFsdWF0aW9uX29yZGVyIG9uCglmdW5jdGlvbidzIGFyZ3VtZW50cyB0b28uCgoyMDAwLTAzLTA2ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZGVjbC5jIChlbWl0X2luaXRfdGVzdF9pbml0aWFsaXphdGlvbik6IE1hcmsgS0VZIGFzIHVudXNlZC4KCSogZXhwci5jIChidWlsZF9uZXdhcnJheSk6IENhc3QgVFJFRV9JTlRfQ1NUX0xPVyB0byBIT1NUX1dJREVfSU5ULgoJKGJ1aWxkX2FuZXdhcnJheSk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChwYXRjaF9uZXdhcnJheSk6IExpa2V3aXNlLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCjIwMDAtMDMtMDYgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkZGVkIG5ldyBjbGFzcyBmaWVsZHMgYGRlcHRoJywKCWBhbmNlc3RvcnMnLCBhbmQgYGlkdCcgdG8gY2xhc3NfdHlwZV9ub2RlLiBVc2UKCV9Kdl9Mb29rdXBJbnRlcmZhY2VNZXRob2RJZHggZm9yIHNvZnRfbG9va3VwaW50ZXJmYWNlbXRob2Rfbm9kZS4KCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogUHVzaCBpbml0aWFsIHZhbHVlcyBmb3IgbmV3IGZpZWxkcy4KCSogamF2YS10cmVlLmg6IFVwZGF0ZWQgcHJvdG90eXBlIGZvciBgYnVpbGRfaW52b2tlaW50ZXJmYWNlJy4KCSogZXhwci5jIChidWlsZF9pbnZva2VpbnRlcmZhY2UpOiBDaGFuZ2VkIHBhcmFtZXRlcnMgdG8gYWNjZXB0CglgbWV0aG9kJyB0cmVlLiBDYWxjdWxhdGUgaW5kZXggb2YgYG1ldGhvZCcgaW4gaXRzIGRlY2xhcmluZwoJaW50ZXJmYWNlLiBCdWlsZCBjYWxsIHRvIF9Kdl9Mb29rdXBJbnRlcmZhY2VNZXRob2RJZHguCgkoZXhwYW5kX2ludm9rZSk6IENhbGwgYGJ1aWxkX2ludm9rZWludGVyZmFjZScgd2l0aCBuZXcgcGFyYW1ldGVycy4KCSogcGFyc2UueSAocGF0Y2hfaW52b2tlKTogQ2FsbCBgYnVpbGRfaW52b2tlaW50ZXJmYWNlJyB3aXRoIG5ldwoJcGFyYW1ldGVycy4KCjIwMDAtMDMtMDYgIEJyeWNlIE1jS2lubGF5IDxicnljZUBhbGJhdHJvc3MuY28ubno+CgoJKiB0eXBlY2suYyAobG9va3VwX2RvKTogU2VhcmNoIHN1cGVyaW50ZXJmYWNlcyBmaXJzdAoJd2hlbiBsb29raW5nIHVwIGFuIGludGVyZmFjZSBtZXRob2QuIEZyb20gR29kbWFyIEJhY2sKCTxnYmFja0Bjcy51dGFoLmVkdT4KCjIwMDAtMDMtMDYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoSkFWQV9TUkNTKTogQWRkZWQgYm9laG0uYywgbGV4LmMuCgoyMDAwLTAzLTAyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5oIChsb29rdXBfYXJndW1lbnRfbWV0aG9kMik6IERlY2xhcmVkLgoJKHNhZmVfbGF5b3V0X2NsYXNzKTogUHJvdG90eXBlIG1vdmVkIGZyb20gcGFyc2UuaC4KCSogcGFyc2UuaCAoc2FmZV9sYXlvdXRfY2xhc3MpOiBQcm90b3R5cGUgbW92ZWQgdG8gamF2YS10cmVlLmguCgkqIHBhcnNlLnkgKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogTG9jYWwgYHN1cGVyX2NsYXNzJyBnb25lLgoJQ2FsbCBsb29rdXBfYXJndW1lbnRfbWV0aG9kMiBpbnN0ZWFkIG9mIGxvb2t1cF9hcmd1bWVudF9tZXRob2QuCglQZXJmb3JtIG1vZGlmaWVyIG1hdGNoIGZvciBtZXRob2RzIGZvdW5kIGRlY2xhcmVkIGluIGltcGxlbWVudGVkCglpbnRlcmZhY2VzLiBGaXhlZCBpbmRlbnRhdGlvbiBwcm9ibGVtLiBPdmVycmlkaW5nL2hpZGluZyBlcnJvcgoJcmVwb3J0IHRvIHRha2UgcGxhY2Ugb25seSBmb3IgbWV0aG9kcyBmb3VuZCBpbiBjbGFzc2VzLgoJKiB0eXBlY2suYyAobG9va3VwX2FyZ3VtZW50X21ldGhvZCk6IENoYW5nZWQgbGVhZGluZwoJY29tbWVudC4gUmUtd3JpdHRlbiBieSBjYWxsaW5nIGxvb2t1cF9kby4KCShsb29rdXBfYXJndW1lbnRfbWV0aG9kMik6IE5ldyBmdW5jdGlvbi4KCShsb29rdXBfamF2YV9tZXRob2QpOiBSZS13cml0dGVuIGJ5IGNhbGxpbmcgbG9va3VwX2RvLgoJKGxvb2t1cF9kbyk6IE5ldyBmdW5jdGlvbi4KCjIwMDAtMDMtMDIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogUmVtb3ZlZCBkZWFkIGNvZGUuIEhhbmRsZSAoYmxhbmspCglmaW5hbCB2YXJpYWJsZXMuCgkqIHBhcnNlLnkgKGRlY2xhcmVfbG9jYWxfdmFyaWFibGVzKTogTmV3IGxvY2FsIGBmaW5hbF9wJywgc2V0IGl0CglhbmQgdXNlIGl0IHRvIGluaXRpYWxpemUgTE9DQUxfRklOQUwuCgkoY2hlY2tfZmluYWxfYXNzaWdubWVudCk6IE9ubHkgY2hlY2sgRklFTERfREVDTHMuCgoyMDAwLTAyLTE3ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoSkFWQV9PQkpTKTogQWRkZWQgYm9laG0uby4KCShib2VobS5vKTogTmV3IHRhcmdldC4KCSogTWFrZS1sYW5nLmluIChKQVZBX1NSQ1MpOiBBZGRlZCBib2VobS5jLgoJKiBqYXZhLXRyZWUuaCAoZmxhZ191c2VfYm9laG1fZ2MpOiBEZWNsYXJlLgoJKGdldF9ib2VobV90eXBlX2Rlc2NyaXB0b3IpOiBEZWNsYXJlLgoJKiBsYW5nLmMgKGxhbmdfZl9vcHRpb25zKTogQWRkZWQgYHVzZS1ib2VobS1nYycuCgkoZmxhZ191c2VfYm9laG1fZ2MpOiBOZXcgZ2xvYmFsLgoJKiBsYW5nLW9wdGlvbnMuaDogQWRkZWQgLWZ1c2UtYm9laG0tZ2MuCgkqIGJvZWhtLmM6IE5ldyBmaWxlLgoJKiBjbGFzcy5jIChnZXRfZGlzcGF0Y2hfdGFibGUpOiBJZiBjbGFzcyB1c2VzIGEgQm9laG0gdHlwZQoJZGVzY3JpcHRvciwgcHV0IGl0IGluIHRoZSB2dGFibGUuCgkobWFrZV9jbGFzc19kYXRhKTogUmVtb3ZlZCBkZWFkIGNvZGUuCgoyMDAwLTAzLTAzICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiAgSW5pdGlhbGl6ZSBzaXpldHlwZSBwcm9wZXJseS4KCjIwMDAtMDMtMDEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmggKExPQ0FMX0NMQVNTX1ApOiBOZXcgZmxhZyB1c2FnZSBhbmQgbWFjcm8uCgkoUFVSRV9JTk5FUl9DTEFTU19ERUNMX1AsIFBVUkVfSU5ORVJfQ0xBU1NfVFlQRV9QKTogTmV3IG1hY3Jvcy4KCSogamNmLWR1bXAuYyAoSEFORExFX0lOTkVSQ0xBU1NFU19BVFRSSUJVVEUpOiBOZXcgbWFjcm8uCgkqIGpjZi1wYXJzZS5jIChIQU5ETEVfSU5ORVJDTEFTU0VTX0FUVFJJQlVURSk6IExpa2V3aXNlLgoJKGpjZl9wYXJzZSk6IE5ldyBsb2NhbCBgY3VycmVudCcuIExvYWQgaW5uZXJjbGFzc2VzIHNlZW4gaW4gb3V0ZXIKCWNvbnRleHQgYmVpbmcgcHJvY2Vzc2VkLgoJKiBqY2YtcmVhZGVyLmMgKEhBTkRMRV9JTk5FUkNMQVNTRVNfQVRUUklCVVRFKTogTmV3IG1hY3JvLgoJKiBqY2Ytd3JpdGUuYyAoYXBwZW5kX2lubmVyY2xhc3Nlc19hdHRyaWJ1dGUpOiBOZXcgZnVuY3Rpb24uCgkoYXBwZW5kX2lubmVyY2xhc3Nlc19hdHRyaWJ1dGVfZW50cnkpOiBMaWtld2lzZS4KCShnZXRfYWNjZXNzX2ZsYWdzKTogSGFuZGxlIHN0YXRpYyBjbGFzc2VzLiBTZXQgYW5vbnltb3VzIGFuZCBsb2NhbAoJY2xhc3NlcyB0byBiZSBwcml2YXRlLgoJKGdlbmVyYXRlX2NsYXNzZmlsZSk6IEF0dHJpYnV0ZSBjb3VudCBhZGp1c3RlZC4gQ2FsbAoJYXBwZW5kX2lubmVyY2xhc3Nlc19hdHRyaWJ1dGUuCgkqIHBhcnNlLmggKFNLSVBfVEhJU19BTkRfQVJUSUZJQ0lBTF9QQVJNUyk6IFVzZQoJUFVSRV9JTk5FUl9DTEFTU19UWVBFX1AuCgkqIHBhcnNlLnkgKHBhcnNlcl9xdWFsaWZpZWRfY2xhc3NuYW1lKTogTmV3IHBhcmFtZXRlciBgaXNfc3RhdGljJywKCXByb2R1Y2Ugbm9uIHF1YWxpZmllZCBuYW1lIGFjY29yZGluZ2x5LgoJKGJsb2NrX3N0YXRlbWVudDopOiBTZXQgTE9DQUxfQ0xBU1NfUCB3aGVuIGRlY2xhcmluZyBsb2NhbCBjbGFzcy4KCShjcmVhdGVfaW50ZXJmYWNlKTogQWRkZWQgYXJndW1lbnQgdG8gcGFyc2VyX3F1YWxpZmllZF9jbGFzc25hbWUuCgkoY3JlYXRlX2NsYXNzKTogQWRkZWQgYXJndW1lbnQgdG8gcGFyc2VyX3F1YWxpZmllZF9jbGFzc25hbWUuIFNldHVwCglhbGlhcyBmb3IgdG9wIGxldmVsIGNsYXNzZXMuIFVzZSBQVVJFX0lOTkVSX0NMQVNTX0RFQ1BfUC4KCShhZGRfaW5uZXJfY2xhc3NfZmllbGRzKTogRml4ZWQgaW5kZW50YXRpb24uCgkobWV0aG9kX2RlY2xhcmF0b3IpOiBVc2UgUFVSRV9JTk5FUl9DTEFTU19ERUNQX1AuCgkobWV0aG9kX2RlY2xhcmF0b3IpOiBGaXhlZCB0eXBvIGluIGNvbW1lbnQuCgkoY3JhZnRfY29uc3RydWN0b3IpOiBVc2UgUFVSRV9JTk5FUl9DTEFTU19ERUNQX1AuCgkoYnVpbGRfY3VycmVudF90aGlzbik6IExpa2V3aXNlLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogTGlrZXdpc2UuCgoyMDAwLTAzLTAxICBNYXJ0aW4gdm9uIExvZXdpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGRlY2wuYyAoY3VycmVudF9mdW5jdGlvbl9kZWNsKTogTW92ZSB0byB0b3BsZXYuYy4KCjIwMDAtMDItMjggIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBqYXZhLXRyZWUuaCAoTEFCRUxfUEMpOiBSZWxlY3QgbmFtZSBjaGFuZ2VzIGluIC4uL3RyZWUuaC4KCShERUNMX0JJVF9JTkRFWCk6IFVzZSB1bmRlcmx5aW5nIHJlcHJlc2VudGF0aW9uLgoJKiBwYXJzZS5oIChERUNMX0lOSEVSSVRFRF9TT1VSQ0VfTElORSk6IExpa2V3aXNlLgoKMjAwMC0wMi0yNyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9yZXQpOiBQYXNzIHByb3BlciB0eXBlIHRvIHNpemVfYmlub3AuCgoyMDAwLTAyLTI1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfY2xhc3NfaW5pdCk6IE1hcmsgdGhlIGRlY2wgdG8gYmUgaWdub3JlZCBieQoJY2hlY2tfaW5pdC4KCSogamF2YS10cmVlLmggKERFQ0xfQklUX0lOREVYKTogTW92ZSBkZWZpbml0aW9uIGZyb20gY2hlY2staW5pdC5jCgkqIGNoZWNrLWluaXQuYzogTW92ZSBERUNMX0JJVF9JTkRFWCB0byBqYXZhLXRyZWUuaAoJKiBjbGFzcy5jIChpbml0X3Rlc3RfaGFzaF9uZXdmdW5jKTogTmV3IGZ1bmN0aW9uLgoJKGRlY2xfaGFzaCk6IE5ldyBmdW5jdGlvbi4KCShkZWNsX2NvbXBhcmUpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAoZW1pdF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb24pOiBOZXcgZnVuY3Rpb24uCgkoY29tcGxldGVfc3RhcnRfamF2YV9tZXRob2QpOiBUcmF2ZXJzZSB0aGUgaW5pdCB0ZXN0IGhhc2h0YWJsZSwKCWNhbGxpbmcgZW1pdF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb24uCgkoYWx3YXlzX2luaXRpYWxpemVfY2xhc3NfcCk6IERlZmluZS4KCSogZXhwci5jIChidWlsZF9jbGFzc19pbml0KTogVXNlIGluaXRpYWxpemF0aW9uIHRlc3RzIHdoZW4KCWVtaXR0aW5nIGNsYXNzIGluaXRpYWxpemF0aW9uIGNvZGUuCgkoYWx3YXlzX2luaXRpYWxpemVfY2xhc3NfcCk6IERlY2xhcmUuCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9jbGFzc19maWxlKTogU2V0IGFsd2F5c19pbml0aWFsaXplX2NsYXNzX3AgdG8KCTEuCgkqIGphdmEtdHJlZS5oOiBJbmNsdWRlIGhhc2guaC4KCShERUNMX0ZVTkNUSU9OX0lOSVRfVEVTVF9UQUJMRSk6IERlZmluZS4KCShzdHJ1Y3QgbGFuZ19kZWNsKTogQWRkIGluaXRfdGVzdF90YWJsZSBmaWVsZC4KCShpbml0X3Rlc3RfaGFzaF9lbnRyeSk6IERlZmluZS4KCjIwMDAtMDItMjUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKG1haW4pOiBBdm9pZCB1c2luZyBgYXJnaScgdG8gcmVwb3J0IHVuaW1wbGVtZW50ZWQKCW9wdGlvbnMuCgoyMDAwLTAyLTI1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IFRSWV9GSU5BTExZX0VYUFI6Cglpbml0aWFsaXplIGxvY2FscyB0byBhdm9pZCB3YXJuaW5ncy4gTG9jYWwgYGV4Y2VwdGlvbl90eXBlJyBtb3ZlZAoJaW50byBpZiBzdGF0ZW1lbnQuCgoyMDAwLTAyLTI1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogVXNlIGBvcmlnJyBhcyBhIHNlY29uZAoJYXJndW1lbnQgdG8gcmVzb2x2ZV9maWVsZF9hY2Nlc3MuCgkocmVzb2x2ZV9maWVsZF9hY2Nlc3MpOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGNvZGUgd2hlbiBkZWFsaW5nIHdpdGgKCXN0YXRpYyBmaWVsZHMuCgoyMDAwLTAyLTIzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKHB1c2hfc3VwZXJfZmllbGQpOiBEb24ndCBwdXNoIHRoZSBmaWVsZCB0d2ljZS4KCSogamNmLXBhcnNlLmMgKHBhcnNlX3NvdXJjZV9maWxlKTogQ2FsbCBqYXZhX3Jlb3JkZXJfZmllbGRzLgoJKiBwYXJzZS5oIChqYXZhX3Jlb3JkZXJfZmllbGRzKTogUHJvdG90eXBlZC4KCSogcGFyc2UueSAoamF2YV9yZW9yZGVyX2ZpZWxkcyk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX2xheW91dF9jbGFzcyk6IFNpbXBsaWZpZWQgbm90IHRvIHdvcnJ5IGFib3V0IHJlLW9yZGVyaW5nLgoKMjAwMC0wMi0yMyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKHByaW50X25hbWUpOiBJbiBKTkkgY2FzZSwgY29ycmVjdGx5IHF1b3RlIHN0cmluZy4KCShwcmludF9tZXRob2RfaW5mbyk6IERvbid0IGhhbmRsZSBvdmVycmlkZXMgaW4gSk5JIG1vZGUuCgoyMDAwLTAyLTIyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogYF9Kdl9Jc0luc3RhbmNlT2YnIHJldHVybmVkCgl2YWx1ZSB0eXBlIHNldCB0byBgYm9vbGVhbl90eXBlX25vZGUnLgoKMjAwMC0wMS0xOCAgSm9lcmcgQnJ1bnNtYW5uICA8am9lcmcuYnJ1bnNtYW5uQGZlcm51bmktaGFnZW4uZGU+CgoJKiBqY2YtZHVtcC5jIChtYWluKTogVGVzdCBmb3IgY29ycmVjdCBjb25kaXRpb24gYWZ0ZXIKCW91dHB1dCBmaWxlIGNyZWF0aW9uLgoKMjAwMC0wMi0xOSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBqY2YtZGVwZW5kLmMgKGFkZF9lbnRyeSk6IEZpeCB0ZXN0IGZvciBmaXJzdCBsaXN0IGVudHJ5LgoKMjAwMC0wMi0xOSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNsYXNzLmMgKGJ1aWxkX2NsYXNzX3JlZiwgcHVzaF9zdXBlcl9maWVsZCk6IFNldCBERUNMX1NJWkVfVU5JVC4KCSogY29uc3RhbnRzLmMgKGJ1aWxkX2NvbnN0YW50c19jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoKMjAwMC0wMi0xOSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBqY2YtZGVwZW5kLmMgKGFkZF9lbnRyeSk6IEFkZCBlbnRyaWVzIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCgoxOTk5LTExLTAzICBQZWtrYSBOaWthbmRlciAgPHBla2thLm5pa2FuZGVyQGh1dC5maT4KCgkqIGRlY2wuYyAoSU5UX1RZUEVfU0laRSk6IERlZmluZSBpZiBuZWNlc3NhcnkuCgkoZXhwYW5kX2phdmFfcmV0dXJuKTogSGFuZGxlIHRoZSBjYXNlIG9mIGEgbmF0aXZlIGludGVnZXIgc21hbGxlcgoJdGhhbiBhIEpWTSBpbnRlZ2VyLgoKMjAwMC0wMi0xOCAgTWFydGluIHZvbiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBnamF2YWguYyAoaGVscCk6IFVzZSBHQ0NCVUdVUkwuCgkqIGp2LXNjYW4uYyAoaGVscCk6IExpa2V3aXNlLgoJKiBqY2YtZHVtcC5jIChoZWxwKTogTGlrZXdpc2UuCgoyMDAwLTAyLTE3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IERvbid0IGdlbmVyYXRlIGVtcHR5CglgZmluYWxseScgY2xhdXNlcy4KCjIwMDAtMDItMTcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmMgKGxvYWRfY2xhc3MpOiBDYWxsIGBmYXRhbCcgaWYgbm8gZmlsZSBjb250YWluaW5nCgl0aGUgdGFyZ2V0IGNsYXNzIGFyZSBmb3VuZC4KCjIwMDAtMDItMTYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIE1ha2VmaWxlLmluIChQQVJTRV9DLCBQQVJTRV9TQ0FOX0MpOiBNb3ZlIGRlcGVuZGVuY2llcyBvbgoJbGV4LmMsIGxleC5oLCBhbmQgUEFSU0VfSCB0by4uLgoJKHBhcnNlLm8sIHBhcnNlLXNjYW4ubyk6IC4uLmhlcmUsIHJlc3BlY3RpdmVseS4KCgkqIGxleC5jOiBTcGxpdCBvdXQgY29kZSB0aGF0IG1heSB0cmlnZ2VyIFNJR0ZQRSBmcm9tIHl5bGV4KCkKCXRvIGl0cyBvd24gZnVuY3Rpb24uCgkqIGxleC5oIChKQVZBX0ZMT0FUX1JBTkdFX0VSUk9SKTogRG9uJ3Qgc2V0IHZhbHVlLgoKMjAwMC0wMi0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluIChqdnNwZWMubyk6IERlcGVuZCBvbiAkKEdDQ19IKSwgbm90IGdjYy5oLgoKMjAwMC0wMi0xNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChvdXRlcl9maWVsZF9hY2Nlc3NfcCk6IFN0b3AgaW4gdGltZSB3aGVuIG91dGVyIGNvbnRleHRzCglhcmUgZXhoYXVzdGVkLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IFByb3Blcmx5IHF1YWxpZnkgKmV2ZXJ5dGhpbmcqCglhZnRlciBhIHBhY2thZ2UudHlwZSB0byBiZSByZXNvbGVkIGFzIGV4cHJlc3Npb24gbmFtZXMuCgkoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogU2F2ZS9yZXN0b3JlIGBjbGFzcycgdG8KCWlzb2xhdGUgaXQgZnJvbSBhIHBvc3NpYmxlIG91dGVyIGNvbnRleHQgc2VhcmNoLgoKMjAwMC0wMi0xNSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKGpuaV9wcmludF9jaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X2Z1bGxfY3h4X25hbWUpOiBVc2UgaXQuCgkoZGVjb2RlX3NpZ25hdHVyZV9waWVjZSk6IExpa2V3aXNlLgoJKHByaW50X2N4eF9jbGFzc25hbWUpOiBMaWtld2lzZS4KCjIwMDAtMDItMTUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChqdi1zY2FuLCBqY2YtZHVtcCwgZ2NqaCk6IERlcGVuZCBvbiBhbmQgbGluayB3aXRoCgl2ZXJzaW9uLm8uCgkoamNmLWR1bXAubywgZ2phdmFoLm8sIGp2LXNjYW4ubyk6IERlcGVuZCBvbiB2ZXJzaW9uLmguCgoJKiBnamF2YWguYzogSW5jbHVkZSB2ZXJzaW9uLmguCgoJKiBqY2YtZHVtcC5jOiBMaWtld2lzZS4KCgkqIGp2LXNjYW4uYzogTGlrZXdpc2UuCgoyMDAwLTAyLTEyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKG91dGVyX2ZpZWxkX2FjY2Vzc19maXgpOiBGaXJzdCBwYXJhbWV0ZXIgbm93IGEgdHJlZQoJbm9kZS4gQ2hlY2sgZm9yIGFzc2lnbm1lbnQgdG8gZmluYWwuIEZpcnN0IGFyZ3VtZW50IHRvCglidWlsZF9vdXRlcl9maWVsZF9hY2Nlc3NfZml4IG1vZGlmaWVkIHRvIGFjY29tbW9kYXRlIHByb3RvdHlwZS4KCShidWlsZF9vdXRlcl9maWVsZF9hY2Nlc3MpOiBEb24ndCBjaGVjayBmb3IgYXNzaWdubWVudCB0byBmaW5hbAoJaGVyZS4KCShqYXZhX2NvbXBsZXRlX2xocyk6IE1PRElGWV9FWFBSIGNhc2U6IENoZWNrIGZvciBgZXJyb3JfbWFya19ub2RlJwoJcG9zc2libHkgcmV0dXJuZWQgYnkgb3V0ZXJfZmllbGRfYWNjZXNzX2ZpeC4gQ2hhbmdlZAoJb3V0ZXJfZmllbGRfYWNjZXNzX2ZpeCdzIGZpcnN0IGFyZ3VtZW50LgoJKGNoZWNrX2ZpbmFsX2Fzc2lnbm1lbnQpOiAkZmluaXQkJ3MgY29udGV4dCBpcyBPSy4KCShwYXRjaF91bmFyeW9wKTogVXNlIG5vZGUgaW5zdGVhZCBvZiBpdHMgbGluZS9jb2x1bW4gdmFsdWUgd2hlbgoJY2FsbGluZyBvdXRlcl9maWVsZF9hY2Nlc3NfZml4LgoKMjAwMC0wMi0xMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChpbnRlcmZhY2VfZGVjbGFyYXRpb246KTogTm8gbG9uZ2VyIHRhZ2dlZAoJPG5vZGU+LiBSZS1pbnN0YWxsZWQgZGVmYXVsdCBhY3Rpb24uCgkoY2xhc3NfbWVtYmVyX2RlY2xhcmF0aW9uOik6IEhhbmRsZSBpbm5lciBpbnRlcmZhY2VzLgoJKGludGVyZmFjZV9tZW1iZXJfZGVjbGFyYXRpb24pOiBIYW5kbGUgaW5uZXIgaW50ZXJmYWNlcyBhbmQKCWNsYXNzZXMuCgkoY3JlYXRlX2ludGVyZmFjZSk6IFB1c2ggZXJyb3IgaWYgb25lIHNlZW4uIFN1c3BlbmQgcGFyc2luZwoJY29udGV4dCB3aGVuIHByb2Nlc3NpbmcgYW4gaW5uZXIgaW50ZXJmYWNlLgoJKHJlZ2lzdGVyX2ZpZWxkcyk6IElubmVyIGNsYXNzIHN0YXRpYyBmaWVsZCBsaW1pdGF0aW9ucyBub3QgdG8KCWFwcGx5IHRvIGlubmVyIGludGVyZmFjZXMuCgoyMDAwLTAyLTEwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChsb2FkX2NsYXNzKTogVXBkYXRlIGBqYXZhX2Vycm9yX2NvdW50JyB3aGVuIGEKCWNsYXNzJyBmaWxlIGNhbid0IGJlIGZvdW5kLgoJKHBhcnNlLnkpOiBBdm9pZCAoYnl0ZSljb2RlIGdlbmVyYXRpb24gd2hlbiBlcnJvcnMgc2Vlbi4KCjIwMDAtMDItMTAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9saHMpOiBIYW5kbGUgVFJVTkNfRElWX0VYUFIuIEVuc3VyZSBgZmF0YWwnCglkZWNvZGVzIGEgdmFsaWQgbm9kZS4KCShwYXRjaF9iaW5vcCk6IEhhbmRsZSBUUlVOQ19ESVZfRVhQUi4KCjIwMDAtMDItMTAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocmVzb2x2ZV9wYWNrYWdlKTogTmV3IGxvY2FsIGBhY2MnLiBUcnkgdG8gcHJvZ3Jlc3NpdmVseQoJYnVpbGQgYW5kIGd1ZXNzIGEgcGFja2FnZSBhbmQgdHlwZSBuYW1lLgoKMjAwMC0wMi0xMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBMb2FkIGFuZAoJbGF5b3V0IHRoZSBzZWFyY2ggY2xhc3MgaWYgbmVjZXNzYXJ5LgoJKGphdmFfY29tcGxldGVfdHJlZSk6IEtlZXAgdG8gb3JpZ2luYWwgdHlwZSBvZiB0aGUgZm9sZGVkIGluaXRpYWwKCXZhbHVlLgoKMjAwMC0wMi0wOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3MpOiBTZXQgYW5kIHRlc3QgQ0xBU1NfQkVJTkdfTEFJRE9VVC4KCUdlbmVyYXRlIGVycm9yIG1lc3NhZ2UgaWYgY2lyY3VsYXJpdHkgaXMgZGV0ZWN0ZWQuIE5ldyBzdGF0aWMKCWxvY2FsIGBsaXN0Jy4KCSogamF2YS10cmVlLmggKENMQVNTX0JFSU5HX0xBSURPVVQpOiBOZXcgZmxhZyB1c2FnZSwgbmV3IG1hY3JvLiAgKgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBWZXJ5IHNpbXBseSBoYW5kbGUKCVNBVkVfRVhQUi4KCSogcGFyc2UueSAoamF2YV9jaGVja19jaXJjdWxhcl9yZWZlcmVuY2UpOiBVc2UKCWBjeWNsaWNfaW5oZXJpdGFuY2VfcmVwb3J0JyBkdXJpbmcgcmVwb3J0LCBpZiBuZWNlc3NhcnkuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBmaXhlZCBjb21tZW50IHdpdGggYFRIUk9XX0VYUFI6JyBjYXNlLiBBdm9pZAoJd2Fsa2luZyBORVdfQVJSQVlfSU5JVCB0d2ljZS4KCjIwMDAtMDItMDkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGNoZWNrX2NsYXNzX2ludGVyZmFjZV9jcmVhdGlvbik6IEFsbG93IGlubmVyIGNsYXNzZXMgdG8KCWJlIGBwcml2YXRlJyBvciBgcHJvdGVjdGVkJywgY2hlY2sgbW9kaWZpZXJzJyBjb25zaXN0ZW5jeS4gUHJldmVudAoJYmxvY2sgbG9jYWwgY2xhc3NlcyBmcm9tIGJlYXJpbmcgYW55IG1vZGlmaWVycy4KCjIwMDAtMDItMTAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGV4Y2VwdC5jIChjaGVja19zdGFydF9oYW5kbGVycyk6IFJlLWFkZCBwcm90b3R5cGUgbG9zdCBpbiBsYXN0CglwYXRjaC4KCShtYXliZV9zdGFydF90cnkpOiBSZW1vdmUgZXhjZXNzIGFyZ3VtZW50IHRvIGBjaGVja19zdGFydF9oYW5kbGVycycuCgoyMDAwLTAyLTA5ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY2xlYXJfYmluZGluZ19sZXZlbCk6IFJlbW92ZSBleGNlc3MgaW5pdGlhbGl6ZXIuCgkobWF5YmVfcG9wbGV2ZWxzKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCShmb3JjZV9wb3BsZXZlbHMpOiBEaXR0by4KCShzdHJ1Y3QgYmluZGluZ19sZXZlbCk6IEFkZCBjb21tZW50LgoKMjAwMC0wMi0wNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfY2xhc3NmaWxlKTogRG9uJ3QgY29uc2lkZXIKCXByZS1pbml0aWFsaXphdGlvbiB3aXRoIHJlZmVyZW5jZSB2YWx1ZSAodXNlIDxjbGluaXQ+IGluc3RlYWQuKQoJKiBwYXJzZS55IChqYXZhX2ZpeF9jb25zdHJ1Y3RvcnMpOiBObyBnZW5lcmF0ZWQgY29uc3RydWN0b3IgZm9yCglpbnRlcmZhY2VzLgoJKGJ1aWxkX291dGVyX2ZpZWxkX2FjY2Vzcyk6IFJlbW92ZWQgZGVidWcgbWVzc2FnZS4KCShvdXRlcl9maWVsZF9leHBhbmRlZF9hY2Nlc3NfcCk6IEFkYXB0ZWQgdG8gYnl0ZWNvZGUgZ2VuZXJhdGlvbi4KCShidWlsZF9vdXRlcl9maWVsZF9hY2Nlc3NfbWV0aG9kKTogVXNlIGZpeF9tZXRob2RfYXJndW1lbnRfbmFtZXMuCgkoYnVpbGRfb3V0ZXJfbWV0aG9kX2FjY2Vzc19tZXRob2QpOiBGaXhlZCBpbmRlbnRhdGlvbi4gQWRkZWQKCWNvbW1lbnQuIEhhbmRsZSBhY2Nlc3MgbWV0aG9kIGdlbmVyYXRpb24gZm9yIHN0YXRpYyBhbmQgYWxzbyB2b2lkCgltZXRob2RzLgoJKGJ1aWxkX2FjY2Vzc190b190aGlzbik6IEluc2VydGVkIGRlYnVnIG1lc3NhZ2UuCgkobWF5YmVfYnVpbGRfdGhpc25fYWNjZXNzX21ldGhvZCk6IFVzZSBmaXhfbWV0aG9kX2FyZ3VtZW50X25hbWVzLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IEZpeGVkIGNvbW1lbnQuCgkobm90X2FjY2Vzc2libGVfcCk6IEFkYXB0ZWQgdG8gYnl0ZWNvZGUgZ2VuZXJhdGlvbi4gQWRkZWQgY29tbWVudC4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IEFkZGVkIGNvbW1lbnQuCgkobWF5YmVfdXNlX2FjY2Vzc19tZXRob2QpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIEhhbmRsZSBzdGF0aWMKCW1ldGhvZHMuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBEb24ndCBzaG9ydGN1dCBoYW5kbGluZyBvZiBpbml0aWFsaXplZCB1cG9uCglkZWNsYXJhdGlvbiBTdHJpbmcgdHlwZSBzdGF0aWMgZmllbGRzIHdoZW4gZ2VuZXJhdGluZyBieXRlY29kZS4KCShwYXRjaF91bmFyeW9wKTogSGFuZGxlIG91dGVyIGZpZWxkIGFjY2VzcyB3aGVuIGdlbmVyYXRpbmcKCWJ5dGVjb2RlLgoKMjAwMC0wMi0wMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqYXZhLXRyZWUuaCAoRklFTERfVEhJU04pOiBOZXcgbWFjcm8uCgkqIGpjZi13cml0ZS5jIChhcHBlbmRfc3ludGhldGljX2F0dHJpYnV0ZSk6IE5ldyBmdW5jdGlvbi4KCShnZW5lcmF0ZV9jbGFzc2ZpbGUpOiBTZXQgIlN5bnRoZXRpYyIgYXR0cmlidXRlIG9uIHRoaXMkPG4+LAoJdmFsJDxuYW1lPiBmaWVsZHMsIGFjY2VzcyQ8bj4gYW5kICRmaW5pdCQgbWV0aG9kcy4gRml4ZWQgaW5kZW50YXRpb24uCgkqIHBhcnNlLnkgKGFkZF9pbm5lcl9jbGFzc19maWVsZHMpOiBTZXQgRklFTERfVEhJU04gZm9yIGNyZWF0ZWQKCXRoaXMkPG4+IGZpZWxkcy4KCShidWlsZF9vdXRlcl9maWVsZF9hY2Nlc3MpOiBUdXJuZWQgb24gYWNjZXNzIGZ1bmN0aW9ucyB1c2FnZSBhbmQKCWdlbmVyYXRpb24gd2hlbiBjb21waWxpbmcgdG8gYnl0ZWNvZGUuCgkobWF5YmVfdXNlX2FjY2Vzc19tZXRob2QpOiBMaWtld2lzZS4KCjIwMDAtMDEtMjUgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogamF2YS1leGNlcHQuaCAoc3RydWN0IGVoX3JhbmdlKTogQWRkIGBleHBhbmRlZCcgZmllbGQuCgkobWF5YmVfc3RhcnRfdHJ5KTogQWRkIGVuZF9wYyBhcmcuCgkobWF5YmVfZW5kX3RyeSk6IERpdHRvLgoJKiBqYXZhLXRyZWUuaCAoZm9yY2VfcG9wbGV2ZWxzKTogbmV3IGZ1bmN0aW9uLgoJKiBleHByLmMgKGV4cGFuZF9ieXRlX2NvZGUpOiBEb24ndCBjYWxsIG1heWJlX3N0YXJ0X3RyeSBvcgoJbWF5YmVfZW5kX3RyeS4KCSogZXhjZXB0LmMgKGFkZF9oYW5kbGVyKTogUmVzZXQgZXhwYW5kZWQuCgkoZXhwYW5kX3N0YXJ0X2phdmFfaGFuZGxlcik6IFNldCBleHBhbmRlZC4KCShjaGVja19zdGFydF9oYW5kbGVycyk6IERvbid0IGV4cGFuZCBhIHN0YXJ0IGhhbmRsZXIgdGhhdCdzCglhbHJlYWR5IGJlZW4gZXhwYW5kZWQuCgkobWF5YmVfc3RhcnRfdHJ5KTogQWRkIGVuZF9wYyBhcmcuICBPbmx5IGV4cGFuZCBhIGhhbmRsZXIgd2hpY2gKCWVuZHMgYWZ0ZXIgZW5kX3BjLgoJKGV4cGFuZF9lbmRfamF2YV9oYW5kbGVyKTogY2FsbCBmb3JjZV9wb3BsZXZlbHMuCgkoZm9yY2VfcG9wbGV2ZWxzKTogbmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKGJpbmRpbmdfbGV2ZWwpOiBBZGQgc3RhcnRfcGMgb2YgYmluZGluZyBsZXZlbC4KCShtYXliZV9wdXNobGV2ZWxzKTogQ2FsbCBtYXliZV9zdGFydF90cnkgd2hlbiBwdXNoaW5nIGJpbmRpbmcKCWxldmVscy4KCShtYXliZV9wb3BsZXZlbHMpOiBDYWxsIG1heWJlX2VuZF90cnkgd2hlbiBwb3BwaW5nIGJpbmRpbmcgbGV2ZWxzLgoJKExBUkdFU1RfUEMpOiBEZWZpbmUuCgkoY2xlYXJfYmluZGluZ19sZXZlbCk6IFVzZSBMQVJHRVNUX1BDLgoKCSogamF2YS10cmVlLmggKERFQlVHX0pBVkFfQklORElOR19MRVZFTFMpOiBuZXcgZGVmaW5lLgoJKiBkZWNsLmMgKERFQlVHX0pBVkFfQklORElOR19MRVZFTFMpOiBuZXcgZGVmaW5lLgoJKGJpbmRpbmdfZGVwdGgsIGlzX2NsYXNzX2xldmVsLCBjdXJyZW50X3BjKTogbmV3IHZhcmlhYmxlcy4KCShzdHJ1Y3QgYmluZGluZ19sZXZlbCk6IGRpdHRvLgoJKGluZGVudCk6IG5ldyBmdW5jdGlvbi4KCShwdXNoX2p2bV9zbG90KTogYWRkIGRlYnVnZ2luZyBpbmZvLgoJKG1heWJlX3B1c2hsZXZlbHMpOiBkaXR0by4KCShtYXliZV9wb3BsZXZlbHMpOiBkaXR0by4KCShwdXNobGV2ZWwpOiBkaXR0by4KCShwb3BsZXZlbCk6IGRpdHRvLgoJKHN0YXJ0X2phdmFfbWV0aG9kKTogZGl0dG8uCgkoZ2l2ZV9uYW1lX3RvX2xvY2Fscyk6IGNvbW1lbnQgb25seS4KCSogZXhjZXB0LmMgKGJpbmRpbmdfZGVwdGgsIGlzX2NsYXNzX2xldmVsLCBjdXJyZW50X3BjKToKCW5ldyB2YXJpYWJsZXMuCgkoZXhwYW5kX3N0YXJ0X2phdmFfaGFuZGxlcik6IGFkZCBkZWJ1Z2dpbmcgaW5mby4KCShleHBhbmRfZW5kX2phdmFfaGFuZGxlcik6IGRpdHRvLgoKMjAwMC0wMi0wNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2phdmFoLmMgKG92ZXJsb2FkZWRfam5pX21ldGhvZF9leGlzdHNfcCk6IEFkZCBwcm90b3R5cGUuCgkocHJpbnRfbmFtZV9mb3Jfc3R1Yl9vcl9qbmksIHByb2Nlc3NfZmlsZSk6IENvbnN0aWZ5IGEgY2hhciouCgoyMDAwLTAyLTAzICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqY2YtaW8uYyAoamNmX3ByaW50X3V0ZjhfcmVwbGFjZSk6IEhhbmRsZSBVVEYtOCBpbnB1dC4KCjIwMDAtMDEtMzEgIFNjb3R0IEJhbWJyb3VnaCAgPHNjb3R0YkBuZXR3aW5kZXIub3JnPgoKCSogZ2NjL2phdmEvamF2YW9wLmggKFdPUkRTX1RPX0RPVUJMRSk6IEFsbG93IFdPUkRTX1RPX0RPVUJMRSB0bwoJYXNzZW1ibGUgZG91YmxlcyBjb3JyZWN0bHkgd2hlbiBIT1NUX0ZMT0FUX1dPUkRTX0JJR19FTkRJQU4gaXMKCWRlZmluZWQgdG8gYmUgMS4KCjIwMDAtMDItMDIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmRlZiAoSU5TVEFOQ0VfSU5JVElBTElaRVJTX0VYUFIpOiBOZXcgdHJlZSBjb2RlLgoJKiBqYXZhLXRyZWUuaCAoVFlQRV9JSV9TVE1UX0xJU1QpOiBOZXcgbWFjcm8uCgkoc3RydWN0IGxhbmdfdHlwZSk6IE5ldyBmaWVsZCBgaWlfYmxvY2snLgoJKiBsZXguYyAoamF2YV9pbml0X2xleCk6IFVzZSBDUENfSU5JVElBTElaRVJfTElTVCwKCUNQQ19TVEFUSUNfSU5JVElBTElaRVJfTElTVCBhbmQgQ1BDX0lOU1RBTkNFX0lOSVRJQUxJWkVSX0xJU1QuCgkqIHBhcnNlLmggKHN0cnVjdCBwYXJzZXJfY3R4dCk6IE5ldyBmaWVsZCBgaW5zdGFuY2VfaW5pdGlhbGl6ZXJzJy4KCShDUENfSU5JVElBTElaRVJfTElTVCwgQ1BDX1NUQVRJQ19JTklUSUFMSVpFUl9MSVNULAoJQ1BDX0lOU1RBTkNFX0lOSVRJQUxJWkVSX0xJU1QsIENQQ19JTklUSUFMSVpFUl9TVE1ULAoJQ1BDX1NUQVRJQ19JTklUSUFMSVpFUl9TVE1ULCBDUENfSU5TVEFOQ0VfSU5JVElBTElaRVJfU1RNVCk6IE5ldwoJbWFjcm9zLgoJKiBwYXJzZS55IChhZGRfaW5zdGFuY2VfaW5pdGlhbGl6ZXIpOiBOZXcgZnVuY3Rpb24uCgkoaW5faW5zdGFuY2VfaW5pdGlhbGl6ZXIpOiBOZXcgc3RhdGljIGdsb2JhbC4KCShjbGFzc19ib2R5X2RlY2xhcmF0aW9uOik6IExpbmsgaW5zdGFuY2UgaW5pdGlhbGl6ZXIgYmxvY2suCgkoc3RhdGljX2luaXRpYWxpemVyOik6IFVzZSBDUENfU1RBVElDX0lOSVRJQUxJWkVSX1NUTVQuCgkoYXJyYXlfY3JlYXRpb25fZXhwcmVzc2lvbjopOiBSZW1vdmUgdW51c2VkIGxvY2FsLgoJKGphdmFfcGFyc2VyX2NvbnRleHRfcHVzaF9pbml0aWFsaXplZF9maWVsZCk6IEZpeGVkIGxlYWRpbmcKCWNvbW1lbnQuIFVzZSBDUENfU1RBVElDX0lOSVRJQUxJWkVSX0xJU1QsIENQQ19JTklUSUFMSVpFUl9MSVNUIGFuZAoJQ1BDX0lOU1RBTkNFX0lOSVRJQUxJWkVSX0xJU1QuCgkoamF2YV9wYXJzZXJfY29udGV4dF9wb3BfaW5pdGlhbGl6ZWRfZmllbGQpOiBMaWtld2lzZS4KCShhZGRfaW5uZXJfY2xhc3NfZmllbGRzKTogVXNlIENQQ19JTklUSUFMSVpFUl9TVE1ULgoJKHJlZ2lzdGVyX2ZpZWxkcyk6IFVzZSBDUENfU1RBVElDX0lOSVRJQUxJWkVSX1NUTVQgYW5kCglDUENfSU5JVElBTElaRVJfU1RNVC4KCShmaXhfY29uc3RydWN0b3JzKTogTmV3IGxvY2FsIGBjbGFzc190eXBlJy4gVXNlIGl0LiBDYWxsCglhZGRfaW5zdGFuY2VfaW5pdGlhbGl6ZXIuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBOZXcgY2FzZSBJTlNUQU5DRV9JTklUSUFMSVpFUlNfRVhQUi4KCShwYXRjaF9yZXR1cm4pOiBGb3JiaWQgcmV0dXJuIGluIGluc3RhbmNlIGluaXRpYWxpemVycy4KCShwYXRjaF90aHJvd19zdGF0ZW1lbnQpOiBFbmZvcmNlIGV4Y2VwdGlvbiBoYW5kbGluZyBpbiB0aGUgY29udGV4dAoJb2YgaW5zdGFuY2UgaW5pdGlhbGl6ZXJzLgoKMjAwMC0wMi0wMyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhLm1vc3RseWNsZWFuKTogUmVtb3ZlIGV4ZWN1dGFibGVzIGluCglgbW9zdGx5Y2xlYW4nLgoKMjAwMC0wMS0zMSAgU2NvdHQgQmFtYnJvdWdoICA8c2NvdHRiQG5ldHdpbmRlci5vcmc+CgoJKiBnY2MvamF2YS9namF2YWguYyAoRF9OQU5fTUFTSyk6IEFsdGVybmF0ZSBkZWZpbml0aW9uIHJlcXVpcmVkIHdoZW4KCUhPU1RfRkxPQVRfV09SRFNfQklHX0VORElBTiBpcyBkZWZpbmVkIHRvIGJlIDEuCgkoamF2YV9mbG9hdF9maW5pdGUpOiBDb252ZXJ0IHRvIHVzZSB1bmlvbiBXb3JkIGZyb20gamF2YW9wLmguCgkoamF2YV9kb3VibGVfZmluaXRlKTogQ29udmVydCB0byB1c2UgdW5pb24gRFdvcmQgZnJvbSBqYXZhb3AuaC4KCjIwMDAtMDItMDIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChvcHRpb25zKTogQWRkZWQgYGpuaScgZW50cnkuCgkoaGVscCk6IERvY3VtZW50IC1qbmkuCgkoZmxhZ19qbmkpOiBOZXcgZ2xvYmFsLgoJKHByb2Nlc3NfZmlsZSk6IEhhbmRsZSBKTkkgb3V0cHV0LiAgRG9uJ3QgcHJpbnQgdGV4dCBmcm9tCgktcHJlcGVuZCwgLWFkZCwgZXRjLCB3aGVuIGdlbmVyYXRpbmcgc3R1YnMuICBPbmx5IHJlbW92ZSBgLmNsYXNzJwoJc3VmZml4IGlmIGl0IGFjdHVhbGx5IGV4aXN0cy4KCShtYWluKTogQ3JlYXRlIGEgYC5jJyBmaWxlIHdoZW4gcnVuIHdpdGggYC0tam5pIC0tc3R1YnMnLiAgQ3JlYXRlCgljb3JyZWN0IG91dHB1dCBmaWxlIG5hbWUgd2l0aCBgLS1qbmknLgoJKHByaW50X2luY2x1ZGUpOiBNYW5nbGUgaGVhZGVyIG5hbWUgZGlmZmVyZW50bHkgaW4gSk5JIGNhc2UuCgkoSEFORExFX01FVEhPRCk6IEluIEpOSSBtb2RlLCBjYWxsIHByaW50X21ldGhvZF9pbmZvIHRvIGdlbmVyYXRlCgltZXRob2QgbGlzdC4KCShwcmludF9tZXRob2RfaW5mbyk6IEhhbmRsZSBKTkkgY2FzZS4gIFB1dCBzaWduYXR1cmUgaW5mbyBpbnRvCgltZXRob2QgbmFtZS4gIEhhbmRsZSBjYXNlIHdoZW4gU1RSRUFNIGlzIE5VTEwuCgkocHJpbnRfbmFtZV9mb3Jfc3R1Yl9vcl9qbmkpOiBOZXcgZnVuY3Rpb24uCgkocHJpbnRfc3R1Yl9vcl9qbmkpOiBSZW5hbWVkIGZyb20gYHByaW50X3N0dWInLiAgSGFuZGxlIEpOSS4KCShwcmludF9jeHhfY2xhc3NuYW1lKTogSGFuZGxlIEpOSS4KCShwcmludF9mdWxsX2N4eF9uYW1lKTogTGlrZXdpc2UuCgkoZGVjb2RlX3NpZ25hdHVyZV9waWVjZSk6IExpa2V3aXNlLgoJKG92ZXJsb2FkZWRfam5pX21ldGhvZF9leGlzdHNfcCk6IE5ldyBmdW5jdGlvbi4KCShzdHJ1Y3QgbWV0aG9kX25hbWUpOiBBZGRlZCBgc2lnbmF0dXJlJyBhbmQgYHNpZ19sZW5ndGgnIGZpZWxkcy4KCShIQU5ETEVfRU5EX0ZJRUxEKTogRG8gbm90aGluZyBpbiBKTkkgbW9kZS4KCjIwMDAtMDItMDIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGp2LXNjYW4uYzogSW5jbHVkZSB2ZXJzaW9uLmMsIDxnZXRvcHQuaD4uCgkoTE9OR19PUFQsIE9QVF9IRUxQLCBPUFRfVkVSU0lPTik6IE5ldyBtYWNyb3MuCgkob3B0aW9ucyk6IE5ldyBhcnJheS4KCSh1c2FnZSk6IE5ldyBmdW5jdGlvbi4KCSh2ZXJzaW9uKTogTmV3IGZ1bmN0aW9uLgoJKG1haW4pOiBVc2UgZ2V0b3B0X2xvbmcgdG8gcGFyc2UgY29tbWFuZCBsaW5lLgoJKiBqY2YtZHVtcC5jOiBJbmNsdWRlIHZlcnNpb24uYywgPGdldG9wdC5oPi4KCShMT05HX09QVCwgT1BUX2NsYXNzcGF0aCwgT1BUX0NMQVNTUEFUSCwgT1BUX0hFTFAsIE9QVF9WRVJTSU9OLAoJT1BUX0pBVkFQKTogTmV3IG1hY3Jvcy4KCShvcHRpb25zKTogTmV3IGFycmF5LgoJKHVzYWdlKTogUmV0dXJuIGB2b2lkJy4gIENoYW5nZWQgbWVzc2FnZS4KCShoZWxwKTogTmV3IGZ1bmN0aW9uLgoJKHZlcnNpb24pOiBOZXcgZnVuY3Rpb24uCgkobWFpbik6IFVzZSBnZXRvcHRfbG9uZ19vbmx5IHRvIHBhcnNlIGNvbW1hbmQgbGluZS4KCSogZ2phdmFoLmM6IEluY2x1ZGUgPGdldG9wdC5oPi4KCShMT05HX09QVCwgT1BUX2NsYXNzcGF0aCwgT1BUX0NMQVNTUEFUSCwgT1BUX0hFTFAsIE9QVF9URU1QLAoJT1BUX1ZFUlNJT04sIE9QVF9QUkVQRU5ELCBPUFRfRlJJRU5ELCBPUFRfQURELCBPUFRfQVBQRU5ELCBPUFRfTSwKCU9QVF9NTSwgT1BUX01HLCBPUFRfTUQsIE9QVF9NTUQpOiBOZXcgbWFjcm9zLgoJKG9wdGlvbnMpOiBOZXcgYXJyYXkuCgkoamF2YV9ub19hcmd1bWVudCk6IFJlbW92ZWQuCgkoaGVscCk6IFVwZGF0ZWQgd2l0aCBtaXNzaW5nIG9wdGlvbnMuCgkobWFpbik6IFVzZSBnZXRvcHRfbG9uZ19vbmx5IHRvIHBhcnNlIGNvbW1hbmQgbGluZS4KCSh1c2FnZSk6IENoYW5nZWQgbWVzc2FnZS4KCjIwMDAtMDItMDEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmRlZiAoTkVXX0FOT05ZTU9VU19BUlJBWV9FWFBSKTogTmV3IHRyZWUgY29kZS4KCSogcGFyc2UuaCAoQU5PTllNT1VTX0FSUkFZX0JBU0VfVFlQRSwgQU5PTllNT1VTX0FSUkFZX0RJTVNfU0lHLAoJQU5PTllNT1VTX0FSUkFZX0lOSVRJQUxJWkVSKTogTmV3IGFjY2VzcyBtYWNyb3MuCgkqIHBhcnNlLnkgKGFycmF5X2NyZWF0aW9uX2V4cHJlc3Npb246KTogSGFuZGxlIGFub255bW91cyBhcnJheXMuCgkoYnVpbGRfYXJyYXlfZnJvbV9uYW1lKTogRG9uJ3Qgc2V0IGByZXRfbmFtZScgaWYgbnVsbC4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBOZXcgY2FzZSBORVdfQU5PTllNT1VTX0FSUkFZX0VYUFIuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IExpa2V3aXNlLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX2NsYXNzKTogTGlrZXdpc2UuCgoyMDAwLTAyLTAxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5kZWYgKFNZTkNIUk9OSVpFRF9FWFBSKTogRml4ZWQgdHlwby4KCSogcGFyc2UuaCAoTUFOR0xFX0FMSUFTX0lOSVRJQUxJWkVSX1BBUkFNRVRFUl9OQU1FX0lEKTogTmV3IG1hY3JvLgoJKE1BTkdMRV9BTElBU19JTklUSUFMSVpFUl9QQVJBTUVURVJfTkFNRV9TVFIpOiBMaWtld2lzZS4KCShTS0lQX1RISVNfQU5EX0FSVElGSUNJQUxfUEFSTVMpOiBVc2UgREVDTF9GSU5JVF9QLgoJKEFJUExfRlVOQ1RJT05fRklOSVRfSU5WT0NBVElPTik6IFJlcGxhY2VzCglBSVBMX0ZVTkNUSU9OX0NPTVBMRVRFRF9JTlZPQ0FUSU9OLgoJKEFJUExfRlVOQ1RJT05fQ1RPUl9JTlZPQ0FUSU9OKTogUmVwbGFjZXMKCUFJUExfRlVOQ1RJT05fSU5WT0NBVElPTl9SRUFEWS4KCShBSVBMX0ZVTkNUSU9OX0RFQ0xBUkFUSU9OKTogTmV3IGVudW0gZW50cnkuCgkqIHBhcnNlLnkgKHJlb3JkZXJfc3RhdGljX2luaXRpYWxpemVkKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfcGFyc2VyX2NvbnRleHRfcG9wX2luaXRpYWxpemVkX2ZpZWxkKTogVXNlIGl0LgoJKGFkZF9pbm5lcl9jbGFzc19maWVsZHMpOiBVc2UKCU1BTkdMRV9BTElBU19JTklUSUFMSVpFUl9QQVJBTUVURVJfTkFNRV9JRC4gQ29tbWVudAoJYXVnbWVudGVkLiBJbnN0YWxsIG1hcmtlciBhZnRlciBsYXN0IGFsaWFzIGluaXRpYWxpemVyLCBpZiBhbnkuCgkoZ2VuZXJhdGVfZmluaXQpOiBGaXhlZCB0eXBvLiBEb24ndCB0cnkgdG8gcmV0YWluIG9ubHkgdGhlIHVzZWQKCWZpZWxkcy4KCShtZXRob2RfaGVhZGVyKTogQ29tcHV0ZSBhbmQgc2V0IERFQ0xfRlVOQ1RJT05fTkFQLgoJKG1ldGhvZF9kZWNsYXJhdG9yKTogRml4ZWQgY29tbWVudC4gSW5zZXJ0IGFsaWFzIGluaXRpYWxpemVyIGluCglwYXJhbWV0ZXIgbGlzdC4KCShidWlsZF9hbGlhc19pbml0aWFsaXplcl9wYXJhbWV0ZXJfbGlzdCk6IEZpeGVkIGxlYWRpbmcKCWNvbW1lbnQuIE5ldyBjYXNlIGZvciBBSVBMX0ZVTkNUSU9OX0RFQ0xBUkFUSU9OLiBPbGQgZW51bSB2YWx1ZQoJcmVwbGFjZWQgYnkgbmV3IG9uZXMuIFVzZSBNQU5HTEVfQUxJQVNfSU5JVElBTElaRVJfUEFSQU1FVEVSX05BTUVfSUQuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfY2xhc3MpOiBDb2RlIHRvIHJldGFpbiBvbmx5IHVzZWQgYWxpYXNlcwoJcmVtb3ZlZC4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogTmV3IGxvY2FsIGBmaXJzdF9kZWNsJy4gR2VuZXJhdGUKCSRmaW5pdCQgZmlyc3QsIHRoZW4gZXhwYW5kIHRoZSBjb25zdHJ1Y3RvcnMsIHJlZ3VsYXIgbWV0aG9kcyBhbmQKCTxjbGluaXQ+LgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IERvbid0IHJlcG9ydCBlcnJvciBvbiBtaXNzaW5nCglyZXR1cm4gc3RhdGVtZW50IGlmIHByZXZpb3VzbHkgZGV0ZWN0ZWQgYm9ndXMuCgkoZml4X2NvbnN0cnVjdG9ycyk6IERvbid0IHBhdGNoIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgbGlzdC4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IFVzZSBuZXcgQUlQTCBlbnVtIHZhbHVlcy4gUmV2ZXJzZQoJYWxpYXMgaW5pdGlhbGl6ZXIgbGlzdCBmb3IgYW5vbnltb3VzIGNsYXNzZXMuCgoyMDAwLTAxLTMwICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IFVzZSBUWVBFX0lTX1dJREUgdG8KCWRldGVybWluZSBob3cgbWFueSBzdGFjayBzbG90cyB0byBwb3AuCgoyMDAwLTAxLTI5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGZvcm1hbF9wYXJhbWV0ZXI6KTogU2V0IGAkJCcgdG8gTlVMTF9UUkVFIGZvciBiZXR0ZXIKCWVycm9yIGhhbmRsaW5nL3JlY292ZXJ5LgoJKiBqYXZhLXRyZWUuaCAoU1lOQ0hST05JWkVEX0VYUFIpOiBGaXhlZCB0eXBvIGluIGNvbW1lbnQuCgoyMDAwLTAxLTI4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5oIChBUkdfRklOQUxfUCwgRklFTERfTE9DQUxfQUxJQVMsCglGSUVMRF9MT0NBTF9BTElBU19VU0VEKTogTmV3IG1hY3Jvcy4KCShERUNMX0ZVTkNUSU9OX05BUCk6IE5ldyBtYWNyby4KCShzdHJ1Y3QgbGFuZ19kZWNsKTogTmV3IGZpZWxkIGBuYXAnLgoJKFRZUEVfRklOSVRfU1RNVF9MSVNULCBUWVBFX0NMSU5JVF9TVE1UX0xJU1QpOiBOZXcgbWFjcm9zLgoJKHN0cnVjdCBsYW5nX3R5cGUpOiBOZXcgZmllbGRzIGBmaW5pdF9zdG10X2xpc3QnIGFuZAoJYGNsaW5pdF9zdG10X2xpc3QnLgoJKENMQVNTX0hBU19GSU5JVF9QKTogRGVmaW5lZCB1c2luZyBUWVBFX0ZJTklUX1NUTVRfTElTVC4KCSogcGFyc2UuaCAoTUFOR0xFX09VVEVSX0xPQ0FMX1ZBUklBQkxFX05BTUUpOiBOZXcgbWFjcm8uCgkoU0tJUF9USElTX0FORF9BUlRJRklDSUFMX1BBUk1TLCBNQVJLX0ZJTkFMX1BBUk1TLAoJVU5NQVJLX0ZJTkFMX1BBUk1TLCBDUkFGVEVEX1BBUkFNX0xJU1RfRklYVVApOiBOZXcgbWFjcm9zLgoJKEFJUExfRlVOQ1RJT05fQ1JFQVRJT04sIEFJUExfRlVOQ1RJT05fQ09NUExFVEVEX0lOVk9DQVRJT04sCglBSVBMX0ZVTkNUSU9OX0lOVk9DQVRJT05fUkVBRFkpOiBOZXcgZW51bSBmaWVsZHMuCgkoQlVJTERfVEhST1cpOiBNYWNybyBsaW5lIHNlcGFyYXRvciByZS1pbmRlbnRlZC4KCSogcGFyc2UueSAoZW5kX2NsYXNzX2RlY2xhcmF0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKG1heWJlX2dlbmVyYXRlX3ByZV9leHBhbmRfY2xpbml0KTogTmV3IG5hbWUgZm9yCglqYXZhX3ByZV9leHBhbmRfY2xpbml0LiBDcmVhdGUgPGNsaW5pdD4gb2ZmIFRZUEVfQ0xJTklUX1NUTVRfTElTVCwKCXByZS1leHBhbmQgc3RhdGljIGZpZWxkcy4KCShtYXliZV9nZW5lcmF0ZV9jbGluaXQpOiBGdW5jdGlvbiBkZWxldGVkLgoJKGNoZWNrX2Zvcl9zdGF0aWNfbWV0aG9kX3JlZmVyZW5jZSk6IFByb3RvdHlwZSdzIHBhcmFtZXRlciBsaXN0CglpbmRlbnRlZC4KCShnZW5lcmF0ZV9maW5pdCk6IE5ldyBuYW1lIGZvciBtYXliZV9nZW5lcmF0ZV9maW5pdC4gQ2hhbmdlZAoJbGVhZGluZyBjb21tZW50LiBGdW5jdGlvbiByZXdyaXR0ZW4gdG8gdXNlCglUWVBFX0ZJTklUX1NUTVRfTElTVC4gQ2FsbCBidWlsZF9hbGlhc19pbml0aWFsaXplcl9wYXJhbWV0ZXJfbGlzdC4KCShidWlsZF9hbGlhc19pbml0aWFsaXplcl9wYXJhbWV0ZXJfbGlzdCk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX3BhcnNlcl9jb250ZXh0X3BvcF9pbml0aWFsaXplZF9maWVsZCk6IExpa2V3aXNlLgoJKGFkZF9pbm5lcl9jbGFzc19maWVsZHMpOiBMaWtld2lzZS4KCSh0eXBlX2RlY2xhcmF0aW9uOik6IENhbGwgZW5kX2NsYXNzX2RlY2xhcmF0aW9uLgoJKGNsYXNzX21lbWJlcl9kZWNsYXJhdGlvbjopOiBMaWtld2lzZS4KCShmb3JtYWxfcGFyYW1ldGVyX2xpc3Q6KTogRml4ZWQgdHlwb3MuCgkoZm9ybWFsX3BhcmFtZXRlcjopOiBVc2UgQVJHX0ZJTkFMX1AgdG8gbWFyayBjcmVhdGVkIHRyZWUgbGlzdAoJZWxlbWVudC4gSW1wcm92ZWQgZXJyb3IgaGFuZGxpbmcuCgkoYmxvY2tfc3RhdGVtZW50Oik6IENhbGwgZW5kX2NsYXNzX2RlY2xhcmF0aW9uLgoJKGFub255bW91c19jbGFzc19jcmVhdGlvbjopOiBMaWtld2lzZS4KCShjcmVhdGVfYW5vbnltb3VzX2NsYXNzKTogRml4ZWQgY29tbWVudHMuCgkoY3JlYXRlX2NsYXNzKTogQ2FsbCBhZGRfaW5uZXJfY2xhc3NfZmllbGRzLgoJKHJlZ2lzdGVyX2ZpZWxkcyk6IFNldCBGSUVMRF9MT0NBTF9BTElBUyBhY2NvcmRpbmcgdG8gQVJHX0ZJTkFMX1AuCgkobWV0aG9kX2hlYWRlcik6IFVzZSBNQVJLX0ZJTkFMX1BBUk1TLgoJKGZpbmlzaF9tZXRob2RfZGVjbGFyYXRpb24pOiBVc2UgVU5NQVJLX0ZJTkFMX1BBUk1TLgoJKG1ldGhvZF9kZWNsYXJhdG9yKTogUHJvcGFnYXRlIGZpbmFsIGFyZ3VtZW50IGZsYWcuCgkoY3JhZnRfY29uc3RydWN0b3IpOiBOZXcgbG9jYWwgYGFydGlmaWNpYWwnLiBDYWxsCglidWlsZF9hbGlhc19pbml0aWFsaXplcl9wYXJhbWV0ZXJfbGlzdC4gVXNlCglDUkFGVEVEX1BBUkFNX0xJU1RfRklYVVAsIGFzc2lnbiBERUNMX0ZVTkNUSU9OX05BUC4KCShzb3VyY2Vfc3RhcnRfamF2YV9tZXRob2QpOiBNYXJrIHBhcm0gZGVjbHMgd2l0aCBMT0NBTF9GSU5BTCBpZgoJbmVjZXNzYXJ5LgoJKGNvbXBsZXRlX2V4cGFuZF9jbGFzcyk6IEdldCByaWQgb2YgdW51c2VkIG91dGVyIGNvbnRleHQgbG9jYWwKCWFsaWFzIGZpZWxkcy4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogRml4ZWQgbGVhZGluZwoJY29tbWVudC4gR2VuZXJhdGUvcHJlLWV4cGFuZCA8Y2xpbml0PiBmaXJzdC4gQ2hhbmdlZCBtZXRob2QKCWV4cGFuc2lvbiBvcmRlciB0byByZWd1bGFyLCAkZmluaXQkLCBjb25zdHJ1Y3RvcnMsIDxjbGluaXQ+LgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IFNldCBjdXJyZW50X2Z1bmN0aW9uX2RlY2wuCgkoZml4X2NvbnN0cnVjdG9ycyk6IEZpeCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgbGlzdCB0byBhY2NvdW50IGZvcgoJb3V0ZXIgY29udGV4dCBsb2NhbCBhbGlhcyBpbml0aWFsaXplcnMuCgkodmVyaWZ5X2NvbnN0cnVjdG9yX3N1cGVyKTogVXNlIFNLSVBfVEhJU19BTkRfQVJUSUZJQ0lBTF9QQVJNUy4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IExvb2t1cCBvdXRlciBjb250ZXh0IGxvY2FsIGFsaWFzZXMuIE5ldwoJbG9jYWwgYGFjY2VzcycsIHVzZSBpdC4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IFBhdGNoIGlubmVyIGNsYXNzIGN0b3IgaW52b2NhdGlvbiB3aXRoCglvdXRlciBjb250ZXh0IGxvY2FsIGFsaWFzZXMgaW5pdGlhbGl6YXRpb24gdmFsdWVzLiAkZmluaXQkCglpbnZvY2F0aW9uIHBhdGNoaW5nIG5vdyBpbmNsdWRlcyB0aGluZ3MgZ2VuZXJhdGVkIHdpdGgKCWJ1aWxkX2FsaWFzX2luaXRpYWxpemVyX3BhcmFtZXRlcl9saXN0LgoJKGFyZ3VtZW50X3R5cGVzX2NvbnZlcnRpYmxlKTogVXNlIFNLSVBfVEhJU19BTkRfQVJUSUZJQ0lBTF9QQVJNUy4KCShidWlsZF9zdXBlcl9pbnZvY2F0aW9uKTogTGlrZXdpc2UuCgkocGF0Y2hfYXNzaWdubWVudCk6IENoYW5nZWQgY29tbWVudC4KCjIwMDAtMDEtMjcgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogamNmLXdyaXRlLmMgKGVtaXRfZ290byk6IFJFU0VSVkUgMyBieXRlcyBmb3IgaW5zbi4KCShlbWl0X2lmKTogRGl0dG8uCgkoZW1pdF9qc3IpOiBEaXR0by4KCjIwMDAtMDEtMjUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHBhcnNlLmggKE9CU09MRVRFX01PRElGSUVSX1dBUk5JTkcpOiBEb24ndCB1c2UgQU5TSSBzdHJpbmcKCWNvbmNhdGVuYXRpb24uCgkoT0JTT0xFVEVfTU9ESUZJRVJfV0FSTklORzIpOiBOZXcgbWFjcm8gYWxsb3dpbmcgdHdvIGFyZ3MuCgoJKiBwYXJzZS55IChyZWdpc3Rlcl9maWVsZHMpOiBEb24ndCBwYXNzIGEgZm9ybWF0IHNwZWNpZmllciB0bwoJT0JTT0xFVEVfTU9ESUZJRVJfV0FSTklORy4KCShjaGVja19hYnN0cmFjdF9tZXRob2RfaGVhZGVyKTogVXNlIE9CU09MRVRFX01PRElGSUVSX1dBUk5JTkcyCglpbnN0ZWFkIG9mIE9CU09MRVRFX01PRElGSUVSX1dBUk5JTkcsIGFuZCBkb24ndCBwYXNzIGEgZm9ybWF0CglzcGVjaWZpZXIuCgkoY2hlY2tfbW9kaWZpZXJzKTogQ2hhbmdlIGZ1bmN0aW9uIGludG8gYSBtYWNyby4KCShjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24pOiBQYXNzIGEgbGl0ZXJhbCBmb3JtYXQgc3RyaW5nLgoKMjAwMC0wMS0yMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVmZmVyLmg6IFBST1RPIC0+IFBBUkFNUy4KCSogY2hlY2staW5pdC5jOiBMaWtld2lzZS4KCSogY2xhc3MuYzogTGlrZXdpc2UuCgkqIGNvbnN0YW50cy5jOiBMaWtld2lzZS4KCSogY29udmVydC5oOiBMaWtld2lzZS4KCSogZGVjbC5jOiBMaWtld2lzZS4KCSogZXhjZXB0LmM6IExpa2V3aXNlLgoJKiBleHByLmM6IExpa2V3aXNlLgoJKiBnamF2YWguYzogTGlrZXdpc2UuCgkqIGphdmEtZXhjZXB0Lmg6IExpa2V3aXNlLgoJKiBqYXZhLXRyZWUuaDogTGlrZXdpc2UuCgkqIGpjZi1kZXBlbmQuYzogTGlrZXdpc2UuCgkqIGpjZi1kdW1wLmM6IExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYzogTGlrZXdpc2UuCgkqIGpjZi1wYXRoLmM6IExpa2V3aXNlLgoJKiBqY2YtcmVhZGVyLmM6IExpa2V3aXNlLgoJKiBqY2Ytd3JpdGUuYzogTGlrZXdpc2UuCgkqIGpjZi5oOiBMaWtld2lzZS4KCSoganYtc2Nhbi5jOiBMaWtld2lzZS4KCSoganZnZW5tYWluLmM6IExpa2V3aXNlLgoJKiBqdnNwZWMuYzogTGlrZXdpc2UuCgkqIGxhbmcuYzogTGlrZXdpc2UuCgkqIGxleC5jOiBMaWtld2lzZS4KCSogbGV4Lmg6IExpa2V3aXNlLgoJKiBwYXJzZS1zY2FuLnk6IExpa2V3aXNlLgoJKiBwYXJzZS5oOiBMaWtld2lzZS4KCSogcGFyc2UueTogTGlrZXdpc2UuCgkqIHR5cGVjay5jOiBMaWtld2lzZS4KCSogdmVyaWZ5LmM6IExpa2V3aXNlLgoJKiB4cmVmLmM6IExpa2V3aXNlLgoJKiB4cmVmLmg6IExpa2V3aXNlLgoJKiB6ZXh0cmFjdC5jOiBMaWtld2lzZS4KCSogemlwZmlsZS5oOiBMaWtld2lzZS4KCjIwMDAtMDEtMTggIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAobWFrZV9jbGFzcyk6IFVzZSBNQVlCRV9DUkVBVEVfVFlQRV9UWVBFX0xBTkdfU1BFQ0lGSUMuCgkoaXNfY29tcGlsZWRfY2xhc3MpOiBSZW1vdmUgdGVzdCBvbiBUWVBFX0xBTkdfU1BFQ0lGSUMsIHVzZSBUWVBFX0pDRi4KCSogY29uc3RhbnRzLmMgKGJ1aWxkX2NvbnN0YW50X2RhdGFfcmVmKTogQ2hlY2sgZm9yIGNhY2hlZAoJY3VycmVudF9jb25zdGFudF9wb29sX2RhdGFfcmVmLiBDYWNoZSBjdXJyZW50X2NvbnN0YW50X3Bvb2xfZGF0YV9yZWYKCWluIFRZUEVfQ1BPT0xfREFURV9SRUYuCgkqIGphdmEtdHJlZS5oIChUWVBFX0pDRiwgVFlQRV9DUE9PTCwgVFlQRV9DUE9PTF9EQVRBX1JFRiwKCU1BWUJFX0NSRUFURV9UWVBFX1RZUEVfTEFOR19TUEVDSUZJQzopIE5ldyBtYWNyb3MuCgkoc3RydWN0IGxhbmdfdHlwZSk6IE5ldyBmaWVsZHMgYGNwb29sJyBhbmQgYGNwb29sX2RhdGFfcmVmJy4KCShMT0NBTF9GSU5BTCk6IE5ldyBtYWNyby4KCSogamNmLXBhcnNlLmMgKGluaXRfb3V0Z29pbmdfY3Bvb2wpOiBBbHdheXMgYWxsb2NhdGUgbmV3IG91dGdvaW5nCgljb25zdGFudCBwb29sIC0tIGRvbid0IHRyeSB0byByZXVzZS4KCShwYXJzZV96aXBfZmlsZV9lbnRyaWVzKTogVXNlIFRZUEVfSkNGLCBkb24ndCBsYXppbHkgYWxsb2NhdGUKCVRZUEVfTEFOR19TUEVDSUZJQy4KCShmaW5kX2luX2N1cnJlbnRfemlwKTogVXNlIFRZUEVfSkNGLgoJKiBwYXJzZS5oIChqYXZhX2NoZWNrX2ZpbmFsKTogUHJvdG90eXBlIHJlbW92ZWQuCgkqIHBhcnNlLnkgKGNyZWF0ZV9jbGFzcyk6IFJldmVyc2VkIEphbiAxMiwgMjAwMCBleHRyYSBhcmd1bWVudCBwYXRjaC4KCShtYXliZV9jcmVhdGVfY2xhc3NfaW50ZXJmYWNlX2RlY2wsCgljaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24pOiBMaWtld2lzZS4KCShqYXZhX2V4cGFuZF9maW5hbHMpOiBGdW5jdGlvbiByZW1vdmVkLgoJKGNsYXNzX2RlY2xhcmF0aW9uOik6IFJldmVyc2VkIEphbiAxMiwgMjAwMCBleHRyYSBhcmd1bWVudCBwYXRjaC4KCShibG9ja19zdGF0ZW1lbnQ6KTogRml4ZWQgY29tbWVudC4KCShhbm9ueW1vdXNfY2xhc3NfY3JlYXRpb246KTogTGlrZXdpc2UuCgkoY2hlY2tfY2xhc3NfaW50ZXJmYWNlX2NyZWF0aW9uKTogUmV2ZXJzZWQgSmFuIDEyLCAyMDAwIGV4dHJhCglhcmd1bWVudCBwYXRjaC4KCShjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24pOiBMb29zZW5lZCBlcnJvciByZXBvcnQgb24gKGlubmVyKQoJcHVibGljIGNsYXNzIGRlY2xhcmF0aW9ucy4gQ1BDX0lOTkVSX1AgcmVwbGFjZXMgR0VUX0NQQ19MSVNULgoJKGxpbmtfbmVzdGVkX2NsYXNzX3RvX2VuY2xvc2luZyk6IFJldmVyc2VkIEphbiAxMiwgMjAwMCBwYXRjaC4KCShtYXliZV9jcmVhdGVfY2xhc3NfaW50ZXJmYWNlX2RlY2wpOiBSZXZlcnNlZCBKYW4gMTIsIDIwMDAgZXh0cmEKCWFyZ3VtZW50IHBhdGNoLgoJKGNyZWF0ZV9pbnRlcmZhY2UpOiBMaWtld2lzZS4KCShhbm9ueW1vdXNfY2xhc3NfY291bnRlcik6IE5ldyBzdGF0aWMgZ2xvYmFsLgoJKGNyZWF0ZV9hbm9ueW1vdXNfY2xhc3MpOiBSZXZlcnNlZCBKYW4gMTIsIDIwMDAgZXh0cmEgYXJndW1lbnQKCXBhdGNoLiBGaXhlZCBjb21tZW50cy4KCShjcmVhdGVfY2xhc3MpOiBSZXZlcnNlZCBKYW4gMTIsIDIwMDAgZXh0cmEgYXJndW1lbnQgcGF0Y2guIFJlc2V0Cglhbm9ueW1vdXNfY2xhc3NfY291bnRlciB3aGVuIGRlY2xhcmluZyBhIHRvcGxldmVsIGNsYXNzLgoJKGNyYWZ0X2NvbnN0cnVjdG9yKTogRml4ZWQgY29uc3RydWN0b3IgbmFtZSB3aGVuIGhhbmRsaW5nCglhbm9ueW1vdXMgY2xhc3Nlcy4gQW5vbnltb3VzIGNsYXNzIGNvbnN0cnVjdG9ycyB0byBmZWF0dXJlIGhpZGRlbgoJdGhpcyQ8bj4gcGFyYW1ldGVyLgoJKGphdmFfZml4X2NvbnN0cnVjdG9ycyk6IEFkZGVkIGNvbW1lbnQuCgkoamF2YV9jaGVja19maW5hbCk6IEZ1bmN0aW9uIHJlbW92ZWQuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IEZpeGVkIGNvbW1lbnQuIERvbid0IGdlbmVyYXRlCgljbGFzcyBkYXRhLCBzYXZlIGl0cyBvdXRnb2luZyBjb25zdGFudCBwb29sIGluc3RlYWQuCgkodmVyaWZ5X2NvbnN0cnVjdG9yX3N1cGVyKTogU2tpcCBhbm9ueW1vdXMgY2xhc3MgY29uc3RydWN0b3IKCWhpZGRlbiB0aGlzJDxuPiBwYXJhbWV0ZXIuCgkoamF2YV9leHBhbmRfY2xhc3Nlcyk6IE5ldyBsb2NhbCBgc2F2ZWRfY3R4cCcuIFJlbW92ZWQgY2FsbCB0bwoJamF2YV9leHBhbmRfZmluYWxzIGFuZCBqYXZhX2NoZWNrX2ZpbmFsLiBFeHBhbmQgYW5vbnltb3VzIGNsYXNzCgljb25zdHJ1Y3RvcnMuIEdlbmVyYXRlIGNsYXNzIGRhdGEuCgkoYnVpbGRfc3VwZXJfaW52b2NhdGlvbik6IFNraXAgYW5vbnltb3VzIGNsYXNzIGhpZGRlbiB0aGlzJDxuPgoJcGFyYW1ldGVyLgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9zaWduYXR1cmUpOiBVc2UgVFlQRV9TSUdOQVRVUkUgYW5kCglNQVlCRV9DUkVBVEVfVFlQRV9UWVBFX0xBTkdfU1BFQ0lGSUMuCgkoc2V0X2phdmFfc2lnbmF0dXJlKTogTGlrZXdpc2UuCgoyMDAwLTAxLTE4ICBKb2VyZyBCcnVuc21hbm4gIDxqb2VyZy5icnVuc21hbm5AZmVybnVuaS1oYWdlbi5kZT4KCgkqIGdqYXZhaC5jOiBEZWxldGUgQUNDX1ZJU0lCSUxJVFkgZGVmaW5lLgoJKiBqY2YuaDogQWRkIEFDQ19WSVNJQklMSVRZIGRlZmluZS4KCSogcGFyc2UueTogZmluYWw6IHJ1bGUgdGFnZ2VkIDx2YWx1ZT4uCgkoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiBVc2UgQUNDX1ZJU0lCSUxJVFkgZGVmaW5lIGZvcgoJZGVmYXVsdCBwYWNrYWdlIGFjY2VzcyBjaGVjay4KCShsb2NhbF92YXJpYWJsZV9kZWNsYXJhdGlvbl9zdGF0ZW1lbnQpOiBVc2UgZmluYWw6IHJ1bGUuCgoyMDAwLTAxLTE3ICBKb2VyZyBCcnVuc21hbm4gIDxqb2VyZy5icnVuc21hbm5AZmVybnVuaS1oYWdlbi5kZT4KCgkqIHBhcnNlLnkgKGZvcm1hdF9wYXJhbWV0ZXI6KTogVXNlIGZpbmFsOiBydWxlIGluc3RlYWQgb2YgbW9kaWZpZXJzOi4KCShmaW5hbDopOiBOZXcgcnVsZS4KCjIwMDAtMDEtMTcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChwcmludF9maWVsZF9pbmZvKTogQWxsb3cgbm9uLXN0YXRpYyBmaW5hbCBmaWVsZHMuCgoyMDAwLTAxLTE0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLmggKGVudW0gamRlcF9jb2RlKTogTmV3IGVudHJ5IGBKREVQX0FOT05ZTU9VUycuCgkqIHBhcnNlLnkgKHBhdGNoX2Fub255bW91c19jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCShjcmVhdGVfYW5vbnltb3VzX2NsYXNzKTogUmVnaXN0ZXIgaW5jb21wbGV0ZSB0eXBlIHdoZW4gdGhlCgljbGFzcy9pbnRlcmZhY2UgdG8gZXh0ZW5kcy9pbXBsZW1lbnQgaXNuJ3Qga25vd24geWV0LgoJKHBhcnNlcl9jaGVja19zdXBlcl9pbnRlcmZhY2UpOiBTaW1wbGlmeSBhcmd1bWVudCB0byBDTEFTU19JTlRFUkZBQ0UuCgkodmVyaWZ5X2NvbnN0cnVjdG9yX3N1cGVyKTogVHVuZWQgZXJyb3IgbWVzc2FnZS4KCjIwMDAtMDEtMTQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmggKEZPUl9MT09QX1ApOiBSZXBsYWNlcyBJU19GT1JfTE9PUF9QLgoJKEFOT05ZTU9VU19DTEFTU19QKTogTmV3IG1hY3JvLgoJKFRZUEVfU0lHTkFUVVJFLCBUWVBFX0pDRik6IE5ldyBtYWNyb3MuCgkoSU5ORVJfQ0xBU1NfVFlQRV9QKTogRml4ZWQgdHlwbyBpbiBsZWFkaW5nIGNvbW1lbnQuCgkqIHBhcnNlLnkgKGNyZWF0ZV9jbGFzcyk6IEFkZGVkIGxlYWRpbmcgYXJndW1lbnQuCgkobWF5YmVfY3JlYXRlX2NsYXNzX2ludGVyZmFjZV9kZWNsLAoJY2hlY2tfY2xhc3NfaW50ZXJmYWNlX2NyZWF0aW9uKTogTGlrZXdpc2UuCgkoY3JhZnRfY29uc3RydWN0b3IpOiBOZXcgZnVuY3Rpb24uCgkodmVyaWZ5X2NvbnN0cnVjdG9yX3N1cGVyKTogQWRkZWQgYXJndW1lbnQgaW4gcHJvdG90eXBlLgoJKGNsYXNzX2RlY2xhcmF0aW9uOik6IEluc2VydGVkIGxlYWRpbmcgYXJndW1lbnQuCgkoZm9yX2JlZ2luOik6IFVzZSBGT1JfTE9PUF9QLgoJKGFub255bW91c19jbGFzc19jcmVhdGlvbik6IENyZWF0ZSBXRkwgb2YgdGhlIGFub255bW91cyBjbGFzcyB0bwoJaW5zdGFudGlhdGUuIENhbGwgYnVpbGRfbmV3X2ludm9jYXRpb24uIEFkZGVkIGNvbW1lbnRzLgoJKGNoZWNrX2NsYXNzX2ludGVyZmFjZV9jcmVhdGlvbik6IEhhbmRsZSBwYXJhbWV0ZXIgYGFub255bW91cycgaW4KCXZlcmJvc2UgbW9kZSBjbGFzcyBjcmVhdGlvbiBhbm5vdW5jZS4KCShsaW5rX25lc3RlZF9jbGFzc190b19lbmNsb3NpbmcpOiBFeGNsdWRlIGFub255bW91cyBjbGFzc2VzLgoJKG1heWJlX2NyZWF0ZV9jbGFzc19pbnRlcmZhY2VfZGVjbCk6IERvbid0IHNldCBERUNMX0NPTlRFWFQgb24KCWFub255bW91cyBjbGFzcywgZXZlbiB0aG91Z2ggdGhleSBhcHBlYXIgdG8gaGF2ZSBhbiBlbmNsb3NpbmcKCWNvbnRleHQuCgkoY3JlYXRlX2ludGVyZmFjZSk6IFBhc3MgZXh0cmEgYXJndW1lbnQgdG8KCWNoZWNrX2NsYXNzX2ludGVyZmFjZV9jcmVhdGlvbi4KCShjcmVhdGVfYW5vbnltb3VzX2NsYXNzKTogU2V0IEFOT05ZTU9VU19DTEFTU19QIHRvIDEuCgkoY3JlYXRlX2NsYXNzKTogQ2FsbCBjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24gYW5kCgltYXliZV9jcmVhdGVfY2xhc3NfaW50ZXJmYWNlX2RlY2wgd2l0aCBleHRyYSBuZXcgYXJndW1lbnQuIERvbid0CglhZGQgcHJpdmF0ZSB0aGlzJDxuPiB0byBhbm9ueW1vdXMgY2xhc3Nlcy4KCShtZXRob2RfZGVjbGFyYXRvcik6IEluc2VydCBoaWRkZW4gdGhpcyQ8bj4gdG8gYW5vbnltb3VzIGNsYXNzCgljb25zdHJ1Y3RvcnMuCgkoamF2YV9maXhfY29uc3RydWN0b3JzKTogRGVsZXRlZCBjb2RlIGNyZWF0aW5nIGRlZmF1bHQKCWNvbnN0cnVjdG9yLiBDYWxsIGNyYWZ0X2NvbnN0cnVjdG9yIGluc3RlYWQuCgkoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiBTZXQgYHNhd19jb25zdHJ1Y3RvcicgdG8gMSBmb3IKCWFub255bW91cyBjbGFzc2VzLgoJKGZpeF9jb25zdHJ1Y3RvcnMpOiBQYXNzIGV4dHJhIGFyZ3VtZW50IHRvIHZlcmlmeV9jb25zdHJ1Y3Rvcl9zdXBlci4KCSh2ZXJpZnlfY29uc3RydWN0b3Jfc3VwZXIpOiBOZXcgbG9jYWwgYHNkZWNsJywgdXNlIGl0LiBTZWFyY2ggZm9yCgltYXRjaGluZyBjb25zdHJ1Y3RvciAocG9zc2libHkgZmVhdHVyaW5nIGFyZ3VtZW50cykgaW4gc3VwZXIKCWNsYXNzLgoJKGxvb2t1cF9tZXRob2RfaW52b2tlKTogQ3JhZnQgY29uc3RydWN0b3IgYWNjb3JkaW5nIHRvIGFyZ3VtZW50cwoJbGlzdCB3aGVuIGRlYWxpbmcgd2l0aCBhbm9ueW1vdXMgY2xhc3MgY29uc3RydWN0b3JzLgoJKGJ1aWxkX3N1cGVyX2ludm9jYXRpb24pOiBQYXNzIGFyZ3VtZW50cyB0byBhbm9ueW1vdXMgY2xhc3Mgc3VwZXIKCWNvbnN0cnVjdG9ycy4KCShzZWFyY2hfbG9vcCk6IFVzZSBGT1JfTE9PUF9QLgoJKGxhYmVsZWRfYmxvY2tfY29udGFpbnNfbG9vcF9wKTogTGlrZXdpc2UuCgoyMDAwLTAxLTEyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKHNldF9zdXBlcl9pbmZvKTogU2V0IENMQVNTX1NUQVRJQyB3aGVuIGFwcHJvcHJpYXRlLgoJKGVuY2xvc2luZ19jb250ZXh0X3ApOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X2FjY2Vzc19mbGFnc19mcm9tX2RlY2wpOiBIYW5kbGUgQ0xBU1NfU1RBVElDLgoJKG1heWJlX2xheW91dF9zdXBlcl9jbGFzcyk6IEV4dHJhIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCB0bwoJZG9fcmVzb2x2ZV9jbGFzcy4KCShsYXlvdXRfY2xhc3NfbWV0aG9kKTogVXNlIElEX0ZJTklUX1AsIERFQ0xfQ0xJTklUX1AgYW5kCglJRF9JTklUX1AuCgkqIGRlY2wuYyAoYWNjZXNzMF9pZGVudGlmaWVyX25vZGUpOiBOZXcgZ2xvYmFsLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogYWNjZXNzMF9pZGVudGlmaWVyX25vZGUgaW5pdGlhbGl6ZWQuCgkocHVzaGRlY2wpOiBTZXQgREVDTF9DT05URVhUIG9ubHkgb24gbm9uIHR5cGUgZGVjbHMuCgkqIGV4cHIuYyAobG9va3VwX2ZpZWxkKTogTG9va3VwIGlubmVyIGNsYXNzIGZpZWxkcyBpbiBlbmNsb3NpbmcKCWNvbnRleHRzLgoJKGV4cGFuZF9pbnZva2UpOiBVc2UgSURfSU5JVF9QLgoJKGV4cGFuZF9qYXZhX2ZpZWxkX29wKTogVXNlIERFQ0xfQ0xJTklUX1AuCgkqIGphdmEtdHJlZS5kZWYgKENMQVNTX0xJVEVSQUwpOiBOZXcgdHJlZSBjb2RlLgoJKiBqYXZhLXRyZWUuaCAoREVDTF9GVU5DVElPTl9BQ0NFU1NfREVDTCwKCURFQ0xfRlVOQ1RJT05fSU5ORVJfQUNDRVNTLCBGSUVMRF9JTk5FUl9BQ0NFU1MpOiBOZXcgbWFjcm9zLgoJKHN0cnVjdCBsYW5nX2RlY2wpOiBOZXcgZmllbGQgYGlubmVyX2FjY2VzcycuCgkoZW5jbG9zaW5nX2NvbnRleHRfcCk6IFByb3RvdHlwZWQuCgkoREVDTF9JTklUX1AsIERFQ0xfRklOSVRfUCwgREVDTF9DTElOSVRfUCwgSURfSU5JVF9QLCBJRF9GSU5JVF9QLAoJSURfQ0xJTklUX1ApOiBOZXcgbWFjcm9zLgoJKENMQVNTX1NUQVRJQyk6IE5ldyBtYWNyby4KCShDTEFTU19BQ0NFU1MwX0dFTkVSQVRFRF9QKTogTmV3IG1hY3JvLgoJKE9VVEVSX0ZJRUxEX0FDQ0VTU19JREVOVElGSUVSX1AsIElOTkVSX0NMQVNTX0RFQ0xfUCwKCVRPUExFVkVMX0NMQVNTX0RFQ0xfUCwgSU5ORVJfQ0xBU1NfVFlQRV9QLCBUT1BMRVZFTF9DTEFTU19UWVBFX1AsCglJTk5FUl9DTEFTU19QKTogTmV3IG1hY3Jvcy4KCShERUNMX0lOTkVSX0NMQVNTX0xJU1QpOiBOZXcgbWFjcm8uCgkqIGpjZi1wYXJzZS5jICh5eXBhcnNlKTogQXZvaWQgdGhlIHVzZSBvZiBBTlNJIHN0cmluZwoJY29uY2F0ZW5hdGlvbi4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogYmlub3A6IENoYW5nZSB0aGUgdHlwZSBvZgoJdGhlIHNoaWZ0IHZhbHVlIHRvIGludC4gRml4ZWQgdHlwbyBpbiBjb21tZW50LgoJKiBsZXguYyAoaW5zdF9pZCwgd3B2X2lkKTogSW5pdGlhbGl6ZS4KCSogbWFuZ2xlLmMgKHVuaWNvZGVfbWFuZ2xpbmdfbGVuZ3RoKTogVGFrZSBgJCcgaW50byBhY2NvdW50LgoJKiBwYXJzZS5oIChEUkVDT1ZFUiwgUkVDT1ZFUik6IFRlcm1pbmF0ZSBwcm9wZXJseS4KCShJREVOVElGSUVSX0lOTkVSX0NMQVNTX09VVEVSX0ZJRUxEX0FDQ0VTUyk6IE5ldyBtYWNyby4KCSh0eXBlZGVmIHN0cnVjdCBfamRlcCk6IE5ldyBmaWVsZCBgZW5jbG9zaW5nJy4KCShKREVQX0VOQ0xPU0lORyk6IE5ldyBtYWNyby4KCShJU19DTElOSVQpOiBEZWxldGVkIChERUNMX0NMSU5JVF9QIHJlcGxhY2VzIGl0LikKCShzdHJ1Y3QgcGFyc2VyX2N0eHQpOiBOZXcgZmllbGRzIGBtYXJrZXJfYmVnaW5uaW5nJywgYG1hcmtlZF9lbmQnLgoJKEdFVF9DUENfTElTVCwgQ1BDX0lOTkVSX1AsIEdFVF9DUEMsIEdFVF9DUENfVU4sIEdFVF9DUENfVU5fTU9ERSwKCUdFVF9DUENfREVDTF9OT0RFLCBHRVRfRU5DTE9TSU5HX0NQQywgR0VUX05FWFRfRU5DTE9TSU5HX0NQQywKCUdFVF9FTkNMT1NJTkdfQ1BDX0NPTlRFWFQpOiBOZXcgbWFjcm9zLgoJKFBVU0hfQ1BDLCBQVVNIX0VSUk9SLCBQT1BfQ1BDKTogTmV3IG1hY3Jvcy4KCShkb19yZXNvbHZlX2NsYXNzKTogQWRkZWQgZXh0cmEgYXJndW1lbnQgaW4gcHJvdG90eXBlLgoJKiBwYXJzZS55IChyZXNvbHZlX2NsYXNzKTogQWRkZWQgZXh0cmEgYXJndW1lbnQgaW4gcHJvdG90eXBlLgoJKG1heWJlX2NyZWF0ZV9jbGFzc19pbnRlcmZhY2VfZGVjbCk6IExpa2V3aXNlLgoJKG1heWJlX3VzZV9hY2Nlc3NfbWV0aG9kLCBidWlsZF93Zmxfd3JhcCk6IE5ldyBmdW5jdGlvbnMuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfY2xhc3NlcywgamF2YV9jb21wbGV0ZV9leHBhbmRfY2xhc3MpOgoJTGlrZXdpc2UuCgkoamF2YV9wYXJzZXJfY29udGV4dF9wdXNoX2luaXRpYWxpemVkX2ZpZWxkLAoJamF2YV9wYXJzZXJfY29udGV4dF9zdXNwZW5kLCBqYXZhX3BhcnNlcl9jb250ZXh0X3Jlc3VtZSk6CglMaWtld2lzZS4KCShtYXliZV9tYWtlX25lc3RlZF9jbGFzc19uYW1lLCBtYWtlX25lc3RlZF9jbGFzc19uYW1lLAoJc2V0X25lc3RlZF9jbGFzc19zaW1wbGVfbmFtZV92YWx1ZSwKCWxpbmtfbmVzdGVkX2NsYXNzX3RvX2VuY2xvc2luZywgZmluZF9hc19pbm5lcl9jbGFzcywKCWZpbmRfYXNfaW5uZXJfY2xhc3NfZG8sIGNoZWNrX2lubmVyX2NsYXNzX3JlZGVmaW5pdGlvbiwKCWJ1aWxkX3RoaXNuX2Fzc2lnbiwgYnVpbGRfY3VycmVudF90aGlzbiwgYnVpbGRfYWNjZXNzX3RvX3RoaXNuLAoJbWF5YmVfYnVpbGRfdGhpc25fYWNjZXNzX21ldGhvZCwgYnVpbGRfb3V0ZXJfZmllbGRfYWNjZXNzLAoJYnVpbGRfb3V0ZXJfZmllbGRfYWNjZXNzX21ldGhvZHMsIGJ1aWxkX291dGVyX2ZpZWxkX2FjY2Vzc19leHByLAoJYnVpbGRfb3V0ZXJfbWV0aG9kX2FjY2Vzc19tZXRob2QsIGJ1aWxkX25ld19hY2Nlc3NfaWQsCglidWlsZF9vdXRlcl9maWVsZF9hY2Nlc3NfbWV0aG9kLCBvdXRlcl9maWVsZF9hY2Nlc3NfcCwKCW91dGVyX2ZpZWxkX2V4cGFuZGVkX2FjY2Vzc19wLCBvdXRlcl9maWVsZF9hY2Nlc3NfZml4LAoJYnVpbGRfaW5jb21wbGV0ZV9jbGFzc19yZWYsIHBhdGNoX2luY29tcGxldGVfY2xhc3NfcmVmLAoJY3JlYXRlX2Fub255bW91c19jbGFzcyk6IExpa2V3aXNlLgoJKGluc3RfaWQsIHdwdl9pZCk6IE5ldyBzdGF0aWMgZ2xvYmFsIHZhcmlhYmxlcy4KCShzeW5jaHJvbml6ZWQ6KTogTmV3IHJ1bGUsIHRhZ2dlZCA8bm9kZT4uCgkodHlwZV9kZWNsYXJhdGlvbjopOiBObyBsb25nZXIgdGFnZ2VkIDxub2RlPi4gQ2FsbCBQT1BfQ1BDIGluIHN1YgoJcnVsZXMuCgkoYW5vbnltb3VzX2NsYXNzX2NyZWF0aW9uOik6IE5ldyBydWxlLCB0YWdnZWQgPG5vZGU+LgoJKE5FV19USyk6IFRhZ2dlZCA8bm9kZT4uCgkodHlwZV9saXRlcmFscywgYXJyYXlfdHlwZV9saXRlcmFsKTogTmV3IHJ1bGVzLCB0YWdnZWQgPG5vZGU+LgoJKGNsYXNzX2RlY2xhcmF0aW9uOik6IFJlbW92ZWQgYWN0aW9uIHdoZW4gcmVkdWNpbmcgYnkgY2xhc3NfYm9keToKCShjbGFzc19ib2R5Oik6IFNldCBERUNMX0VORF9TT1VSQ0VfTElORSBhbmQgcnVsZSdzIHJldHVybmVkIHZhbHVlCgl1c2luZyBHRVRfQ1BDIGluIHN1Yi1ydWxlcy4KCShjbGFzc19tZW1iZXJfZGVjbGFyYXRpb24pOiBIYW5kbGUgaW5uZXIgY2xhc3Nlcy4KCShtZXRob2RfZGVjbGFyYXRpb24pOiBXaGVuIHJlZHVjaW5nIG1ldGhvZF9oZWFkZXI6LCByZXNldAoJY3VycmVudF9mdW5jdGlvbl9kZWNsIHdoZW4gYXBwcm9wcmlhdGUuCgkobWV0aG9kX2RlY2xhcmF0b3I6KTogU2V0IHRoZSBudW1iZXIgb2YgZm9ybWFsIHBhcmFtZXRlciB0byAwIGZvcgoJbWV0aG9kIGRlY2xhcmVkIHdpdGhvdXQgYXJndW1lbnRzLgoJKGNvbnN0cnVjdG9yX2RlY2xhcmF0b3I6KTogTGlrZXdpc2UuCgkoc3RhdGljX2luaXRpYWxpemVyOik6IExpc3Qgb2YgZWxlbWVudHMga2VwdCBpbiBhIGxpc3QuCgkoc3RhdGljOik6IFJ1bGUgbW9kaWZpZXJzOiByZXBsYWNlcyBNT0RJRklFUl9USy4gRW5mb3JjZSBjb3JyZWN0Cgl1c2Ugb2YgdGhlIGtleXdvcmQgYHN0YXRpYycgZm9yIHR5cGUgZGVjbGFyYXRpb25zLgoJKGJsb2NrX3N0YXRlbWVudDopOiBIYW5kbGUgaW5uZXIgY2xhc3MgZGVjbGFyYXRpb25zLgoJKHByaW1hcnlfbm9fbmV3X2FycmF5Oik6IFVzZSB0eXBlX2xpdGVyYWxzOi4gRml4ZWQgY29tbWVudC4gSGFuZGxlCgl0eXBlIHF1YWxpZmllZCBgdGhpcycuCgkoY2xhc3NfaW5zdGFuY2VfY3JlYXRpb25fZXhwcmVzc2lvbik6IFVzZSBhbm9ueW1vdXNfY2xhc3NfY3JlYXRpb246Cgl0byBoYW5kbGUgaW5uZXIgY2xhc3MgaW5zdGFuY2VzIGNyZWF0aW9uLiBIYW5kbGUgcXVhbGlmaWVkIGBuZXcnLgoJKHNvbWV0aGluZ19kb3RfbmV3KTogQWRkZWQgYXBwcm9wcmlhdGUgYWN0aW9ucy4KCShjcmVhdGVfbmV3X3BhcnNlcl9jb250ZXh0KTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfcHVzaF9wYXJzZXJfY29udGV4dCwgamF2YV9wYXJzZXJfY29udGV4dF9zYXZlX2dsb2JhbCwKCWphdmFfcGFyc2VyX2NvbnRleHRfc3VzcGVuZCk6IFVzZSBjcmVhdGVfbmV3X3BhcnNlcl9jb250ZXh0LgoJKGNoZWNrX21vZGlmaWVycyk6IENoYW5nZWQgbGVhZGluZyBjb21tZW50LgoJKGNoZWNrX2NsYXNzX2ludGVyZmFjZV9jcmVhdGlvbik6IEhhbmRsZSBpbnRlcmNsYXNzZXMuCgkoYWRkX3N1cGVyaW50ZXJmYWNlcyk6IEZpeGVkIGNvbW1lbnQuCgkoY3JlYXRlX2ludGVyZmFjZSk6IEJ1aWxkIHF1YWxpZmllZCBuYW1lIGZyb20gdGhlIHJhd19uYW1lIGluc3RlYWQKCW9mIGl0cyBtYXRjaGluZyBXRkwuIFB1c2ggdGhlIGluaXRpYWxpemVkIGZpZWxkcyBsaXN0LiByYXdfbmFtZSBhZGRlZAoJYXMgYW4gZXh0cmEgYXJndW1lbnQgdG8gbWF5YmVfY3JlYXRlX2NsYXNzX2ludGVyZmFjZV9kZWNsLgoJKGNyZWF0ZV9jbGFzcyk6IEJ1aWxkIHF1YWxpZmllZCBuYW1lIGZyb20gdGhlIHJhd19uYW1lIGluc3RlYWQgb2YKCWl0cyBtYXRjaGluZyBXRkwuIFJlbW92ZWQgYXNzaWdubWVudCB0bwljdXJyZW50X3BhcnNlZF9jbGFzc191bi4KCUNhbGwgUFVTSF9FUlJPUiBiZWZvcmUgcmV0dXJuaW5nIGFuIGVycm9yLiBTdXNwZW5kIHRoZSBjdXJyZW50CglwYXJzZXIgY29udGV4dCB3aGVuIHByb2Nlc3NpbmcgYW4gaW5uZXIgY2xhc3MuIFB1c2ggdGhlCglpbml0aWFsaXplZCBmaWVsZHMgbGlzdC4gcmF3X25hbWUgYWRkZWQgYXMgYW4gZXh0cmEgYXJndW1lbnQgdG8KCW1heWJlX2NyZWF0ZV9jbGFzc19pbnRlcmZhY2VfZGVjbC4gQWRkIHRoZSBwcml2YXRlIHRoaXMkPG4+CglmaWVsZC4KCShkdXBsaWNhdGVfZGVjbGFyYXRpb25fZXJyb3JfcCk6IFVzZSBHRVRfQ1BDIHdoZW4gY2FsbGluZyBmaW5kX2ZpZWxkLgoJKHJlZ2lzdGVyX2ZpZWxkcyk6IEdldCB0aGUgY2xhc3MgdHlwZSBmcm9tIEdFVF9DUEMgYW5kIGhhbmRsZQoJcHJldmlvdXMgZXJyb3JzLiAgQWRkZWQgY29kZSB0byBoYW5kbGUgdGhlIGNyZWF0aW9uIG9mIHN0YXRpYwoJZmllbGRzIGluIGlubmVyIGNsYXNzZXMuIEluaXRpYWxpemVkIGZpZWxkcyBpbml0aWFsaXphdGlvbgoJc3RhdGVtZW50cyBrZXB0IGluIGEgbGlzdCBvZiBsaXN0cy4KCShtYXliZV9nZW5lcmF0ZV9maW5pdCk6IEluaXRpYWxpemVkIGZpZWxkcyBpbml0aWFsaXphdGlvbgoJc3RhdGVtZW50cyBrZXB0IGluIGEgbGlzdCBvZiBsaXN0cy4gVXNlIEdFVF9DUEMuCgkobWF5YmVfZ2VuZXJhdGVfY2xpbml0KTogTGlrZXdpc2UuCgkobWV0aG9kX2hlYWRlcik6IFVzZSBHRVRfQ1BDIGFuZCBHRVRfQ1BDX1VOLgoJKHBhcnNlcl9xdWFsaWZpZWRfY2xhc3NuYW1lKTogSGFuZGxlIGlubmVyIGNsYXNzZXMuCgkocmVnaXN0ZXJfaW5jb21wbGV0ZV90eXBlKTogU2V0IEpERVBfRU5DTE9TSU5HIHVzaW5nIEdFVF9DUEMuCgkoamF2YV9maXhfY29uc3RydWN0b3JzKTogSGlkZSBwb2ludGVyIHRvIGVuY2xvc2luZyBjb250ZXh0CglpbnN0YW5jZSBpbiBjb25zdHJ1Y3RvciBsaXN0IHdoZW4gZGVhbGluZyB3aXRoIGlubmVyIGNsYXNzZXMuCgkoamRlcF9yZXNvbHZlX2NsYXNzKTogQ2FsbCByZXNvbHZlX2NsYXNzIHdpdGggZXh0cmEgZmlyc3QgYXJndW1lbnQKCUpERVBfRU5DTE9TSU5HLgoJKHJlc29sdmVfY2xhc3MpOiBBZGQgZW5jbG9zaW5nIGNvbnRleHQgYXMgYSBmaXJzdCBleHRyYSBhcmd1bWVudAoJdG8gZG9fcmVzb2x2ZV9jbGFzcy4KCShkb19yZXNvbHZlX2NsYXNzKTogQ2FsbCBmaW5kX2FzX2lubmVyX2NsYXNzLiBIYW5kbGUgV0ZMcwoJcHJvcGVybHkuCgkocmVzb2x2ZV9ub19sYXlvdXQpOiBFeHRyYSBhcmd1bWVudCBhZGRlZCB0byByZXNvbHZlX2NsYXNzCglpbnZvY2F0aW9uLgoJKHJlc2V0X21ldGhvZF9uYW1lKTogVXNlIERFQ0xfQ0xJTklUX1AsIERFQ0xfRklOSVRfUC4KCShqYXZhX2dldF9yZWFsX21ldGhvZF9uYW1lKTogVXNlIEdFVF9DUENfVU4uCgkoY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2RlZmluaXRpb25zKTogVXNlIERFQ0xfQ0xJTklUX1AuCgkoamF2YV9jaGVja19hYnN0cmFjdF9tZXRob2RzKTogSGFuZGxlIHN0YXRpYyBtZXRob2QgZGVjbGFyZWQgaW4KCWlubmVyIGNsYXNzZXMgYnkgYW4gZXJyb3IuCgkoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiBVc2UgREVDTF9DTElOSVRfUC4KCShzb3VyY2Vfc3RhcnRfamF2YV9tZXRob2QpOiBBbHNvIHNldCBERUNMX01BWF9MT0NBTFMuCgkoY3JlYXRlX2FydGlmaWNpYWxfbWV0aG9kKTogQ2FsbCBqYXZhX3BhcnNlcl9jb250ZXh0X3NhdmVfZ2xvYmFsCglhbmQgamF2YV9wYXJzZXJfY29udGV4dF9yZXN0b3JlX2dsb2JhbCBpbnN0ZWFkIG9mIHNhdmluZy9yZXN0b3JpbmcKCXRoZSBjb250ZXh0IGJ5IGhhbmQuCgkoZXhwYW5kX3N0YXJ0X2phdmFfbWV0aG9kKTogSW1wcm92ZWQgdmVyYm9zZSBtb2RlIG1lc3NhZ2UuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IEZpeGVkIGxlYWRpbmcgY29tbWVudC4gVXNlCglERUNMX0NMSU5JVF9QLgoJKGZpeF9jb25zdHJ1Y3RvcnMpOiBBZGRlZCBhc3NpZ25tZW50IHRvIHRoaXMkPG4+IGlmIG5lY2Vzc2FyeS4KCShqYXZhX2V4cGFuZF9jbGFzc2VzKTogQ2FsbCBqYXZhX2NvbXBsZXRlX2V4cGFuZF9jbGFzc2VzIGluc3RlYWQKCW9mIGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMuCgkobWFrZV9xdWFsaWZpZWRfcHJpbWFyeSk6IFNpbXBsaWZpZWQuCgkobWVyZ2VfcXVhbGlmaWVkX25hbWUpOiBPcHRpbWl6ZWQgZm9yIG1pc3NpbmcgbGVmdCBvciByaWdodCBwYXJ0cy4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IEhhbmRsZSBhY2Nlc3MgdG8gb3V0ZXIgY2xhc3MgZmllbGRzIGZyb20KCWludGVyY2xhc3Nlcy4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBOZXcgbWFjcm8KCVJFU1RPUkVfVEhJU19BTkRfQ1VSUkVOVF9DTEFTUywgdXNlZC4gSGFuZGxlIGNyZWF0aW9uIG9mIGlubmVyCgljbGFzc2VzLiBSZXBvcnQgZXJyb3Igb24gbm9uIGFwcHJvcHJpYXRlIHF1YWxpZmljYXRpb24gb2YKCWBuZXcnLiBIYW5kbGUgcXVhbGlmaWVkIGB0aGlzJy4KCShub3RfYWNjZXNzaWJsZV9wKTogQWxsb3cgYWNjZXNzIHRvIG91dGVyIGNsYXNzIHByaXZhdGUgZmllbGRzIGZyb20KCWlubmVyIGNsYXNzZXMuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBIYW5kbGUgbWV0aG9kIGludm9jYXRpb25zIHRocm91Z2gKCWFjY2VzcyBtZXRob2RzIGFuZCBpbm5lciBjbGFzcyBjb25zdHJ1Y3RvciBpbnZvY2F0aW9ucy4KCShmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBTZWFyY2ggZW5jbG9zaW5nCgljb250ZXh0cyBvZiBhbiBpbm5lciBjbGFzcy4KCShzZWFyY2hfYXBwbGljYWJsZV9tZXRob2RzX2xpc3QpOiBGaXhlZCB0eXBvLgoJKGFyZ3VtZW50X3R5cGVzX2NvbnZlcnRpYmxlKTogSGFuZGxlIGlubmVyIGNsYXNzIGNvbnN0cnVjdG9ycycKCWhpZGRlbiBvdXRlciBjb250ZXh0IHJlZmVyZW5jZSBhcmd1bWVudC4KCShxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogSGFuZGxlIHF1YWxpZmllZCBgdGhpcycuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBIYW5kbGUgdXNlIG9mIGZpZWxkIGFjY2Vzc2VkIHRocm91Z2gKCWFydGlmaWNpYWwgYWNjZXNzIG1ldGhvZHMgaW4gdmFyaW91cyBjYXNlcyBvZiBhc3NpZ25tZW50cy4gSGFuZGxlCglDTEFTU19MSVRFUkFMIG5vZGUuCgkoY2hlY2tfZmluYWxfYXNzaWdubWVudCk6IFVzZSBERUNMX0NMSU5JVF9QLgoJKHZhbGlkX3JlZl9hc3NpZ25jb252X2Nhc3RfcCk6IEhhbmRsZSB0aGUgZGVzdGluYXRpb24gYmVpbmcgYW4KCWVuY2xvc2luZyBjb250ZXh0IG9mIHRoZSBzb3VyY2UuCgkocGF0Y2hfdW5hcnlvcCk6IEhhbmRsZSB1c2Ugb2YgZmllbGQgYWNjZXNzZWQgdGhyb3VnaCBhcnRpZmljaWFsCglhY2Nlc3MgbWV0aG9kcy4KCShwYXRjaF9yZXR1cm4pOiBVc2UgREVDTF9DTElOSVRfUC4KCShwYXRjaF90aHJvd19zdGF0ZW1lbnQpOiBVc2UgREVDTF9DTElOSVRfUC4KCShjaGVja190aHJvd25fZXhjZXB0aW9ucyk6IFVzZSBERUNMX0ZJTklUX1AgYW5kIERFQ0xfSU5JVF9QLgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBVc2UgSURfQ0xJTklUX1AgYW5kCglJRF9JTklUX1AuCgoyMDAwLTAxLTE2ICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGJ1aWxkX3N0cmluZ19jb25jYXRlbmF0aW9uKTogT25seSB1c2UKCVN0cmluZ0J1ZmZlcihTdHJpbmcpIHNob3J0Y3V0IGlmIFN0cmluZyBhcmcgaXMgY29uc3RhbnQuCgoyMDAwLTAxLTEyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IGJpbm9wOiBDaGFuZ2UgdGhlIHR5cGUgb2YKCXRoZSBzaGlmdCB2YWx1ZSB0byBpbnQuIEZpeGVkIHR5cG8gaW4gY29tbWVudC4KCjIwMDAtMDEtMTEgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogamNmLXBhdGguYzogRGVsZXRlIFBBVEhfU0VQQVJBVE9SIGFuZCBESVJfU0VQQVJBVE9SIG1hY3Jvcy4KCSogamNmLXdyaXRlLmM6IExpa2V3aXNlLgoJKiBwYXJzZS55OiBMaWtld2lzZS4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZS4KCjIwMDAtMDEtMDkgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogRW1pdCBpbnZva2VpbnRlcmZhY2UKCWJ5dGVjb2RlcyBpbiB0aGUgY29ycmVjdCBvcmRlci4KCjIwMDAtMDEtMDkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChqY2YtZHVtcCwgZ2NqaCk6IE1vdmUgLi4vZXJyb3JzLm8gYmVmb3JlICQoTElCUykuCgoyMDAwLTAxLTA2ICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogU3dpdGNoIHRvIHBlcm1hbmVudCBvYnN0YWNrCgliZWZvcmUgYnVpbGRpbmcgY29uc3RhbnQgYXJyYXkgZGVjbC4KCjIwMDAtMDEtMDYgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2NvbmRpdGlvbmFsKTogRml4ZWQgaW5kZW50YXRpb24gaW4KCW1ldGhvZCBpbnZvY2F0aW9uIGFuZCB0eXBvIGluIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24uCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBDT05EX0VYUFIgY2FuIGJlIHBhcnQgb2YgYSBiaW5vcC4gSXNzdWUKCXRoZSBhcHByb3ByaWF0ZSBOT1RFX1BPUC4KCSogcGFyc2UueSAocGF0Y2hfYmlub3ApOiBTaGlmdCB2YWx1ZSBtYXNrIHRvIGZlYXR1cmUgdGhlIHJpZ2h0Cgl0eXBlLgoKMTk5OS0xMi0zMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2xhc3MuYyAoYXNzdW1lX2NvbXBpbGVkLCBhc3N1bWVfY29tcGlsZWRfbm9kZSk6IEFkZCBzdGF0aWMKCXByb3RvdHlwZS4KCShhZGRfYXNzdW1lX2NvbXBpbGVkKTogVXNlIHhtYWxsb2MveHN0cmR1cCwgbm90IG1hbGxvYy9zdHJkdXAuCgoJKiBqY2YtZHVtcC5jIChBUlJBWV9ORVdfTlVNKTogQ2FzdCBsb25nIHRvIGludCBpbiBzd2l0Y2guCgoJKiBqdmdlbm1haW4uYyAodXNhZ2UpOiBBZGQgc3RhdGljIHByb3RvdHlwZSB3aXRoIEFUVFJJQlVURV9OT1JFVFVSTi4KCgkqIHBhcnNlLmggKE9CU09MRVRFX01PRElGSUVSX1dBUk5JTkcpOiBSZW5hbWUgcGFyYW1ldGVyIGBtb2RpZmllcicKCXRvIGBfX21vZGlmaWVyJyB0byBhdm9pZCBzdHJpbmdpZnlpbmcgaXQuCgoJKiBwYXJzZS55ICh2ZXJpZnlfY29uc3RydWN0b3JfY2lyY3VsYXJpdHkpOiBEb24ndCBjYWxsIGEgdmFyaWFkaWMKCWZ1bmN0aW9uIHdpdGggYSBub24tbGl0ZXJhbCBmb3JtYXQgc3RyaW5nLgoJKGphdmFfY2hlY2tfYWJzdHJhY3RfbWV0aG9kcyk6IE1vdmUgdW5yZWFjaGFibGUgY29kZSBpbnNpZGUKCWBjb250aW51ZScgc3RhdGVtZW50LgoJKGxvb2t1cF9tZXRob2RfaW52b2tlKTogQ2FsbCB4c3RyZHVwLCBub3Qgc3RyZHVwLgoKCSogZXhwci5jIChleHBhbmRfamF2YV9maWVsZF9vcCk6IEF2b2lkIHRoZSB1c2Ugb2YgQU5TSSBzdHJpbmcKCWNvbmNhdGVuYXRpb24uCgoJKiBqY2YtcGFyc2UuYyAoeXlwYXJzZSk6IExpa2V3aXNlLgoKCSoganYtc2Nhbi5jIChtYWluKTogTGlrZXdpc2UuCgoxOTk5LTEyLTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBwYXJzZS5oIChBQlNUUkFDVF9DSEVDSywgSkNPTlNUUlVDVE9SX0NIRUNLLAoJRVJST1JfQ0FOVF9DT05WRVJUX1RPX0JPT0xFQU4sIEVSUk9SX0NBTlRfQ09OVkVSVF9UT19OVU1FUklDLAoJRVJST1JfQ0FTVF9ORUVERURfVE9fSU5URUdSQUwpOiBBdm9pZCB0aGUgdXNlIG9mIEFOU0kgc3RyaW5nCgljb25jYXRlbmF0aW9uLgoKCSogcGFyc2UueSAoc3luY2hyb25pemVkLCB2YXJpYWJsZV9yZWRlZmluaXRpb25fZXJyb3IsCgljaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24sIGNyZWF0ZV9pbnRlcmZhY2UsIGNyZWF0ZV9jbGFzcywKCW1ldGhvZF9oZWFkZXIsIGZpbmlzaF9tZXRob2RfZGVjbGFyYXRpb24sCgljaGVja19tb2RpZmllcnNfY29uc2lzdGVuY3ksIG1ldGhvZF9kZWNsYXJhdG9yLAoJY29tcGxldGVfY2xhc3NfcmVwb3J0X2Vycm9ycywgY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2RlZmluaXRpb25zLAoJamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMsIGNoZWNrX3Rocm93c19jbGF1c2VzLAoJamF2YV9jaGVja19hYnN0cmFjdF9tZXRob2RzLCByZWFkX2ltcG9ydF9kaXIsCgljaGVja19wa2dfY2xhc3NfYWNjZXNzLCBkZWNsYXJlX2xvY2FsX3ZhcmlhYmxlcywgZml4X2NvbnN0cnVjdG9ycywKCWN1dF9pZGVudGlmaWVyX2luX3F1YWxpZmllZCwgcmVzb2x2ZV9leHByZXNzaW9uX25hbWUsCglyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUsIHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uLAoJamF2YV9jb21wbGV0ZV9saHMsIHBhdGNoX2Fzc2lnbm1lbnQsIHRyeV9idWlsdGluX2Fzc2lnbmNvbnYsCglwYXRjaF9iaW5vcCwgcGF0Y2hfYXJyYXlfcmVmLCBwYXRjaF9uZXdhcnJheSwgYnVpbGRfbGFiZWxlZF9ibG9jaywKCXBhdGNoX2V4aXRfZXhwciwgcGF0Y2hfZXhpdF9leHByLCBwYXRjaF9zd2l0Y2hfc3RhdGVtZW50LAoJcGF0Y2hfdHJ5X3N0YXRlbWVudCwgcGF0Y2hfc3luY2hyb25pemVkX3N0YXRlbWVudCwKCXBhdGNoX3Rocm93X3N0YXRlbWVudCwgY2hlY2tfdGhyb3duX2V4Y2VwdGlvbnMsCglwYXRjaF9jb25kaXRpb25hbF9leHByKTogTGlrZXdpc2UuCgoxOTk5LTEyLTI0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChMSUJERVBTKTogQWRkZWQgZ2NjJ3MgZXJyb3JzLm8KCSguLi9qY2YtZHVtcCQoZXhlZXh0KTopOiBMaW5rIHdpdGggZ2NjJ3MgZXJyb3JzLm8KCSguLi9nY2poJChleGVleHQpOik6IExpa2V3aXNlLgoJKiBleHByLmMgKGV4cGFuZF9qYXZhX05FVyk6IExheW91dCB0aGUgZW50aXJlIHRhcmdldCB0eXBlIGluc3RlYWQgb2YKCWxheWluZyBvdXQgaXRzIG1ldGhvZHMgb25seS4KCShsb29rdXBfZmllbGQpOiBMYXlvdXQgdGhlIGNsYXNzIGFmdGVyIGhhdmluZyBsb2FkZWQgaXQuCgkqIGphdmEtdHJlZS5oIChqYXZhX2RlYnVnX2NvbnRleHQpOiBEZWNsYXJlZC4KCSogamNmLWlvLmMgKHRvcGxldi5oKTogSW5jbHVkZWQuCgkoZmluZF9jbGFzcyk6IFJlbW92ZWQgYXNzaWdubWVudCB0byBqY2YncyBvdXRvZnN5bmNoCglmaWVsZC4gRm9yY2Ugc291cmNlIGZpbGUgdG8gYmUgcmVhZCBpZiBuZXdlciB0aGFuIGl0cyBtYXRjaGluZwoJY2xhc3MgZmlsZS4gVHdlYWtlZCBkZWJ1ZyBtZXNzYWdlcy4KCSogamNmLXBhcnNlLmMgKGpjZl9vdXRfb2Zfc3luY2gpOiBEZWxldGVkLgoJKHJlYWRfY2xhc3MpOiBDYWxsIHRvIGpjZl9vdXRfb2Zfc3luY2ggcmVtb3ZlZC4KCSogamNmLmggKHR5cGVkZWYgc3RydWN0IEpDRik6IEZpZWxkIGBvdXRvZnN5bmNoJyBkZWxldGVkLgoJKGpjZl9vdXRfb2Zfc3luY2gpOiBQcm90b3R5cGUgZGVsZXRlZC4KCSogcGFyc2UuaCAoc3RydWN0IHBhcnNlcl9jdHh0KTogYG1pbnVzX3NlZW4nLCBgamF2YV9lcnJvcl9mbGFnJywKCWBkZXByZWNhdGVkJyBhbmQgYGNsYXNzX2Vycic6IGludGVnZXIgdHVybmVkIGludG8gYml0LWZpZWxkcy4KCU5ldyBiaXQtZmllbGRzIGBzYXZlZF9kYXRhX2N0eCcgYW5kIGBzYXZlZF9kYXRhJy4gRml4ZWQgY29tbWVudHMuCgkqIHBhcnNlLnkgKHBhY2thZ2VfbGlzdCk6IE5ldyBnbG9iYWwuCgkocGFja2FnZV9kZWNsYXJhdGlvbjopOiBSZWNvcmQgbmV3bHkgcGFyc2VkIHBhY2thZ2UgbmFtZS4KCShleHRyYV9jdHhwX3B1c2hlZF9wKTogU3RhdGljIGdsb2JhbCBkZWxldGVkLgoJKGphdmFfcGFyc2VyX2NvbnRleHRfc2F2ZV9nbG9iYWwpOiBDcmVhdGUgYnVmZmVyIGNvbnRleHQgZm9yIHRoZQoJcHVycG9zZSBvZiBzYXZpbmcgZ2xvYmFscywgaWYgbmVjZXNzYXJ5LgoJKGphdmFfcGFyc2VyX2NvbnRleHRfcmVzdG9yZV9nbG9iYWwpOiBQb3AgY29udGV4dCBwdXNoZWQgZm9yIHRoZQoJcHVycG9zZSBvZiBzYXZpbmcgZ2xvYmFscywgaWYgbmVjZXNzYXJ5LgoJKGphdmFfZGVidWdfY29udGV4dF9kbyk6IE5ldyBwcm90b3R5cGUgYW5kIGZ1bmN0aW9uLgoJKGphdmFfZGVidWdfY29udGV4dCk6IExpa2V3aXNlLgoJKGRvX3Jlc29sdmVfY2xhc3MpOiBVc2UgYWxyZWFkeSBwYXJzZWQgcGFja2FnZSBuYW1lcyB0byBxdWFsaWZ5CglhbmQgbG9va3VwIGNsYXNzIGNhbmRpZGF0ZS4KCShqYXZhX3ByZV9leHBhbmRfY2xpbml0KTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBsb2NhbCB2YXJpYWJsZS4KCjE5OTktMTItMTcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChkZWNvZGVfc2lnbmF0dXJlX3BpZWNlKTogUHJpbnQgIjo6IiBpbiBKQXJyYXk8Pi4gIFRoaXMKCWZpeGVzIFBSIGdjai8xMTkuCgkocHJvY2Vzc19maWxlKTogVXNlIGBcblwnIGF0IGVuZCBvZiBlYWNoIGxpbmUgaW4gc3RyaW5nLgoKMTk5OS0xMi0xNiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9pbnZva2UpOiBMYXlvdXQgdGhlIGxvYWRlZCBjbGFzcyBiZWZvcmUKCWF0dGVtcHRpbmcgdG8gdXNlIGl0LgoJKGV4cGFuZF9qYXZhX2ZpZWxkX29wKTogQWxsb3cgZmluYWwgZmllbGQgYXNzaWdubWVudHMgdG8gdGFrZQoJcGxhY2UgaW4gJGZpbml0JC4KCSogdHlwZWNrLmMgKGNvbnZlcnQpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIGlmIGV4cHIgaXMgbnVsbC4KCjE5OTktMTItMTQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoY2xhc3NfZGVwdGgpOiBSZXR1cm4gLTEgaWYgdGhlIGNsYXNzIGRvZXNuJ3QgbG9hZAoJcHJvcGVybHkuCgkqIGV4cHIuYyAoY2FuX3dpZGVuX3JlZmVyZW5jZV90byk6IENoZWNrIGZvciBlcnJvcnMgZHVyaW5nIGRlcHRoCgljb21wdXRhdGlvbiBhbmQgcmV0dXJuIDAgYWNjb3JkaW5nbHkuCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9zb3VyY2VfZmlsZSk6IENhbGwgamF2YV9maXhfY29uc3RydWN0b3JzIHRvCgljcmVhdGUgZGVmYXVsdCBjb25zdHJ1Y3RvcnMgYW5kIGFkZCBhbiBvdGhlciBlcnJvciBjaGVjay4KCSogcGFyc2UuaCAoamF2YV9maXhfY29uc3RydWN0b3JzKTogUHJvdG90eXBlZC4KCSogcGFyc2UueSAoamF2YV9wcmVfZXhwYW5kX2NsaW5pdCk6IExpa2V3aXNlLgoJKGJ1aWxkX3N1cGVyX2ludm9jYXRpb24pOiBSZS1wcm90b3R5cGVkIHRvIGZlYXR1cmUgb25lIGFyZ3VtZW50LgoJKGphdmFfY2hlY2tfY2lyY3VsYXJfcmVmZXJlbmNlKTogRGlyZWN0bHkgdXNlIGBjdXJyZW50Jy4KCShqYXZhX2ZpeF9jb25zdHJ1Y3RvcnMpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiBEb24ndCBjcmVhdGUgZGVmYXVsdCBjb25zdHJ1Y3RvcnMKCWhlcmUsIGJ1dCBhYm9ydCBpZiBub25lIHdlcmUgZm91bmQuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IFByZS1wcm9jZXNzIDxjbGluaXQ+IGNhbGxpbmcKCWphdmFfcHJlX2V4cGFuZF9jbGluaXQuCgkoamF2YV9wcmVfZXhwYW5kX2NsaW5pdCk6IE5ldyBmdW5jdGlvbi4KCShmaXhfY29uc3RydWN0b3JzKTogYnVpbGRfc3VwZXJfaW52b2NhdGlvbiBpbnZva2VkIHdpdGggdGhlCgljdXJyZW50IG1ldGhvZCBkZWNsYXJhdGlvbiBhcyBhbiBhcmd1bWVudC4KCShidWlsZF9zdXBlcl9pbnZvY2F0aW9uKTogVXNlIHRoZSBjb250ZXh0IG9mIHRoZSBwcm9jZXNzZWQgbWV0aG9kCglkZWNsIGFyZ3VtZW50IGluc3RlYWQgb2YgY3VycmVudF9jbGFzcy4KCSogdHlwZWNrLmMgKGxvb2t1cF9qYXZhX21ldGhvZCk6IFRha2UgV0ZMcyBpbiBtZXRob2QgbmFtZXMgaW50bwoJYWNjb3VudC4KCjE5OTktMTItMTQgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogZmxhZ19rZWVwX2lubGluZV9mdW5jdGlvbnMgdG8ga2VlcAoJcHJpdmF0ZSBtZXRob2RzIGluIHRoZSBtZXRob2QgYXJyYXkuCgoxOTk5LTEyLTE1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IFRha2UgaW50byBhY2NvdW50IGJvdGggdHlwZXMgb2YKCWB0aHJvdydzIHdoZW4gY2hlY2tpbmcgZm9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLgoKMTk5OS0xMi0xMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocyk6IEZvcmNlIGNvbnZlcnNpb24gb2YgYXJyYXkKCWRpbWVuc2lvbnMgdG8gaW50X3R5cGVfbm9kZSwgdGhhdCdzIHdoYXQgcnVudGltZSdzIEFCSSBleHBlY3RzLgoKMTk5OS0xMi0xMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS5oIChFWFBSX1dGTF9RVUFMSUZJQ0FUSU9OKTogVGVtcG9yYXJ5IHVzZXMgdGhlIHRoaXJkCglvcGVyYW5kIG9mIGEgV0ZMLCB1bnRpbCB0aGUgSmF2YSBmcm9udC1lbmQgZ2V0cyBmaXhlZCB3aXRoIHJlZ2FyZAoJdG8gTWFyayBNaXRjaGVsbCdzIGdjYy90cmVlLmggcGF0Y2ggKDE5OTktMTItMDQuKQoKMTk5OS0xMi0xMCAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBwYXJzZS5oIChCVUlMRF9USFJPVyk6IEFkZCBzdXBwb3J0IGZvciBzamxqLWV4Y2VwdGlvbnMuCglkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQWRkIF9Kdl9TamxqX1Rocm93LgoJZXhwci5jIChidWlsZF9qYXZhX2F0aHJvdyk6IEFkZCBzdXBwb3J0IGZvciBzamxqLWV4Y2VwdGlvbnMuCglqYXZhLXRyZWUuaDogRGl0dG8uCglqY2Ytd3JpdGUuYzogRGl0dG8uCgoxOTk5LTEyLTA4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogU3dpdGNoIHRvIHBlcm1hbmVudCBvYnN0YWNrCgliZWZvcmUgY2FsbGluZyBleHBhbmRfZWhfcmVnaW9uX3N0YXJ0IGFuZCBleHBhbmRfc3RhcnRfYWxsX2NhdGNoLgoJKiBleGNlcHQuYyAoZXhwYW5kX3N0YXJ0X2phdmFfaGFuZGxlcik6IFN3aXRjaCB0byBwZXJtYW5lbnQKCW9ic3RhY2sgYmVmb3JlIGNhbGxpbmcgZXhwYW5kX2VoX3JlZ2lvbl9zdGFydC4KCShleHBhbmRfZW5kX2phdmFfaGFuZGxlcik6IFN3aXRjaCB0byBwZXJtYW5lbnQgb2JzdGFjayBiZWZvcmUKCWNhbGxpbmcgZXhwYW5kX3N0YXJ0X2FsbF9jYXRjaC4KCjE5OTktMTItNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogTWFyayB0aHJvd19ub2RlIGFzIGEgbm9yZXR1cm4KCWZ1bmN0aW9uIHdpdGggc2lkZSBlZmZlY3RzLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogTWFyayBhbGwgbWVtb3J5IGFsbG9jYXRpbmcgREVDTHMgd2l0aAoJREVDTF9JU19NQUxMT0MuCgoxOTk5LTEyLTAxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfZW5kX2phdmFfaGFuZGxlcik6IENhbGwKCWV4cGFuZF9yZXN1bWVfYWZ0ZXJfY2F0Y2ggYW5kIGVuZF9jYXRjaF9oYW5kbGVyLgoKMTk5OS0xMS0zMCAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBDcmVhdGUgbmV3IHJldHVybiBsYWJlbAoJY2hhaW4gaWYgbm9uIGV4aXN0ZW50IChkb24ndCByZWx5IG9uIHRoZSB2ZXJpZmllZCBzdGF0ZSBvZiB0aGUganNyCgl0YXJnZXQuKQoKMTk5OS0xMS0zMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBGaXhlZCBpbmRlbnRhdGlvbiBmb3IKCUNPTVBPVU5EX0VYUFIgYW5kIEZJWF9UUlVOQ19FWFBSIGNhc2VzLgoKCSogcGFyc2UueSAocGF0Y2hfYXNzaWdubWVudCk6IFJlbW92ZWQgYm9ndXMgZmluYWwgY2xhc3MgdGVzdCBvbgoJbGhzIHdoZW4gY2hlY2tpbmcgb24gd2hldGhlciB0byBlbWl0IGFuIEFycmF5U3RvcmVFeGNlcHRpb24gcnVudGltZQoJY2hlY2suCgkqIGV4cHIuYyAoZXhwYW5kX2phdmFfYXJyYXlzdG9yZSk6IExpa2V3aXNlLgoKMTk5OS0xMS0yOCBBbnRob255IEdyZWVuIDxncmVlbkBjeWdudXMuY29tPgoKCSogZGVjbC5jIChmaW5kX2xvY2FsX3ZhcmlhYmxlKTogUmV1c2Ugc2luZ2xlIHNsb3QgZGVjbHMgd2hlbgoJICBhcHByb3ByaWF0ZS4KCjE5OTktMTEtMjQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmMgKHNhd19qYXZhX3NvdXJjZSk6IEdsb2JhbCB2YXJpYWJsZSByZW1vdmVkLgoJKHJlYWRfY2xhc3MpOiBEb24ndCB1c2UgYHNhd19qYXZhX3NvdXJjZScuIEFkZGVkIGV4dHJhIGJyYWNlcy4KCSh5eXBhcnNlKTogQ29kZSBzZXR0aW5nIGBzYXdfamF2YV9zb3VyY2UnIHJlbW92ZWQuCgoxOTk5LTExLTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZXhjZXB0LmMgKGVtaXRfaGFuZGxlcnMpOiBaZXJvIGNhdGNoX2NsYXVzZXMgYWZ0ZXIgZW1pdHRpbmcgdGhlbS4KCjE5OTktMTEtMjMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogdmVyaWZ5LmMgKG1lcmdlX3R5cGVfc3RhdGUpOiBOb24gdmVyaWZpZWQgc3Vicm91dGluZXMgYmVpbmcKCWNvbnNpZGVyZWQgbW9yZSB0aGFuIG9uY2UgdG8gdHJpZ2dlciBwYXNzaXZlIHR5cGUgbWVyZ2UuCgoxOTk5LTExLTIzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGNhdGNoX2NsYXVzZV9wYXJhbWV0ZXI6KTogU3RpbGwgc2V0IGAkJCcgdG8gTlVMTF9UUkVFCglpbiBjYXNlIG9mIGVycm9yLiBFcnJvciBtZXNzYWdlIHR1bmVkLgoKMTk5OS0xMS0yMSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBjb25zdGFudHMuYyAoZmluZF9tZXRob2RyZWZfaW5kZXgpOiBVbndyYXAgbWV0aG9kIG5hbWVzIGJlZm9yZQoJaW5zZXJ0aW5nIHRoZW0gaW4gdGhlIGNvbnN0YW50IHBvb2wuCgoJKiBqY2YtcGFyc2UuYyAoamNmX3BhcnNlKTogRGlzcGxheSBgaW50ZXJmYWNlJyB3aGVuIGFwcHJvcHJpYXRlLgoKCSogY2xhc3MuYyAoYXNzdW1lX2NvbXBpbGVkX25vZGUpOiBOZXcgdHlwZWRlZi4KCShhc3N1bWVfY29tcGlsZWRfdHJlZSk6IE5ldyBzdGF0aWMgZGF0YS4KCShmaW5kX2Fzc3VtZV9jb21waWxlZF9ub2RlKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9hc3N1bWVfY29tcGlsZWQpOiBOZXcgZnVuY3Rpb24uCgkoYXNzdW1lX2NvbXBpbGVkKTogTmV3IGZ1bmN0aW9uLgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBVc2UgYXNzdW1lX2NvbXBpbGVkLgoJKGlzX2NvbXBpbGVkX2NsYXNzKTogVXNlIGFzc3VtZV9jb21waWxlZC4KCgkqIGphdmEtdHJlZS5oIChhZGRfYXNzdW1lX2NvbXBpbGVkKTogRGVjbGFyZS4KCgkqIGxhbmcuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogUGFyc2UgbmV3IG9wdGlvbnMuCgoxOTk5LTExLTE3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzcyk6IEFsd2F5cyBjb252ZXJ0IFRZUEVfU0laRV9VTklUIHRvCglpbnRfdHlwZV9ub2RlOiB0aGF0J3Mgd2hhdCBgX0p2X0FsbG9jT2JqZWN0JyBleHBlY3RzLgoKMTk5OS0xMS0xMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChsb29rdXBfbWV0aG9kX2ludm9rZSk6IFVzZSBsYW5nX3ByaW50YWJsZV9uYW1lIHRvCglyZWxpYWJseSBidWlsZCB0aGUgdHlwZSBuYW1lIGR1cmluZyBlcnJvciByZXBvcnQuIEZpeGVzIFBSIGdjai85Ny4KCjE5OTktMTEtMDkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGpjZi1wYXRoLmM6IEluY2x1ZGUgPHN5cy9zdGF0Lmg+LgoJKGpjZl9wYXRoX2luaXQpOiBTZWFyY2ggZm9yIGxpYmphdmEuemlwLiAgRml4ZXMgUFIgZ2NqLzg0LgoJKERJUl9VUCk6IE5ldyBtYWNyby4KCjE5OTktMTEtMDkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoc291cmNlX2VuZF9qYXZhX21ldGhvZCk6IFJlc3VtZSBwZXJtYW5lbnQgYWxsb2NhdGlvbiwKCXJldmVyc2luZyBBcHIgMjcgMTk5OCBwYXRjaC4KCShwYXRjaF9zdHJpbmdfY3N0KTogUG9wIG9ic3RhY2tzIGFmdGVyIGhhdmluZyBwdXNoZWQgdGhlIHBlcm1hbmVudAoJb25lcy4KCjE5OTktMTEtMDUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9jbGFzcyk6IEVtaXQgaW5saW5lZCBtZXRob2RzIGlmIGFueSBuYXRpdmUKCW1ldGhvZHMgZXhpc3QgaW4gdGhlIGNsYXNzLiAgRml4ZXMgUFIgZ2NqLzg1LgoKMTk5OS0xMS0wNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBIYW5kbGUgUExVU19FWFBSLgoJKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBMaWtld2lzZS4KCjE5OTktMTEtMDMgIEdvZG1hciBCYWNrIDxnYmFja0Bjcy51dGFoLmVkdT4KCgkqIHR5cGVjay5jOiAobG9va3VwX2phdmFfbWV0aG9kKTogIHNlYXJjaCBhbGwgaW5oZXJpdGVkCglpbnRlcmZhY2VzIHdoZW4gbG9va2luZyB1cCBpbnRlcmZhY2UgbWV0aG9kLgoKMTk5OS0xMS0wMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChtZXRob2RfaGVhZGVyOik6IElzc3VlIGVycm9yIG1lc3NhZ2UgZm9yIHJ1bGUgYHR5cGUKCWVycm9yJy4KCShzeW5jaHJvbml6ZWQ6KTogRXJyb3IgcmVwb3J0IHdoZW4gbm90IHVzaW5nIHN5bmNocm9uaXplZC4KCjE5OTktMTEtMDEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogUHJldmVudCBgdGhpcycgZnJvbQoJYmVpbmcgdXNlZCBiZWZvcmUgdGhlIHN1cGVyY2xhc3MgY29uc3RydWN0b3IgaGFzIGJlZW4gY2FsbGVkLgoJKGNvbXBsZXRlX2Z1bmN0aW9uX2FyZ3VtZW50cyk6IFVzZSBDQUxMX0VYUExJQ0lUX0NPTlNUUlVDVE9SX1AKCWluc3RlYWQgb2YgYENBTExfVEhJU19DT05TVFJVQ1RPUl9QJy4KCjE5OTktMTAtMzAgIFRvZGQgVC4gRnJpZXMgPHRvZGRAbGlnaHRob3VzZS5mcmllcy5uZXQ+CgoJKiBjaGVjay1pbml0LmM6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoxOTk5LTEwLTI5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGFkZF9tZXRob2RfMSk6IFNldCBERUNMX0lOTElORSB0byAxIGZvciBwcml2YXRlLCBzdGF0aWMKCWFuZCBmaW5hbCBtZXRob2QuCgoxOTk5LTEwLTI5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGV4cHJlc3Npb25fc3RhdGVtZW50Oik6IENhbGwgZnVuY3Rpb24gdG8gcmVwb3J0CglpbXByb3BlciBpbnZvY2F0aW9uIG9mIGEgY29uc3RydWN0b3IuCgkocGFyc2VfY3Rvcl9pbnZvY2F0aW9uX2Vycm9yKTogTmV3IGZ1bmN0aW9uLgoKMTk5OS0xMC0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAocG9wbGV2ZWwpOiBEb24ndCBzZXQgQkxPQ0tfVFlQRV9UQUdTIG9yIGNhbGwKCXJlbWVtYmVyX2VuZF9ub3RlLgoKMTk5OS0xMC0yMSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSoganZnZW5tYWluLmMgKG1haW4pOiBfSnZfQ29tcGlsZXJfUHJvcGVydGllcyBub3cgYW4gZXh0ZXJuOyBzZXQKCWluIGdlbmVyYXRlZCBgbWFpbicuCgoxOTk5LTEwLTIxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IEhhbmRsZSBNT0RJRllfRVhQUi4KCShxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogTGlrZXdpc2UuCgoxOTk5LTEwLTIwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfdHJlZSk6IGZvbGRfY29uc3RhbnRfZm9yX2luaXQgdG8gd29yayBvbgoJcGVybWFuZW50X29ic3RhY2suCgkoamF2YV9jb21wbGV0ZV9saHMpOiBMaWtld2lzZS4KCShhcnJheV9jb25zdHJ1Y3Rvcl9jaGVja19lbnRyeSk6IENvbXBsZXRlIGFuIGluaXRpYWxpemVyIGVsZW1lbnQKCW9uIHBlcm1hbmVudF9vYnN0YWNrLgoKMTk5OS0xMC0xOSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmMgKHBhcnNlX3NvdXJjZV9maWxlKTogQ2FsbCBqY2ZfZGVwZW5kZW5jeV9hZGRfZmlsZS4KCUZyb20gTWlrZSBNb3JldG9uIDxtaWtlQHBpbGxpbS5kZW1vbi5jby51az4uCgoxOTk5LTEwLTE1ICBHcmVnIE1jR2FyeSAgPGdrbUBnbnUub3JnPgoKCSogamF2YS10cmVlLmggKGZsYWdfYm91bmRzX2NoZWNrKTogUmVtb3ZlIGV4dGVybiBkZWNsLgoJKiBsYW5nLmMgKGZsYWdfYm91bmRzX2NoZWNrKTogUmVtb3ZlIGdsb2JhbCB2YXJpYWJsZS4KCShsYW5nX2Zfb3B0aW9ucyk6IFJlbW92ZSAiYm91bmRzLWNoZWNrIiBlbnRyeS4KCShsYW5nX2luaXRfb3B0aW9ucyk6IERlZmF1bHQgZmxhZ19ib3VuZHNfY2hlY2sgdG8gIm9uIi4KCjE5OTktMTAtMTQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGp2Z2VubWFpbi5jICh1c2FnZSk6IE5ldyBmdW5jdGlvbi4KCShtYWluKTogVXNlIGl0LiAgQWxzbywgaGFuZGxlIGAtRCcgb3B0aW9ucy4KCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogUmVjb2duaXplIC1ELgoJKGp2Z2VubWFpbl9zcGVjKTogQWRkZWQgYCV7RCp9JyB0byBqdmdlbm1haW4gaW52b2NhdGlvbi4KCgkqIGp2c3BlYy5jIChqdmdlbm1haW5fc3BlYyk6IFVzZSBgJXVtYWluJywgbm90IGp1c3QgYCV1Jy4KCjE5OTktMTAtMTQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGpjZi1kdW1wLmMgKHByaW50X2NvbnN0YW50LCBkaXNhc3NlbWJsZV9tZXRob2QpOiBEb24ndCBjYWxsIGEKCXZhcmlhZGljIGZ1bmN0aW9uIHdpdGggYSBub24tbGl0ZXJhbCBmb3JtYXQgc3RyaW5nLgoKCSogcGFyc2Utc2Nhbi55IChyZXBvcnRfbWFpbl9kZWNsYXJhdGlvbik6IExpa2V3aXNlLgoKCSogcGFyc2UuaCAoRVJST1JfQ0FTVF9ORUVERURfVE9fSU5URUdSQUwpOiBMaWtld2lzZS4KCgkqIHBhcnNlLnkgKHJlYWRfaW1wb3J0X2RpciwgcGF0Y2hfYXNzaWdubWVudCwgcGF0Y2hfYmlub3AsCglwYXRjaF9hcnJheV9yZWYpOiBMaWtld2lzZS4KCgkqIHR5cGVjay5jIChidWlsZF9qYXZhX2FycmF5X3R5cGUpOiBMaWtld2lzZS4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IExpa2V3aXNlLgoKMTk5OS0xMC0xMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoUkVMT0NBVElPTl9WQUxVRV8xKTogRml4ZWQgaW50ZWdlciB2YWx1ZSBmcm9tIDAgdG8gMS4KCjE5OTktMTAtMDcgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2NsYXNzZmlsZSk6IFVzZSBVTlNBRkVfUFVUeCBpbiBjYXNlcwoJd2hlcmUgQ0hFQ0tfUFVUIG1heSBmYWlsIGZvciB2YWxpZCByZWFzb25zLgoKCSogamNmLXdyaXRlLmMgKFVOU0FGRV9QVVQxLCBVTlNBRkVfUFVUMiwgVU5TQUZFX1BVVDMsCglVTlNBRkVfUFVUTik6IE5ldyBtYWNyb3MuCgoxOTk5LTEwLTA0ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBsZXguaCAoQlVJTERfT1BFUkFUT1IyKTogUmV0dXJuIEFTU0lHTl9BTllfVEsgaW4gYGxpdGUnIGNhc2UgYXMKCXdlbGwuICBGaXhlcyBKYXZhIFBSIGdjai81OS4KCSogcGFyc2Utc2Nhbi55ICh5eWVycm9yKTogUmVwb3J0IGVycm9ycy4KCjE5OTktMDktMjQgIEdsZW5uIENoYW1iZXJzICA8R0NoYW1iZXJzQHByb3Zzb2wuY29tPgoKCSogZGVjbC5jIChpbnNlcnRfYmxvY2spOiBSZW1vdmUgdW5jb25kaXRpb25hbCBgYWJvcnQnLgoKMTk5OS0wOS0yNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBkZWNsLmMgKGJ1aWx0aW5fZnVuY3Rpb24pOiBObyBsb25nZXIgc3RhdGljLiAgTmV3IGFyZyBDTEFTUy4gIEFyZwoJRlVOQ1RJT05fQ09ERSBub3cgb2YgdHlwZSBpbnQuICBBbGwgY2FsbGVycyBjaGFuZ2VkLgoJU2V0IHRoZSBidWlsdGluJ3MgREVDTF9CVUlMVF9JTl9DTEFTUy4KCjE5OTktMDktMjMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGp2c3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IERvbid0IHJlYWQgc3BlYyBmaWxlIGlmCgktZnN5bnRheC1vbmx5IGdpdmVuLgoKMTk5OS0wOS0yMiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogbGFuZy1zcGVjcy5oOiBBZGRlZCBgJShqYzEpJyB0byB0aGUgamMxIHNwZWMuCgoJKiBqYXZhb3AuaCAoV09SRF9UT19GTE9BVCk6IFVzZSBgaW5saW5lJyB1bmNvbmRpdGlvbmFsbHkuCgkoV09SRFNfVE9fTE9ORyk6IExpa2V3aXNlLgoJKFdPUkRTX1RPX0RPVUJMRSk6IExpa2V3aXNlLgoKMTk5OS0wOS0xNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoUkVMT0NBVElPTl9WQUxVRV8wKTogTmV3IG1hY3JvLgoJKFJFTE9DQVRJT05fVkFMVUVfMSk6IExpa2V3aXNlLgoJKGVtaXRfaWluYywgZW1pdF9yZWxvYywgcHVzaF9jb25zdGFudDEsIHB1c2hfY29uc3RhbnQyLAoJcHVzaF9pbl9jb25zdCwgcHVzaF9sb25nX2NvbnN0KTogUHJvdG90eXBlZC4KCShwdXNoX2NvbnN0YW50MSk6IEFyZ3VtZW50IGBpbmRleCcgaXMgb2YgdHlwZSBIT1NUX1dJREVfSU5ULgoJKHB1c2hfY29uc3RhbnQyKTogTGlrZXdpc2UuCgkocHVzaF9pbnRfY29uc3QpOiBDYXN0IGZpbmRfY29uc3RhbnQxJ3MgaW50ZWdlciBhcmd1bWVudHMgdG8gYGp3b3JkJy4KCShmaW5kX2NvbnN0YW50X3dpZGUpOiBDYXN0IGZpbmRfY29uc3RhbnQyJ3MgaW50ZWdlciBhcmd1bWVudHMgdG8KCWBqd29yZCcuCgkoZmluZF9jb25zdGFudF9pbmRleCk6IENhc3QgZmluZF9jb25zdGFudDIncyBhbmQgZmluZF9jb25zdGFudDIncwoJaW50ZWdlciBhcmd1bWVudHMgdG8gYGp3b3JkJy4KCShlbWl0X3BvcCk6IEFyZ3VtZW50IGB2YWx1ZScgaXMgb2YgdHlwZSBIT1NUX1dJREVfSU5ULgoJKGVtaXRfc3dpdGNoX3JlbG9jKTogVXNlIFJFTE9DQVRJT05fVkFMVUVfMC4KCShlbWl0X2lmKTogVXNlIFJFTE9DQVRJT05fVkFMVUVfMS4KCShlbWl0X2dvdG8pOiBMaWtld2lzZS4KCShlbWl0X2pzcik6IExpa2V3aXNlLgoJKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogVXNlIFJFTE9DQVRJT05fVkFMVUVfMC4gQ2FzdCBzZWNvbmQKCWFyZ3VtZW50IHRvIHB1c2hfbG9uZ19jb25zdCB0byBIT1NUX1dJREVfSU5ULgoKMTk5OS0wOS0xNSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIE1ha2VmaWxlLmluIChwYXJzZS5vKTogRGVwZW5kIG9uICQoSkFWQV9UUkVFX0gpLgoKMTk5OS0wOS0yMCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGxhbmcuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogRXh0ZW5kIGNvbW1lbnQuCgoxOTk5LTA5LTE2ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfbWV0aG9kX2FkZF9zdG10KTogVGVzdCBhZ2FpbnN0IEdFVF9DVVJSRU5UX0JMT0NLCglpbnN0ZWFkIG9mIGZuZGVjbC4KCjE5OTktMDktMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdqYXZhaC5jIChnZXRfZmllbGRfbmFtZSwgcHJpbnRfbWV0aG9kX2luZm8sIHByaW50X2luY2x1ZGUsCglhZGRfbmFtZWxldCk6IFVzZSB4bWFsbG9jLCBub3QgbWFsbG9jLgoKCSogamNmLWRlcGVuZC5jIChhZGRfZW50cnkpOiBMaWtld2lzZS4gIFVzZSB4c3RyZHVwLCBub3Qgc3RyZHVwLgoJKG11bmdlKTogVXNlIHhyZWFsbG9jLCBub3QgcmVhbGxvYywgdHJ1c3QgeHJlYWxsb2MgdG8gaGFuZGxlIGEKCU5VTEwgcG9pbnRlci4KCgkqIGpjZi1pby5jIChvcGVuX2luX3ppcCwgZmluZF9jbGFzcyk6IFVzZSB4c3RyZHVwLCBub3Qgc3RyZHVwLgoKCSogamNmLXBhcnNlLmMgKGpjZl9vdXRfb2Zfc3luY2gsIHl5cGFyc2UpOiBMaWtld2lzZS4KCgkqIGpjZi1wYXRoLmMgKGFkZF9lbnRyeSk6IExpa2V3aXNlLgoKCSogamNmLmggKEFMTE9DLCBSRUFMTE9DKTogVXNlIHhtYWxsb2MveHJlYWxsb2MsIG5vdCBtYWxsb2MvcmVhbGxvYy4KCgkqIGp2LXNjYW4uYyAoeG1hbGxvYyk6IFJlbW92ZSBkZWZpbml0aW9uLgoKCSoganZnZW5tYWluLmMgKHhtYWxsb2MpOiBMaWtld2lzZS4KCgkqIGp2c3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IFVzZSB4Y2FsbG9jLCBub3QgeG1hbGxvYy9iemVyby4KCgkqIGxleC5jIChqYXZhX3N0b3JlX3VuaWNvZGUpOiBVc2UgeHJlYWxsb2MsIG5vdCByZWFsbG9jLgoKCSogcGFyc2Utc2Nhbi55OiBVc2UgY29uY2F0LCBub3Qgb2YgeG1hbGxvYy9hc3NpZ24vc3RyY3B5LiAgVXNlCgljb25jYXQsIG5vdCB4bWFsbG9jL3NwcmludGYuCgkoamF2YV9wdXNoX3BhcnNlcl9jb250ZXh0KTogVXNlIHhjYWxsb2MsIG5vdCB4bWFsbG9jL2J6ZXJvLgoJKHhzdHJkdXApOiBSZW1vdmUgZGVmaW5pdGlvbi4KCgkqIHBhcnNlLnkgKGR1cGxpY2F0ZV9kZWNsYXJhdGlvbl9lcnJvcl9wLAoJY29uc3RydWN0b3JfY2lyY3VsYXJpdHlfbXNnLCB2ZXJpZnlfY29uc3RydWN0b3JfY2lyY3VsYXJpdHksCgljaGVja19hYnN0cmFjdF9tZXRob2RfZGVmaW5pdGlvbnMsIGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzLAoJamF2YV9jaGVja19hYnN0cmFjdF9tZXRob2RzLCBwYXRjaF9tZXRob2RfaW52b2NhdGlvbiwKCWNoZWNrX2Zvcl9zdGF0aWNfbWV0aG9kX3JlZmVyZW5jZSwgcGF0Y2hfYXNzaWdubWVudCwgcGF0Y2hfYmlub3AsCglwYXRjaF9jYXN0LCBhcnJheV9jb25zdHJ1Y3Rvcl9jaGVja19lbnRyeSwgcGF0Y2hfcmV0dXJuLAoJcGF0Y2hfY29uZGl0aW9uYWxfZXhwcik6IFVzZSB4c3RyZHVwLCBub3Qgc3RyZHVwLgoKCSogemV4dHJhY3QuYyAoQUxMT0MpOiBVc2UgeG1hbGxvYywgbm90IG1hbGxvYy4KCjE5OTktMDktMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2UtbGFuZy5pbiAoanZzcGVjLm8pOiBEZXBlbmQgb24gc3lzdGVtLmggYW5kIGdjYy5oLgoKCSoganZzcGVjLmM6IEluY2x1ZGUgZ2NjLmguICBEb24ndCBpbmNsdWRlIGdhbnNpZGVjbC5oLgoJKGRvX3NwZWMsIGxhbmdfc3BlY2lmaWNfcHJlX2xpbmssIGxhbmdfc3BlY2lmaWNfZHJpdmVyLAoJaW5wdXRfZmlsZW5hbWUsIGlucHV0X2ZpbGVuYW1lX2xlbmd0aCk6IERvbid0IGRlY2xhcmUuCgkobWFpbl9jbGFzc19uYW1lLCBqdmdlbm1haW5fc3BlYywgbGFuZ19zcGVjaWZpY19kcml2ZXIpOgoJQ29uc3RpZnkgYSBjaGFyKi4KCShsYW5nX3NwZWNpZmljX2RyaXZlcik6IEFsbCBjYWxscyB0byB0aGUgZnVuY3Rpb24gcG9pbnRlcgoJcGFyYW1ldGVyIG5vdyBleHBsaWNpdGx5IGNhbGwgYGZhdGFsJy4KCjE5OTktMDktMTEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogU2VhcmNoCglhYnN0cmFjdCBjbGFzc2VzIGFzIGludGVyZmFjZXMuCgoxOTk5LTA5LTA5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9jbGFzcyk6IFdlJ3JlIG5vdyBvdXRzaWRlIGEgdmFsaWQgbWV0aG9kCglkZWNsYXJhdGlvbi4gVGVsbCB0aGUgcmVzdCBvZiBnY2Mgc28uCgoxOTk5LTA5LTA4ICBCcnVjZSBLb3JiICBhdXRvZ2VuQGxpbnV4Ym94LmNvbQoKCSogTWFrZWZpbGUuaW46IEdpdmUgdGhlIGdwZXJmIHVzZXIgYSBoaW50IGFib3V0IHdoeSAiZ3BlcmYgLUYiIGZhaWxzLgoKMTk5OS0wOS0wNyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKGFkZF9jbGFzc19kZWNsKTogR2VuZXJhdGUgaW5jbHVkZSBmb3IgZ2NqL2FycmF5LmgsIG5vdAoJamF2YS1hcnJheS5oLgoJKGRlY29kZV9zaWduYXR1cmVfcGllY2UpOiBEb24ndCBlbWl0ICI6OiIgaW4gSkFycmF5PD4uCgkocHJpbnRfbmFtZWxldCk6IE9ubHkgcHJpbnQgdHJhaWxpbmcgYDsnIHdoZW4gcHJpbnRpbmcgYSBjbGFzcy4KCjE5OTktMDktMTAgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogamF2YS10cmVlLmg6IERlbGV0ZSBkZWNsYXJhdGlvbnMgZm9yIGFsbCB0cmVlIG5vZGVzIG5vdyBtb3ZlZCB0bwoJZ2xvYmFsX3RyZWVzLgoJKiBkZWNsLmM6IERlbGV0ZSB0aGVpciBkZWZpbml0aW9ucy4KCjE5OTktMDktMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGpjMSk6IERlcGVuZCBvbiBnZ2MtY2FsbGJhY2tzLm8uCgkqIE1ha2VmaWxlLmluIChPQkpTKTogQWRkIGdnYy1jYWxsYmFja3Muby4KCShPQkpERVBTKTogTGlrZXdpc2UuCgoxOTk5LTA5LTAzICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChzdHJpcF9vdXRfc3RhdGljX2ZpZWxkX2FjY2Vzc19kZWNsKTogUmV0dXJuIG9wZXJhbmQgaWYKCWl0IHNhdGlzZmllcyBKREVDTF9QLgoKMTk5OS0wOS0wMiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKGRlY29kZV9zaWduYXR1cmVfcGllY2UpOiBFbWl0ICI6OiIgaW4gSkFycmF5PD4uCglIYW5kbGUgbmVzdGVkIGFycmF5cywgbGlrZSBgW1tJJy4KCjE5OTktMDktMDIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9jbGFzcyk6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyLCBhbGwgY2FsbGVycwoJY2hhbmdlZC4KCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9hdGhyb3cpOiBDaGFuZ2UgcmV0dXJuIHR5cGUgdG8gdm9pZC4KCShqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBNYWtlIHN1cmUgZWFjaCBjYXNlIGluIHN3aXRjaCByZXR1cm5zIGEKCXZhbHVlLgoKCSogamF2YS10cmVlLmggKGZpbmlzaF9jbGFzcyk6IEZpeCBwcm90b3R5cGUgdG8gdGFrZSB2b2lkIGFyZ3MuCgoJKiBqY2YtZHVtcC5jICh1c2FnZSk6IE1hcmsgd2l0aCBBVFRSSUJVVEVfTk9SRVRVUk4uCgkobWFpbik6IElzc3VlIHJldHVybiBmcm9tIG1haW4sIG5vdCBleGl0LgoKCSogamNmLXBhcnNlLmMgKHBhcnNlX2NsYXNzX2ZpbGUpOiBGaXggY2FsbCB0byBgZmluaXNoX2NsYXNzJy4KCgkqIGpjZi5oIChqY2ZfdW5leHBlY3RlZF9lb2YpOiBNYXJrIHdpdGggQVRUUklCVVRFX05PUkVUVVJOLgoKCSoganYtc2Nhbi5jIChtYWluKTogSXNzdWUgcmV0dXJuIGZyb20gbWFpbiwgbm90IGV4aXQuCgoJKiBwYXJzZS55IChjaGVja19hYnN0cmFjdF9tZXRob2RfZGVmaW5pdGlvbnMsCglqYXZhX2NoZWNrX2Fic3RyYWN0X21ldGhvZF9kZWZpbml0aW9ucyk6IEFkZCBzdGF0aWMgcHJvdG90eXBlcy4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogRml4IGNhbGwgdG8gYGZpbmlzaF9jbGFzcycuCgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBJbml0aWFsaXplIHZhcmlhYmxlcyBgb2xkcGMnCglhbmQgYHByZXZwYycuCgoxOTk5LTA4LTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsYW5nLmMgKGxhbmd1YWdlX3N0cmluZyk6IENvbnN0aWZ5LgoKMTk5OS0wOC0zMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKExJQlMpOiBGaXggZGVmaW5pdGlvbiBzbyB3ZSBsaW5rIHdpdGggJChDTElCKS4KCVJlbW92ZSBoYWNrcyBmb3Igc3R1ZmYgd2hpY2ggY29tZXMgZnJvbSBsaWJpYmVydHkuCgoJKiBNYWtlLWxhbmcuaW46IExpa2V3aXNlLgoKMTk5OS0wOC0zMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5zZT4KCgkqIE1ha2VmaWxlLmluICh4cmVmLm8pOiBEZXBlbmQgb24geHJlZi5jIGV4cGxpY2l0bHkuCgoxOTk5LTA4LTI5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBqYXZhLXRyZWUuaCAobGFuZ19wcmludGFibGVfbmFtZSk6IENvbnN0aWZ5IGEgY2hhciouCgoJKiBsYW5nLmMgKGxhbmdfcHJpbnRhYmxlX25hbWUpOiBMaWtld2lzZS4KCjE5OTktMDgtMjcgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGdqYXZhaC5jLCBqY2Ytd3JpdGUuYywgdmVyaWZ5LmM6IERvIG5vdCB1c2UgQysrIHN0eWxlCgljb21tZW50cyBpbiBDIGNvZGUuCgoxOTk5LTA4LTI2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAocHJpbnRfY3h4X2NsYXNzbmFtZSk6IFByaW50ICI6OiIgYmVmb3JlIHF1YWxpZmllZAoJbmFtZS4KCjE5OTktMDgtMjYgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAobG9va3VwX2NsKTogQ2hhbmdlZCBsZWFkaW5nIGNvbW1lbnQuIE5vdyBkb2VzIGl0cyBiZXN0Cgl0byBzZXQgdGhlIGNvbHVtbiBudW1iZXIuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IFRha2UgV0ZMIHdyYXBwZXJzIGludG8gYWNjb3VudC4KCjE5OTktMDgtMjUgIEdyZWdnIFRvd25zZW5kICA8Z210QGNzLmFyaXpvbmEuZWR1PgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogRG9uJ3QgY2hlY2sgaW5zdHJ1Y3Rpb24KCXZhbGlkaXR5IGJleW9uZCBlbmQgb2YgbWV0aG9kLgoKMTk5OS0wOC0yNSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogQ29ycmVjdGx5IGhhbmRsZSAtLWhlbHAgYWdhaW4uCgoxOTk5LTA4LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnamF2YWguYyAocHJpbnRfbmFtZSwgcHJpbnRfYmFzZV9jbGFzc25hbWUsIHV0ZjhfY21wLAoJY3h4X2tleXdvcmRfc3Vic3QsIGdlbmVyYXRlX2FjY2VzcywgbmFtZV9pc19tZXRob2RfcCwKCWdldF9maWVsZF9uYW1lLCBwcmludF9maWVsZF9uYW1lLCBzdXBlcl9jbGFzc19uYW1lLCBwcmludF9pbmNsdWRlLAoJZGVjb2RlX3NpZ25hdHVyZV9waWVjZSwgcHJpbnRfY2xhc3NfZGVjbHMsIHVzYWdlLCBoZWxwLAoJamF2YV9ub19hcmd1bWVudCwgdmVyc2lvbiwgYWRkX25hbWVsZXQsIHByaW50X25hbWVsZXQpOiBBZGQgc3RhdGljCglwcm90b3R5cGUuCgkocHJpbnRfYmFzZV9jbGFzc25hbWUsIHV0ZjhfY21wLCBjeHhfa2V5d29yZF9zdWJzdCwKCW5hbWVfaXNfbWV0aG9kX3ApOiBDb25zdGlmeSBhIGNoYXIqLgoJKGdldF9maWVsZF9uYW1lKTogTGlrZXdpc2UuICBQcmVmZXIgeHN0cmR1cCBvdmVyIG1hbGxvYy9zdHJjcHkuCglQcm92aWRlIGEgZmluYWwgZWxzZSBjbGF1c2UgaW4gYW4gaWYtZWxzZS1pZi4KCShwcmludF9maWVsZF9pbmZvKTogQWRkIG1pc3NpbmcgZmluYWwgYXJnIGluIGZ1bmN0aW9uIGNhbGwgdG8KCWBwcmludF9maWVsZF9uYW1lJy4KCShwcmludF9tZXRob2RfaW5mbywgZGVjb21waWxlX21ldGhvZCwgZGVjb2RlX3NpZ25hdHVyZV9waWVjZSwKCXByaW50X2NfZGVjbCwgcHJpbnRfZnVsbF9jeHhfbmFtZSwgcHJpbnRfc3R1YiwKCXByaW50X21hbmdsZWRfY2xhc3NuYW1lLCBzdXBlcl9jbGFzc19uYW1lLCBwcmludF9pbmNsdWRlLAoJYWRkX25hbWVsZXQsIGFkZF9jbGFzc19kZWNsLCBwcmludF9jbGFzc19kZWNscywgcHJvY2Vzc19maWxlLAoJaGVscCk6IENvbnN0aWZ5IGEgY2hhciouCgoJKiBqY2Ytd3JpdGUuYyAoamNmX2hhbmRsZXIsIHB1c2hfY29uc3RhbnQxLCBwdXNoX2NvbnN0YW50MiwKCXB1c2hfaW50X2NvbnN0LCBmaW5kX2NvbnN0YW50X3dpZGUsIGZpbmRfY29uc3RhbnRfaW5kZXgsCglwdXNoX2xvbmdfY29uc3QsIGZpZWxkX29wLCBtYXliZV93aWRlLCBlbWl0X2R1cCwgZW1pdF9wb3AsCgllbWl0X2lpbmMsIGVtaXRfbG9hZF9vcl9zdG9yZSwgZW1pdF9sb2FkLCBlbWl0X3N0b3JlLCBlbWl0X3Vub3AsCgllbWl0X2Jpbm9wLCBlbWl0X3JlbG9jLCBlbWl0X3N3aXRjaF9yZWxvYywgZW1pdF9jYXNlX3JlbG9jLAoJZW1pdF9pZiwgZW1pdF9nb3RvLCBlbWl0X2pzciwgY2FsbF9jbGVhbnVwcywKCW1ha2VfY2xhc3NfZmlsZV9uYW1lKTogQWRkIHN0YXRpYyBwcm90b3R5cGVzLgoJKGdlbmVyYXRlX2J5dGVjb2RlX3JldHVybiwgZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBQYXNzIGEKCU5VTExfUFRSLCBub3QgYSBOVUxMX1RSRUUuCgoJKiBqdi1zY2FuLmM6IEluY2x1ZGUgImpjZi5oIi4KCShtYWluKTogRGVjbGFyZSB1c2luZyBERUZVTiBtYWNyby4KCgkqIGp2c3BlYy5jIChmaW5kX3NwZWNfZmlsZSwgbGFuZ19zcGVjaWZpY19wcmVfbGluaywKCWxhbmdfc3BlY2lmaWNfZHJpdmVyKTogQWRkIHByb3RvdHlwZXMuCgkoZmluZF9zcGVjX2ZpbGUpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSoga2V5d29yZC5ncGVyZiAoaGFzaCwgamF2YV9rZXl3b3JkKTogQWRkIHByb3RvdHlwZXMuCgoJKiBsYW5nLmMgKGxhbmdfcHJpbnRfZXJyb3IpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCShsYW5nX2luaXQpOiBQcmVmZXIgbWVtY3B5IG92ZXIgYmNvcHkgdG8gYXZvaWQgY2FzdHMuCgoJKiBsZXguYyAoeXlsZXgpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCgkqIHBhcnNlLXNjYW4ueTogSW5jbHVkZSAibGV4LmMiIGVhcmxpZXIuCgoJKiBwYXJzZS5oOiBSZW1vdmUgcmVkdW5kYW50IGRlY2xhcmF0aW9uIGZvciBgeXlsZXgnLgoKCSogcGFyc2UueSAoamF2YV9kZWNsX2VxdWl2LCBiaW5vcF9jb21wb3VuZF9wLCBzZWFyY2hfbG9vcCwKCWxhYmVsZWRfYmxvY2tfY29udGFpbnNfbG9vcF9wKTogQWRkIHN0YXRpYyBwcm90b3R5cGVzLgoJKG5vdF9hY2Nlc3NpYmxlX3ApOiBNYWtlIHN0YXRpYyB0byBtYXRjaCBwcm90b3R5cGUuCgoJKiB2ZXJpZnkuYyAoc3RhcnRfcGNfY21wKTogRG9uJ3QgbmVlZGxlc3NseSBjYXN0IGF3YXkgY29uc3QuCgoxOTk5LTA4LTIyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGNoZWNrX21ldGhvZF9yZWRlZmluaXRpb24pOiBDaGFuZ2VkIGxlYWRpbmcgY29tbWVudC4KCShjaGVja19hYnN0cmFjdF9tZXRob2RfZGVmaW5pdGlvbnMpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9jaGVja19hYnN0cmFjdF9tZXRob2RfZGVmaW5pdGlvbnMpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiBDYWxsIGl0LgoJKHZlcmlmeV9jb25zdHJ1Y3Rvcl9zdXBlcik6IEZpeGVkIGluZGVudGF0aW9uLgoJKGxvb2t1cF9tZXRob2RfaW52b2tlKTogTGlrZXdpc2UuCgoxOTk5LTA4LTE5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKG1ldGhvZF9oZWFkZXIpOiBSZXR1cm4gYSBudWxsIHBvaW50ZXIgaWYgdGhlIGN1cnJlbnQKCWNsYXNzIG5vZGUgaXMgbnVsbC4KCShmaW5pc2hfbWV0aG9kX2RlY2xhcmF0aW9uKTogUmV0dXJuIGlmIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGRlY2wKCWlzIG51bGwuCgkoc291cmNlX3N0YXJ0X2phdmFfbWV0aG9kKTogTGlrZXdpc2UuCgkoamF2YV9tZXRob2RfYWRkX3N0bXQpOiBMaWtld2lzZS4KCjE5OTktMDgtMTggIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZW1pdF9yZWdpc3Rlcl9jbGFzcyk6IFJlbW92ZWQgdW5uZWNlc3NhcnkgY2FsbCB0bwoJc3RhcnRfc2VxdWVuY2UuCgkqIHBhcnNlLnkgKGxhYmVsZWRfYmxvY2tfY29udGFpbnNfbG9vcF9wKTogUmVtb3ZlZCB1bnVzZWQgbG9jYWwKCXZhcmlhYmxlLgoKMTk5OS0wOC0xNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChqYXZhX3JlZm9sZCk6IEFkZGVkIHByb3RvdHlwZS4KCjE5OTktMDgtMTcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoQklOT1BfQ09NUE9VTkRfQ0FORElEQVRFUyk6IE5ldyBtYWNyby4KCShqYXZhX3N0YWJpbGl6ZV9yZWZlcmVuY2UpOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGBlbHNlJy4KCShqYXZhX2NvbXBsZXRlX2xocyk6IFNldCBmbGFnIHRvIHJlbWVtYmVyIGJvb2xlYW4uIENhbGwKCWphdmFfcmVmb2xkLiBBZGRlZCBjb21tZW50cy4KCShqYXZhX2RlY2xfZXF1aXYpOiBOZXcgZnVuY3Rpb24uCgkoYmlub3BfY29tcG91bmRfcCk6IExpa2V3aXNlLgoJKGphdmFfcmVmb2xkKTogTGlrZXdpc2UuCgkocGF0Y2hfdW5hcnlvcCk6IFN0cmlwZWQgc3RhdGljIGZpZWxkIGFjY2VzcyBhc3NpZ25lZCB0byBkZWNsIGFuZAoJb3AuIENoYW5nZWQgcHJvbW90aW9uIHNjaGVtZSBmb3IgKysvLS0gb3BlcmF0b3JzLgoJKHNlYXJjaF9sb29wKTogTmV3IGZ1bmN0aW9uLgoJKGxhYmVsZWRfYmxvY2tfY29udGFpbnNfbG9vcF9wKTogTGlrZXdpc2UuCgkocGF0Y2hfbG9vcF9zdGF0ZW1lbnQpOiBDYWxsIGxhYmVsZWRfYmxvY2tfY29udGFpbnNfbG9vcF9wLiBBZGRlZAoJY29tbWVudC4KCShwYXRjaF9iY19zdGF0ZW1lbnQpOiBDYWxsIHNlYXJjaF9sb29wLiBGaXhlZCBjb21tZW50LgoKMTk5OS0wOC0xNCAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IE1hcmsgc3RhdGljIGFycmF5IGRhdGEgYXMKCXJlZmVyZW5jZWQuCgoxOTk5LTA4LTEwICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGp2Z2VubWFpbi5jIChtYWluKTogTlVMLXRlcm1pbmF0ZSBuYW1lX29ic3RhY2suCgoxOTk5LTA4LTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2Jvb2wyX2luaXQsIGRvbmVfYWx0ZXJuYXRpdmUpOiBBZGQgc3RhdGljCglwcm90b3R5cGVzLgoKCSogY2xhc3MuYyAoYWRkX2ludGVyZmFjZV9kbywgbWF5YmVfbGF5b3V0X3N1cGVyX2NsYXNzKTogTGlrZXdpc2UuCgkoYWRkX21ldGhvZCwgYnVpbGRfdXRmOF9yZWYsIGJ1aWxkX2NsYXNzX3JlZiwKCWFwcGVuZF9ncHBfbWFuZ2xlZF90eXBlLCBsYXlvdXRfY2xhc3NfbWV0aG9kKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGRlY2wuYyAocHVzaF9wcm9tb3RlZF90eXBlLCBtYWtlX2JpbmRpbmdfbGV2ZWwpOiBBZGQgc3RhdGljCglwcm90b3R5cGVzLgoJKHB1c2hfcHJvbW90ZWRfdHlwZSwgcHVzaGRlY2wpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogZXhjZXB0LmMgKGZpbmRfaGFuZGxlcl9pbl9yYW5nZSwgbGlua19oYW5kbGVyLAoJY2hlY2tfc3RhcnRfaGFuZGxlcnMpOiBBZGQgc3RhdGljIHByb3RvdHlwZXMuCgoJKiBleHByLmMgKHByb2Nlc3NfanZtX2luc3RydWN0aW9uKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGdqYXZhaC5jIChtYWluKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGphdmEtdHJlZS5oICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucywgcHJvY2Vzc19qdm1faW5zdHJ1Y3Rpb24pOgoJQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGpjZi1kZXBlbmQuYyAoZnJlZV9lbnRyeSwgYWRkX2VudHJ5LCBtdW5nZSwgcHJpbnRfZW50cyk6IEFkZAoJc3RhdGljIHByb3RvdHlwZXMuCgkoYWRkX2VudHJ5LCBqY2ZfZGVwZW5kZW5jeV9zZXRfdGFyZ2V0LCBqY2ZfZGVwZW5kZW5jeV9hZGRfdGFyZ2V0LAoJbXVuZ2UsIHByaW50X2VudHMpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogamNmLWR1bXAuYyAoZGlzYXNzZW1ibGVfbWV0aG9kKTogQ29uc3RpZnkgYSBjaGFyKi4KCShwcmludF9jb25zdGFudF9wb29sLCBwcmludF9leGNlcHRpb25fdGFibGUpOiBBZGQgc3RhdGljIHByb3RvdHlwZXMuCgkocHJpbnRfY29uc3RhbnQsIHByaW50X2V4Y2VwdGlvbl90YWJsZSwgbWFpbiwgZGlzYXNzZW1ibGVfbWV0aG9kKToKCUNvbnN0aWZ5IGEgY2hhciouCgoJKiBqY2YtaW8uYyAoZmluZF9jbGFzc2ZpbGUsIGZpbmRfY2xhc3MpOiBMaWtld2lzZS4KCgkqIGpjZi1wYXJzZS5jIChKUE9PTF9VVEZfREFUQSwgZmluZF9pbl9jdXJyZW50X3ppcCk6IExpa2V3aXNlLgoJKHNldF9zb3VyY2VfZmlsZW5hbWUsIHByZWRlZmluZWRfZmlsZW5hbWVfcCk6IEFkZCBzdGF0aWMgcHJvdG90eXBlcy4KCShzZXRfc291cmNlX2ZpbGVuYW1lLCBnZXRfY29uc3RhbnQsIGdldF9jbGFzc19jb25zdGFudCwKCWZpbmRfaW5fY3VycmVudF96aXApOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogamNmLXBhdGguYyAoZnJlZV9lbnRyeSwgYXBwZW5kX2VudHJ5LCBhZGRfZW50cnksIGFkZF9wYXRoKTogQWRkCglzdGF0aWMgcHJvdG90eXBlcy4KCShhZGRfZW50cnksIGFkZF9wYXRoLCBqY2ZfcGF0aF9jbGFzc3BhdGhfYXJnLAoJamNmX3BhdGhfQ0xBU1NQQVRIX2FyZywgamNmX3BhdGhfaW5jbHVkZV9hcmcpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogamNmLXJlYWRlci5jIChnZXRfYXR0cmlidXRlLCBqY2ZfcGFyc2VfcHJlYW1ibGUsCglqY2ZfcGFyc2VfY29uc3RhbnRfcG9vbCwgamNmX3BhcnNlX2NsYXNzLCBqY2ZfcGFyc2VfZmllbGRzLAoJamNmX3BhcnNlX29uZV9tZXRob2QsIGpjZl9wYXJzZV9tZXRob2RzLAoJamNmX3BhcnNlX2ZpbmFsX2F0dHJpYnV0ZXMpOiBBZGQgc3RhdGljIHByb3RvdHlwZXMuCgkoZ2V0X2F0dHJpYnV0ZSk6IENvbnN0aWZ5IGEgY2hhciouCgoJKiBqY2YuaCAoZmluZF9jbGFzcywgZmluZF9jbGFzc2ZpbGUsIGpjZl9kZXBlbmRlbmN5X3NldF90YXJnZXQsCglqY2ZfZGVwZW5kZW5jeV9hZGRfdGFyZ2V0LCBqY2ZfcGF0aF9jbGFzc3BhdGhfYXJnLAoJamNmX3BhdGhfQ0xBU1NQQVRIX2FyZywgamNmX3BhdGhfaW5jbHVkZV9hcmcpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSoganYtc2Nhbi5jIChtYWluKTogQ29uc3RpZnkgYSBjaGFyKi4KCShnY2Nfb2JzdGFja19pbml0KTogQWRkIHByb3RvdHlwZSBhcmd1bWVudHMuCgoJKiBqdmdlbm1haW4uYyAoZ2NjX29ic3RhY2tfaW5pdCk6IExpa2V3aXNlLgoJKG1haW4pOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogbGFuZy5jIChwdXRfZGVjbF9zdHJpbmcsIHB1dF9kZWNsX25vZGUsIGphdmFfZHVtbXlfcHJpbnQpOiBBZGQKCXN0YXRpYyBwcm90b3R5cGVzLgoJKHB1dF9kZWNsX3N0cmluZywgbGFuZ19wcmludF9lcnJvcik6IENvbnN0aWZ5IGEgY2hhciouCgkobGFuZ19pbml0KTogUmVtb3ZlIHJlZHVuZGFudCBleHRlcm4gcHJvdG90eXBlLgoKCSogbWFuZ2xlLmMgKGVtaXRfdW5pY29kZV9tYW5nbGVkX25hbWUpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfaWVlZV9yZWFsX3RvX2ludGVnZXIsIHBhcnNlX3NpZ25hdHVyZV90eXBlKToKCUFkZCBzdGF0aWMgcHJvdG90eXBlcy4KCShnZXRfdHlwZV9mcm9tX3NpZ25hdHVyZSk6IENvbnN0aWZ5IGEgY2hhciouCgoJKiB2ZXJpZnkuYyAoY2hlY2tfcGVuZGluZ19ibG9jaywgdHlwZV9zdGFja19kdXAsIHN0YXJ0X3BjX2NtcCApOgoJQWRkIHN0YXRpYyBwcm90b3R5cGVzLgoJKHN0YXJ0X3BjX2NtcCk6IFByZWZlciBQVFIgb3ZlciBHRU5FUklDX1BUUi4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IENvbnN0aWZ5IGEgY2hhciouCgoJKiB4cmVmLmMgKHhyZWZfZmxhZ192YWx1ZSk6IExpa2V3aXNlLgoKCSogeHJlZi5oICh4cmVmX2ZsYWdfdmFsdWUpOiBMaWtld2lzZS4KCgkqIHpleHRyYWN0LmMgKG1ha2V3b3JkLCBtYWtlbG9uZyk6IEFkZCBzdGF0aWMgcHJvdG90eXBlcy4KCShtYWtld29yZCwgbWFrZWxvbmcpOiBDb25zdGlmeSBhIHVjaCouCgoxOTk5LTA4LTA5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsYW5nLmMgKGphdmFfZHVtbXlfcHJpbnQpOiBDb25zdGlmeSBhIGNoYXIqLgoJKGxhbmdfcHJpbnRfZXJyb3IpOiBMaWtld2lzZS4KCShsYW5nX2luaXQpOiBSZW1vdmUgcmVkdW5kYW50IHByb3RvdHlwZSBmb3IgYHByaW50X2Vycm9yX2Z1bmN0aW9uJy4KCShsYW5nX2luaXRfc291cmNlKTogTGlrZXdpc2UuCgkobGFuZ19pZGVudGlmeSk6IENvbnN0aWZ5IGEgY2hhciouCgoxOTk5LTA4LTA5ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqYXZhb3AuaCAoV09SRF9UT19GTE9BVCk6IG9ubHkgaW5saW5lIGlmIGJ1aWxkaW5nIHdpdGggZ2NjLgoJKFdPUkRTX1RPX0xPTkcpOiBMaWtld2lzZS4KCShXT1JEU19UT19ET1VCTEUpOiBMaWtld2lzZS4KCjE5OTktMDgtMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChsYW5nLm8pOiBEZXBlbmQgb24gJChSVExfSCkgJChFWFBSX0gpLgoKCSogZXhwci5jIChqYXZhX3N0YWNrX3BvcCwgamF2YV9hcnJheV9kYXRhX29mZnNldCwKCWJ1aWxkX2phdmFfdGhyb3dfb3V0X29mX2JvdW5kc19leGNlcHRpb24sIGNhc2VfaWRlbnRpdHksCglidWlsZF9qYXZhX2NoZWNrX2luZGV4ZWRfdHlwZSk6IEFkZCBzdGF0aWMgcHJvdG90eXBlcy4KCShsaW5lbnVtYmVyX3RhYmxlLCBleHBhbmRfaW52b2tlLCBleHBhbmRfamF2YV9maWVsZF9vcCwKCWJ1aWxkX3ByaW10eXBlX3R5cGVfcmVmLCBleHBhbmRfYnl0ZV9jb2RlKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGphdmEtdHJlZS5oIChidWlsZF9wcmltdHlwZV90eXBlX3JlZiwgbGluZW51bWJlcl90YWJsZSk6CglDb25zdGlmeSBhIGNoYXIqLgoJKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IEFkZCBwcm90b3R5cGUuCgoJKiBsYW5nLmM6IEluY2x1ZGUgcnRsLmggYW5kIGV4cHIuaC4gIFJlbW92ZSBleHRlcm4gcHJvdG90eXBlIGZvcgoJYGphdmFfbGFuZ19leHBhbmRfZXhwcicuCgoJKiBsZXguYyAoamF2YV9sZXhfZXJyb3IpOiBDb25zdGlmeSBhIGNoYXIqLgoJKGphdmFfZ2V0X3VuaWNvZGUsIGphdmFfcmVhZF9jaGFyLCBqYXZhX2FsbG9jYXRlX25ld19saW5lLAoJamF2YV91bmdldF91bmljb2RlLCBqYXZhX3NuZWFrX3VuaWNvZGUpOiBQcm90b3R5cGUuCgoJKiBwYXJzZS1zY2FuLnkgKGN1cnJlbnRfY2xhc3MsIHBhY2thZ2VfbmFtZSwgbWV0aG9kX2RlY2xhcmF0b3IsCglyZXBvcnRfY2xhc3NfZGVjbGFyYXRpb24sIHl5ZXJyb3IpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogcGFyc2UuaCAoamF2YV9yZXBvcnRfZXJyb3JzKTogUHJvdG90eXBlLgoJKHl5ZXJyb3IpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogcGFyc2UueSAoY2xhc3NpdGZfcmVkZWZpbml0aW9uX2Vycm9yLCBjaGVja19tb2RpZmllcnMsCglwYXJzZV9qZGsxXzFfZXJyb3IsIGxvb2t1cF9wYWNrYWdlX3R5cGUsCglsb29rdXBfcGFja2FnZV90eXBlX2FuZF9zZXRfbmV4dCwgZ2V0X3ByaW50YWJsZV9tZXRob2RfbmFtZSwKCXB1cmlmeV90eXBlX25hbWUpOiBDb25zdGlmeSBhIGNoYXIqLgoJKGJ1aWxkX3N1cGVyX2ludm9jYXRpb24sIG1heWJlX2dlbmVyYXRlX2Zpbml0LAoJdmVyaWZ5X2NvbnN0cnVjdG9yX3N1cGVyLCBwYXJzZXJfYWRkX2ludGVyZmFjZSwKCWFkZF9zdXBlcmludGVyZmFjZXMsIGpkZXBfcmVzb2x2ZV9jbGFzcywgbm90ZV9wb3NzaWJsZV9jbGFzc25hbWUsCglqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzLCBqYXZhX2V4cGFuZF9maW5hbHMsCgljdXRfaWRlbnRpZmllcl9pbl9xdWFsaWZpZWQsIGphdmFfc3RhYmlsaXplX3JlZmVyZW5jZSwKCWRvX3VuYXJ5X251bWVyaWNfcHJvbW90aW9uLCBvcGVyYXRvcl9zdHJpbmcsIGRvX21lcmdlX3N0cmluZ19jc3RlLAoJbWVyZ2Vfc3RyaW5nX2NzdGUpOiBQcm90b3R5cGUuCgkoc2luZ2xlX3R5cGVfaW1wb3J0X2RlY2xhcmF0aW9uLCB5eWVycm9yLAoJdmFyaWFibGVfcmVkZWZpbml0aW9uX2Vycm9yLCBidWlsZF9hcnJheV9mcm9tX25hbWUsCglidWlsZF91bnJlc29sdmVkX2FycmF5X3R5cGUsIGNoZWNrX2NsYXNzX2ludGVyZmFjZV9jcmVhdGlvbiwKCXJlc29sdmVfY2xhc3MsIGNvbXBsZXRlX2NsYXNzX3JlcG9ydF9lcnJvcnMsCglub3RlX3Bvc3NpYmxlX2NsYXNzbmFtZSwgcmVhZF9pbXBvcnRfZGlyLAoJZmluZF9pbl9pbXBvcnRzX29uX2RlbWFuZCwgcmVzb2x2ZV9wYWNrYWdlLCBmaXhfY29uc3RydWN0b3JzLAoJY2hlY2tfZGVwcmVjYXRpb24sIGxvb2t1cF9tZXRob2RfaW52b2tlLAoJbWF5YmVfYnVpbGRfcHJpbXR0eXBlX3R5cGVfcmVmLCBhcnJheV9jb25zdHJ1Y3Rvcl9jaGVja19lbnRyeSk6CglDb25zdGlmeSBhIGNoYXIqLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMsIGphdmFfZXhwYW5kX2ZpbmFscyk6IE1ha2Ugc3RhdGljLgoJKGNvbnZlcnRfbmFycm93KTogUmVtb3ZlIHN0YXRpYyBwcm90b3R5cGUuCgoxOTk5LTA4LTAzICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBNYWtlZmlsZS5pbiAoZGVjbC5vKTogRGVwZW5kcyBvbiAkKHNyY2RpcikvLi4vZGVmYXVsdHMuaC4KCjE5OTktMDgtMDIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBkZWNsLmM6IEluY2x1ZGUgZGVmYXVsdHMuaCBpbnN0ZWFkIG9mIGV4cHIuaC4KCSogcGFyc2UueTogTGlrZXdpc2UuCgoxOTk5LTA4LTAyICBKYWt1YiBKZWxpbmVrICA8ampAdWx0cmEubGludXguY3o+CgoJKiBqYXZhL2RlY2wuYyAoc3RhcnRfamF2YV9tZXRob2QpOiBDaGFuZ2UgYWxsIHVzZXMgb2YKCVBST01PVEVfUFJPVE9UWVBFUywgc28gdGhhdCBpdCB0ZXN0cyBpdCBhcyBhIEMgZXhwcmVzc2lvbi4KCUVuc3VyZSBleHByLmggaXMgaW5jbHVkZWQuCgkqIGphdmEvZXhwci5jIChwb3BfYXJndW1lbnRzKTogRGl0dG8uCgkqIGphdmEvcGFyc2UueSAoZXhwYW5kX3N0YXJ0X2phdmFfbWV0aG9kKTogRGl0dG8uCgoxOTk5LTA4LTAxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoQUxMX0NGTEFHUyk6IEFkZCAnLVcgLVdhbGwnLgoKMTk5OS0wNy0zMSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBkZWNsLmM6IEluY2x1ZGUgImZ1bmN0aW9uLmgiLgoJKiBleGNlcHQuYzogTGlrZXdpc2UuCgkqIHBhcnNlLnk6IExpa2V3aXNlLgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIGRlcGVuZGVuY2llcy4KCjE5OTktMDctMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9zb2Z0X2Rpdm1vZCk6IFByb3ZpZGUgYSBkZWZhdWx0IGNhc2UgaW4gc3dpdGNoLgoJKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IE1hcmsgcGFyYW1ldGVycyBgdGFyZ2V0JywgYHRtb2RlJyBhbmQKCWBtb2RpZmllcicgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoKCSogZ2phdmFoLmMgKHByb2Nlc3NfZmlsZSk6IEFkZCBicmFjZXMgYXJvdW5kIGFtYmlndW91cyBgZWxzZScuCgoJKiBqY2YtZHVtcC5jIChwcmludF9hY2Nlc3NfZmxhZ3MsIGxvY2FsdmFyX2ZyZWUpOiBDaGFuZ2UgcmV0dXJuCgl0eXBlIHRvIHZvaWQuCgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBJbml0aWFsaXplIHZhcmlhYmxlCglgZXhjZXB0aW9uX2NvcHknLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IExpa2V3aXNlIGZvciBgZmllbGRfZGVjbCcuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBMaWtld2lzZSBmb3IgYGNsYXNzX3RvX3NlYXJjaCcuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IExpa2V3aXNlIGZvciBgbmFtZScgYW5kIGBwdHJfdHlwZScuCgkocGF0Y2hfYXNzaWdubWVudCk6IExpa2V3aXNlIGZvciBgbGhzX3R5cGUnLgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQoJYGNhbGxlcicuCgoxOTk5LTA3LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZGVjbC5jICh2YV9saXN0X3R5cGVfbm9kZSk6IE5ldy4KCjE5OTktMDctMjUgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKHByaW50X3N0dWIpOiBOZXcgZnVuY3Rpb24uCgkoTUVUSE9EX0lTX05BVElWRSk6IE5ldyBtYWNyby4KCShwcmludF9tYW5nbGVkX2NsYXNzbmFtZSk6IE1ha2Ugc3RhdGljLgoJKEhBTkRMRV9FTkRfRklFTEQpOiBEb24ndCBlbWl0IGZpZWxkcyBkdXJpbmcgc3R1YiBnZW5lcmF0aW9uLgoJKHByb2Nlc3NfZmlsZSk6IFBlcmZvcm0gc3R1YiBnZW5lcmF0aW9uLgoJKEhBTkRMRV9NRVRIT0QpOiBEb24ndCBlbWl0IGNsYXNzIGRlY2xzIGR1cmluZyBzdHViCglnZW5lcmF0aW9uLgoJKEhBTkRMRV9FTkRfTUVUSE9EKTogVGFrZSBpbnRvIGFjY291bnQgc3R1YiBnZW5lcmF0aW9uLgoJKHByaW50X21ldGhvZF9pbmZvKTogSGFuZGxlIHN0dWIgZ2VuZXJhdGlvbi4KCShwcmludF9zdHViKTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X2N4eF9jbGFzc25hbWUpOiBNYWtlIHNpZ25hdHVyZSBjb25zaXN0YW50IHdpdGggb3RoZXJzLgoJKGhlbHApOiBEZXNjcmliZSAtc3R1YnMgb3B0aW9uLgoJKG1haW4pOiBDcmVhdGUgc3R1YiBmaWxlLgoJKHZlcnNpb24pOiBVc2UgdmVyc2lvbi5jLgoJKHByaW50X2Z1bGxfY3h4X25hbWUpOiBOZXcgZnVuY3Rpb24uCgkocHJpbnRfY19kZWNsKTogVXNlIHByaW50X2Z1bGxfY3h4X25hbWUuCgoxOTk5LTA3LTIyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IEhhbmRsZSBNQVhfRVhQUi4KCjE5OTktMDctMTUgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogbGFuZy5jIChmbGFnX3VzZV9kaXZpZGVfc3Vicm91dGluZSk6IE5ldyB2YXJpYWJsZS4KCSogdHlwZWNrLmM6IChjb252ZXJ0X2llZWVfcmVhbF90b19pbnRlZ2VyKTogQm91bmRzIGNoZWNrCglmcC10by1pbnRlZ2VyIGNvbnZlcnNpb24uCgkoY29udmVydCk6IENhbGwgY29udmVydF9pZWVlX3JlYWxfdG9faW50ZWdlciB3aGVuIGZsYWdfZmFzdF9tYXRoCglpcyBub3Qgc2V0LgoKCSogZXhwci5jIChidWlsZF9qYXZhX3NvZnRfZGl2bW9kKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX2phdmFfYmlub3ApOiBDYWxsIGJ1aWxkX2phdmFfc29mdF9kaXZtb2QgaWYKCWZsYWdfdXNlX2RpdmlkZV9zdWJyb3V0aW5lIGlzIHNldC4KCSogZGVjbC5jOiBzb2Z0X2lkaXZfbm9kZSwgc29mdF9pcmVtX25vZGUsIHNvZnRfbGRpdl9ub2RlLCB0cmVlCglzb2Z0X2xyZW1fbm9kZTogbmV3IGJ1aWx0aW4gZnVuY3Rpb25zLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKSBJbml0aWFsaXplIHRoZSBuZXcgYnVpbHRpbnMuCgkqIGphdmEtdHJlZS5oIHNvZnRfaWRpdl9ub2RlLCBzb2Z0X2lyZW1fbm9kZSwgc29mdF9sZGl2X25vZGUsIHRyZWUKCXNvZnRfbHJlbV9ub2RlOiBuZXcgYnVpbHRpbiBmdW5jdGlvbnMuCgkoYnVpbGRfamF2YV9zb2Z0X2Rpdm1vZCk6IE5ldyBmdW5jdGlvbi4KCSogcGFyc2UueTogQ2FsbCBidWlsZF9qYXZhX3NvZnRfZGl2bW9kIGlmCglmbGFnX3VzZV9kaXZpZGVfc3Vicm91dGluZSBpcyBzZXQuCgkqIHBhcnNlLmM6IFJlYnVpbHQuCgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBBbHdheXMgYWxsb3cgYW4gZXh0cmEgYXJnIChmb3IKCWEgLS1zcGVjcz0gYXJnKSBldmVuIGlmIG5vdCBsaW5raW5nLgoJKiBsYW5nLW9wdGlvbnMuaCAoREVGSU5FX0xBTkdfTkFNRSAoIkphdmEiKSk6IEFkZAoJLWZ1c2UtZGl2aWRlLXN1YnJvdXRpbmUKCjE5OTktMDctMjAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocmVzb2x2ZV9hbmRfbGF5b3V0KTogQ2hlY2sgbWV0aG9kcyBvbmx5IG9uY2UuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogVmVyaWZ5IHRocm93biBleGNlcHRpb25zCgljb21wYXRpYmlsaXR5LgoJKGNoZWNrX3Rocm93bl9leGNlcHRpb25zKTogUmVqZWN0IGV4Y2VwdGlvbnMgdGhyb3duIGluCglpbml0aWFsaXplci4gRXJyb3IgbWVzc2FnZSB0dW5lZC4KCjE5OTktMDctMTQgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogZXhwci5jIChleHBhbmRfZXhwcik6IERvIG5vdCByZXR1cm4gdGhlIGxhc3Qgc3RhdGVtZW50IGluIGEKCWJsb2NrIGFzIHRoZSBibG9jaydzIHZhbHVlLgoKMTk5OS0wNy0wMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGZvcmNlX2V2YWx1YXRpb25fb3JkZXIpOiBTYXZlIHRoZSBDT01QT1VORF9FWFBSJ2VkCglDQUxMX0VYUFIsIHRvIGF2b2lkIG9yZGVyIG9mIGV2YWx1YXRpb24gY2hhbmdlcy4KCjE5OTktMDctMDIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IERvIG5vdCB1c2UKCUlERU5USUZJRVJfTE9DQUxfVkFMVUUgd2hlbiBuYW1lIGlzIGEgU1RSSU5HX0NTVC4KCjE5OTktMDctMDEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogSGFuZGxlIE1BWF9FWFBSLgoJKiBleHByLmMgKGZvcmNlX2V2YWx1YXRpb25fb3JkZXIpOiBGb3JjZSBtZXRob2QgY2FsbCBhcmd1bWVudHMgdG8KCWJlIGV2YWx1YXRlZCBpbiBsZWZ0LXRvLXJpZ2h0IG9yZGVyLgoJKiBwYXJzZS55IChxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogTG9vcCBhZ2FpbiB0byBxdWFsaWZ5CglORVdfQVJSQVlfRVhQUiBwcm9wZXJseS4KCjE5OTktMDYtMzAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfaW52b2tlKTogUmVzb2x2ZSB1bnJlc29sdmVkIGludm9rZWQgbWV0aG9kCglyZXR1cm5lZCB0eXBlLgoJKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBTVFJJTkdfQ1NUIHRvIHF1YWxpZnkgZXhwcmVzc2lvbiBmb3IKCXR5cGUgbmFtZSByZXNvbHV0aW9uLgoKMTk5OS0wNi0yNCAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfY2xhc3MpOiBXaGVuZXZlciBhIGRlZmVycmVkIG1ldGhvZCBpcwoJb3V0cHV0LCByZXNjYW4gdGhlIGxpc3Qgb2YgbWV0aG9kcyB0byBzZWUgaWYgYSBuZXcgY2FuZGlkYXRlIGZvcgoJb3V0cHV0IGNhbiBiZSBmb3VuZC4KCjE5OTktMDYtMjggIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGp2c3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IFJlY29nbml6ZSAtLWhlbHAuCgoxOTk5LTA2LTI1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfcGFja2FnZSk6IEZpeGVkIGJvZ3VzIHJldHVybiBzdGF0ZW1lbnQuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBSZXNvbHZlIG1ldGhvZCBpbnZvY2F0aW9uIGJlZ2lubmluZyB3aXRoCglhIHBhY2thZ2UgbmFtZSBxdWFsaWZpZXIuCgoxOTk5LTA2LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEuc3RhZ2UxKTogRGVwZW5kIG9uIHN0YWdlMS1zdGFydC4KCShqYXZhLnN0YWdlMik6IExpa2V3aXNlIGZvciBzdGFnZTItc3RhcnQuCgkoamF2YS5zdGFnZTMpOiBMaWtld2lzZSBmb3Igc3RhZ2UzLXN0YXJ0LgoJKGphdmEuc3RhZ2U0KTogTGlrZXdpc2UgZm9yIHN0YWdlNC1zdGFydC4KCjE5OTktMDYtMjQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9saHMpOiBXaGVuIGRvaW5nIGNyb3NzIHJlZmVyZW5jaW5nLCBkb24ndAoJdHJ5IHRvIGtlZXAgZmlsZSBsb2NhdGlvbiBvbiBhIFdGTCBleHBhbmRlZCBhcyBhIENBTExfRVhQUi4KCjE5OTktMDYtMjMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoZmluaXNoX21ldGhvZF9kZWNsYXJhdGlvbik6IEluc2VydCBhIFJFVFVSTl9FWFBSIHdoZW4KCWNvbXBpbGluZyB0byBjbGFzcyBmaWxlIGEgdm9pZCBtZXRob2Qgd2l0aCBhbiBlbXB0eSBtZXRob2QgYm9keS4KCUFzIGEgc2lkZSBlZmZlY3QsIHRoZSBieXRlY29kZSBiYWNrZW5kIHdpbGwgZ2VuZXJhdGUgdGhlCglhcHByb3ByaWF0ZSBgcmV0dXJuJyBpbnN0cnVjdGlvbi4KCjE5OTktMDYtMjIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAobG9va3VwX3BhY2thZ2VfdHlwZV9hbmRfc2V0X25leHQpOiBOZXcgZnVuY3Rpb24gcHJvdG90eXBlLgoJKHJlc29sdmVfcGFja2FnZSk6IFNlYXJjaCBjdXJyZW50IGFuZCBpbXBvcnRlZCBwYWNrYWdlcy4KCShsb29rdXBfcGFja2FnZV90eXBlX2FuZF9zZXRfbmV4dCk6IE5ldyBmdW5jdGlvbi4KCjE5OTktMDYtMjIgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogQ2hlY2sgZm9yIHBlbmRpbmcgYmxvY2tzCgliZWZvcmUgaW52YWxpZCBQQyB0ZXN0IGFuZCBvcGNvZGUgc3dpdGNoLCBub3QgYWZ0ZXIuCgoxOTk5LTA2LTIxICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChmaW5kX2hhbmRsZXJfaW5fcmFuZ2UpOiBUaGUgdXBwZXIgbGltaXQgZm9yIGV4Y2VwdGlvbgoJcmFuZ2VzIGlzIGV4Y2x1c2l2ZSwgbm90IGluY2x1c2l2ZTogKHN0YXJ0IDw9IHBjIDwgZW5kKS4KCShsaW5rX2hhbmRsZXIpOiBmaW5kIGNoaWxkIHBvaW50ZXIgd2hpY2ggcG9pbnRzIHRvIG91dGVyIGJ5CglzZWFyY2hpbmcgc2libGluZyBsaXN0OiBwcmV2aW91cyBjb2RlIGluY29ycmVjdGx5IGFzc3VtZWQgdGhhdAoJb3V0ZXItPm91dGVyLT5maXJzdF9jaGlsZCBtdXN0IHBvaW50IHRvIG91dGVyLgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBGSVhNRSBhZGRlZCB0byBjb2RlIGZvcgoJYGF0aHJvdycuCgkodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBEbyBub3QgYXNzdW1lIHRoYXQgdGhlIGxhc3QgYmxvY2sKCXByb2Nlc3NlZCBpbiBhIHN1YnJvdXRpbmUgaXMgYSBibG9jayB3aGljaCBlbmRzIHdpdGggYSBgcmV0JwoJaW5zdHJ1Y3Rpb24uICBXaXRoIHNvbWUgY29udHJvbCBmbG93cyBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBsYXN0CglibG9jayBlbmRzIHdpdGggYW4gYGF0aHJvdycuCgoxOTk5LTA2LTE0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBSZW9yZ2FuaXplZCB0aGUgcG9zdAoJZXZhbHVhdGlvbiBvZiBub24gV0ZMIGxlYWRpbmcgZXhwcmVzc2lvbiBub2Rlcy4KCjE5OTktMDYtMTEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IEhhbmRsZSBBUlJBWV9SRUYgYWZ0ZXIKCUNPTlZFUlRfRVhQUi4KCjE5OTktMDYtMTAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IEhhbmRsZSBxdWFsaWZpZWQgZXhwcmVzc2lvbgoJYmVnaW5uaW5nIHdpdGggYSBTVFJJTkdfQ1NULgoKMTk5OS0wNi0xMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChyZWdpc3Rlcl9maWVsZHMpOiBTZXQgREVDTF9JTklUSUFMIG9uIGJvdGgKCXByZS1pbml0aWFsaXplZCBzdGF0aWMgYW5kIHB1YmxpYyBmaWVsZHMuCgkocmVzb2x2ZV9maWVsZF9hY2Nlc3MpOiBTdGF0aWMgZmllbGQgYWNjZXNzIGV4cHJlc3Npb25zIHRvIGFsd2F5cwoJdXNlIHBvaW50ZXIgdHlwZXMuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IFdvcmsgb3V0IGJ1cmllZCBDQUxMX0VYUFIgZm9yIHByb3BlcgoJcXVhbGlmaWNhdGlvbi4gQ09OVkVSVF9FWFBSIHRvIGJlIHJlc29sdmVkIGFzIGFuIGV4cHJlc3Npb24gbmFtZS4KCShqYXZhX2NvbXBsZXRlX2xocyk6IElkZW50aWZ5IGFuZCBhY2Nlc3MgcXVhbGlmaWVkIGZpbmFsCglpbml0aWFsaXplZCBmaWVsZCBpbiBzd2l0Y2ggc3RhdGVtZW50IGNhc2UgZXhwcmVzc2lvbi4KCShmb2xkX2NvbnN0YW50X2Zvcl9pbml0KTogUHJlLWluaXRpYWxpemVkIGZpZWxkIGRlY2wgY29uc3RhbnQgdG8KCWJlIGZvbGRlZC4KCjE5OTktMDYtMDcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAobm90ZV9wb3NzaWJsZV9jbGFzc25hbWUpOiBNYXJrIHJldHVybmVkIG5vZGUgd2l0aAoJUVVBTElGSUVEX1Agb25seSBpZiB0aGUgb3JpZ2luYWwgY2xhc3MgbmFtZSBjb250YWluZWQgYSAnLycuCgoxOTk5LTA2LTA1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoZ2NqaCk6IE1vcmUgcGFyYWxsZWwgYnVpbGQgZml4ZXMuCgoxOTk5LTA2LTAzICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKEpDRl9EVU1QX1NPVVJDRVMsIGp2Z2VubWFpbik6IEZpeCBwYXJhbGxlbCBidWlsZHMuCgoxOTk5LTA2LTAyICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChsaW5rX2hhbmRsZXIpOiBDaGFpbiBleGNlcHRpb24gaGFuZGxlcnMgaW4gb3JkZXIuCgoxOTk5LTA2LTAyICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2J5dGVfY29kZSk6IEZpbGwgdW5yZWFjaGFibGUgYnl0ZWNvZGUgcmVnaW9ucwoJd2l0aCBub3BzIGFuZCBwcm9jZXNzIGFzIHVzdWFsIGluIG9yZGVyIHRvIGFsd2F5cyBzZXQgY29ycmVjdCBFSAoJcmFuZ2VzLiAgRW1pdCBkZXRhaWxlZCB3YXJuaW5ncyBhYm91dCB1bnJlYWNoYWJsZSBieXRlY29kZXMuCgoxOTk5LTA2LTAyICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3V0ZjhfcmVmKTogTWFyayBjaW5pdCBhbmQgdXRmOCB0cmVlIG5vZGVzIGFzCgljb25zdGFudC4KCjE5OTktMDUtMjggIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAobG9va3VwX2ZpZWxkX3dyYXBwZXIpOiBVbmlmaWVkIHJldHVybmVkIHZhbHVlIHRvIE5VTEwKCSAgb3IgdGhlIHNlYXJjaGVkIGZpZWxkIGRlY2wuCgoxOTk5LTA1LTI4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGZvbGRfY29uc3RhbnRfZm9yX2luaXQpOiBDb252ZXJ0IG51bWVyaWNhbCBjb25zdGFudAoJdmFsdWVzIHRvIHRoZSB0eXBlIG9mIHRoZSBhc3NpZ25lZCBmaWVsZC4KCjE5OTktMDUtMjcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZXhwci5jIChsb29rdXBfZmllbGQpOiBSZWxheGVkIHRoZSB0ZXN0IG9uIGNsYXNzIGxvYWRpbmcgZXJyb3IKCWRldGVjdGlvbi4KCSogcGFyc2UueSAoZm9sZF9jb25zdGFudF9mb3JfaW5pdCk6IEVuYWJlbGVkIG9sZCBjb2RlLgoKMTk5OS0wNS0yNiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55ICh2YWxpZF9yZWZfYXNzaWduY29udl9jYXN0X3ApOiBMZXQgYF9Kdl9DaGVja0Nhc3QnCglkZWNpZGUgdGhlIHZhbGlkaXR5IG9mIHRoZSBjYXN0IG9mIGEgamF2YS5sYW5nLkNsb25lYWJsZSByZWZlcmVuY2UKCXRvIGFuIGFycmF5LgoJKHBhdGNoX2NvbmRpdGlvbmFsX2V4cHIpOiBGaXhlZCBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8KCWJpbmFyeV9udW1lcmljX3Byb21vdGlvbi4KCjE5OTktMDUtMjYgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IFRha2UgaW50byBhY2NvdW50IHRoYXQgYQoJQ09OVkVSVF9FWFBSIG1pZ2h0IHNwZWNpZnkgYSB0eXBlIGFzIGEgV0ZMLgoKMTk5OS0wNS0yNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9hc3NpZ25tZW50KTogU2F2ZSB0aGUgcmhzIGJlZm9yZSB1c2luZyBpdCBhcyBhbgoJYXJndW1lbnQgdG8gX0p2X0NoZWNrQXJyYXlTdG9yZS4KCjE5OTktMDUtMjUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogbGV4LmMgKGphdmFfcGFyc2VfZG9jX3NlY3Rpb24pOiBGaXhlZCBgdGFnJyBidWZmZXIgc2l6ZS4KCjE5OTktMDUtMjQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogbGV4LmMgKGphdmFfbGV4KTogQWNjZXB0cyBgKycgb3IgYC0nIGFmdGVyIHRoZSBiZWdpbm5pbmcgb2YgYQoJZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbCBvbmx5IHdoZW4gdGhlIGV4cG9uZW50IGluZGljYXRvciBoYXMgYmVlbgoJcGFyc2VkLgoKMTk5OS0wNS0yMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChmb3JtYWxfcGFyYW1ldGVyOik6IENvbnN0cnVjdCBhcmd1bWVudCB0cmVlIGxpc3QKCWVsZW1lbnQgZXZlbiBpZiBhIHlldCB1bnN1cHBvcnRlZCBmaW5hbCBwYXJhbWV0ZXIgd2FzIGVuY291bnRlcmVkLgoKMTk5OS0wNS0xOCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChmaW5pc2hfbWV0aG9kX2RlY2xhcmF0aW9uKTogSXNzdWUgZXJyb3JzIGZvciBuYXRpdmUgb3IKCWFic3RyYWN0IG1ldGhvZHMgZGVjbGFyZWQgd2l0aCBhIG1ldGhvZCBib2R5LCBhcyB3ZWxsIGFzIGZvciBub24KCW5hdGl2ZSBvciBub24gYWJzdHJhY3QgbWV0aG9kcyB3aXRoIG5vIG1ldGhvZCBib2R5LgoKMTk5OS0wNS0xOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2xhc3MuYyAoYnVpbGRfdXRmOF9yZWYpOiBJbml0aWFsaXplIHZhcmlhYmxlIGBmaWVsZCcuCgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSB2YXJpYWJsZSBgZmllbGQnLgoKCSogZXhwci5jIChidWlsZF9rbm93bl9tZXRob2RfcmVmKTogTWFyayBwYXJhbWV0ZXJzIGBtZXRob2RfdHlwZScsCglgbWV0aG9kX3NpZ25hdHVyZScgYW5kIGBhcmdfbGlzdCcgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoJKHByb2Nlc3NfanZtX2luc3RydWN0aW9uKTogTGlrZXdpc2UgZm9yIHBhcmFtZXRlciBgbGVuZ3RoJy4KCgkqIGp2c3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IE1hcmsgdmFyaWFibGVzIGBzYXdfbWF0aCcsCglgc2F3X2xpYmMnLCBgc2F3X2djJywgYHNhd190aHJlYWRsaWInIGFuZCBgc2F3X2xpYmdjaicgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCgkqIHBhcnNlLnkgKG1heWJlX2dlbmVyYXRlX2NsaW5pdCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCWBoYXNfbm9uX3ByaW1pdGl2ZV9maWVsZHMnLgoJKGZpbmRfaW5faW1wb3J0c19vbl9kZW1hbmQpOiBJbml0aWFsaXplIHZhcmlhYmxlcyBgbm9kZV90b191c2UnCglhbmQgYGNsJy4KCShwYXRjaF9iaW5vcCk6IExpa2V3aXNlIGZvciB2YXJpYWJsZSBgcHJvbV90eXBlJy4KCShwYXRjaF91bmFyeW9wKTogTGlrZXdpc2UgZm9yIHZhcmlhYmxlIGBwcm9tX3R5cGUnLgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogTGlrZXdpc2UgZm9yIHZhcmlhYmxlIGBsYXN0Jy4KCgkqIHhyZWYuYyAoeHJlZl90YWJsZSk6IEFkZCBtaXNzaW5nIGluaXRpYWxpemVyLgoKMTk5OS0wNS0xNCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogamF2YS1leGNlcHQuaCAoc3RydWN0IGVoX3JhbmdlKTogUmVtb3ZlZCB1bnVzZWQgYG5leHQnIG1lbWJlci4KCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogQ2FsbCBjaGVja19uZXN0ZWRfcmFuZ2VzCglhZnRlciBhZGRpbmcgYWxsIGV4Y2VwdGlvbiBoYW5kbGVycy4gIFNvcnQgZXhjZXB0aW9uIHJhbmdlcyBpbgoJb3JkZXIgb2Ygc3RhcnQgUEMuCgkoc3RydWN0IHBjX2luZGV4KTogTmV3IHN0cnVjdHVyZS4KCShzdGFydF9wY19jbXApOiBOZXcgZnVuY3Rpb24uCgkqIGV4Y2VwdC5jIChhZGRfaGFuZGxlcik6IFJldHVybiBgdm9pZCcuICBEb24ndCBjYWxsIGxpbmtfaGFuZGxlcjsKCWluc3RlYWQgY29uc3RydWN0IGFuIG9yZGluYXJ5IGxpbmtlZCBsaXN0IGFuZCBkbyByYW5nZQoJY29hbGVzY2luZy4KCShjaGVja19uZXN0ZWRfcmFuZ2VzKTogTmV3IGZ1bmN0aW9uLgoJKGxpbmtfaGFuZGxlcik6IENoYW5nZWQgaW50ZXJmYWNlIHRvIGFsbG93IG1lcmdpbmcgb2YgZWhfcmFuZ2VzLgoJU3BsaXQgb3ZlcmxhcHBpbmcgcmFuZ2VzLiAgUmV0dXJuIGB2b2lkJy4KCjE5OTktMDUtMTcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoY29uc3RydWN0b3JfYmxvY2tfZW5kOik6IE5ldyBydWxlLCB0YWdnZWQgPG5vZGU+LgoJKGNvbnN0cnVjdG9yX2JvZHk6KTogVXNlIGBjb25zdHJ1Y3Rvcl9ibG9ja19lbmQnIGluc3RlYWQgb2YKCWBibG9ja19lbmQnLgoKMTk5OS0wNS0xNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChzdGF0ZW1lbnRfbnNpOik6IFBvcCBgZm9yJyBzdGF0ZW1lbnQgYmxvY2suCgkoamF2YV9jb21wbGV0ZV9saHMpOiBMYWJlbGVkIGJsb2NrcyBjb250YWluaW5nIG5vIHN0YXRlbWVudCBhcmUKCW1hcmtlZCBhcyBjb21wbGV0aW5nIG5vcm1hbGx5LgoKMTk5OS0wNS0xNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiB4cmVmLmMgKHhyZWZfc2V0X2N1cnJlbnRfZnApOiBOZXcgZnVuY3Rpb24sIGRlZmluZWQuCgkqIHhyZWYuaCAoeHJlZl9zZXRfY3VycmVudF9mcCk6IE5ldyBmdW5jdGlvbiwgcHJvdG90eXBlZC4KCjE5OTktMDUtMTQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogVGFrZSBpbnRvIGFjY291bnQgdGhhdAoJTEFCRUxFRF9CTE9DS19TVE1UIGNhbiBiZSBlbXB0eS4KCjE5OTktMDUtMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiBXYXJuaW5nIGNoZWNrIG9uIG5vdAoJb3ZlcnJpZGluZyBtZXRob2RzIHdpdGggZGVmYXVsdCBhY2Nlc3MgaW4gb3RoZXIgcGFja2FnZXMgZG9lcyBub3QKCWFwcGx5IHRvIGA8Y2xpbml0PicuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBJZiBibG9jayBib2R5IGlzIGFuIGVtcHR5X3N0bXRfbm9kZSwgcmVwbGFjZQoJaXQgYnkgTlVMTF9UUkVFLiBUaGlzIHByZXZlbnRzIGdjYyBmcm9tIGdlbmVyYXRpbmcgYW4gaXJyZWxldmFudAoJd2FybmluZy4KCjE5OTktMDUtMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogUmVtb3ZlZCBjb2RlIGFjY2VwdGluZyB0byBzZWUgdGhpbmdzCglmYWxsaW5nIHRocm91Z2ggZGVmYXVsdDosIHdoZW4gZG9pbmcgeHJlZnMuCgkqIGphdmEtdHJlZS5oIChkb19ub3RfZm9sZCk6IE5ldyBnbG9iYWwgdmFyaWFibGUsIGRlY2xhcmVkLgoJKiBwYXJzZS55IChkb19ub3RfZm9sZCk6IE5ldyBnbG9iYWwgdmFyaWFibGUsIGRlZmluZWQuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kKTogU2V0IGBkb19ub3RfZm9sZCcgdG8gdGhlIHZhbHVlIG9mCglgZmxhZ19lbWl0X3hyZWYnLiBXaGVuIGRvaW5nIHhyZWZzOiBjb3B5IHRoZSB0aHJvd24gZXhjZXB0aW9ucywKCWFuZCByZWluc3RhbGwgdGhlbSBhZnRlciB0aGVtIGhhdmUgYmVlbiBwdXJnZWQ7IGRvIG5vdCBjaGVjayBmb3IKCWluaXRpYWxpemF0aW9uczsgZG8gbm90IGlzc3VlIG1pc3NpbmcgcmV0dXJuIGVycm9ycy4KCShqYXZhX2NvbXBsZXRlX2xocyk6IERvIG5vdCBhdHRlbXB0IHRvIHBhdGNoIElOU1RBTkNFT0ZfRVhQUiBub2RlcwoJd2hlbiBkb2luZyB4cmVmcy4KCShwYXRjaF9iaW5vcCk6IFNraXAgdGhlIGZvbGQgcGFydCB3aGVuIGRvaW5nIHhyZWZzLgoJKGJ1aWxkX3N0cmluZ19jb25jYXRlbmF0aW9uKTogU2tpcCB0aGUgY29uY2F0ZW5hdGlvbiBwYXJ0IHdoZW4KCWRvaW5nIHhyZWZzLgoJKHBhdGNoX3N5bmNocm9uaXplZF9zdGF0ZW1lbnQpOiBEbyBub3QgZ2VuZXJhdGUgYSB0cnktZmluYWxseSB3aGVuCglkb2luZyB4cmVmcy4KCShwYXRjaF90aHJvd19zdGF0ZW1lbnQpOiBXaGVuIGRvaW5nIHhyZWZzLCBkbyBub3QgY2FsbCBCVUlMRF9USFJPVwoJYW5kIGtlZXAgdGhlIGxvY2F0aW9uIHdoZXJlIHRoZSB0aHJvdyB3YXMgc2Vlbi4KCSogdHlwZWNrLmMgKGNvbnZlcnQpOiBXaGVuIGBkb19ub3RfZm9sZCcgaXMgc2V0LCBkbyBub3QgYXR0ZW1wdAoJYW55IHRyZWF0bWVudCBvbiB0aGUgY29udmVydGVkIG5vZGUgYW4gc2ltcGx5IHJldHVybiBhIE5PUF9FWFBSIG9mCgl0aGUgdGFyZ2V0ZWQgdHlwZS4KCSogeHJlZi5jICh4cmVmX2dldF9kYXRhKTogTmV3IGZ1bmN0aW9uLCBkZWZpbmVkLgoJKiB4cmVmLmggKHhyZWZfZ2V0X2RhdGEpOiBOZXcgZnVuY3Rpb24sIGRlY2xhcmVkLgoJKFhSRUZfR0VUX0RBVEEpOiBVc2UgeHJlZl9nZXRfZGF0YS4KCjE5OTktMDUtMTMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdqYXZhaC5jIChwcmludF9pbmNsdWRlKTogQ2FzdCB0aGUgcmVzdWx0IG9mIGBzdHJsZW4nIHRvIGludAoJd2hlbiBjb21wYXJpbmcgYWdhaW5zdCBhIHNpZ25lZCB2YWx1ZS4KCShhZGRfbmFtZWxldCk6IExpa2V3aXNlLgoKMTk5OS0wNS0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZXhwci5jIChleHBhbmRfaW52b2tlKTogTWFyayBwYXJhbWV0ZXIgYG5hcmdzJyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoJKFBSRV9MT09LVVBfU1dJVENIKTogTGlrZXdpc2UgZm9yIHZhcmlhYmxlIGBtYXRjaCcuCgoJKiBqY2YtaW8uYyAoamNmX3VuZXhwZWN0ZWRfZW9mKTogTWFyayBwYXJhbWV0ZXIgYGNvdW50JyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoKCSogamNmLXJlYWRlci5jIChnZXRfYXR0cmlidXRlKTogQ2FzdCBhIHZhbHVlIHRvIGxvbmcKCXdoZW4gY29tcGFyaW5nIGFnYWluc3QgYSBzaWduZWQgZXhwcmVzc2lvbi4gIExpa2V3aXNlLgoKCSogbGV4Lmg6IE5ldmVyIGRlZmluZSBIT1NUX1dJREVfSU5ULCBIT1NUX0JJVFNfUEVSX1dJREVfSU5UIG9yCglIT1NUX0JJVFNfUEVSX0NIQVIuCgoxOTk5LTA1LTExICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHNvdXJjZV9lbmRfamF2YV9tZXRob2QpOiBJZiB0aGUgY3VycmVudCBtZXRob2QgY29udGFpbnMKCWFueSBleGNlcHRpb24gaGFuZGxlcnMsIGZvcmNlIGFzeW5jaHJvbm91c19leGNlcHRpb25zOiB0aGlzIGlzCgluZWNlc3NhcnkgYmVjYXVzZSBzaWduYWwgaGFuZGxlcnMgaW4gbGliamF2YSBtYXkgdGhyb3cgZXhjZXB0aW9ucy4KCSogZGVjbC5jIChlbmRfamF2YV9tZXRob2QpOiBEaXR0by4KCjE5OTktMDUtMTEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoanZzcGVjLm8pOiBEb24ndCBkZWZpbmUgV0lUSF9USFJFQURfeCBvciBXSVRIX0dDX3gKCWZsYWdzLgoJKiBqdnNwZWMuYyAoVEhSRUFEX05BTUUpOiBSZW1vdmVkLgoJKEdDX05BTUUpOiBMaWtld2lzZS4KCShNQVRITElCKTogTGlrZXdpc2UuCgkoV0lUSExJQkMpOiBMaWtld2lzZS4KCShHQ0xJQik6IExpa2V3aXNlLgoJKFRIUkVBRExJQik6IExpa2V3aXNlLgoJKE1BVEhfTElCUkFSWSk6IExpa2V3aXNlLgoJKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogRG9uJ3QgYWRkIGAtbCcgb3B0aW9ucyB0byBjb21tYW5kIGxpbmUuCglJbnN0ZWFkLCBhZGQgYSBzaW5nbGUgLS1zcGVjcyBvcHRpb24uICBSZWNvZ25pemUgYC1MJyBvcHRpb25zIGFuZAoJdXNlIHRoZW0gdG8gc2VhcmNoIGZvciBzcGVjIGZpbGUuCgkoZmluZF9zcGVjX2ZpbGUpOiBOZXcgZnVuY3Rpb24uCgkoU1BFQ19GSUxFKTogTmV3IGRlZmluZS4KCjE5OTktMDUtMTEgIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIGxhbmctb3B0aW9ucy5oOiAtTUQsIC1NTUQsIC1NIGFuZCAtTU0gbm90IG5lZWRlZCBoZXJlIGZvcgoJY3BwbGliLWVuYWJsZWQgYnVpbGQuCgoxOTk5LTA1LTA1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfZmllbGRfdmFsdWUpOiAgREVDTF9JTklUSUFMIG1heSBiZSBhIHN0cmluZyBsaXRlcmFsOwoJdGVtcG9yYXJpbHkgemVybyBpdCB3aGlsZSBjYWxsaW5nIHJlc3Rfb2ZfZGVjbF9jb21waWxhdGlvbi4KCgkqIGphdmEtdHJlZS5oIChzdHJpbmdfcHRyX3R5cGVfbm9kZSk6ICBBZGQgZGVjbGFyYXRpb24uCgkqIGRlY2wuYzogIERlZmluZSBhbmQgaW5pdGlhbGl6ZSBzdHJpbmdfcHRyX3R5cGVfbm9kZS4KCSogcGFyc2UueSAocGF0Y2hfc3RyaW5nX2NzdCk6ICBVc2Ugc3RyaW5nX3B0cl90eXBlX25vZGUuCgoJKiBwYXJzZS5oIChMT09QX0hBU19MQUJFTF9QLCBMT09QX0hBU19MQUJFTF9TS0lQX1ApOiAgUmVtb3ZlZC4KCSogcGFyc2UueSAoZm9yX3N0YXRlbWVudCk6ICBOb3cgdW5jb25kaXRpb25hbGx5IGV4aXRfYmxvY2suCgkoZmluaXNoX2xhYmVsZWRfc3RhdGVtZW50KTogIE5vIGxvbmdlciBleGl0X2Jsb2NrIGlmIGZvci1sb29wLgoJKHBhdGNoX2xvb3Bfc3RhdGVtZW50KTogIENoZWNrIGhhcmRlciBpZiB0aGUgbG9vcCBpcyBhbHJlYWR5IGxhYmVsZWQuCgoJKiBwYXJzZS55IChwYXRjaF9pbml0aWFsaXplZF9zdGF0aWNfZmllbGQpOiAgUmVtb3ZlZCBmdW5jdGlvbi4KCShtYXliZV9nZW5lcmF0ZV9jbGluaXQpOiAgUmVtb3ZlZCBzcGVjaWFsIGhhbmRsaW5nIGZvciBpbnRlcmZhY2VzLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiAgRG8gYSBwcmVsaW1pbmFyeSBqYXZhX2NvbXBsZXRlX3RyZWUKCW9uIDxjbGluaXQ+IHRvIGRldGVybWluZSBpZiBpdCBjYW4gYmUgcmVtb3ZlZC4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiAgUmVtb3ZlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIDxjbGluaXQ+LgoJKGphdmFfY29tcGxldGVfbGhzKTogIEZvciBCTE9DSyBhbmQgRVhQUl9XSVRIX0ZJTEVfTE9DQVRJT04KCW9wdGltaXplIGlmIHdlIGdldCBiYWNrIGVtcHR5X3N0bXRfbm9kZS4KCUZvciBNT0RJRllfRVhQUiwgcmUtZG8gY2hlY2tpbmcgb2Ygc3RhdGljIGluaXRpYWxpemVycy4KCShmb2xkX2NvbnN0YW50X2Zvcl9pbml0KTogIERvbid0IHJldHVybiBpbW1lZGlhdGUgaWYgVkFSX0RFQ0wuCglGb3IgVkFSX0RFQ0wsIHBhc3MgY29ycmVjdCBjb250ZXh0LgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIEJldHRlciBlcnJvciBtZXNzYWdlcy4KCjE5OTktMDUtMDMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLXNjYW4ueSAoaW50ZXJmYWNlX2RlY2xhcmF0aW9uKTogQ2FsbAoJcmVwb3J0X2NsYXNzX2RlY2xhcmF0aW9uIGZvciBpbnRlcmZhY2VzLgoKMTk5OS0wNC0zMCAyMDo1NCAtMDQwMCAgWmFjayBXZWluYmVyZyAgPHphY2tAcmFiaS5jb2x1bWJpYS5lZHU+CgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIC12IGZyb20gYmlzb24gY29tbWFuZCBsaW5lcy4KCjE5OTktMDQtMzAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogRXhjbHVkZSBhIGNhc2Ugb2YgZXJyb3Igd2hlbiBkb2luZwoJeHJlZnMuCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzc19tZXRob2QpOiBEb24ndCBnZW5lcmF0ZSB0aGUgZXJyb3IgbWVzc2FnZQoJdHdpY2Ugd2hlbiBjb21waWxpbmcgZnJvbSBzb3VyY2UuCgkqIGxhbmctb3B0aW9ucy5oOiBBZGRlZCBgLVdyZWR1bmRhbnQtbW9kaWZlcnMnIGFuZAoJYC1XdW51c3VwcG9ydGVkLWpkazExJyBmbGFncyBhbmQgaGVscCB0ZXh0LgoJKiBsYW5nLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IEFkZGVkIHN1cHBvcnQgZm9yCglgLVd1bnN1cHBvcnRlZC1qZGsxMScgYW5kIGAtV3JlZHVuZGFudC1tb2RpZmllcnMnLgoJZmxhZ19zdGF0aWNfbG9jYWxfamRrMTEgYW5kIGZsYWdfcmVkdW5kYW50IHNldCBhY2NvcmRpbmdseS4KCSogbGV4LmMgKGphdmFfbGV4KTogQ2FsbCBCVUlMRF9PUEVSQVRPUiBvbiBDQ0JfVEsuCgkqIHBhcnNlLmggKEVYUFJfV0ZMX0FERF9DT0wpOiBOZXcgbWFjcm8uCgkoREVDTF9FTkRfU09VUkNFX0xJTkUpOiBMaWtld2lzZS4KCShERUNMX0lOSEVSSVRFRF9TT1VSQ0VfTElORSk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChzdGF0aWNfcmVmX2Vycik6IE5ldyBmdW5jdGlvbiwgcHJvdG90eXBlZC4KCShDQ0JfVEspOiBOb3cgdGFnZ2VkIDxvcGVyYXRvcj4uCgkoY2xhc3NfYm9keTopOiBSZW1lbWJlciB0aGUgbG9jYXRpb24gb2YgdGhlIGNsb3NpbmcgJ30nIG9mIGEgY2xhc3MKCWRlZmluaXRpb24gd2hlbiBkb2luZyB4cmVmcy4KCShibG9jazopOiBMaWtld2lzZS4KCShibG9ja19lbmQ6KTogTGlrZXdpc2UuCgkoY3JlYXRlX2NsYXNzKTogUmVtZW1iZXIgdGhlIGxvY2F0aW9uIG9mIHRoZSBpbmhlcml0ZWQgY2xhc3MKCWlkZW50aWZpZXIgd2hlbiBkb2luZyB4cmVmcy4KCShyZWdpc3Rlcl9maWVsZHMpOiBBZGRlZCB0ZXN0IG9uIGZpcnN0IG9wZXJhbmQgb2YgYGluaXQnIGJlZm9yZQoJdGVzdGluZyBpdCBUUkVFX0NPREUuCgkobWV0aG9kX2hlYWRlcik6IFN0b3JlIHRoZSBsb2NhdGlvbiBvZiB0aGUgY2xhc3MgaWRlbnRpZmllciBpbiB0aGUKCWNsYXNzIGRlY2wgd2hlbiBkb2luZyB4cmVmcy4KCShmaW5pc2hfbWV0aG9kX2RlY2xhcmF0aW9uKTogRG9uJ3QgY29tYmluZSBmaXJzdC9sYXN0IG1ldGhvZCBsaW5lCgl3aGVuIGRvaW5nIHhyZWYuCgkoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiBXYXJuaW5nIGNoZWNrIG9uIG5vdCBvdmVycmlkaW5nCgltZXRob2RzIHdpdGggZGVmYXVsdCBhY2Nlc3Mgb24gb3RoZXIgcGFja2FnZXMgbW92ZSBiZWZvcmUgY2hlY2sgb24KCXN0YXRpYyBtZXRob2RzLiBJbml0aWFsaXphdGlvbiBvZiBgYWZsYWdzJyBhbHNvIG1vdmVkIHVwLgoJKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogQ2FsbCBzdGF0aWNfcmVmX2VyciB0byByZXBvcnQgdGhlIGVycm9yLgoJKHN0YXRpY19yZWZfZXJyKTogTmV3IGZ1bmN0aW9uLCBpbXBsZW1lbnRlZC4KCShyZXNvbHZlX2ZpZWxkX2FjY2Vzcyk6IFJldHVybmVkIHNpbXBsaWZpZWQgc3RhdGljIGZpZWxkIGFjY2VzcwoJd2hlbiBkb2luZyB4cmVmcy4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBDaGVjayBmb3IgaWxsZWdhbCB1c2Ugb2YKCXN0YXRpYyBmaWVsZHMgaW4gYSBub24gc3RhdGljIGNvbnRleHQuIENhbGwgc3RhdGljX3JlZl9lcnIgdG8KCXJlcG9ydCBlcnJvciBpbiB2YXJpb3VzIHBsYWNlcy4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBEbyBub3QgZm9sZCBpbml0aWFsaXplZCBzdGF0aWMgZmllbGRzIHdoZW4KCWRvaW5nIHhyZWZzLgoJKGphdmFfY29tcGxldGVfbGhzKTogTGlrZXdpc2UuCgoxOTk5LTA0LTI5ICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZ2VuZXJhdGVfbmFtZSk6IFVzZSBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgdG8KCWNyZWF0ZSBpbnRlcm5hbCBsYWJlbHMuCgkobG9va3VwX2xhYmVsKTogRGl0dG8uCgoxOTk5LTA0LTI0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzc19tZXRob2QpOiBHZW5lcmF0ZSA8Y2xpbml0PidzIHJ0bCBmb3IKCWludGVyZmFjZXMuCgkqIGRlY2wuYyAoY29tcGxldGVfc3RhcnRfamF2YV9tZXRob2QpOiBEb24ndCBjYWxsIF9Kdl9Jbml0Q2xhc3MKCWZvciBpbnRlcmZhY2VzJyA8Y2xpbml0Pi4KCSogZXhwci5jIChsb29rdXBfZmllbGQpOiBTZWFyY2ggZm9yIGZpZWxkcyBpbiBpbnRlcmZhY2VzLgoJKGV4cGFuZF9pbnZva2UpOiBGaXhlZCBpbmRlbnRhdGlvbi4KCShleHBhbmRfamF2YV9maWVsZF9vcCk6IExpa2V3aXNlLiBVc2UgSVNfQ0xJTklULgoJKiBwYXJzZS5oIChKUFJJTUlUSVZFX1RZUEVfT1JfVk9JRF9QKTogTWFjcm8gcmVtb3ZlZC4KCShJU19DTElOSVQpOiBOZXcgbWFjcm8uCgkqIHBhcnNlLnkgKHR5cGVfZGVjbGFyYXRpb246KTogQ2FsbCBtYXliZV9nZW5lcmF0ZV9jbGluaXQgYWZ0ZXIgYW4KCWludGVyZmFjZSB3YXMgcGFyc2VkLgoJKG1heWJlX2dlbmVyYXRlX2NsaW5pdCk6IERvbid0IGdlbmVyYXRlIGlmIHRoZSBjdXJyZW50IGNsYXNzIGlzIGFuCglpbnRlcmZhY2Ugd2l0aCBvbmx5IGZpZWxkcyBvZiBwcmltaXRpdmUgdHlwZXMuCgkocmVzZXRfbWV0aG9kX25hbWUpOiBVc2UgSVNfQ0xJTklULgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IEV4cGFuZCA8Y2xpbml0PiB3aGVuIGl0IGV4aXN0cyBmb3IKCWludGVyZmFjZXMuIFVzZSBJU19DTElOSVQuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBVc2UgREVDTF9DT05URVhUIGluc3RlYWQgb2YKCWN1cnJlbnRfY2xhc3MgdG8gYnVpbGQgc3RhdGljIGZpZWxkIHJlZmVyZW5jZXMuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBVc2UgSVNfX0NMSU5JVC4gRG9uJ3QgdXNlIFNBVkVfRVhQUiBvbgoJQVJSQVlfUkVGIHdoZW4gZG9pbmcgeHJlZmVyZW5jaW5nLgoJKGNoZWNrX2ZpbmFsX2Fzc2lnbm1lbnQpOiBGaXhlZCB0eXBvIGluIGxlYWRpbmcgY29tbWVudC4gVXNlCglJU19DTElOSVQuCgkocGF0Y2hfYXJyYXlfcmVmKTogRG9uJ3QgZnVsbHkgZXhwYW5kIGFycmF5IHJlZmVyZW5jZXMgd2hlbgoJeHJlZmVyZW5jaW5nLgoJKHBhdGNoX3JldHVybik6IFVzZSBJU19DTElOSVQuCgkocGF0Y2hfdGhyb3dfc3RhdGVtZW50KTogTGlrZXdpc2UuCgoxOTk5LTA0LTIyICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKEpBVkFfU1JDUyk6IEFkZGVkIGNoZWNrLWluaXQuYy4KCjE5OTktMDQtMjEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChwcmVkZWZfZmlsZW5hbWVzLCBwcmVkZWZfZmlsZW5hbWVzX3NpemUpOiBOZXcgZ2xvYmFscwoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogcHJlZGVmX2ZpbGVuYW1lcyBhbmQgcHJlZGVmX2ZpbGVuYW1lc19zaXplCglpbml0aWFsaXplZC4KCSogamF2YS10cmVlLmggKHByZWRlZl9maWxlbmFtZXMsIHByZWRlZl9maWxlbmFtZXNfc2l6ZSk6IERlY2xhcmVkCglleHRlcm4uCgkqIGpjZi1wYXJzZS5jIChwcmVkZWZpbmVkX2ZpbGVuYW1lX3ApOiBOZXcgZnVuY3Rpb24uCgkoeXlwYXJzZSk6IENoZWNrIHRoYXQgZmlsZXMgb24gdGhlIGNvbW1hbmQgbGluZSBhcmUgc3BlY2lmaWVkIG9ubHkKCW9uY2UgYW5kIGlzc3VlIGEgd2FybmluZyBvdGhlcndpc2UuCgkqIHBhcnNlLmggKEpQUklNSVRJVkVfVFlQRV9PUl9WT0lEX1ApOiBOZXcgbWFjcm8uCgkqIHBhcnNlLnkgKHNvdXJjZV9lbmRfamF2YV9tZXRob2QpOiBOdWxsaWZ5IE5PUCBtZXRob2QgYm9kaWVzLCB0bwoJYXZvaWQgYSBnY2Mgd2FybmluZyB3aXRoIC1XIC1XYWxsIHR1cm5lZCBvbi4KCShqYXZhX2V4cGFuZF9jbGFzc2VzKTogQWJvcnQgaWYgZXJyb3JzIHdlcmUgZW5jb3VudGVyZWQuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBJZiB0aGUgY3Jvc3MgcmVmZXJlbmNlIGZsYWcgaXMgc2V0LCB3cmFwCglmaWVsZCBERUNMIG5vZGUgYXJvdW5kIGEgV0ZMIHdoZW4gcmVzb2x2aW5nIGV4cHJlc3Npb24gbmFtZS4KCjE5OTktMDQtMTkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogbGFuZy5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBGaXhlZCByZXR1cm5lZCB2YWx1ZSB3aGVuIHBhcnNpbmcKCWAtZnhyZWY9Li4uJyBhbmQgYC1XYWxsJy4KCSogcGFyc2UueSAoc291cmNlX2VuZF9qYXZhX21ldGhvZCk6IERvIG5vdCBnZW5lcmF0ZSBjb2RlIHdoZW4KCWZsYWdfZW1pdF94cmVmIGlzIHNldC4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IERvIG5vdCBidWlsZCBzdGF0aWMgZmllbGQgYWNjZXNzIHdoZW4KCWZsYWdfZW1pdF94cmVmIGlzIHNldC4KCShyZXNvbHZlX2ZpZWxkX2FjY2Vzcyk6IE5vIHNwZWNpYWwgdHJlYXRtZW50IG9uIGBsZW5ndGgnIHdoZW4KCWZsYWdfZW1pdF94cmVmIGlzIHNldC4gRG8gbm90IGJ1aWxkIHF1YWxpZmllZCBzdGF0aWMgZmllbGQgYWNjZXNzCgl3aGVuIGZsYWdfZW1pdF94cmVmIGlzIHNldC4KCShwYXRjaF9pbnZva2UpOiBLZWVwIHRoZSBtZXRob2QgREVDTCBhcyBvcGVyYW5kIDAgb2YgdGhlIENBTExfRVhQUgoJd2hlbiBmbGFnX2VtaXRfeHJlZiBpcyBzZXQuCgkocGF0Y2hfYXNzaWdubWVudCk6IERvIG5vdCBnZW5lcmF0ZSBhcnJheSBzdG9yZSBydW50aW1lIGNoZWNrIHdoZW4KCWZsYWdfZW1pdF94cmVmIGlzIHNldC4KCSogeHJlZi5jICh4cmVmX2ZsYWdfdmFsdWUpOiBGaXhlZCBmdW5jdGlvbiBkZWNsYXJhdGlvbgoJaW5kZW50YXRpb24uCgkoeHNldF9zZXRfZGF0YSk6IE5ldyBmdW5jdGlvbi4KCSogeHJlZi5oICh4cmVmX3NldF9kYXRhKTogQWRkZWQgcHJvdG90eXBlIGZvciBuZXcgZnVuY3Rpb24uCgkodHlwZWRlZiBzdHJ1Y3QgeHJlZl9mbGFnX3RhYmxlKTogTmV3IGZpZWxkIGRhdGEuCgkoWFJFRl9HRVRfREFUQSk6IE5ldyBtYWNyby4KCjE5OTktMDQtMTkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHhyZWYuaCAoZW51bSk6IFJlbW92ZWQgdHJhaWxpbmcgY29tbWEuCgoJKiBwYXJzZS55IChyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBBZGRlZCBtaXNzaW5nCglgYnJlYWsnLgoKMTk5OS0wNC0xNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBnamF2YWguYzogTmV3IHByb3RvdHlwZXMgZm9yIGphdmFfZmxvYXRfZmluaXRlIGFuZAoJamF2YV9kb3VibGVfZmluaXRlLgoKMTk5OS0wNC0xMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChwYXRjaF91bmFyeW9wKTogRml4ZWQgKysvLS0gb3BlcmF0b3IgY2hlY2sgb24gYXJyYXkKCXJlZmVyZW5jZXMuCgoxOTk5LTA0LTA2ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoVFJFRV9IKTogQWRkIHRyZWUtY2hlY2suaC4KCShSVExfSCk6IEFkZCBnZW5ydGwuaC4KCjE5OTktMDQtMDYgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfYXNzaWdubWVudCk6IEFkZGVkIEFycmF5U3RvcmVFeGNlcHRpb24gcnVudGltZQoJY2hlY2suCgoxOTk5LTA0LTA2ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAocG9wX3R5cGVfMCk6ICBOZXcgZnVuY3Rpb24uCgkocG9wX3R5cGUpOiAgVXNlIHBvcF90eXBlXzAuCgkqIGphdmEtdHJlZS5oIChwb3BfdHlwZV8wKTogIE5ldyBkZWNsYXJhdGlvbi4KCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIENoZWNrIHJldHVybiBpbnN0cnVjdGlvbnMuCgoJKiBwYXJzZS55IChwYXRjaF9iaW5vcCk6ICBEb24ndCBmb2xkIGlmIG5vbi1jb25zdGFudCBhbmQgZW1pdGluZwoJY2xhc3MgZmlsZXMuCgoxOTk5LTA0LTA1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoZ2phdmFoLm8pOiBEZXBlbmQgb24gJChKQVZBX1RSRUVfSCkuCgoJKiBnamF2YWguYzogSW5jbHVkZSBtYXRoLmggZWFybGllci4gIEluY2x1ZGUgdHJlZS5oL2phdmEtdHJlZS5oLgoJKG1haW5famNmKTogRG9uJ3QgZGVmaW5lLgoJKHByb2Nlc3NfZmlsZSk6IERvbid0IHNldCBgbWFpbl9qY2YnLgoKCSogamF2YS10cmVlLmggKG1haW5famNmKTogRG9uJ3QgZGVjbGFyZS4KCgkqIGpjZi1wYXJzZS5jIChtYWluX2pjZik6IEFkZCBzdGF0aWMgZGVmaW5pdGlvbi4KCgkqIGxhbmcuYyAobWFpbl9qY2YpOiBEb24ndCBkZWZpbmUuCgoxOTk5LTA0LTA1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kXzEpOiBDYXN0IHRoZSBhcmd1bWVudCBvZiBgYnplcm8nIHRvIFBUUi4KCgkqIGRlY2wuYyAoY29weV9sYW5nX2RlY2wpOiBMaWtld2lzZSBmb3IgYGJjb3B5Jy4KCgkqIGpjZi1kZXBlbmQuYzogSW5jbHVkZSAiY29uZmlnLmgiLCBub3QgPGNvbmZpZy5oPi4KCgkqIGpjZi1wYXJzZS5jIChqY2ZfZmlndXJlX2ZpbGVfdHlwZSk6IENhc3QgdGhlIGFyZ3VtZW50cyBvZgoJYGJjb3B5JyB0byBQVFIuCgoJKiBqY2YtcGF0aC5jOiBJbmNsdWRlICJjb25maWcuaCIsIG5vdCA8Y29uZmlnLmg+LgoKCSogbGV4LmM6IERvbid0IGluY2x1ZGUgdmFyaW91cyBzeXN0ZW0gaGVhZGVyIGZpbGVzLgoJKGphdmFfaW5pdF9sZXgpOiBDYXN0IHRoZSBhcmd1bWVudCBvZiBgYnplcm8nIHRvIFBUUgoKCSogcGFyc2Utc2Nhbi55IChqYXZhX3B1c2hfcGFyc2VyX2NvbnRleHQpOiBMaWtld2lzZS4KCgkqIHBhcnNlLnkgKGphdmFfcHVzaF9wYXJzZXJfY29udGV4dCk6IExpa2V3aXNlLgoJKHBhdGNoX2JjX3N0YXRlbWVudCk6IE1hdGNoIGZvcm1hdCBzcGVjaWZpZXIgdG8gdmFyaWFibGUgYXJndW1lbnQuCgoJKiB4cmVmLmM6IERvbid0IGluY2x1ZGUgPHN0ZGlvLmg+LgoKMTk5OS0wNC0wNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChzdHJ1Y3QgcGFyc2VyX2N0eHQgKmN0eHApOiBOb3cgZ2xvYmFsLgoJKGRlY2xhcmVfbG9jYWxfdmFyaWFibGVzKTogVXNlIFdGTCBjb21wb3VuZCB2YWx1ZSBmb3IgdGhlCglkZWNsYXJhdGlvbiBzb3VyY2UgbGluZSB2YWx1ZSwgd2hlbiBkb2luZyBjcm9zcy1yZWZlcmVuY2luZy4KCjE5OTktMDMtMzEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChwcmludF9maWVsZF9pbmZvKTogQWxsb3cgY29uc3RhbnRzIG9mIG90aGVyIHR5cGVzLgoJKHByaW50X2luY2x1ZGUpOiBHZW5lcmF0ZSBpbmNsdWRlIHdoZW4gbmV3IG5hbWUgaXMgcHJvcGVyIHByZWZpeAoJb2YgYWxyZWFkeSBwcmludGVkIG5hbWUuCgkoYWRkX25hbWVsZXQpOiBMaWtld2lzZS4KCShjeHhfa2V5d29yZF9zdWJzdCk6IE5ldyBmdW5jdGlvbi4KCShwcmludF9tZXRob2RfaW5mbyk6IFVzZSBpdC4KCShwcmludF9maWVsZF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKGdldF9maWVsZF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X2ZpZWxkX2luZm8pOiBVc2UgZ2V0X2ZpZWxkX25hbWUgYW5kIHByaW50X2ZpZWxkX25hbWUuCgoxOTk5LTAzLTMxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoa2V5d29yZC5oKTogR2VuZXJhdGUgdXNpbmcgZ3BlcmYgbGFuZ3VhZ2UgJ0MnLCBub3QKCSdLUi1DJywgc28gZ3BlcmYgdXNlcyB0aGUgYGNvbnN0JyBrZXl3b3JkIG9uIHN0cmluZ3MuCgoJKiBrZXl3b3JkLmdwZXJmIChqYXZhX2tleXdvcmQpOiBDb25zdC1pZnkgYSBjaGFyKi4KCjE5OTktMDMtMzAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfYmNfc3RhdGVtZW50KTogRml4ZWQgaWRlbnRhdGlvbiBhbmQgYSBib2d1cwoJYHByaW50ZicgZm9ybWF0LgoKMTk5OS0wMy0zMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9hc3NpZ25tZW50KTogQWxsb3cgc3RhdGljIHZhcmlhYmxlcyBpbiBvdGhlcgoJY2xhc3NlcyB0byBiZSBhc3NpZ25lZC4KCjE5OTktMDMtMjggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNsYXNzLmMgKG1heWJlX2FkZF9pbnRlcmZhY2UpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgaW50ZXJmYWNlX2JpbmZvJy4KCShtYWtlX2NsYXNzX2RhdGEpOiBVc2UgPSBmb3IgYXNzaWdubWVudCwgbm90ID09LiAgTGlrZXdpc2UuCgkoZW1pdF9yZWdpc3Rlcl9jbGFzc2VzKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgZGVjbCcuCgoJKiBsZXguYzogRml4IGNvbW1lbnQgc28gYXMgbm90IHRvIGNvbnRhaW4gYW4gZW1iZWRkZWQgYC8qJy4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCWBzZWxmX3R5cGUnLgoKMTk5OS0wMy0yNyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChjb21wbGV0ZV9sb29wX2JvZHkpOiAgUmVuYW1lIHRvIGZpbmlzaF9sb29wX2JvZHkuCgkoY29tcGxldGVfbGFiZWxlZF9zdGF0ZW1lbnQpOiAgUmVuYW1lIHRvIGZpbmlzaF9sYWJlbGVkX3N0YXRlbWVudC4KCShjb21wbGV0ZV9mb3JfbG9vcCk6ICBSZW5hbWUgdG8gZmluaXNoX2Zvcl9sb29wLgoJKGNvbXBsZXRlX21ldGhvZF9kZWNsYXJhdGlvbik6ICBSZW5hbWUgdG8gZmluaXNoX21ldGhvZF9kZWNsYXJhdGlvbi4KCgkqIGphdmEtdHJlZS5oIChjb250aW51ZV9pZGVudGlmaWVyX25vZGUpOiAgTmV3IGdsb2JhbCBub2RlLgoJKiBkZWNsLmM6ICBEZWZpbmUgYW5kIGluaXRpYWxpemUgY29udGludWVfaWRlbnRpZmllcl9ub2RlLgoJKiBwYXJzZS55IChnZW5lcmF0ZV9sYWJlbGVkX2Jsb2NrKTogIFJlbW92ZSAtIG5vIGxvbmdlciBuZWVkZWQuCgkoYnVpbGRfbG9vcF9ib2R5KTogIFVzZSBjb250aW51ZV9pZGVudGlmaWVyX25vZGUgZm9yIGNvbnRpbnVlIGJsb2NrLgoJKGZpbmlzaF9sYWJlbGVkX3N0YXRlbWVudCk6ICBBbHNvIGRvIHBvcF9sYWJlbGVkX2Jsb2NrIGFjdGlvbnMuCgkoamF2YV9jb21wbGV0ZV9saHMpOiAgUE9QX0xPT1AgZXZlbiBpZiBlcnJvci4KCShidWlsZF9sYWJlbGVkX2Jsb2NrKTogIFNwZWNpYWwgaGFuZGxpbmcgZm9yIGNvbnRpbnVlX2lkZW50aWZpZXJfbm9kZS4KCShwYXRjaF9sb29wX3N0YXRlbWVudCk6ICBSZS1vcmdhbml6ZS4KCShwYXRjaF9iY19zdGF0ZW1lbnQpOiAgUmUtd3JpdGUuCgoxOTk5LTAzLTI3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLmggKEVYUFJfV0ZMX0dFVF9MSU5FQ09MKTogU2V0IGEgbGluZSBhbmQgY29sdW1uIGNvdW50Cgl1c2luZyBhIFdGTCBjb21wb3VuZCB2YWx1ZS4KCSogcGFyc2UueSAoeHJlZi5oKTogSW5jbHVkZS4KCShtYXliZV9jcmVhdGVfY2xhc3NfaW50ZXJmYWNlX2RlY2wpOiBTZXQgREVDTF9TT1VSQ0VfTElORSB0byB0aGUKCVdGTCBjb21wb3VuZCB2YWx1ZS4KCShyZWdpc3Rlcl9maWVsZHMpOiBTZXQgV0ZMIGNvbXBvdW5kIHZhbHVlIHRvIGxpbmVubyBpZiBkb2luZwoJeHJlZnMuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kKTogQ2FsbCBleHBhbmRfeHJlZiBpZiBmbGFnX2VtaXRfeHJlZgoJaXMgc2V0LgoJKiB4cmVmLmMgKHN5c3RlbS5oLCBqY2YuaCwgcGFyc2UuaCwgb2JzdGFjay5oKTogSW5jbHVkZS4KCSogeHJlZi5oIChleHBhbmRfeHJlZik6IFByb3RvdHlwZSByZW5hbWVkIGZyb20geHJlZl9nZW5lcmF0ZS4KCjE5OTktMDMtMjcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UuaCAoQkxPQ0tfQ0hBSU5fREVDTCk6IE5ldyB1c2UgR0VUX0NVUlJFTlRfQkxPQ0suCgkoR0VUX0NVUlJFTlRfQkxPQ0spOiBOZXcgbWFjcm8uCgkqIHBhcnNlLnkgKGN1cnJlbnRfc3RhdGljX2Jsb2NrKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShtZXRob2RfYm9keTopOiBEZWZpbmUgYWN0aW9uLgoJKGNvbXBsZXRlX21ldGhvZF9kZWNsYXJhdGlvbik6IFNldCBjdXJyZW50X2Z1bmN0aW9uX2RlY2wgdG8gTlVMTAoJd2hlbiB3b3JrIG9uIHRoZSBjdXJyZW50IG1ldGhvZCBpcyBkb25lLgoJKGRlY2xhcmVfbG9jYWxfdmFyaWFibGVzKTogVXNlIEdFVF9DVVJSRU5UX0JMT0NLLgoJKGphdmFfbWV0aG9kX2FkZF9zdG10KTogTGlrZXdpc2UuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kKTogRGlzYWJsZSB0aGUgdXNlIG9mIGB0aGlzJyB3aGVuCglleHBhbmRpbmcgPGNsaW5pdD4uCgkoZW50ZXJfYV9ibG9jayk6IElmIG5vIGN1cnJlbnQgbWV0aG9kIGV4aXN0LCB1c2UKCWN1cnJlbnRfc3RhdGljX2Jsb2NrIHRvIGxpbmsgc3RhdGljIGluaXRpYWxpemVyIGJsb2Nrcy4KCShleGl0X2Jsb2NrKTogUmV3cml0dGVuIHRvIHVzZSBjdXJyZW50X3N0YXRpY19ibG9jayB3aGVuIG5vIGN1cnJlbnQKCW1ldGhvZCBkZWNsIGV4aXN0cy4KCShsb29rdXBfbmFtZV9pbl9ibG9ja3MpOiBVc2UgR0VUX0NVUlJFTlRfQkxPQ0suCgkocGF0Y2hfcmV0dXJuKTogRm9yYmlkIHRoZSB1c2Ugb2YgYHJldHVybicgaW4gc3RhdGljIGluaXRpYWxpemVycy4KCShwYXRjaF90aHJvd19zdGF0ZW1lbnQpOiBGaXhlZCBpbmRlbnRhdGlvbi4gSXNzdWUgc3BlY2lmaWMgZXJyb3IKCWZvciB1bmNhdWdodCB0aHJvd24gY2hlY2tlZCBleGNlcHRpb24gaW4gc3RhdGljIGluaXRpYWxpemVyCglibG9ja3MuIFJlbW92ZWQgRklYTUUuCgoxOTk5LTAzLTI1ICBaYWNrIFdlaW5iZXJnICA8emFja0ByYWJpLmNvbHVtYmlhLmVkdT4KCgkqIGphdmEvTWFrZS1sYW5nLmluOiBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gZ2NqLm8vZ2NqLmMuCglMaW5rIGdjaiBmcm9tIGdjYy5vLgoKMTk5OS0wMy0yMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBXaGVuIGRlYWxpbmcKCXdpdGggaW50ZXJmYWNlOiBlbnN1cmUgdGhhdCBhIGdpdmVuIGludGVyZmFjZSBvciBqYXZhLmxhbmcuT2JqZWN0CglhcmUgc2VhcmNoZWQgb25seSBvbmNlLgoKMTk5OS0wMy0yMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2phdmFoLmMgKHByaW50X2NfZGVjbCk6IFJlbW92ZSB1bnVzZWQgYXJndW1lbnQgYGZsYWdzJy4KCgkqIGpjZi1kdW1wLmMgKHByaW50X2FjY2Vzc19mbGFncyk6IEFkZCBicmFjZXMgYXJvdW5kIGlmLWVsc2UuCgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBXcmFwIHZhcmlhYmxlIGBsZW4nIGluIG1hY3JvCglDT01CSU5FX0lOUFVUUy4KCgkqIGxleC5jIChidWlsZF93Zmxfbm9kZSk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoKCSogbGV4LmggKGJ1aWxkX3dmbF9ub2RlKTogUmVtb3ZlIHN0YXRpYyBwcm90b3R5cGUuCgoJKiBwYXJzZS55OiBJbmNsdWRlIGxleC5jIGVhcmx5IGVub3VnaCB0byBkZWNsYXJlIGV2ZXJ5dGhpbmcgbmVlZGVkLgoJRW5zdXJlIGNhbGxzIHRvIGBidWlsZF93Zmxfbm9kZScgcGFzcyB0aGUgcHJvcGVyIGFyZ3VtZW50cy4KCShjcmVhdGVfY2xhc3MpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBzdXBlcl9kZWNsJy4KCShnZXRfcHJpbnRhYmxlX21ldGhvZF9uYW1lKTogSW5pdGlhbGl6ZSB2YXJpYWJsZSBgbmFtZScuCgoxOTk5LTAzLTIyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIENoYW5nZWxvZzogRml4ZWQgMTk5OS0wMy0yMiB0eXBvcy4KCSogbGFuZy5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBGaXhlZCB0eXBvIGluIGVycm9yIHN0cmluZyBpbiB0aGUKCVhBUkcgc2VjdGlvbi4KCjE5OTktMDMtMjIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKEpBVkFfT0JKUyk6IEFkZGVkIGVudHJ5IHhyZWYuby4KCSh4cmVmLm8pOiBOZXcgcnVsZS4KCSogamF2YS10cmVlLmggKGZsYWdfZW1pdF94cmVmKTogRGVjbGFyZWQgZXh0ZXJuLgoJKiBsYW5nLmMgKHhyZWYuaCk6IEluY2x1ZGVkLgoJKGZsYWdfZW1pdF94cmVmKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBBZGRlZCBzdXBwb3J0IGZvciAtZnhyZWYuCgkqIHhyZWYuYzogQ3JlYXRlZC4KCSogeHJlZi5oOiBMaWtld2lzZS4KCjE5OTktMDMtMjEgIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIE1ha2UtbGFuZy5pbiAoJChHQ0opJChleGVleHQpKTogQWRkIGludGwubyB0byBsaXN0IG9mIGZpbGVzIHRvIGJlCglsaW5rZWQgd2l0aC4KCjE5OTktMDMtMjEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChqY2YtZHVtcC5vKTogRGVwZW5kIG9uICQoQ09ORklHX0gpCgkkKHNyY2RpcikvLi4vc3lzdGVtLmggYW5kICQoSkFWQV9UUkVFX0gpLgoJKGpjZi1pby5vKTogRGVwZW5kIG9uICQoSkFWQV9UUkVFX0gpLgoJKG1hbmdsZS5vKTogTGlrZXdpc2UuCgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2NvbmRfaW5pdCk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoKCSogY2xhc3MuYyAoYnVpbGRfamF2YV9tZXRob2RfdHlwZSwgaGFzaFV0ZjhTdHJpbmcsCgltYWtlX2ZpZWxkX3ZhbHVlLCBnZXRfZGlzcGF0Y2hfdmVjdG9yLCBnZXRfZGlzcGF0Y2hfdGFibGUsCglhcHBlbmRfZ3BwX21hbmdsZWRfdHlwZSwgbWFuZ2xlX3N0YXRpY19maWVsZCk6IExpa2V3aXNlLgoJKHN0ckxlbmd0aFV0ZjgpOiBIaWRlIHVudXNlZCBkZWZpbml0aW9uLgoJKGhhc2hVdGY4U3RyaW5nKTogQ29uc3QtaWZ5LgoJKG1ha2VfZmllbGRfdmFsdWUpOiBVbi1BTlNJLWZ5LgoKCSogY29uc3RhbnRzLmM6IE1vdmUgaW5jbHVzaW9uIG9mIGpjZi5oIGFib3ZlIGphdmEtdHJlZS5oLgoJKHNldF9jb25zdGFudF9lbnRyeSwgZmluZF9jbGFzc19vcl9zdHJpbmdfY29uc3RhbnQsCglmaW5kX25hbWVfYW5kX3R5cGVfY29uc3RhbnQsIGdldF90YWdfbm9kZSwKCWJ1aWxkX2NvbnN0YW50X2RhdGFfcmVmKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgoJKiBkZWNsLmMgKHB1c2hfanZtX3Nsb3QsIGJ1aWx0aW5fZnVuY3Rpb24sCglsb29rdXBfbmFtZV9jdXJyZW50X2xldmVsKTogTGlrZXdpc2UuCgkoYnVpbHRpbl9mdW5jdGlvbik6IENvbnN0LWlmeS4KCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfamF2YV9oYW5kbGVyLCBleHBhbmRfZW5kX2phdmFfaGFuZGxlcik6CglBZGQgc3RhdGljIHByb3RvdHlwZS4KCgkqIGV4cHIuYyAoZmx1c2hfcXVpY2tfc3RhY2ssIHB1c2hfdmFsdWUsIHBvcF92YWx1ZSwKCWphdmFfc3RhY2tfc3dhcCwgamF2YV9zdGFja19kdXAsIGJ1aWxkX2phdmFfYXRocm93LAoJYnVpbGRfamF2YV9qc3IsIGJ1aWxkX2phdmFfcmV0LCBleHBhbmRfamF2YV9tdWx0aWFuZXdhcnJheSwKCWV4cGFuZF9qYXZhX2FycmF5c3RvcmUsIGV4cGFuZF9qYXZhX2FycmF5bG9hZCwKCWV4cGFuZF9qYXZhX2FycmF5X2xlbmd0aCwgYnVpbGRfamF2YV9tb25pdG9yLCBleHBhbmRfamF2YV9wdXNoYywKCWV4cGFuZF9qYXZhX3JldHVybiwgZXhwYW5kX2phdmFfTkVXLCBleHBhbmRfamF2YV9JTlNUQU5DRU9GLAoJZXhwYW5kX2phdmFfQ0hFQ0tDQVNULCBleHBhbmRfaWluYywgZXhwYW5kX2phdmFfYmlub3AsIG5vdGVfbGFiZWwsCglleHBhbmRfY29tcGFyZSwgZXhwYW5kX3Rlc3QsIGV4cGFuZF9jb25kLCBleHBhbmRfamF2YV9nb3RvLAoJZXhwYW5kX2phdmFfY2FsbCwgZXhwYW5kX2phdmFfcmV0LCBwb3BfYXJndW1lbnRzLCBleHBhbmRfaW52b2tlLAoJZXhwYW5kX2phdmFfZmllbGRfb3AsIGphdmFfcHVzaF9jb25zdGFudF9mcm9tX3Bvb2wpOiBMaWtld2lzZS4KCgkoZGVjb2RlX25ld2FycmF5X3R5cGUsIGV4cGFuZF9paW5jKTogVW4tQU5TSS1meS4KCShidWlsZF9qYXZhX2FycmF5bnVsbF9jaGVjayk6IE1hcmsgcGFyYW1ldGVycyBgbm9kZScgYW5kIGB0eXBlJwoJd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoJKG5vdGVfbGFiZWwpOiBMaWtld2lzZSBmb3IgcGFyYW1ldGVyIGBjdXJyZW50X3BjJy4KCShleHBhbmRfamF2YV9jYWxsLCBleHBhbmRfamF2YV9yZXQpOiBIaWRlIHVudXNlZCBkZWZpbml0aW9uLgoKCSogamF2YS10cmVlLmggKG1ha2VfY2xhc3MsIGJ1aWxkX2NvbnN0YW50c19jb25zdHJ1Y3RvciwKCWphdmFfc2V0X2V4Y2VwdGlvbl9sYW5nX2NvZGUsIHBvcF9sYWJlbGVkX2Jsb2NrLCBlbWl0X2hhbmRsZXJzLAoJaW5pdF9vdXRnb2luZ19jcG9vbCwgcmVnaXN0ZXJfY2xhc3MsIGVtaXRfcmVnaXN0ZXJfY2xhc3NlcywKCWphdmFfbGF5b3V0X3NlZW5fY2xhc3NfbWV0aG9kcyk6IFByb3RvdHlwZS4KCSh1bmljb2RlX21hbmdsaW5nX2xlbmd0aCk6IENvbnN0LWlmeS4KCShhcHBlbmRfZ3BwX21hbmdsZWRfbmFtZSwgYXBwZW5kX2dwcF9tYW5nbGVkX2NsYXNzdHlwZSwKCWVtaXRfdW5pY29kZV9tYW5nbGVkX25hbWUsIGZvcm1hdF9pbnQsIGZvcm1hdF91aW50LAoJamNmX3RyaW1fb2xkX2lucHV0LCBqY2ZfcHJpbnRfdXRmOCwgamNmX3ByaW50X2NoYXIsCglqY2ZfcHJpbnRfdXRmOF9yZXBsYWNlLCBvcGVuX2NsYXNzKTogUHJvdG90eXBlLgoKCSogamNmLWR1bXAuYzogSW5jbHVkZSAiY29uZmlnLmgiLCBub3QgPGNvbmZpZy5oPi4gIERvbid0IGluY2x1ZGUKCTxzdGRpby5oPi4gIEluY2x1ZGUgdHJlZS5oL2phdmEtdHJlZS5oLgoJKHV0ZjhfZXF1YWxfc3RyaW5nIHVzYWdlLCBwcm9jZXNzX2NsYXNzKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgkob3Blbl9jbGFzcyk6IERvbid0IHByb3RvdHlwZSB0aGlzIGhlcmUuCgkodXRmOF9lcXVhbF9zdHJpbmcpOiBNYXRjaCBhcmd1bWVudHMgdG8gZm9ybWF0IHNwZWNpZmllcnMuCgkoSEFORExFX0NPREVfQVRUUklCVVRFLCBCUkFOQ0gsIEpTUiwgUkVULCBMT09LVVBfU1dJVENILAoJVEFCTEVfU1dJVENILCBkaXNhc3NlbWJsZV9tZXRob2QpOiBMaWtld2lzZS4KCgkqIGpjZi1pby5jOiBJbmNsdWRlIHRyZWUuaC9qYXZhLXRyZWUuaC4KCShvcGVuX2NsYXNzLCBmaW5kX2NsYXNzZmlsZSwgamNmX3ByaW50X3V0ZjgsCglqY2ZfcHJpbnRfdXRmOF9yZXBsYWNlKTogQ29uc3QtaWZ5LgoKCSogamNmLXBhcnNlLmMgKHBhcnNlX3ppcF9maWxlX2VudHJpZXMsIHByb2Nlc3NfemlwX2RpciwKCXBhcnNlX2NsYXNzX2ZpbGUpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCShmaW5kX2luX2N1cnJlbnRfemlwKTogTWF0Y2ggZGVmaW5pdGlvbiB0byBleGlzdGluZyBzdGF0aWMKCXByb3RvdHlwZS4KCgkqIGpjZi13cml0ZS5jOiBJbmNsdWRlIGpjZi5oIGJlZm9yZSB0cmVlLmgvamF2YS10cmVlLmguCgkoYWxsb2NfY2h1bmssIGFwcGVuZF9jaHVuaywgYXBwZW5kX2NodW5rX2NvcHksIGdlbl9qY2ZfbGFiZWwsCglmaW5pc2hfamNmX2Jsb2NrLCBkZWZpbmVfamNmX2xhYmVsLCBnZXRfamNmX2xhYmVsX2hlcmUsCglwdXRfbGluZW51bWJlciwgbG9jYWx2YXJfYWxsb2MsIGxvY2FsdmFyX2ZyZWUsIGdldF9hY2Nlc3NfZmxhZ3MsCgl3cml0ZV9jaHVua3MsIGFkanVzdF90eXBlZF9vcCwgZ2VuZXJhdGVfYnl0ZWNvZGVfY29uZGl0aW9uYWwsCglnZW5lcmF0ZV9ieXRlY29kZV9yZXR1cm4sIHBlcmZvcm1fcmVsb2NhdGlvbnMsIGluaXRfamNmX3N0YXRlLAoJaW5pdF9qY2ZfbWV0aG9kLCByZWxlYXNlX2pjZl9zdGF0ZSwgZ2VuZXJhdGVfY2xhc3NmaWxlKToKCUFkZCBzdGF0aWMgcHJvdG90eXBlLgoJKGVtaXRfdW5vcCk6IE1hcmsgcGFyYW1ldGVyIGB0eXBlJyB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgkobWFrZV9jbGFzc19maWxlX25hbWUpOiBDb25zdC1pZnkuCgoJKiBqY2YuaCAoZmluZF9jbGFzc2ZpbGUpOiBDb25zdC1pZnkuCgoJKiBqdi1zY2FuLmMgKHJlc2V0X3JlcG9ydCk6IFJlbW92ZSBwcm90b3R5cGUuCgoJKiBqdmdlbm1haW4uYzogSW5jbHVkZSBqY2YuaC90cmVlLmgvamF2YS10cmVlLmguCgkoZXJyb3IpOiBSZXdyaXRlIHRvIGFsbG93IHZhcmFyZ3MuCgoJKiBsYW5nLmMgKGxhbmdfZl9vcHRpb25zKTogQ29uc3QtaWZ5LgoKCSogbGV4LmMgKGphdmFfcGFyc2VfZXNjYXBlX3NlcXVlbmNlKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgkoamF2YV9hbGxvY2F0ZV9uZXdfbGluZSk6IE1hdGNoIGRlZmluaXRpb24gdG8gZXhpc3Rpbmcgc3RhdGljCglwcm90b3R5cGUuCgoJKiBtYW5nbGUuYyBJbmNsdWRlIHRyZWUuaC9qYXZhLXRyZWUuaC4KCSh1bmljb2RlX21hbmdsaW5nX2xlbmd0aCwgZW1pdF91bmljb2RlX21hbmdsZWRfbmFtZSwKCWFwcGVuZF9ncHBfbWFuZ2xlZF9uYW1lLCBhcHBlbmRfZ3BwX21hbmdsZWRfY2xhc3N0eXBlKTogQ29uc3QtaWZ5LgoKCSogcGFyc2UuaCAoamRlcF9jb2RlKTogUmVtb3ZlIHRyYWlsaW5nIGNvbW1hIGluIGVudW1lcmF0aW9uLgoJKGphdmFfZ2V0X2xpbmVfY29sKTogTW92ZSBwcm90b3R5cGUgb3V0c2lkZSBvZiAhSkMxX0xJVEUgdGVzdC4KCShyZXNldF9yZXBvcnQpOiBBZGQgcHJvdG90eXBlLgoKCSogdmVyaWZ5LmMgKHB1c2hfcGVuZGluZ19sYWJlbCwgbWVyZ2VfdHlwZXMpOiBBZGQgc3RhdGljCglwcm90b3R5cGVzLgoKCSogemlwZmlsZS5oIChvcGVuZGlyX2luX3ppcCwgb3Blbl9pbl96aXApOiBQcm90b3R5cGUuCgoxOTk5LTAzLTE5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6IEV4dGVuZCB0aGUKCXNlYXJjaCB0byBzdXBlcmludGVyZmFjZXMgd2hlbiByZWxldmFudC4KCShzZWFyY2hfYXBwbGljYWJsZV9tZXRob2RzX2xpc3QpOiBOZXcgZnVuY3Rpb24uCgoxOTk5LTAzLTE4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKHVubWFuZ2xlX2NsYXNzbmFtZSk6IEltcGxlbWVudGVkIHN0cmljdGVyIHRlc3RpbmcKCWJlZm9yZSBzZXR0aW5nIHRoZSBRVUFMSUZJRURfUCBmbGFnIG9uIGFuIGlkZW50aWZpZXIuCgoxOTk5LTAzLTE2ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogIENhbGwgZm9yY2VfZXZhbHVhdGlvbl9vcmRlcgoJYWZ0ZXIgcGF0Y2hfbmV3YXJyYXkuCgkocGF0Y2hfYmlub3ApOiAgRG9uJ3QgY2FsbCBmb2xkIGlmIHRoZXJlIGFyZSBzaWRlIGVmZmVjdHMuCgoxOTk5LTAzLTE2ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfc3RhYmlsaXplX3JlZmVyZW5jZSk6IFVzZSBzYXZlX2V4cHIgaW5zdGVhZCBvZgoJYnVpbGRpbmcgYSBTQVZFX0VYUFIgbm9kZS4KCShqYXZhX2NvbXBsZXRlX2xocyk6IFBhdGNoIHRoZSByZXN1bHRpbmcgc3RyaW5nIG9mIHRoZSBgKz0nCglvcGVyYXRvciAoaWYgbmVjZXNzYXJ5KSBhbmQgY29tcGxldGUgdGhlIFJIUyBhZnRlciBoYXZpbmcgYnVpbHQKCXRoZSBjYXN0LgoKMTk5OS0wMy0xNSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzKTogIERvbid0IHNldCBDTEFTU19QIGhlcmUgKGJlY2F1c2UKCXRoaXMgZnVuY3Rpb24gaXMgYWxzbyBjYWxsZWQgYnkgYnVpbGRfamF2YV9hcnJheV90eXBlKS4KCShwdXNoX2NsYXNzKTogIFNldCBDTEFTU19QIGhlcmUgaW5zdGVhZC4KCSogcGFyc2UuaCAoVFlQRV9DTEFTU19QKTogIENoZWNrIGZvciBUWVBFX0FSUkFZX1AgaXMgcmVkdW5kYW50LgoKCSogamNmLWR1bXAuYyAocHJpbnRfYWNjZXNzX2ZsYWdzKTogIFRha2UgZXh0cmEgcGFyYW1ldGVyIHRvIGluZGljYXRlCgljb250ZXh0LiAgSWYgdGhlIGNvbnRleHQgaXMgY2xhc3MsIHBlcmZlciAic3VwZXIiIG92ZXIgInN5bmNocm9uaXplZCIuCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9jbGFzc2ZpbGUpOiAgRG9uJ3QgYWRkIEFDQ19TVVBFUiBpZiBpbnRlcmZhY2UuCgoJKiBwYXJzZS55IChjcmVhdGVfY2xhc3MpOiAgRG9uJ3QgY2FsbCBwYXJzZXJfY2hlY2tfc3VwZXIgaGVyZTsKCWl0IGlzIG5vdCByb2J1c3QuICBBbHdheXMgd2FpdCB1bnRpbCBsYXRlci4KCgkqIHBhcnNlLnkgKG1ldGhvZF9oZWFkZXIpOiAgRm9yIGludGVyZmFjZXMsIHNldCBBQ0NfQUJTVFJBQ1QgKHRvCgltYXRjaCB3aGF0IEpESyAxLjIgZG9lcyksIGJ1dCBkb24ndCBzZXQgQUNDX1BVQkxJQy4KCjE5OTktMDMtMTMgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogbGV4LmMgKGphdmFfcmVhZF9jaGFyKTogIFVOR0VUIGludmFsaWQgbm9uLWluaXRpYWwgdXRmOCBjaGFyYWN0ZXIuCgkqIGxleC5oIChVTkdFVEMpOiAgQ2hhbmdlIG1pc2xlYWRpbmcgbWFjcm8uCgoxOTk5LTAzLTEyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfc3RhYmlsaXplX3JlZmVyZW5jZSk6IFJldHVybiBOT0RFIHdoZW4gcGF0Y2hpbmcgYQoJQ09NUE9VTkRfRVhQUi4KCShqYXZhX2NvbXBsZXRlX2xocyk6IFB1dCBwYXJlbnRoZXNpcyBhcm91bmQgdHJ1dGggdmFsdWVzLgoKMTk5OS0wMy0xMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3NfbWV0aG9kKTogRG9uJ3QgbWFrZSBydGwgZm9yIGludGVyZmFjZQoJbWV0aG9kcy4KCSogcGFyc2UuaCAoR0VUX1RZUEVfTkFNRSk6IE5ldyBtYWNyby4KCSogcGFyc2UueSAoaWZfdGhlbl9zdGF0ZW1lbnQ6KTogRml4ZWQgaW5kZW50YXRpb24uCgkoaWZfdGhlbl9lbHNlX3N0YXRlbWVudDopOiBMaWtld2lzZS4KCShmb3Jfc3RhdGVtZW50Oik6IEZpeGVkIHNwYWNpbmcuCgkodHJ5X3N0YXRlbWVudDopOiBGaXhlZCBpbmRlbnRhdGlvbi4KCShjcmVhdGVfaW50ZXJmYWNlKTogRG9uJ3QgZm9yY2UgaW50ZXJmYWNlcyB0byBiZSBhYnN0cmFjdC4KCShtZXRob2RfaGVhZGVyKTogQWJzdHJhY3QgbWV0aG9kcyBhcmUgT0sgaW4gaW50ZXJmYWNlcy4KCShkZWNsYXJlX2xvY2FsX3ZhcmlhYmxlcyk6IEZpeGVkIHR5cG8gaW4gY29tbWVudC4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBGaXhlZCBpbmRlbnRhdGlvbi4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBVc2UgR0VUX1RZUEVfTkFNRSB0byByZXBvcnQKCW5vbiBhY2Nlc3NpYmxlIGZpZWxkcy4KCShqYXZhX3N0YWJpbGl6ZV9yZWZlcmVuY2UpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9jb21wbGV0ZV9saHMpOiBGaXhlZCBpbmRlbnRhdGlvbi4gVXNlCglqYXZhX3N0YWJpbGl6ZV9yZWZlcmVuY2UgaW4gY29tcG91bmQgYXNzaWdubWVudC4gSW5zZXJ0IHRoZQoJY2FzdC4gSWYgbm90IHByb2Nlc3NpbmcgYCsnIGZpeCBzdHJpbmcgY29uc3RhbnRzIGJlZm9yZSBwcm9jZXNzaW5nCgliaW5vcC4KCjE5OTktMDMtMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbnN0YW50cy5jIChmaW5kX2NsYXNzX29yX3N0cmluZ19jb25zdGFudCk6IENhc3QgdmFyaWFibGUgYGonCgl0byBhIGBqd29yZCcgd2hlbiBjb21wYXJpbmcgYWdhaW5zdCBvbmUuCgoJKiBleHByLmMgKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCglgaGFzX2ZpbmFsbHlfcCcgYW5kIGBvcDAnLgoKCSogZ2phdmFoLmMgKHByaW50X2ZpZWxkX2luZm8pOiBDYXN0IGEgdmFsdWUgdG8gamludCB3aGVuIGNvbXBhcmluZwoJYWdhaW5zdCBvbmUuICBMaWtld2lzZSBmb3IgYSBqbG9uZy4KCShhZGRfbmFtZWxldCk6IExpa2V3aXNlIGNhc3QgYSBgc2l6ZW9mJyB0byBhbiBpbnQgd2hlbiBjb21wYXJpbmcKCWFnYWluc3QgYSBzaWduZWQgcXVhbnRpdHkuCgoJKiBqY2YtZHVtcC5jIChwcmludF9zaWduYXR1cmVfdHlwZSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGRpZ2l0Jy4KCShwcmludF9zaWduYXR1cmUpOiBEb24ndCBuZWVkbGVzc2x5IGRlcmVmZXJlbmNlIHZhcmlhYmxlIGBzdHInCgoJKiBqY2YtcmVhZGVyLmMgKGdldF9hdHRyaWJ1dGUpOiBNYXJrIHZhcmlhYmxlcyBgbWF4X3N0YWNrJyBhbmQKCWBtYXhfbG9jYWxzJyB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgkoamNmX3BhcnNlX2NsYXNzKTogTGlrZXdpc2UgZm9yIHZhcmlhYmxlIGBpbmRleCcuCgoJKiBwYXJzZS5oIChyZXZlcnNlX2pkZXBfbGlzdCk6IFJlbW92ZSBzdGF0aWMgcHJvdG90eXBlLgoKCSogcGFyc2UueSAoYnVpbGRfanVtcF90b19maW5hbGx5KTogUmVtb3ZlIHByb3RvdHlwZSBhbmQgZGVmaW5pdGlvbi4KCShyZXZlcnNlX2pkZXBfbGlzdCk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfaWVlZV9yZWFsX3RvX2ludGVnZXIpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcwoJYGFzc2lnbm1lbnQnIGFuZCBgZXhwcl9kZWNsJy4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IFJlbW92ZSB1bnVzZWQgbGFiZWwgYGJhZF9sZGMnLgoKMTk5OS0wMy0xMiAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBqY2YtcGF0aC5jIChhZGRfZW50cnkpOiBhbGxvY2EgbGVuKzIgcmF0aGVyIHRoYW4gbGVuKzEgYnl0ZXM7Cgl3ZSdsbCBuZWVkIGEgZGlyZWN0b3J5IHNlcGFyYXRvciBhbmQgYSBudWxsIGNoYXJhY3Rlci4KCjE5OTktMDMtMTAgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogIEhhbmRsZSBfX2J1aWx0aW5fZm1vZCwgZm9yICUuCgpUdWUgTWFyICA5IDExOjUyOjA4IDE5OTkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAobWV0aG9kX2hlYWRlcik6IERvbid0IHNldCBBQ0NfQUJTVFJBQ1QgZmxhZ3Mgb24KCWludGVyZmFjZXMuCgoxOTk5LTAzLTA1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChqYXZhX3BhcnNlX2VuZF9jb21tZW50KTogIFRha2UgZXh0cmEgcGFyYW1ldGVyIChuZXh0IGNoYXIpLgoKCSogY2xhc3MuYyAoYnVpbGRfdXRmOF9yZWYpOiAgRml4IHBvc3NpYmxlIG5hbWUgY2xhc3MvYW1iaWd1aXR5LgoKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzX21ldGhvZCk6ICBBIHN0YXRpYyBtZXRob2QgaW4gYSBiYXNlIGNsYXNzCglpcyBuZXZlciBvdmVycmlkZGVuLCBzbyB0cmVhdCBpdCBsaWtlIGl0IGRvZXNuJ3QgZXhpc3QuCglIb3dldmVyLCBkbyBjb21wbGFpbiBhYm91dCBwcml2YXRlIG5vbi1zdGF0aWMgbWV0aG9kIG92ZXJyaWRpbmcKCXB1YmxpYyBzdGF0aWMgbWV0aG9kLgoKCSogcGFyc2UueTogIERvbid0IHNldCB1bnVzZWQgSU5JVElBTElaRURfUCBmbGFnLgoJKiBqYXZhLXRyZWUuaCAoSU5JVElBTElaRURfUCk6ICBSZW1vdmVkIG5vLWxvbmdlciBuZWVkZWQgZmxhZy4KCgkqIHBhcnNlLnkgKGZpbmRfZXhwcl93aXRoX3dmbCk6ICBPcHRpbWl6ZSB0YWlsLWNhbGxzLgoJKGJ1aWxkX2FycmF5X2Zyb21fbmFtZSk6ICBSZS1vcmRlciAmaW5kZXhbc3RyaW5nXSB0byAmc3RyaW5nW2luZGV4XS4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogIERvbid0IGNhbGwgcGF0Y2hfYXNzaWdubWVudCBpZiByaHMgaXMKCWVycm9yX21hcmsgKGl0IG1pZ2h0IGNhdGNoIG1vcmUgZXJyb3JzLCBidXQgaXQgaXMgbW9yZSBsaWtlbHkgdG8gbG9zZSkuCgoxOTk5LTAzLTA2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoamNmLXBhcnNlLm8pOiBEZXBlbmQgb24gJChQQVJTRV9IKS4KCShwYXJzZS1zY2FuLm8pOiBEZXBlbmQgb24gdG9wbGV2LmguCgoJKiBjbGFzcy5jIChtYWtlX21ldGhvZF92YWx1ZSk6IEFkZCBwcm90b3R5cGUuICBNYWtlIGl0IHN0YXRpYy4KCVJlbW92ZSB1bnVzZWQgc2Vjb25kIGFyZ3VtZW50LCBjYWxsZXIgY2hhbmdlZC4KCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQoJYHJldHVybl9sYWJlbCcuCgoJKiBqYXZhLXRyZWUuaDogRG9uJ3QgcHJvdG90eXBlIGZpbmRfaW5fY3VycmVudF96aXAuCglBZGQgcHJvdG90eXBlcyBmb3IgdmVyaWZ5X2NvbnN0YW50X3Bvb2wsIHN0YXJ0X2phdmFfbWV0aG9kLAoJZW5kX2phdmFfbWV0aG9kLCBnaXZlX25hbWVfdG9fbG9jYWxzLCBleHBhbmRfYnl0ZV9jb2RlLAoJb3Blbl9pbl96aXAsIHNldF9jb25zdGFudF92YWx1ZSwgZmluZF9jb25zdGFudDEsIGZpbmRfY29uc3RhbnQyLAoJZmluZF91dGY4X2NvbnN0YW50LCBmaW5kX3N0cmluZ19jb25zdGFudCwgZmluZF9jbGFzc19jb25zdGFudCwKCWZpbmRfZmllbGRyZWZfaW5kZXgsIGZpbmRfbWV0aG9kcmVmX2luZGV4LCB3cml0ZV9jb25zdGFudF9wb29sLAoJY291bnRfY29uc3RhbnRfcG9vbF9ieXRlcyBhbmQgZW5jb2RlX25ld2FycmF5X3R5cGUuCgoJKiBqY2YtZHVtcC5jOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBMT05HX3RlbXAnLgoKCSogamNmLXBhcnNlLmM6IEluY2x1ZGUgcGFyc2UuaC4KCShqY2ZfcGFyc2Vfc291cmNlKTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIsIGFsbCBjYWxsZXJzIGNoYW5nZWQuCgkoamNmX2ZpZ3VyZV9maWxlX3R5cGUpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCShmaW5kX2luX2N1cnJlbnRfemlwKTogTGlrZXdpc2UuICBBbHNvIHJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyLAoJYWxsIGNhbGxlcnMgY2hhbmdlZC4KCShyZWFkX2NsYXNzKTogSW5pdGlhbGl6ZSB2YXJpYWJsZSBgc2F2ZWRfcG9zJy4KCgkqIGpjZi1yZWFkZXIuYyAoamNmX3BhcnNlX3ByZWFtYmxlKTogTWFyayB2YXJpYWJsZXMKCWBtaW5vcl92ZXJzaW9uJyBhbmQgYG1ham9yX3ZlcnNpb24nIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCgkqIGxleC5jIChqYXZhX2lzX2VvbCk6IFdyYXAgcHJvdG90eXBlIGFuZCBkZWZpbml0aW9uIGluICFKQzFfTElURS4KCShqYXZhX2luaXRfbGV4KTogV3JhcCB2YXJpYWJsZSBgamF2YV9sYW5nX2ltcG9ydGVkJyBpbiAhSkMxX0xJVEUuCgkoamF2YV9wYXJzZV9kb2Nfc2VjdGlvbik6IEluaXRpYWxpemUgdmFyaWFibGUgYHNlZW5fc3RhcicuCgkoamF2YV9sZXgpOiBXcmFwIHZhcmlhYmxlIGBudW1iZXJfYmVnaW5uaW5nJyBpbiAhSkMxX0xJVEUuCgkoamF2YV9sZXhfZXJyb3IpOiBNYXJrIHBhcmFtZXRlcnMgYG1zZycgYW5kIGBmb3J3YXJkJyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoJKGphdmFfZ2V0X2xpbmVfY29sKTogTWFyayBwYXJhbWV0ZXJzIGBmaWxlbmFtZScgYW5kIGBsaW5lJyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoKCSogcGFyc2Utc2Nhbi55OiBJbmNsdWRlIHRvcGxldi5oLgoJKHl5ZXJyb3IpOiBNYXJrIHBhcmFtZXRlciBgbXNnJyB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgoJKiBwYXJzZS5oOiB1c2UgYHN0cnVjdCBKQ0YnLCBub3QgcGxhaW4gYEpDRicuCgkoamF2YV9wYXJzZXJfY29udGV4dF9zYXZlX2dsb2JhbCwgamF2YV9leHBhbmRfY2xhc3NlcwoJamF2YV9wYXJzZXJfY29udGV4dF9yZXN0b3JlX2dsb2JhbCwgamF2YV9wYXJzZSk6IEFkZCBwcm90b3R5cGVzLgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfaWVlZV9yZWFsX3RvX2ludGVnZXIpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgbm9kZScuCgoxOTk5LTAyLTI0ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAZGVuZWIuY3lnbnVzLmNvbT4KCgkqICBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiAgQ09QWU4gdGFrZXMgd29yZCBjb3VudCwgbm90IGJpdCBjb3VudC4KCjE5OTktMDItMjYgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfaWVlZV9yZWFsX3RvX2ludGVnZXIpOiAgVXNlIHNhdmVfZXhwciBpbnN0ZWFkIG9mCglleHBsaWNpdCBidWlsZF9kZWNsLiAgKEF2b2lkcyBjcmFzaCBpbiByZWxvYWQgd2hlbiBvcHRpbWl6aW5nLikKCjE5OTktMDItMjUgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogZGVjbC5jIChjb21wbGV0ZV9zdGFydF9qYXZhX21ldGhvZCk6ICBIYW5kbGUgc3luY2hyb25pemVkIG1ldGhvZAoJZXZlbiB3aGVuIGNvbXBpbGluZyBmcm9tIGJ5dGVjb2RlLgoKMTk5OS0wMi0yNiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKGFkZF9jbGFzc19kZWNsKTogT25seSBnZW5lcmF0ZSBgI2luY2x1ZGUnIGlmIG91dGVyCgljbGFzcyBpcyBub3QgdGhlIG5hbWUgb2YgdGhlIGNsYXNzIHdlIGFyZSBwcm9jZXNzaW5nLiAgQ29ycmVjdGx5CglhcHBlbmQgYC5oJyBpbiAjaW5jbHVkZS4KCShwcm9jZXNzX2ZpbGUpOiBDbGVhbiB1cCBuZXdsaW5lcyBhcm91bmQgZ2VuZXJhdGVkIGAjaW5jbHVkZSdzLgoJKGRlY29kZV9zaWduYXR1cmVfcGllY2UpOiBDb3JyZWN0bHkgaGFuZGxlIGlubmVyIGNsYXNzZXMuCgkoc3RydWN0IGluY2x1ZGUpOiBOZXcgc3RydWN0dXJlLgoJKGFsbF9pbmNsdWRlcyk6IE5ldyBnbG9iYWwuCgkocHJpbnRfaW5jbHVkZSk6IE5ldyBmdW5jdGlvbi4KCShhZGRfY2xhc3NfZGVjbCk6IFVzZSBpdC4KCShwcm9jZXNzX2ZpbGUpOiBMaWtld2lzZS4KCShhZGRfY2xhc3NfZGVjbCk6IEdlbmVyYXRlIGluY2x1ZGUgZm9yIGphdmEtYXJyYXkuaCBpZiBhcnJheQoJc2Vlbi4KCShwcm9jZXNzX2ZpbGUpOiBEb24ndCBnZW5lcmF0ZSBqYXZhLWFycmF5LmggaW5jbHVkZS4KCgkqIGdqYXZhaC5jIChhZGRfbmFtZWxldCk6IENoZWNrIGZvciBzdGFuZGFyZCBwYWNrYWdlIG5hbWVzIGhlcmUuCgkoYWRkX2NsYXNzX2RlY2wpOiBEb24ndCBjaGVjayBmb3Igc3RhbmRhcmQgcGFja2FnZSBuYW1lcyBoZXJlLgoKMTk5OS0wMi0yNSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogcGFyc2UueSAocmVhZF9pbXBvcnRfZGlyKTogVXNlIGB8PScsIG5vdCBgKz0nLCB0byBzZXQgYGZvdW5kJy4KCVdoZW4gcmVhZGluZyBhIHppcCBmaWxlLCBvbmx5IHVzZSBzdHJuY21wIGlmIGJvdGggc3RyaW5ncyBhcmUKCWJpZ2dlciB0aGFuIHRoZSBidWZmZXIgbGVuZ3RoLiAgSW5pdGlhbGl6ZSBgaycgd2hlbiBsb29waW5nCgl0aHJvdWdoIHppcCBmaWxlLgoKMTk5OS0wMi0yNCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKHN0cnVjdCBuYW1lbGV0KTogTmV3IHN0cnVjdHVyZS4KCShhZGRfbmFtZWxldCk6IE5ldyBmdW5jdGlvbi4KCShwcmludF9uYW1lbGV0KTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X2NsYXNzX2RlY2xzKTogVXNlIGFkZF9uYW1lbGV0IGFuZCBwcmludF9uYW1lbGV0IHRvIGdlbmVyYXRlCgluYW1lc3BhY2VzIGFuZCBub3QgY2xhc3Nlcy4KCShtZXRob2RfcHJpbnRlZCk6IE5ldyBnbG9iYWwuCgkoSEFORExFX0VORF9NRVRIT0QpOiBFeGFtaW5lIG1ldGhvZF9wcmludGVkLgoJKHByaW50X21ldGhvZF9pbmZvKTogU2V0IG1ldGhvZF9wcmludGVkIHdoZW4gcmVxdWlyZWQuICBQcmludAoJZXJyb3IgaWYgZnVuY3Rpb24gdG8gYmUgaWdub3JlZCBpcyBtYXJrZWQgdmlydHVhbC4gIEhhbmRsZSAkZmluaXQkCgltZXRob2QuCgkoTUVUSE9EX0lTX0ZJTkFMKTogTmV3IG1hY3JvLgoJKHByaW50X2ZpZWxkX2luZm8pOiBVc2UgaXQuCgkoSEFORExFX01FVEhPRCk6IENsZWFyIG1ldGhvZF9wcmludGVkLgoJKG1ldGhvZF9wYXNzKTogTmV3IGdsb2JhbC4KCShIQU5ETEVfRU5EX0ZJRUxEKTogQ2FsbCBhZGRfY2xhc3NfZGVjbCBvbiB0aGUgZmlyc3QgcGFzcy4KCShwcm9jZXNzX2ZpbGUpOiBEbyB0d28gcGFzc2VzIG92ZXIgYm90aCBmaWVsZHMgYW5kIG1ldGhvZHMuCgkoSEFORExFX01FVEhPRCk6IEV4YW1pbmUgbWV0aG9kX3Bhc3MuCgkocm9vdCk6IE5ldyBnbG9iYWwuCgkoYWRkX2NsYXNzX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkocHJpbnRfY2xhc3NfZGVjbHMpOiBEb24ndCBzY2FuIG92ZXIgZW50aXJlIGNvbnN0YW50IHBvb2wuCgoxOTk5LTAyLTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBSZWNvZ25pemUgLWZzeW50YXgtb25seSBhbmQKCWRpc2FibGUgbGlua2luZyBpbiB0aGF0IGNhc2UuCgoxOTk5LTAyLTIwICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqY2YuaCAoVVRGOF9HRVQpOiBNYXNrIGZpcnN0IGJ5dGUgb2YgMy1ieXRlIGVuY29kaW5nIHdpdGggMHgwZiwKCW5vdCAweDFmLgoKMTk5OS0wMi0yMSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGJ1aWxkX3Jlc3VsdF9kZWNsKSwgamF2YS10cmVlLmg6ICBOZXcgbWV0aG9kLgoJKGNvbXBsZXRlX3N0YXJ0X2phdmFfbWV0aG9kKTogIEhhbmRsZSBzeW5jaHJvbml6ZWQgbWV0aG9kcy4KCURvbid0IGJ1aWxkIERFQ0xfUkVTVUxUIGhlcmUuICAoT3JkZXJpbmcgZGVwZW5kZW5jeSBwcm9ibGVtLikKCShzdGFydF9qYXZhX21ldGhvZCk6ICBDYWxsIGJ1aWxkX3Jlc3VsdF9kZWNsIGhlcmUgaW5zdGVhZCAgLi4uCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6ICAuLi4gYW5kIGhlcmUuCgkoZXhwYW5kX3N0YXJ0X2phdmFfbWV0aG9kKTogRG9uJ3QgY2FsbCBjb21wbGV0ZV9zdGFydF9qYXZhX21ldGhvZCBoZXJlLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6ICBDYWxsIGl0IGhlcmUgaW5zdGVhZC4KCSogcGFyc2UuaCAoQlVJTERfTU9OSVRPUl9FTlRFUiwgQlVJTERfTU9OSVRPUl9FWElUKTogIE1vdmVkIHRvIC4uCgkqIGphdmEtdHJlZS5oOiAgLi4uIGhlcmUuCgoJKiBleHByLmMgKGZvcmNlX2V2YWx1YXRpb25fb3JkZXIpOiAgRml4IHR5cG8sIGRvbid0IGhhbmRsZSBBUlJBWV9SRUYuCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogIERvbid0IGNhbGwgZm9yY2VfZXZhbHVhdGlvbl9vcmRlcgoJZm9yIEFSUkFZX1JFRiAtIGl0IGRvZXNuJ3Qgd29yayB3aGVuIGFycmF5IGJvdW5kcyBhcmUgY2hlY2tlZC4KCShwYXRjaF9hcnJheV9yZWYpOiAgSGFuZGxlIGl0IGhlcmUgaW5zdGVhZC4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9jbGFzc2ZpbGUpOiAgRW1pdCAiRXhjZXB0aW9ucyIgYXR0cmlidXRlLgoKMTk5OS0wMi0xOSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJRm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9mIGJpbmFyeSBvcGVyYXRpb25zIGV0Yy4KCSogZXhwci5jIChmb3JjZV9ldmFsdWF0aW9uX29yZGVyKSwgamF2YS10cmVlLmg6ICBOZXcgZnVuY3Rpb24uCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogIFBhc3MgYmluYXJ5IG9wZXJhdGlvbnMsIHByb2NlZHVyZQoJY2FsbHMsIGFuZCBBUlJBWV9SRUZzIHRvIGZvcmNlX2V2YWx1YXRpb25fb3JkZXIuCgkodmFyaW91cyk6ICBTZXQgVFJFRV9TSURFX0VGRkVDVFMgbW9yZSBjYXJlZnVsbHkuCgoJVG9sZXJhdGUgcmFuZG9tIChub24tVVRGOCkgZW5jb2RpbmcgaW4gY29tbWVudHMgd2l0aG91dCBjb21wbGFpbmluZy4KCSogbGV4LmMgKGphdmFfcmVhZF9jaGFyKTogIFJldHVybiAweEZGRkUgaWYgYmFkIFVURjggZW5jb2RpbmcuCgkoamF2YV9pc19lb2wpOiAgSGFuZGxlICdccicgZm9sbG93ZWQgYnkgJ1xuJyBpbnN0ZWFkIG9mIHZpY2UgdmVyc2EuCgoJKiBwYXJzZS55IChyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiAgSGFuZGxlIGVycm9yX21hcmsuCgkoamF2YV9jb21wbGV0ZV9ub2RlIGNhc2UgRVhQUl9XSVRIX0ZJTEVfTE9DQVRJT04pOiAgTGlrZXdpc2UuCgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocyk6ICBJZ25vcmUgYW4gZW1wdHkgc3RhdGVtZW50IGluIGEKCUNPTVBPVU5EX0VYUFIuICBEb24ndCBjb21wbGFpbiBhYm91dCBlbXB0eSBzdGF0ZW1lbnQgYWZ0ZXIgcmV0dXJuLgoKMTk5OS0wMi0xOSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChvYnRhaW5faW5jb21wbGV0ZV90eXBlKTogIERvbid0IHdyYXAgdW5rbm93biB0eXBlcwoJaW4gVFJFRV9MSVNUIC0ganVzdCBjaGFpbiB0aGUgUE9JTlRFUl9UWVBFcyB0b2dldGhlci4KCShyZXNvbHZlX2NsYXNzKTogIElmIHR5cGUgYWxyZWFkeSByZXNvbHZlZCwgcmV0dXJuIGRlY2wuCglBZnRlciByZXNvbHZpbmcsIHVwZGF0ZSBUUkVFX1RZUEUoY2xhc3NfdHlwZSksIGFuZCBuYW1lIChpZiBhcnJheSkuCgkqIHBhcnNlLmggKGRvX3Jlc29sdmVfY2xhc3MpLCBwYXJzZS55OiAgTWFrZSBub24tc3RhdGljLgoJKiBjbGFzcy5jIChtYXliZV9sYXlvdXRfc3VwZXJfY2xhc3MpOiAgVGFrZSB0aGlzX2NsYXNzIGFyZ3VtZW50LgoJRG8gZG9fcmVzb2x2ZV9jbGFzcyBpZiBuZWNlc3NhcnkuCgkobGF5b3V0X2NsYXNzLCBsYXlvdXRfY2xhc3NfbWV0aG9kcyk6IEFkanVzdCBjYWxscyBhcHByb3ByaWF0ZWx5LgoJKiBwYXJzZS5oIChKREVQX1RPX1JFU09MVkUsIEpERVBfUkVTT0xWRURfREVDTCwgSkRFUF9SRVNPTFZFRCwKCUpERVBfUkVTT0xWRURfUCk6ICBSZWRlZmluZWQgZm9yIG5ldyBUUkVFX0xJU1QtbGVzcyBjb252ZW50aW9uLgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9hcnJheV90eXBlKTogIERvbid0IGNhbGwgbGF5b3V0X2NsYXNzLgoKMTk5OS0wMi0xNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChjaGVja19wa2dfY2xhc3NfYWNjZXNzKTogQWxsb3cgcHJpdmF0ZSBjbGFzcyBhY2Nlc3MKCXdpdGhpbiB0aGUgc2FtZSBwYWNrYWdlLgoJKHN0cmlwX291dF9zdGF0aWNfZmllbGRfYWNjZXNzX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkocGF0Y2hfdW5hcnlvcCk6IENhbGwgc3RyaXBfb3V0X3N0YXRpY19maWVsZF9hY2Nlc3NfZGVjbCBvbiArKy8tLQoJb3BlcmF0b3IgYXJndW1lbnQgYmVmb3JlIHRlc3RpbmcgaXRzIG5hdHVyZS4KCjE5OTktMDItMDMgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmRlZiAoRklOQUxMWV9FWFBSKTogIFJlbW92ZWQuICAoTm93IHVzZXMgVFJZX0ZJTkFMTFlfRVhQUi4pCgkoVFJZX0VYUFIpOiAgU2ltcGxpZnkgLSBpdCBubyBsb25nZXIgaGFzIGEgZmluYWxseSBjbGF1c2UuCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6ICBIYW5kbGUgVFJZX0ZJTkFMTFlfRVhQUi4KCVNpbXBsZXIgaGFuZGxpbmcgb2YgVFJZX0VYUFIsIHdoaWNoIG5vIGxvbmdlciBoYXMgYSBmaW5hbGx5IGNsYXVzZS4KCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiAgTGlrZXdpc2UuCgkqIGphdmEtdHJlZS5oIChDQVRDSF9FWFBSX0dFVF9FWFBSKTogIFJlbW92ZWQgLSBubyBsb25nZXIgbmVlZGVkLgoJKiBwYXJzZS5oIChqYXZhX2dldF9jYXRjaF9ibG9jayksIHBhcnNlLnk6ICBSZW1vdmVkIC0gbm8gbG9uZ2VyIG5lZWRlZC4KCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9saHMpOiAgQWRkIHN1cHBvcnQgZm9yIFRSWV9GSUFOTExZX0VYUFIuCgkoYnVpbGRfdHJ5X3N0YXRlbWVudCk6ICBSZW1vdmUgZmluYWxseSBwYXJhbWV0ZXIgYW5kIGhhbmRsaW5nLgoJKGJ1aWxkX3RyeV9maW5hbGx5X3N0YXRlbWVudCk6ICBOZXcgZnVuY3Rpb24uCgkocGF0Y2hfdHJ5X3N0YXRlbWVudCk6ICAgTm8gbG9uZ2VyIG5lZWQgdG8gc3VwcG9ydCBmaW5hbGx5IGNsYXVzZS4KCSh0cnlfc3RhdGVtZW50KTogIFVwZGF0ZSBncmFtbWFyIGFjdGlvbiBydWxlcy4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogIEhhbmRsZSBUUllfRklOQUxMWV9FWFBSLgoJU2ltcGxlciBoYW5kbGluZyBvZiBUUllfRVhQUiwgd2hpY2ggbm8gbG9uZ2VyIGhhcyBhIGZpbmFsbHkgY2xhdXNlLgoKMTk5OC0xMS0yNiAgQW5kcmV3IEhhbGV5ICA8YXBoQHZpYWdyYS5jeWdudXMuY28udWs+CgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NvbnN0YW50KTogQWRkIGJyYWNlcyBhcm91bmQgY29tcHV0YXRpb24gb2YgJ2QnCgl3aGVuIFJFQUxfQVJJVEhNRVRJQyBpcyBub3QgZGVmaW5lZC4gIFtPY3QgMjYgZml4IGdvdCBvdmVyd3JpdHRlbiAtUEJdCgoxOTk5LTAyLTE3ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3V0ZjhfcmVmKTogQmFjayBvdXQgYnJva2VuIHBhdGNoIHdoaWNoIHdhcwoJaW50ZW5kZWQgdG8gdG8gb3V0cHV0IHNpZ25hdHVyZXMgdXNpbmcgJy4nIGFzIGEgc2VwYXJhdG9yLgoKCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogT3V0cHV0IHNpZ25hdHVyZXMgdXNpbmcgJy4nIGFzIGEKCXNlcGFyYXRvciwgcmF0aGVyIHRoYW4gJy8nLgoJKG1hbmdsZWRfY2xhc3NuYW1lKTogTGlrZXdpc2UuCgkobWFrZV9maWVsZF92YWx1ZSk6IExpa2V3aXNlLgoJKG1ha2VfbWV0aG9kX3ZhbHVlKTogTGlrZXdpc2UuCgkqIGNvbnN0YW50cy5jIChhbGxvY19jbGFzc19jb25zdGFudCk6IExpa2V3aXNlLgoJKiBleHByLmMgKGJ1aWxkX2ludm9rZWludGVyZmFjZSk6IExpa2V3aXNlLgoKMTk5OS0wMi0xMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55ICh2YWxpZF9idWlsdGluX2Fzc2lnbmNvbnZfaWRlbnRpdHlfd2lkZW5pbmdfcCk6IEdvdCByaWQKCW9mIGFuIGFuY2llbnQgd29ya2Fyb3VuZC4KCjE5OTktMDItMTAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGp2c3BlYy5jICh4bWFsbG9jKTogS2lsbCB0aGUgcHJvdG90eXBlLiAgSXQgZG9lcyBub3QgYmVsb25nCgloZXJlIGFueW1vcmUuCgoxOTk5LTAyLTEwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGxleC5jICh5eWxleCk6IEVuY29kZSBcMCBhcyBVVEY4LgoKMTk5OS0wMi0xMCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogVXNlIGxpYmdjaiwgbm90IGxpYmphdmEuCgkqIE1ha2VmaWxlLmluIChqY2YtcGF0aC5vKTogRGVmaW5lIExJQkdDSl9aSVBfRklMRS4KCShsaWJnY2pfemlwKTogUmVuYW1lZC4KCSogamNmLXBhdGguYyAoYWRkX2VudHJ5KTogVXNlIExJQkdDSl9aSVBfRklMRSwgbm90CglMSUJKQVZBX1pJUF9GSUxFLgoJKGpjZl9wYXRoX2luaXQpOiBVc2UgTElCR0NKX1pJUF9GSUxFLgoKCSoganZzcGVjLmMgKFRIUkVBRF9OQU1FKTogUmVuYW1lZCAtbHF0aHJlYWRzIHRvIC1sZ2NqY29vcC4KCShHQ19OQU1FKTogUmVuYW1lZCAtbGdjIHRvIC1sZ2NqZ2MuCgoxOTk5LTAyLTA5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGxleC5jIChqYXZhX2xhbmdfY2xvbmVhYmxlKTogSW5pdGlhbGl6ZS4KCSogcGFyc2UueSAoamF2YV9sYW5nX2Nsb25lYWJsZSk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IFRha2UgQ09OVkVSVF9FWFBSIGludG8gYWNjb3VudCB3aGVuCglkb2luZyBvbmUgbW9yZSBxdWFsaWZpY2F0aW9uIHJvdW5kLgoJKHZhbGlkX3JlZl9hc3NpZ25jb252X2Nhc3RfcCk6IFJlamVjdCBudWxsIHNvdXJjZSBvcgoJZGVzdGluYXRpb24uIEFsbG93IGFuIGFycmF5IHRvIGJlIGNhc3QgaW50byBqYXZhLmxhbmcuQ2xvbmVhYmxlLgoJKHBhdGNoX2Nhc3QpOiBTd2FwcGVkIHR3byBmaXJzdCBhcmd1bWVudHMgdG8gZmlyc3QgY2FsbCB0bwoJdmFsaWRfcmVmX2Fzc2lnbmNvbnZfY2FzdF9wLgoKMTk5OS0wMi0wOCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS5oOiBERUNMX1AgcmVuYW1lZCBKREVDTF9QLgoJKiBwYXJzZS55OiBERUNMX1AgcmVwbGFjZWQgYnkgSkRFQ0xfUC4KCShidWlsZF9hcnJheV9mcm9tX25hbWUpOiBBbHdheXMgdXNlIHBvaW50ZXIncyB0eXBlLgoJKHBhdGNoX2JjX3N0YXRlbWVudCk6IEV4dHJhIGNvZGUgdG8gc2VhcmNoIGNvbnRpbnVlIHRhcmdldCBpbiBhCglmb3IgbG9vcC4gRml4ZWQgY29tbWVudHMuIENvbnRpbnVlIHRhcmdldCBpcyBjdXJyZW50IGxvb3Agd2hlbgoJdW5sYWJlbGVkLgoKMTk5OS0wMi0wNSAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBUaGUgc3VwZXJjbGFzcyBvZiBhbiBpbnRlcmZhY2Ugc2hvdWxkCgliZSBudWxsLCBub3QgY2xhc3MgT2JqZWN0LgoKCSogbGV4LmMgKGphdmFfbGV4KTogU2lnbiBleHRlbmQgaGV4IGxpdGVyYWxzLgoKMTk5OS0wMi0wNCAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChidWlsZF91dGY4X3JlZik6IE91dHB1dCBzaWduYXR1cmVzIHVzaW5nICcuJyBhcyBhCglzZXBhcmF0b3IsIHJhdGhlciB0aGFuICcvJy4KCShtYWtlX2NsYXNzX2RhdGEpOiBMaWtld2lzZS4KCjE5OTktMDItMDMgIE1hcmMgRXNwaWUgPE1hcmMuRXNwaWVAbGlhZmEuanVzc2lldS5mcj4KCgkqIE1ha2UtbGFuZy5pbiAoJChHQ0opKGV4ZWV4dCkpOiBSZW1vdmUgY2hvb3NlLXRlbXAubywgcGV4ZWN1dGUubyBhbmQKCW1rc3RlbXAuby4gIEdldCB0aGVtIGZyb20gbGliaWJlcnR5IG5vdy4KCjE5OTktMDItMDIgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGpjZi1pby5jOiBEbyBub3QgaW5jbHVkZSBzeXMvc3RhdC5oIG9yIHN5cy93YWl0LmgKCjE5OTktMDItMDIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGp2c3BlYy5jICh4bWFsbG9jKTogRml4IHRoZSBwcm90b3R5cGUgdG8gbWF0Y2ggdGhlIG9uZSBvYnRhaW5lZAoJZnJvbSBsaWJpYmVydHkuaAoKMTk5OS0wMi0wMiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJT3B0aW1pemU6IGByZXR1cm4gKGEgPyBiIDogYyknIGFzOiBgaWYgKGEpIHJldHVybiBiOyBlbHNlIHJldHVybiBjOycuCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9yZXR1cm4pOiAgTmV3IGZ1bmN0aW9uLgoJKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogIFVzZSBpdCwgZm9yIFJFVFVSTl9FWFBSLgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogIEZvciBSRUFMX0NTVCB0aGF0IGlzIDAgb3IgMSwKCWdlbmVyYXRlIHNwZWNpYWwgW2ZkXWNvbnN0X1swMV0gaW5zdHJ1Y3Rpb25zLgoKCSogamNmLXBhcnNlLmMgKHl5cGFyc2UpOiAgRG9uJ3QgZW1pdF9yZWdpc3Rlcl9jbGFzc2VzIGlmIC1mc3ludGF4LW9ubHkuCgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiAgRG8gSU5WQUxJREFURV9QQyBhZnRlcgoJaGFuZGxpbmcgT1BDT0RFX2xvb2t1cHN3aXRjaCBvciBPUENPREVfdGFibGVzd2l0Y2guCgoxOTk5LTAyLTAxICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogIEhhbmRsZSBjYWxsaW5nIHN0YXRpYyBtZXRob2RzLAoJZXZlbiBpbiB0aGUgZm9ybSBFWFBSLk1FVEhPRChBUkdTKSwgbm90IGp1c3QgVFlQRS5NRVRIT0QoQVJHUykuCgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocyk6ICBEb24ndCBjb21wbGFpbiBhYm91dCB1bnJlYWNoYWJsZQoJZXhpdCBjb25kaXRpb24gaW4gYSBkby13aGlsZSBzdGF0ZW1lbnQuCgoxOTk5LTAxLTI5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGxleC5jIChqYXZhX3JlYWRfY2hhcik6IEZpeGVkIHV0ZjggZGVjb2RpbmcuCgkoamF2YV91bmljb2RlXzJfdXRmOCk6IEZpeGVkIHV0ZjggZW5jb2RpbmcgaW4gdGhlIDB4ODAwLTB4ZmZmZgoJcmFuZ2UuCgkqIHBhcnNlLnkgKHZhbGlkX2J1aWx0aW5fYXNzaWduY29udl9pZGVudGl0eV93aWRlbmluZ19wKTogRml4ZWQKCWNvbW1lbnRzLiBMb2NhbCB2YXJpYWJsZSBgYWxsX3ByaW1pdGl2ZScgaXMgZ29uZS4gQnJvYWRlbmVkCglhY2NlcHRhbmNlIG9mIGAwJyB0byBmbG9hdGluZyBwb2ludCB0YXJnZXRzLiBgbG9uZycgY2FuIG5vdyBiZQoJd2lkZW5lZCB0byBgZG91YmxlJyBvciBgZmxvYXQnLgoJKHZhbGlkX21ldGhvZF9pbnZvY2F0aW9uX2NvbnZlcnNpb25fcCk6IEFkZGVkIGxlYWRpbmcKCWNvbW1lbnQuIEZpeGVkIHRhYnVsYXRpb24uCgkoYnVpbGRfc3RyaW5nX2NvbmNhdGVuYXRpb24pOiBPcHRpbWl6ZSBvdXQgbGVmdCBvciByaWdodCBlbXB0eQoJc3RyaW5nIGNvbnN0YW50cy4KCjE5OTktMDEtMjggIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogamNmLXdyaXRlLmMgKGxvY2FsdmFyX2FsbG9jKTogIE9ubHkgZW1pdCBlbnRyeSBmb3IKCUxvY2FsVmFyaWFibGVUYWJsZSBpZiBkZWJ1Z19pbmZvX2xldmVsID4gRElORk9fTEVWRUxfVEVSU0UuCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiAgT25seSBjYWxsIHB1dF9saW5lbnVtYmVyIGlmCglkZWJ1Z19pbmZvX2xldmVsID4gRElORk9fTEVWRUxfTk9ORS4KCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogIElmIG5vIC1PKiBvciAtZyogb3B0aW9uCglpcyBzcGVjaWZpZWQsIGFkZCAtZzEgKGZvciBjb21wYXRpYmlsaXR5IHdpaCBqYXZhYykuCgoxOTk5LTAxLTI4ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLnNlPgoKCSogamF2YS9NYWtlZmlsZS5pbjogQWRkIG1pc3NpbmcgZGVwZW5kZW5jaWVzIGZvciBqY2YtZHVtcC5vLAoJZ2phdmFoLm8sIGNoZWNrLWluaXQubywganYtc2Nhbi5vCgoxOTk5LTAyLTAxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoZ2phdmFoLm8pOiBEZXBlbmQgb24gJChDT05GSUdfSCkgYW5kIHN5c3RlbS5oLgoKCSogZ2phdmFoLmM6IEluY2x1ZGUgY29uZmlnLmggYW5kIHN5c3RlbS5oLgoKCSogamF2YW9wLmggKGlubGluZSk6IERvbid0IGRlZmluZSwgaXRzIGhhbmRsZWQgYnkgc3lzdGVtLmguCgkoV09SRF9UT19GTE9BVCwgV09SRFNfVE9fTE9ORywgV09SRFNfVE9fRE9VQkxFKTogQ2hhbmdlIHRoZXNlCglmcm9tIGBpbmxpbmUnIHRvIGBzdGF0aWMgaW5saW5lJy4KCgkqIGpjZi5oIChpbmxpbmUpOiBEb24ndCBkZWZpbmUsIGl0cyBoYW5kbGVkIGJ5IHN5c3RlbS5oLgoKCSogbGV4LmMgKGlubGluZSk6IExpa2V3aXNlLgoKMTk5OS0wMS0zMSAgWmFjayBXZWluYmVyZyAgPHphY2tAcmFiaS5jb2x1bWJpYS5lZHU+CgoJKiBsYW5nLXNwZWNzLmg6IE1hcCAtUW4gdG8gLWZuby1pZGVudC4KCjE5OTktMDEtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBGaXggQ0xFQU5VUF9QT0lOVF9FWFBSIHR5cG8uCgoxOTk5LTAxLTI5ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBwYXJzZS5oIChCVUlMRF9BUFBFTkQpOiBJZiBBUkcgaXMgYSBub24tU3RyaW5nIG9iamVjdCByZWZlcmVuY2UsCgl0aGVuIGNhc3QgaXQgdG8gT2JqZWN0IGJlZm9yZSBjYWxsaW5nIGBhcHBlbmQnIG1ldGhvZC4KCjE5OTktMDEtMjggIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2hlY2staW5pdC5jIChjaGVja19ib29sMl9pbml0LCBjaGVja19ib29sX2luaXQsIGNoZWNrX2luaXQpOgoJSGFuZGxlIFRSVVRIX0FORF9FWFBSLCBUUlVUSF9PUl9FWFBSLCBhbmQgVFJVVEhfWE9SX0VYUFIuCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6ICBMaWtld2lzZS4KCjE5OTktMDEtMjggIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmMgKGpjZl9wYXJzZSk6IERvbid0IHBhcnNlIHRoZSBzYW1lIGNsYXNzIGZpbGUgdHdpY2UuCgkqIHBhcnNlLnkgKHBhdGNoX2Nhc3QpOiBBbGxvdyBhIGJvb2xlYW4gdG8gYmUgY2FzdCBpbnRvIGEKCWJvb2xlYW4uCgoxOTk5LTAxLTI3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnk6IChjbGFzc19kZWNsYXJhdGlvbjopOiBGaXhlZCBpbmRlbnRhdGlvbi4KCShjbGFzc19tZW1iZXJfZGVjbGFyYXRpb246KTogRXh0cmEgYDsnIGFmdGVyIGZpZWxkIGRlY2xhcmF0aW9uIG5vdwoJYWNjZXB0ZWQuCgkoaW50ZXJmYWNlX2RlY2xhcmF0aW9uOik6IFJlbW92ZWQgZGVidWcgbWVzc2FnZXMgaW4gZXJyb3IgcmVwb3J0cy4KCShwYXRjaF9iaW5vcCk6IE5vZGVzIGNyZWF0ZWQgYW5kIHJldHVybmVkIGluaGVyaXQgdGhlIG9yaWduYWwKCW5vZGUncyBDT01QT1VORF9BU1NJR05fUCBmbGFnIHZhbHVlLgoJKHBhdGNoX2Nhc3QpOiBGaXggY2FzdCBmcm9tIGNoYXIgdG8gZmxvYXRpbmcgcG9pbnQuCgoxOTk5LTAxLTI1ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jLCBqYXZhLWV4Y2VwdC5oIChleHBhbmRfcmVzdW1lX2FmdGVyX2NhdGNoKTogbmV3CglmdW5jdGlvbi4KCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBjYWxsIGV4cGFuZF9yZXN1bWVfYWZ0ZXJfY2F0Y2gKCXRvIGJyYW5jaCBiYWNrIHRvIG1haW4gZmxvdyBvZiBjb250cm9sIGFmdGVyIGEgY2F0Y2ggYmxvY2suCgoxOTk5LTAxLTIzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAocGFyc2Uubyk6IERlcGVuZCBvbiAkKENPTkZJR19IKSBhbmQKCSQoc3JjZGlyKS8uLi9zeXN0ZW0uaC4KCShjbGFzcy5vKTogRGVwZW5kIG9uICQoUEFSU0VfSCkgYW5kICQoc3JjZGlyKS8uLi9vdXRwdXQuaC4KCShqY2YtcGFyc2Uubyk6IERlcGVuZCBvbiAkKHNyY2RpcikvLi4vdG9wbGV2LmguCgkoamNmLXdyaXRlLm8pOiBMaWtld2lzZS4KCShqdi1zY2FuLm8pOiBEZXBlbmQgb24gJChDT05GSUdfSCkgYW5kICQoc3JjZGlyKS8uLi9zeXN0ZW0uaC4KCShtYW5nbGUubyk6IERlcGVuZCBvbiAkKHNyY2RpcikvLi4vdG9wbGV2LmguCgkocGFyc2Utc2Nhbi5vKTogRGVwZW5kIG9uICQoQ09ORklHX0gpIGFuZCAkKHNyY2RpcikvLi4vc3lzdGVtLmguCgkoemV4dHJhY3Qubyk6IERlcGVuZCBvbiAkKENPTkZJR19IKSBhbmQgJChzcmNkaXIpLy4uL3N5c3RlbS5oLgoKCSogY2xhc3MuYzogSW5jbHVkZSBvdXRwdXQuaCBhbmQgcGFyc2UuaC4KCShtYW5nbGVkX2NsYXNzbmFtZSk6IEFkZCB0aGUgYGNvbnN0JyBrZXl3b3JkIHRvIGEgY2hhciouCgkoZmluZF9uYW1lZF9tZXRob2QpOiBIaWRlIHVudXNlZCBmdW5jdGlvbiBkZWZpbml0aW9uLgoJKGJ1aWxkX3V0ZjhfcmVmKTogQ2hhbmdlIHR5cGUgb2YgdmFyaWFibGUgYGMnIHRvIHVuc2lnbmVkIGNoYXIuCglVc2UgSVNBTFBIQS9JU0RJR0lUIGluc3RlYWQgb2YgaXNhbHBoYS9pc2RpZ2l0LgoJKGJ1aWxkX2NsYXNzX3JlZik6IEFkZCB0aGUgYGNvbnN0JyBrZXl3b3JkIHRvIGEgY2hhciouCgkobGF5b3V0X2NsYXNzX21ldGhvZCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGJ1ZicuCgoJKiBkZWNsLmMgKGZpbmRfbG9jYWxfdmFyaWFibGUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBydGwnLgoJKHB1c2hkZWNsKTogTGlrZXdpc2UgZm9yIHZhcmlhYmxlcyBgZGlmZmVyZW50X2JpbmRpbmdfbGV2ZWwnIGFuZAoJYG9sZGdsb2JhbCcuCgkocHVzaGxldmVsKTogTWFyayBwYXJhbWV0ZXIgYHVudXNlZCcgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoJKG1heWJlX2J1aWxkX2NsZWFudXApOiBMaWtld2lzZSBmb3IgcGFyYW1ldGVyIGBkZWNsJy4KCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfamF2YV9oYW5kbGVyKTogTWFyayBwYXJhbWV0ZXIgYHJhbmdlJwoJd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoKCSogZXhwci5jOiBJbmNsdWRlIGV4Y2VwdC5oLgoJKHBvcF90eXBlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgaScuCgkocG9wX3ZhbHVlKTogTGlrZXdpc2UgZm9yIHZhcmlhYmxlcyBgbl93b3JkcycgYW5kIGBpJy4KCShleHBhbmRfamF2YV9hcnJheWxvYWQpOiBMaWtld2lzZSBmb3IgdmFyaWFibGUgYGNvbnZlcnQnLgoJKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IExpa2V3aXNlIGZvciB2YXJpYWJsZXMgYG9wMCcsIGB0eXBlJywKCWBtb2RlJywgYHVuc2lnbmVkcCcsIGBub2RlJyBhbmQgYGVsZW1lbnRzJy4KCShleHBhbmRfYnl0ZV9jb2RlKTogTGlrZXdpc2UgZm9yIHZhcmlhYmxlcyBgcHJldl9laF9yYW5nZXMnIGFuZAoJYGVoX3JhbmdlcycuCgkocHJvY2Vzc19qdm1faW5zdHJ1Y3Rpb24pOiBBZGQgYSBgY29uc3QnIHF1YWxpZmllciB0byBhIGNoYXIqLgoKCSogZ2phdmFoLmMgKG91dHB1dF9kaXJlY3RvcnkpOiBBZGQgdGhlIGBjb25zdCcga2V5d29yZCB0byBhIGNoYXIqLgoJKHRlbXBfZGlyZWN0b3J5KTogTGlrZXdpc2UuCgkocHJpbnRfY19kZWNsKTogTGlrZXdpc2UuCgkocHJpbnRfbWV0aG9kX2luZm8pOiBMaWtld2lzZS4KCShkZWNvZGVfc2lnbmF0dXJlX3BpZWNlKTogTGlrZXdpc2UuCgkocHJpbnRfbWFuZ2xlZF9jbGFzc25hbWUpOiBMaWtld2lzZS4KCgkqIGphdmEtZXhjZXB0Lmg6IFByb3ZpZGUgcHJvdG90eXBlcyBmb3IgbWF5YmVfc3RhcnRfdHJ5LAoJbWF5YmVfZW5kX3RyeSBhbmQgYWRkX2hhbmRsZXIuCgoJKiBqYXZhLXRyZWUuaCAobWFuZ2xlZF9jbGFzc25hbWUpOiBBZGQgdGhlIGBjb25zdCcga2V5d29yZCB0byBhIGNoYXIqLgoJKHBhcnNlX2Vycm9yX2NvbnRleHQpOiBMaWtld2lzZS4gIEFsc28gYWRkIEFUVFJJQlVURV9QUklOVEZfMi4KCShwdXNoZGVjbF90b3BfbGV2ZWwsIGFsbG9jX2NsYXNzX2NvbnN0YW50LCB1bmljb2RlX21hbmdsaW5nX2xlbmd0aCwKCWluaXRfZXhwcl9wcm9jZXNzaW5nLCBwdXNoX3N1cGVyX2ZpZWxkLCBpbml0X2NsYXNzX3Byb2Nlc3NpbmcsCgljYW5fd2lkZW5fcmVmZXJlbmNlX3RvLCBjbGFzc19kZXB0aCwgdmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMsCgltYXliZV9wdXNobGV2ZWxzLCBtYXliZV9wb3BsZXZlbHMsIHByb2Nlc3NfanZtX2luc3RydWN0aW9uLAoJc2V0X2xvY2FsX3R5cGUsIG1lcmdlX3R5cGVfc3RhdGUsIHB1c2hfdHlwZSwgbG9hZF90eXBlX3N0YXRlLAoJYWRkX2ludGVyZmFjZSwgZmluZF9pbl9jdXJyZW50X3ppcCwgYXBwZW5kX2dwcF9tYW5nbGVkX2NsYXNzdHlwZSwKCWVtaXRfdW5pY29kZV9tYW5nbGVkX25hbWUpOiBBZGQgcHJvdG90eXBlcy4KCgkqIGpjZi1kdW1wLmMgKHByaW50X2NvbnN0YW50KTogQWRkIHRoZSBgY29uc3QnIGtleXdvcmQgdG8gYSBjaGFyKi4KCShwcmludF9zaWduYXR1cmVfdHlwZSk6IFVzZSBJU0RJR0lULCBub3QgaXNkaWdpdC4KCShwcmludF9zaWduYXR1cmUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBqJy4KCgkqIGpjZi1pby5jIChqY2ZfZmlsYnVmX2Zyb21fc3RkaW8pOiBDYXN0IHRoZSByZXN1bHQgb2YgYGZyZWFkJyB0bwoJaW50IHdoZW4gY29tcGFyaW5nIGFnYWluc3Qgb25lLgoKCSogamNmLXBhcnNlLmM6IEluY2x1ZGUgdG9wbGV2LmguCgoJKiBqY2Ytd3JpdGUuYzogTGlrZXdpc2UuICBEb24ndCBpbmNsdWRlIDxzdHJpbmcuaD4gb3IgPHN5cy9zdGF0Lmg+LgoJKGxvY2FsdmFyX2ZyZWUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBpJy4KCShnZW5lcmF0ZV9ieXRlY29kZV9jb25kaXRpb25hbCk6IExpa2V3aXNlIGZvciB2YXJpYWJsZSBga2luZCcuCgoJKiBqdi1zY2FuLmM6IEluY2x1ZGUgY29uZmlnLmggYW5kIHN5c3RlbS5oLiAgUmVtb3ZlIHJlZHVuZGFudAoJT1MgaGVhZGVyIGFuZCBnYW5zaWRlY2wuaCBpbmNsdWRlcy4KCSh3YXJuaW5nKTogQWRkIHRoZSBgY29uc3QnIGtleXdvcmQgdG8gYSBjaGFyKi4gIEFsc28gYWRkCglBVFRSSUJVVEVfUFJJTlRGXzEgdG8gdGhlIHByb3RvdHlwZS4gIENoZWNrIEFOU0lfUFJPVE9UWVBFUywgbm90CglfX1NURENfXywgd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRvIHVzZSBBTlNJLWlzbXMuCgkoZmF0YWwpOiBMaWtld2lzZS4gIEFsc28gYWRkIEFUVFJJQlVURV9VTlVTRUQuCgkoeG1hbGxvYyk6IERvbid0IHJlZHVuZGFudGx5IHByb3RvdHlwZSBoZXJlLgoJKG1haW4pOiBSZW1vdmUgdW51c2VkIHBhcmFtZXRlciBgZW52cCcuICBBbHNvIGZpeCB0aGUgYXJndW1lbnRzCglwYXNzZWQgdG8gZnVuY3Rpb24gYGZhdGFsJyB0byBtYXRjaCB0aGUgZm9ybWF0IHNwZWNpZmllci4KCgkqIGxhbmcuYyAoamF2YV90cmVlX2NvZGVfbmFtZSk6IEFkZCB0aGUgYGNvbnN0JyBrZXl3b3JkIHRvIGEgY2hhciouCgoJKiBtYW5nbGUuYzogSW5jbHVkZSB0b3BsZXYuaC4KCShlbWl0X3VuaWNvZGVfbWFuZ2xlZF9uYW1lKTogRGVjbGFyZSBwYXJhbWV0ZXIgYGxlbicuCgoJKiBwYXJzZS55IChwYXJzZV93YXJuaW5nX2NvbnRleHQpOiBBZGQgdGhlIGBjb25zdCcga2V5d29yZCB0byBhCgljaGFyKi4gIEFsc28gYWRkIEFUVFJJQlVURV9QUklOVEZfMiB0byB0aGUgcHJvdG90eXBlLiAgQ2hlY2sKCWBBTlNJX1BST1RPVFlQRVMnIG5vdCBgX19TVERDX18nIGZvciB3aGV0aGVyIHRvIHVzZSBBTlNJLWlzbXMuCgkoaXNzdWVfd2FybmluZ19lcnJvcl9mcm9tX2NvbnRleHQpOiBBZGQgdGhlIGBjb25zdCcga2V5d29yZCB0bwoJYSBjaGFyKi4KCShwYXJzZV9lcnJvcl9jb250ZXh0KTogTGlrZXdpc2UuICBBbHNvIGNoZWNrIGBBTlNJX1BST1RPVFlQRVMnCglub3QgYF9fU1REQ19fJyBmb3Igd2hldGhlciB0byB1c2UgQU5TSS1pc21zLgoKCSogdHlwZWNrLmMgKGluY29tcGxldGVfdHlwZV9lcnJvcik6IE1hcmsgcGFyYW1ldGVycyBgdmFsdWUnIGFuZAoJYHR5cGUnIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCShwYXJzZV9zaWduYXR1cmVfdHlwZSk6IFVzZSBJU0RJR0lULCBub3QgaXNkaWdpdC4KCgkqIHZlcmlmeS5jIChjaGVja19wZW5kaW5nX2Jsb2NrKTogQWRkIHRoZSBgY29uc3QnIGtleXdvcmQgdG8gYSBjaGFyKi4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IExpa2V3aXNlLiAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKCWBmaWVsZF9uYW1lJyBhbmQgYGRlZmF1bHRfdmFsJy4KCgkqIHpleHRyYWN0LmM6IEluY2x1ZGUgY29uZmlnLmggYW5kIHN5c3RlbS5oLiAgUmVtb3ZlIHJlZHVuZGFudAoJT1MgaGVhZGVyIGluY2x1ZGVzLgoKCSogemlwZmlsZS5oOiBQcm90b3R5cGUgYHJlYWRfemlwX2FyY2hpdmUnLgoKMTk5OS0wMS0yMSAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoY29udmVydCk6IEFsbG93IGNvbnZlcnNpb25zIHRvIHZvaWQgdHlwZTogc29tZQoJb3B0aW1pemF0aW9ucyBpbiBnY2MgZG8gdGhpcy4KCjE5OTktMDEtMjEgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfaWVlZV9yZWFsX3RvX2ludGVnZXIpOiBOZXcgZnVuY3Rpb24uCgkoY29udmVydCk6IFdoZW4gbm90IHVzaW5nIGZhc3QtbWF0aCBhbmQgdXNpbmcgaGFyZHdhcmUgZnAsIGNvbnZlcnQKCWFuIElFRUUgTmFOIHRvIHplcm8uCgoxOTk5LTAxLTE4ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX2Jpbm9wKTogRG8gYSB0eXBlIGNvbnZlcnNpb24gZnJvbSBzaWduZWQgdG8KCXVuc2lnbmVkIGFuZCB0aGVuIGJhY2sgdG8gc2lnbmVkIHdoZW4gYSAiPj4+IiBpcyBmb3VuZC4KCjE5OTktMDEtMTcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmg6IChjaGVja19mb3JfaW5pdGlhbGl6YXRpb24pOiBBZGRlZCBwcm90b3R5cGUuCgkqIGxleC5jIChqYXZhX3BhcnNlX2RvY19zZWN0aW9uKTogYFxuJyBicmVha3MgdGhlIGAqLycgc3RyaW5nLgoJKiBwYXJzZS55IChkb19yZXNvbHZlX2NsYXNzKTogUmVtb3ZlZCB1bnVzZWQgbG9jYWxzLgoJKHJlYWRfaW1wb3J0X2Rpcik6IExpa2V3aXNlLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IEFycmF5IGNyZWF0aW9uCglleHByZXNzaW9ucyBhcmUgdmFsaWQgcHJpbWFyeSBleHByZXNzaW9ucy4KCShxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogTGlrZXdpc2UuCgkocGF0Y2hfc3luY2hyb25pemVkX3N0YXRlbWVudCk6IFJlbW92ZWQgdW51c2VkIGxvY2FsLgoKMTk5OS0wMS0xNyAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKHpleHRyYWN0Lm8pOiBBZGQgZGVwZW5kZW5jaWVzLgoKCSogTWFrZWZpbGUuaW46IERvIG5vdCBwdXQgXkxzIGF0IHRoZSBzdGFydCBvZiBhIGxpbmUuCgoxOTk5LTAxLTE1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAocHJvY2Vzc19qdm1faW5zdHJ1Y3Rpb24pOiAgQ29lcmNlIHRvIGNvcnJlY3QgVGhyb3dhYmxlCglzdWItdHlwZSB0aGUgcmVzdWx0IG9mIHRoZSBjYWxsIHRoYXQgZ2V0cyB0aGUgZXhjZXB0aW9uIHZhbHVlLgoKCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6ICBJZiBmbGFnc19zeW50YXhfb25seSwKCWRvbid0IGNhbGwgZmluaXNoX2NsYXNzLgoKCSogcGFyc2UueSAoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiAgSWYgTUVUSE9EX1BSSVZBVEUsCgljbGVhciBmb3VuZCBiZWZvcmUgY29udGludWluZy4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6ICBPbiBhbiBhcnJheSBsb2FkLCBhbGxvdwoJYW5kIGhhbmRsZSB0b3Agb2Ygc3RhY2sgdG8gYmUgVFlQRV9OVUxMLgoKCSogZ2phdmFoLmMgKGdlbmVyYXRlX2FjY2Vzcyk6ICBUcmFuc2xhdGUgSmF2YSBwYWNrYWdlIHByaXZhdGUgb3IKCXByb3RlY3RlZCBhY2Nlc3MgdG8gQysrIHB1YmxpYywgYnV0IHdpdGggYSBjb21tZW50LgoKMTk5OS0wMS0xMyAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGdlbmVyYXRlX25hbWUpOiBOYW1lIHByZWZpeCBjaGFuZ2VkIHRvIGF2b2lkIGNsYXNoZXMKCXdpdGggYXNzZW1ibGVyIHRlbXAgbGFiZWxzLgoKCSogcGFyc2UueSAocGF0Y2hfc3luY2hyb25pemVkX3N0YXRlbWVudCk6IFNldCBUUkVFX1NJREVfRUZGRUNUUyBvbgoJTU9ESUZZX0VYUFIuICBXaXRob3V0IHRoaXMsIGNvZGUgZm9yIHRoZSBhc3NpZ25tZW50IG1heSBub3QgYmUKCWdlbmVyYXRlZCBhdCBhbGwgYW5kIHRoZSBzeW5jaHJvbml6ZWQgc3RhdGVtZW50IHdpbGwgcmVhZCBhbgoJdW5pbml0aWFsaXplZCB2YXJpYWJsZS4KCjE5OTktMDEtMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAobWF5YmVfbGF5b3V0X3N1cGVyX2NsYXNzKTogRml4ZWQgcmV0dXJuZWQgdmFsdWUuCgkqIGxleC5jOiBBZGRlZCAxOTk5IHRvIHRoZSBjb3B5cmlnaHQuCgkoamF2YV9pbml0X2xleCk6IEluaXRpYWxpemUgamF2YV9sYW5nX2ltcG9ydGVkLgoJKiBsZXguaDogQWRkZWQgMTk5OSB0byB0aGUgY29weXJpZ2h0LgoJKiBwYXJzZS5oOiBBZGRlZCAxOTk5IHRvIHRoZSBjb3B5cmlnaHQuCgkoUkVHSVNURVJfSU1QT1JUKTogRml4ZWQgdHlwbyBpbiB0cmFpbGluZyBtYWNyby4KCShDVVJSRU5UX09TQik6IE5ldyBtYWNyby4KCShzdHJ1Y3QgcGFyc2VyX2N0eHQpOiBOZXcgZmllbGRzIG9zYl9kZXB0aCwgb3NiX2xpbWl0LgoJKiBwYXJzZS55IChqYXZhX2xhbmdfaWQpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKHR5cGVfaW1wb3J0X29uX2RlbWFuZF9kZWNsYXJhdGlvbik6IERvbid0IGltcG9ydCBqYXZhLmxhbmcuKiB0d2ljZS4KCShhcnJheV9jcmVhdGlvbl9leHByZXNzaW9uOik6IFVzZSBDVVJSRU5UX09TQi4KCShkaW1zOik6IFVzZXMgYSBzdGFjayB0byBrZWVwIHRyYWNrIG9mIGFycmF5IGRpbWVuc2lvbnMuCgkoY2FzdF9leHByZXNzaW9uOik6IFVzZSBDVVJSRU5UX09TQi4KCShmaW5kX2V4cHJfd2l0aF93ZmwpOiBSZXR1cm4gTlVMTCBpZiBub2RlIGZvdW5kIGRvZXNuJ3QgbWVldCB0aGUKCWNvbmRpdGlvbnMuCgkocmVnaXN0ZXJfZmllbGRzKTogRml4ZWQgdHlwb3MgaW4gY29tbWVudC4KCShjaGVja19tZXRob2RfcmVkZWZpbml0aW9uKTogRml4ZWQgY29tbWVudCBpbmRlbnRhdGlvbi4KCShqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcyk6IFNldCBzYXZlZCBmb3VuZCB3ZmwgdG8gTlVMTCBhZnRlcgoJaGF2aW5nIHJlaW5zdGFsbGVkIGl0IGluIHRoZSBwcmV2aW91c2x5IGZvdW5kIERFQ0xfTkFNRS4KCjE5OTktMDEtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAoamF2YV9mbG9hdF9maW5pdGUpOiBVc2UgYSB1bmlvbiB0byBkbyB0eXBlIHB1bm5pbmcuCgkoamF2YV9kb3VibGVfZmluaXRlKTogTGlrZXdpc2UuCgoxOTk5LTAxLTA5ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGJ1aWxkX25ld19hcnJheV9pbml0KTogIERvbid0IHNldCBFWFBSX1dGTF9MSU5FQ09MCglvbiBDT05TVFJVQ1RPUiAoc2luY2UgdGhhdCB0cmFzaGVzIFRSRUVfQ1NUX1JUTCkuCgkocGF0Y2hfbmV3X2FycmF5X2luaXQpOiAgQ2xlYXIgVFJFRV9DT05TVEFOVCBhbHNvIGlmIElORElSRUNUX1JFRi4KCShyZWdpc3Rlcl9maWVsZHMpOiAgU2V0IFRSRUVfU1RBVElDIG9uIE5FV19BUlJBWV9JTklULCBub3Qgb24KCUNPTlNUUlVDVE9SICh3aGljaCBjYXVzZXMgZXhwYW5kX2V4cHIgdG8gY2FsbCBvdXRwdXRfY29uc3RhbnRfZGVmKS4KCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiAgQ2hlY2sgVFJFRV9TVEFUSUMgb2YgTkVXX0FSUkFZX0lOSVQuCgoxOTk5LTAxLTA4ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6ICBJZiBjb21waWxpbmcgdG8gbmF0aXZlLCB3ZSBkb24ndAoJc2VlIFRIUk9XX0VYUFIuICBJbnN0ZWFkLCBsb29rIGZvciBhIGNhbGwgdG8gdGhyb3dfbm9kZSAoX0p2X1Rocm93KS4KCjE5OTktMDEtMDggIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLXNjYW4ueSAodmFyaWFibGVfZGVjbGFyYXRvcl9pZCk6IFNldCBvciBpbmNyZW1lbnQKCWJyYWNrZXRfY291bnQuCgkoYnJhY2tldF9jb3VudCk6IE5ldyBnbG9iYWwuCgkoZm9ybWFsX3BhcmFtZXRlcik6IEhhbmRsZSBjYXNlIHdoZXJlIGJyYWNrZXQgcGFpcnMgdHJhaWwgdmFyaWFibGUKCWRlY2xhcmF0b3IgaWQuCgoxOTk5LTAxLTA3ICBBbmRyZXcgSGFsZXkgIDxhcGhAdmlhZ3JhLmN5Z251cy5jby51az4KCgkqIGpjZi1wYXJzZS5jICh5eXBhcnNlKTogdmFyaWFibGUgbGVuIGNoYW5nZWQgZnJvbSBhIGNoYXIgdG8gYW4KCWludCB0byBwcmV2ZW50IG92ZXJmbG93LgoKMTk5OS0wMS0wNiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBqYXZhLXRyZWUuaDogIERlY2xhcmUgcmVhZF9jbGFzcy4KCSogamNmLXBhcnNlLmMgKHJlYWRfY2xhc3MpOiAgTmV3IGZ1bmN0aW9uLgoJKGxvYWRfY2xhc3MpOiAgTm93IGp1c3QgY2FsbCByZWFkX2NsYXNzLgoKCSogamF2YS10cmVlLmggKGphdmFfcGFyc2VfYWJvcnRfb25fZXJyb3IpOiAgT25seSByZXR1cm4gaWYgbmV3IGVycm9ycy4KCSogamNmLXBhcnNlLmMgKHBhcnNlX3NvdXJjZV9maWxlKTogIERlY2xhcmUgc2F2ZV9lcnJvcl9jb3VudCwKCXdoaWNoIGlzIG5lZWRlZCBieSBqYXZhX3BhcnNlX2Fib3J0X29uX2Vycm9yIG1hY3JvLAoJKiBwYXJzZS55IChqYXZhX2xheW91dF9jbGFzc2VzLCBqYXZhX2V4cGFuZF9jbGFzc2VzKTogIExpa2V3aXNlLgoKCSogcGFyc2UueSAocmVnaXN0ZXJfZmllbGRzKTogIFNldCBUUkVFX1NUQVRJQyBmbGFnIG9mIE5FV19BUlJBWV9JTklUCgljb25zdHJ1Y3RvciwgaWYgaW5pdGlhbGl6aW5nIGEgc3RhdGljIGZpZWxkLgoJKHBhdGNoX25ld19hcnJheV9pbml0KTogIFNldCBUUkVFX0NPTlNUQU5UIGlmIGl0IGlzLgoJKiBleHByLmMgKGphdmFfbGFuZ19leHBhbmRfZXhwcik6ICBGb3IgYSBzdGF0aWMgYXJyYXkgY29uc3RydWN0b3IKCW9mIHByaW1pdGl2ZSBlbGVtZW50cywgYWxsb2NhdGUgdGhlIGFycmF5IGl0c2VsZiBzdGF0aWNhbGx5LgoJRGlzYWJsZWQgdW50aWwgd2UgY2FuIHNldCB0aGUgdnRhYmxlIGZpZWxkIHN0YXRpY2FsbHkuCgoJKiBjaGVjay1pbml0LmM6ICBOZXcgZmlsZS4gIENoZWNrcyBmb3IgZGVmaW5pdGUgYXNzaWdubWVudC4KCSogTWFrZWZpbGUuaW4gKEpBVkFfT0JKUyk6ICBBZGQgY2hlY2staW5pdC5vLgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBDYWxsIGNoZWNrX2Zvcl9pbml0aWFsaXphdGlvbi4KCSogcGFyc2UuaCAoQkxPQ0tfRVhQUl9ERUNMUywgQkxPQ0tfRVhQUl9CT0RZKTogIE1vdmVkIHRvIGphdmEtdHJlZS5oLgoKMTk5OS0wMS0wNiAgR3JhaGFtIDxncmFoYW1zQHJjcC5jby51az4KCgkqIHBhcnNlLnkgOiBpbmNsdWRlIHN5c3RlbS5oIGluc3RlYWQgb2YgaW5jbHVkaW5nCglzdGFuZGFyZCBoZWFkZXJzIGRpcmVjdGx5IHdpdGggdGhlIGV4Y2VwdGlvbiBvZiA8ZGlyZW50Lmg+LgoKMTk5OS0wMS0wNiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBsZXguaDogIE1vdmVkIHN0YXRpYyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgdG8gbGV4LmMsCgl0byBzaHV0IHVwIHNvbWUgLVdhbGwgd2FybmluZ3MuCgkqIGxleC5jOiAgU3RhdGljIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBtb3ZlZCBoZXJlLgoJKiBqY2YtZHVtcC5jOiAgU21hbGwgZml4ZXMgdG8gc2h1dCB1cCAtV2FsbCB3YXJuaW5ncy4KCjE5OTktMDEtMDUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2UtbGFuZy5pbiAoJChHQ0opLm8pOiBEZXBlbmQgb24gcHJlZml4LmguCgoxOTk4LTEyLTIyICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAocHJvY2Vzc19qdm1faW5zdHJ1Y3Rpb24pOiAgRG8gbG9hZF90eXBlX3N0YXRlIGFmdGVyIEpTUi4KCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIEZpeCBvZmYtYnktb25lIGVycm9yLgoKCSogamNmLXdyaXRlLmMgKENIRUNLX1BVVCk6ICBBZGQgKHZvaWQpIGNhc3QgdG8gYXZvaWQgLVdhbGwgd2FybmluZ3MuCgkobG9jYWx2YXJfYWxsb2MpOiAgQ2hhbmdlIHJldHVybiB0eXBlIHRvIHZvaWQsCgkoZW1pdF91bm9wKTogIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgc2l6ZS4KCgkqIGpjZi13cml0ZS5jIChzdHJ1Y3QgamNmX2Jsb2NrKTogIEFkZCBuZXcgdW5pb24uCgkoUEVORElOR19DTEVBTlVQX1BDLCBQRU5ESU5HX0VYSVRfUEMsIFVOREVGSU5FRF9QQyk6ICBOZXcgbWFjcm9zLgoJKGNhbGxfY2xlYW51cHMpOiAgTmV3IGZ1bmN0aW9ucy4KCShzdHJ1Y3QgamNmX3BhcnRpYWwpOiAgTmV3IGZpZWxkcyBudW1fZmluYWxpemVycyBhbmQgcmV0dXJuX3ZhbHVlX2RlY2wuCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiAgU3VwcG9ydCBDTEVBTlVQX1BPSU5UX0VYUFIgYW5kCglXSVRIX0NMRUFOVVBfRVhQUi4gIEhhbmRsZSBjbGVhbnVwcyBpbiBSRVRVUk5fRVhQUiBhbmQgRVhJVF9CTE9DS19FWFBSLgoJKiBsYW5nLmMgKGxhbmdfaW5pdCk6ICBDYWxsIHVzaW5nX2VoX2Zvcl9jbGVhbnVwcy4KCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9saHMpOiAgRm9yIFNZTkNIUk9OSVpFRF9FWFBSLCBkZWZlcgoJY29tcGxldGluZyBvcGVyYW5kcyB0byBwYXRjaF9zeW5jaHJvbml6ZWRfc3RhdGVtZW50LgoJU3VwcG9ydCBDTEVBTlVQX1BPSU5UX0VYUFIsIFdJVEhfQ0xFQU5VUF9FWFBSLgoJKHBhdGNoX3N5bmNocm9uaXplZF9zdGF0ZW1lbnQpOiBSZS13cml0ZSBzdWluZyBDTEVBTlVQX1BPSU5UX0VYUFIgYW5kCglXSVRIX0NMRUFOVVBfRVhQUiBpbnN0ZWFkIG9mIFRSWV9FWFBSLgoKMTk5OC0xMi0yMCAgSm9obiBGLiBDYXJyICA8amZjQG1pdC5lZHU+CgoJKiBNYWtlLWxhbmcuaW46IENvbW1lbnQgb3V0IGNvbnRyb2wtTHM7IHRoZXkgdXBzZXQgc29tZSBtYWtlcy4KCjE5OTgtMTItMTggIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGNoZWNrX2NsYXNzX2ludGVyZmFjZV9jcmVhdGlvbik6IFVzZSBESVJfU0VQQVJBVE9SCgljb25zaXN0ZW50bHkuCgoxOTk4LTEyLTE3ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChESVJfU0VQQVJBVE9SKTogTmV3IGRlZmluZS4KCShjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24pOiBVc2UgaXQuCgoJKiBwYXJzZS1zY2FuLnkgKHJlcG9ydF9tYWluX2RlY2xhcmF0aW9uKTogUmVjb2duaXplCglgamF2YS5sYW5nLlN0cmluZycgaW4gYXJndW1lbnQgdG8gbWFpbi4KCjE5OTgtMTItMTYgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogcGFyc2UueSAoY3JlYXRlX2ludGVyZmFjZSk6ICBSZW1vdmUgYm9ndXMgdGVzdC4KCjE5OTgtMTItMTYgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmMgKGdldF9jb25zdGFudCk6ICBTZXQgVFJFRV9UWVBFIGZvciBzdHJpbmcgY29uc3RhbnRzLgoJKEhBTkRMRV9DT05TVEFOVFZBTFVFKTogIElmIGZsYWdfZW1pdF9jbGFzc19maWxlcywgY2FsbCBnZXRfY29uc3RhbnQuCgoxOTk4LTEyLTE2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBwYXJzZS1zY2FuLnkgKHF1YWxpZmllZF9uYW1lKTogVXNlIGNvcnJlY3Qgc3ByaW50ZiBmb3JtYXQuCgoxOTk4LTEyLTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAocHJpbnRfZmllbGRfaW5mbyk6IENoYW5nZWQgaG93IG1vc3QgbmVnYXRpdmUgbnVtYmVyIGlzCglwcmludGVkLgoKMTk5OC0xMi0xNCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChmb2xkX2NvbnN0YW50X2Zvcl9pbml0KTogIE5ldyBmdW5jdGlvbi4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6ICBEb24ndCByZXBsYWNlIHN0YXRpYyBmaW5hbAoJY29uc3RhbnQtaW5pdGlhbGl6ZWQgZmllbGRzIGJ5IGl0cyB2YWx1ZS4KCShqYXZhX2NvbXBsZXRlX2xocyk6ICBOZXcuICBTYW1lIGFzIGphdmFfY29tcGxldGVfdHJlZSwgZXhjZXB0IGRvZXMKCW5vdCByZXBsYWNlIHN0YXRpYyBmaW5hbCBjb25zdGFudC1pbml0aWFsaXplZCBmaWVsZHMgYnkgdGhlaXIgdmFsdWVzLgoJKHJlZ2lzdGVyX2ZpZWxkcyk6ICBJZiB0aGVyZSBpcyBhbiBpbml0aWFsaXplciwgc2V0IERFQ0xfSU5JVElBTCBhbmQKCU1PRElGWV9FWFBSX0ZST01fSU5JVElBTElaQVRJT05fUC4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiAgRm9yIE1PRElGWV9FWFBSLCB1c2UgamF2YV9jb21wbGV0ZV9saHMgZm9yIGxocy4KCU9ubHkgY2FsbCBwYXRjaF9pbml0aWFsaXplZF9zdGF0aWNfZmllbGQgaWYKCU1PRElGWV9FWFBSX0ZST01fSU5JVElBTElaQVRJT05fUC4KCShwYXRjaF9pbml0aWFsaXplZF9zdGF0aWNfZmllbGQpOiAgSWYgbm90IHZhbGlkIGNvbnN0YW50LCBjbGVhcgoJREVDTF9JTklUSUFMLgoKCSogcGFyc2UueSAobG9va3VwX2ZpZWxkX3dyYXBwZXIpOiAgRml4IHRoaW5rby4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfdHJlZSk6ICBJbiBFWFBSX1dJVEhfRklMRV9MT0NBVElPTiwKCXNldCBhbmQgcmVzdG9yZSBnbG9iYWwgbGluZW5vLgoKMTk5OC0xMi0xNCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKHByaW50X2ZpZWxkX2luZm8pOiBJZiB2YWx1ZSB0byBwcmludCBpcyB0aGUgc21hbGxlc3QKCXZhbHVlIG9mIGl0cyBzaXplLCB0aGVuIHByaW50IGFzIGhleCB0byBhdm9pZCBsYXRlciB3YXJuaW5ncyBmcm9tCglDKysgY29tcGlsZXIuCgoxOTk4LTEyLTE0ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAoZGVjb21waWxlX21ldGhvZCk6IERlY29tcGlsZSBgcmV0dXJuIG51bGwnLgoJKHByb2Nlc3NfZmlsZSk6IEdlbmVyYXRlIGAjcHJhZ21hIGludGVyZmFjZScuCgkobWV0aG9kX2RlY2xhcmVkKTogTmV3IGdsb2JhbC4KCShwcmludF9tZXRob2RfaW5mbyk6IFNldCBpdC4KCShIQU5ETEVfQ09ERV9BVFRSSUJVVEUpOiBPbmx5IHByaW50IGl0IG1ldGhvZF9kZWNsYXJlZCBzZXQuCgkocHJpbnRfbWV0aG9kX2luZm8pOiBIYW5kbGUgYWJzdHJhY3QgbWV0aG9kcy4KCjE5OTgtMTItMTMgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiAgSWYgY2xhc3NfZGVjbCBpcyBudWxsCgkoZS5nLiBhbiBhcnJheSB0eXBlKSwgdXNlIG9yaWdpbmFsIHR5cGUuCgoJKiBwYXJzZS55IChjaGVja190aHJvd25fZXhjZXB0aW9ucyk6ICBUZW1wb3JhcnkgaGFjayB0byBzdXBwcmVzcwoJZXJyb3JzIGFib3V0IHVuY2F1Z2h0IGV4Y2VwdGlvbiBmcm9tIGNsb25lIChvZiBhcnJheSwgc3BlY2lmaWNhbGx5KS4KCjE5OTgtMTItMTMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChkZWNvbXBpbGVfbWV0aG9kKTogSGFuZGxlIGFsbCB0eXBlcyBvZiBgcmV0dXJuJwoJb3Bjb2RlLiAgRGVjb21waWxlIGByZXR1cm4gdGhpcycgYW5kIGByZXR1cm4nLgoJKG1ldGhvZF9hY2Nlc3MpOiBOZXcgZ2xvYmFsLgoJKHByaW50X21ldGhvZF9pbmZvKTogU2V0IGl0LgoJKGRlY29tcGlsZV9tZXRob2QpOiBEb24ndCBkZWNvbXBpbGUgYSBzeW5jaHJvbml6ZWQgbWV0aG9kLgoKMTk5OC0xMi0xMyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogamNmLXJlYWRlci5jIChqY2ZfcGFyc2Vfb25lX21ldGhvZCk6IFJlY29nbml6ZQoJSEFORExFX0VORF9NRVRIT0QuCgkqIGdqYXZhaC5jIChIQU5ETEVfRU5EX01FVEhPRCk6IE5ldyBtYWNyby4KCShIQU5ETEVfQ09ERV9BVFRSSUJVVEUpOiBOZXcgbWFjcm8uCgkoZGVjb21waWxlX21ldGhvZCk6IE5ldyBmdW5jdGlvbi4KCShwcmludF9tZXRob2RfaW5mbyk6IERvbid0IHByaW50IGA7XG4nIGF0IGVuZCBvZiBmdW5jdGlvbiBkZWNsLgoJSW5jbHVkZSBqYXZhLW9wY29kZXMuaC4KCShkZWNvbXBpbGVkKTogTmV3IGdsb2JhbC4KCjE5OTgtMTItMTIgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfY2xhc3NfcmVmKTogIEhhbmRsZSBQUklNVFlQRS5jbGFzcyBpZgoJZmxhZ19lbWl0X2NsYXNzX2ZpbGVzLgoJKiBleHByLmMgKGV4cGFuZF9qYXZhX2ZpZWxkX29wKTogIERvbid0IG9wdGltaXplIGphdmEubGFuZy5YWFguVFlQRQoJaWYgZmxhZ19lbWl0X2NsYXNzX2ZpbGVzLgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX3RyZWUpOiAgUHJlLWxpbWluYXJ5IHN1cHBvcnQgZm9yCglDT01QT05FTlRfUkVGIC0gb25seSB0byBoYW5kbGUgUFJJTUNMQVNTLlRZUEUuCgoJKiBwYXJzZS55IChwYXRjaF9zeW5jaHJvbml6ZWRfc3RhdGVtZW50KTogICBEb24ndCBjYWxsIG1vbml0b3JleGl0Cgl1bmxlc3MgYmxvY2sgQ0FOX0NPTVBMRVRFX05PUk1BTExZLiAgUHJvcGFnYXRlIHRoYXQgZmxhZyBwcm9wZXJseS4KCgkqIGphdmEtdHJlZS5oIChERUNMX0xPQ0FMX1NUQVRJQ19WQUxVRSk6ICBSZW1vdmVkIC0gbm8gbG9uZ2VyIHVzZWQuCgoJKiB6aXBmaWxlLmggKG9wZW5kaXJfaW5femlwKTogIE5ldyBkZWNsYXJhdGlvbi4KCSogamNmLWlvLmMgKHNhd19qYXZhX3NvdXJjZSk6ICBNb3ZlZCB0byBqY2YtcGFyc2UuYy4KCShvcGVuZGlyX2luX3ppcCk6ICBOZXcgZnVuY3Rpb24sIHVzaW5nIGNvZGUgZnJvbSBvcGVuX2luX3ppcC4KCShvcGVuX2luX3ppcCk6ICBDYWxsIG9wZW5kaXJfaW5femlwLgoJKGZpbmRfY2xhc3MpOiAgUmVtb3ZlIG5vLWxvbmdlci11c2VkIGRvX2NsYXNzX2ZpbGUgcGFyYW1ldGVyLAoJYnV0IGFkZCBzb3VyY2Vfb2sgcGFyYW1ldGVyLiAgQ2hhbmdlIGxvZ2ljIHNvIGlmIHdlIGZpbmQgYSAuamF2YSBmaWxlLAoJd2UgZG9uJ3QgbG9vayBmb3IgLmNsYXNzIGluIGxhdGVyIGNsYXNzcGF0aCBlbXRyaWVzLgoJKiBqY2YtcGFyc2UuYyAobG9hZF9jbGFzcyk6ICBQYXNzIHNhd19qYXZhX3NvdXJjZSB0byBmaW5kX2NsYXNzLgoJKGpjZl9maWd1cmVfZmlsZV90eXBlKTogIE9ubHkgY2FsbCBvcGVuX2luX3ppcCBpZiBjb3JyZWN0IG1hZ2ljIG51bWJlci4KCSogZ2phdmFoLmM6IFVwZGF0ZSBjYWxsIHRvIGZpbmRfY2xhc3MuCgkqIGpjZi1kdW1wLmM6ICBMaWtld2lzZS4KCgkqIGpjZi13cml0ZS5jIChwdXRfbGluZW51bWJlcik6ICBIYW5kbGUgZHVwbGljYXRlIGxpbmUgbnVtYmVycy4KCShnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6ICBGb3IgRVhQUl9XSVRIX0ZJTEVfTE9DQVRJT04sIGRvCglub3RoaW5nIGlmIGJvZHkgaXMgZW1wdHlfc3RtdF9ub2RlLgoJVmFyaW91cyBsaXR0bGUgZml4ZXMgc28gU1AgZ2V0cyBjb3JyZWN0bHkgYWRqdXN0ZWQuCglGb3IgTkVXX0FSUkFZX0lOSVQsIGhhbmRsZSBJR05PUkVfVEFSR0VULgoJRm9yIENBTExfRVhQUiwgdGVzdCBpZiBzdGF0aWMgZmlyc3QuCgkoZ2VuZXJhdGVfY2xhc3NmaWxlKTogIElnbm9yZSBmaWVsZHMgdGhhdCBhcmUgREVDTF9BUlRJRklDSUFMLAoJc3VjaCBhcyB0aGUgb25lcyB3ZSBjcmVhdGUgZm9yIE9iamVjdCBhbmQgQ2xhc3MuCglTZXQgYW5kIHJlc3RvcmUgY3VycmVudF9mdW5jdGlvbl9kZWNsLgoJKiBwYXJzZS55OiAgQ2hlY2svc2V0IElTX0FOX0lNUE9SVF9PTl9ERU1BTkRfUCBpbiByZWFkX2ltcG9ydF9kaXIuCgkobm90ZV9wb3NzaWJsZV9jbGFzc25hbWUpOiAgTmV3IGZ1bmN0aW9uLgoJKHJlYWRfaW1wb3J0X2VudHJ5KTogIFJlbW92ZWQuICBNZXJnZWQgd2l0aCByZWFkX2ltcG9ydF9kaXIuCgkocmVhZF9pbXBvcnRfZGlyKTogIERvbid0IGNhbGwgZmluZF9jbGFzcyAtIHRoYXQgb25seSBnaXZlcyB1cwoJdGhlIGZpcnN0IGNsYXNzcGF0aCBlbnRyeSBoYXZpbmcgdGhlIG5lZWRlZCBwYWNrYWdlLgoJVXNlIHRoZSBzdHJ1Y3QgYnVmZmVyIGRhdGEgc3RydWN0dXJlIGZyb20gYnVmZmVyLmguCgkocmVhZF9pbXBvcnRfZGlyLCBmaW5kX2luX2ltcG9ydHNfb25fZGVtYW5kKTogIFRoZSByZW1lbWJlcmVkCgljbGFzcyBuYW1lcyBub3cgdXNlICcuJyAobm90ICcvJykgYXMgcGFja2FnZSBzZXBhcmF0b3IuCgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogIENhbGwgd3JpdGVfY2xhc3NmaWxlCgloZXJlLCBhbmQgbm90IGluIGphdmFfZXhwYW5kX2NsYXNzZXMgKHdoaWNoIG9ubHkgZ2V0cyBmaXJzdCBjbGFzcykuCgoxOTk4LTEyLTEyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKDx0eXBlX2RlY2xhcmF0aW9uPik6ICBEbyBtYXliZV9nZW5lcmF0ZV9jbGluaXQgbGFzdC4KCShyZWdpc3Rlcl9maWVsZHMpOiAgSWYgYSBzdGF0aWMgZmllbGRzIGhhcyBhbiBpbml0aWFsaXplciwganVzdAoJY2hhaW4gaXQgb24gY3R4cC0+c3RhdGljX2luaXRpYWxpemVkLCBhbmQgaGFuZGxlIGxhdGVyLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiAgRm9yY2UgPGNsaW5pdD4gZmlyc3QuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUsIHJlc29sdmVfZmllbGRfYWNjZXNzKTogIEp1c3QgZ2V0IERFQ0xfSU5JVElBTAoJLSBpdCdzIGFscmVhZHkgYmVlbiBjb21wbGV0ZWQuCgkocGF0Y2hfaW5pdGlhbGl6ZWRfc3RhdGljX2ZpZWxkKTogIE5ldyBmdW5jdGlvbi4KCShqYXZhX2NvbXBsZXRlX2ZpZWxkKTogIENhbGwgaXQuCgoxOTk4LTEyLTEyICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZW5jb2RlX25ld2FycmF5X3R5cGUsIGJ1aWxkX25ld19hcnJheSk6ICBOZXcgZnVuY3Rpb25zLgoJKiBqYXZhLXRyZWUuaDogIERlY2xhcmUgYnVpbGRfbmV3X2FycmF5LgoJKiBqY2Ytd3JpdGUuYyAocGF0Y2hfbmV3YXJyYXkpOiAgVXNlIGJ1aWxkX25ld19hcnJheS4KCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHApOiAgU3VwcG9ydCBORVdfQVJSQVlfSU5JVC4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogIFN1cHBvcnQgTkVXX0FSUkFZX0lOSVQuCgoJKiBwYXJzZS55IChwYXRjaF9uZXdfYXJyYXlfaW5pdCk6ICBSZS1vcmdhbml6ZS4KCU5vdyBpcyBwYXNzZWQgdGhlIGFjdHVhbCBhcnJheSAocG9pbnRlcikgdHlwZSBvZiB0aGUgdmFsdWUuCglTZXQgdGhlIHR5cGUgb2YgdGhlIENPTlNUUlVDVE9SIHRvIGJlIGFuIEFSUkFZX1RZUEUuCgkocGF0Y2hfYXJyYXlfY29uc3RydWN0b3IpOiAgUmVtb3ZlZCAtIG1lcmdlZCBpbnRvIHBhdGNoX25ld19hcnJheV9pbml0LgoJKGphdmFfY29tcGxldGVfdHJlZSk6ICBVcGRhdGUgcGF0Y2hfbmV3X2FycmF5X2luaXQuCgoJKiBqY2Ytd3JpdGUuYyAoZmluZF9jb25zdGFudF9pbmRleCk6ICBOZXcgZnVuY3Rpb24uCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiAgVXNlIGZpbmRfY29uc3RhbnRfaW5kZXguCgkoZ2VuZXJhdGVfY2xhc3NmaWxlKTogIFVzZSBmaW5kX2NvbnN0YW50X2luZGV4IGZvciBDb25zdGFudFZhbHVlLgoKMTk5OC0xMi0xMSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZXhwci5jIChpbnZva2VfYnVpbGRfZHRhYmxlKTogUmVuYW1lZCBkdGFibGUgLT4gdnRhYmxlLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUmVuYW1lZCBkdGFibGUgLT4gdnRhYmxlLgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBSZW5hbWVkIGR0YWJsZSAtPiB2dGFibGUsIGFuZAoJZHRhYmxlX21ldGhvZF9jb3VudCAtPiB2dGFibGVfbWV0aG9kX2NvdW50LgoKMTk5OC0xMi0xMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGxvbmdfemVyb19ub2RlLCBmbG9hdF96ZXJvX25vZGUsIGRvdWJsZV96ZXJvX25vZGUpOiBOZXcKCWdsb2JhbCB2YXJpYWJsZXMsIGluaXRpYWxpemVkLgoJKiBqYXZhLXRyZWUuaCAobG9uZ196ZXJvX25vZGUsIGZsb2F0X3plcm9fbm9kZSwgZG91YmxlX3plcm9fbm9kZSk6CglEZWNsYXJlZCBuZXcgZ2xvYmFsIHZhcmlhYmxlcy4KCSogbGV4LmMgKGphdmFfbGV4KTogUmV0dXJuIGxvbmdfemVyb19ub2RlLCBmbG9hdF96ZXJvX25vZGUsCglkb3VibGVfemVyb19ub2RlLCBpbnRlZ2VyX3plcm9fbm9kZSB1cG9uIGRpcmVjdCBtYXRjaGluZy4KCSogcGFyc2UueSAocHVyaWZ5X3R5cGVfbmFtZSk6IEFkZGVkIGZ1bmN0aW9uIHByb3RvdHlwZS4KCShkdXBsaWNhdGVfZGVjbGFyYXRpb25fZXJyb3JfcCk6IENvbnNpZGVyIG5ld190eXBlIGFzIHBvdGVudGlhbGx5CgliZWluZyBhIGluY29tcGxldGUgdHlwZS4gVXNlIHB1cmlmeV90eXBlX25hbWUgb24gdHlwZSBzdHJpbmcuCgkobWV0aG9kX2hlYWRlcik6IHNhdmVkX3R5cGU6IHVudXNlZCB2YXJpYWJsZSByZW1vdmVkLiBEb24ndCBmaWd1cmUKCXJldHVybiB0eXBlIGlmIG1ldGhvZCBuYW1lIGlzIGludmFsaWQuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogU2V0IENBTl9DT01QTEVURV9OT1JNQUxMWSBhZnRlciBgbm9kZScgd2FzCglwcm9jZXNzZWQgYnkgcGF0Y2hfdW5hcnlvcC4KCShwYXRjaF91bmFyeW9wKTogRml4ZWQgdHlwbyBpbiBjb21tZW50LiBSZS1jb252ZXJ0IHByZS9wb3N0CglpbmNyZW1lbnQvZGVjcmVtZW50IG5vZGUgaW50byBpdHMgb3JpZ2luYWwgdHlwZSBhZnRlciBiaW5hcnkKCW51bWVyaWMgcHJvbW90aW9uIG9uIGl0cyBvcGVyYW5kcy4KCjE5OTgtMTItMTAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoYXJyYXlfaW5pdGlhbGl6ZXI6KTogQXJyYXkgaW5pdCBvcGVyYW5kIGlzIE5VTExfVFJFRQoJaW5zdGVhZCBvZiBhIFRSRUVfTElTVCBvZiBOVUxMX1RSRUVzIHdoZW4gcGFyc2luZyBge30nLiBgeyx9JyBpcwoJbm93IGFuIGVycm9yLiBGaXhlZCBpbmRlbnRhdGlvbiBwcm9ibGVtcy4KCShwYXRjaF9zdHJpbmcpOiBIYW5kbGUgZXJyb3JfbWFya19ub2RlIGFzIGFuIGFyZ3VtZW50LgoJKHBhdGNoX25ld19hcnJheV9pbml0KTogRml4ZWQgaW5kZW50YXRpb24gcHJvYmxlbXMuCgkoYXJyYXlfY29uc3RydWN0b3JfY2hlY2tfZW50cnkpOiBSZW1vdmVkIGNoZWNrIG9uIG51bGwgd2ZsX3ZhbHVlLgoJUmV0dXJuIGFuIGVycm9yIGlmIHdmbF92YWx1ZSdzIHdhbGsgcmV0dXJucyBhbiBlcnJvci4KCjE5OTgtMTItMDkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmRlZiAoTkVXX0FSUkFZX0lOSVQpOiBOZXcgSmF2YSB0cmVlIGNvZGUuCgkqIGxleC5jIChqYXZhX2xleCk6IFJlbWVtYmVyIGNvbHVtbiBwb3NpdGlvbiBiZWZvcmUgYWR2YW5jaW5nIG9uZQoJdG9rZW4uIFJldGFpbiBsb2NhdGlvbiBpbmZvcm1hdGlvbiBvbiBPQ0JfVEsuCgkqIGxleC5oICh0eXBlZGVmIHN0cnVjdCBqYXZhX2xjKTogQWRkZWQgbmV3IGZpZWxkLgoJKiBwYXJzZS5oIChHRVRfU0tJUF9UWVBFKTogTmV3IG1hY3JvLgoJKFFVQUxfREVDTF9UWVBFKTogUmVkZWZpbmVkIHVzaW5nIEdFVF9TS0lQX1RZUEUuCgkqIHBhcnNlLnkgKGJ1aWxkX25ld19hcnJheV9pbml0LCBwYXRjaF9uZXdfYXJyYXlfaW5pdCwKCXBhdGNoX2FycmF5X2NvbnN0cnVjdG9yLCBtYXliZV9idWlsZF9hcnJheV9lbGVtZW50X3dmbCwKCWFycmF5X2NvbnN0cnVjdG9yX2NoZWNrX2VudHJ5KTogTmV3IGZ1bmN0aW9uIHByb3RvdHlwZXMuCgkoc3dpdGNoX2Jsb2NrOik6IFRhZ2dlZCA8bm9kZT4uCgkoT0NCX1RLKTogVGFnZ2VkIDxvcGVyYXRvcj4uCgkoYXJyYXlfaW5pdGlhbGl6ZXI6KTogSW5zdGFsbGVkIGFjdGlvbnMuCgkodmFyaWFibGVfaW5pdGlhbGl6ZXIpOiBCdWlsZCBsb2NhdGlvbiBpbmZvcm1hdGlvbiBvbiBlbGVtZW50IGlmCgluZWNlc3NhcnkuCgkoc3dpdGNoX3N0YXRlbWVudDopOiBGaXhlZCBpbmRlbnRhdGlvbiB0eXBvLgoJKHN3aXRjaF9ibG9jazopOiBSZWRlZmluZWQgZGVmYXVsdCBhY3Rpb24uCgkoamF2YV9jb21wbGV0ZV90cmVlKTogSGFuZGxlIE5FV19BUlJBWV9JTklUIGluIE1PRElGWV9FWFBSOi4KCShwYXRjaF9hc3NpZ25tZW50KTogUmVtb3ZlZCBkdXBsaWNhdGUgY29kZS4KCShtYXliZV9idWlsZF9hcnJheV9lbGVtZW50X3dmbCwgYnVpbGRfbmV3X2FycmF5X2luaXQsCglwYXRjaF9uZXdfYXJyYXlfaW5pdCwgcGF0Y2hfYXJyYXlfY29uc3RydWN0b3IsCglhcnJheV9jb25zdHJ1Y3Rvcl9jaGVja19lbnRyeSk6IE5ldyBmdW5jdGlvbnMuCgoxOTk4LTEyLTA3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGFycmF5X2luaXRpYWxpemVyKTogVGFnZ2VkIDxub2RlPi4KCSh2YXJpYWJsZV9pbml0aWFsaXplcjopOiBVc2UgZGVmYXVsdCBydWxlLgoJKGFycmF5X2luaXRpYWxpemVyOik6IERlZmluZWQgYWN0aW9ucy4KCSh2YXJpYWJsZV9pbml0aWFsaXplcnM6KTogTGlrZXdpc2UuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogVXNlIERFQ0xfQ09OVEVYVCB0byBidWlsZAoJbm9uLXN0YXRpYyBmaWVsZCBhY2Nlc3Nlcy4KCShwYXRjaF9pbnZva2UpOiBGaXhlZCBpbmRlbnRhdGlvbiB0eXBvLgoJKGphdmFfY29tcGxldGVfdHJlZSk6IExpa2V3aXNlLgoJKGJ1aWxkX2xhYmVsZWRfYmxvY2spOiBDaGFuZ2VkIGxlYWRpbmcgY29tbWVudC4gR2VuZXJhdGUgYW4gZXJyb3IKCWluIGNhc2Ugb2YgZHVwbGljYXRlIGxvb3AgbGFiZWxzLgoJKHBhdGNoX2NvbmRpdGlvbmFsX2V4cHIpOiBQYXRjaCByZXN1bHRzIG9mIHN0cmluZyBjb25jYXRlbmF0aW9uCglvcGVyYXRpb25zLgoKMTk5OC0xMi0wNiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjb25zdGFudHMuYyAoZmluZF9tZXRob2RyZWZfaW5kZXgpOiAgV2hlbiB0aGUgY2xhc3MgaXMgYW4gaW50ZXJmYWNlLAoJZ2VuZXJhdGUgQ09OU1RBTlRfSW50ZXJmYWNlTWV0aG9kcmVmIGluc3RlYWQgb2YgYSBDT05TVEFOVF9NZXRob2RSZWYuCgoJKiBkZWNsLmMgKGZpbml0X2lkZW50aWZpZXJfbm9kZSk6ICBVc2UgIiRmaW5pdCQiLCByYXRoZXIgdGhhbgoJIjxmaW5pdD4iICh3aGljaCBTdW4ncyB2ZXJpZmllciByZWplY3RzKS4KCSogcGFyc2UueSAobWF5YmVfZ2VuZXJhdGVfZmluaXQpOiAgTGVhdmUgb3V0IG1lYW5pbmdsZXNzIGZpbmFsIGZsYWcuCgkoZ2VuZXJhdGVfZmllbGRfaW5pdGlhbGl6YXRpb25fY29kZSk6ICBSZW1vdmVkLgoJKGZpeF9jb25zdHJ1Y3RvcnMpICBEb24ndCBhZGQgY2FsbCB0byAkZmluaXQkIGhlcmUgKHdyb25nIG9yZGVyKS4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6ICBBZGQgJGZpbml0JCBjYWxsIGhlcmUuCgoJKiBqYXZhLXRyZWUuaCAoQ0FMTF9VU0lOR19TVVBFUik6ICBOZXcgbWFjcm8uCgkqIHBhcnNlLnkgKHBhdGNoX2ludm9rZSk6ICBSZW1vdmUgaW0gbG9jYWwgdmFyaWFibGUuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24sIHBhdGNoX2ludm9rZSk6ICBEb24ndCBwYXNzIHN1cGVyIHBhcmFtZXRlci4KCShwYXRjaF9pbnZva2UpOiAgVXNlIENBTExfVVNJTkdfU1VQRVIgaW5zdGVhZCBvZiBmcm9tX3N1cGVyIHBhcmFtZXRlci4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiAgTWF5YmUgc2V0IENBTExfVVNJTkdfU1VQRVIuCgoJKiBqY2Ytd3JpdGUuYyAoZ2V0X2FjY2Vzc19mbGFncyk6ICBGaXggdHlwbyBBQ0NfUFVCTElDIC0+IEFDQ19GSU5BTC4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfdHJlZSk6ICBEb24ndCBjb21wbGFpbiBhYm91dCB1bnJlYWNoYWJsZQoJc3RhdGVtZW50IGlmIGl0IGlzIGVtcHR5X3N0bXRfbm9kZS4KCgkqIGpjZi13cml0ZS5jIChmaW5kX2NvbnN0YW50X3dpZGUpOiAgTmV3IGZ1bmN0aW9uLgoJKHB1c2hfbG9uZ19jb25zdCk6ICBVc2UgZmluZF9jb25zdGFudF93aWRlLgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc24pOiAgRml4IGJ1ZyBpbiBzd2l0Y2ggaGFuZGxpbmcuCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbik6ICBVc2UgY29ycmVjdCBkdXAgdmFyaWFudCBmb3IgTU9ESUZZX0VYUFIuCglBZGQgInJlZHVuZGFudCIgTk9URV9QVVNIL05PVEVfUE9QIHVzZXMgc28gY29kZV9TUF9tYXggZ2V0cyBzZXQuCglFbWl0IGludm9rZWludGVyZmFjZSB3aGVuIGNhbGxpbmcgYW4gaW50ZXJmYWNlIG1ldGhvZC4KCUVtaXQgaW52b2tlc3BlY2lhbCBhbHNvIHdoZW4gY2FsbGluZyBzdXBlciBvciBwcml2YXRlIG1ldGhvZHMuCgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfY2xhc3NmaWxlKTogIEVtaXQgQ29uc3RhbnRWYWx1ZSBhdHRyaWJ1dGVzLgoKMTk5OC0xMi0wNiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBqY2YtZHVtcC5jIChJTlZPS0UpOiAgSWYgaW52b2tlaW50ZXJmYWNlLCBwcmludCBudW1iZXIgb2YgYXJncy4KCjE5OTgtMTItMDMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmggKGphdmFfbGF5b3V0X3NlZW5fY2xhc3NfbWV0aG9kcyk6IE5ldyBmdW5jdGlvbgoJcHJvdG90eXBlLgoJKExBWU9VVF9TRUVOX0NMQVNTX01FVEhPRFMpOiBNYWNybyByZW1vdmVkLgoJKiBqY2YtcGFyc2UuYyAocGFyc2VfY2xhc3NfZmlsZSk6IENhbGwgamF2YV9sYXlvdXRfc2Vlbl9jbGFzc19tZXRob2RzLgoJKiBwYXJzZS5oIChQUk9NT1RFX1JFQ09SRF9JRl9DT01QTEVURSk6IE5ldyBtYWNyby4KCSogcGFyc2UueSAobWV0aG9kX2RlY2xhcmF0b3I6KTogRGVmaW5lZCBhY3Rpb24uCgkoaXNzdWVfd2FybmluZ19lcnJvcl9mcm9tX2NvbnRleHQpOiBpbnB1dF9maWxlbmFtZSBzYXZlZCwgc2V0IHRvCgl0aGUgYXBwcm9wcmlhdGUgdmFsdWUgYW5kIHJlc3RvcmVkIGFmdGVyIGphdmFfZXJyb3IgaXMgY2FsbGVkLgoJKGJ1aWxkX3VucmVzb2x2ZWRfYXJyYXlfdHlwZSk6IEZpeGVkIGNvbW1lbnQuCgkocmVnaXN0ZXJfZmllbGRzKTogVXNlIFBST01PVEVfUkVDT1JEX0lGX0NPTVBMRVRFLgoJKG1ldGhvZF9oZWFkZXIpOiBEZWFsIHdpdGggcmV0dXJuIHR5cGUgdGhlIHNhbWUgd2F5IHR5cGUgYXJlCgloYW5kbGVkIGZvciBmaWVsZHMgYW5kIG1ldGhvZCdzIHBhcmFtZXRlcnMgYW5kIGxvY2FsIHZhcmlhYmxlcwoJdHlwZXMgYXJlIGhhbmRsZWQuCgkoY2hlY2tfbWV0aG9kX3JlZGVmaW5pdGlvbik6IFJlbW92ZWQgZXh0cmEgQ1IuCgkoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBVc2UgUFJPTU9URV9SRUNPUkRfSUZfQ09NUExFVEUuCgkoamF2YV9sYXlvdXRfc2Vlbl9jbGFzc19tZXRob2RzKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfbGF5b3V0X2NsYXNzZXMpOiBDYWxsIGphdmFfbGF5b3V0X3NlZW5fY2xhc3NfbWV0aG9kcy4KCjE5OTgtMTItMDMgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogcGFyc2UseSAocGF0Y2hfc3luY2hyb25pemVkX3N0YXRlbWVudCk6ICBTZXQgQ0FOX0NPTVBMRVRFX05PUk1BTExZLgoKMTk5OC0xMi0wMyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBqY2YtZHVtcC5jIChtYWluKTogIEZpeCBlcnJvciBtZXNzYWdlLgoJKiBqY2YtcGF0aC5jIChhZGRfZW50cnkpOiAgU3R5bGUgZml4LgoKMTk5OC0xMi0wMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3NfbWV0aG9kKTogQ2FsbCBidWlsZF9qYXZhX2FyZ3VtZW50X3NpZ25hdHVyZQoJb24gY29uc3RydWN0b3JzIHRvby4KCSogcGFyc2UueSAoY2hlY2tfbWV0aG9kX3JlZGVmaW5pdGlvbik6IFVzZSBUWVBFX0FSR1VNRU5UX1NJR05BVFVSRS4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IERlZmluZSBhIHByaW1hcnkgd2hlbiByZXNvbHZpbmcgYW4KCWV4cHJlc3Npb24gbmFtZS4gQXVnbWVudGVkIGNvbW1lbnQgb24gY29kZSBjaGVja2luZyBpbGxlZ2FsIGB0aGlzJwoJdXNhZ2UuIExvb3NlbmVkIGl0IHRlc3QgYnkgYWNjZXB0aW5nIE5FV19DTEFTU19FWFBSLgoKMTk5OC0xMi0wMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3NfbWV0aG9kKTogRG9uJ3QgcmVwb3J0IGVycm9yIG9uIG5vbi1zdGF0aWMKCW92ZXJyaWRpbmcgc3RhdGljIGlmIHRoZSBtZXRob2QgaXMgcHJpdmF0ZS4KCSogamF2YS10cmVlLmggKGZpbmlzaF9jbGFzcyk6IFByb3RvdHlwZSBhZGRlZC4KCSogbGV4LmMgKGphdmFfZ2V0X2xpbmVfY29sKTogSGFuZGxlIGNvbCBhcmd1bWVudCAtMiB2YWx1ZS4KCSogcGFyc2UuaDogQWxsIHN0YXRpYyBtZXRob2QgZGVjbGFyYXRpb25zIG1vdmVkIHRvIHBhcnNlLnkuCgkqIHBhcnNlLnk6IE5vdyBjb250YWlucyBhbGwgc3RhdGljIG1ldGhvZCBkZWNsYXJhdGlvbnMgcHJldmlvdXNseQoJZm91bmQgaW4gcGFyc2UuaC4KCShmaW5kX2V4cHJfd2l0aF93ZmwsIG1pc3NpbmdfcmV0dXJuX2Vycm9yLAoJdW5yZWFjaGFibGVfc3RtdF9lcnJvcik6IE5ldyBmdW5jdGlvbnMuCgkoamF2YV9nZXRfcmVhbF9tZXRob2RfbmFtZSk6IElkZW50aWZ5IGNvbnN0cnVjdG9ycyBiZWFyaW5nIGNsYXNzCgluYW1lcyBpbiBzb3VyY2UgY29kZSBjb21waWxlZCBjbGFzc2VzIG9ubHkuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IENhbGwgbWlzc2luZ19yZXR1cm5fZXJyb3IuCgkoaW52b2NhdGlvbl9tb2RlKTogUHJpdmF0ZSBtZXRob2RzIGludm9rZWQgYXMgc3RhdGljIG1ldGhvZHMuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogQ2FsbCB1bnJlYWNoYWJsZV9zdG10X2Vycm9yLgoKMTk5OC0xMi0wMSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKCt0YXJnZXQpOiBSZW1vdmVkLgoJKCt4bWFrZV9maWxlKTogTGlrZXdpc2UuCgkoK3RtYWtlX2ZpbGUpOiBMaWtld2lzZS4KCSguTk9FWFBPUlQpOiBSZW1vdmVkIGR1cGxpY2F0ZS4KCjE5OTgtMTEtMjcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChqYzEsIGp2LXNjYW4pOiBMaW5rIHdpdGggJChTVUJESVJfT0JTVEFDSykuCgoJKiBqdi1zY2FuLmM6IEZpeCB4bWFsbG9jIHByb3RvdHlwZS4gIFByb3ZpZGUgYW4geG1hbGxvYyBkZWZpbml0aW9uLgoKCSoganZnZW5tYWluLmM6IFJlbW92ZSB0aGUgeG1hbGxvYyBwcm90b3R5cGUsIHdlIGdldCBpdCBmcm9tCglsaWJpYmVydHkuaC4gIFByb3ZpZGUgYW4geG1hbGxvYyBkZWZpbml0aW9uLgoKCSoganZzcGVjLmM6IFJlbW92ZSB0aGUgeG1hbGxvYyBwcm90b3R5cGUuCgoJKiBwYXJzZS1zY2FuLnk6IEluY2x1ZGUgY29uZmlnLmggYW5kIHN5c3RlbS5oLiAgRG9uJ3QgaW5jbHVkZQoJT1MgaGVhZGVycyBvciBnYW5zaWRlY2wuaC4gIERvbid0IHByb3RvdHlwZSB4bWFsbG9jL3hzdHJkdXAuCglQcm92aWRlIGFuIHhzdHJkdXAgZGVmaW5pdGlvbi4KCjE5OTgtMTEtMjYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogamNmLXBhdGguYyAoYWRkX2VudHJ5KTogUmVjb2duaXplICIuamFyIiB0b28uCgkqIGxhbmctc3BlY3MuaDogTGlrZXdpc2UuCgoxOTk4LTExLTI2ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6ICBJbiBDYWxsX0VYUFIsIGhhbmRsZQoJc29mdF9tb25pdG9yZW50ZXJfbm9kZSwgc29mdF9tb25pdG9yZXhpdF9ub2RlLCB0aHJvd19ub2RlLgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKToKCUhhbmRsZSBwcmUvcG9zdC1pbmNyZW1lbnQvZGVjcmVtZW50IG9mIGxvbmcuCgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOgoJSGFuZGxlIG1pc3NpbmcgZXhjZXB0aW9uIGhhbmRsZXIgKGZpbmFsbHkgZm9yIHN5bmNocm9uaXplZCkuCgoxOTk4LTExLTI1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5oIChlbmRfcGFyYW1zX25vZGUpOiAgRGVjbGFyZSBnbG9iYWwuCgkqIGRlY2wuYyAoZW5kX3BhcmFtc19ub2RlKTogIE5ldyBnbG9iYWwuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcsIHN0YXJ0X2phdmFfbWV0aG9kKTogIFVzZSBlbmRfcGFyYW1zX25vZGUgZm9yCgllbmQgb2YgbGlzdCBvZiBwYXJhbWV0ZXIgdHlwZXMuICBGb2xsb3dzIGNvcnJlY3QgZ2NjIGNvbnZlbnRpb25zLgoJKiBleHByLmMgKHBvcF9hcmd1bWVudF90eXBlcywgcG9wX2FyZ3VtZW50cyk6ICBMaWtld2lzZS4KCSogbGFuZy5jIChwdXRfZGVjbF9ub2RlKTogIExpa2V3aXNlLgoJKiB0eXBlY2suYyAodmFyaW91cyBwbGFjZXMpOiAgTGlrZXdpc2UuCgkqIGNsYXNzLnkgKHZhcmlvdXMgcGxhY2VzKTogIExpa2V3aXNlLgoJKiBwYXJzZS55ICh2YXJpb3VzIHBsYWNlcyk6ICBMaWtld2lzZS4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfdHJlZSk6ICBNb3ZlIENBTl9DT01QTEVURV9OT1JNQUxMWS4KCShidWlsZF9qdW1wX3RvX2ZpbmFsbHkpOiAgQWRkIG1pc3NpbmcgQ0FOX0NPTVBMRVRFX05PUk1BTExZLgoKCSogY2xhc3MuYzogIEFkZCAjaW5jbHVkZSBmbGFncy5oLCByZW1vdmUgbm8tbG9uZ2VyIG5lZWRlZCBkZWNsYXJhdGlvbi4KCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzc19tZXRob2QpOiAgUmVtb3ZlIGNvbW1lbnRlZC1vdXQgY29kZSwgcmUtZm9ybWF0LgoJRG9uJ3QgYWRkIHZ0YWJsZSBlbnRyeSAob3IgaW5kZXgpIGZvciBwcml2YXRlIG1ldGhvZHMuCgkqIGV4cHIuYyAoZXhwYW5kX2ludm9rZSk6ICBBIHByaXZhdGUgbWV0aG9kIGlzIGltcGxpY2l0bHkgZmluYWwuCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6ICBJZiBpbmxpbmluZyBvciBvcHRpbWl6aW5nLAoJc2tpcCBwcml2YXRlIG1ldGhvZHMuCgoJKiBjbGFzcy5jIChmaW5pc2hfY2xhc3MpOiAgTmV3IGZ1bmN0aW9uLiAgQ2FsbHMgZXhpc3RpbmcgbWV0aG9kcywKCWJ1dCBhbGxzIGVtaXRzIGRlZmVycmVkIGlubGluZSBmdW5jdGlvbnMuCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9jbGFzc19maWxlKTogIENhbGwgZmluaXNoX2NsYXNzLgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogIExpa2V3aXNlLgoKCSogZXhwci5jIChidWlsZF9qYXZhX2Jpbm9wKTogIEV4cGxpY2l0IGRlZmF1bHQsIHRvIHNpbGVuY2UgLVdhbGwuCgoJKiBleHByLmMgKENIRUNLX1BDX0lOX1JBTkdFKTogIEFkZCB2b2lkIGNhc3QgdG8ga2lsbCB3YXJuaW5ncy4KCjE5OTgtMTEtMjUgIE1hcmMgRXNwaWUgPGVzcGllQHF1YXRyYW1hcmFuLmVucy5mcj4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9jb25kaXRpb25hbCk6IEZpeCB0eXBvLgoKMTk5OC0xMS0yNCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiAoZ2VuZXJhdGVfY2xhc3NmaWxlKTogQWx3YXlzIHdyaXRlIGNsYXNzIGFjY2VzcyBmbGFnIHdpdGgKCUFDQ19TVVBFUiBzZXQuCgoxOTk4LTExLTI0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKG1heWJlX2xheW91dF9zdXBlcl9jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCShsYXlvdXRfY2xhc3MpOiBSZW9yZ2FuaXplZC4gTG9vcCBvbiBjbGFzcyBtZXRob2RzIGRpc3BhdGNoZWQgaW50bwoJYSBuZXcgZnVuY3Rpb24uIENhbGwgbWF5YmVfbGF5b3V0X3N1cGVyX2NsYXNzLgoJKGxheW91dF9jbGFzc19tZXRob2RzLCBsYXlvdXRfY2xhc3NfbWV0aG9kKTogTmV3IGZ1bmN0aW9ucy4KCSogZXhwci5jIChleHBhbmRfamF2YV9ORVcpOiBDYWxsIGxheW91dF9jbGFzc19tZXRob2RzIG9uIGxvYWRlZAoJY2xhc3MuCgkoZXhwYW5kX2ludm9rZSk6IExpa2V3aXNlLgoJKiBqYXZhLXRyZWUuaCAoYWxsX2NsYXNzX2xpc3QpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlIGRlY2xhcmVkLgoJKGxheW91dF9jbGFzc19tZXRob2RzLCBsYXlvdXRfY2xhc3NfbWV0aG9kKTogTmV3IGZ1bmN0aW9uCglwcm90b3R5cGVzLgoJKExBWU9VVF9TRUVOX0NMQVNTX01FVEhPRFMpOiBOZXcgbWFjcm8uCgkqIGpjZi1wYXJzZS5jIChhbGxfY2xhc3NfbGlzdCk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkobG9hZF9jbGFzcyk6IEV4dGVuZGVkIHdoYXQgY2xhc3Nfb3JfbmFtZSBjYW4gYmUuIFVzZSBwYXJzZXIKCWNvbnRleHQgbWVjaGFuaXNtIHRvIHNhdmUgZ2xvYmFscyBiZWZvcmUgY2FsbGluZyBqY2ZfcGFyc2UuCgkoamNmX3BhcnNlX3NvdXJjZSk6IERvbid0IHBhcnNlIHR3aWNlIGlmIEhBU19CRUVOX0FMUkVBRFlfUEFSU0VEX1AKCWlzIHNldCBvbiB0aGUgZmlsZSBuYW1lLgoJKGpjZl9wYXJzZSk6IExheW91dCBjbGFzcyBtZXRob2RzIHdoZW4gT2JqZWN0IGlzIGxvYWRlZCwgb3RoZXJ3aXNlCglyZWNvcmQgY2xhc3MgaW4gYWxsX2NsYXNzX2xpc3QgZm9yIGRlbGF5ZWQgbWV0aG9kIGxheW91dC4KCShwYXJzZV9jbGFzc19maWxlKTogVXNlIExBWU9VVF9TRUVOX0NMQVNTX01FVEhPRFMuCgkqIGxhbmcuYyAocHV0X2RlY2xfbm9kZSk6IERlY29kZSA8aW5pdD4gaW50byB0aGUgZGVjbCBjb250ZXh0CgljbGFzcyBuYW1lLgoJKiBsZXguYyAoamF2YV9hbGxvY2F0ZV9uZXdfbGluZSk6IFVzZSB4bWFsbG9jLgoJKiBwYXJzZS5oIChJTkNPTVBMRVRFX1RZUEVfUCk6IFJlZGVmaW5lZCB0byB3b3JrIHdpdGggaW5jb21wbGV0ZQoJcG9pbnRlcnMsIG5vdCBUUkVFX0xJU1QgZWxlbWVudHMuCgkoc3RydWN0IHBhcnNlcl9jdHh0KTogRml4ZWQgY29tbWVudCBpbmRlbnRhdGlvbnMsIGFkZGVkIGNvbW1lbnRzCglhbmQgcmVvcmRlcmVkIHNvbWUgZmllbGRzLgoJKGphdmFfY2hlY2tfbWV0aG9kcyk6IEZ1bmN0aW9uIHByb3RvdHlwZSByZW1vdmVkLgoJKiBwYXJzZS55IChqYXZhX3B1c2hfcGFyc2VyX2NvbnRleHQpOiBVc2UgeG1hbGxvYy4KCShqYXZhX3BhcnNlcl9jb250ZXh0X3Jlc3RvcmVfZ2xvYmFsKTogUG9wIGV4dHJhIHB1c2hlZCBjdHhwIG9ubHkKCXdoZW4gdGhlcmUncyBub3RoaW5nIG5leHQuCgkobWF5YmVfY3JlYXRlX2NsYXNzX2ludGVyZmFjZV9kZWNsKTogRml4ZWQgY29tbWVudCwgYWRkIG5ldwoJY3JlYXRlZCBjbGFzcyBkZWNsIHRvIGFsbF9jbGFzc19saXN0LgoJKG1ldGhvZF9oZWFkZXIpOiBVc2UgR0VUX1JFQUxfVFlQRSBvbiBhcmd1bWVudCdzIHR5cGVzLgoJKG1ldGhvZF9kZWNsYXJhdG9yKTogVXNlIEdFVF9SRUFMX1RZUEUsIGNoYW5nZSB0eXBlIHRvIHRoZSByZWFsCgl0eXBlIGluIFRSRUVfTElTVCBkZXBlbmRlbmN5IG5vZGUuIEJ1aWxkIGFyZ3VtZW50IGxpc3Qgd2l0aCB0aGUKCXJlYWwgdHlwZS4KCShjcmVhdGVfamRlcF9saXN0KTogVXNlIHhtYWxsb2MuIFJlbW92ZWQgYWxsb2NhdGlvbiBlcnJvciBtZXNzYWdlLgoJKG9idGFpbl9pbmNvbXBsZXRlX3R5cGUpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIEJyb2FkZW5lZAoJaW5jb21pbmcgYXJndW1lbnQgbWVhbmluZy4KCShyZWdpc3Rlcl9pbmNvbXBsZXRlX3R5cGUpOiBVc2UgeG1hbGxvYy4gUmVtb3ZlZCBhbGxvY2F0aW9uIGVycm9yCgltZXNzYWdlLgoJKHNhZmVfbGF5b3V0X2NsYXNzKTogRml4ZWQgbGVhZGluZyBjb21tZW50LgoJKGpkZXBfcmVzb2x2ZV9jbGFzcyk6IFJldmVyc2VkIGlmIHN0YXRlbWVudCBjb25kaXRpb24gYW5kIHN3aXRjaAoJaWYgYW5kIGVsc2UgYm9kaWVzLgoJKHJlc29sdmVfYW5kX2xheW91dCk6IEZpeGVkIGxlYWRpbmcgY29tbWVudC4gQnJvYWRlbmVkIGluY29taW5nCglhcmd1bWVudCBtZWFuaW5nLgoJKGNvbXBsZXRlX2NsYXNzX3JlcG9ydF9lcnJvcnMpOiBOZXcgbG9jYWwgdmFyaWFibGUgbmFtZSwgZm9yCgljbGFyaXR5LiBwdXJpZnlfdHlwZV9uYW1lIHVzZWQgZm9yIGFsbCBlcnJvciBjYXNlcy4KCShqYXZhX2dldF9yZWFsX21ldGhvZF9uYW1lKTogU3RyaWN0ZXIgY2hlY2sgb24gY29uc3RydWN0b3JzLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogUmV2ZXJzZSBtZXRob2RzIGxpc3Qgb25seSBpZiBub3QKCWFscmVhZHkgbGFpZCBvdXQuIExheW91dCBhcnRpZmljaWFsIGNvbnN0cnVjdG9yLgoJKGphdmFfY2hlY2tfbWV0aG9kcyk6IERlbGV0ZWQuCgkoc291cmNlX3N0YXJ0X2phdmFfbWV0aG9kKTogT2J0YWluIGluY29tcGxldGUgdHlwZSBmb3IgcGF0Y2hhYmxlCgltZXRob2QgYXJndW1lbnRzLgoJKGphdmFfbGF5b3V0X2NsYXNzZXMpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIFVzZQoJTEFZT1VUX1NFRU5fQ0xBU1NfTUVUSE9EUywgdXNlIGEgbG9vcCB0byBjaGVjayBtZXRob2RzLiBBZGRlZCBlbHNlCglzdGF0ZW1lbnQgdG8gbGF5b3V0IG9wZXJhdGlvbiwgcmV1c2UgTEFZT1VUX1NFRU5fQ0xBU1NfTUVUSE9EUwoJYmVmb3JlIHJldHVybmluZy4gRml4ZWQgY29tbWVudHMuCgkoamF2YV9leHBhbmRfY2xhc3Nlcyk6IENoZWNrIGZvciBlcnJvcnMgdXAgZnJvbnQuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBDbGFzcyB0byBzZWFyY2ggaXMgcmVzb2x2ZWQgYW5kIGxhaWQKCW91dC4KCjE5OTgtMTEtMjQgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiAgQWRkIG1pc3NpbmcgZW1pdF9xdWV1ZS4KCgkqIGphdmFvcC5oIChpbnQ4KTogIFJlbW92ZWQgLSBub3QgdXNlZC4KCShqYnl0ZSk6ICBSZWRlZmluZSBwb3J0YWJseSB3aXRoIGNvcnJlY3Qgc2lnbmVkbmVzcy4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6ICBEb24ndCBmcmVlIHN3X3N0YXRlLmNhc2VzLgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogIEZpeCB0eXBvCglPUENPREVfZ2V0c3RhdGljIHRvIE9QQ09ERV9nZXRmaWVsZC4KCgkqIGphdmEtdHJlZS5kZWYgKENBU0VfRVhQUiwgREVGQVVMVF9FWFBSKTogIEtpbmQgaXMgJ3gnLCBub3QgJzEnLgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX3RyZWUpOiAgRm9yIENBU0VfRVhQUiBhbmQgREVGQVVMVF9FWFBSLAoJc2V0IFRSRUVfU0lERV9FRkZFQ1RTIChvdGhlcndpc2UgZXhwYW5kX2V4cHIgbWF5IHNraXAgdGhlbSkuCgoxOTk4LTExLTE5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChqY2ZfcGFyc2Vfc291cmNlKTogRnVuY3Rpb24gcmV0dXJuZWQgdHlwZSBpcwoJdm9pZC4gQWRkZWQgcHJvdG90eXBlLgoJKGpjZl9wYXJzZSk6IEZ1bmN0aW9uIHJldHVybmVkIHR5cGUgaXMgdm9pZC4KCSh5eXBhcnNlKTogUmVtb3ZlIGNhbGwgdG8gZmNsb3NlIG9uIHRoZSBsYXN0IHBhcnNlZCBmaWxlLgoKCSogamF2YS10cmVlLmggKGpjZl9wYXJzZSk6IENoYW5nZWQgamNmX3BhcnNlIHByb3RvdHlwZS4KCjE5OTgtMTEtMTggIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAodW5tYW5nbGVfY2xhc3NuYW1lKTogU2V0IFFVQUxJRklFRF9QIHdoZW4gYXBwcm9wcmlhdGUuCgkobGF5b3V0X2NsYXNzKTogQ29wZSB3aXRoIG1ldGhvZHMgZmVhdHVyaW5nIFdGTCBpbiBkZWNsIG5hbWVzLgoJKiBkZWNsLmMgKHVucXVhbGlmaWVkX29iamVjdF9pZF9ub2RlKTogTmV3IGdsb2JhbCB2YXJpYWJsZSwKCWluaXRpYWxpemVkLgoJKGJ1aWxkX2RlY2xfbm9fbGF5b3V0KTogUmVtb3ZlZC4KCSogZXhwci5jIChidWlsZF9wcmltdHlwZV90eXBlX3JlZik6IEhhbmRsZSBEb3VibGUuCgkoamF2YV9sYW5nX2V4cGFuZF9leHByKTogRml4ZWQgaW5kZW50YXRpb25zLgoJKiBqYXZhLXRyZWUuaCAoQ0xBU1NfTUVUSE9EX0NIRUNLRURfUCk6IEZsYWcgZGVsZXRlZC4KCShmbGFnX3dhbGwsIGZsYWdfcmVkdW5kYW50LCBmbGFnX25vdF9vdmVycmlkaW5nLAoJZmxhZ19zdGF0aWNfbG9jYWxfamRrMV8xLCB1bnF1YWxpZmllZF9vYmplY3RfaWRfbm9kZSk6IEdsb2JhbAoJdmFyaWFibGUgZGVjbGFyYXRpb25zLgoJKGJ1aWxkX2RlY2xfbm9fbGF5b3V0KTogUmVtb3ZlZCBwcm90b3R5cGUuCgkoamF2YV9nZXRfcmVhbF9tZXRob2RfbmFtZSk6IEFkZGVkIHByb3RvdHlwZS4KCShJU19VTkNIRUNLRURfRVhQUkVTU0lPTl9QKTogUmVuYW1lZCBJU19VTkNIRUNLRURfRVhDRVBUSU9OX1AuCgkoamF2YV9wYXJzZV9hYm9ydF9vbl9lcnJvcik6IE1hY3JvIG5vdyBqdXN0IHJldHVybnMuCgkqIGpjZi1wYXJzZS5jIChqY2ZfcGFyc2Vfc291cmNlKTogQ2hlY2sgZmNsb3NlIHJldHVybmVkCgl2YWx1ZS4gQ2FsbCBlbWl0X3JlZ2lzdGVyX2NsYXNzZXMgaWYgamF2YV9yZXBvcnRfZXJyb3JzIHJldHVybnMKCXplcm8uCgkqIGxhbmMuYyAoZmxhZ193YWxsLCBmbGFnX3JlZHVuZGFudCwgZmxhZ19ub3Rfb3ZlcnJpZGluZywKCWZsYWdfc3RhdGljX2xvY2FsX2pkazFfMSk6IE5ldyBpbnRlZ2VyIGZsYWdzLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IE5ldyBmbGFncyBzZXQgaGVyZS4KCSogcGFyc2UuaCAoR0VUX1JFQUxfVFlQRSwgR0VUX01FVEhPRF9OQU1FKTogTmV3IG1hY3Jvcy4KCShPQlNPTEVURV9NT0RJRklFUl9XQVJOSU5HKTogSXNzdWUgZXJyb3IgbWVzc2FnZSBjb25kaXRpb25hbGx5IHRvCgl0aGUgZmxhZ19yZWR1bmRhbnQgdmFyaWFibGUuCgkoU0VUX1RZUEVfRk9SX1JFU09MVVRJT04pOiBDb25zaWRlciBPYmplY3QgYmVpbmcgamF2YS5sYW5nLk9iamVjdAoJd2hlbiBwYXJzaW5nIGphdmEubGFuZy5PYmplY3QgY2xhc3MuCgkoQlVJTERfTU9OSVRPUl9FTlRFUiwgQlVJTERfTU9OSVRPUl9FWElUKTogQWRkZWQgdGVybWluYWwKCU5VTExfVFJFRSB0byBidWlsZC4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBGaXhlZCBpbmRlbnRhdGlvbi4KCShwYXRjaF9hcnJheV9yZWYpOiBDaGFuZ2VkIHByb3RvdHlwZS4KCShub3RfaW5pdGlhbGl6ZWRfYXNfaXRfc2hvdWxkX3ApOiBQcm90b3R5cGUgcmVtb3ZlZC4KCShqYXZhX3JlcG9ydF9lcnJvcnMpOiBBZGRlZCBmdW5jdGlvbiBwcm90b3R5cGUuCgkqIHBhcnNlLnkgKGZvcm1hbF9wYXJhbWV0ZXI6KTogQ2hhbmdlZCBlcnJvciBtZXNzYWdlIGZvciBub3QgeWV0CglzdXBwb3J0ZWQgZmluYWwgcGFyYW1ldGVycy4KCShjbGFzc190eXBlX2xpc3Q6KTogU2V0IGJvdGggUFVSUE9TRSBhbmQgVkFMVUUgb2YgY3JlYXRlZAoJVFJFRV9MSVNUIHRvIGJlIGNsYXNzX3R5cGUuCgkocHJpbWFyeV9ub19uZXdfYXJyYXk6KTogSGFuZGxlIGNsYXNzIGxpdGVyYWxzIG9uIHByaW1pdGl2ZSB0eXBlcy4KCShwYXJzZV93YXJuaW5nX2NvbnRleHQpOiBSZWluc3RhbGxlZCBjb3JyZWN0IGZvcmNlX2Vycm9yIGFuZAoJZG9fd2FybmluZyBmbGFncyBzZXR1cHMuCgkoamF2YV9yZXBvcnRfZXJyb3JzKTogQ2hhbmdlZCBwcm90b3R5cGUuIFJldHVybiBqYXZhX2Vycm9yX2NvdW50Cgl2YWx1ZS4KCSh2YXJpYWJsZV9yZWRlZmluaXRpb25fZXJyb3IpOiBDb25zaWRlciB0cmVhdGluZyB2YXJpYWJsZSB0eXBlIGFzCglhIGZha2UgcG9pbnRlci4KCShjcmVhdGVfaW50ZXJmYWNlKTogV2FybiBhYm91dCByZWR1bmRhbnQgYWJzdHJhY3QgbW9kaWZpZXIgaWYKCWZsYWdfcmVkdW5kYW50IGlzIHNldC4gQ2hhbmdlZCBlcnJvciBtZXNzYWdlLgoJKGxvb2t1cF9maWVsZF93cmFwcGVyKTogU2F2ZS9yZXN0b3JlIGdsb2JhbHMgYmVmb3JlL2FmdGVyIGxvb2tpbmcKCXVwIGZpZWxkLgoJKGR1cGxpY2F0ZV9kZWNsYXJhdGlvbl9lcnJvcl9wKTogQ29uc2lkZXIgdHJlYXRpbmcgZGVjbGFyYXRpb24KCXR5cGUgYXMgYSBmYWtlIHBvaW50ZXIuCgkocmVnaXN0ZXJfZmllbGRzKTogRXh0cmFjdCByZWFsIHR5cGUgZnJvbSBkZXBlbmRlbmN5IG5vZGUuIENoZWNrCglmb3IgZHVwbGljYXRlIGZpZWxkIGRlY2xhcmF0aW9uIGFmdGVyIHR5cGUgYWRqdXN0bWVudC4gVXNlCglERUNMX0lOSVRJQUwgdG8gc3RvcmUgc3RhdGljIGZpbmFsIGluaXRpYWxpemVkIHZhbHVlcy4KCShtZXRob2RfaGVhZGVyKTogRXh0cmFjdCByZWFsIGZ1bmN0aW9uIHR5cGUgZnJvbSBkZXBlbmRlbmN5IG5vZGUuCgkoY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2hlYWRlcik6IFVzZSBHRVRfTUVUSE9EX05BTUUuCgkob2J0YWluX2luY29tcGxldGVfdHlwZSk6IExheW91dCBmYWtlIHBvaW50ZXIgdHlwZS4KCShzYWZlX2xheW91dF9jbGFzcyk6IERvbid0IHRyeSB0byBjaGVjayBmb3IgbWV0aG9kcyBiZWZvcmUgbGF5b3V0LgoJKGphdmFfY29tcGxldGVfY2xhc3MpOiBEb24ndCBjaGVjayBmb3IgY29ycmVjdCB0aHJvd3MgY2xhdXNlCgllbGVtZW50cyBpbmhlcml0YW5jZSBoZXJlLgoJKHJlc29sdmVfYW5kX2xheW91dCk6IEJyb2FkZW5lZCBuYW1lIHBhcmFtZXRlciBtZWFuaW5nLgoJKHJlc2V0X21ldGhvZF9uYW1lKTogVXNlIEdFVF9NRVRIT0RfTkFNRS4KCShqYXZhX2dldF9yZWFsX21ldGhvZF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogRG9uJ3QgY2hlY2sgbWV0aG9kcyBpbgoJamF2YS5sYW5nLk9iamVjdC4gIFZlcmlmeSBsaW5lYWdlIG9mIHRocm93cyBjbGF1c2UgZWxlbWVudHMuIFVzZQoJZmxhZ19ub19vdmVycmlkaW5nIGluIHdhcm5pbmcgcmVwb3J0LgoJKGNoZWNrX3Rocm93c19jbGF1c2VzKTogRG9uJ3QgY2hlY2sgaWYgY2xhc3Mgd2FzIGZyb20KCWJ5dGVjb2RlLiBVc2UgSVNfVU5DSEVDS0VEX0VYQ0VQVElPTl9QIG1hY3JvLgoJKGphdmFfY2hlY2tfbWV0aG9kcyk6IERvbid0IHNldCBDTEFTU19NRVRIT0RfQ0hFQ0tFRF9QIGZsYWcuCgkoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBVc2UgZmxhZ19zdGF0aWNfbG9jYWxfamRrMV8xIHRvIHJlcG9ydAoJd2FybmluZyBvbiB1bnN1cHBvcnRlZCBmaW5hbCBsb2NhbCB2YXJpYWJsZXMuIFVzZSBidWlsZF9kZWNsCglpbnN0ZWFkIG9mIGJ1aWxkX2RlY2xfbm9fbGF5b3V0LiBHZXQgcmVhbCBsb2NhbCB2YXJpYWJsZSB0eXBlIGZyb20KCWRlcGVuZGVuY3kgbm9kZS4KCShzb3VyY2Vfc3RhcnRfamF2YV9tZXRob2QpOiBHZXQgcmVhbCBwYXJhbWV0ZXIgdHlwZSBmcm9tCglkZXBlbmRlbmN5IG5vZGUuIENhbGwgYnVpbGRfZGVjbCBpbnN0ZWFkIG9mIGJ1aWxkX2RlY2xfbm9fbGF5b3V0LgoJKGphdmFfbGF5b3V0X2NsYXNzZXMpOiBSZXZlcnNlIHRyZWUgYW5kIGxheW91dCB0eXBlIGFuZCBjbGFzcyBhcwoJcmVxdWlyZWQuIE1hcmsgY2xhc3MgYXMgbG9hZGVkIHdoZW4gZG9uZS4KCShyZXNvbHZlX2ZpZWxkX2FjY2Vzcyk6IEZpeGVkIGluZGVudGF0aW9uLiBSZXN0cmljdGVkIGNvbmRpdGlvbgoJbGVhZGluZyB0byBzdGF0aWMgZmllbGQgYWNjZXNzIGNvZGUgZ2VuZXJhdGlvbi4gU2V0IGZpZWxkX3R5cGUKCWRlY2wncyBUUkVFX1RZUEUgaWYgUVVBTF9ERUNMX1RZUEUgbm90IGF2YWlsYWJsZS4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBJbml0aWFsaXplIHR5cGVfZm91bmQgdG8KCW51bGwuIEhhbmRsZSBzdGF0aWMgZmllbGQgcmVzb2x2ZWQgZHVyaW5nIHF1YWxpZmljYXRpb24uIEZpeGVkCglsYXlvdXQgb24gbm9uIHByaW1pdGl2ZSBmaWVsZCBkZWNsIHR5cGVzLgoJKG5vdF9hY2Nlc3NpYmxlX3ApOiBGaXhlZCB0eXBvIGluIGNvbW1lbnQuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBSZXNvbHZlIGFuZCBsYXlvdXQgY2xhc3MgdG8gc2VhcmNoIGZyb20KCXR5cGUuCgkobG9va3VwX21ldGhvZF9pbnZva2UpOiBLZWVwIGludGVnZXIgY29uc3RhbnQgMCBhcyBpcy4gUmVzb2x2ZSBhbmQKCWxheW91dCBub24gcHJpbWl0aXZlIHR5cGUsIGlmIG5lY2Vzc2FyeS4gTWFrZSBtZXRob2Qgbm9kZSBvbmx5IHRvCglyZXBvcnQgZXJyb3JzLgoJKGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6IENvbnNpZGVyIFdGTCdlZCBtZXRob2QKCWRlY2wgbmFtZXMuIEZpeGVkIGluZGVudGF0aW9uLgoJKGFyZ3VtZW50X3R5cGVzX2NvbnZlcnRpYmxlKTogUmVzb2x2ZSBhbmQgbGF5b3V0IHRhcmdldCB0eXBlIGlmCgluZWNlc3NhcnkuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogRml4ZWQgaW5kZW50YXRpb24gcHJvYmxlbXMuIFJld3JvdGUKCUNBTExfRVhQUiB0aHJvd24gZXhjZXB0aW9ucyBjaGVjay4gUmUtaW5zdGFsbGVkIGZ1cnRoZXIgcHJvY2Vzc2luZwoJb2YgdGhlIGFzc2lnbm1lbnQgaW4gY2VydGFpbiBjYXNlcy4KCShwYXRjaF9hc3NpZ25tZW50KTogQ2FsbCBtYXliZV9idWlsZF9wcmltdHR5cGVfdHlwZV9yZWYgdG8gcGVyZm9ybQoJaW5saW5pbmcgb24gY2xhc3MgbGl0ZXJhbHMuCgkodmFsaWRfYnVpbHRpbl9hc3NpZ25jb252X2lkZW50aXR5X3dpZGVuaW5nX3ApOiBDb3BlIHdpdGggY29uc3RhbnQKCTAgbGl0ZXJhbC4KCSh2YWxpZF9tZXRob2RfaW52b2NhdGlvbl9jb252ZXJzaW9uX3ApOiBMaWtld2lzZS4KCShwYXRjaF9zdHJpbmcpOiBUZW1wb3JhcnkgZGlzYWJsZSBmb3JiaWRkZW4gdXNlIG9mIGB0aGlzJyBpbgoJZXhwbGljaXQgY29uc3RydWN0b3IgaW52b2NhdGlvbnMgd2hlbiBkb2luZyBzdHJpbmcgY29uY2F0ZW5hdGlvbgoJd2l0aGluIHRoZWlyIHNjb3BlLgoJKHBhdGNoX3VuYXJ5b3ApOiBBZGRlZCBjb21tZW50LiBSZWluc3RhbGxlZCBjb2RlIHRvIGRpc2FibGUKCWZ1cnRoZXIgY2hlY2sgb24gYXNzaWdubWVudCBvcGVyYXRpb24gd2l0aCBjYXN0IGV4cHJlc3Npb24gUkhTLgoJKHBhdGNoX3N3aXRjaF9zdGF0ZW1lbnQpOiBGaXhlZCBpbmRlbnRhdGlvbi4KCShidWlsZF90cnlfc3RhdGVtZW50KTogQ2FsbCBidWlsZF9kZWNsIGluc3RlYWQgb2YKCWJ1aWxkX2RlY2xfbm9fbGF5b3V0LgoJKHBhdGNoX3N5bmNocm9uaXplZF9zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShwYXRjaF90aHJvd19zdGF0ZW1lbnQpOiBVc2UgSVNfVU5DSEVDS0VEX0VYQ0VQVElPTl9QIGluc3RlYWQgb2YKCUlTX1VOQ0hFQ0tFRF9FWFBSRVNTSU9OX1AuCgkoY2hlY2tfdGhyb3duX2V4Y2VwdGlvbnNfZG8pOiBDaGFuZ2VkIGxlYWRpbmcgY29tbWVudC4gUmVzb2x2ZSBhbmQKCWxheW91dCBhcmd1bWVudCBleGNlcHRpb24gdHlwZS4KCShwdXJnZV91bmNoZWNrZWRfZXhjZXB0aW9ucyk6IFVzZSBJU19VTkNIRUNLRURfRVhDRVBUSU9OX1AgaW5zdGVhZAoJb2YgSVNfVU5DSEVDS0VEX0VYUFJFU1NJT05fUC4KCjE5OTgtMTEtMTggIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmMgKHl5cGFyc2UpOiBPcGVuIGNsYXNzIGZpbGUgaW4gYmluYXJ5IG1vZGUuCgoxOTk4LTExLTE1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGp2Z2VubWFpbi5jOiAgTmVlZCB0byAjaW5jbHVkZSAiZ2Fuc2lkZWNsLmgiICh0byBnZXQgUFJPVE8pLgoKCSogamNmLXdyaXRlLmMgKHBlcmZvcm1fcmVsb2NhdGlvbnMpOiAgTW92ZSBjaGVjayBvdXQgb25lIGxvb3AuCgoxOTk4LTExLTE1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AaG9zZXIuY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogRml4IHJlZmVyZW5jZSB0byBzcmNkaXIuCgkqIGp2LXNjYW4uYzogQWRkIG1pc3NpbmcgeG1hbGxvYyBwcm90b3R5cGUuCgkqIGp2Z2VubWFpbi5jOiBEaXR0by4KCjE5OTgtMTEtMTUgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogZGVjbC5jIChlcnJvcl9tYXJrX25vZGUpLCBqYXZhLXRyZWUuaDogIE5ldyBnbG9iYWwuCgkqIHBhcnNlLnk6ICBVc2UgZW1wdHlfc3RtdF9ub2RlIGluc3RlYWQgb2Ygc2l6ZV96ZXJvX25vZGUuCgkoYnVpbGRfaWZfZWxzZV9zdGF0ZW1lbnQpOiAgSWYgbWlzc2luZyBlbHNlLCB1c2UgZW1wdHlfc3RtdF9ub2RlLgoKCSogcGFyc2UueSAobm90X2luaXRpYWxpemVkX2FzX2l0X3Nob3VsZF9wKTogIFJlbW92ZWQsIHdpdGggaXRzIGNhbGxlcnMuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kKTogIENvbXBsYWluIGlmIHJldHVybiBpcyBtaXNzaW5nLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogIENvbW1lbnQgb3V0IGluY29ycmVjdCBlcnJvciBjaGVjay4KCShub3RfYWNjZXNzaWJsZV9wKTogIEZpeCBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgcHJvdGVjdGVkIG1ldGhvZHMuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiAgUGFzcyBjb3JyZWN0IGNvbnRleHQgdG8gbm90X2FjY2Vzc2libGVfcC4KCShmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiAgTGlrZXdpc2UuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6ICBJZiBBUlJBWV9SRUYsIGl0J3MgYW4gZXhwcmVzc2lvbiBuYW1lLgoJKGphdmFfY29tcGxldGVfdHJlZSk6ICBGb3IgQ0FTRV9FWFBSIGFuZCBERUZBVUxUX0VYUFIsIHNldAoJVFJFRV9UWVBFICh0byB2b2lkX3R5cGVfbm9kZSk7ICBvdGhlcndpc2UgZXhwYW5kX2V4cHIgY3Jhc2hlcy4KCShwYXRjaF9pZl9lbHNlX3N0YXRlbWVudCk6ICBGaXggc2V0dGluZyBvZiBDQU5fQ09NUExFVEVfTk9STUFMTFkuCgoJKiBqY2Ytd3JpdGUuYyAoQ0hFQ0tfT1AsIENIRUNLX1BVVCk6ICBBZGQgc29tZSBlcnJvciBjaGVja2luZy4KCShwdXNoX2ludF9jb25zdCk6ICBSZW1vdmUgcmV1bmRhbnQgTk9URV9QVVNILgoJKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zIC0gY2FzZSBTVFJJTkdfQ1NUKTogIERvIE5PVEVfUFVTSC4KCSgtIGNhc2UgU1dJVENIX0VYUFIpOiAgRml4IGNvZGUgZ2VuZXJhdGlvbiBidWcuCgkoLSBjYXNlIFBSRURFQ1JFTUVOVF9FWFBSIGV0Yyk6ICBSZW1vdmUgcmVkdW5kYW50IE5PVEVfUFVTSC4KCShnZW5lcmF0ZV9jbGFzc2ZpbGUpOiAgTW9yZSByb2J1c3QgZm9yIGFic3RyYWN0IG1ldGhvZHMuCgoxOTk4LTExLTE1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBqdi1zY2FuIGFuZCBqdmdlbm1haW4gYWxsIHJlcXVpcmUgbGliaWJlcnR5LgoJKiBNYWtlLWxhbmcuaW46IERpdHRvLgoKCSoganYtc2Nhbi5jOiBSZW1vdmUgeG1hbGxvYyBhbmQgeHN0cmR1cCBkZWZpbml0aW9ucy4KCSoganZnZW5tYWluOiBEaXR0by4KCjE5OTgtMTEtMTUgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmMgKEhBTkRMRV9FWENFUFRJT05TX0FUVFJJQlVURSk6ICBOZXcgbWFjcm8uCgoJKiBqY2YtaW8uYyAoZmluZF9jbGFzcyk6ICBTaW1wbGVyL2NsZWFuZXIgc3RydWN0dXJlIGZpeGVzIGEgYnVnLgoKMTk5OC0xMS0xNCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJQWxsb3cgdXNlcyBvZiBpbnRlcmZhY2UgdHlwZXMgdG8gdmVyaWZ5LiAgVGhpcyBpcyBub3QgcmVhbGx5Cgl0eXBlLXNhZmUsIGJ1dCBpdCBtYXRjaGVzIHdoYXQgU3VuIGRvZXMsIGFuZCBpcyBPSyBhcyBsb25nIGFzCgl0aGVyZSBhcmUgYXBwcm9wcmlhdGUgcnVuLXRpbWUgY2hlY2tzLgoJKiB2ZXJpZnkuYyAobWVyZ2VfdHlwZXMpOiAgSWYgbWVyZ2luZyB0d28gaW50ZXJmYWNlIHR5cGVzLAoJanVzdCBzZXQgdGhlIHJlc3VsdCB0byBqYXZhLmxhbmcuT2JqZWN0LgoJKiBleHByLmMgKHBvcF90eXBlKTogIEFueSBpbnRlcmZhY2UgaXMgbWF0Y2hlcyBieSBqYXZhLmxhbmcuT2JqZWN0LgoKMTk5OC0xMS0xMyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKG1haW4pOiBIYW5kbGUgLS1vdXRwdXQtY2xhc3MtZGlyZWN0b3J5IGFyZ3VtZW50LgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBUcmFuc2xhdGUgYC1kJyBpbnRvCgktZm91dHB1dC1jbGFzcy1kaXIuCgkqIGpjZi5oIChqY2Zfd3JpdGVfYmFzZV9kaXJlY3RvcnkpOiBEZWNsYXJlLgoJKiBsYW5nLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IFJlY29nbml6ZSAtZm91dHB1dC1jbGFzcy1kaXIuCgkqIGxhbmctb3B0aW9ucy5oOiBNZW50aW9uIC1mb3V0cHV0LWNsYXNzLWRpci4KCSogamNmLXdyaXRlLmMgKGpjZl93cml0ZV9iYXNlX2RpcmVjdG9yeSk6IE5ldyBnbG9iYWwuCgkobWFrZV9jbGFzc19maWxlX25hbWUpOiBQdXQgZ2VuZXJhdGVkIC5jbGFzcyBmaWxlIGludG8gYC1kJwoJZGlyZWN0b3J5LCBvciBpbnRvIHNvdXJjZSBkaXJlY3RvcnkgaWYgLWQgbm90IGdpdmVuLiAgRnVuY3Rpb24gbm93CglzdGF0aWMuCgkod3JpdGVfY2xhc3NmaWxlKTogRnJlZSBjbGFzcyBmaWxlIG5hbWUuICBIYW5kbGUgY2FzZSB3aGVyZSBjbGFzcwoJZmlsZSBuYW1lIGlzIE5VTEwuCgkoRElSX1NFUEFSQVRPUik6IE5ldyBtYWNyby4KCUluY2x1ZGUgPHN5cy9zdGF0Lmg+CgoJKiBNYWtlZmlsZS5pbiAocHJlZml4KTogTmV3IG1hY3JvLgoKMTk5OC0xMS0xMiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9pbnZva2UpOiAgRG8gbGVzcyBpZiBmbGFnX2VtaXRfY2xhc3NfZmlsZXMuCgkqIGV4cHIuYyAoYnVpbGRfa25vd25fbWV0aG9kX3JlZik6ICBEb24ndCBjaGVjayBmbGFnX2VtaXRfY2xhc3NfZmlsZXMKCWhlcmUgKGRvbmUgaW4gcGF0Y2hfaW52b2tlIGluc3RlYWQpLgoJKGNhc2VfaWRlbnRpdHkpOiAgTW92ZWQgaGVyZSBmcm9tIHBhcnNlLnkuCgoJKiBqYXZhLXRyZWUuaCAoQ0FOX0NPTVBMRVRFX05PUk1BTExZKTogIE5ldyBtYWNyby4KCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV90cmVlIGV0Yyk6ICBNYXliZSBzZXQgQ0FOX0NPTVBMRVRFX05PUk1BTExZLgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX3RyZWUpOiAgUmUtb3JkZXIgQ09NUE9VTkRfRVhQUiBpbiBCTE9DSwoJc28gdGhleSBjYW4gYmUgZWZmaWNpZW50bHkgc2Nhbm5lZCB3aXRob3V0IHJlY3Vyc2lvbi4KCUVycm9yIGl0ICEgQ0FOX0NPTVBMRVRFX05PUk1BTExZIGZpcnN0IHBhcnQgb2YgQ09NUE9VTkRfRVhQUi4KCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiAgRXhwYW5kIHN0YXRlbWVudHMgb2YgQ09NUE9VTkRfRVhQUgoJaW4gQkxPQ0sgaXRlcmF0aXZlbHksIHJhdGhlciB0aGFuIHJlY3Vyc2l2ZWx5LgoKCSogcGFyc2UueSAoZG9fdW5hcnlfbnVtZXJpY19wcm9tb3Rpb24pOiAgTmV3IGZ1bmN0aW9uLgoJKHBhdGNoX3VuYXJ5b3AsIHBhdGNoX2Jpbm9wLCBwYXRjaF9hcnJheV9yZWYpOiAgVXNlIGl0LgoKCSogcGFyc2UueSAocGF0Y2hfbmV3YXJyYXkpOiAgVmFyaW91cyBmaXhlcy4KCglSZS1kbyBoYW5kbGluZyBvZiBzd2l0Y2ggc3RhdGVtZW50cyAoZm9yIHByb3BlciBibG9jayBzY29waW5nKS4KCSogcGFyc2UueTogIEFkZCBqdXN0IGEgc2luZ2xlIGJsb2NrIGZvciB0aGUgZW50dXJlIHN3aXRjaCBibG9jaywKCWJ1dCBkb24ndCBjcmVhdGUgYW55ICJjYXNlIGJsb2NrcyIuCgkoZ3JvdXBfb2ZfbGFiZWxzKTogIFJtZW92ZWQgdW5uZWVkZWQgbm9uLXRlcm1pbmFsLgoJQ0FTRV9FWFBSIGFuZCBERUZBVUxUX0VYUFIgYXJlIGFkZGVkIHRvIGN1cnJlbnQgYmxvY2suCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogIElubGluZSBTV0lUQ0hfRVhQUiBoZXJlLgoJTm93IGFsc28gbmVlZCB0byBoYW5kbGUgQ0FTRV9FWFBSIGFuZCBERUZBVUxUX0VYUFIuCgkqIGphdmEtdHJlZS5oIChTV0lUQ0hfSEFTX0RFRkFVTFQpOiAgTmV3IG1hY3JvLgoJKiBwYXJzZS55ICh3Zmxfb3BlcmF0b3IsIHByaW50X2ludF9ub2RlKTogTWFrZSBub24tc3RhdGljLgoJKGphdmFfY29tcGxldGVfdHJlZSk6ICBDQVNFX0VYUFIgYW5kIERFRkFVTFRfRVhQUiBhcmUgbm93IHByb2Nlc3NlZAoJYXMgcGFydCBvZiByZWN1cnNpdmUgc2NhbiBvZiBibG9jay4KCShqYXZhX2V4cGFuZF9zd2l0Y2ggKTogIFJlbW92ZWQgLSBpbmxpbmVkIGludG8gamF2YV9sYW5nX2V4cGFuZF9leHByLgoJKHBhdGNoX3N3aXRjaF9zdGF0ZW1lbnQpOiAgTW9zdCB0ZXN0cyBtb3ZlIGRpbnRvIGphdmFfY29tcGxldGVfdHJlZS4KCgkqIHBhcnNlLnk6ICBNYWtlIHZhcmlvdXMgcHJvZHVjdGlvbiBiZSBub24tdHlwZWQgKHZvaWQpLgoJKiBwYXJzZS55IChwYXJzZV9lcnJvcik6ICBNZXJnZWQgaW50byBpc3N1ZV93YXJuaW5nX2Vycm9yX2Zyb21fY29udGV4dC4KCSogcGFyc2UueSAoYWRkX3N0bXRfdG9fY29tcG91bmQpOiAgRG9uJ3QgY3JlYXRlL2NoYW5nZSBleHRyYSBub2RlLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uX3N0bXQpOiAgUmVuYW1lZCB0byBwYXRjaF9tZXRob2RfaW52b2NhdGlvbi4KCgkqIGpjZi13cml0ZS5jIChzdHJ1Y3QgamNmX2hhbmRsZXIpOiAgTmV3IHR5cGUuCgkoc3RydWN0IGpjZl9zd2l0Y2hfc3RhdGUpOiAgTmV3IHR5cGUuCgkoU1dJVENIX0FMSUdOX1JFTE9DLCBCTE9DS19TVEFSVF9SRUxPQyk6ICBOZXcgcmVsb2NhdGlvbiBraW5kcy4KCShhbGxvY19oYW5kbGVyLCBlbWl0X3Vub3AsIGVtaXRfcmVsb2MpOiAgTmV3IGZ1bmN0aW9ucy4KCShhZGp1c3RfdHlwZWRfb3ApOiAgQWRkIGV4dHJhIHBhcmFtZXRlciAoIm1heCB0eXBlIiBvZmZzZXQpLgoJKGVtaXRfc3dpdGNoX3JlbG9jLCBlbWl0X2Nhc2UtcmVsb2MpOiAgTmV3IGZ1bmN0aW9uLgoJKGdlbmVyYXRlX2J5dGVjb2RlX2NvbmRpdGlvbmFsKTogIEhhbmRsZSBSRUFMX1RZUEUgY29tcGFyaXNvbnMuCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiAgU3VwcG9ydCBSRUFMX0NTVCwgc3dpdGNoIHN0YXRlbWVudHMsCglleGNlcHRpb24gaGFuZGxpbmcsIG1ldGhvZCBjYWxscywgb2JqZWN0L2FycmF5IGNyZWF0aW9uLCBhbmQgbW9yZS4KCgkqIGNsYXNzLmM6ICBSZW1vdmUgc29tZSB1bnVzZWQgdmFyaWFibGVzLgoJKiBjb25zdGFudHMuYyAoZmluZF9zdHJpbmdfY29uc3RhbnQpOiAgTmV3IGZ1bmN0aW9uLgoJKGNvdW50X2NvbnN0YW50X3Bvb2xfYnl0ZXMpOiAgRml4IHRvIGNvcnJlY3RseSBoYW5kbGUgd2lkZSBjb25zdGFudHMuCgkqIGRlY2wuYyAoY29tcGxldGVfc3RhcnRfamF2YV9tZXRob2QpOiAgRG9uJ3QgX0p2X0luaXRDbGFzcwoJaWYgZmxhZ19lbWl0X2NsYXNzX2ZpbGVzLgoKMTk5OC0xMS0xMiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogamNmLWlvLmMgKGZpbmRfY2xhc3MpOiBBZGRlZCBleHBsYW5hdG9yeSBjb21tZW50LgoKCSogamNmLXBhdGguYyAoYWRkX2VudHJ5KTogTG9vayBmb3IgYC56aXAnIGF0IGVuZCBvZiBmaWxlbmFtZS4gIEFkZAoJdHJhaWxpbmcgc2xhc2ggdG8gYC56aXAnIGVudHJpZXMuCgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBDb3JyZWN0bHkgaGFuZGxlIGNhc2Ugd2hlcmUKCUdDX05BTUUgbm90IGRlZmluZWQuCgoxOTk4LTExLTExICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqdnNwZWMuYyAoR0NfTkFNRSk6IE5ldyBkZWZpbmUuCgkobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBVc2UgR0NfTkFNRS4gIEFkZCBHQ19OQU1FIHRvIGNvbW1hbmQgbGluZQoJaWYgcmVxdWlyZWQuCgkqIE1ha2UtbGFuZy5pbiAoanZzcGVjLm8pOiBEZWZpbmUgV0lUSF9HQ188bmFtZT4uCgoxOTk4LTExLTExICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGpjZi1kdW1wLmMgKFRBQkxFX1NXSVRDSCk6ICBGaXggdHlwb3MuCgoxOTk4LTExLTExICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqY2YtZHVtcC5jIChtYWluKTogQ29ycmVjdGx5IHJlY29nbml6ZSBgLS0nLXN0eWxlIGxvbmcgb3B0aW9ucy4KCjE5OTgtMTEtMTAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoaXNfY29tcGlsZWRfY2xhc3MpOiBDYWxsIHNhZmVfbGF5b3V0X2NsYXNzIGZvciBjbGFzcwoJY29tcGlsZWQgZnJvbSBzb3VyY2UuCgkqIGNvbnZlci5oIChjb252ZXJ0X3RvX2ludGVnZXIsIGNvbnZlcnRfdG9fcmVhbCwKCWNvbnZlcnRfdG9fcG9pbnRlcik6IEFkZGVkIHByb3RvdHlwZXMuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBOb24gbG9uZ2VyIHB1c2ggdGhlIGRlY2xzIG9mCglgbWV0aG9kdGFibGUnLCBgY29uc3RhbnRzJywgYENsYXNzJywgYEZpZWxkJywgYGRpc3BhdGNoVGFibGUnCglgamV4Y2VwdGlvbicgYW5kIGBNZXRob2QnLgoJKiBleHByLmMgKGJ1aWxkX2ludm9rZWludGVyZmFjZSk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfaW52b2tlKTogc3RhdGljIHZhcmlhYmxlIENMQVNTX0lERU5UIG5vdyBpbgoJYnVpbGRfaW52b2tlaW50ZXJmYWNlLiBVc2UgYnVpbGRfaW52b2tlaW50ZXJmYWNlLgoJKGV4cGFuZF9qYXZhX2ZpZWxkX29wKTogTW92ZWQgY29kZSB0byBpbmxpbmUKCWphdmEubGFuZy5QUklNVFlQRS5UWVBFIGludG8gYSBmdW5jdGlvbi4KCShidWlsZF9wcmltdHlwZV90eXBlX3JlZik6IE5ldyBmdW5jdGlvbi4KCSogamF2YS10cmVlLmRlZiAoSU5TVEFOQ0VPRl9FWFBSKTogTmV3IHRyZWUgY29kZS4KCSogamF2YS10cmVlLmggKENMQVNTX01FVEhPRF9DSEVDS0VEX1AsIE1FVEhPRF9ERVBSRUNBVEVELAoJRklFTERfREVQUkVDQVRFRCwgQ0xBU1NfREVQUkVDQVRFRCk6IE5ldyBmbGFnIG1hY3Jvcy4KCShERUNMX0NPTlNUUlVDVE9SX1ApOiBGaXhlZCB0eXBvIGluIGNvbW1lbnQuCgkoREVDTF9MT0NBTF9TVEFUSUNfVkFMVUUpOiBOZXcgbWFjcm8uCgkoYnVpbGRfaW52b2tlaW50ZXJmYWNlLCBidWlsZF9wcmltdHlwZV90eXBlX3JlZik6IE5ldyBmdW5jdGlvbgoJcHJvdG90eXBlcy4KCShqYXZhX3BhcnNlX2Fib3J0X29uX2Vycm9yKTogTWFjcm8gcmV3cml0dGVuLgoJKiBqY2YtcGFyc2UuYyAoY3VycmVudF9tZXRob2QpOiBBZGQgY29tbWVudCB0byBkZWNsYXJhdGlvbi4KCShwYXJzZV96aXBfZmlsZV9lbnRyaWVzLCBwcm9jZXNzX3ppcF9kaXIsIHZvaWQgcGFyc2Vfc291cmNlX2ZpbGUpOgoJRnVuY3Rpb24gcHJvdG90eXBlcyBmaXhlZC4KCShqY2ZfcGFyc2Vfc291cmNlKTogcHVzaC9wb3AgcGFyc2VyIGNvbnRleHQuIHNhdmUvcmVzdG9yZSBnbG9iYWwuCgkocGFyc2Vfc291cmNlX2ZpbGUpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIE5vdyB0YWtlIGEKCUlERU5USUZJRVJfTk9ERSBhcyBhbiBhcmd1bWVudC4gRG9lc24ndCBjaGVjayBtZXRob2RzLCBsYXlvdXQKCWNsYXNzZXMgYW5kIHBvcCB0aGUgcGFyc2VyIGNvbnRleHQgYW55bW9yZS4KCSh5eXBhcnNlKTogUHVzaCBwYXJzZXIgY29udGV4dCwgc2F2ZSBnbG9iYWxzLCBwYXJzZSB0aGUgc291cmNlCglmaWxlLCByZXN0b3JlIGdsb2JhbHMgYW5kIHBvcCB0aGUgcGFyc2VyIGNvbnRleHQgd2hlbiBwcm9jZXNzaW5nIGEKCXNvdXJjZSBmaWxlLgoJKiBqY2YuaCAoVkVSQk9TRV9TS0VMRVRPTik6IFJlcGxhY2VzIFNPVVJDRV9GUk9OVEVORF9ERUJVRyBkZWZpbmUuCgkqIGxleC5jIChqYXZhX3BhcnNlX2RvY19zZWN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfbGV4KTogQ2FsbCBqYXZhX3BhcnNlX2RvY19zZWN0aW9uIHdoZW4gYXBwcm9wcmlhdGUuIEJ1aWxkIGFuCglvcGVyYXRvciBhcm91bmQgSU5TVEFOQ0VPRl9USy4KCSogbGV4LmggKGphdmFfbGluZXRlcm1pbmF0b3IsIGphdmFfc3ByaW50X3VuaWNvZGUsCglqYXZhX3VuaWNvZGVfMl91dGY4LCBqYXZhX2xleF9lcnJvciwgamF2YV9zdG9yZV91bmljb2RlKToKCVByb3RvdHlwZXMgcmV3cml0dGVuLgoJKGphdmFfcGFyc2VfZXNjYXBlX3NlcXVlbmNlLCBqYXZhX2xldHRlcl9vcl9kaWdpdF9wLAoJamF2YV9wYXJzZV9kb2Nfc2VjdGlvbiwgamF2YV9wYXJzZV9lbmRfY29tbWVudCwgamF2YV9nZXRfdW5pY29kZSwKCWphdmFfcmVhZF91bmljb2RlLCBqYXZhX3N0b3JlX3VuaWNvZGUsIGphdmFfcmVhZF9jaGFyLAoJamF2YV9hbGxvY2F0ZV9uZXdfbGluZSwgamF2YV91bmdldF91bmljb2RlLCBqYXZhX3NuZWFrX3VuaWNvZGUpOgoJQWRkZWQgZnVuY3Rpb24gcHJvdG90eXBlcy4KCSogcGFyc2UuaCAoVkVSQk9TRV9TS0VMRVRPTik6IFJlcGxhY2VzIFNPVVJDRV9GUk9OVEVORF9ERUJVRwoJZGVmaW5lLgoJKEpOVUxMUF9UWVBFX1AsIENIRUNLX01FVEhPRFMsIENIRUNLX0RFUFJFQ0FURUQsIFJFR0lTVEVSX0lNUE9SVCk6CglOZXcgbWFjcm9zCgkoc3RydWN0IHBhcnNlcl9jdHh0KTogTmV3IGZpZWxkczogZGVwcmVjYXRlZCwKCWN1cnJlbnRfcGFyc2VkX2NsYXNzX3VuLCBnY2xhc3NfbGlzdC4KCShmaXhfbWV0aG9kX2FyZ3VtZW50X25hbWVzLCBpc3N1ZV93YXJuaW5nX2Vycm9yX2Zyb21fY29udGV4dCwKCXJlc29sdmVfcGFja2FnZSwgbG9va3VwX3BhY2thZ2VfdHlwZSk6IE5ldyBmdW5jdGlvbiBwcm90b3R5cGVzLgoJKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogRml4ZWQgZnVuY3Rpb24gcHJvdG90eXBlLgoJKGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6IEZpeGVkIGluZGVudGF0aW9uLCBhZGRlZAoJZXh0cmEgYXJndW1lbnQgaW4gcHJvdG90eXBlLgoJKGNoZWNrX2ZpbmFsX2Fzc2lnbm1lbnQsIGJ1aWxkX251bGxfb2ZfdHlwZSwgY2hlY2tfZGVwcmVjYXRpb24sCgljaGVja19tZXRob2RfcmVkZWZpbml0aW9uLCByZXNldF9tZXRob2RfbmFtZSwKCWphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzLCBqYXZhX2NoZWNrX2Fic3RyYWN0X21ldGhvZHMsCgltYXliZV9idWlsZF9wcmltdHR5cGVfdHlwZV9yZWYpOiBOZXcgZnVuY3Rpb24gcHJvdG90eXBlLgoJKiBwYXJzZS55IChjb252ZXIuaCk6IEluY2x1ZGUuCgkoSU5TVEFOQ0VPRl9USyk6IFRhZ2dlZCA8b3BlcmF0b3I+LgoJKHNpbmdsZV90eXBlX2ltcG9ydF9kZWNsYXJhdGlvbik6IFVzZSBSRUdJU1RFUl9JTVBPUlQgbWFjcm8uCgkocmVsYXRpb25hbF9leHByZXNzaW9uOik6IEJ1aWxkIGJpbm9wIGZvciBpbnN0YW5jZW9mLgoJKGphdmFfcHVzaF9wYXJzZXJfY29udGV4dCk6IFJlbWVtYmVyIGN0eHAtPmdjbGFzc19saXN0IGFjcm9zcwoJY29udGV4dHMuCgkoamF2YV9wb3BfcGFyc2VyX2NvbnRleHQpOiBTaW1wbHkgcmV0dXJuIGlmIG5vIGNvbnRleHQKCWV4aXN0cy4gUmVtZW1iZXIgZ2NsYXNzX2xpc3QgYWNyb3NzIGNvbnRleHRzLgoJKGlzc3VlX3dhcm5pbmdfZXJyb3JfZnJvbV9jb250ZXh0KTogTmV3IGZ1bmN0aW9uLgoJKHBhcnNlX2Vycm9yX2NvbnRleHQpOiBEb24ndCBzZXR1cCBjdHhwLT5lbGMgaGVyZS4gQ2FsbAoJaXNzdWVfd2FybmluZ19lcnJvcl9mcm9tX2NvbnRleHQgaW5zdGVhZC4KCShwYXJzZV93YXJuaW5nX2NvbnRleHQpOiBMaWtld2lzZS4KCShtYXliZV9jcmVhdGVfY2xhc3NfaW50ZXJmYWNlX2RlY2wpOiBSZW1vdmVkIERFQ0xfQVJUSUZJQ0lBTAoJc2V0dXAuIExpbmsgbmV3IGNsYXNzL2ludGVyZmFjZSB0byBjdHhwLT5nY2xhc3NfbGlzdC4KCShhZGRfc3VwZXJpbnRlcmZhY2VzKTogUmVnaXN0ZXIgaW50ZXJmYWNlIGFzIGluY29tcGxldGUgaWYgbm90Cglsb2FkZWQuCgkoY3JlYXRlX2NsYXNzKTogUmVtZW1iZXIgY2xhc3MgdW5xdWFsaWZpZWQgbmFtZSBpbgoJY3R4cC0+Y3VycmVudF9wYXJzZWRfY2xhc3NfdW4uIENoZWNrIGNsYXNzIGRlcHJlY2F0aW9uLgoJKHJlZ2lzdGVyX2ZpZWxkcyk6IENoZWNrIGZpZWxkIGRlcHJlY2F0aW9uLiBSZW1lbWJlciBzdGF0aWMgZmluYWwKCWZpZWxkIHZhbHVlIGluIERFQ0xfTE9DQUxfU1RBVElDX1ZBTFVFLiBDaGFuZ2VkIGNvbW1lbnQgaW4gcGFydAoJcHJvY2Vzc2luZyBJTklULgoJKG1ldGhvZF9oZWFkZXIpOiBOZXcgbG9jYWwgdmFyaWFibGUgT1JJR19BUkcuIFVzZSB1bnF1YWxpZmllZAoJY3VycmVudCBjbGFzcyBuYW1lIGZvciBjaGVjayBvbiBjb25zdHJ1Y3RvciBlcnJvcnMuIFByb21vdGUgcmV0dXJuCgl0eXBlIGlmIG9mIHJlY29yZCB0eXBlLiBBcmd1bWVudCBsaXN0IGZpeCBtb3ZlZCBpbgoJZml4X21ldGhvZF9hcmd1bWVudF9uYW1lcywgY2FsbGVkIGhlcmUuIENoZWNrIG1ldGhvZCBkZXByZWNhdGlvbi4KCShmaXhfbWV0aG9kX2FyZ3VtZW50X25hbWVzKTogTmV3IGZ1bmN0aW9uLgoJKG1ldGhvZF9kZWNsYXJhdG9yKTogUHJvbW90ZSByZWNvcmQgdHlwZWQgYXJndW1lbnRzLgoJKHNhZmVfbGF5b3V0X2NsYXNzKTogQ2hlY2sgY2xhc3MgbWV0aG9kcyBiZWZvcmUgbGF5b3V0LgoJKGphdmFfY29tcGxldGVfY2xhc3MpOiBDb21wdXRlIGZpZWxkIGxheW91dCB3aGVuIHBhdGNoZWQuCgkoZG9fcmVzb2x2ZV9jbGFzcyk6IFRyeSB0byBsb2FkIGNsYXNzIGFmdGVyIGhhdmluZyBpdCByZW5hbWVkCglhZnRlciB0aGUgcGFja2FnZSBuYW1lLgoJKGdldF9wcmludGFibGVfbWV0aG9kX25hbWUpOiBVc2UgREVDTF9DT05URVhULgoJKHJlc2V0X21ldGhvZF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX21ldGhvZF9yZWRlZmluaXRpb24pOiBVc2UgcmVzZXRfbWV0aG9kX25hbWUuCgkoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiBOZXcgbG9jYWwgdmFyaWFibGUKCVNBVkVEX0ZPVU5EX1dGTC4gVGVtcG9yYXJpbHkgcmVpbnN0YWxsIG92ZXJyaWRpbmcvaGlkaW5nIG1ldGhvZAoJbmFtZXMgZm9yIGVycm9yIHJlcG9ydC4gQ2hlY2sgZm9yIGNvbXBpbGUtdGltZSBlcnJvciB3aGVuIG1ldGhvZAoJZm91bmQgaGFzIGRlZmF1bHQgKHBhY2thZ2UpIGFjY2Vzcy4KCShqYXZhX2NoZWNrX2Fic3RyYWN0X21ldGhvZHMpOiBOb3cgdGFrZXMgYW4gaW50ZXJmYWNlIERFQ0wgbm9kZSBhcwoJYW4gYXJndW1lbnQuIEFsc28gcmVpbnN0YWxsIHJlYWwgbmFtZSBvbiB1bmNoZWNrZWQKCW92ZXJyaWRpbmcvaGlkaW5nIG1ldGhvZHMgZm9yIGVycm9yIHJlcG9ydC4KCShqYXZhX2NoZWNrX21ldGhvZHMpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIEdldCBjbGFzc2VzIHRvIHZlcmlmeQoJZnJvbSBjdHhwLT5nY2xhc3NfbGlzdC4gVXNlIENIRUNLX01FVEhPRFMgbWFjcm8gYW5kIHNldAoJQ0xBU1NfTUVUSE9EX0NIRUNLRURfUCBvbiBjbGFzcyB2ZXJpZmljYXRpb24uCgkobG9va3VwX2phdmFfbWV0aG9kMik6IEdldCByZWFsIG1ldGhvZCBuYW1lIGlmIG5lY2Vzc2FyeS4KCShmaW5kX2luX2ltcG9ydHMpOiBEb24ndCBjaGVjayBwYWNrYWdlIGNsYXNzIGFjY2VzcyBoZXJlLgoJKHJlc29sdmVfcGFja2FnZSwgbG9va3VwX3BhY2thZ2VfdHlwZSk6IE5ldyBmdW5jdGlvbnMuCgkoamF2YV9sYXlvdXRfY2xhc3Nlcyk6IEZpeGVkIGxlYWRpbmcgY29tbWVudC4gVGFrZSBjbGFzc2VzIHRvIGJlCglsYWlkIG91dCBmcm9tIGN0eHAtPmdjbGFzc19saXN0LgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiBEb24ndCBleHBhbmQgbmF0aXZlIGFuZCBhYnN0cmFjdAoJbWV0aG9kcy4KCShqYXZhX2V4cGFuZF9jbGFzc2VzKTogTmV3IGZ1bmN0aW9uLgoJKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogVXNlIGFkZGl0aW9uYWwgYXJndW1lbnQgT1JJRy4gIFJldHJpZXZlCgl2YWx1ZXMgb2Ygc3RhdGljIGZpbmFsIGZpZWxkIG9mIHByaW1pdGl2ZSB0eXBlcy4KCShyZXNvbHZlX2ZpZWxkX2FjY2Vzcyk6IEhhbmRsZXMgc3RhdGljIGZpbmFsIGZpZWxkIG9mIHByb21vdGl2ZQoJdHlwZS4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBIYW5kbGUgU1RSSU5HX0NTVCBhcwoJcHJpbWFyaWVzIGFuZCBwYWNrYWdlIG5hbWUgcmVzb2x1dGlvbi4gQ2hlY2sgZGVwcmVjYXRpb24gb24gZm91bmQKCWRlY2xzLiBTZXQgd2hlcmVfZm91bmQgYW5kIHR5cGVfZm91bmQgb24gbm9uIHN0YXRpYyBmaWVsZCByZXNvbHZlZAoJZHVyaW5nIHF1YWxpZmljYXRpb24uIExheW91dCBub24gcHJpbWl0aXZlIGZpZWxkIGRlY2wgdHlwZXMuCgkoY2hlY2tfZGVwcmVjYXRpb24pOiBOZXcgZnVuY3Rpb24uCgkobWF5YmVfYWNjZXNzX2ZpZWxkKTogU2ltcGxpZmllZC4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbl9zdG10KTogTG9jYWwgdmFyaWFibGUgQ0xBU1NfVFlQRQoJcmVtb3ZlZC4gUmV2ZXJzZSBtZXRob2QncyBhcmd1bWVudCB3aGVuIHByaW1hcnkgaXMgYSB0eXBlLiBEb24ndAoJdXNlIENMQVNTX1RZUEUgdG8gcmVwb3J0IHByb2JsZW1zLCB1c2UgSURFTlRJRklFUl9XRkwKCWluc3RlYWQuIEluY2x1ZGUgYWJzdHJhY3QgY2xhc3MgaW4gdGhlIGxpc3Qgb2YgY2xhc3Mgc2VhcmNoYWJsZQoJZm9yIGNvbnN0cnVjdG9ycy4gVXNlIERFQ0xfQ09OVEVYVCBvZiBmb3VuZCBtZXRob2QgZm9yIGFjY2VzcwoJY2hlY2tzLiBDaGVjayBtZXRob2QgZGVwcmVjYXRpb24uCgkocGF0Y2hfaW52b2tlKTogUGF5IGV4dHJhIGNhcmUgdG8gTkVXX0NMQVNTX0VYUFIgdHlwZSBjYWxsIHdoZW4KCWNvbnZlcnRpbmcgYXJndW1lbnRzLiBIYW5kbGUgSU5WT0tFX0lOVEVSRkFDRS4KCShsb29rdXBfbWV0aG9kX2ludm9rZSk6IFNlYXJjaCBjb25zdHJ1Y3RvciB1c2luZyBleGlzdGluZwoJaW5mcmFzdHJ1Y3R1cmUgKGRvbid0IHJlbHkgb24gbG9va3VwX2phdmFfY29uc3RydWN0b3IgYW55bW9yZSkuCgkoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogRXh0cmEgYXJndW1lbnQgZmxhZwoJTEMuIE5vdyBpbmNsdWRlIGNvbnN0cnVjdG9yIGluIHRoZSBzZWFyY2guCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IENvbmRpdGlvbmFsIGV4cHJlc3Npb24gYXJlIHByaW1hcmllcy4KCShub3RfaW5pdGlhbGl6ZWRfYXNfaXRfc2hvdWxkX3ApOiBzdGF0aWMgZmluYWwgYXJlIGFsd2F5cwoJaW5pdGlhbGl6ZWQuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogUGFzcyBleHRyYSBOVUxMIGFyZ3VtZW50IHRvCglyZXNvbHZlX2V4cHJlc3Npb25fbmFtZS4gU3RyaWN0ZXIgdGVzdCB0byBjYXJyeSBvbiBwYXRjaGluZwoJYXNzaWdubWVudHMuIE5ldyBjYXNlIGZvciBJTlNUQU5DRU9GX0VYUFIuCgkoY29tcGxldGVfZnVuY3Rpb25fYXJndW1lbnRzKTogSW5saW5lIFBSSU1UWVBFLlRZUEUgcmVhZCBhY2Nlc3MuCgkoY2hlY2tfZmluYWxfYXNzaWdubWVudCwgbWF5YmVfYnVpbGRfcHJpbXR0eXBlX3R5cGVfcmVmKTogTmV3CglmdW5jdGlvbnMuCgkocGF0Y2hfYXNzaWdubWVudCk6IERldGVjdCByZXNvbHZlZCBzdGF0aWMgZmluYWxzIGFuZCBjYXJyeSBub3JtYWwKCWFzc2lnbm1lbnQgZXJyb3IgY2hlY2sgb24gdGhlbS4gSW5saW5lIFBSSU1UWVBFLlRZUEUgcmVhZCBhY2Nlc3MuCgkodHJ5X2J1aWx0aW5fYXNzaWduY29udik6IEFjY2VzcyBjb25zdGFudCAwIG9uIGFsbCBwcmltaXRpdmUKCXR5cGVzLgoJKHZhbGlkX2J1aWx0aW5fYXNzaWduY29udl9pZGVudGl0eV93aWRlbmluZ19wKTogQWNjZXB0IGlkZW50aWNhbAoJdHlwZXMuIEFjY2VwdCBhbGwgcHJvbW90ZWQgdHlwZSBvbiBpbnQgdHlwZS4KCSh2YWxpZF9yZWZfYXNzaWduY29udl9jYXN0X3ApOiBBY2NlcHQgYSBudWxsIHBvaW50ZXIgdG8gYmUKCWFzc2lnbmVkIHRvIGEgcmVmZXJlbmNlLgoJKHZhbGlkX21ldGhvZF9pbnZvY2F0aW9uX2NvbnZlcnNpb25fcCk6IEFjY2VwdCB0byBjaGVjayBudWxsCglwb2ludGVycy4KCShidWlsZF9iaW5vcCk6IE1lcmdlIGRlY2xhcmF0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBvZiBsb2NhbAoJdmFyaWFibGUgQklOT1AuCgkocGF0Y2hfYmlub3ApOiBOZXcgY2FzZSBmb3IgSU5TVEFOQ0VPRl9FWFBSLiBORV9FWFBSIHRvIGFjY2VwdCBhbGwKCW51bWVyaWMgdHlwZXMuIEltcHJvdmVkIHZhbGlkaXR5IHRlc3QgZm9yIHF1YWxpZnkgb3BlcmF0b3JzIG9uCglyZWZlcmVuY2VzLgoJKHBhdGNoX3VuYXJ5b3ApOiBCcm9hZGVuZWQgcmVqZWN0aW9uIHRlc3QgZm9yIFBSRURFQ1JFTUVOVF9FWFBSCglhbmQgUFJFSU5DUkVNRU5UX0VYUFIuIEFsc28gZGV0ZWN0IHJlc29sdmVkIHN0YXRpYyBmaW5hbHMgb2YgYQoJcHJpbWl0aXZlIHR5cGUgYW5kIGlzc3VlIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBtZXNzYWdlLgoJKHJlc29sdmVfdHlwZV9kdXJpbmdfcGF0Y2gpOiBNYXJrIGNsYXNzIGxvYWRlZCB3aGVuIHJlc29sdmVkLgoJKHBhdGNoX2Nhc3QpOiBBbGxvdyBudWxsIHRvIGJlIGNhc2VkIHRvIHJlZmVyZW5jZSB0eXBlcy4KCShidWlsZF9udWxsX29mX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkocGF0Y2hfYXJyYXlfcmVmKTogSGFuZGxlIGFycmF5IG9uIHJlZmVyZW5jZXMgY29ycmVjdGx5LgoJKHBhdGNoX3JldHVybik6IFJlbW92ZWQgdW51c2VkIGxvY2FsIHZhcmlhYmxlIE1PRElGWS4gRm9yY2UKCWJvb2xlYW4gdG8gYmUgcmV0dXJuZWQgYXMgaW50ZWdlcnMuIEFsbG93cyBudWxsIHRvIGJlIHJldHVybmVkIGJ5CglhIGZ1bmN0aW9uIHJldHVybmluZyBhIHJlZmVyZW5jZS4KCSogdHlwZWNrLmMgKGNvbnZlcnRfdG9faW50ZWdlciwgY29udmVydF90b19yZWFsLAoJY29udmVydF90b19wb2ludGVyKTogUHJvdG90eXBlcyBtb3ZlZCB0byBjb252ZXJ0LmgKCShsb29rdXBfYXJndW1lbnRfbWV0aG9kKTogVXNlIG1ldGhvZCByZWFsIG5hbWUsIGlmIG5lY2Vzc2FyeS4KCjE5OTgtMTAtMzAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX2NsYXNzX3JlZik6IENoYW5nZWQgbmFtZSBvZiBwcmltaXRpdmUgY2xhc3NlcyB0bwoJc3RhcnQgd2l0aCBgX0p2XycuCgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBSZW5hbWVkIGZpZWxkczogbm1ldGhvZHMgdG8KCW1ldGhvZF9jb3VudCwgbWV0aG9kX2NvdW50IHRvIGR0YWJsZV9tZXRob2RfY291bnQuICBBbHdheXMgc2V0Cglgc3RhdGUnIGZpZWxkIHRvIDAuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCjE5OTgtMTAtMjggIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzKTogRG9uJ3QgbWFuZ2xlIDxmaW5pdD4sIHByb2R1Y2UKCV9fZmluaXQ8Y2xhc3M+IGluc3RlYWQuIERvbid0IHZlcmlmeSBhcnRpZmljaWFsIG1ldGhvZHMuCgkqIGRlY2wuYyAoZmluaXRfaWRlbnRpZmllcl9ub2RlKTogTmV3IGRlY2xhcmVkIGdsb2JhbC4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IGZpbml0X2lkZW50aWZpZXJfbm9kZSBpbml0aWFsaXplZC4KCSogamF2YS10cmVlLmRlZiAoQ09ORElUSU9OQUxfRVhQUik6IE5ldyBKYXZhIHRyZWUgY29kZS4KCSogamF2YS10cmVlLmggKGZpbml0X2lkZW50aWZpZXJfbm9kZSk6IERlY2xhcmVkIGFzIGV4dGVybi4KCShzdHJ1Y3QgbGFuZ19kZWNsKTogTmV3IGZpZWxkIGNhbGxlZF9jb25zdHJ1Y3Rvci4KCShERUNMX0NPTlNUUlVDVE9SX0NBTExTKTogQWNjZXNzIG1hY3JvIHRvIGNhbGxlZF9jb25zdHJ1Y3Rvci4KCShDTEFTU19IQVNfRklOSVRfUCk6IE5ldyBtYWNyby4KCShDQUxMX0NPTlNUUlVDVE9SX1ApOiBMZWFkaW5nIGNvbW1lbnQgY2hhbmdlZC4gTWFjcm8gbm93IGNoZWNrcwoJZXhwbGljaXQgY29uc3RydWN0b3IgaW52b2NhdGlvbi4KCShDQUxMX0VYUExJQ0lUX0NPTlNUUlVDVE9SX1AsIENBTExfVEhJU19DT05TVFJVQ1RPUl9QLAoJQ0FMTF9TVVBFUl9DT05TVFJVQ1RPUl9QKTogTmV3IG1hY3Jvcy4KCSh3cml0ZV9jbGFzc2ZpbGUpOiBBZGRlZCBwcm90b3R5cGUuCgkqIGpjZi1wYXJzZS5jIChqY2ZfcGFyc2Vfc291cmNlKTogUGFyc2UgYW5kIHJlbWVtYmVyIGZvcgoJZ2VuZXJhdGlvbiBpZiB0aGUgZmlsZSB3YXMgc2VlbiBvbiB0aGUgY29tbWFuZCBsaW5lLgoJKHBhcnNlX3NvdXJjZV9maWxlKTogRG9uJ3Qgd3JpdGUgdGhlIGNsYXNzIGZpbGUgaGVyZS4KCSh5eXBhcnNlKTogTG9vcCBvbiBmaWxlcyByZXdyaXR0ZW4uIFNldCBjdXJyZW50X2pjZi4KCShwYXJzZV96aXBfZmlsZV9lbnRyaWVzKTogUGFyc2UgY2xhc3MgZmlsZSBvbmx5IGlmIGl0IHdhcyBmb3VuZC4KCSogbGFuZy5jIChpbml0X3BhcnNlKTogRG9uJ3Qgb3BlbiBjb21tYW5kIGxpbmUgcHJvdmlkZWQgZmlsZW5hbWUKCWhlcmUuCgkobGFuZ19wYXJzZSk6IERvbid0IHNldCBtYWluX2pjZiBhbnltb3JlLgoJKiBwYXJzZS5oIChBQlNUUkFDX0NIRUNLKTogQ2FwaXRhbGl6ZWQgYXJndW1lbnRzLgoJKEpDT05TVFJVQ1RPUl9DSEVDSyk6IE5ldyBtYWNyby4KCShKQlNDX1RZUEVfUCk6IE5ldyBtYWNyby4KCShJTl9UUllfQkxPQ0tfUCwgRVhDRVBUSU9OU19QKTogRml4ZWQgbGVhZGluZyBjb21tZW50LgoJKENPTVBMRVRFX0NIRUNLX09QXzIpOiBOZXcgbWFjcm8uCgkoc3RydWN0IHBhcnNlX2N0eHQpOiBOZXcgZmllbGQgZXhwbGljaXRfY29uc3RydWN0b3JfcC4KCShjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24pOiBGaXhlZCBwcm90b3R5cGUgaW5kZW50YXRpb24uCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb25fc3RtdCk6IFByb3RvdHlwZSByZWZsZWN0cyBhZGRlZCBhcmd1bWVudC4KCShwYXRjaF9pbnZva2UpOiBMaWtld2lzZS4KCShjb21wbGV0ZV9tZXRob2RfZGVjbGFyYXRpb24sIGJ1aWxkX3N1cGVyX2ludm9jYXRpb24sCgl2ZXJpZnlfY29uc3RydWN0b3JfY2lyY3VsYXJpdHksCglidWlsZF90aGlzX3N1cGVyX3F1YWxpZmllZF9pbnZvY2F0aW9uLCBnZXRfcHJpbnRhYmxlX21ldGhvZF9uYW1lLAoJcGF0Y2hfY29uZGl0aW9uYWxfZXhwciwgbWF5YmVfZ2VuZXJhdGVfZmluaXQsIGZpeF9jb25zdHJ1Y3RvcnMsCgl2ZXJpZnlfY29uc3RydWN0b3Jfc3VwZXIsIGNyZWF0ZV9hcnRpZmljaWFsX21ldGhvZCwKCXN0YXJ0X2FydGlmaWNpYWxfbWV0aG9kX2JvZHksIGVuZF9hcnRpZmljaWFsX21ldGhvZF9ib2R5LAoJZ2VuZXJhdGVfZmllbGRfaW5pdGlhbGl6YXRpb25fY29kZSk6IE5ldyBmdW5jdGlvbiBwcm90b3R5cGVzLgoJKiBwYXJzZS55OiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQKCShjb25zdHJ1Y3Rvcl9oZWFkZXI6LCBjb25zdHJ1Y3Rvcl9ib2R5OiwgYmxvY2tfZW5kOik6IFJ1bGVzIHRhZ2dlZAoJPG5vZGU+LgoJKHR5cGVfZGVjbGFyYXRpb246KTogQ2FsbCBtYXliZV9nZW5lcmF0ZV9maW5pdC4KCShtZXRob2RfZGVjbGFyYXRpb246KTogQWN0aW9uIGZvciBtZXRob2RfYm9keTogcGxhY2VkIGluIG5ldwoJZnVuY3Rpb24gY29tcGxldGVfbWV0aG9kX2RlY2xhcmF0aW9uLCBjYWxsZWQgaGVyZS4KCShjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbjopOiBEZWZpbmVkIGFjdGlvbnMuIFJlbW92ZWQgbGVhZGluZwoJRklYTUUuCgkoY29uc3RydWN0b3JfaGVhZGVyOik6IE5ldyBydWxlIHdpdGggYWN0aW9uLgoJKGNvbnN0cnVjdG9yX2JvZHk6KTogUnVsZSByZXdyaXR0ZW4gdXNpbmcgYmxvY2tfYmVnaW46IGFuZAoJYmxvY2tfZW5kOi4gRGVmaW5lZCBhY3Rpb25zLgoJKGNvbnN0cnVjdG9yX2RlY2xhcmF0b3I6LCBleHBsaWNpdF9jb25zdHJ1Y3Rvcl9pbnZvY2F0aW9uOik6CglEZWZpbmVkIGFjdGlvbnMuCgkoYmxvY2s6KTogVXNlIG5ldyBydWxlcyBibG9ja19iZWdpbjogYmxvY2tfZW5kOi4KCShibG9ja19iZWdpbjosIGJsb2NrX2VuZDopOiBOZXcgcnVsZXMgYW5kIGFjdGlvbnMuCgkoYmxvY2tfc3RhdGVtZW50czopOiBGaXhlZCBlcnJvciBtZXNzYWdlIGZvciBleHBsaWNpdAoJY29uc3RydWN0b3JzLgoJKG1ldGhvZF9pbnZvY2F0aW9uOik6IENhbGwgYnVpbGRfdGhpc19zdXBlcl9xdWFsaWZpZWRfaW52b2NhdGlvbgoJaWYgcHJpbWFyeSBpcyBgdGhpcycgb3IgYHN1cGVyJyB3YXMgc2Vlbi4KCShjb25kaXRpb25hbF9leHByZXNzaW9uOik6IEFjdGlvbiBkZWZpbmVkLgoJKGV4dHJhX2N0eHBfcHVzaGVkX3ApOiBOZXcgc3RhdGljIGdsb2JhbCBmbGFnLgoJKGphdmFfcGFyc2VyX2NvbnRleHRfc2F2ZV9nbG9iYWwpOiBDcmVhdGUgcGFyc2VyIGNvbnRleHQgaWYKCW5lY2Vzc2FyeS4gVXNlIGV4dHJhX2N0eHBfcHVzaGVkX3AgdG8gcmVtZW1iZXIgaXQuCgkoamF2YV9wYXJzZXJfY29udGV4dF9yZXN0b3JlX2dsb2JhbCk6IFBvcCBleHRyYSBwYXJzZXIgY29udGV4dCBpZgoJb25lIGV4aXN0cy4KCShidWlsZF9hcnJheV9mcm9tX25hbWUpOiBBcnJheSBvbiBwcmltaXRpdmUgdHlwZXMgYXJlIG1hcmtlZAoJbG9hZGVkLgoJKHJlZ2lzdGVyX2ZpZWxkcyk6IFJlc3RvcmUgbmV3IG5hbWUgaW4gZmllbGQgaW5pdGlhbGl6ZXIKCWV4cHJlc3Npb24gaWYgdHlwZSB3YXMgYWx0ZXJlZC4gTm9uIHN0YXRpYyBmaWVsZHMgaW5pdGlhbGl6ZWQgdXBvbgoJZGVjbGFyYXRpb24gbWFya2VkIGluaXRpYWxpemVkLgoJKG1heWJlX2dlbmVyYXRlX2Zpbml0KTogTmV3IGZ1bmN0aW9uLgoJKG1heWJlX2dlbmVyYXRlX2NsaW5pdCk6IFVzZSBjcmVhdGVfYXJ0aWZpY2lhbF9tZXRob2QsCglzdGFydF9hcnRpZmljaWFsX21ldGhvZF9ib2R5LCBlbmRfYXJ0aWZpY2lhbF9tZXRob2RfYm9keS4gR2VuZXJhdGUKCWRlYnVnIGluZm8gZm9yIGVuY2xvc2VkIGluaXRpYWxpemF0aW9uIHN0YXRlbWVudHMuCgkobWV0aG9kX2hlYWRlcik6IEZpeGVkIGxlYWRpbmcgY29tbWVudC4gQ2hlY2sgY29uc3RydWN0b3IKCWZsYWdzLiBEZXRlY3QgY29uc3RydWN0b3IgZGVjbGFyYXRpb25zIGFuZCBzZXQgREVDTF9DT05TVFJVQ1RPUl9QCglhY2NvcmRpbmdseS4KCShjb21wbGV0ZV9tZXRob2RfZGVjbGFyYXRpb24sIGNvbnN0cnVjdG9yX2NpcmN1bGFyaXR5X21zZywKCXZlcmlmeV9jb25zdHJ1Y3Rvcl9jaXJjdWxhcml0eSk6IE5ldyBmdW5jdGlvbnMuCgkoZ2V0X3ByaW50YWJsZV9tZXRob2RfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShjaGVja19tZXRob2RfcmVkZWZpbml0aW9uKTogRG9uJ3QgcmVuYW1lIDxmaW5pdD4gbWV0aG9kcy4gRml4CglkZWNsYXJlZCBjb25zdHJ1Y3RvciBuYW1lcy4gRXJyb3IgbWVzc2FnZSBmb3IKCWNvbnN0cnVjdG9ycyBtb2RpZmllZC4KCShqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcyk6IExvY2FsIHZhcmlhYmxlIHNlZW5fY29uc3RydWN0b3IKCXJlbmFtZWQgc2F3X2NvbnN0cnVjdG9yLiBTa2lwIHZlcmlmaWNhdGlvbiBvbiBjb25zdHJ1Y3RvcnMuIENyZWF0ZQoJZGVmYXVsdCBjb25zdHJ1Y3RvciB3aXRoIGNyZWF0ZV9hcnRpZmljaWFsX21ldGhvZC4KCShqYXZhX2NoZWNrX21ldGhvZHMpOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGVtcHR5IGxpbmUuCgkoY3JlYXRlX2FydGlmaWNpYWxfbWV0aG9kLCBzdGFydF9hcnRpZmljaWFsX21ldGhvZF9ib2R5LAoJZW5kX2FydGlmaWNpYWxfbWV0aG9kX2JvZHkpOiBOZXcgZnVuY3Rpb25zLgoJKGphdmFfbGF5b3V0X2NsYXNzZXMpOiBDaGFuZ2VkIGxlYWRpbmcgY29tbWVudC4gUmV2ZXJzZSBmaWVsZHMKCWxpc3QgaWYgbmVjZXNzYXJ5LiBBbHdheXMgbGF5b3V0IGphdmEubGFuZy5PYmplY3QgaWYgYmVpbmcKCWRlZmluZWQuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IFZlcmlmeSBjb25zdHJ1Y3RvciBjaXJjdWxhcml0eS4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBDYWxsIGZpeF9jb25zdHJ1Y3RvciBvbgoJY29uc3RydWN0b3JzLiAgTG9jYWwgdmFyaWFibGUgbm9fYWNfZm91bmQgcmVtb3ZlZC4gUmVzdG9yZQoJYmluZGluZ3MgaWYgbWV0aG9kIGJvZHkgZXhwYW5zaW9uIGZhaWxlZC4KCShmaXhfY29uc3RydWN0b3JzLCB2ZXJpZnlfY29uc3RydWN0b3Jfc3VwZXIsCglnZW5lcmF0ZV9maWVsZF9pbml0aWFsaXphdGlvbl9jb2RlKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIFdyaXRlIGNsYXNzIGZpbGUKCWhlcmUuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBDaGVjayBmb3IgaWxsZWdhbCBpbnN0YW5jZSB2YXJpYWJsZQoJdXNhZ2Ugd2l0aGluIHRoZSBhcmd1bWVudCBzY29wZSBvZiBhbiBleHBsaWNpdCBjb25zdHJ1Y3RvcgoJaW52b2NhdGlvbi4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBQYXNzIGV4dHJhIGZyb21fc3VwZXIgZmxhZwoJd2hlbiBpbnZva2luZyBwYXRjaF9tZXRob2RfaW52b2NhdGlvbl9zdG10LiBOZXcgY2FzZSBmb3IKCWNvbmRpdGlvbmFsIGV4cHJlc3Npb24gd2hlbiB1c2VkIGFzIGEgcHJpbWFyeS4gQ2hlY2sgZm9yIGVycm9yCgl3aGVuIGFjcXVpcmluZyBzdXBlci4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbl9zdG10KTogQWRkZWQgZXh0cmEgYXJndW1lbnQgc3VwZXIuIE5ldwoJbG9jYWwgdmFyaWFibGUgaXNfc3RhdGljX2ZsYWcuIFNldCBjbGFzc190b19zZWFyY2ggYWNjb3JkaW5nIHRvCgl0aGUgbmF0dXJlIG9mIHRoZSBjb25zdHJ1Y3RvciBpbnZvY2F0aW9uLiBEb24ndCBhZGQgYHRoaXMnCglhcmd1bWVudCB3aGVuIGV4cGFuZGluZyBORVdfQ0xBU1NfRVhQUi4gQ2hlY2sgZm9yIGlsbGVnYWwgbWV0aG9kCglpbnZvY2F0aW9uIHdpdGhpbiB0aGUgYXJndW1lbnQgc2NvcGUgb2YgZXhwbGljaXQgY29uc3RydWN0b3IKCWludm9jYXRpb24uIFNldCBpc19zdGF0aWMgYWNjb3JkaW5nIHRvIGlzX3N0YXRpY19mbGFnLiBQcm92aWRlCglleHRyYSBgc3VwZXInIGFyZ3VtZW50IHRvIHBhdGNoX2ludm9rZSBpbnZvY2F0aW9uLgoJKHBhdGNoX2ludm9rZSk6IE5ldyBhcmd1bWVudCBmcm9tX3N1cGVyLiBMb29wIG9uIGFyZ3VtZW50cwoJaW5kZW50YXRpb24gZml4ZWQuIFBhc3MgZnJvbV9zdXBlciB0byBpbnZvY2F0aW9uX21vZGUuIE5ldyBzd2l0Y2gKCWNhc2UgSU5WT0tFX1NVUEVSLiBGaXhlZCBlcnJvciBtZXNzYWdlIGluIHN3aXRjaCBkZWZhdWx0IGNhc2UuCglEb24ndCB1c2UgQ0FMTF9DT05TVFJVQ1RPUl9QIGJ1dCByYXRoZXIgYSB0ZXN0IG9uIHRoZSB0cmVlIG5vZGUKCXZhbHVlLgoJKGludm9jYXRpb25fbW9kZSk6IFJldHVybiBJTlZPS0VfU1VQRVIgbW9kZSB3aGVuIGFwcHJvcHJpYXRlLgoJKGxvb2t1cF9tZXRob2RfaW52b2tlKTogRml4ZWQgcHJvdG90eXBlcyBpbiBjYW5kaWRhdGVzIGxpc3QuIEVycm9yCgltZXNzYWdlIHRha2VzIGNvbnN0cnVjdG9ycyBpbnRvIGFjY291bnQuCgkoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogRml4ZWQgaW5kZW50YXRpb24uCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IFRha2UgZXhwbGljaXQgY29uc3RydWN0b3IgaW52b2NhdGlvbgoJaW50byBhY2NvdW50LiBEZWFsIHdpdGggYSBjb25kaXRpb25hbCBleHByZXNzaW9uIGFzIGEgcHJpbWFyeSB0bwoJYSBtZXRob2QgY2FsbC4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBBZGRlZCBsb2NhbCB3Zmxfb3AzLiBOZXcgQ09ORElUSU9OQUxfRVhQUgoJY2FzZS4gQWRkZWQgZXh0cmEgYXJndW1lbnQgdG8gcGF0Y2hfbWV0aG9kX2ludm9jYXRpb25fc3RtdC4KCVJlZ2lzdGVyIGNhbGxzIG1hZGUgdG8gZXhwbGljaXQgY29uc3RydWN0b3IgYHRoaXMnLiBEb24ndCBjYWxsCglzYXZlX2V4cHIgaW4gQVJSQVlfUkVGIGNhc2Ugd2hlbiBlbWl0dGluZyBjbGFzcyBmaWxlcy4gQ2hlY2sgZm9yCglpbGxlZ2FsIHVzZSBvZiB0aGlzIHdoZW4gZXhwYW5kaW5nIGV4cGxpY2l0IGNvbnN0cnVjdG9yIGludm9jYXRpb24KCWFyZ3VtZW50cy4KCShjb21wbGV0ZV9mdW5jdGlvbl9hcmd1bWVudHMpOiBTZXQgYW5kIHJlc2V0IHBhcnNlciBjb250ZXh0CglleHBsaWNpdF9jb25zdHJ1Y3Rvcl9wIGZpZWxkIHZhbHVlIHdoZW4gYXBwcm9wcmlhdGUuCgkoYnVpbGRfc3VwZXJfaW52b2NhdGlvbiwgYnVpbGRfdGhpc19zdXBlcl9xdWFsaWZpZWRfaW52b2NhdGlvbik6CglOZXcgZnVuY3Rpb25zLgoJKHBhdGNoX2Fzc2lnbm1lbnQpOiBGaXhlZCB0eXBvLgoJKHBhdGNoX3VuYXJ5b3ApOiBDaGVjayBvbiBmaW5hbCBmaWVsZHMgb2NjdXJzIG9ubHkgd2hlbiBhIGRlY2wKCWV4aXRzLgoJKHBhdGNoX3JldHVybik6IFRha2UgY29uc3RydWN0b3JzIGludG8gYWNjb3VudC4KCShwYXRjaF9jb25kaXRpb25hbF9leHByKTogTmV3IGZ1bmN0aW9uLgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9zaWduYXR1cmUpOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGVtcHR5IGxpbmUuCgoxOTk4LTEwLTI4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoamNmLWR1bXAsIGdjamgpOiBMaW5rIGluICQoTElCUykgdG9vLgoKMTk5OC0xMC0yOCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFJlbmFtZWQgZmllbGRzLgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBSZW5hbWVkIGJmc2l6ZSwgbmZpZWxkcywgbnNmaWVsZHMsCglpbnRlcmZhY2VfbGVuLCBtc2l6ZSBmaWVsZHMuCgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBSZW1vdmVkIHN1YmNsYXNzX2hlYWQgYW5kCglzdWJjbGFzc19uZXh0IGZpZWxkcy4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFJlbW92ZWQgc3ViY2xhc3NfaGVhZCBhbmQKCXN1YmNsYXNzX25leHQgZmllbGRzLgoKMTk5OC0xMC0yOCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogamNmLXdyaXRlLmMgKGVtaXRfbG9hZF9vcl9zdG9yZSk6IEF2b2lkIGltcGxpY2l0IGludCBhcmd1bWVudHMuCgkqIG1hbmdsZS5jIChlbWl0X3VuaWNvZGVfbWFuZ2xlZF9uYW1lKTogU2ltaWxhcmx5LgoKMTk5OC0xMC0yNiAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChnZXRfY29uc3RhbnQpOiBQbGFjZSBicmFjZXMgYXJvdW5kIGNvZGUgdG8gY29tcHV0ZQoJJ2QnIHdoZW4gUkVBTF9BUklUSE1FVElDIGlzIG5vdCBkZWZpbmVkLgoKMTk5OC0xMC0yNSAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogTWFrZS1sYW5nLmluIChqdi1zY2FuJChleGVleHQpKTogQWRkIHN0YW1wLW9iamxpc3QgdG8KCWRlcGVuZGVuY3kuCgoxOTk4LTEwLTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBsYW5nLXNwZWNzLmg6IGAuemlwJyBmaWxlcyBhcmUgaW5wdXQgdG8gamMxLgoKMTk5OC0xMC0yMiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBqdnNwZWNzLmM6ICBBZGQgKGJ1dCBkb24ndCBlbmFibGUpIHN1cHBvcnQgZm9yIGNvbWJpbmluZyBtdWx0aXBsZQoJLmNsYXNzIGFuZCAuamF2YSBpbnB1dCBmaWxlbmFtZXMgdG8gYSBzaW5nbGUgamMxIGludm9jYXRpb24uCglBZGQgc3VwcG9ydCBmb3IgLUMgZmxhZyAoY29waWxlIHRvIC5jbGFzcyBmaWxlcykuCglUcmFuc2xhdGUgLWNsYXNzcGF0aCBhbmQgLUNMQVNTUEFUSCBhcmd1bWVudHMuCgkqIGxhbmctc3BlY3MuaDogIERvbid0IHNldCAlMiBzcGVjLgoKMTk5OC0xMC0yMiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogamNmLXBhdGguYyAoYWRkX2VudHJ5KTogRG9uJ3QgYWRkIHRyYWlsaW5nIHNlcGFyYXRvciBpZiBlbnRyeSBpcwoJYSAuemlwIGZpbGUuCgkoYWRkX3BhdGgpOiBEb24ndCBhZGQgdHJhaWxpbmcgc2VwYXJhdG9yIHRvIG5vbi1lbXB0eSBwYXRoCgllbGVtZW50cy4KCgkqIGxhbmcuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogQ2hlY2sgZm9yIC1mY2xhc3NwYXRoIGFuZAoJLWZDTEFTU1BBVEggYmVmb3JlIGV4YW1pbmluZyBvdGhlciBgLWYnIG9wdGlvbnMuCgoJKiBqYXZhLXRyZWUuaCAoZmluYWxpemVfaWRlbnRpZmllcl9ub2RlKTogRG9uJ3QgZGVjbGFyZS4KCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogRG9uJ3QgcHVzaCAiZmluYWwiIGZpZWxkLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRG9uJ3QgcHVzaCAiZmluYWwiIGZpZWxkLgoJKGZpbmFsaXplX2lkZW50aWZpZXJfbm9kZSk6IFJlbW92ZWQuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBzZXQgZmluYWxpemVfaWRlbnRpZmllcl9ub2RlLgoKCSogY29uZmlnLWxhbmcuaW4gKHN0YWdlc3R1ZmYpOiBBZGRlZCBqY2YtZHVtcCBhbmQganYtc2Nhbi4KCjE5OTgtMTAtMTEgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhKTogRGVwZW5kIG9uIGpjZi1kdW1wIGFuZCBqdi1zY2FuLgoJKEpWX1NDQU5fU09VUkNFUyk6IE5ldyBtYWNyby4KCShKQ0ZfRFVNUF9TT1VSQ0VTKTogTGlrZXdpc2UuCgkoamNmLWR1bXAkKGV4ZWV4dCkpOiBOZXcgdGFyZ2V0LgoJKGp2LXNjYW4kKGV4ZWV4dCkpOiBOZXcgdGFyZ2V0LgoKMTk5OC0xMC0yMiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKExFWCk6IFJlbW92ZWQuCgkoTEVYRkxBR1MpOiBMaWtld2lzZS4KCShTRVRfQklTT04pOiBOZXcgbWFjcm8uCgkoQklTT04pOiBSZW1vdmVkLgoJKCQoUEFSU0VfQykpOiBVc2UgU0VUX0JJU09OLiAgUnVuIGJpc29uIGZyb20gc3JjZGlyIHRvIGF2b2lkCglzcHVyaW91cyBkaWZmcyBpbiBwYXJzZS5jLgoJKCQoUEFSU0VfU0NBTl9DKSk6IExpa2V3aXNlLgoJKFBBUlNFX0RJUik6IE5ldyBtYWNyby4KCShQQVJTRV9DKTogVXNlIGl0LgoJKFBBUlNFX1NDQU5fQyk6IExpa2V3aXNlLgoJKFBBUlNFX1JFTERJUik6IE5ldyBtYWNyby4KCgkqIGpjZi1pby5jIChzYXdfamF2YV9zb3VyY2UpOiBEZWZpbmUgaGVyZSwgbm90IGluIGpjZi1wYXJzZS5jLgoKCSogamNmLWlvLmMgKGZpbmRfY2xhc3MpOiBVc2Ugc2F3X2phdmFfc291cmNlIHRvIGRldGVybWluZSB3aGVuIHRvCglsb29rIGZvciBgLmphdmEnIGZpbGUuCgkqIGpjZi1wYXJzZS5jIChzYXdfamF2YV9zb3VyY2UpOiBOZXcgZ2xvYmFsLgoJKHl5cGFyc2UpOiBTZXQgaXQgaWYgYC5qYXZhJyBmaWxlIHNlZW4uCgoJKiBNYWtlLWxhbmcuaW4gKEpBVkFfU1JDUyk6IEFkZGVkIGpjZi1wYXRoLmMuCgkoR0NKSF9TT1VSQ0VTKTogTGlrZXdpc2UuCgkqIE1ha2VmaWxlLmluIChkYXRhZGlyKTogTmV3IG1hY3JvLgoJKGxpYmphdmFfemlwKTogTGlrZXdpc2UuCgkoSkFWQV9PQkpTKTogQWRkZWQgamNmLXBhdGguby4KCSguLi9qY2YtZHVtcCQoZXhlZXh0KSk6IERlcGVuZCBvbiBhbmQgbGluayB3aXRoIGpjZi1kZXBlbmQuby4KCSguLi9nY2poJChleGVleHQpKTogTGlrZXdpc2UuCgkoamNmLXBhdGgubyk6IE5ldyB0YXJnZXQuCgkqIGphdmEtdHJlZS5oIChmaXhfY2xhc3NwYXRoKTogUmVtb3ZlZCBkZWNsLgoJKiBqY2YtcGFyc2UuYyAoZml4X2NsYXNzcGF0aCk6IFJlbW92ZWQuCgkobG9hZF9jbGFzcyk6IERvbid0IGNhbGwgZml4X2NsYXNzcGF0aC4KCSogcGFyc2UueSAocmVhZF9pbXBvcnRfZGlyKTogRG9uJ3QgY2FsbCBmaXhfY2xhc3NwYXRoLgoJKiBsZXguaDogRG9uJ3QgbWVudGlvbiBjbGFzc3BhdGguCgkqIGxleC5jIChqYXZhX2luaXRfbGV4KTogRG9uJ3QgaW5pdGlhbGl6ZSBjbGFzc3BhdGguCgkqIGpjZi1pby5jIChjbGFzc3BhdGgpOiBSZW1vdmVkIGdsb2JhbC4KCShmaW5kX2NsYXNzKTogVXNlIGpjZl9wYXRoIGl0ZXJhdGlvbiBmdW5jdGlvbnMuICBDb3JyZWN0bHkgc2VhcmNoCgljbGFzcyBwYXRoIGZvciAuamF2YSBmaWxlLgoJKG9wZW5faW5femlwKTogTmV3IGFyZ3VtZW50IGBpc19zeXN0ZW0nLgoJKiBqY2YtZHVtcC5jIChtYWluKTogQ2FsbCBqY2ZfcGF0aF9pbml0LiAgUmVjb2duaXplIGFsbCBuZXcKCWNsYXNzcGF0aC1yZWxhdGVkIG9wdGlvbnMuCgkqIGxhbmcuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogSGFuZGxlIC1mY2xhc3NwYXRoLCAtZkNMQVNTUEFUSCwKCWFuZCAtSS4KCShsYW5nX2luaXQpOiBDYWxsIGpjZl9wYXRoX2luaXQuCgkqIGxhbmctb3B0aW9ucy5oOiBNZW50aW9uIC1JLCAtZmNsYXNzcGF0aCwgYW5kIC1mQ0xBU1NQQVRILgoJKiBsYW5nLXNwZWNzLmg6IEhhbmRsZSAtSS4gIE1pbm9yIGNsZWFudXAgdG8gLU0gb3B0aW9ucy4KCUNvcnJlY3RseSBwdXQgYnJhY2VzIGFyb3VuZCBzZWNvbmQgc3RyaW5nIGluIGVhY2ggZW50cnkuCgkqIGdqYXZhaC5jIChtYWluKTogQ2FsbCBqY2ZfcGF0aF9pbml0LiAgUmVjb2duaXplIGFsbCB0aGUgbmV3CgljbGFzc3BhdGgtcmVsYXRlZCBvcHRpb25zLgoJKGhlbHApOiBVcGRhdGVkIGZvciBuZXcgb3B0aW9ucy4KCSogamNmLmg6IERlY2xhcmUgZnVuY3Rpb25zIGZyb20gamNmLXBhdGguYy4gIERvbid0IG1lbnRpb24KCWBjbGFzc3BhdGgnIGdsb2JhbC4KCSogamNmLXBhdGguYzogTmV3IGZpbGUuCgoJKiBqY2YtZGVwZW5kLmM6IEluY2x1ZGUgamNmLmguCgoJKiBqY2Ytd3JpdGUuYyAobG9jYWx2YXJfYWxsb2MpOiBSZXR1cm5zIGB2b2lkJy4KCShsb2NhbHZhcl9mcmVlKTogUmVtb3ZlZCB1bnVzZWQgdmFyaWFibGUuCgoJKiBsYW5nLmMgKE9CSkVDVF9TVUZGSVgpOiBEZWZpbmUgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4KCShpbml0X3BhcnNlKTogVXNlIE9CSkVDVF9TVUZGSVgsIG5vdCAiLm8iLgoKMTk5OC0xMC0yMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChlbWl0X3JlZ2lzdGVyX2NsYXNzZXMpOiBSZW5hbWVkIGZyb20KCWVtaXRfcmVnaXN0ZXJfY2xhc3MuCgkqIGphdmEtdHJlZS5oIChlbWl0X3JlZ2lzdGVyX2NsYXNzZXMpOiBQcm90b3R5cGUgcmVuYW1lZCBmcm9tCgllbWl0X3JlZ2lzdGVyX2NsYXNzLgoJKiBqY2YtcGFyc2UuYyAoeXlwYXJzZSk6IENhbGwgZW1pdF9yZWdpc3Rlcl9jbGFzc2VzIG9uY2UgYmVmb3JlCglyZXR1cm5pbmcuCgkqIHBhcnNlLnkgKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBObyBsb25nZXIgcmVnaXN0ZXIgY2xhc3Nlcy4KCjE5OTgtMTAtMjAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoaXNfY29tcGlsZWRfY2xhc3MpOiBOZXcgbG9jYWwgdmFyaWFibGUKCXNlZW5faW5femlwLiBJZGVudGlmeSBjbGFzc2VzIGZvdW5kIGluIGN1cnJlbnRseSBjb21waWxlZCBzb3VyY2UKCWZpbGUocykuCgkqIGRlY2wuYyAoY29tcGxldGVfc3RhcnRfamF2YV9tZXRob2QpOiBGaXhlZCB0eXBvLgoJKiBqYXZhLXRyZWUuaCAoQ0xBU1NfRlJPTV9DVVJSRU5UTFlfQ09NUElMRURfU09VUkNFX1AsCglIQVNfQkVFTl9BTFJFQURZX1BBUlNFRF9QLCBJU19BX0NPTU1BTkRfTElORV9GSUxFTkFNRV9QKTogTmV3IG1hY3Jvcy4KCShDTEFTU19QKTogTW92ZWQgYXJvdW5kLgoJKGphdmFfcGFyc2VfYWJvcnRfb25fZXJyb3IpOiBNYWNybyBtb3ZlZCBmcm9tIGpjZi1wYXJzZS5jCgkqIGpjZi1wYXJzZS5jIChqYXZhX3BhcnNlX2Fib3J0X29uX2Vycm9yKTogTWFjcm8gbW92ZWQgdG8KCWphdmEtdHJlZS5oCgkoamNmX3BhcnNlX3NvdXJjZSk6IENoYW5nZWQgbGVhZGluZyBjb21tZW50LiBSZW1vdmVkIHVubmVjZXNzYXJ5CglmY2xvc2UgYW5kIENMQVNTX0ZST01fU09VUkNFX1AgbWFya2luZy4KCShwYXJzZV9zb3VyY2VfZmlsZSk6IE5ldyBsb2NhbCB2YXJpYWJsZXMgcmVtZW1iZXJfZm9yX2dlbmVyYXRpb24KCWFuZCBmaWxlbmFtZS4gTWFyayBwYXJzZWQgZmlsZSBuYW1lIGlkZW50aWZpZXIgbm9kZS4gUmVtb3ZlZCBibG9jawoJZXhlY3V0ZWQgd2hlbiBwYXJzZV9vbmx5IHdhcyBudWxsLiBTZXQgcmVtZW1iZXJfZm9yX2dlbmVyYXRpb24uCglVc2UgaXQgYXMgYW4gYXJndW1lbnQgdG8gamF2YV9wb3BfcGFyc2VyX2NvbnRleHQuCgkoeXlwYXJzZSk6IE5ldyBsb2NhbCB2YXJpYWJsZXMgc2V2ZXJhbF9maWxlcywgbGlzdCwgbmV4dCBub2RlIGFuZAoJY3VycmVudF9maWxlX2xpc3QuIFNwbGl0IGFtcGVyc2FuZCBzZXBhcmF0ZWQgZmlsZSBuYW1lcyBpbnRvCgljdXJyZW50X2ZpbGVfbGlzdC4gSXRlcmF0ZSB0aHJvdWdoIHRoZSBsaXN0IGFuZCBwYXJzZSBhY2NvcmRpbmdseS4KCSogcGFyc2UuaCAoamF2YV9wb3BfcGFyc2VyX2NvbnRleHQpOiBOZXcgZnVuY3Rpb24gcHJvdG90eXBlLgoJKiBwYXJzZS55IChjdHhwX2Zvcl9nZW5lcmF0aW9uKTogTmV3IHN0YXRpYyBnbG9iYWwgdmFyaWFibGUuCgkoamF2YV9wb3BfcGFyc2VyX2NvbnRleHQpOiBOZXcgYXJndW1lbnQgZ2VuZXJhdGUuIExpbmsgcG9wcGVkIGN0eHAKCXRvIGN0eHBfZm9yX2dlbmVyYXRpb24gbGlzdCBhY2NvcmRpbmdseS4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogRml4ZWQgaW5kZW50YXRpb24uCgkoamF2YV9leHBhbmRfY2xhc3Nlcyk6IE5ldyBmdW5jdGlvbi4KCjE5OTgtMTAtMTcgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW46ICBMaW5rIHdpdGggbGliaWJlcnR5LmEgaW5zdGVhZCBvZiBtZW1tb3ZlLm8uCgoxOTk4LTEwLTE2ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGxleC5jIChzZXRqbXAuaCk6IE5vIGxvbmdlciBpbmNsdWRlZC4KCSogbGV4LmggKHNldGptcC5oKTogSW5jbHVkZWQuCgkqIHBhcnNlLmggKFNFVF9UWVBFX0ZPUl9SRVNPTFVUSU9OKTogTmV3IG1hY3JvLgoJKGR1cGxpY2F0ZV9kZWNsYXJhdGlvbl9lcnJvcl9wKTogUmVuYW1lZCBmcm9tCglkdXBsaWNhdGVfZGVjbGFyYXRpb25fZXJyb3IuCgkoYnVpbGRfYXJyYXlfZnJvbV9uYW1lKTogTmV3IGZ1bmN0aW9uIHByb3RvdHlwZS4KCSogcGFyc2UueSAoc2V0am1wLmgpOiBObyBsb25nZXIgaW5jbHVkZWQuCgkodmFyaWFibGVfZGVjbGFyYXRvcl9pZCk6IERlZmluZSBhY3Rpb24uCgkoYnVpbGRfYXJyYXlfZnJvbV9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKGR1cGxpY2F0ZV9kZWNsYXJhdGlvbl9lcnJvcl9wKTogUmVuYW1lZCBmcm9tCglkdXBsaWNhdGVfZGVjbGFyYXRpb25fZXJyb3IuICBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuCgkocmVnaXN0ZXJfZmllbGRzKTogTWFpbiBgZm9yJyBsb29wIHJlb3JnYW5pemVkLiBVc2VzCglTRVRfVFlQRV9GT1JfUkVTT0xVVElPTiBhbmQgYnVpbGRfYXJyYXlfZnJvbV9uYW1lLgoJKG1ldGhvZF9kZWNsYXJhdG9yKTogVXNlcyBTRVRfVFlQRV9GT1JfUkVTT0xVVElPTiBhbmQgY2FsbAoJYnVpbGRfYXJyYXlfZnJvbV9uYW1lLgoJKHJlc29sdmVfY2xhc3MpOiBTZXQgQ0xBU1NfTE9BREVEX1Agb24gbmV3bHkgYnVpbGQgYXJyYXkgZGltZW5zaW9uCgl0eXBlcy4KCShyZWFkX2ltcG9ydF9kaXIpOiBEb24ndCB0cnkgdG8gc2tpcCBgLicgYW5kIGAuLicuCgkoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBVc2VzIFNFVF9UWVBFX0ZPUl9SRVNPTFVUSU9OIGFuZAoJYnVpbGRfYXJyYXlfZnJvbV9uYW1lLiBNYWluIGBmb3InIGxvb3AgcmVvcmdhbml6ZWQuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogV2hlbiBidWlsZGluZyBhY2Nlc3MgdG8gYQoJZmllbGQsIHVzZSB0aGUgdHlwZSB3aGVyZSB0aGUgZmllbGQgd2FzIGZvdW5kLCBub3QgaXRzIG93biB0eXBlLgoJKG1heWJlX2FjY2Vzc19maWVsZCk6IFVzZSBmaWVsZCBERUNMX0NPTlRFWFQgaWYgdGhlIHR5cGUgd2hlcmUgdGhlCglmaWVsZCB3YXMgZm91bmQgaXMgbnVsbC4KCShxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogU3dlZXAgdGhyb3VnaCBhbGwgc3VjY2Vzc2l2ZSBhcnJheQoJZGltZW5zaW9ucy4KCjE5OTgtMTAtMTQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmggKHBvcF9sYWJlbGVkX2Jsb2NrLCBsYW5nX3ByaW50YWJsZV9uYW1lLAoJbWF5YmVfYWRkX2ludGVyZmFjZSwgc2V0X3N1cGVyX2luZm8sIGdldF9hY2Nlc3NfZmxhZ3NfZnJvbV9kZWNsLAoJaW50ZXJmYWNlX29mX3AsIGluaGVyaXRzX2Zyb21fcCwgZml4X2NsYXNzcGF0aCwKCWNvbXBsZXRlX3N0YXJ0X2phdmFfbWV0aG9kLCBlbWl0X2hhbmRsZXJzLCBpbml0X291dGdvaW5nX2Nwb29sLAoJbWFrZV9jbGFzc19kYXRhLCByZWdpc3Rlcl9jbGFzcywgYWxsb2NfbmFtZV9jb25zdGFudCk6IE5ldwoJZnVuY3Rpb24gcHJvdG90eXBlcy4KCSogbGFuZy5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBTZXQgYXJnYyBhcmd1bWVudCB1bnVzZWQuIEZpeGVkCglpbmRlbnRhdGlvbi4gQWRkZWQgY2FzdCB0byByZW1vdmUgd2FybmluZy4KCShsYW5nX3ByaW50YWJsZV9uYW1lKTogU2V0IHYgYXJndW1lbnQgdW51c2VkLgoJKGxhbmdfcHJpbnRfZXJyb3IpOiBBZGRlZCBhcmd1bWVudCB0byBsYW5nX3ByaW50YWJsZV9uYW1lIGNhbGwuCgkoamF2YV9kdW1teV9wcmludCwgcHJpbnRfbGFuZ19kZWNsLCBwcmludF9sYW5nX3R5cGUsCglwcmludF9sYW5nX2lkZW50aWZpZXIsIGxhbmdfcHJpbnRfeG5vZGUpOiBBbGwgYXJndW1lbnQgbWFya2VkCgl1bnVzZWQuCgkqIGxleC5jIChqYXZhX3VuZ2V0X3VuaWNvZGUpOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGFyZ3VtZW50LgoJKGphdmFfYWxsb2NhdGVfbmV3X2xpbmUpOiBVbnVzZWQgbG9jYWwgdmFyaWFibGUgaXMgZ29uZS4KCShqYXZhX3JlYWRfY2hhcik6IEFkZGVkIHBhcmVudGhlc2lzIGluIGV4cHJlc3Npb25zIHRvIHJlbW92ZQoJd2FybmluZ3MuICBBZGRlZCBmaW5hbCByZXR1cm4gc3RhdGVtZW50LgoJKGphdmFfcmVhZF91bmljb2RlKTogQWRkZWQgcGFyZW50aGVzaXMgaW4gZXhwcmVzc2lvbiB0byByZW1vdmUKCXdhcm5pbmcuCgkoamF2YV9wYXJzZV9lbmRfY29tbWVudCk6IEZpeGVkIGphdmFfdW5nZXRfdW5pY29kZSBpbnZvY2F0aW9uLgoJKGphdmFfcGFyc2VfZXNjYXBlX3NlcXVlbmNlKTogTGlrZXdpc2UuCgkoamF2YV9sZXgpOiBVbnVzZWQgbG9jYWwgdmFyaWFibGVzIGFyZSBnb25lLiBGaXhlZAoJamF2YV91bmdldF91bmljb2RlIGludm9jYXRpb24uCgkqIGxleC5oIChzZXRfZmxvYXRfaGFuZGxlcik6IFByb3RvdHlwZSBhZGRlZCB3aGVuIEpDMV9MSVRFIG5vdAoJZGVmaW5lZC4KCSogcGFyc2UuaCAoRVJST1JfQ0FOVF9DT05WRVJUX1RPX0JPT0xFQU4pOiBGaXhlZAoJbGFuZ19wcmludGFibGVfbmFtZSBpbnZvY2F0aW9uIGluIG1hY3JvLgoJKEVSUk9SX0NBTlRfQ09OVkVSVF9UT19OVU1FUklDLCBFUlJPUl9DQVNUX05FRURFRF9UT19JTlRFR1JBTCk6CglMaWtld2lzZS4KCShkdXBsaWNhdGVfZGVjbGFyYXRpb25fZXJyb3IpOiBTdXBwcmVzc2VkIHVudXNlZCBhcmd1bWVudCBpbgoJcHJvdG90eXBlLgoJKGlkZW50aWNhbF9zdWJwYXRoX3ApOiBGdW5jdGlvbiBkZWNsYXJhdGlvbiBpcyBnb25lLgoJKHBhdGNoX2ludm9rZSk6IFN1cHByZXNzZWQgdW51c2VkIGFyZ3VtZW50IGluIHByb3RvdHlwZS4KCShwYXRjaF9jYXN0LCBidWlsZF9sYWJlbGVkX2Jsb2NrLCBjaGVja190aHJvd25fZXhjZXB0aW9ucyk6CglMaWtld2lzZS4KCSogcGFyc2UueSAoc2V0am1wLmgpOiBJbmNsdWRlZAoJKHRvcGxldi5oKTogTGlrZXdpc2UuCgkoZmllbGRfZGVjbGFyYXRpb246KTogU3VwcHJlc3NlZCB1bnVzZWQgbG9jYWwKCShsYWJlbF9kZWNsOik6IEZpeGVkIGJ1aWxkX2xhYmVsZWRfYmxvY2sgaW52b2NhdGlvbi4KCShqYXZhX3BvcF9wYXJzZXJfY29udGV4dCk6IFB1dCBleHRyYSBwYXJlbnRoZXNpcyBhcm91bmQgYXNzaWdubWVudAoJaW4gaWYuCgkoeXllcnJvcik6IFN1cHByZXNzZWQgdW51c2VkIGxvY2FsIHZhcmlhYmxlcy4KCSh2YXJpYWJsZV9yZWRlZmluaXRpb25fZXJyb3IpOiBGaXhlZCBsYW5nX3ByaW50YWJsZV9uYW1lCglpbnZvY2F0aW9uLgoJKGNyZWF0ZV9pbnRlcmZhY2UpOiBTdXBwcmVzc2VkIHVudXNlZCBsb2NhbCB2YXJpYWJsZXMuCgkoY3JlYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkoZHVwbGljYXRlX2RlY2xhcmF0aW9uX2Vycm9yKTogU3VwcHJlc3NlZCB1bnVzZWQgYXJndW1lbnQuIEZpeGVkCglsYW5nX3ByaW50YWJsZV9uYW1lIGludm9jYXRpb24uCgkocmVnaXN0ZXJfZmllbGRzKTogU3VwcHJlc3NlZCB1bnVzZWQgbG9jYWwgdmFyaWFibGUuIEZpeGVkCglkdXBsaWNhdGVfZGVjbGFyYXRpb25fZXJyb3IgaW52b2NhdGlvbi4KCShtZXRob2RfaGVhZGVyKTogU3VwcHJlc3NlZCB1bnVzZWQgbG9jYWwgdmFyaWFibGUuCgkobWV0aG9kX2RlY2xhcmF0b3IsIHBhcnNlcl9jaGVja19zdXBlcik6IExpa2V3aXNlLgoJKGphdmFfY29tcGxldGVfY2xhc3MpOiBTdXBwcmVzc2VkIHVudXNlZCBsb2NhbCB2YXJpYWJsZS4gRml4ZWQKCWZhdGFsIGVycm9yIG1lc3NhZ2UuCgkoY29tcGxldGVfY2xhc3NfcmVwb3J0X2Vycm9ycyk6IEFkZGVkIGRlZmF1bHQ6IGluIHN3aXRjaC4KCShqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcyk6IEZpeGVkIGxhbmdfcHJpbnRhYmxlX25hbWUKCWludm9jYXRpb25zLgoJKGNoZWNrX3Rocm93c19jbGF1c2VzKTogTGlrZXdpc2UuCgkoamF2YV9jaGVja19hYnN0cmFjdF9tZXRob2RzKTogU3VwcHJlc3NlZCB1bnVzZWQgbG9jYWwKCXZhcmlhYmxlLiBGaXhlZCBsYW5nX3ByaW50YWJsZV9uYW1lIGludm9jYXRpb24uCgkocmVhZF9pbXBvcnRfZW50cnkpOiBBZGRlZCBzdXBwbGVtZW50YWwgcmV0dXJuIHN0YXRlbWVudC4KCShyZWFkX2ltcG9ydF9kaXIpOiBTdXBwcmVzc2VkIHVudXNlZCBsb2NhbCB2YXJpYWJsZXMuCgkoY2hlY2tfcGtnX2NsYXNzX2FjY2VzcywgZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBMaWtld2lzZS4KCShzb3VyY2Vfc3RhcnRfamF2YV9tZXRob2QpOiBTdXBwcmVzc2VkIHVudXNlZCBleHRlcm4gdmFyaWFibGUKCWRlY2xhcmF0aW9ucwoJKGV4cGFuZF9zdGFydF9qYXZhX21ldGhvZCk6IFN1cHByZXNzZWQgdW51c2VkIGV4dGVybiBhbmQgbG9jYWwKCXZhcmlhYmxlIGRlY2xhcmF0aW9ucy4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogTGlrZXdpc2UuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kKTogU3VwcHJlc3NlZCB1bnVzZWQgbG9jYWwgdmFyaWFibGVzLgoJKG1ha2VfcXVhbGlmaWVkX25hbWUpOiBMaWtld2lzZS4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBBZGRlZCBkZWZhdWx0OiBpbgoJc3dpdGNoLiBGaXhlZCBsYW5nX3ByaW50YWJsZV9uYW1lIGludm9jYXRpb24uCgkoY2xhc3NfaW5zdGFuY2VfY3JlYXRpb25fZXhwcmVzc2lvbik6IEFkZGVkIHBhcmVudGhlc2lzIGFyb3VuZAoJZXhwcmVzc2lvbnMuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb25fc3RtdCk6IEZpeGVkIGxhbmdfcHJpbnRhYmxlX25hbWUgYW5kCglwYXRjaF9pbnZva2UgaW52b2NhdGlvbnMuCgkoY2hlY2tfZm9yX3N0YXRpY19tZXRob2RfcmVmZXJlbmNlKTogRml4ZWQgbGFuZ19wcmludGFibGVfbmFtZQoJaW52b2NhdGlvbi4KCShwYXRjaF9pbnZva2UpOiBTdXBwcmVzc2VkIHVudXNlZCBhcmd1bWVudHMgYW5kIGxvY2FsIHZhcmlhYmxlcy4KCShsb29rdXBfbWV0aG9kX2ludm9rZSk6IFN1cHByZXNzZWQgdW51c2VkIGxvY2FsIHZhcmlhYmxlcy4KCShxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogQWRkZWQgZGVmYXVsdDogaW4gc3dpdGNoLgoJKGlkZW50aWNhbF9zdWJwYXRoX3ApOiBGdW5jdGlvbiByZW1vdmVkLgoJKHBhdGNoX2Fzc2lnbm1lbnQpOiBTdXBwcmVzc2VkIHVudXNlZCBsb2NhbCB2YXJpYWJsZXMuIFN1cHByZXNzZWQKCXVubmVjZXNzYXJ5IGlmIHN0YXRlbWVudC4gRml4ZWQgbGFuZ19wcmludGFibGVfbmFtZSBpbnZvY2F0aW9ucy4KCSh0cnlfYnVpbHRpbl9hc3NpZ25jb252KTogRml4ZWQgbGFuZ19wcmludGFibGVfbmFtZSBpbnZvY2F0aW9ucy4KCSh2YWxpZF9yZWZfYXNzaWduY29udl9jYXN0X3ApOiBQYXJlbnRoZXNpcyBhcm91bmQKCWV4cHJlc3Npb24uIFN1cHByZXNzZWQgdW51c2VkIGxvY2FsIHZhcmlhYmxlcy4KCShidWlsZF9iaW5vcCk6IFN1cHByZXNzZWQgdW51c2VkIGxvY2FsIHZhcmlhYmxlcy4gZml4ZWQKCWxhbmdfcHJpbnRhYmxlX25hbWUgaW52b2NhdGlvbnMuCgkoc3RyaW5nX2NvbnN0YW50X2NvbmNhdGVuYXRpb24pOiBTdXBwcmVzc2VkIHVudXNlZCBsb2NhbAoJdmFyaWFibGVzLgoJKHBhdGNoX3VuYXJ5b3ApOiBGaXhlZCBsYW5nX3ByaW50YWJsZV9uYW1lIGludm9jYXRpb24uCgkocGF0Y2hfY2FzdCk6IFN1cHByZXNzZWQgdW5uZWNlc3NhcnkgYXJndW1lbnQuIEZpeGVkCglsYW5nX3ByaW50YWJsZV9uYW1lIGludm9jYXRpb24uCgkocGF0Y2hfYXJyYXlfcmVmKTogRml4ZWQgbGFuZ19wcmludGFibGVfbmFtZSBpbnZvY2F0aW9uLgoJKHBhdGNoX25ld2FycmF5LCBwYXRjaF9yZXR1cm4sIHBhdGNoX2lmX2Vsc2Vfc3RhdGVtZW50KTogTGlrZXdpc2UuCgkoYnVpbGRfbGFiZWxlZF9ibG9jayk6IFN1cHByZXNzZWQgdW51c2VkIGFyZ3VtZW50LgoJKGdlbmVyYXRlX2xhYmVsZWRfYmxvY2spOiBGaXhlZCBidWlsZF9sYWJlbGVkX2Jsb2NrIGludm9jYXRpb24uCgkoYnVpbGRfbG9vcF9ib2R5KTogU3VwcHJlc3NlZCB1bnVzZWQgbG9jYWwgdmFyaWFibGVzLgoJKHBhdGNoX2xvb3Bfc3RhdGVtZW50KTogTGlrZXdpc2UuCgkocGF0Y2hfZXhpdCk6IEZpeGVkIGxhbmdfcHJpbnRhYmxlX25hbWUgaW52b2NhdGlvbi4KCShwYXRjaF9zd2l0Y2hfc3RhdGVtZW50KTogTGlrZXdpc2UuCgkoY2FzZV9pZGVudGl0eSk6IEZpcnN0IGFyZ3VtZW50IG1hcmtlZCB1bnVzZWQuCgkocGF0Y2hfdHJ5X3N0YXRlbWVudCk6IEZpeGVkIGxhbmdfcHJpbnRhYmxlX25hbWUgaW52b2NhdGlvbnMuCgkocGF0Y2hfc3luY2hyb25pemVkX3N0YXRlbWVudCwgcGF0Y2hfdGhyb3dfc3RhdGVtZW50KTogTGlrZXdpc2UuCgkoY2hlY2tfdGhyb3duX2V4Y2VwdGlvbnMpOiBGaXhlZCBjaGVja190aHJvd25fZXhjZXB0aW9ucyBhbmQKCWxhbmdfcHJpbnRhYmxlX25hbWUgaW52b2NhdGlvbnMuCgkoY2hlY2tfdGhyb3duX2V4Y2VwdGlvbnNfZG8pOiBTdXBwcmVzc2VkIHVudXNlZCBhcmd1bWVudC4KCjE5OTgtMTAtMTQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jICh3cml0ZV9jbGFzc2ZpbGUpOiBBZGQgb3V0cHV0IGNsYXNzIGZpbGUgYXMgdGFyZ2V0LgoJKiBsYW5nLW9wdGlvbnMuaDogQWRkZWQgLU1ELCAtTU1ELCAtTSwgYW5kIC1NTS4KCSogamNmLmg6IEFkZGVkIGRlY2xhcmF0aW9ucyBmb3IgZGVwZW5kZW5jeS10cmFja2luZyBmdW5jdGlvbnMuCgkqIGxhbmctc3BlY3MuaDogSGFuZGxlIC1NLCAtTU0sIE1ELCBhbmQgLU1NRC4KCSogbGFuZy5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBSZWNvZ25pemUgLU1EIGFuZCAtTU1ELgoJKGZpbmlzaF9wYXJzZSk6IENhbGwgamNmX2RlcGVuZGVuY3lfd3JpdGUuCgkoZGVwZW5kZW5jeV90cmFja2luZyk6IE5ldyBnbG9iYWwuCgkoREVQRU5EX1NFVF9GSUxFKTogTmV3IGRlZmluZS4KCShERVBFTkRfRU5BQkxFKTogTmV3IGRlZmluZS4KCShpbml0X3BhcnNlKTogRW5hYmxlIGRlcGVuZGVuY3kgdHJhY2tpbmcgaWYgcmVxdWlyZWQuCglJbmNsdWRlICJmbGFncy5oIi4KCSogTWFrZWZpbGUuaW4gKEpBVkFfT0JKUyk6IEFkZGVkIGpjZi1kZXBlbmQuby4KCSguLi9qY2YtZHVtcCQoZXhlZXh0KSk6IERlcGVuZCBvbiBhbmQgbGluayB3aXRoIGpjZi1kZXBlbmQuby4KCSguLi9nY2poJChleGVleHQpKTogTGlrZXdpc2UuCgkoamNmLWRlcGVuZC5vKTogTmV3IHRhcmdldC4KCSogTWFrZS1sYW5nLmluIChKQVZBX1NSQ1MpOiBBZGRlZCBqY2YtZGVwZW5kLmMuCgkoR0NKSF9TT1VSQ0VTKTogTGlrZXdpc2UuCgkqIGpjZi1pby5jIChvcGVuX2NsYXNzKTogQ2FsbCBqY2ZfZGVwZW5kZW5jeV9hZGRfZmlsZS4gIEFkZGVkCglkZXBfbmFtZSBhcmd1bWVudC4KCShmaW5kX2NsYXNzZmlsZSk6IEFkZGVkIGRlcF9uYW1lIGFyZ3VtZW50LgoJKGZpbmRfY2xhc3MpOiBDb21wdXRlIG5hbWUgb2YgZGVwZW5kZW5jeS4KCShvcGVuX2luX3ppcCk6IENhbGwgamNmX2RlcGVuZGVuY3lfYWRkX2ZpbGUuCgkqIGdqYXZhaC5jIChvdXRwdXRfZmlsZSk6IE5vIGxvbmdlciBnbG9iYWwuCgkodXNhZ2UpOiBEb24ndCBtZW50aW9uICJnamF2YWgiLgoJKGhlbHApOiBMaWtld2lzZS4KCShqYXZhX25vX2FyZ3VtZW50KTogTGlrZXdpc2UuCgkodmVyc2lvbik6IExpa2V3aXNlLgoJKG1haW4pOiBSZWNvZ25pemUgYW5kIGhhbmRsZSAtTSBmYW1pbHkgb2Ygb3B0aW9ucy4KCShwcmludF9tYW5nbGVkX2NsYXNzbmFtZSk6IFJldHVybiBpcyB2b2lkLgoJKHByb2Nlc3NfZmlsZSk6IEhhbmRsZSBjYXNlIHdoZXJlIG91dHB1dCBpcyBzdXBwcmVzc2VkLgoJKEhBTkRMRV9FTkRfRklFTEQpOiBMaWtld2lzZS4KCShIQU5ETEVfTUVUSE9EKTogTGlrZXdpc2UuCgkqIGpjZi1kZXBlbmQuYzogTmV3IGZpbGUuCgoxOTk4LTEwLTEzICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBqYXZhLXRyZWUuZGVmOiBBZGQgbWlzc2luZyBuZXdsaW5lIGF0IEVPRi4KCjE5OTgtMTAtMTMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGpjZi1kdW1wLmMgKHByb2Nlc3NfY2xhc3MpOiBVc2UgRkFUQUxfRVhJVF9DT0RFLCBub3QgLTEuCgkobWFpbik6IExpa2V3aXNlLiAgRXhpdCB3aXRoIFNVQ0NFU1NfRVhJVF9DT0RFIGF0IGVuZCBvZgoJZnVuY3Rpb24uCglJbmNsdWRlIDxjb25maWcuaD4gYW5kICJzeXN0ZW0uaCIuCgkoZGlzYXNzZW1ibGVfbWV0aG9kKTogVW5kZWZpbmUgUkVUIHRvIGF2b2lkIGNsYXNoIHdpdGgKCWNvbmZpZy9pMzg2L2kzODYuaC4KCjE5OTgtMTAtMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChydW50aW1lX2V4Y2VwdGlvbl90eXBlX25vZGUsIGVycm9yX2V4Y2VwdGlvbl90eXBlX25vZGUpOgoJTmV3IGdsb2JhbCB2YXJpYWJsZXMuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplZC4KCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBTZXQgY2F1Z2h0IGV4Y2VwdGlvbiB0eXBlIHRvCgludWxsIGlmIGNhdGNoIGhhbmRsZXIgYXJndW1lbnQgZG9lc24ndCBleGl0LgoJKiBqYXZhLXRyZWUuZGVmIChTWU5DSFJPTklaRURfRVhQUiwgVEhST1dfRVhQUik6IE5ldyBKYXZhIHNwZWNpZmljCgl0cmVlIGNvZGVzLgoJKiBqYXZhLXRyZWUuaCAocnVudGltZV9leGNlcHRpb25fdHlwZV9ub2RlLAoJZXJyb3JfZXhjZXB0aW9uX3R5cGVfbm9kZSk6IEdsb2JhbCB2YXJpYWJsZXMgZGVjbGFyZWQuCgkoREVDTF9GVU5DVElPTl9USFJPV1MpOiBOZXcgbWFjcm8uCgkoREVDTF9GVU5DVElPTl9CT0RZKTogTW9kaWZpZWQgY29tbWVudC4KCShERUNMX1NQRUNJRklDX0NPVU5UKTogTGlrZXdpc2UuCgkoc3RydWN0IGxhbmdfZGVjbCk6IE5ldyBmaWVsZCB0aHJvd3NfbGlzdC4KCShJU19VTkNIRUNLRURfRVhQUkVTU0lPTl9QKTogTmV3IG1hY3JvLgoJKiBsZXguYyAoamF2YV9sZXgpOiBHZW5lcmF0ZSBsb2NhdGlvbiBpbmZvcm1hdGlvbiBmb3IgVEhST1dfVEsuCgkqIHBhcnNlLmggKFBVU0hfRVhDRVBUSU9OUywgUE9QX0VYQ0VQVElPTlMsIElOX1RSWV9CTE9DS19QLAoJRVhDRVBUSU9OU19QKTogTmV3IG1hY3Jvcy4KCShlbnVtIGpkZXBfY29kZSk6IE5ldyB2YWx1ZSBKREVQX0VYQ0VQVElPTi4KCShCVUlMRF9NT05JVE9SX0VOVEVSLCBCVUlMRF9NT05JVE9SX0VYSVQsCglCVUlMRF9BU1NJR05fRVhDRVBUSU9OX0lORk8sIEJVSUxEX1RIUk9XLCBTRVRfV0ZMX09QRVJBVE9SLAoJUEFUQ0hfTUVUSE9EX1JFVFVSTl9FUlJPUik6IE5ldyBtYWNyb3MuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb25fc3RtdCk6IEFkZGVkIG5ldyBhcmd1bWVudCB0byBwcm90b3R5cGUuCgkocGF0Y2hfc3luY2hyb25pemVkX3N0YXRlbWVudCwgcGF0Y2hfdGhyb3dfc3RhdGVtZW50LAoJY2hlY2tfdGhyb3duX2V4Y2VwdGlvbnMsIGNoZWNrX3Rocm93bl9leGNlcHRpb25zX2RvLAoJcHVyZ2VfdW5jaGVja2VkX2V4Y2VwdGlvbnMsIGNoZWNrX3Rocm93c19jbGF1c2VzKTogTmV3IGZ1bmN0aW9uCglwcm90b3R5cGVzLgoJKiBwYXJzZS55IEZpeGVkIHR5cG8gaW4ga2V5d29yZCBzZWN0aW9uLgoJKHRocm93Oik6IFJ1bGUgdGFnZ2VkIDxub2RlPi4KCShUSFJPV19USyk6IEtleXdvcmQgdGFnZ2VkIDxvcGVyYXRvcj4uCgkobWV0aG9kX2hlYWRlcjopOiBMYXN0IGFyZ3VtZW50IHRvIGNhbGwgdG8gbWV0aG9kX2hlYWRlciBwYXNzZWQKCWZyb20gdGhyb3dzOiBydWxlLgoJKHRocm93czosIGNsYXNzX3R5cGVfbGlzdDosIHRocm93X3N0YXRlbWVudDosCglzeW5jaHJvbml6ZWRfc3RhdGVtZW50Oiwgc3luY2hyb25pemVkOik6IERlZmluZWQgYWN0aW9ucy4KCShtZXRob2RfaGVhZGVyKTogTmV3IGxvY2FsIHZhcmlhYmxlIGN1cnJlbnQuIFJlZ2lzdGVyIGV4Y2VwdGlvbnMKCWZyb20gdGhyb3dzIGNsYXVzZS4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBDb21wbGV0ZSBhbmQgdmVyaWZ5IGV4Y2VwdGlvbnMgZnJvbSB0aHJvd3MKCWNsYXVzZS4KCShjb21wbGV0ZV9jbGFzc19yZXBvcnRfZXJyb3JzKTogRXJyb3IgbWVzc2FnZSBvbiBleGNlcHRpb25zIG5vdAoJZm91bmQKCShqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcyk6IEZpeGVkIHR5cG8uIFNob3J0Y3V0IG9uIHByaXZhdGUKCW92ZXJyaWRpbmcgbWV0aG9kcy4gQ2hhbmdlZCBlcnJvciBtZXNzYWdlIG9uIG1ldGhvZAoJcmVkZWZpbml0aW9uLiBDaGVjayBmb3IgdGhyb3dzIGNsYXVzZSBjb21wYXRpYmlsaXR5LgoJKGNoZWNrX3Rocm93c19jbGF1c2VzKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfY2hlY2tfYWJzdHJhY3RfbWV0aG9kcyk6IFVzZSBERUNMX05BTUUgZm9yIHdmbCBvciBjdXJyZW50CgltZXRob2QuIENoYW5nZWQgZXJyb3IgbWVzc2FnZSBvbiBtZXRob2QgcmVkZWZpbml0aW9uLgoJKGN1cnJlbnRseV9jYXVnaHRfdHlwZV9saXN0KTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogUHVyZ2UgdW5jaGVja2VkIGV4Y2VwdGlvbnMgZnJvbQoJdGhyb3dzIGNsYXVzZSBsaXN0LiBDYWxsIFBVU0hfRVhDRVBUSU9OUyBiZWZvcmUgd2FsayBhbmQKCVBPUF9FWENFUFRJT05TIGFmdGVyLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IFBhc3MgbmV3IGFyZ3VtZW50IGFzIE5VTEwgdG8KCXBhdGNoX21ldGhvZF9pbnZvY2F0aW9uX3N0bXQuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb25fc3RtdCk6IE5ldyBhcmd1bWVudCByZWZfZGVjbC4gSW52b2tlCglQQVRDSF9NRVRIT0RfUkVUVVJOX0VSUk9SIHdoZW4gcmV0dXJuaW5nIHdpdGggZXJyb3IuIFJldmVyc2UKCWFyZ3VtZW50IGxpc3Qgd2hlbiBhcHByb3ByaWF0ZS4gVXNlIG5ldyBhcmd1bWVudCBpZiBub24gbnVsbCB0bwoJc3RvcmUgc2VsZWN0ZWQgbWV0aG9kIGRlY2wuCgkocGF0Y2hfaW52b2tlKTogQ29udmVydCBpZiBuZWNlc3NhcnkgYXJncyBvZiBidWlsdGluIHR5cGVzIGJlZm9yZQoJZm9ybWluZyBDQUxMX0VYUFIuIEFyZ3VtZW50IGxpc3Qgbm8gbG9uZ2VyIHJldmVyc2VkIGhlcmUuCgkoaW52b2NhdGlvbl9tb2RlKTogVHJlYXQgZmluYWwgbWV0aG9kcyBhcyBzdGF0aWMgbWV0aG9kcy4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBOZXcgY2FzZXMgZm9yIFRIUk9XX0VYUFI6IGFuZAoJU1lOQ0hST05JWkVEX0VYUFI6LiBDaGVjayB0aHJvd24gZXhjZXB0aW9ucyB3aGVuIGNvbXBsZXRpbmcKCWZ1bmN0aW9uIGNhbGwuCgkoY29tcGxldGVfZnVuY3Rpb25fYXJndW1lbnRzKTogTm8gbW9yZSBSRUNPUkRfVFlQRQoJY29udmVyc2lvbi4gRnVuY3Rpb24gcGFyYW1ldGVyIG5vZGVzIG5vIGxvbmdlciBzYXZlZC4KCSh2YWxpZF9yZWZfYXNzaWduY29udl9jYXN0X3ApOiBBdm9pZCBoYW5kbGluZyBudWxsIHR5cGUuCgkocGF0Y2hfYmlub3ApOiBGaXhlZCBudWxsIGNvbnN0YW50IHJlZmVyZW5jZSBoYW5kbGluZy4KCShidWlsZF90cnlfc3RhdGVtZW50KTogVXNlIEJVSUxEX0FTU0lHTl9FWENFUFRJT05fSU5GTyBhbmQKCUJVSUxEX1RIUk9XIG1hY3Jvcy4KCShwYXRjaF90cnlfc3RhdGVtZW50KTogRml4ZWQgY29tbWVudHMuIFJlY29yZCBjYXVnaHQgdHlwZXMgaW4KCWxpc3QsIHB1c2ggdGhlIGxpc3QsIGV4cGFuZCB0cnkgYmxvY2sgYW5kIHBvcCB0aGUgbGlzdC4KCShwYXRjaF9zeW5jaHJvbml6ZWRfc3RhdGVtZW50LCBwYXRjaF90aHJvd19zdGF0ZW1lbnQsCgljaGVja190aHJvd25fZXhjZXB0aW9ucywgY2hlY2tfdGhyb3duX2V4Y2VwdGlvbnNfZG8sCglwdXJnZV91bmNoZWNrZWRfZXhjZXB0aW9ucyk6IE5ldyBmdW5jdGlvbnMuCgkqIHR5cGVjay5jIChsb29rdXBfYXJndW1lbnRfbWV0aG9kKTogQWxsb3cgV0ZMIGluIHBsYWNlIG9mIG1ldGhvZAoJREVDTF9OQU1FIGR1cmluZyBtZXRob2QgZGVmaW5pdGlvbiBjaGVjawoKMTk5OC0xMC0wOSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKGRlY29kZV9zaWduYXR1cmVfcGllY2UpOiBOZXcgZnVuY3Rpb24uCgkocHJpbnRfY19kZWNsKTogVXNlIGl0LiAgQWRkZWQgYG5hbWVfb3ZlcnJpZGUnIGFyZ3VtZW50LgoJKHByaW50X21ldGhvZF9pbmZvKTogVXNlIG5hbWVfb3ZlcnJpZGUgYXJndW1lbnQgdG8gcHJpbnRfY19kZWNsLgoJKHNlZW5fZmllbGRzKTogUmVtb3ZlZC4KCShwcmludF9maWVsZF9pbmZvKTogRG9uJ3QgdXBkYXRlIHNlZW5fZmllbGRzLgoJKHN0cnVjdCBtZXRob2RfbmFtZSk6IE5ldyBzdHJ1Y3R1cmUuCgkobWV0aG9kX25hbWVfbGlzdCk6IE5ldyBnbG9iYWwuCgkocHJpbnRfbWV0aG9kX2luZm8pOiBBZGQgbmV3IG1ldGhvZCB0byBsaXN0IG9mIG1ldGhvZHMuCgkobmFtZV9pc19tZXRob2RfcCk6IE5ldyBmdW5jdGlvbi4KCShwcmludF9maWVsZF9pbmZvKTogSWYgZmllbGQgbmFtZSBoYXMgc2FtZSBuYW1lIGFzIG1ldGhvZCwgdGhlbgoJY2hhbmdlIGZpZWxkIG5hbWUuCgkocHJvY2Vzc19maWxlKTogUGFyc2UgbWV0aG9kcyBiZWZvcmUgZmllbGRzLgoJKGZpZWxkX3Bhc3MpOiBOZXcgZ2xvYmFsLgoJKEhBTkRMRV9FTkRfRklFTEQpOiBUYWtlIGZpZWxkX3Bhc3MgaW50byBhY2NvdW50LgoKMTk5OC0xMC0wNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGtleXdvcmQuaCk6IEFkZCAtTCBLUi1DIC1GICcsIDAnIGZsYWdzIHRvIGdwZXJmLgoJKGtleXdvcmQuaCk6IFJlZ2VuZXJhdGUgdXNpbmcgZ3BlcmYgMi43LjEgKDE5OTgxMDA2IGVnY3MpLgoKMTk5OC0xMC0wMyAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBqdnNwZWMuYzogRml4IGJ1ZyBpbiBqdmdlbm1haW5fc3BlYyBwYXRjaC4KCjE5OTgtMTAtMDIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGxhbmcubzopOiBJbnN0YWxsIGRlcGVuZGVuY3kgb24gamF2YS10cmVlLmRlZi4KCSogZGVjbC5jIChzb2Z0X2V4Y2VwdGlvbmluZm9fY2FsbF9ub2RlKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEZpeGVkIGluZGVudGF0aW9uLiBzb2Z0X2JhZGFycmF5aW5kZXhfbm9kZQoJdGFrZXMgZXh0cmEgaW50ZWdlciBhcmd1bWVudC4gc29mdF9leGNlcHRpb25pbmZvX2NhbGxfbm9kZQoJaW5pdGlhbGl6ZWQuCgkqIGV4Y2VwdC5jIChqYXZhX3NldF9leGNlcHRpb25fbGFuZ19jb2RlKTogTmV3IGZ1bmN0aW9uCgkobWV0aG9kX2luaXRfZXhjZXB0aW9ucyk6IENhbGxlZCBoZXJlLgoJKHByZXBhcmVfZWhfdGFibGVfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfZW5kX2phdmFfaGFuZGxlcik6IENhbGxlZCBoZXJlLgoJKiBleHByLmMgKGJ1aWxkX2phdmFfdGhyb3dfb3V0X29mX2JvdW5kc19leGNlcHRpb24pOiBOb3cgZmVhdHVyZXMKCW9uZSBhcmd1bWVudC4gTW9kaWZpZWQgZ2VuZXJhdGlvbiBvZiBjYWxsIHRvCglzb2Z0X2JhZGFycmF5aW5kZXhfbm9kZSB0byB1c2UgbmV3IGFyZ3VtZW50LgoJKGJ1aWxkX2phdmFfYXJyYXlhY2Nlc3MpOiBQYXNzIGZhdWx0eSBpbmRleCB2YWx1ZSB0bwoJYnVpbGRfamF2YV90aHJvd19vdXRfb2ZfYm91bmRzX2V4Y2VwdGlvbi4KCShnZW5lcmF0ZV9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IE5ldyBsb2NhbCB2YXJpYWJsZXMgbm9kZSwgY3VycmVudCwKCWhhc19maW5hbGx5X3AuIEV4cGFuZCBUUllfRVhQUiBub2RlLgoJKHByb2Nlc3NfanZtX2luc3RydWN0aW9uKTogUmVwbGFjZSB0b3Agb2YgdGhlIHN0YWNrIHdpdGggdGhyb3duCglvYmplY3QgcmVmZXJlbmNlIHdoZW4gZW50ZXJpbmcgZXhjZXB0aW9uIGhhbmRsZXIuCgkqIGphdmEtdHJlZS5kZWYgKFRSWV9FWFBSLCBDQVRDSF9FWFBSLCBGSU5BTExZX0VYUFIpOiBOZXcgSmF2YQoJc3BlY2lmaWMgdHJlZSBjb2Rlcy4KCSogamF2YS10cmVlLmggKHNvZnRfZXhjZXB0aW9uaW5mb19jYWxsX25vZGUpOiBEZWNsYXJhdGlvbiBvZiBuZXcKCWdsb2JhbC4KCShERUNMX1NQRUNJRklDX0NPVU5UKTogTmV3IG1hY3JvLgoJKHByZXBhcmVfZWhfdGFibGVfdHlwZSwgamF2YV9zZXRfZXhjZXB0aW9uX2xhbmdfY29kZSwKCWdlbmVyYXRlX25hbWUpOiBOZXcgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoJKG1hdGNoX2phdmFfbWV0aG9kKTogRGVjbGFyYXRpb24gZGVsZXRlZC4KCShGSU5BTExZX0VYUFJfTEFCRUwsIEZJTkFMTFlfRVhQUl9CTE9DSywgQ0FUQ0hfRVhQUl9HRVRfRVhQUik6IE5ldwoJbWFjcm9zLgoJKiBsZXguYyAoVFJZX1RLLCBDQVRDSF9USyk6IEdlbmVyYXRlIGxvY2F0aW9uIGluZm9ybWF0aW9uLgoJKiBwYXJzZS5oIChyZWRlZmluaXRpb25fZXJyb3IsIHJlZmluZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCwKCWNhbl9jYXN0X3RvX3ApOiBGdW5jdGlvbiBkZWNsYXJhdGlvbiByZW1vdmVkLgoJKGNsYXNzaXRmX3JlZGVmaW5pdGlvbl9lcnJvciwgdmFyaWFibGVfcmVkZWZpbml0aW9uX2Vycm9yLAoJcGFyc2VfamRrMV8xX2Vycm9yLCBmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QsCglmaW5kX21vc3Rfc3BlY2lmaWNfbWV0aG9kc19saXN0LCBhcmd1bWVudF90eXBlc19jb252ZXJ0aWJsZSwKCWVudGVyX2FfYmxvY2ssIHZhbGlkX2J1aWx0aW5fYXNzaWduY29udl9pZGVudGl0eV93aWRlbmluZ19wLAoJdmFsaWRfY2FzdF90b19wLCB2YWxpZF9tZXRob2RfaW52b2NhdGlvbl9jb252ZXJzaW9uX3AsCgl0cnlfcmVmZXJlbmNlX2Fzc2lnbmNvbnYsIGFkZF9zdG10X3RvX2NvbXBvdW5kLAoJYnVpbGRfanVtcF90b19maW5hbGx5LCBidWlsZF90cmVlX2xpc3QsIHBhdGNoX3RyeV9zdGF0ZW1lbnQsCglqYXZhX2dldF9jYXRjaF9ibG9jayk6IE5ldyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgkqIHBhcnNlLnkgKHN0cmluZ19idWZmZXJfdHlwZSk6IEdsb2JhbCB2YXJpYWJsZSBkZWxldGVkLgoJKGdyb3VwX29mX2xhYmVscywgY2F0Y2hlcywgY2F0Y2hfY2xhdXNlLCBjYXRjaF9jbGF1c2VfcGFyYW1ldGVyLAoJZmluYWxseSk6IFJ1bGVzIHRhZ2dlZCA8bm9kZT4uCgkoVFJZX1RLLCBDQVRDSF9USyk6IFRva2VuIHRhZ2dlZCA8b3BlcmF0b3I+LgoJKGNsYXNzX2JvZHlfZGVjbGFyYXRpb246LCBjbGFzc19tZW1iZXJfZGVjbGFyYXRpb246LAoJZm9ybWFsX3BhcmFtZXRlcjosIGV4cGxpY2l0X2NvbnN0cnVjdG9yX2ludm9jYXRpb246LAoJaW50ZXJmYWNlX21lbWJlcl9kZWNsYXJhdGlvbjosIGNvbnN0YW50X2RlY2xhcmF0aW9uOiwKCXByaW1hcnlfbm9fbmV3X2FycmF5OiwgY2xhc3NfaW5zdGFuY2VfY3JlYXRpb25fZXhwcmVzc2lvbjosCglhcnJheV9jcmVhdGlvbl9leHByZXNzaW9uOik6IElzc3VlIGVycm9yIG9uIHVuc3Vwb3J0ZWQgSkRLMS4xCglmZWF0dXJlcy4KCSh0cnlfc3RhdGVtZW50OiwgY2F0Y2hlczosIGZpbmFsbHk6KTogRGVmaW5lIGFjdGlvbnMuCgkoY2F0Y2hfY2xhdXNlX3BhcmFtZXRlcik6IE5ldyBydWxlLgoJKGNhdGNoX2NsYXVzZTopOiBVc2UgbmV3IHJ1bGUgY2F0Y2hfY2xhdXNlX3BhcmFtZXRlci4KCShwYXJzZV9qZGsxXzFfZXJyb3IpOiBOZXcgZnVuY3Rpb24uCgkocmVkZWZpbml0aW9uX2Vycm9yKTogUmVuYW1lZCBjbGFzc2l0Zl9yZWRlZmluaXRpb25fZXJyb3IuCgkodmFyaWFibGVfcmVkZWZpbml0aW9uX2Vycm9yKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX2NsYXNzX2ludGVyZmFjZV9jcmVhdGlvbik6IENhbGwKCWNsYXNzaXRmX3JlZGVmaW5pdGlvbl9lcnJvci4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBBZGRlZCBlcnJvciBtZXNzYWdlIG9uIEpERVBfVFlQRTogY2FzZS4KCShjb21wbGV0ZV9jbGFzc19yZXBvcnRfZXJyb3JzKTogRml4ZWQgaW5kZW50YXRpb24uCgkoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBDYWxsIHZhcmlhYmxlX3JlZGVmaW5pdGlvbl9lcnJvci4KCShzb3VyY2VfZW5kX2phdmFfbWV0aG9kKTogQ2FsbCBqYXZhX3NldF9leGNlcHRpb25fbGFuZ19jb2RlIGFuZAoJZW1pdF9oYW5kbGVycyB3aGVyZSBhcHByb3ByaWF0ZS4KCShqYXZhX21ldGhvZF9hZGRfc3RtdCk6IENhbGwgYWRkX3N0bXRfdG9fYmxvY2suCgkoYWRkX3N0bXRfdG9fYmxvY2spOiBOZXcgZnVuY3Rpb24uCgkobG9va3VwX21ldGhvZF9pbnZva2UpOiBGaXhlZCBvdXRzaWRlIGNvbW1lbnQuIG5ldyBsb2NhbCB2YXJpYWJsZQoJY2FuZGljYXRlcy4gIENhbGwgZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0IGFuZAoJZmluZF9tb3N0X3NwZWNpZmljX21ldGhvZHNfbGlzdCB3aGVuIHNlYXJjaGluZyBmb3IgYQoJbWV0aG9kLiBNb2RpZmllZCBlcnJvciByZXBvcnQgdG8gbGlzdCBwb3NzaWJsZSBjYW5kaWRhdGVzIHdoZW4KCWFwcGxpY2FibGUuCgkoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0LAoJZmluZF9tb3N0X3NwZWNpZmljX21ldGhvZHNfbGlzdCwgYXJndW1lbnRfdHlwZXNfY29udmVydGlibGUpOiBOZXcKCWZ1bmN0aW9uLgoJKHJlZmluZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6IEZ1bmN0aW9uIGRlbGV0ZWQuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogSGFuZGxlIFRSWV9FWFBSLiBBUlJBWV9SRUYgaGFuZGxpbmc6IHNhdmUKCWV4cHIgKGlmIGFwcGxpY2FibGUpIGJlZm9yZSBjYWxsaW5nIHBhdGNoX2FycmF5X3JlZi4KCShidWlsZF9leHByX2Jsb2NrKTogRml4ZWQgQkxPQ0tfRVhQUl9CT0RZIGFzc2lnbm1lbnQuCgkoZW50ZXJfYmxvY2spOiBGaXhlZCBjb21tZW50LgoJKGVudGVyX2FfYmxvY2spOiBOZXcgZnVuY3Rpb24uCgkocGF0Y2hfYXNzaWdubWVudCk6IFJlb3JnYW5pemVkLiBDYWxsIHRyeV9yZWZlcmVuY2VfYXNzaWduY29udiBmb3IKCXJlZmVyZW5jZXMuIENhbGwgdmFsaWRfY2FzdF90b19wIGluc3RlYWQgb2YgY2FuX2Nhc3RfdG9fcC4KCSh0cnlfcmVmZXJlbmNlX2Fzc2lnbmNvbnYsCgl2YWxpZF9idWlsdGluX2Fzc2lnbmNvbnZfaWRlbnRpdHlfd2lkZW5pbmdfcCk6IE5ldyBmdW5jdGlvbnMuCgkodmFsaWRfcmVmX2Fzc2lnbmNvbnZfY2FzdF9wKTogRml4ZWQgaW52ZXJ0ZWQgdGVzdCBvbiBDTEFTU19GSU5BTC4KCSh2YWxpZF9jYXN0X3RvX3AsIHZhbGlkX21ldGhvZF9pbnZvY2F0aW9uX2NvbnZlcnNpb25fcCk6IE5ldwoJZnVuY3Rpb25zLgoJKGJ1aWxkX3N0cmluZ19jb25jYXRlbmF0aW9uKTogRG9uJ3QgcmVzb2x2ZSBTdHJpbmdCdWZmZXIuCgkocGF0Y2hfY2FzdCk6IEZpeGVkIGludmVydGVkIGFyZ3VtZW50cy4KCShwYXRjaF9hcnJheV9yZWYpOiBDb2RlIHRvIHNhdmUgYXJyYXkgZXhwciBkZWxldGVkLiBDYWxsCgl2YWxpZF9jYXN0X3RvX3AgaW5zdGVhZCBvZiBjYW5fY2FzdF90b19wLgoJKGdlbmVyYXRlX2xhYmVsZWRfYmxvY2spOiBDYWxsIGdlbmVyYXRlX25hbWUuCgkoYnVpbGRfanVtcF90b19maW5hbGx5LCBidWlsZF90cnlfc3RhdGVtZW50LCBqYXZhX2dldF9jYXRjaF9ibG9jaywKCXBhdGNoX3RyeV9zdGF0ZW1lbnQpOiBOZXcgZnVuY3Rpb25zLgoJKiB0eXBlY2suYyAobWF0Y2hfamF2YV9tZXRob2QpOiBGdW5jdGlvbiBkZWxldGVkLgoKMTk5OC0xMC0wMiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBqdnNwZWMuYzoganZnZW5tYWluX3NwZWMgdXNlcyBkaWZmZXJlbnQgdGVtcG9yYXJ5IGZpbGUgbmFtZXMuCgoxOTk4LTEwLTAyICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIGp2c3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IEZhaWwgaWYgdXNlciBzcGVjaWZpZXMKCS0tbWFpbj0gd2hlbiBub3QgbGlua2luZy4KCjE5OTgtMDktMjggIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6IFB1c2ggdmFsdWUgZm9yIGB0aHJlYWQnIGZpZWxkLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQWRkZWQgYHRocmVhZCcgZmllbGQgdG8gY2xhc3MuCgoJKiBjbGFzcy5jIChhZGRfZmllbGQpOiBBbHdheXMgbWFrZSBzdGF0aWMgZmllbGRzIGV4dGVybmFsbHkKCXZpc2libGUuCgoxOTk4LTA5LTI2ICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9hdGhyb3csCglidWlsZF9qYXZhX3Rocm93X291dF9vZl9ib3VuZHNfZXhjZXB0aW9uLCBleHBhbmRfaW52b2tlLAoJYnVpbGRfbmV3YXJyYXksIGV4cGFuZF9qYXZhX211bHRpYW5ld2FycmF5LCBidWlsZF9qYXZhX21vbml0b3IpOgoJVXBkYXRlIGNvbW1lbnRzIHRvIHJlZmxlY3QgX0p2XyogZnVuY3Rpb24gbmFtZXMuCgoxOTk4LTA5LTI1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY29tcGxldGVfc3RhcnRfamF2YV9tZXRob2QpOiAgREVDTF9SRVNVTFQgaXMgYWx3YXlzIHByb21vdGVkLgoJKiBkZWNsLmMgKHN0YXJ0X2phdmFfbWV0aG9kKTogIEhhbmRsZSBQUk9NT1RFX1BST1RPVFlQRVMgdGFyZ2V0IG1hY3JvLgoJKiBwYXJzZS55IChleHBhbmRfc3RhcnRfamF2YV9tZXRob2QpOiAgTGlrZXdpc2UuCgoxOTk4LTA5LTI0ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAocG9wX2FyZ3VtZW50cyk6ICBIYW5kbGUgUFJPTU9URV9QUk9UT1RZUEVTIHRhcmdldCBtYWNyby4KCgkqIGNsYXNzLmMgKHB1c2hfY2xhc3MpOiAgSURFTlRJRklFUl9TSUdOQVRVUkVfVFlQRSBpcyBub3cgUE9JTlRFUl9UWVBFLgoJKGFkZF9maWVsZCk6ICBObyBsb25nZXIgbmVlZCB0byBjb252ZXJ0IGZyb20gUkVDT1JEX1RZUEUgdG8gcG9pbnRlciwKCSogZXhwci5jOiAgUmVtb3ZlIG5vLWxvbmdlci1uZWVkZWQgY2FsbHMgdG8gcHJvbW90ZV90eXBlLgoJKiBkZWNsLmMgKGdpdmVfbmFtZV90b19sb2NhbHMpOiAgTGlla3dpc2UuCgkqIGpjZi1wYXJzZS5jIChnZXRfY2xhc3NfY29uc3RhbnQpOiAgQ29tcGVuc2F0ZSBmb3IgbmV3IHNpZ25hdHVyZXMuCgkqIHBhcnNlLnk6ICBBZGQvcmVtb3ZlIHByb21vdGVfdHlwZSBjYWxscyBhcyBhcHByb3ByaWF0ZS4KCSogdHlwZWNrLmMgKHBhcnNlX3NpZ25hdHVyZV90eXBlKTogIFJldHVybnMgUE9JTlRFUl9UWVBFIGZvciBvYmplY3RzLgoJKHBhcnNlX3NpZ25hdHVyZV9zdHJpbmcpOiAgTGlrZXdpc2UuCgkoYnVpbGRfamF2YV9hcnJheV90eXBlKTogIEZpeCBmb3Igbm93IHNpZ25hdHVyZSBjb252ZW5pb25zLgoKCSogbGV4LmMgKGphdmFfbGV4KTogIEZpeCAoZnJvbSBBbGV4KSBmb3IgSkMxX0xJVEUgcHJvYmxlbS4KCjE5OTgtMDktMjMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGluaXRfY2xhc3NfcHJvY2Vzc2luZyk6IGxpYmphdmEgZnVuY3Rpb24gcmVuYW1lZCB0bwoJX0p2X1JlZ2lzdGVyQ2xhc3MuCgoxOTk4LTA5LTIyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogTmV3IGNhc2UgZm9yIFNXSVRDSF9FWFBSLgoJKiBqYXZhLXRyZWUuZGVmOiBGaXhlZCBERUZUUkVFQ09ERSB0aGlyZCBhcmd1bWVudC4KCShVTkFSWV9QTFVTX0VYUFIsIE5FV19BUlJBWV9FWFBSLCBORVdfQ0xBU1NfRVhQUiwgVEhJU19FWFBSLAoJQ0FTRV9FWFBSLCBERUZBVUxUX0VYUFIpOiBOZXcgdHJlZSBjb2RlcyBmb3IgSmF2YS4KCSogamF2YS10cmVlLmg6IChJU19DUkFGVEVEX1NUUklOR19CVUZGRVJfUCk6IE5ldyBtYWNyby4KCShKQVZBX1VOQVJZX1BMVVNfRVhQUiwgSkFWQV9ORVdfQVJSQVlfRVhQUiwgSkFWQV9ORVdfQ0xBU1NfRVhQUiwKCUpBVkFfVEhJU19FWFBSKTogTm93IHJlcGxhY2VkIGJ5IHRyZWUgY29kZSBkZWZpbml0aW9ucy4KCShDQUxMX0NPTlNUUlVDVE9SX1ApOiBOb3cgdXNlcyBORVdfQ0xBU1NfRVhQUi4KCSogbGFuZy5jIChqYXZhX3RyZWVfY29kZV90eXBlLCBqYXZhX3RyZWVfY29kZV9sZW5ndGgsCglqYXZhX3RyZWVfY29kZV9uYW1lKTogTmV3IGFycmF5cy4KCShsYW5nX2luaXQpOiBBcHBlbmQgSmF2YSB0cmVlIG5vZGUgZGVmaW5pdGlvbnMgdG8gR2NjIG9uZXMuCgkqIGxleC5jIChleHByZXNzaW9uX29ic3RhY2spOiBEZWNsYXJlZCBhcyBleHRlcm4gd2hlbiBKQzFfTElURQoJZGVmaW5lZC4KCShqYXZhX2luaXRfbGV4KTogSW5pdGlhbGl6ZSB3ZmxfYXBwZW5kLCB3Zmxfc3RyaW5nX2J1ZmZlciwKCXdmbF90b19zdHJpbmcuCgkoamF2YV9sZXgpOiBBbGxvdyBkZWNsYXJhdGlvbiBvZiBlbXB0eSBzdHJpbmcgY29uc3RhbnRzLiBSZXRhaW4KCWxvY2F0aW9uIGluZm9ybWF0aW9uIG9uIENBU0VfVEsgYW5kIERFRkFVTFRfVEsuCgkqIHBhcnNlLmggKEpGTE9BVF9UWVBFX1AsIEpJTlRFR1JBTF9UWVBFX1AsIEpOVU1FUklDX1RZUEVfUCwKCUpQUklNSVRJVkVfVFlQRV9QLCBKU1RSSU5HX1RZUEVfUCwgSlNUUklOR19QLCBKUkVGRVJFTkNFX1RZUEVfUCk6CglNb2RpZmllZCB0byBiZSBtb3JlIHJvYnVzdC4KCShCVUlMRF9BUFBFTkQsIEJVSUxEX1NUUklOR19CVUZGRVIpOiBOZXcgbWFjcm9zLgoJKGJ1aWxkX25ld19pbnZvY2F0aW9uLCB0cnlfYnVpbHRpbl9hc3NpZ25jb252LAoJcGF0Y2hfc3dpdGNoX3N0YXRlbWVudCwgc3RyaW5nX2NvbnN0YW50X2NvbmNhdGVuYXRpb24sCglidWlsZF9zdHJpbmdfY29uY2F0ZW5hdGlvbiwgcGF0Y2hfc3RyaW5nX2NzdCwgcGF0Y2hfc3RyaW5nLAoJamF2YV9leHBhbmRfc3dpdGNoKTogTmV3IGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KCSogcGFyc2UueTogUnVsZXMgcmVsYXRlZCB0byBzd2l0Y2ggYW5kIEVIIHRhZ2dlZCA8bm9kZT4uCgkobGFiZWxfaWQpOiBTZXQgdG8gTlVMTF9UUkVFCgkod2ZsX3N0cmluZ19idWZmZXIsIHdmbF9hcHBlbmQsIHdmbF90b19zdHJpbmcpOiBOZXcgc3RhdGljIGdsb2JhbAoJdHJlZSBub2Rlcy4KCSh0aGlzX29yX3N1cGVyOik6IEZpeGVkIGluZGVudGF0aW9uLgoJKHN0YXRlbWVudDosIHN0YXRlbWVudF9uc2k6LCBzdGF0ZW1lbnRfd2l0aG91dF90cmFpbGluZ19zdWJzdGF0ZW1lbnQ6LAoJc3RhdGVtZW50X2V4cHJlc3Npb246KTogUmVtb3ZlZCBjYWxsIHRvIFJVTEUgb24gYWxsIHN1Yi1ydWxlcy4KCShzd2l0Y2hfZXhwcmVzc2lvbjosIHN3aXRjaF9sYWJlbHM6KTogTmV3IHJ1bGVzLgoJKHN3aXRjaF9zdGF0ZW1lbnQ6LCBzd2l0Y2hfYmxvY2s6LCBzd2l0Y2hfYmxvY2tfc3RhdGVtZW50X2dyb3VwczosCglzd2l0Y2hfYmxvY2tfc3RhdGVtZW50X2dyb3VwOiwgc3dpdGNoX2xhYmVsczosIHN3aXRjaF9sYWJlbDopOgoJRGVmaW5lZCBhY3Rpb25zLgoJKHRocm93X3N0YXRlbWVudDosIHN5bmNocm9uaXplZF9zdGF0ZW1lbnQ6LCB0cnlfc3RhdGVtZW50Oik6CglEZWZpbmVkIHRlbXBvcmFyeSBhY3Rpb25zLgoJKGNsYXNzX2luc3RhbmNlX2NyZWF0aW9uX2V4cHJlc3Npb246KTogQ2FsbAoJYnVpbGRfbmV3X2ludm9jYXRpb24uIEZpeGVkIGluZGVudGF0aW9uLgoJKGZpZWxkX2FjY2Vzcyk6IEZpeGVkIGluZGVudGF0aW9uLgoJKG1ldGhvZF9pbnZvY2F0aW9uKTogTGlrZXdpc2UuCgkobWFrZV9xdWFsaWZpZWRfcHJpbWFyeSk6IFVzZSBUSElTX0VYUFIuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogVXNlIE5FV19DTEFTU19FWFBSLiBXaGVuCglyZXNvbHZpbmcgZnJvbSBTVVBFUiwgc2V0ICp0eXBlX2ZvdW5kLgoJKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBVc2UgTkVXX0NMQVNTX0VYUFIuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogUmVtb3ZlZCB1bnVzZWQgbG9jYWwgdmFyaWFibGUgYGxvY2F0aW9uJy4gQ2FzZQoJZm9yIFNXSVRDSF9FWFBSLCBzaGFyaW5nIGNvZGUgd2l0aCBMT09QX0VYUFIuIFVzZSBORVdfQVJSQVlfRVhQUiwKCU5FV19DTEFTU19FWFBSLCBVTkFSWV9QTFVTX0VYUFIgYW5kIFRISVNfRVhQUi4gTmV3IHN0cmluZyBoYW5kbGluZwoJb24gTU9ESUZZX0VYUFI6IGFuZCBhbGwgYmluYXJ5IG9wZXJhdG9yIHRyZWUgY29kZSBjYXNlcy4gUmVtb3ZlZAoJU1RSSU5HX0NTVDogY2FzZS4gZGVmYXVsdDogY2hlY2tzIGZvciBwYXRjaGFibGUgc3RyaW5ncy4KCShjb21wbGV0ZV9mdW5jdGlvbl9hcmd1bWVudHMpOiBUcmFuc2Zvcm0gc3RyaW5nIGNvbnN0YW50IG9yCgljcmFmdGVkIFN0cmluZ0J1ZmZlciBpZiBuZWNlc3NhcnkuCgkoYnVpbGRfbWV0aG9kX2ludm9jYXRpb24pOiBGaXhlZCBjb21tZW50cy4KCShidWlsZF9uZXdfaW52b2NhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShwYXRjaF9hc3NpZ25tZW50KTogQ2FsbCB0cnlfYnVpbHRpbl9hc3NpZ25jb252IHRvIGZpZ3VyZSBhIHZhbGlkCglhc3NpZ25tZW50IGNvbnZlcnNpb24gYmV0d2VlbiBidWlsdGluIHR5cGVzLgoJKHRyeV9idWlsdGluX2Fzc2lnbmNvbnYpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfYmlub3ApOiBVc2UgVVJTSElGVF9FWFBSIGRpcmVjdGx5IHRvIGNhbGwgYnVpbGQuCgkob3BlcmF0b3Jfc3RyaW5nKTogVXNlIFVOQVJZX1BMVVNfRVhQUi4KCShwYXRjaF9iaW5vcCk6IFVzZSBVTkFSWV9QTFVTX0VYUFIuIEhhbmRsZSBzdHJpbmcgY29uY2F0ZW5hdGlvbgoJb3BlcmF0b3IuCgkoZG9fbWVyZ2Vfc3RyaW5nX2NzdGUsIG1lcmdlX3N0cmluZ19jc3RlLAoJc3RyaW5nX2NvbnN0YW50X2NvbmNhdGVuYXRpb24sIGJ1aWxkX3N0cmluZ19jb25jYXRlbmF0aW9uLAoJcGF0Y2hfc3RyaW5nLCBwYXRjaF9zdHJpbmdfY3N0KTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX3VuYXJ5X29wKTogVXNlIFVOQVJZX1BMVVNfRVhQUiBhbmQgQ09OVkVSVF9FWFBSLgoJKHBhdGNoX3VuYXJ5b3ApOiBMaWtld2lzZS4gTmV3IHRlc3Qgb2YgdmFsaWQgKysvLS0gb3BlcmFuZHMuCgkoYnVpbGRfbmV3YXJyYXlfbm9kZSk6IFVzZSBORVdfQVJSQVlfRVhQUi4KCShidWlsZF90aGlzKTogVXNlIFRISVNfRVhQUi4KCShidWlsZF9yZXR1cm4pOiBFbmFibGUgZGVidWcgaW5mb3JtYXRpb24gb24gcmV0dXJuIHN0YXRlbWVudC4KCShidWlsZF9pZl9lbHNlX3N0YXRlbWVudCk6IExpa2V3aXNlLgoJKGNvbXBsZXRlX2xhYmVsZWRfc3RhdGVtZW50KTogRml4ZWQgcmVsYXRlZCBjb21tZW50LgoJKGJ1aWxkX2xvb3BfYm9keSk6IEZpeGVkIGNvbW1lbnQuCgkoYnVpbGRfYmNfc3RhdGVtZW50KTogRW5hYmxlIGRlYnVnIGluZm9ybWF0aW9uIG9uIGJyZWFrL2NvbnRpbnVlCglzdGF0ZW1lbnRzLgoJKHBhdGNoX2JjX3N0YXRlbWVudCk6IEZpeGVkIHR5cG9zLiBIYW5kbGUgU1dJVENIIHN0YXRlbWVudAoJY29udGV4dC4KCShwYXRjaF9zd2l0Y2hfc3RhdGVtZW50LCBjYXNlX2lkZW50aXR5LCBqYXZhX2V4cGFuZF9zd2l0Y2gpOiBOZXcKCWZ1bmN0aW9ucy4KCjE5OTgtMDktMjEgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogYnVmZmVyLmggKEJVRkZFUl9JTklUKTogIE5ldyBtYWNyby4KCSogamNmLXdyaXRlLmMgKHN0cnVjdCBqY2ZfcGFydGlhbCk6ICBOZXcgdHlwZS4gIFB1dCBnbG9iYWwgc3R1ZmYgaGVyZS4KCVBhc3MgKHN0cnVjdCBqY2ZfcGFydGlhbCAqc3RhdGUpIHRvIG1vc3QgZnVuY3Rpb25zLgoJKGpjZl9ibG9jaywgamNmX3JlbG9jYXRpb24pOiAgTmV3IHR5cGVzLgoJU3VwcG9ydCBsYWJlbHMsIGJyYW5jaGVzLCBjb25kaXRpb25hbHMsIGxvb3BzLgoKMTk5OC0wOS0yMSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZGVjbC5jIChJTlRfVFlQRV9TSVpFKTogRGVmaW5lIGFzIEJJVFNfUEVSX1dPUkQgaWYgbm90IGRlZmluZWQuCgoxOTk4LTA5LTIxICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoaW50ZWdlcl90eXBlX25vZGUpOiAgTWFrZSBpdCBoYXZlIElOVF9UWVBFX1NJWkUuCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6ICBVc2UgaW50X3R5cGVfbm90ICgzMiBiaXRzKSwKCW5vdCBpbnRlZ2VyX3R5cGVfbm9kZSAoSU5UX1RZUEVfU0laIGJpdHMpLgoKCSogcGFyc2UueSAocGF0Y2hfaWZfZWxzZV9zdGF0ZW1lbnQpOiAgQWNjZXB0IHByb21vdGVkX2Jvb2xlYW5fdHlwZV9ub2RlLgoKCSogamNmLXJlYWRlci5jIChnZXRfYXR0cmlidXRlKTogIE5ldyBIQU5ETEVfRVhDRVBUSU9OX1RBQkxFIGhvb2suCgkqIGpjZi1kdW1wLmMgKHByaW50X2V4Y2VwdGlvbl90YWJsZSk6ICBOZXcgZnVuY3Rpb24uCgkoZGlzYXNzZW1ibGVfbWV0aG9kKTogIEJldHRlciBoYW5kbGluZyBvZiB3aWRlIGluc3RydWN0aW9ucy4KCU1ha2UgbW9yZSByb2J1c3QgZm9yIGJhZCBpbnB1dC4KCjE5OTgtMDktMzAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGpjZi13cml0ZS5jIChPUDIsIE9QNCk6IFVzZSAiX2kiLCBub3QgIl9JIiB0byBhdm9pZCBwcm9ibGVtcyBvbgoJRnJlZUJTRC4KCjE5OTgtMDktMTcgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChqY2YtZHVtcCwganZnZW5tYWluKTogTGluayBpbiBtZW1tb3ZlLm8gdG9vLgoKMTk5OC0wOS0xNyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKCQoUEFSU0VfSCkpOiBSZW1vdmVkIHRhcmdldC4KCjE5OTgtMDktMTcgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChKQVZBX09CSlMpOiBBZGQgbWVtbW92ZS5vCgkobWVtbW92ZS5vKTogTmV3IHRhcmdldCAmIHJ1bGVzLgoKMTk5OC0wOS0xNSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZXhwci5jIChleHBhbmRfaW52b2tlKTogRG9uJ3QgZ2VuZXJhdGUgYSBjYWxsIHRvIHRoZSBjbGFzcyBpbml0Cgljb2RlLgoKMTk5OC0wOS0xNCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46IEFkZCBtYW55IG1pc3NpbmcgZGVwZW5kZW5jaWVzLgoJKiBidWZmZXIuYywgY2xhc3MuYywgY29uc3RhbnRzLmMsIGRlY2wuYzogVXNlIHN5c3RlbS5oIGFuZCB0b3BsZXYuaAoJYXMgYXBwcm9wcmlhdGUuCgkqIGV4Y2VwdC5jLCBleHByLmMsIGpjZi1pby5jIGpjZi1wYXJzZS5jLCBqY2Ytd3JpdGUuYzogTGlrZXdpc2UuCgkqIGp2Z2VubWFpbi5jIGxhbmcuYyBtYW5nbGUuYyB0eXBlY2suYyB2ZXJpZnkuYzogTGlrZXdpc2UuCgoxOTk4LTA5LTExICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY29tcGxldGVfc3RhcnRfamF2YV9tZXRob2QpOiAgSWYgbWV0aG9kIGlzIHN0YXRpYyAoYW5kCglub3QgcHJpdmF0ZSkgY2FsbCBfSnZfSW5pdENsYXNzLgoJKiBleHByLmMgKGV4cGFuZF9pbnZva2UpOiAgRG9uJ3QgY2FsbCBidWlsZF9jbGFzc19pbml0LgoKCSoganZzcGVjLmMgKGp2Z2VubWFpbl9zcGVjKTogIEZpeCBzcGVjIGZvciBnZW5lcmF0ZWQgLm8gZmlsZS4KCjE5OTgtMDktMTAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1ha2UtbGFuZy5pbiAoR0NKKTogRGVmaW5lIGJlZm9yZSB1c2luZy4KCjE5OTgtMDktMDkgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGdqYXZhaC5jIChqYXZhX25vX2FyZ3VtZW50KTogUmVuYW1lZCBmcm9tIG5vX2FyZ3VtZW50IHRvIGF2b2lkCglsb3NpbmcgZHVlIHRvIG5hbWVzcGFjZSBwb2xsdXRpb24gaW4gR05VIGdldG9wdC5oCgoxOTk4LTA5LTA5ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEuYWxsLmJ1aWxkKTogRG9uJ3QgbWVudGlvbiBqdmdlbm1haW4gb3IgZ2NqaC4KCShqYXZhLmFsbC5jcm9zcyk6IExpa2V3aXNlLgoJKGphdmEucmVzdC5lbmNhcCk6IExpa2V3aXNlLgoKMTk5OC0wOS0wOCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZ2phdmFoLmMgKHByaW50X2NsYXNzX2RlY2xzKTogRml4IHRoaW5rbyBpbiBhcmdsaXN0CgkqIGpjdi1pby5jIChmaW5kX2NsYXNzZmlsZSk6IFNpbWlsYXJseS4KCjE5OTgtMDktMDcgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChJTkNMVURFUyk6IFVwZGF0ZSBmb3IgcmVjZW50IHRvcGxldmVsIGdjYyBjaGFuZ2VzLgoKMTk5OC0wOS0wNSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhLm1haW50YWluZXItY2xlYW4pOiBEb24ndCByZW1vdmUgcGFyc2UuaC4KCShqYXZhLm1vc3RseWNsZWFuKTogUmVtb3ZlIHBhcnNlLmMgYW5kIHBhcnNlLXNjYW4uYywgbm90IHBhcnNlLmguCgkqIE1ha2VmaWxlLmluIChQQVJTRV9DKTogTmV3IG1hY3JvLgoJKFBBUlNFX0gpOiBMaWtld2lzZS4KCShQQVJTRV9TQ0FOX0MpOiBMaWtld2lzZS4KCSgkKFBBUlNFX0MpKTogVGFyZ2V0IHJlbmFtZWQgZnJvbSBwYXJzZS5jLgoJKCQoUEFSU0VfU0NBTl9DKSk6IFRhcmdldCByZW5hbWVkIGZyb20gcGFyc2Utc2Nhbi5jLgoJKGNsZWFuKTogUmVtb3ZlIHBhcnNlLXNjYW4uYyBhcyB3ZWxsLgoJKHBhcnNlLm8pOiBEZXBlbmQgb24gJChQQVJTRV9DKS4KCjE5OTgtMDktMDUgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogUkVBRE1FLCBsaWNlbnNlLnRlcm1zOiBSZW1vdmVkLgoKCSogTWFrZS1sYW5nLmluLCBNYWtlZmlsZS5pbiwgY2xhc3MuYywgY29uZmlnLWxhbmcuaW4sIGNvbnN0YW50cy5jLAoJZGVjbC5jLCBleGNlcHQuYywgZXhwci5jLCBnamF2YWguYywgamF2YS1leGNlcHQuaCwgamF2YS10cmVlLmgsCglqYXZhb3AuZGVmLCBqYXZhb3AuaCwgamNmLWR1bXAuYywgamNmLWlvLmMsIGpjZi1wYXJzZS5jLAoJamNmLXJlYWRlci5jLCBqY2Ytd3JpdGUuYywgamNmLmgsIGp2Z2VubWFpbi5jLCBqdnNwZWMuYywKCWtleXdvcmQuZ3BlcmYsIGtleXdvcmQuaCwgbGFuZy1vcHRpb25zLmgsIGxhbmctc3BlY3MuaCwgbGFuZy5jLAoJbGV4LmMsIGxleC5oLCBtYW5nbGUuYywgcGFyc2Utc2Nhbi55LCBwYXJzZS5oLCBwYXJzZS55LCB0eXBlY2suYywKCXZlcmlmeS5jLCB6ZXh0cmFjdC5jLCB6aXBmaWxlLmg6IEZpeGVkIGNvcHlyaWdodCBhc3NpZ25tZW50LAoJYW5kIEphdmEgdHJhZGVtYXJrIGF0dHJpYnV0aW9uLgoKMTk5OC0wOS0wNCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW46IFVzZSBnY2poLCBub3QgZ2phdmFoLgoJKiBjb25maWctbGFuZy5pbiAoc3RhZ2VzdHVmZik6IFVzZSBnY2poLCBub3QgZ2phdmFoLgoJKiBNYWtlLWxhbmcuaW46IENoYW5nZWQgZ2phdmFoIHRvIGdjamggZXZlcnl3aGVyZS4KCjE5OTgtMDktMDMgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogZ2phdmFoLmM6ICBTdXBwb3J0IG5ldyAtcHJlcGVuZCAtYWRkIC1hcHBlbmQgZmxhZ3MuCgkocHJpbnRfbWV0aG9kX2luZm8pOiAgTWV0aG9kIGlzIG5vdCB2aXJ0dWFsIGlmIGNsYXNzIGlzIGZpbmFsLgoKMTk5OC0wOS0wMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqdi1zY2FuLmM6IEZpeGVkIGNvcHlyaWdodCBhc3NpZ25tZW50LgoJKiBrZXl3b3JkLmdwZXJmOiBMaWtld2lzZS4KCSoga2V5d29yZC5oOiBMaWtld2lzZS4KCSogbGV4LmM6IEZpeGVkIGNvcHlyaWdodCBhc3NpZ25tZW50LgoJKGphdmFfbGV4KTogUHVzaCB1bmljb2RlIGJhY2sgd2hlbiBwYXJzaW5nICc8Jy4KCSogbGV4Lmg6IEZpeGVkIGNvcHlyaWdodCBhc3NpZ25tZW50LgoJKiBwYXJzZS1zY2FuLnk6IExpa2V3aXNlLgoJKiBwYXJzZS5oOiBGaXhlZCBjb3B5cmlnaHQgYXNzaWdubWVudC4KCShidWlsZF9kZWJ1Z2FibGVfc3RtdCwgY29tcGxldGVfZm9yX2xvb3ApOiBOZXcgZnVuY3Rpb24gcHJvdG90eXBlcy4KCSogcGFyc2UueTogRml4ZWQgY29weXJpZ2h0IGFzc2lnbm1lbnQuCgkoZm9yX3N0YXRlbWVudDopOiBDYWxsIGNvbXBsZXRlX2Zvcl9sb29wLiBTZXQgRVhJVF9FWFBSIHRvIGJlCglzaXplX3plcm9fbm9kZSB3aGVuIGNvbXBsZXRpbmcgYSBsb29wIHdpdGggbm8gZXhpdCBjb25kaXRpb24uCgkoZm9yX3N0YXRlbWVudF9uc2k6KTogRGVmaW5lIGFjdGlvbi4KCShmb3JfaW5pdDosIGZvcl91cGRhdGU6KTogUmV0dXJuIHNpemVfemVyb19ub2RlIHdoZW4gZW1wdHkuCgkoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBDYWxsIGJ1aWxkX2RlYnVnYWJsZV9zdG10LgoJKGJ1aWxkX2RlYnVnYWJsZV9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX2xvb3BfYm9keSk6IEJ1aWxkIGRlYnVnYWJsZSBzdGF0ZW1lbnQgYXJvdW5kIGxvb3AKCWNvbmRpdGlvbiBwYXJ0LgoJKGNvbXBsZXRlX2xvb3BfYm9keSk6IFRha2UgaW50byBhY2NvdW50IHRoZSBkZWJ1Z2FibGUgc3RhdGVtZW50Cglhcm91bmQgdGhlIEVYSVRfRVhQUi4KCShjb21wbGV0ZV9sb29wX2JvZHkpOiBOZXcgZnVuY3Rpb24uCgkocGF0Y2hfZXhpdF9leHByKTogRml4ZWQgY29uZGl0aW9uIGludmVyc2lvbi4KCjE5OTgtMDktMDIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoanZzcGVjLm8pOiBVc2UgR0NDX1RIUkVBRF9GSUxFIHRvIGNvbXB1dGUgY29ycmVjdAoJbmFtZSBvZiB0aHJlYWQgZGVmaW5lLgoJKiBqdnNwZWMuYyAoVEhSRUFEX05BTUUpOiBOZXcgbWFjcm8uCgkoR0NMSUIpOiBMaWtld2lzZS4KCShUSFJFQURMSUIpOiBMaWtld2lzZS4KCShsYW5nX3NwZWNpZmljX2RyaXZlcik6IFJlY29nbml6ZSBhdHRlbXB0IHRvIGxpbmsgd2l0aCB0aHJlYWQKCWxpYnJhcnkgb3IgZ2MgbGlicmFyeS4gIFJlY29nbml6ZSAtbGphdmEgb24gY29tbWFuZCBsaW5lIHNvIGl0Cglpc24ndCBsaW5rZWQgYWdhaW5zdCBtb3JlIHRoYW4gb25jZS4KCjE5OTgtMDktMDIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2Utc2Nhbi55IChyZXBvcnRfbWFpbl9kZWNsYXJhdGlvbik6IE5hbWUgb2YgdGhlIGNsYXNzCgljb250YWluaW5nIGBtYWluJyBjYW4gYmUgYSBxdWFsaWZpZWQgbmFtZS4KCjE5OTgtMDgtMzEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy1sYW5nLmluOiBDaGFuZ2VkIGdqYXZhYyB0byBnamMgZXZlcnl3aGVyZS4KCSogTWFrZS1sYW5nLmluOiBDaGFuZ2VkIGdqYXZhYyB0byBnamMgZXZlcnl3aGVyZS4KCjE5OTgtMDgtMjcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChKQVZBX1RBUkdFVF9JTkRFUEVOREVOVF9CSU5fVE9PTFMpOiBOZXcgdmFyaWFibGUuCgkoamF2YS5pbnN0YWxsLWNvbW1vbjopOiBMb29wIG92ZXIgSkFWQV9UQVJHRVRfSU5ERVBFTkRFTlRfQklOX1RPT0xTCglhbmQgaW5zdGFsbCB0aGUgZmlsZXMuCgkqIE1ha2VmaWxlLmluIChKQVZBX09CSlNfTElURSk6IE5ldyB2YXJpYWJsZS4KCShjb21waWxlcjopOiBOb3cgaW5jbHVkZSBqdi1zY2FuIGFzIGEgZGVwZW5kZW5jeS4KCSguLi9qdi1zY2FuJChleGVleHQpLCBwYXJzZS1zY2FuLmMpOiBOZXcgdGFyZ2V0cy4KCSguLi9qY2YtZHVtcCQoZXhlZXh0KSk6IFdhcyBqY2YtZHVtcCQoZXhlZXh0KSBiZWZvcmUuCgkqIGNvbmZpZy1sYW5nLmluIChjb21waWxlcnMpOiBSZW1vdmVkIGdjaiwgZ2phdmFoIGZyb20gdGhlIGxpc3QuCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9zb3VyY2VfZmlsZSk6IENhbGwgamF2YV9sYXlvdXRfY2xhc3NlcyBhbmQKCWNoZWNrIGZvciBlcnJvcnMgZXZlbiBpZiBwYXJzZV9vbmx5LgoJKiBsZXguYyAoamF2YV9pbml0X2xleCk6IFJlb3JnYW5pemVkIGFuZCBza2lwIHBhcnRzIGlmIEpDMV9MSVRFIGlzCglkZWZpbmVkLgoJKHl5bGV4KTogTmV3IGZ1bmN0aW9uLiBVc2VzIGphdmFfbGV4IGJvZHkuCgkoamF2YV9sZXgpOiBSZW1vdmVkIGNvbW1lbnRlZCBvdXQgc3RhdGVtZW50LiBSZW1vdmUgbG9jYWwgdmFyaWFibGUKCWxpdGVyYWwuIFVzZSBTRVRfTFZBTF9OT0RFX1RZUEUgYW5kIFNFVF9MVkFMX05PREUgd2hlcmUKCWFwcHJvcHJpYXRlLiAgVXNlIG1hY3JvcyBGTE9BVF9UWVBFX05PREUsIERPVUJMRV9UWVBFX05PREUsCglEQ09OU1QwLCBTRVRfRkxPQVRfSEFORExFUiwgU0VUX1JFQUxfVkFMVUVfQVRPRiwKCVNFVF9MVkFMX05PREVfVFlQRSBhbmQgR0VUX1RZUEVfUFJFQ0lTSU9OLiBEb24ndCBjcmVhdGUgU1RSSU5HX0NTVAoJaWYgSkMxX0xJVEUgaXMgZGVmaW5lZC4gVXNlIEJVSUxEX0lEX1dGTCB0byBidWlsZCBpZGVudGlmaWVycy4gVXNlCglTRVRfTU9ESUZJRVJfQ1RYLCBTRVRfTFZBTF9OT0RFLCBCVUlMRF9JRF9XRkwgYW5kIEdFVF9JREVOVElGSUVSCgl3aGVyZSBhcHByb3ByaWF0ZS4KCShqYXZhX2xleF9lcnJvcik6IEVtcHR5IGlmIEpDMV9MSVRFIGlzIGRlZmluZWQuCgkoamF2YV9nZXRfbGluZV9jb2wpOiBSZXR1cm4gMCBpZiBKQzFfTElURSBpcyBkZWZpbmVkLgoJKiBsZXguaCAoSkFWQV9GTE9BVF9SQU5HRV9FUlJPUiwgSkFWQV9JTlRFR1JBTF9SQU5HRV9FUlJPUiwKCVNFVF9NT0RJRklFUl9DVFgpOiBNb3ZlZCBpbnRvIHRoZSBzZWN0aW9uIGNvbnRhaW5pbmcgdGhlIG1hY3JvcwoJY29uZGl0aW9uYWxseSBkZWZpbmVkIGJ5IEpDMV9MSVRFLgoJKEJVSUxEX09QRVJBVE9SLEJVSUxEX09QRVJBVE9SMik6IEp1c3QgcmV0dXJuIHRoZSBUT0tFTgoJYXJndW1lbnQgaWYgSkMxX0xJVEUgaXMgZGVmaW5lZC4KCShIT1NUX0JJVFNfUEVSX1dJREVfSU5ULCBIT1NUX1dJREVfSU5ULCBSRUFMX1ZBTFVFX0FUT0YsCglSRUFMX1ZBTFVFX0lTSU5GLCBSRUFMX1ZBTFVFX0lTTkFOKTogUHJlc2V0IHRvIHZhbHVlcyBpZiBKQzFfTElURQoJaXMgZGVmaW5lZC4KCShEQ09OU1QwLCBTRVRfRkxPQVRfSEFORExFUiwgR0VUX0lERU5USUZJRVIsIFNFVF9SRUFMX1ZBTFVFX0FUT0YsCglGTE9BVF9UWVBFLCBET1VCTEVfVFlQRSwgU0VUX01PRElGSUVSX0NUWCwgR0VUX1RZUEVfUFJFQ0lTSU9OLAoJU0VUX0xWQUxfTk9ERSwgU0VUX0xWQUxfTk9ERV9UWVBFLCBCVUlMRF9JRF9XRkwpOiBOZXcgbWFjcm9zLCBzZXQKCXRvIGRpZmZlcmVudCB2YWx1ZXMgYWNjb3JkaW5nIHRvIEpDMV9MSVRFLgoJKiBwYXJzZS5oIChpbnRfZml0c190eXBlX3AsIHN0YWJpbGl6ZV9yZWZlcmVuY2UpOiBQcm90b3R5cGUgbm90CglkZWNsYXJlZCBpZiBKQzFfTElURSBzZXQuCgkoamRlcF9jb2RlLCB0eXBlZGVmIHN0cnVjdCBfamRlcCwgdHlwZWRlZiBzdHJ1Y3QgX2pkZXBsaXN0KTogTm90CglkZWZpbmVkIGlmIEpDMV9MSVRFIG5vdCBzZXQuCgkoc3RydWN0IHBhcnNlcl9jdHgpOiBSZW9yZ2FuaXplZCBhbmQgc2tpcCB0aGUgamMxIGZyb250IGVuZCBwYXJ0CglpZiBKQzFfTElURSBzZXQuCgkoamF2YV9sYXlvdXRfY2xhc3Nlcyk6IE5ldyBmdW5jdGlvbiBkZWZpbml0aW9uLgoJKGphdmFfcHVzaF9wYXJzZXJfY29udGV4dCwgamF2YV9pbml0X2xleCwgeXlwYXJzZSwgeXlsZXgsCgl5eWVycm9yKTogUHJvdG90eXBlIGFsd2F5cyBkZWNsYXJlZC4gQWxsIG90aGVyIHN0YXRpYyBmdW5jdGlvbgoJcHJvdG90eXBlcyBkZWNsYXJlZCBvbmx5IGlmIEpDMV9MSVRFIGlzIG5vdCBzZXQuCgkqIHBhcnNlLnkgKHl5cGFyc2UsIHl5bGV4LCB5eWVycm9yKTogTm8gbG9uZ2VyIGRlY2xhcmVkIGhlcmUuIE5vdwoJZGVjbGFyZWQgaW4gcGFyc2UuaC4KCShqYXZhX2xheW91dF9jbGFzc2VzKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiBObyBsb25nZXIgbGF5b3V0IHRoZSBjbGFzcyBoZXJlLgoJKiBwYXJzZS1zY2FuLnk6IE5ldyBmaWxlLgoJKiBqdi1zY2FuLmM6IE5ldyBmaWxlLgoKMTk5OC0wOC0yNSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKG1haW4pOiBIYW5kbGUgLWZyaWVuZCBvcHRpb24uCgkoZnJpZW5kX3NwZWNzKTogTmV3IGdsb2JhbC4KCShnZW5lcmF0ZV9hY2Nlc3MpOiBIYW5kbGUgZnJpZW5kX3NwZWNzLgoJKHByb2Nlc3NfZmlsZSk6IExpa2V3aXNlLgoJKE1BWF9GUklFTkRTKTogTmV3IG1hY3JvLgoJKGZyaWVuZF9jb3VudCk6IE5ldyBnbG9iYWwuCgkocHJpbnRfY3h4X2NsYXNzbmFtZSk6IEFkZGVkIGBwcmVmaXgnIGFyZ3VtZW50LiAgSWdub3JlIGFycmF5cy4KCUNoYW5nZWQgYWxsIGNhbGxlcnMuCgoxOTk4LTA4LTI0ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGpjZi1kdW1wLmMgKHByb2Nlc3NfY2xhc3MpOiAgTW92ZSBKQ0ZfRklOSVNIIHVzZSB0byBtYWluLAoJKG1haW4pOiAgSGFuZGxlIHByb2Nlc3NpbmcgYWxsIHRoZSBlbnRyaWVzIG9mIGEgbmFtZWQgLnppcCBhcmNoaXZlLgoJKiBqY2YtaW8uYyAoamNmX3RyaW1fb2xkX2lucHV0KTogIE5ldyBmdW5jdGlvbi4KCSogamNmLmggKEdFVF91Ml9sZSxHRVRfdTRfbGUsSkNGX3JlYWR1Ml9sZSxKQ0ZfcmVhZHU0X2xlKTogIE5ldyBtYWNyb3MuCgoxOTk4LTA4LTI0ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGxhbmcuYyAoZmxhZ19hc3N1bWVfY29tcGlsZWQpOiAgTWFrZSBkZWZhdWx0IGJlIG9uLgoKMTk5OC0wOC0yMSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBqY2YtZHVtcC5jOiAgQWRkIGJ1bmNoZXMgb2YgZmxhZ3MgdG8gY29udHJvbCBvdXRwdXQgbW9yZS4KCShwcm9jZXNzX2NsYXNzKTogIE5ldyBmdW5jdGlvbjsgIHN1cHBvcnQgcHJpbnRpbmcgbW9yZSB0aGFuIG9uZSBjbGFzcy4KCShtYWluKTogU3VwcG9ydCBuZXcgLS1wcmludC1tYWluIGFuZCAtLWphdmFwIGZsYWdzLgoJKiBqY2YtcmVhZGVyLmMgKElHTk9SRV9BVFRSSUJVVEUpOiAgTmV3IGhvb2suCgkqIGpjZi5oIChDUE9PTF9JTkRFWF9JTl9SQU5HRSk6ICBOZXcgbWFjcm8uCgoxOTk4LTA4LTIwICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCglDaGFuZ2UgbWFuZ2xpbmcgb2YgZGlzcGF0Y2ggdGFibGUgdG8gbWF0Y2ggQysrIHZ0YWJsZSAody90aHVua3MpLgoJKiBjbGFzcy5jIChidWlsZF9kdGFibGVfZGVjbCksIGphdmEtdHJlZS5oOiAgTmV3IGZ1bmN0aW9uLgoJKG1ha2VfY2xhc3NfZGF0YSk6ICBDYWxsIGl0LgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogIExpa2V3aXNlLgoKMTk5OC0wOC0xOSAgV2FycmVuIExldnkgIDx3YXJyZW5sQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogVXNlIF9Kdl9OZXdPYmplY3RBcnJheSwgbm90Cglzb2Z0X2FuZXdhcnJheTsgYWRqdXN0IGFyZ3MgcGFzc2VkLgoJKiBleHByLmMgKGJ1aWxkX2FuZXdhcnJheSk6IEFkanVzdCBhcmdzIGZvciBzb2Z0X2FuZXdhcnJheV9ub2RlIHRvCgltYXRjaCBfSnZfTmV3T2JqZWN0QXJyYXkuCgoxOTk4LTA4LTE5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocHVzaF9sYWJlbGVkX2Jsb2NrLCBwb3BfbGFiZWxlZF9ibG9jayk6IE5ldyBmdW5jdGlvbnMuCgkqIGV4cHIuYyAobG9vcHVwX2xhYmVsKTogQ2FsbCBjcmVhdGVfbGFiZWxfZGVjbC4KCShjcmVhdGVfbGFiZWxfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBDYWxsIGV4cGFuZF9zdGFydF9iaW5kaW5ncyB3aXRoIGFyZ3VtZW50CglzZXQgdG8gemVyby4KCSogamF2YS10cmVlLmggQWRkZWQgc3BhY2UgYWZ0ZXIgUFJPVE8gaW4gZnVuY3Rpb24gZGVjbGFyYXRpb25zCgl3aGVuIG5lY2Vzc2FyeS4KCShJU19GT1JfTE9PUF9QLCBJU19CUkVBS19TVE1UX1ApOiBOZXcgbWFjcm9zLgoJKGNyZWF0ZV9sYWJlbF9kZWNsLCBwdXNoX2xhYmVsZWRfYmxvY2spOiBOZXcgZnVuY3Rpb24KCWRlY2xhcmF0aW9ucy4KCSogbGV4LmMgKGxhYmVsX2lkKTogSW5pdGlhbGl6ZS4KCShTVVBFUl9USywgVEhJU19USywgUkVUVVJOX1RLKTogTWVyZ2VkIGNvbW1vbiBhY3Rpb25zIGluIGZpbmFsCglzd2l0Y2guCgkqIHBhcnNlLmggQWRkZWQgc3BhY2UgYWZ0ZXIgUFJPVE8gaW4gZnVuY3Rpb24gZGVjbGFyYXRpb25zIHdoZW4KCW5lY2Vzc2FyeS4KCShMT09QX0VYUFJfQk9EWV9NQUlOX0JMT0NLLCBMT09QX0VYUFJfQk9EWV9VUERBVEVfQkxPQ0ssCglMT09QX0VYUFJfQk9EWV9DT05ESVRJT05fRVhQUiwgTE9PUF9FWFBSX0JPRFlfTEFCRUxFRF9CT0RZLAoJTE9PUF9FWFBSX0JPRFlfQk9EWV9FWFBSLCBMT09QX0hBU19MQUJFTF9QLCBMT09QX0hBU19MQUJFTF9TS0lQX1AsCglQVVNIX0xBQkVMRURfQkxPQ0ssIFBPUF9MQUJFTEVEX0JMT0NLLCBQVVNIX0xPT1AsIFBPUF9MT09QKTogTmV3CgltYWNyb3MuCgkoc3RydWN0IHBhcnNlcl9jdHh0KTogTmV3IGZpZWxkcyBjdXJyZW50X2xvb3AsCgljdXJyZW50X2xhYmVsZWRfYmxvY2suCgkoYnVpbGRfaWZfZWxzZV9zdGF0ZW1lbnQsIHBhdGNoX2lmX2Vsc2Vfc3RhdGVtZW50LAoJYWRkX3N0bXRfdG9fY29tcG91bmQsIHBhdGNoX2V4aXRfZXhwciwgYnVpbGRfbGFiZWxlZF9ibG9jaywKCWdlbmVyYXRlX2xhYmVsZWRfYmxvY2ssIGNvbXBsZXRlX2xhYmVsZWRfc3RhdGVtZW50LAoJYnVpbGRfYmNfc3RhdGVtZW50LCBwYXRjaF9iY19zdGF0ZW1lbnQsIHBhdGNoX2xvb3Bfc3RhdGVtZW50LAoJYnVpbGRfbmV3X2xvb3AsIGJ1aWxkX2xvb3BfYm9keSwgY29tcGxldGVfbG9vcF9ib2R5KTogTmV3IGZ1bmN0aW9uCglkZWNsYXJhdGlvbnMuCgkqIHBhcnNlLnkgKGphdmFfd2FybmluZ19jb3VudCk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkobGFiZWxfaWQpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKEJSRUFLX1RLLCBDT05USU5VRV9USyk6IFRva2VuIHRhZ2dlZCA8b3BlcmF0b3I+LgoJKGJsb2NrOik6IFJldHVybiBzaXplX3plcm9fbm9kZSB3aGVuIGJsb2NrIGlzIGVtcHR5LgoJKGVtcHR5X3N0YXRlbWVudDopOiBSZXR1cm4gc2l6ZV96ZXJvX25vZGUuCgkoc3RhdGVtZW50Oik6IEltcGxlbWVudCBzdXBwbGVtZW50YWwgYWN0aW9uIHdoZW4gZm9yX3N0YXRlbWVudDogaXMKCXJlZHVjZWQuCgkobGFiZWxfZGVjbDopOiBOZXcgcnVsZS4KCShsYWJlbGVkX3N0YXRlbWVudDopOiBSZXdyaXR0ZW4gdXNpbmcgbGFiZWxfZGVjbC4gQWN0aW9ucwoJaW1wbGVtZW50ZWQuCgkobGFiZWxlZF9zdGF0ZW1lbnRfbnNpOik6IExpa2V3aXNlLgoJKGlmX3RoZW5fc3RhdGVtZW50KTogQWN0aW9ucyBpbXBsZW1lbnRlZC4KCSh3aGlsZV9leHByZXNzaW9uKTogTmV3IHJ1bGUuCgkod2hpbGVfc3RhdGVtZW50Oik6IFJld3JpdHRlbiB1c2luZyB3aGlsZV9leHByZXNzaW9uLiBBY3Rpb25zCglpbXBsZW1lbnRlZC4KCSh3aGlsZV9zdGF0ZW1lbnRfbnNpOik6IExpa2V3aXNlLgoJKGRvX3N0YXRlbWVudF9iZWdpbjopOiBOZXcgcnVsZS4KCShkb19zdGF0ZW1lbnQ6KTogUmV3cml0dGVuIHVzaW5nIGRvX3N0YXRlbWVudF9iZWdpbi4gQWN0aW9ucwoJaW1wbGVtZW50ZWQuCgkoZm9yX3N0YXRlbWVudDopOiBSZXdyaXR0ZW4gdXNpbmcgZm9yX2JlZ2luLiBBY3Rpb25zIGltcGxlbWVudGVkLgoJKGZvcl9zdGF0ZW1lbnRfbnNpOik6IExpa2V3aXNlLgoJKGZvcl9oZWFkZXI6LCBmb3JfYmVnaW46KTogTmV3IHJ1bGVzLgoJKGZvcl9pbml0Oik6IEFjdGlvbnMgaW1wbGVtZW50ZWQuCgkoc3RhdGVtZW50X2V4cHJlc3Npb25fbGlzdDosIGJyZWFrX3N0YXRlbWVudDosCgljb250aW51ZV9zdGF0ZW1lbnQ6KTogTGlrZXdpc2UuCgkoeXllcnJvcik6IENvdW50IG51bWJlciBvZiBpc3N1ZWQgd2FybmluZyhzKS4KCShqYXZhX3JlcG9ydF9lcnJvcnMpOiBSZXBvcnQgZXJyb3IocykgYW5kL29yIHdhcm5pbmcocykuCgkoamF2YV9jb21wbGV0ZV9jbGFzcyk6IFVzZSBidWlsZF9qYXZhX2FyZ3VtZW50X3NpZ25hdHVyZSB0bwoJcmVjb21wdXRlIGNvbXBsZXRlZCBtZXRob2Qgc2lnbmF0dXJlLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogTmV3IGxvY2FscyBtZXRob2Rfd2ZsIGFuZCBhZmxhZ3MuCglVc2UgbWV0aG9kX3dmbCBpbnN0ZWFkIG9mIGxvb2t1cF9jbCBkdXJpbmcgZXJyb3IgcmVwb3J0cy4gRml4ZWQKCWluZGVudGF0aW9uIGFuZCBtb2RpZmllZCBzb21lIGVycm9yIG1lc3NhZ2VzLiBVc2UKCWxhbmdfcHJpbnRhYmxlX25hbWUgaW4gbWV0aG9kIGluc3RlYWQgb2YgdGhlIERFQ0xfTkFNRS4gTmV3IGNvZGUKCXRvIGlzc3VlIHdhcm5pbmdzIG9uIG1ldGhvZHMgbm90IG92ZXJyaWRpbmcgY29ycmVzcG9uZGluZyBtZXRob2RzCglwcml2YXRlIHRvIGEgZGlmZmVyZW50IHBhY2thZ2UuCgkoamF2YV9tZXRob2RfYWRkX3N0bXQpOiBDYWxsIGFkZF9zdG10X3RvX2NvbXBvdW5kLgoJKGFkZF9zdG10X3RvX2NvbXBvdW5kKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfY29tcGxldGVfdHJlZSk6IEhhbmRsZSBMQUJFTEVEX0JMT0NLX0VYUFIsIEVYSVRfQkxPQ0tfRVhQUiwKCUxPT1BfRVhQUiwgRVhJVF9FWFBSIGFuZCBDT05EX0VYUFIuCgkoYnVpbGRfaWZfZWxzZV9zdGF0ZW1lbnQsIHBhdGNoX2lmX2Vsc2Vfc3RhdGVtZW50LAoJYnVpbGRfbGFiZWxlZF9ibG9jaywgZ2VuZXJhdGVfbGFiZWxlZF9ibG9jaywKCWNvbXBsZXRlX2xhYmVsZWRfc3RhdGVtZW50LCBidWlsZF9uZXdfbG9vcCwgYnVpbGRfbG9vcF9ib2R5LAoJY29tcGxldGVfbG9vcF9ib2R5LCBwYXRjaF9sb29wX3N0YXRlbWVudCwgYnVpbGRfYmNfc3RhdGVtZW50LAoJcGF0Y2hfYmNfc3RhdGVtZW50LCBwYXRjaF9leGl0X2V4cHIpOiBOZXcgZnVuY3Rpb25zLgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9zaWduYXR1cmUpOiBCdWlsZCBhcmd1bWVudCBzaWduYXR1cmUgYmVmb3JlCgllbmNsb3NpbmcgaXQgaW4gYmV0d2VlbiBwYXJlbnRoZXNpcy4KCjE5OTgtMDgtMTcgIFdhcnJlbiBMZXZ5ICA8d2FycmVubEBjeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChKQVZBX1NSQ1MpOiBDcmVhdGVkIGZvciBkZXBlbmRlbmNpZXMgKiBNYWtlZmlsZS5pbgoJKEpBVkFfT0JKUyk6IEFkZGVkIHJlbWluZGVyIGNvbW1lbnQKCjE5OTgtMDgtMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAoRF9OQU5fTUFTSyk6IEFwcGVuZCBMTCB0byB0aGUgY29uc3RhbnQgdG8gZm9yY2UgaXQgdG8KCWJlIGludGVycHJldGVkIGFzIGEgbG9uZyBsb25nLgoKMTk5OC0wOC0xMyAgV2FycmVuIExldnkgIDx3YXJyZW5sQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogVXNlIF9Kdl9Jbml0Q2xhc3MsIG5vdAoJc29mdF9pbml0aWFsaXNlX2NsYXNzLiAgVXNlIF9Kdl9OZXdNdWx0aUFycmF5LCBub3QKCXNvZnRfbXVsdGlhbmV3YXJyYXkuICBVc2UgX0p2X1Rocm93QmFkQXJyYXlJbmRleCwgbm90Cglzb2Z0X2JhZGFycmF5aW5kZXguICBVc2UgX0p2X0NoZWNrQ2FzdCwgbm90IHNvZnRfY2hlY2tjYXN0LiAgVXNlCglfSnZfQ2hlY2tBcnJheVN0b3JlLCBub3Qgc29mdF9jaGVja2FycmF5c3RvcmUuICBVc2UKCV9Kdl9Mb29rdXBJbnRlcmZhY2VNZXRob2QsIG5vdCBzb2Z0X2xvb2t1cGludGVyZmFjZW1ldGhvZC4KCjE5OTgtMDgtMTIgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogZGVjbC5jLCBqYXZhLXRyZWUuaCAodGhpc19pZGVudGlmaWVyX25vZGUsIHN1cGVyX2lkZW50aWZpZXJfbm9kZSwKCWxlbmd0aF9pZGVudGlmaWVyX25vZGUpOiAgTmV3IGdsb2JhbCB0cmVlIG5vZGUgY29uc3RhbnRzLgoJKiBwYXJzZS55IChrd19zdXBlciwga3dfdGhpcywga3dfbGVuZ3RoKTogIFJlbW92ZWQgZ2xvYmFscy4KCVJlcGxhY2UgdXNlcyBieSBzdXBlcl9pZGVudGlmaWVyX25vZGUgZXRjLgoJKiBsZXguYyAoa3dfc3VwZXIsIGt3X3RoaXMsIGt3X2xlbmd0aCk6ICBEb24ndCBpbml0aWFsaXplLgoKCSogcGFyc2UueSAocmVzb2x2ZV9maWVsZF9hY2Nlc3MpOiAgRG9uJ3Qgc3BlY2lhbC1jYXNlICIubGVuZ3RoIiBpZgoJZmxhZ19lbWl0X2NsYXNzX2ZpbGVzLgoJKHBhdGNoX2FycmF5X3JlZik6ICBMZWF2ZSBhcyBBUlJBWV9SRUYgaWYgZmxhZ19lbWl0X2NsYXNzX2ZpbGVzLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiAgSGFuZGxlIEFSUkFZX1JFRiBvcGNvZGUKCWFuZCBBUlJBWS5sZW5ndGguCgoxOTk4LTA4LTExICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBSZW1vdmUgdW51c2VkIG1ldGhvZF90eXBlX25vZGUgZmllbGRzLgoJKiBjbGFzcy5jIChtYWtlX21ldGhvZF92YWx1ZSk6ICBSZW1vdmUgaW5pdCBmb3IgcmVtb3ZlZCBmaWVsZHMuCgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3MpOiAgVXNlIGJ1aWxkX2phdmFfYXJndW1lbnRfc2lnbmF0dXJlLgoJKiBqYXZhLXRyZWUuaCAoVFlQRV9BUkdVTUVOVF9TSUdOQVRVUkUpOiAgTmV3IG1hY3JvLgoKCSogdHlwZWNrLmMgKHB1c2hfamF2YV9hcmd1bWVudF9zaWduYXR1cmUpOiAgUmVtb3ZlZC4gIE1lcmdlZCBpbnRvIC4uLgoJKGJ1aWxkX2phdmFfYXJndW1lbnRfc2lnbmF0dXJlKTogIFVzZSBUWVBFX0FSR1VNRU5UX1NJR05BVFVSRSBjYWNoZS4KCShidWlsZF9qYXZhX3NpZ25hdHVyZSk6ICBEb24ndCB1c2UgcHVzaF9qYXZhX2FyZ3VtZW50X3NpZ25hdHVyZS4KCgkqIHR5cGVjay5jIChsb29rdXBfYXJndW1lbnRfbWV0aG9kKTogIE5ldyBmdW5jdGlvbi4KCSogcGFyc2UueSAoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiAgVXNlIGxvb2t1cF9hcmd1bWVudF9tZXRob2QKCWluc3RlYWQgb2YgbG9va3VwX2phdmFfbWV0aG9kMiBmb2xsb3dlZCBieSBsb29rdXBfamF2YV9tZXRob2QuCgoJKiBwYXJzZS55IChjaGVja19tZXRob2RfcmVkZWZpbml0aW9uKTogIE1pbm9yIG9wdGltaXphdGlvbi4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6ICBIYW5kbGUgUkVUVVJOX0VYUFIsCglNSU5VU19FWFBSLCBNVUxUX0VYUFIsIFRSVU5DX0RJVl9FWFBSLCBhbmQgUkRJVl9FWFBSLgoKMTk5OC0wOC0xMCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYzEkKGV4ZWV4dCkpOiBEb24ndCBkZXBlbmQgb24gYy1jb21tb24ubyBvcgoJYy1wcmFnbWEuby4KCgkqIGdqYXZhaC5jIChqYXZhX2Zsb2F0X2Zpbml0ZSk6IFVzZSBLJlItc3R5bGUgZGVmaW5pdGlvbi4KCShqYXZhX2RvdWJsZV9maW5pdGUpOiBMaWtld2lzZS4KCShnZW5lcmF0ZV9hY2Nlc3MpOiBOb3cgcmV0dXJucyB2b2lkLiAgQ2hhbmdlZCBhbGwgY2FsbGVycy4KCShsYXN0X2FjY2Vzc19nZW5lcmF0ZWQpOiBSZW1vdmVkLgoJKHByb2Nlc3NfZmlsZSk6IE9ubHkgbWFrZSBhIHNpbmdsZSBwYXNzIG92ZXIgdGhlIC5jbGFzcyBmaWxlLgoKMTk5OC0wNy0yOSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChnZXRfZGlzcGF0Y2hfdGFibGUpOiAgQWRkIGV4dHJhIGR1bW15IHZ0YWJsZSBlbnRyeSwKCWZvciBjb21wYXRpYmlsaXR5IGZvciBHKysgKHdpdGggLWZ2dGFibGUtdGh1bmtzKS4KCSogZXhwci5jIChidWlsZF9pbnZva2V2aXJ0dWFsKTogIEFkZCBvbmUgZm9yIGV4dHJhIGR1bW15IHZ0YWJsZSBlbnRyeS4KCgkqIGdqYXZhaC5jIChwcm9jZXNzX2ZpbGUpOiAgVXNlIHB1YmxpYyBpbmhlcml0YW5jZSBmb3Igc3VwZXItY2xhc3MuCgoxOTk4LTA3LTI5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGxleC5jIChqYXZhX2luaXRfbGV4KTogSW5pdGlhbGl6ZSBjdHhwLT5wYWNrYWdlLgoJKiBwYXJzZS5oIChzdHJ1Y3QgcGFyc2VyX2N0eHQpOiBwYWNrYWdlIGFuZCBwYWNrYWdlX2xlbiByZXBsYWNlZAoJYnkgdHJlZSBwYWNrYWdlLCBhbiBpZGVudGlmaWVyIG5vZGUuIEZpZWxkIG1ldGhvZF9kZWNsX2xpc3QgaXMKCWdvbmUuIEZpeGVkIGNvbW1lbnRzLgoJKGxvb2t1cF9maWVsZF93cmFwcGVyLCBtZXJnZV9xdWFsaWZpZWRfbmFtZSwgbm90X2FjY2Vzc2libGUsCgljbGFzc19pbl9jdXJyZW50X3BhY2thZ2UpOiBOZXcgZnVuY3Rpb24gcHJvdG90eXBlcy4KCSogcGFyc2UueSAoYXJyYXlfdHlwZTopOiBTZXQgY2xhc3MgbG9hZGVkIGZsYWcgb24gcHJpbWl0aXZlIHR5cGUKCWFycmF5cy4KCShwYWNrYWdlX2RlY2xhcmF0aW9uOik6IEFzc2lnbiBjdHhwLT5wYWNrYWdlIHRvIHRoZQoJaWRlbnRpZmllciBub2RlLgoJKG1ldGhvZF9pbnZvY2F0aW9uOik6IEhhbmRsZSBpbnZvY2F0aW9uIG9mIG1ldGhvZCBxdWFsaWZpZWQgYnkKCWBzdXBlcicuCgkoc2luZ2xlX3R5cGVfaW1wb3J0X2RlY2xhcmF0aW9uOik6IFJlbW92ZWQgYW1iaWd1aXR5IGNoZWNrLgoJKGphdmFfcG9wX3BhcnNlcl9jb250ZXh0KTogTmV3IGxvY2FsIHZhcmlhYmxlIGBuZXh0Jy4gUmVzZXQgYW5kCglzZXQgSU1QT1JUX0NMQVNTRklMRV9OQU1FIGZsYWdzIG9uIGN1cnJlbnQgYW5kIHByZXZpb3VzIGltcG9ydAoJbGlzdC4KCShqYXZhX2FjY3N0cmluZ19sb29rdXApOiBVc2UgbmV3IGxvY2FsIG1hY3JvIENPUFlfUkVUVVJOLgoJKGxvb2t1cF9maWVsZF93cmFwcGVyKTogTmV3IGZ1bmN0aW9uLgoJKHBhcnNlcl9xdWFsaWZpZWRfY2xhc3NuYW1lKTogVXNlIG1lcmdlX3F1YWxpZmllZF9uYW1lLgoJKHBhcnNlcl9jaGVja19zdXBlcl9pbnRlcmZhY2UpOiBCcm9hZGVuIGVycm9yIG1lc3NhZ2UuCgkoZG9fcmVzb2x2ZV9jbGFzcyk6IENoZWNrIGZvciBxdWFsaWZpZWQgY2xhc3MgbmFtZSBpbiB0aGUgY3VycmVudAoJY29tcGlsYXRpb24gdW5pdCBpZiBhcHByb3ByaWF0ZS4KCShwcm9jZXNzX2ltcG9ydHMpOiBDaGVjayBmb3IgYWxyZWFkeSBkZWZpbmVkIGNsYXNzZXMuCgkoY2hlY2tfcGtnX2NsYXNzX2FjY2Vzcyk6IEdvdCByaWQgb2YgY2FsbCB0bwoJZ2V0X2FjY2Vzc19mbGFnc19mcm9tX2RlY2wuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IENhbGwgc2FmZV9sYXlvdXRfY2xhc3MgYmFzZWQgb24KCXRoZSBjdXJyZW50IGNsYXNzIHNpemUuCgkobWFrZV9xdWFsaWZpZWRfcHJpbWFyeSk6IEJ1aWxkIGEgV0ZMIHF1YWxpZmljYXRpb24gb24gcHJpbWFyeSBpZgoJbm9uZSBleGlzdHMuCgkobWVyZ2VfcXVhbGlmaWVkX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkobWFrZV9xdWFsaWZpZWRfbmFtZSk6IFVzZSBtZXJnZV9xdWFsaWZpZWRfbmFtZS4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IFVzZSBzYWZlX2xvb2t1cF9maWVsZC4KCShyZXNvbHZlX2ZpZWxkX2FjY2Vzcyk6IEdvdCByaWQgb2YgY2FsbCB0byBnZXRfYWNjZXNzX2ZsYWdzX2Zyb21fZGVjbC4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBMaWtld2lzZS4gQ2hlY2sgb24gcmVzb2x2ZWQKCWVsZW1lbnQgYWNjZXNzaWJpbGl0eS4KCShub3RfYWNjZXNzaWJsZV9wLCBjbGFzc19pbl9jdXJyZW50X3BhY2thZ2UpOiBOZXcgZnVuY3Rpb25zLgoJKG1heWJlX2FjY2Vzc19maWVsZCk6IEdvdCByaWQgb2YgY2FsbCB0byBnZXRfYWNjZXNzX2ZsYWdzX2Zyb21fZGVjbC4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbl9zdG10KTogTWVyZ2VkIGNvbW1vbiBwaWVjZXMuIENoZWNrCglhY2Nlc3NpYmlsaXR5IG9mIGludm9rZWQgbWV0aG9kLgoJKGNoZWNrX2Zvcl9zdGF0aWNfbWV0aG9kX3JlZmVyZW5jZSk6IEFkZCByZXR1cm5lZCB0eXBlIGluIGVycm9yCgltZXNzYWdlLgoJKGludm9jYXRpb25fbW9kZSk6IEdldCByaWQgb2YgYm9ndXMgY2hlY2sgb24gUFJJVkFURSBtZXRob2RzLgoJKHJlZmluZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6IE1lcmdlZCB0d28gY29uZGl0aW9ucyBpbiB0ZXN0LgoJKGphdmFfY29tcGxldGVfY2xhc3MpOiBTYW5pdHkgY2hlY2sgb24gc3RhYmlsaXplX3JlZiBnb25lLgoJKiB6ZXh0cmFjdC5jIChyZWFkX3ppcF9hcmNoaXZlKTogQ2FzdCBsc2VlayBzZWNvbmQgYXJndW1lbnQgdG8gbG9uZy4KCjE5OTgtMDctMjggIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoaGFzaFV0ZjhTdHJpbmcpOiAgRml4IC0gdXNlIG5ldyBKYXZhU29mdCBzcGVjaWZpY2F0aW9uLgoKMTk5OC0wNy0yNCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKEZfTkFOKTogUmVtb3ZlZC4KCShGX05BTl9NQVNLKTogTmV3IG1hY3JvLgoJKEZfUE9TSVRJVkVfSU5GSU5JVFkpOiBSZW1vdmVkLgoJKEZfTkVHQVRJVkVfSU5GSU5JVFkpOiBMaWtld2lzZS4KCShqYXZhX2Zsb2F0X2Zpbml0ZSk6IFJld3JvdGUuCgkoRF9OQU5fTUFTSyk6IFJlbmFtZWQuCgkoamF2YV9kb3VibGVfZmluaXRlKTogUmV3cm90ZS4KCShEX1BPU0lUSVZFX0lORklOSVRZKTogUmVtb3ZlZC4KCShEX05FR0FUSVZFX0lORklOSVRZKTogTGlrZXdpc2UuCgoJKiBqY2YtZHVtcC5jIChwcmludF9jb25zdGFudCk6IFtDT05TVEFOVF9Eb3VibGUsIENPTlNUQU5UX0Zsb2F0XQoJSWYgdmVyYm9zZSwgcHJpbnQgdW5kZXJseWluZyByZXByZXNlbnRhdGlvbiBvZiB2YWx1ZSBpbiBoZXguCgoxOTk4LTA3LTI0ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGJ1ZmZlci5oLCBidWZmZXIuYzogIE5ldyBmaWxlcy4KCSogTWFrZWZpbGUuaW4gKEpBVkFfT0JKUyk6ICBBZGQgYnVmZmVyLm8uCgoJU3VwcG9ydCBsb2NhbHMgdmFyaWFibGVzIGFuZCB3cml0aW5nIHRoZWlyIGRlYnVnIGVudHJpZXMgdG8gLmNsYXNzLgoJKiBqY2Ytd3JpdGUuYzogIFNpbXBsaWZ5IHNvbWUgYnkgdXNlciBuZXcgYnVmZmVyIHR5cGUuCgkodm9kZV9idWZmZXJfZ3Jvdyk6ICBSZW1vdmVkLgoJKHN0cnVjdCBsb2NhbHZhcl9pbmZvKTogIE5ldyB0eXBlLgoJKGxvY2Fsc3ZhcnMsIGxvY2FsdmFydGFibGUpOiAgTmV3IGJ1ZmZlcnMuCgkobG9jYWx2YXJfYWxsb2MsIGxvY2FsdmFyX2ZyZWUpOiAgTmV3IGZ1bmN0aW9ucy4KCShnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6ICBIYW5kbGUgbG9jYWwgdmFyaWFibGVzLgoJKGdlbmVyYXRlX2NsYXNzZmlsZSk6ICBXcml0ZSBMb2NhbFZhcmlhYmxlVGFibGUgYXR0cmlidXRlLgoKMTk5OC0wNy0yNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2YtaW8uYyAob3Blbl9pbl96aXApOiBDaGVjayB0aGUgemlwZmlsZSBtYWdpYyBudW1iZXIuCgkqIHppcGZpbGUuaCAoWklQTUFHSUMpOiBOZXcgbWFjcm8uCgoxOTk4LTA3LTI0ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZ2phdmFoLm8pOiBVcGRhdGVkIGRlcGVuZGVuY2llcy4KCShqY2YtZHVtcC5vKTogTGlrZXdpc2UuCgkoYWxsLmluZGlyZWN0KTogVXNlIC4uL2dqYXZhaC4KCSguLi9namF2YWgkKGV4ZWV4dCkpOiBMaWtld2lzZS4KCShjbGVhbik6IERvbid0IHJlbW92ZSBnamF2YWguCgkoY2xlYW4pOiBSZW1vdmUgcGFyc2UuYywgbm90IGphdmEvcGFyc2UuYy4KCSogTWFrZS1sYW5nLmluIChqYXZhKTogQWRkZWQgZ2phdmFoLgoJKGdqYXZhaCQoZXhlZXh0KSk6IE5ldyB0YXJnZXQuCgkoR0pBVkFIX1NPVVJDRVMpOiBOZXcgbWFjcm8uCgkoamF2YS5hbGwuYnVpbGQpOiBBZGRlZCBnamF2YWguCgkoamF2YS5hbGwuY3Jvc3MpOiBMaWtld2lzZS4KCShqYXZhLnJlc3QuZW5jYXApOiBMaWtld2lzZS4KCSogY29uZmlnLWxhbmcuaW4gKGNvbXBpbGVycywgc3RhZ2VzdHVmZik6IEFkZGVkIGdqYXZhaC4KCjE5OTgtMDctMjMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChqYXZhX2Zsb2F0X2Zpbml0ZSk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX2RvdWJsZV9maW5pdGUpOiBMaWtld2lzZS4KCShGX1BPU0lUSVZFX0lORklOSVRZKTogTmV3IG1hY3JvLgoJKEZfTkVHQVRJVkVfSU5GSU5JVFkpOiBMaWtld2lzZS4KCShGX05BTik6IExpa2V3aXNlLgoJKERfUE9TSVRJVkVfSU5GSU5JVFkpOiBMaWtld2lzZS4KCShEX05FR0FUSVZFX0lORklOSVRZKTogTGlrZXdpc2UuCgkoRF9OQU4pOiBMaWtld2lzZS4KCShwcmludF9maWVsZF9pbmZvKTogVXNlIGphdmFfZmxvYXRfZmluaXRlIGFuZCBqYXZhX2RvdWJsZV9maW5pdGUuCgoxOTk4LTA3LTIzICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKG1ldGhvZF9oZWFkZXIpOiAgTmFtZSAidGhpcyIgaW1wbGljaXQgYXJndW1lbnQuCgoxOTk4LTA3LTIyICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jOiAgV3JpdGUgb3V0IExpbmVOdW1iZXJUYWJsZSBhdHRyaWJ1dGUgaW4gLmNsYXNzIGZpbGUuCgkobGluZW51bWJlcl9idWZmZXIsIGxpbmVudW1iZXJfcHRyLCBsaW5lbnVtYmVyX2xpbWl0KTogIE5ldyBzdGF0aWNzLgoJKHB1dF9saW5lbnVtYmVyKTogIE5ldyBmdW5jdGlvbi4KCShnZW5lcmF0ZV9ieXRlY29kZV9pbnNucywgZ2VuZXJhdGVfY2xhc3NmaWxlKTogIFdyaXRlIGxpbmUgbnVtYmVycy4KCjE5OTgtMDctMjIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmggKENBTExfRVhQUl9GUk9NX1BSSU1BUllfUCk6IENoYW5nZWQgaW4gUFJJTUFSWV9QLgoJKGxvb2t1cF9uYW1lLCBidWlsZF9rbm93bl9tZXRob2RfcmVmLCBidWlsZF9jbGFzc19pbml0LAoJYnVpbGRfaW52b2tldmlydHVhbCwgaW52b2tlX2J1aWxkX2R0YWJsZSwgbWF0Y2hfamF2YV9tZXRob2QsCglidWlsZF9maWVsZF9yZWYsIHB1c2hkZWNsX2ZvcmNlX2hlYWQsIGJ1aWxkX2phdmFfYmlub3AsCgliaW5hcnlfbnVtZXJpY19wcm9tb3Rpb24sIGJ1aWxkX2RlY2xfbm9fbGF5b3V0LAoJYnVpbGRfamF2YV9hcnJheWFjY2VzcywgYnVpbGRfbmV3YXJyYXksIGJ1aWxkX2FuZXdhcnJheSwKCWJ1aWxkX2phdmFfYXJyYXlfbGVuZ3RoX2FjY2VzcywgYnVpbGRfamF2YV9hcnJheW51bGxfY2hlY2spOiBOZXcKCWV4dGVybiBmdW5jdGlvbiBwcm90b3R5cGVzLgoJKEpBVkFfVU5BUllfUExVU19FWFBSLCBKQVZBX05FV19BUlJBWV9FWFBSLCBKQVZBX05FV19DTEFTU19FWFBSLAoJSkFWQV9USElTX0VYUFIsIENBTExfQ09OU1RSVUNUT1JfUCk6IE1hY3JvIGRlZmluaXRpb24gbW92ZWQgaW4KCWphdmEtdHJlZS5oLgoJKiBqY2YtcGFyc2UuYyAoaW5pdF9vdXRnb2luZ19jcG9vbCk6IFNldCBjdXJyZW50X2NvbnN0YW50X3Bvb2xfZGF0YV9yZWYKCXRvIE5VTEwKCSogamNmLmggKGpjZl9vdXRfb2Zfc3luY2gpOiBOZXcgZXh0ZXJuIGZ1bmN0aW9uIHByb3RvdHlwZS4KCSogcGFyc2UuaDogU3RhdGljL2dsb2JhbCBmdW5jdGlvbiBpbXBsZW1lbnRlZCBpbiBwYXJzZS55Cglwcm90b3R5cGVkIGFuZCBkZWNsYXJhdGlvbnMgbW92ZWQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZS4KCShERUNMX1ApOiBDaGVjayB0aGF0IHRoZSBhcmd1bWVudCBpc24ndCBudWxsLgoJKEpBVkFfVU5BUllfUExVU19FWFBSLCBKQVZBX05FV19BUlJBWV9FWFBSLCBKQVZBX05FV19DTEFTU19FWFBSLAoJSkFWQV9USElTX0VYUFIpOiBObyBsb25nZXIgZGVmaW5lZCBoZXJlLiBTZWUgamF2YS10cmVlLmgKCShRVUFMX0RFQ0xfVFlQRSk6IE5ldyBtYWNyby4KCShQQVJBTVMpOiBNYWNybyBkZWZpbml0aW9uIHJlbW92ZWQuCgkqIHBhcnNlLnk6ICh5eXBhcnNlLCB5eWVycm9yKTogVXNlIFBST1RPIGluc3RlYWQgb2YgUEFSQU1TLgoJKHJldHVybl9zdGF0ZW1lbnQ6KTogQ2FsbCBidWlsZF9yZXR1cm4uCgkoZmllbGRfYWNjZXNzOik6IENhbGwgbWFrZV9xdWFsaWZpZWRfcHJpbWFyeSBpbiBzdWIgcnVsZS4KCShtZXRob2RfaW52b2NhdGlvbjopOiBCdWlsZCBtZXRob2QgaW52b2NhdGlvbiBhbmQgY2FsbAoJbWFrZV9xdWFsaWZpZWRfcHJpbWFyeSB3aGVuIHByb2Nlc3NpbmcgcHJpbWFyaWVzLgoJKGphdmFfY29tcGxldGVfY2xhc3MpOiBTZXQgSURFTlRJRklFUl9TSUdOQVRVUkVfVFlQRSBieSBjYWxsaW5nCglnZXRfdHlwZV9mcm9tX3NpZ25hdHVyZS4KCShqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kKTogRXh0cmEgaW50ZWdlciAwIGFyZ3VtZW50IHdoZW4gY2FsbGluZwoJbG9va3VwX2phdmFfbWV0aG9kMi4KCShsb29rdXBfamF2YV9pbnRlcmZhY2VfbWV0aG9kMik6IEV4dHJhIG1ldGhvZCBERUNMIGFyZ3VtZW50IHdoZW4KCWNhbGxpbmcgbG9va3VwX2phdmFfaW50ZXJmYWNlX21ldGhvZDIuCgkoamF2YV9tZXRob2RfYWRkX3N0bXQpOiBTZXQgVFJFRV9TSURFX0VGRkVDVFMgb24gbmV3bHkgY3JlYXRlZAoJQ09NUE9VTkRfRVhQUiBub2RlLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IExheW91dCBjdXJyZW50IGNsYXNzIGlmZiBub3QKCWFscmVhZHkgZG9uZS4gRG9uJ3QgcHJvY2VzcyBpbnRlcmZhY2UncyBtZXRob2RzLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IFVzZSBzdXBlciBjbGFzcyBvbmx5IGlmIGl0CglleGlzdHMuIFVzZSBjdXJyZW50IGNsYXNzIG90aGVyd2lzZS4KCShtYWtlX3F1YWxpZmllZF9wcmltYXJ5KTogTmV3IGZ1bmN0aW9uLgoJKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogUHJvY2VzcyBxdWFsaWZpZWQgZXhwcmVzc2lvbiBvcgoJZXhwcmVzc2lvbiBmcm9tIHByaW1hcnkgdGhlIHNhbWUgd2F5LgoJKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogVHdvIGxhc3QgYXJndW1lbnRzIHRvCglyZXNvbHZlX2ZpZWxkX2FjY2VzcyBhcmUgbm93IE5VTExfVFJFRXMuCgkocmVzb2x2ZV9maWVsZF9hY2Nlc3MpOiBOZXcgdmFyaWFibGUgaXNfc3RhdGljLiBMb2NhbCBmaWVsZCBtdXN0CgliZSBERUNMcy4gaXNfc3RhdGljIGNvbXB1dGVkIG9uIGZpZWxkIERFQ0xzIG9ubHkuIEFwcGVuZCBjb2RlIGluCgl3aGVyZV9mb3VuZCB0byB0aGUgZmllbGQgYWNjZXNzIGlmIG5lY2Vzc2FyeS4gVXNlIFFVQUxfREVDTF9UWVBFCgl0byBpbml0aWFsaXplIGZpZWxkX3R5cGUuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogTmV3IGxvY2FsIHZhcmlhYmxlLAoJcHJldmlvdXNfY2FsbF9zdGF0aWMgYW5kIGlzX3N0YXRpYy4gSGFuZGxlIHByaW1hcmllcyB3aXRoIGZ1bmN0aW9uCgljYWxscywgY2FzdHMsIGFycmF5IHJlZmVyZW5jZXMgYW5kIGB0aGlzJy4gYHN1cGVyJyBub3cgaGFuZGxlZCBhcwoJYChzdXBlcl9jbGFzcyl0aGlzJy4gVXNlIGlzX3N0YXRpYyB0byBjbGFyaWZ5IGJvb2xlYW4gZXhwcmVzc2lvbnMuCglBZGRlZCBjb2RlIHRvIGhhbmRsZSBjYXNlIHdoZXJlIGEgcHJvcGVyIGhhbmRsZSBpcyByZXF1aXJlZCB0bwoJYWNjZXNzIGEgZmllbGQuIFVzZSBRVUFMX0RFQ0xfVFlQRSB3aGVyZSBhcHBsaWNhYmxlLgoJKG1heWJlX2FjY2Vzc19maWVsZCk6IE5ldyBmdW5jdGlvbi4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbl9zdG10KTogTmV3IGFyZ3VtZW50cyBwcmltYXJ5LCB3aGVyZSwKCWlzX3N0YXRpYy4gQnJhbmNoIG9mIHRoZSB0ZXN0IG9uIENBTExfRVhQUl9GUk9NX1BSSU1BUllfUAoJZGVsZXRlZC4gVXNlIGB3aGVyZScgYXMgYSB0eXBlIHRvIHNlYXJjaCBmcm9tIGlmIHNwZWNpZmllZC4gQ2hlY2sKCWZvciBzdGF0aWMgbWV0aG9kIHJlZmVyZW5jZSB3aGVyZSBmb3JiaWRkZW4uIEFwcGVuZCBwcmltYXJ5IG9yCgljdXJyZW50X3RoaXMgdG8gdGhlIGFyZ3VtZW50IGxpc3QgaWYgbm90IGNhbGxpbmcgY29uc3RydWN0b3Igbm9yCglzdGF0aWMgbWV0aG9kcy4KCShjaGVja19mb3Jfc3RhdGljX21ldGhvZF9yZWZlcmVuY2UpOiBOZXcgZnVuY3Rpb24uCgkocGF0Y2hfaW52b2tlKTogTGF5b3V0IHRoZSBjbGFzcyBvbiB3aGljaCBuZXcgaXMgZG9uZSBpZgoJbmVjZXNzYXJ5LgoJKGxvb2t1cF9tZXRob2RfaW52b2tlKTogQ2hhbmdlZCBmb3JtYXQgdG8gcmVwb3J0IGVycm9ycyBvbgoJbWV0aG9kcy4KCShxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogTmV3IGxvY2FsIHZhcmlhYmxlIHRoaXNfZm91bmQuIE5vdwoJaGFuZGxlIHRoaW5ncyBmcm9tIHByaW1hcmllcy4gTWV0aG9kIGNhbGwgYXJlIGNvbnNpZGVyZWQKCWV4cHJlc3Npb24gbmFtZXMuCgkoaWRlbnRpY2FsX3N1YnBhdGhfcCk6IE5VTExfVFJFRSBhcmd1bWVudHMgdG8gYnJlYWtkb3duX3F1YWxpZmllZAoJY2hhbmdlZCBpbnRvIE5VTExzLgoJKG5vdF9pbml0aWFsaXplZF9hc19pdF9zaG91bGRfcCk6IENvbXBseSB3aXRoIHRoZSBuZXcgREVDTF9QLgoJKGphdmFfY29tcGxldGVfdHJlZSk6IE5ldyBjYXNlIGZvIFJFVFVSTl9FWFBSLiBQcm9jZXNzIGZ1bmN0aW9uCgljYWxsIGFyZ3VtZW50cyBpbiBzZXBhcmF0ZSBmdW5jdGlvbi4KCShjb21wbGV0ZV9mdW5jdGlvbl9hcmd1bWVudHMpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfbWV0aG9kX2ludm9jYXRpb24pOiBEb24ndCB1c2UgQ0FMTF9FWFBSX0ZST01fUFJJTUFSWV9QCglhbnltb3JlLgoJKHBhdGNoX2Fzc2lnbm1lbnQpOiBUYWtlIHRoZSByZXR1cm4gZnVuY3Rpb24gc2xvdCBpbnRvIGFjY291bnQgYXMKCWEgUkhTLiBEaXN0aW5ndWlzaCBhc3NpZ25tZW50IGZyb20gYSByZXR1cm4uCgkodmFsaWRfcmVmX2Fzc2lnbmNvbnZfY2FzdF9wKTogVXNlIGJ1aWxkX2phdmFfYXJndW1lbnRfc2lnbmF0dXJlCgl3aGVuIGNoZWNraW5nIG1ldGhvZHMgaW4gaW50ZXJmYWNlcy4KCShyZXNvbHZlX3R5cGVfZHVyaW5nX3BhdGNoKTogTlVMTCBhcmd1bWVudCB0byB1bnJlc29sdmVfdHlwZV9wCglpbnN0ZWFkIG9mIE5VTExfVFJFRS4KCShwYXRjaF9uZXdhcnJheSk6IEZpeGVkIHR5cG8gaW4gY29tbWVudC4KCShidWlkX3RoaXMpOiBCdWlsZCBhIFdGTCB3aXRoIGBrd190aGlzJyBpbnN0ZWFkIG9mIGEgRklFTERfREVDTC4KCShidWlsZF9yZXR1cm4sIHBhdGNoX3JldHVybik6IE5ldyBmdW5jdGlvbnMuCgkqIHR5cGVjay5jIChsb29rdXBfamF2YV9jb25zdHJ1Y3Rvcik6IEZpeGVkIHR5cG8gaW4gY29tbWVudC4KCjE5OTgtMDctMjEgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY29uc3RhbnRzLmMgKGZpbmRfbmFtZV9hbmRfdHlwZV9jb25zdGFudCwgZmluZF9maWVsZHJlZl9pbmRleCwKCWZpbmRfbWV0aG9kcmVmX2luZGV4KTogIE5ldyBtZXRob2RzLgoJKiBleHByLmMgKGJ1aWxkX2ludm9rZV9ub25faW50ZXJmYWNlKTogIElmIGZsYWdfZW1pdF9jbGFzc19maWxlcywKCWp1c3QgcmV0dXJuIGdpdmVuIG1ldGhvZC4gIEFsc28sIHJlbmFtZSB0byBidWlsZF9rbm93bl9tZXRob2RfcmVmLgoJKGV4cGFuZF9pbnZva2UpOiAgUmVuYW1lIGNhbGwgdG8gYnVpbGRfaW52b2tlX25vbl9pbnRlcmZhY2UuCgkqIGphdmEtdHJlZS5oLCBwYXJzZS5oOiAgVXBkYXRlIHByb3RvdHlwZS4KCSogcGFyc2UueSwgZGVjbC5jLCBqY2YtcGFyc2UuYzogIFN1cHByZXNzIGNhbGxzIHRvIGJhY2stZW5kIGZ1bmN0aW9ucwoJKHN1Y2ggYXMgZXhwYW5kX2V4cHJfc3RtdCkgaWYgZmxhZ19lbWl0X2NsYXNzX2ZpbGVzLgoJKiBqY2Ytd3JpdGUuYyAoUkVTRVJWRSwgT1AxLCBPUDIsIE9QNCwgTk9URV9QVVNILCBOT1RFX1BPUCwKCVNUQUNLX1RBUkdFVCwgSUdOT1JFX1RBUkdFVCk6ICBOZXcgbWFjcm9zLgoJKGNvZGVfYnVmZmVyLCBjb2RlX3B0ciwgY29kZV9saW1pdCwgY29kZV9TLCBjb2RlX1NQX21heCk6ICBOZXcgZ2xvYmFscy4KCShnZW5lcmF0ZV9ieXRlY29kZV9pbnNuKTogIE5ldyBmdW5jdGlvbiB0byBnZW5lcmF0ZSBtZXRob2QncyBieXRlY29kZS4KCShnZW5lcmF0ZV9jbGFzc2ZpbGUpOiAgTm9kZSBnZW5lcmF0ZSBDb2RlIGF0dHJpYnV0ZSBmb3IgYSBtZXRob2QuCgkoY29kZV9idWZmZXJfZ3JvdywgcHVzaF9jb25zdGFudDEsIHB1c2hfY29uc3RhbnQyLCBwdXNoX2ludF9jb25zdCwKCXB1c2hfbG9uZ19jb25zdCwgZmllbGRfb3AsIGFkanVzdF90eXBlZF9vcCwgbWF5YmVfd2lkZSk6CglOZXcgZnVuY3Rpb25zIHVzZWQgYnkgZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbi4KCgkqIHR5cGVjay5jIChzaWduYXR1cmVfaW5jbHVkZV9yZXR1cm4pOiAgUmVtb3ZlIHZhcmlhYmxlLgoJKHB1c2hfamF2YV9hcmd1bWVudF9zaWduYXR1cmUsIGJ1aWxkX2phdmFfYXJndW1lbnRfc2lnbmF0dXJlKTogIE5ldy4KCShidWlsZF9qYXZhX3NpZ25hdHVyZSk6ICBVc2UgcHVzaF9qYXZhX2FyZ3VtZW50X3NpZ25hdHVyZS4KCSogcGFyc2UueTogIFVzZSBidWlsZF9qYXZhX2FyZ3VtZW50X3NpZ25hdHVyZSBpbnN0ZWFkIG9mIGZpZGRsaW5nCgl3aXRoIHNpZ25hdHVyZV9pbmNsdWRlX3JldHVybi4KCjE5OTgtMDctMTcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChwcmludF9jX2RlY2wpOiBBbHdheXMgZ2VuZXJhdGUgSkFycmF5PD4qIGZvciBhcnJheQoJdHlwZXMuCgoJKiBNYWtlZmlsZS5pbiAoYWxsLmluZGlyZWN0KTogQWRkZWQgZ2phdmFoJChleGVleHQpLgoJKGdqYXZhaCQoZXhlZXh0KSk6IEFkZGVkICQoZXhlZXh0KS4KCShjbGVhbik6IExpa2V3aXNlLgoKMTk5OC0wNy0xNiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3MpOiBDYWxsIHRvIGphdmFfbGF5b3V0X3BhcnNlZF9jbGFzcyByZXBsYWNlCglieSBzYWZlX2xheW91dF9jbGFzcy4KCSogZXhwci5jIChidWlsZF9qYXZhX2FycmF5X2xlbmd0aF9hY2Nlc3MpOiBSZW1vdmVkIHN0YXRpYyBzdG9yYWdlCgljbGFzcyBpbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4KCShidWlsZF9qYXZhX2FycmF5bnVsbF9jaGVjayk6IExpa2V3aXNlLgoJQWxzbyBmaXhlZCB0eXBvcyBpbiB0d28gY29tbWVudHMuCgkqIGxleC5jIChqYXZhX2luaXRfbGV4KTogSW5pdGlhbGl6ZSBzdGF0aWMgZ2xvYmFsIGt3X2xlbmd0aC4KCShqYXZhX2xleCk6IFVzZSBCVUlMRF9PUEVSQVRPUiBvbiBSRVRVUk5fVEsuCgkqIGxleC5oIChKQVZBX0ZMT0FUX1JBTkdFX0VSUk9SKTogQWRkIGV4dHJhIGFyZ3VtZW50IHRvCglqYXZhX2xleF9lcnJvci4KCShKQVZBX0lOVEVHUkFMX1JBTkdFX0VSUk9SKTogTGlrZXdpc2UuCgkqIHBhcnNlLmggKHJlc29sdmVfbm9fbGF5b3V0KTogTmV3IHN0YXRpYyBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCShnZXRfaWRlbnRpZmllcl9pbl9zdGF0aWMpOiBEZWNsYXJhdGlvbiByZW1vdmVkLgoJKGphdmFfbGF5b3V0X3BhcnNlZF9jbGFzcyk6IEZ1bmN0aW9uIG5hbWUgZGVjbGFyYXRpb24gY2hhbmdlZCB0bwoJc2FmZV9sYXlvdXRfY2xhc3MuCgkoYnVpbGRfbmV3YXJyYXlfbm9kZSwgcGF0Y2hfbmV3YXJyYXksIHJlc29sdmVfdHlwZV9kdXJpbmdfcGF0Y2gsCglub3RfaW5pdGlhbGl6ZWRfYXNfaXRfc2hvdWxkX3AsIGJ1aWxkX3RoaXMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uCglkZWNsYXJhdGlvbnMuCgkocHVzaGRlY2xfZm9yY2VfaGVhZCwgYnVpbGRfamF2YV9iaW5vcCwgaW50X2ZpdHNfdHlwZV9wLAoJYmluYXJ5X251bWVyaWNfcHJvbW90aW9uLCBzdGFiaWxpemVfcmVmZXJlbmNlLAoJYnVpbGRfZGVjbF9ub19sYXlvdXQsIGJ1aWxkX2phdmFfYXJyYXlhY2Nlc3MpOiBFeHRlcm4gZnVuY3Rpb24KCWRlY2xhcmF0aW9ucyBtb3ZlZCBpbnRvIHRoZWlyIG93biBzZWN0aW9uLgoJKGJ1aWxkX25ld2FycmF5LCBidWlsZF9hbmV3YXJyYXksIGJ1aWxkX2phdmFfYXJyYXlfbGVuZ3RoX2FjY2VzcywKCWJ1aWxkX2phdmFfYXJyYXludWxsX2NoZWNrKTogTmV3IGV4dGVybiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgkoVU5BUllfUExVU19FWFBSKTogTWFjcm8gcmVuYW1lZCBpbnRvIEpBVkFfVU5BUllfUExVU19FWFBSLgoJKEpBVkFfTkVXX0FSUkFZX0VYUFIsIEpBVkFfTkVXX0NMQVNTX0VYUFIsIEpBVkFfVEhJU19FWFBSKTogTmV3CglmYWtlIHRyZWUgY29kZXMuCgkoQ0FMTF9DT05TVFJVQ1RPUl9QKTogTmV3IG1hY3JvLgoJKiBwYXJzZS55IChrd19sZW5ndGgpOiBOZXcgc3RhdGljIGdsb2JhbCB0cmVlIG5vZGUuCgkocmV0dXJuX3N0YXRlbWVudCk6IFRhZ2dlZCA8bm9kZT4uCgkoUkVUVVJOX1RLKTogVGFnZ2VkIDxvcGVyYXRvcj4uCgkodmFyaWFibGVfZGVjbGFyYXRvcl9pZDopOiBCdWlsZCB2YXJpYWJsZSBkZWNsYXJhdGlvbiB3aXRoIGFuCgllbXB0eSBpbml0aWFsaXphdGlvbiB2YWx1ZSBpZiBhIHN5bnRheCBlcnJvciB3YXMgZm91bmQgaW4gdGhlCglpbml0aWFsaXphdGlvbiBwYXJ0IG9mIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvbi4KCShzdGF0ZW1lbnRfd2l0aG91dF90cmFpbGluZ19zdWJzdGF0ZW1lbnQ6KTogcmV0dXJuX3N0YXRlbWVudDogbm93Cgl1c2VzIHRoZSBkZWZhdWx0IHJ1bGUuCgkocmV0dXJuX3N0YXRlbWVudDopOiBUZW1wb3JhcmlseSBmaXhlZCB0byByZXR1cm4gTlVMTF9UUkVFLgoJKHByaW1hcnlfbm9fbmV3X2FycmF5Oik6IENhbGwgYnVpbGRfdGhpcyB3aGVuIFRISVNfVEsgd2FzIHBhcnNlZC4KCShjbGFzc19pbnN0YW5jZV9jcmVhdGlvbl9leHByZXNzaW9uOik6IENsYXNzIGNyZWF0aW9uIHJ1bGVzIG5vdwoJY2FsbCBidWlsZF9tZXRob2RfaW52b2NhdGlvbiB1cG9uIHJlZHVjdGlvbi4KCShhcnJheV9jcmVhdGlvbl9leHByZXNzaW9uOik6IFJ1bGVzIGNhbGwgYnVpbGRfbmV3YXJyYXlfbm9kZSB1cG9uCglyZWR1Y3Rpb24uCgkoZGltX2V4cHJzOik6IEJ1aWxkIGEgbGlzdCBvZiBkaW1lbnNpb24gZXhwcmVzc2lvbnMuCgkoZGltX2V4cHI6KTogU3RvcmUgbG9jYXRpb24gb2YgdGhlIE9TQl9USyBpbiB0aGUgZGltZW5zaW9uCglleHByZXNzaW9uIG5vZGUuCgkobWV0aG9kX2ludm9jYXRpb246KTogQWRkZWQgYSBuZXcgZXJyb3IgcnVsZS4KCShidWlsZF91bnJlc29sdmVkX2FycmF5X3R5cGUpOiBXRkwgYXJndW1lbnQgbWF5IGFsc28gYmUgYW4gYXJyYXkKCW9uIGEgcHJpbWl0aXZlIHR5cGUuIE5hbWUgb2YgdGhlIGFyZ3VtZW50IGNoYW5nZWQgdG8gcmVmbGVjdCB0aGlzLgoJKG1ldGhvZF9kZWNsYXJhdG9yKTogSW5zZXJ0IGFyZ3VtZW50IHR5cGUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUKCWFyZ3VtZW50IHR5cGUgbGlzdCBhbmQgbGF0ZXIgcmV2ZXJzZSB0aGUgbGlzdC4KCSh1bnJlc29sdmVkX3R5cGVfcCk6IEFyZ3VtZW50ICdyZXR1cm5lZCcgbWF5IGJlIG9wdGlvbmFsbHkKCU5VTExfVFJFRS4KCShqYXZhX2xheW91dF9jbGFzc19mcm9tX3NvdXJjZSk6IEZ1bmN0aW9uIHJlbmFtZWQKCXNhZmVfbGF5b3V0X2NsYXNzLgoJKHJlc29sdmVfYW5kX2xheW91dCk6IE5vdyBjYWxsIHJlc29sdmVfbm9fbGF5b3V0IGFuZAoJc2FmZV9sYXlvdXRfY2xhc3MuCgkocmVzb2x2ZV9ub19sYXlvdXQpOiBOZXcgZnVuY3Rpb24uCgkocHVyaWZ5X3R5cGVfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShjb21wbGV0ZV9jbGFzc19yZXBvcnRfZXJyb3JzKTogQ2FsbCBwdXJpZnlfdHlwZV9uYW1lIGR1cmluZyBlcnJvcgoJcmVwb3J0IG9uIGEgdHlwZSBub3QgZm91bmQuCgkocHJvY2Vzc19pbXBvcnRzKTogZXJyb3JfZm91bmQgbG9jYWwgdmFyaWFibGUgZG9lc24ndCBuZWVkIHRvIGJlCglpbml0aWFsaXplZCB0byB6ZXJvLgoJKGRlY2xhcmVfbG9jYWxfdmFyaWFibGVzKTogTmV3IGxvY2FsIHR5cGVfd2ZsLiBGaXhlZCB0eXBvIGluIGVycm9yCgltZXNzYWdlLiB0eXBlX3dmbCBhc3NpZ25lZCB0byB1bnJlc29sdmVkIHR5cGUgYW5kIHVzZWQgdG8gcmVnaXN0ZXIKCWluY29tcGxldGUgdHlwZS4gQnVpbGQgYSBXRkwgYXJvdW5kIHRoZSB2YXJpYWJsZSBpbml0aWFsaXphdGlvbgoJc3RhdGVtZW50IHNvIHRoYXQgZGVidWcgaW5mbyBjYW4gYmUgZ2VuZXJhdGVkIG9uIGl0LgoJKHNvdXJjZV9zdGFydF9qYXZhX21ldGhvZCk6IFJldmVyc2UgYXJndW1lbnQgbGlzdCBhZnRlciB0aGV5J3ZlCgliZWVuIHByb2Nlc3NlZC4KCShjdXJyZW50X3RoaXMpOiBOZXcgc3RhdGljIGdsb2JhbCB2YXJpYWJsZS4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogU2V0IGN1cnJlbnRfdGhpcyB3aGVuIGFwcHJvcHJpYXRlLgoJKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogQnVpbGQgY29ycmVjdCBzdGF0aWMgYW5kIG5vbiBzdGF0aWMKCWZpZWxkIGFjY2VzcyBiZWFyaW5nIGEgc2ltcGxlIG5hbWUuCgkocmVzb2x2ZV9maWVsZF9hY2Nlc3MpOiBSZXNvbHZlIHRoZSBsZW5ndGggZmllbGQgb2YgYXJyYXlzLiBIYW5kbGUKCWYubSgpIGNhc2VzLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uX3N0bXQpOiBTZXQgdGhlIHR5cGUgb2YgdGhlIG1ldGhvZAoJaW52b2NhdGlvbiB0byBlcnJvcl9tYXJrX25vZGUuIFRoaXMgdmFsdWUgaXMgbGF0ZXIgb3ZlcnJpZGRlbiBieSBhCgl2YWxpZCB0eXBlLCBpZiBhbnkuIERvbid0IGhhbmRsZSBxdWFsaWZpZWQgY29uc3RydWN0b3IgaW52b2NhdGlvbgoJYXMgcXVhbGlmaWVkIG1ldGhvZCBpbnZvY2F0aW9uLiBDYWxsIGxvb2t1cF9tZXRob2RfaW52b2tlIHdpdGggaXRzCgluZXcgZmxhZy4gSXQncyBubyBsb25nZXIgbmVjZXNzYXJ5IHRvIGFjY2VzcyB0aGUgc2VsZWN0ZWQgbWV0aG9kCglhcyB0aGUgdmFsdWUgb2YgYSB0cmVlIGxpc3QuIEhhbmRsZSBjb25zdHJ1Y3RvciBpbnZvY2F0aW9uLgoJKHBhdGNoX2ludm9rZSk6IFJldmVyc2UgYXJndW1lbnQgbGlzdCB3aGVuIGludm9raW5nIG5vbiBpbnRlcmZhY2UKCW1ldGhvZHMuIEluc2VydCBjYWxsIHRvIG5ldyBhcyB0aGUgZmlyc3QgYXJndW1lbnQgb2YgdGhlCgljb25zdHJ1Y3Rvci4KCShpbnZvY2F0aW9uX21vZGUpOiBSZXR1cm4gYSBJTlZPS0VfU1RBVElDIGlzIHRoZSBpbnZva2VkIG1ldGhvZCBpcwoJZGVmaW5lZCB3aXRoaW4gYSBmaW5hbCBjbGFzcy4gUmV0dXJuIElOVk9LRV9TVEFUSUMgaWYgdGhlIGludm9rZWQKCW1ldGhvZCBpcyBhIGNvbnN0cnVjdG9yLgoJKGxvb2t1cF9tZXRob2RfaW52b2tlKTogTmV3IGxjIGFyZ3VtZW50IGlzIGEgZmxhZyB0byBpbmRpY2F0ZSBhCgljb25zdHJ1Y3RvciBsb29rdXAuIE5vdyBoYW5kbGUgY29uc3RydWN0b3IgbG9va3VwLiBDaG9vc2UgdGhlIG1vc3QKCXNwZWNpZmljIG1ldGhvZCBpbiBjYXNlIHNldmVyYWwgd2VyZSBtYXRjaGluZyB0aGUgaW52b2NhdGlvbgoJcmVxdWlyZW1lbnRzLiBSZXR1cm4gYSBtZXRob2QgZGVjbCBpbnN0ZWFkIG9mIGEgdHJlZSBsaXN0IGZlYXR1cmluZwoJb25lIHNpbmdsZSBtZXRob2QgZGVjbCBlbGVtZW50LgoJKHJlZmluZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6IE5ldyBsYyBmbGFnIGFyZ3VtZW50IHRvCglpbmRpY2F0ZSB0aGF0IGEgY29uc3RydWN0b3IgaXMgYmVpbmcgbG9va2VkIHVwLgoJKG5vdF9pbml0aWFsaXplZF9hc19pdF9zaG91bGRfcCk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBOb3cgcHJvY2VzcyBmYWtlIHRyZWUgY29kZXMKCUpBVkFfTkVXX0FSUkFZX0VYUFIsIEpBVkFfTkVXX0NMQVNTX0VYUFIgYW5kIEpBVkFfVEhJU19FWFBSLiBDYWxsCglzYXZlX2V4cHIgb24gcmVzb2x2ZWQgZnVuY3Rpb24gY2FsbCBhcmd1bWVudHMuIENhc2Ugb24KCVVOQVJZX1BMVVNfRVhQUiBjaGFuZ2VkIGludG8gYSBjYXNlIG9uIEpBVkFfVU5BUllfUExVU19FWFBSLgoJKHBhdGNoX2Fzc2lnbm1lbnQpOiBMSFMgY2FuIGJlIGEgZmllbGQgYWNjZXNzIGV4cHJlc3Npb24uIFdoZW4KCWRlYWxpbmcgd2l0aCByZWZlcmVuY2UsIGxoc190eXBlIGlzIHRoZSBwcm9tb3RlZCB0eXBlIG9mIHRoZQoJcmhzX3R5cGUsIG5vdCB0aGUgUkhTLiBVc2Ugbm90X2luaXRpYWxpemVkX2FzX2l0X3Nob3VsZF9wIHdoZXJlCglhcHBsaWNhYmxlLgoJKG9wZXJhdG9yX3N0cmluZyk6IEpBVkFfVU5BUllfUExVU19FWFBSIHJlcGxhY2VzIFVOQVJZX1BMVVNfRVhQUi4KCShwYXRjaF9iaW5vcCk6IFVzZSBub3RfaW5pdGlhbGl6ZWRfYXNfaXRfc2hvdWxkX3Agd2hlcmUKCWFwcGxpY2FibGUuCgkoYnVpbGRfdW5hcnlvcCk6IEpBVkFfVU5BUllfUExVU19FWFBSIHJlcGxhY2VzIFVOQVJZX1BMVVNfRVhQUi4KCShwYXRjaF91bmFyeW9wKTogTGlrZXdpc2UuIEFuZCB1c2Ugbm90X2luaXRpYWxpemVkX2FzX2l0X3Nob3VsZF9wCgl3aGVyZSBhcHBsaWNhYmxlLgoJKHJlc29sdmVfdHlwZV9kdXJpbmdfcGF0Y2gpOiBOZXcgZnVuY3Rpb24uCgkocGF0Y2hfY2FzdCk6IENhbGwgcmVzb2x2ZV90eXBlX2R1cmluZ19wYXRjaCB0byByZXNvbHZlIHR5cGUgYW5kCglyZXBvcnQgZXJyb3IgYWNjb3JkaW5nbHkuCgkocGF0Y2hfYXJyYXlfcmVmKTogVXNlIG5vdF9pbml0aWFsaXplZF9hc19pdF9zaG91bGRfcCB3aGVyZQoJYXBwbGljYWJsZS4gQXJyYXkgYmFzZSBleHByZXNzaW9uIGlzIHNhdmVkIGJlZm9yZSBiZWluZwoJdXNlZC4gUHJvbW90ZSB0aGUgdHlwZSBvZiBhbiBhcnJheSBlbGVtZW50cyBpZiBpdCBjb250YWlucyBub24KCWJ1aWx0aW4gdHlwZXMuCgkoYnVpbGRfbmV3YXJyYXlfbm9kZSwgcGF0Y2hfbmV3YXJyYXksIGJ1aWxkX3RoaXMpOiBOZXcgZnVuY3Rpb25zLgoKMTk5OC0wNy0xNiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKHByaW50X2NfZGVjbCk6IFVURjhfR0VUIGluY3JlbWVudHMgcG9pbnRlcjsgZG9uJ3QKCWluY3JlbWVudCBpdCBpbiBgZm9yJyBzdGF0ZW1lbnQuCgkocHJpbnRfZmllbGRfaW5mbyk6IElmIG51bWJlciBpcyBpbmYgb3IgbmFuLCBkb24ndCBwcmludCBpdC4KCShwcmludF9tZXRob2RfaW5mbyk6IElmIG1ldGhvZCBuYW1lIGlzIGBkZWxldGUnLCBqdXN0IGlnbm9yZSBpdC4KCShwcmludF9jX2RlY2wpOiBTcGVjaWFsLWNhc2UganN0cmluZ0FycmF5LgoKCSogZ2phdmFoLmMgKGhlbHApOiBOZXcgZnVuY3Rpb24uCgkobm9fYXJndW1lbnQpOiBOZXcgZnVuY3Rpb24uCgkodXNhZ2UpOiBDaGFuZ2VkIHRleHQuCgkobWFpbik6IFJld3JvdGUgYXJndW1lbnQgaGFuZGxpbmcuICBOb3cgaGFuZGxlcyAtdiwgLS1oZWxwLAoJLS12ZXJzaW9uLgoJKHZlcnNpb24pOiBOZXcgZnVuY3Rpb24uCgkoZm91bmRfZXJyb3IpOiBOZXcgZ2xvYmFsLgoJKG1haW4pOiBSZXR1cm4gZm91bmRfZXJyb3IuCgkoZ2VuZXJhdGVfYWNjZXNzKTogU2V0IGZvdW5kX2Vycm9yLgoJKHByaW50X2NfZGVjbCk6IExpa2V3aXNlLgoKMTk5OC0wNy0xNSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKHByaW50X2NfZGVjbCk6IERvbid0IHByaW50ICIsIiB3aGVuIGV4YW1pbmluZyBmaWVsZC4KCVNraXAgdHlwZSBuYW1lIHdoZW4gbG9va2luZyBhdCAiW0wiIHR5cGVzLgoJKHByb2Nlc3NfZmlsZSk6IE5vdyBzdGF0aWMuCgkoZ2VuZXJhdGVfYWNjZXNzKTogTm93IHJldHVybnMgaW50LgoJKGxhc3RfYWNjZXNzX2dlbmVyYXRlZCk6IE5ldyBnbG9iYWwuCgkocHJvY2Vzc19maWxlKTogQ2xlYXIgbGFzdF9hY2Nlc3NfZ2VuZXJhdGVkOyBtYWtlIG11bHRpcGxlIHBhc3NlcwoJb3ZlciB0aGUgY2xhc3MuCgkocHJpbnRfZmllbGRfaW5mbyk6IEp1c3QgcmV0dXJuIGlmIGdlbmVyYXRlX2FjY2VzcyByZXR1cm5zIHRydWUuCgkocHJpbnRfbWV0aG9kX2luZm8pOiBMaWtld2lzZS4gIEFsc28sIGFsbG93IDxpbml0PiBmdW5jdGlvbnMgdG8KCXBhc3MgdGhyb3VnaC4KCShwcmludF9jX2RlY2wpOiBBZGRlZCBpc19pbml0IGFyZ3VtZW50LiAgUHJpbnQgY29uc3RydWN0b3JzCglwcm9wZXJseS4KCShwcmludF9jeHhfY2xhc3NuYW1lKTogVXNlIFVURjhfR0VUIHRvIGV4dHJhY3QgY2hhcmFjdGVycyBmcm9tCglzdHJpbmcuCgkocHJpbnRfYmFzZV9jbGFzc25hbWUpOiBOZXcgZnVuY3Rpb24uCgkocHJpbnRfY2xhc3NfZGVjbHMpOiBOZXcgZnVuY3Rpb24uCgkocHJvY2Vzc19maWxlKTogVXNlIGl0LgoJKHV0ZjhfY21wKTogTmV3IGZ1bmN0aW9uLgoKMTk5OC0wNy0xMyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGxhbmctb3B0aW9ucy5oOiBGb3JtYXQgY2hhbmdlZCB0byBtYXRjaCBjaGFuZ2VzIGluIGdjYy90b3BsZXYuYwoJdG8gaW1wbGVtZW50IGEgLS1oZWxwIG9wdGlvbi4KCjE5OTgtMDctMTAgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUmV2ZXJ0IGNoYW5nZSB0byBkdGFibGVfdHlwZS4KCjE5OTgtMDctMDkgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmggKENMQVNTX1ApOiAgQ2hhbmdlZCBERUNMX0xBTkdfRkxBR183IC0+IFRZUEVfTEFOR19GTEFHXzQuCgoxOTk4LTA3LTA4ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBDTEFTU19MT0FERURfUCBvbiBkdGFibGVfdHlwZS4KCgkqIGxhbmcuYyAobGFuZ19pbml0KTogRGVmYXVsdCBmbGFnX2V4Y2VwdGlvbnMgdG8gMSwgd2l0aG91dAoJY2hlY2tpbmcgdG8gc2VlIGlmIGl0J3MgMiBmaXJzdC4KCjE5OTgtMDctMDggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbnN0YW50cy5jOiBJbmNsdWRlICJzeXN0ZW0uaCIuCgkqIGRlY2wuYzogTGlrZXdpc2UuCgkqIGxhbmcuYyAoZmxhZ19uZXdfZXhjZXB0aW9ucyk6IEdldCB2aWEgZXh0ZXJuIG5vdy4KCShsYW5nX2luaXRfb3B0aW9ucyk6IE5ldyBmdW5jdGlvbnMuICBUdXJuIG9uIGZsYWdfbmV3X2V4Y2VwdGlvbnMuCgoxOTk4LTA3LTA3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGxleC5jIChqYXZhX2xleCk6IFJldHVybiAwIHdoZW4gd2Ugc2VlIGFuIGludmFsaWQgY2hhcmFjdGVyIGluCgl0aGUgaW5wdXQuCgoJKiBsZXguYyAoamF2YV9yZWFkX2NoYXIpOiBTcGVjaWZ5IGV4dHJhIGFyZ3VtZW50IHdoZW4gY2FsbGluZwoJamF2YV9sZXhfZXJyb3IuCgkoamF2YV9yZWFkX3VuaWNvZGUsIGphdmFfcGFyc2VfZW5kX2NvbW1lbnQsCglqYXZhX3BhcnNlX2VzY2FwZV9zZXF1ZW5jZSk6IExpa2V3aXNlLAoJKGphdmFfbGV4KTogU3BlY2lmeSBleHRyYSBhcmd1bWVudCB3aGVuIGNhbGxpbmcKCWphdmFfbGV4X2Vycm9yLiBUZXN0IHRoYXQgSURzIGFyZSBiZWdpbm5pbmcgd2l0aCBhIGxlZ2FsIGNoYXJhY3RlcgoJZm9yIElEcy4gSGFuZGxlIGludmFsaWQgY2hhcmFjdGVycyB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgYW5kIGEKCWNhbGwgdG8gamF2YV9sZXhfZXJyb3IuCgkoamF2YV9sZXhfZXJyb3IpOiBBZGp1c3QgY29sdW1uIHBvc2l0aW9uIGJ5IG5ldyBhcmd1bWVudAoJYGZvcndhcmQnLiBJc3N1ZSBhbiBlcnJvciBldmVuIGlmIGluIHRoZSBtaWRkbGUgb2YgcmVwb3J0aW5nIGFuCglvdGhlciBlcnJvci4KCjE5OTgtMDctMDcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiBqY2YtaW8uYyAoZmluZF9jbGFzcyk6IFplcm8gb3V0IEJVRkZFUiBiZWZvcmUgd2UgdXNlIGl0LCBzaW5jZQoJd2UgZG9uJ3QgZXhwbGljaXRseSBwdXQgYSBudWxsIHBvaW50ZXIgd2hlbiB3ZSdyZSBjb3B5aW5nIGl0LgoKMTk5OC0wNy0wNyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKHByaW50X2N4eF9jbGFzc25hbWUpOiBOZXcgZnVuY3Rpb24uCgkoc3VwZXJfY2xhc3NfbmFtZSk6IExpa2V3aXNlLgoJKHByaW50X3N1cGVyX2ZpZWxkcyk6IFJlbW92ZWQuCgkoaW5fc3VwZXIpOiBSZW1vdmVkLgoJKHByaW50X2ZpZWxkX2luZm8pOiBOZXZlciBnZW5lcmF0ZSAjZGVmaW5lcy4KCShwcmludF9jX2RlY2wpOiBDaGFuZ2VkIGdlbmVyYXRlZCB0eXBlcyB0byBtYXRjaCBKTkkuICBObyBsb25nZXIKCXByaW50IGNsYXNzIG5hbWUgYmVmb3JlIG1ldGhvZCBuYW1lLgoJKHByaW50X21ldGhvZF9pbmZvKTogUHJpbnQgInN0YXRpYyIgYmVmb3JlIHN0YXRpYyBtZXRob2RzLgoJUHJpbnQgInZpcnR1YWwiIGJlZm9yZSBub24tZmluYWwgbWV0aG9kcy4KCSh1c2FnZSk6IFVzZSBleGl0KDEpLCBub3QgZXhpdCgtMSkuCgkobWFpbik6IExpa2V3aXNlLgoJKHByaW50X2ZpZWxkX2luZm8pOiBVc2UgJS4xN2cgdG8gcHJpbnQgYSBkb3VibGUuCgkobGFzdF9hY2Nlc3MpOiBOZXcgZ2xvYmFscy4KCShwcm9jZXNzX2ZpbGUpOiBJbml0aWFsaXplIGxhc3RfYWNjZXNzLgoJKHVzYWdlKTogTm93IHN0YXRpYy4KCShBQ0NfVklTSUJJTElUWSk6IE5ldyBkZWZpbmUuCgkoZ2VuZXJhdGVfYWNjZXNzKTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X2ZpZWxkX2luZm8pOiBDYWxsIGl0LgoJKHByaW50X21ldGhvZF9pbmZvKTogTGlrZXdpc2UuICBBbHNvLCBnZW5lcmF0ZSBpbmZvcm1hdGlvbiBmb3IgYWxsCgltZXRob2RzLCBub3QganVzdCBuYXRpdmUgbWV0aG9kcy4gIFJldHVybiB2b2lkLgoJKHByaW50X2NfZGVjbCk6IFJldHVybiB2b2lkLgoJKHByaW50X2ZpZWxkX2luZm8pOiBSZXR1cm4gdm9pZC4KCjE5OTgtMDctMDIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKEpBVkFCSVNPTkZMQUdTKTogU3BlY2lmaWMgZmxhZyBmb3IgYmlzb24gd2hlbgoJcHJvY2Vzc2luZyB0aGUgamMxIGdyYW1tYXIgZmlsZS4gUHJlZml4IGJpc29uIGZ1bmN0aW9ucyBhbmQKCXZhcmlhYmxlcyB3aXRoIGphdmFfLgoJKHBhcnNlLmMpOiBEZXBlbmRlbmNpZXMgb24gcGFyc2UuaCBhbmQgbGV4LmgKCSogZXhwci5jIChidWlsZF9qYXZhX2FycmF5YWNjZXNzKTogRnVuY3Rpb24gbm93IGdsb2JhbC4KCSogamF2YS10cmVlLmg6IENvbW1lbnQgcmVvcmdhbml6ZWQgdG8gY2Fycnkgb24gcHJldmlvdXMKCWNsYXNzaWZpY2F0aW9uIGVmZm9ydC4KCShSRVNPTFZFX0VYUFJFU1NJT05fTkFNRV9QLCBSRVNPTFZFX1BBQ0tBR0VfTkFNRV9QLAoJUkVTT0xWRV9UWVBFX05BTUVfUCk6IE5ldyBmbGFncyBvbiBXRkxzLgoJKiBqY2YtcGFyc2UuYyAocGFyc2Vfc291cmNlX2ZpbGUpOiBqYXZhX3BhcnNlX3NvdXJjZV9maWxlIHJlbmFtZWQKCWphdmFfcGFyc2UgKG5ldyBwcmVmaXggamF2YV8gZ2VuZXJhdGVkIGJ5IGJpc29uKS4KCShqYXZhX2xheW91dF9wYXJzZWRfY2xhc3MsIGphdmFfcmVnaXN0ZXJfcGFyc2VkX2NsYXNzKTogRnVuY3Rpb24KCWNhbGwgcmVtb3ZlZC4KCSh5eXBhcnNlKTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBjYWxsIHRvIGluaXRfb3V0Z29pbmdfY3Bvb2wuCgkqIGxleC5jIChzdGF0aWMgdHJlZSB3Zmxfb3ApOiBWYXJpYWJsZSBkZWxldGVkLgoJKGphdmFfaW5pdF9sZXgpOiBJbml0aWFsaXplIGt3X3N1cGVyIGFuZCBrd190aGlzLiBJbml0aWFsaXplIG1vcmUKCWN0eHAgZmllbGRzIHRvIE5VTExfVFJFRS4KCShqYXZhX2xleCk6IE5vIGxvbmdlciBjcmVhdGUgV0ZMIGZvciBvcGVyYXRvcnMuIEZpbGVuYW1lIGNhY2hpbmcKCW1lY2hhbmlzbSBkZWxldGVkLiBDYWxsIEJVSUxEX09QRVJBVE9SIGZvciBgLicsICcoJywgJ1snLiBTdHJpbmdzCgljcmVhdGVkIGFzIFNUUklOR19DU1QgYW5kIGxhdGVyIGV4cGFuZGVkLiBSZW1vdmVkIGV4dHJhIGFyZ3VtZW50Cgl0byBCVUlMRF9PUEVSQVRPUiBhbmQgQlVJTERfT1BFUkFUT1IyLiBCdWlsZCBvcGVyYXRvcnMgZm9yIFRISVMKCWFuZCBTVVBFUi4KCShidWlsZF93Zmxfbm9kZSk6IFJlbW92ZWQgY29kZSBpbiBjb21tZW50cy4KCSogbGV4LmggKEJVSUxEX09QRVJBVE9SLCBCVUlMRF9PUEVSQVRPUjIpOiBObyBsb25nZXIgYnVpbGQgYSBXRkwgYnV0CglzdG9yZSB0b2tlbiBhbmQgbG9jYXRpb24gZGF0YSBpbiB0aGUgY3VycmVudCBiaXNvbiB0b2tlbi4KCSogcGFyc2UuaDogUmVtb3ZlZCBwcmUtcHJvY2Vzc29yIGJhc2VkIHN5bWJvbCBwcmVmaXhlcyBoYWNrLiBNb3ZlZAoJc3RhdGljL2V4dGVybiBmdW5jdGlvbiBkZWNsYXJhdGlvbiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLgoJKHN0cnVjdCBxdWFsaWZpY2F0aW9uKTogRGF0YSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBkZWxldGVkLgoJKFJFU09MVkVfQ0hBSU5fUkVNQUlOREVSKTogTWFjcm8gZGVmaW5pdGlvbiBkZWxldGVkLgoJKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBGdW5jdGlvbiBkZWNsYXJhdGlvbiBtb2RpZmllZC4gRnVuY3Rpb24KCW5vdyByZXR1cm5zIG5vdGhpbmcuCgkoYnVpbGRfYXJyYXlfcmVmLCBwYXRjaF9hcnJheV9yZWYsIG1ha2VfcXVhbGlmaWVkX25hbWUsCglyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUsIG1heWJlX2dlbmVyYXRlX2NsaW5pdCwKCXJlc29sdmVfZmllbGRfYWNjZXNzKTogTmV3IHN0YXRpYyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgkoYnVpbGRfamF2YV9hcnJheWFjY2Vzcyk6IE5ldyBleHRlcm4gZnVuY3Rpb24gZGVjbGFyYXRpb24uCgkoZW51bSB7IFJFU09MVkVfRVhQUkVTSU9OX05BTUUuLi59KTogRW51bSBkZWxldGVkLgoJKENBTExfRVhQUl9QUklNQVJZKTogTWFjcm8gZGVsZXRlZC4KCShFWFBSX1dGTF9RVUFMSUZJQ0FUSU9OLCBRVUFMX1dGTCwgUVVBTF9SRVNPTFVUSU9OKTogTmV3IG1hY3Jvcy4KCShzdHJ1Y3QgcGFyc2VyX2N0eHQpOiBGaWVsZCBpbml0aWFsaXplZF9maW5hbAoJcmVtb3ZlZC4gbm9uX3N0YXRpY19pbml0aWFsaXplZCwgc3RhdGljX2luaXRpYWxpemVkOiBOZXcgZmllbGRzLgoJKiBwYXJzZS55IChzdGF0aWMgdHJlZSBrd19zdXBlciwgc3RhdGljIHRyZWUga3dfdGhpcyk6IE5ldyBnbG9iYWwKCXN0YXRpYy4KCSgldW5pb24pOiB0cmVlIHdmbCBmaWVsZCBvZiBvcGVyYXRvciBtZW1iZXIgcmVwbGFjZWQgYnkgaW50Cglsb2NhdGlvbi4gV0ZMcyBhcmUgbm9uIGxvbmdlciBjcmVhdGVkIGZvciBvcGVyYXRvcnMuCgkoT1NCX1RLLCBET1RfVEssIFRISVNfVEssIFNVUEVSX1RLKTogVGFnZ2VkIDxvcGVyYXRvcj4uCgkocXVhbGlmaWVkX25hbWU6KTogTm93IGNhbGxzIG1ha2VfcXVhbGlmaWVkX25hbWUgdG8gYnVpbGQgdGhlCglpZGVudGlmaWVyLgoJKHR5cGVfZGVjbGFyYXRpb246KTogQ29uc2lkZXIgZ2VuZXJhdGluZyA8Y2xpbml0PiB3aGVuIGNsYXNzCglwYXJzaW5nIGNvbXBsZXRlZC4KCSh2YXJpYWJsZV9kZWNsYXJhdG9yOik6IERpcmVjdGx5IGJ1aWxkIGFuIGFzc2lnbm1lbnQgbm9kZSB3aGVuIHRoZQoJdmFyaWFibGUgaXMgaW5pdGlhbGl6ZWQgd2hlbiBkZWNsYXJlZC4KCSh0aGlzX29yX3N1cGVyOik6IEJ1aWxkIGEgV0ZMIGFuZCBzZXQgY3VycmVudCBsb2NhdGlvbiB3aGVuIFRISVMKCW9yIFNVUEVSIGFyZSBwYXJzZWQuCgkoZXhwcmVzc2lvbl9zdGF0ZW1lbnQ6KTogV3JhcCBzdGF0ZW1lbnQgYXJvdW5kIGEgV0ZMLgoJKHByaW1hcnlfbm9fbmV3X2FycmF5Oik6IEZpeGVkIHR5cG8uIENoYW5nZWQgdmFsdWUgcmV0dXJuZWQgYnkKCVRISVNfVEsgYmVjYXVzZSBvZiBpdHMgbmV3IHR5cGUgKHRlbXBvcmFyeSkuCgkoZGltX2V4cHJzOik6IFRlbXBvcmFyeSBmaXggYmVjYXVzZSBvZiBPU0JfVEsncyBuZXcgdHlwZS4KCShmaWVsZF9hY2Nlc3M6KTogQnVpbGQgcXVhbGlmaWVkIG5hbWUgd2l0aCBTVVBFUi4KCShtZXRob2RfaW52b2NhdGlvbjopOiBGaXhlZCByZXR1cm5lZCB2YWx1ZSBiZWNhdXNlIG9mIFNVUEVSJ3MgbmV3Cgl0eXBlLgoJKGFycmF5X2FjY2VzczopOiBVc2UgT1NCX1RLIGxvY2F0aW9uIGluZm9ybWF0aW9uLgoJKHBvc3RfaW5jcmVtZW50X2V4cHJlc3Npb246LCBwb3N0X2RlY3JlbWVudF9leHByZXNzaW9uOiwKCXVuYXJ5X2V4cHJlc3Npb246LCBwcmVfaW5jcmVtZW50X2V4cHJlc3Npb246LAoJcHJlX2RlY3JlbWVudF9leHByZXNzaW9uOiwgdW5hcnlfZXhwcmVzc2lvbl9ub3RfcGx1c19taW51czosCgljYXN0X2V4cHJlc3Npb246LCBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uOiwKCWFkZGl0aXZlX2V4cHJlc3Npb246LCBzaGlmdF9leHByZXNzaW9uOiwgcmVsYXRpb25hbF9leHByZXNzaW9uOiwKCWVxdWFsaXR5X2V4cHJlc3Npb246LCBhbmRfZXhwcmVzc2lvbjosIGV4Y2x1c2l2ZV9vcl9leHByZXNzaW9uOiwKCWluY2x1c2l2ZV9vcl9leHByZXNzaW9uOiwgY29uZGl0aW9uYWxfYW5kX2V4cHJlc3Npb246LAoJY29uZGl0aW9uYWxfb3JfZXhwcmVzc2lvbjosIGFzc2lnbm1lbnQ6KTogVXNlIG5ldyBsb2NhdGlvbi90b2tlbgoJaW5mb3JtYXRpb24gYXZhaWxhYmxlIG9uIG9wZXJhdG9ycy4KCShjcmVhdGVfY2xhc3MpOiBTZXQgc3VwZXJfZGVjbF90eXBlIHRvIE5VTExfVFJFRSB3aGVuIHByb2Nlc3NpbmcKCWphdmEubGFuZy5PYmplY3QuCgkocmVnaXN0ZXJfZmllbGRzKTogRmllbGQgaW5pdGlhbGl6YXRpb24gaXMgbm93IGEgTU9ESUZZX0VYUFIKCW5vZGUuIENoYWluIGluaXRpYWxpemF0aW9uIGNvZGUgdG8gdGhlIG1hdGNoaW5nIGxpc3RzIChhY2NvcmRpbmcKCXRvIHRoZSBmaWVsZCBkZWNsYXJhdGlvbiBtb2RpZmllcnMpLgoJKG1heWJlX2dlbmVyYXRlX2NsaW5pdCk6IE5ldyBmdW5jdGlvbi4KCShtZXRob2RfaGVhZGVyKTogRG9uJ3Qgc2V0IG1ldGhvZCdzIERFQ0xfTkFNRSB0byBhIFdGTCB3aGVuIGFkZGluZwoJbWV0aG9kcyB0byBqYXZhLmxhbmcuT2JqZWN0LgoJKHJlc29sdmVfYW5kX2xheW91dCk6IE5vdyBjYW4gcmV0dXJuIE5VTExfVFJFRSBpZiB0aGUgdHlwZQoJcmVzb2x1dGlvbiBmYWlscy4gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIGNsYXNzIERFQ0wgaW5zdGVhZCBvZiBpdHMKCVRZUEUuCgkoY2hlY2tfbWV0aG9kX3JlZGVmaW5pdGlvbik6IERvbid0IHBhdGNoIG1ldGhvZCBERUNMX05BTUUgaWYgaXQKCWJlbG9uZ3MgdG8gamF2YS5sYW5nLk9iamVjdC4KCShwcm9jZXNzX2ltcG9ydHMpOiBTaW1wbHkgYXNzaWduIGVycm9yX2ZvdW5kIHRvIHRoZSB2YWx1ZSByZXR1cm5lZAoJYnkgY2hlY2tfcGtnX2NsYXNzX2FjY2Vzcy4KCShkZWNsYXJlX2xvY2FsX3ZhcmlhYmxlcyk6IERvbid0IHVzZSB0aGVpciBpbml0IHN0YXRlbWVudHMgKGlmCglhbnkpIHdoZW4gcGFyc2luZyBlcnJvciB3ZXJlIHByZXZpb3VzbHkgZm91bmQuIFJldXNlIE1PRElGWV9FWFBSCglidWlsZCBkdXJpbmcgcGFyc2luZyBhcyBhbiBpbml0IHN0YXRlbWVudC4KCShqYXZhX21ldGhvZF9hZGRfc3RtdCk6IE5vdyByZXR1cm4gdGhlIGN1cnJlbnQgbWV0aG9kIGJvZHkuCgkoamF2YV9sYXlvdXRfcGFyc2VkX2NsYXNzLCBqYXZhX3JlZ2lzdGVyX3BhcnNlZF9jbGFzcyk6IEZ1bmN0aW9ucwoJcmVtb3ZlZC4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogSW5pdGlhbGl6ZSB0aGUgY29uc3RhbnQgcG9vbCBvbiBhCglwZXIgY2xhc3MgYmFzaXMuIExheW91dCB0aGUgY2xhc3NlcyBiZWZvcmUgZXhwYW5kaW5nIHRoZWlyIG1ldGhvZAoJYm9kaWVzLiBEb24ndCB0cnkgZXhwYW5kIGFydGlmaWNpYWwgY29uc3RydWN0b3IgY29kZSBpZiBlcnJvciB3ZXJlCglmb3VuZC4gTWFrZSB0aGUgY2xhc3NlcyBkYXRhIGFuZCByZWdpc3RlciB0aGVtIGlmIG5vIGVycm9yIHdlcmUKCWZvdW5kLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IFJldHJpZXZlIGFuIGFydGlmaWNpYWwgY29uc3RydWN0b3IKCWFyZ3VtZW50IGxpc3QgYmVmb3JlIGVudGVyaW5nIGl0cyBib2R5LiBBc3NpZ24gdGhlIHRvcCBibG9jayB0bwoJdGhlIGFydGlmaWNpYWwgY29uc3RydWN0b3IgZnVuY3Rpb24gYm9keSBhbmQgc2V0IHR5cGVzIG9mIGRlY2xhcmVkCglibG9ja3MgYW5kIGNvbXBvdW5kIHN0YXRlbWVudHMgdG8gdm9pZC4gV2FsayBtZXRob2QgYm9keSBpZiBub3QgYW4KCWFydGlmaWNpYWwgY29uc3RydWN0b3IuCgkobWFrZV9xdWFsaWZpZWRfbmFtZSwgY3V0X2lkZW50aWZpZXJfaW5fcXVhbGlmaWVkKTogTmV3IGZ1bmN0aW9ucy4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IEZpeGVkIGNvbW1lbnRzLiBTYXZlL3Jlc3RvcmUgdGhlCgljdXJyZW50IGNsYXNzIENMQVNTX0xPQURFRF9QIGZsYWcgdmFsdWUuIEJ1aWxkIG5vbiBxdWFsaWZpZWQKCXN0YXRpYyBmaWVsZCBhY2Nlc3MgYW5kIGhhbmRsZSBxdWFsaWZpZWQgZXhwcmVzc2lvbiBuYW1lcy4KCShyZXNvbHZlX2ZpZWxkX2FjY2VzcywgcmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogTmV3CglmdW5jdGlvbnMuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb25fc3RtdCk6IFVzZSB0aGUgbmV3IGV4cHJlc3Npb24gcmVzb2x1dGlvbgoJc2NoZW1lLCBjYWxsaW5nIHJlc29sdmVfZmllbGRfYWNjZXNzIHdoZW4gdGhlIGZ1bmN0aW9uIGNhbGwgaXMKCXJlc29sdmVkIGFzIGFuIGV4cHJlc3Npb24uCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IEZ1bmN0aW9uIHJld3JpdHRlbiB0byB3b3JrIG9uIHF1YWxpZmllZAoJZXhwcmVzc2lvbiBwcm9kdWNlZCBieSBtYWtlX3F1YWxpZmllZF9uYW1lLgoJKGphdmFfY29tcGxldGVfdHJlZSk6IFByb21vdGUgdHlwZSB3aGVuIGZ1bmN0aW9uJ3MgYXJndW1lbnQgYXJlCglSRUNPUkRfVFlQRXMuIFdoaWxlIHByb2Nlc3NpbmcgdGhlIE1PRElGWV9FWFBSIGNhc2U6IGRvbid0IHBhdGNoCgl0aGUgYXNzaWdubWVudCB0byBkaXNjb3ZlciBmdXJ0aGVyIGVycm9ycyBpZiBSSFMgaXMgYSBleHByZXNzaW9uCgluYW1lIHRoYXQgZmFpbHMgdG8gZXZhbHVhdGUuIERlY2xhcmUgTEhTIGluaXRpYWxpemVkIGV2ZW4gdGhvdWdoCgl0aGUgYXNzaWdubWVudCBmYWlsZWQuIERvbid0IHVzZSB0aGUgbG9jYXRpb24gdmFyaWFibGUgYW5kIHJlbW92ZWQKCWV4dHJhIGFyZ3VtZW50IGluIHBhdGNoIGZ1bmN0aW9uIGNhbGxzLiBOb3cgaGFuZGxlIHRoZSBBUlJBWV9SRUYKCWNhc2UgYW5kIGJ1aWxkIGludGVybmFsIHN0cmluZyByZXByZXNlbnRhdGlvbiB3aGVuIFNUUklOR19DU1RzIGFyZQoJd2Fsa2VkLgoJKGJ1aWxkX21ldGhvZF9pbnZvY2F0aW9uKTogRG9uJ3Qgd3JhcCBmdW5jdGlvbiBjYWxsIGFyb3VuZCBhIFdGTC4KCShidWlsZF9hc3NpZ25tZW50KTogTGlrZXdpc2UuIFVzZSB0aGUgb3BlcmF0b3IgbG9jYXRpb24KCWluZm9ybWF0aW9uLgoJKHBhdGNoX2Fzc2lnbm1lbnQpOiBIYW5kbGUgYXJyYXkgYWNjZXNzIExIU3MuIEhhbmRsZSBlcnJvcgoJcHJvdmVuYW5jZSwgcmVzdWx0aW5nIGluIGEgYmV0dGVyIGVycm9yIHJlcG9ydC4KCShidWlsZF9iaW5vcCk6IFVzZSBvcF9sb2NhdGlvbiBmcm9tIG9wZXJhdG9yIGFzIGJpbm9wIGxvY2F0aW9uCglpbmZvcm1hdGlvbi4KCShidWlsZF91bmFyeW9wLCBidWlsZF9pbmNkZWMsIGJ1aWxkX2Nhc3QpOiBMaWtld2lzZS4KCShwYXRjaF9iaW5vcCk6IEV4dHJhY3QgbG9jYXRpb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZS4gRml4ZWQKCXR5cG8gaW4gZXJyb3IgbWVzc2FnZS4KCShwYXRjaF91bmFyeV9vcCk6IEV4dHJhY3QgbG9jYXRpb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZS4KCShidWlsZF9hcnJheV9yZWYsIHBhdGNoX2FycmF5X3JlZik6IE5ldyBmdW5jdGlvbnMuCgoxOTk4LTA3LTAxICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9qYXZhX0lOU1RBTkNFT0YpOiBDaGFuZ2VkIGNhbGxpbmcgY29udmVudGlvbiB0bwoJbWF0Y2ggX0p2X0lzSW5zdGFuY2VPZi4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFVzZSBfSnZfTmV3QXJyYXksIG5vdAoJc29mdF9uZXdhcnJheS4gIFVzZSBfSnZfSXNJbnN0YW5jZU9mLCBub3Qgc29mdF9pbnN0YW5jZW9mLgoKMTk5OC0wNi0zMCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEZ1bmN0aW9ucyBhcmUgbm93IG5hbWVkCglfSnZfTW9uaXRvckVudGVyIGFuZCBfSnZfTW9uaXRvckV4aXQsIGFuZCByZXR1cm4gamludC4KCjE5OTgtMDYtMjkgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmggKGxvYWRfY2xhc3MpOiAgQWRkIHByb3RvdHlwZS4KCSogY2xhc3MuYyAoaXNfY29tcGlsZWRfY2xhc3MpOiAgQWRkIG1pc3NpbmcgYXJnIHRvIGxvYWRfY2xhc3MuCgkqIGV4cHIuYyAoZXhwYW5kX2phdmFfTkVXKTogIENhbGwgbG9hZF9jbGFzcy4KCSogcGFyc2UueSAocHJvY2Vzc19pbXBvcnQpOiAgUmVtb3ZlZCBib2d1cyB1c2Ugb2Ygdm9pZCByZXR1cm4gdmFsdWUuCgoxOTk4LTA2LTI1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYywgamF2YS10cmVlLmggKHNvZnRfYXRocm93X25vZGUpOiAgUmVuYW1lZCB0byBzb2Z0X25vZGUuCglGdW5jdGlvbiBuYW1lIGlzICJfSnZfVGhyb3ciIGluc3RlYWQgb2YgInNvZnRfYXRocm93Ii4KCSogZGVjbC5jLCBqYXZhLXRyZWUuaCAoc29mdF9uZXdfbm9kZSk6ICBSZW5hbWVkIHRvIGFsbG9jX29iamVjdF9ub2RlLgoJRnVuY3Rpb24gbmFtZSBpcyAiX0p2X0FsbG9jT2JqZWN0IiBpbnN0ZWFkIG9mICJzb2Z0X25ldyIuCglUYWtlcyBhbiBleHRyYSBwYXJhbWV0ZXIgKG9iamVjdCBzaXplKS4KCSogZXhwci5jOiAgVXBkYXRlIGNhbGxzLgoKMTk5OC0wNi0yNCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBsZXguYyAoamF2YV9nZXRfbGluZV9jb2wpOiAgSGFuZGxlIGVuZC1vZi1maWxlLgoJKiBleGNlcHQuYyAoZXhwYW5kX2VuZF9qYXZhX2hhbmRsZXIpOiAgSGFuZGxlIG51bGwgdHlwZSAoaS5lLiBmaW5hbGx5KS4KCjE5OTgtMDYtMjQgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIGxhbmcuYyAobGFuZ19pbml0KTogTWFrZSAtZmV4Y2VwdGlvbnMgdGhlIGRlZmF1bHQuCgkqIGV4Y2VwdC5jIChtYXliZV9zdGFydF90cnksIG1heWJlX2VuZF90cnkpOiBEb24ndCBkbyBhbnl0aGluZyBpZgoJZXhjZXB0aW9uIGhhbmRsaW5nIGlzIG5vdCB0dXJuZWQgb24uCgoxOTk4LTA2LTIzICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBsYW5nLmMgKGZsYWdfbmV3X2V4Y2VwdGlvbnMpOiBNYWtlIHRoaXMgdGhpcyBkZWZhdWx0LgoJKiBkZWNsLmMgKGVuZF9qYXZhX21ldGhvZCk6IENhbGwgZW1pdF9oYW5kbGVycy4KCSogZXhjZXB0LmMgKG1ldGhvZF9pbml0X2V4Y2VwdGlvbnMpOiBTZXQgbGFuZ3VhZ2UgY29kZSBhbmQgdmVyc2lvbi4KCShleHBhbmRfc3RhcnRfamF2YV9oYW5kbGVyKTogRW5hYmxlIGV4Y2VwdGlvbiwgYW5kIGNhbGwKCWV4cGFuZF9laF9yZWdpb25fc3RhcnQuCgkoZXhwYW5kX2VuZF9qYXZhX2hhbmRsZXIpOiBFbmFibGUgZXhjZXB0aW9uLCBhbmQgc2V0IHVwIGNhdGNoIGJsb2Nrcy4KCShlbWl0X2hhbmRsZXJzKTogTmV3IHJvdXRpbmUgdG8gZ2VuZXJhdGUgdGhlIHNhdmVkIGhhbmRsZXJzLgoJKiBqYXZhLWV4Y2VwdC5oIChlbWl0X2hhbmRsZXJzKTogQWRkIHByb3RvdHlwZS4KCjE5OTgtMDYtMTIgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCVdlIHVzZWQgdG8gaGF2ZSB0aHJlZSBkaWZmZXJlbnQgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBjb25zdGFudCBwb29sOgoJdGhlIENQb29sIHN0cnVjdHVyZSwgdGhlIHRyZWVfY29uc3RhbnRfcG9vbCwgYW5kIHRoZSBjb25zdHJ1Y3R1cmVzCgl1c2VkIHRvIGJ1aWxkIHRoZSBDbGFzcyBvYmplY3QgKHdoaWNoIG1heSBuZWVkIGNsYXNzIGFuZCBzdHJpbmcKCWNvbnN0YW50cykgaW4gY29tcGlsZWQgY29kZS4gIE5vbmUgd2VyZSBhcHByb3ByaWF0ZSBmb3IgY29tcGlsaW5nCgl0byAuY2xhc3MgZmlsZXMsIHNvIEkgZGlkIGEgbWFqb3Igb3ZlcmhhdWwuCgoJRmlyc3QsIHRoZSB0cmVlX2NvbnN0YW50X3Bvb2wgYXJyYXkgd2FzIHJlbW92ZWQuICBUaGluZ3Mgd2VyZQoJbW9kaWZpZWQgdG8gdGhlIENQb29sIHN0cnVjdHVyZSBpbiB0aGUgSkNGIGNvdWxkIGJlIHVzZWQuCglTZWNvbmQsIGEgImNhcGFjaXR5IiBmaWVsZCB3YXMgYWRkZWQgdG8gdGhlIENQb29sLCBhbmQgZnVuY3Rpb25zCgl3cml0dGVuIHRvIHNlYXJjaCBmb3IgYSBtYXRjaGluZyBjb25zdGFudCwgYWRkaW5nIG9uZSBpZiBub3QgZm91bmQuCglUaGUgY29kZSB0aGF0IGdlbmVyYXRlZCB0aGUgQ2xhc3Mgb2JqZWN0IHdhcyBjaGFuZ2VkIHRvIHVzZSBhIENQb29sLgoJVGhlIGFjdHVhbCBUUkVFX0xJU1RzIHVzZWQgdG8gYnVpbGQgdGhlIENPTlNUUlVDVE9ScyB1c2VkIGZvcgoJdGhlIHN0YXRpYyBDbGFzcyBvYmplY3QgYXJlIG5vdyBvbmx5IGluIGJ1aWxkX2NvbnN0YW50c19jb25zdHJ1Y3Rvci4KCUZpbmFsbHksIEkgd3JvdGUgY29kZSB3aGljaCBjYW4gZ2VuZXJhdGUgYSAuY2xhc3MgZmlsZSAoaW5jbHVkaW5nIGl0cwoJY29uc3RhbnQgcG9vbCkgZnJvbSB0aGUgUkVDT1JEX1RZUEUgb2YgYSBjbGFzcy4gIFRoaXMgaXMgYSBiaWcgc3RlcAoJb24gdGhlIHdheSB0byBjb21waWxpbmcgSmF2YSBzb3VyY2UgaW50byAuY2xhc3MgZmlsZXMuCgoJKiBqY2Ytd3JpdGUuYzogIE5ldyBmaWxlLiBXcml0ZXMgb3V0IGEgUkVDT1JEX1RZUEUgYXMgYSAuY2xhc3MgZmlsZS4KCSogTWFrZWZpbGUuaW4gKEpBVkFfT0JKUyk6ICBBZGRlZCBqY2Ytd3JpdGUuby4KCgkqIGphdmEtdHJlZS5oIChDUE9PTF9VVEYsIENPTlNUQU5UX1Jlc29sdmVkRmxhZywKCUNPTlNUQU5UX1Jlc29sdmVkU3RyaW5nLCBDT05TVEFOVF9SZXNvbHZlZENsYXNzKTogIE5ldyBtYWNyb3MuCgkoTkFNRV9BTkRfVFlQRV9OQU1FLCBOQU1FX0FORF9UWVBFX1NJR05BVFVSRSwgQ09NUE9ORU5UX1JFRl9OQU1FLAoJQ09NUE9ORU5UX1JFRl9OQU1FX0FORF9UWVBFLCBDT01QT05FTlRfUkVGX1NJR05BVFVSRSk6IFJlZGVmaW5lZC4KCShDT01QT05FTlRfUkVGX0NMQVNTKTogIFJlcGxhY2VkIGJ5IENPTVBPTkVOVF9SRUZfQ0xBU1NfSU5ERVguCgkobGFuZ190eXBlKTogIFJlbW92ZWQgY29uc3RhbnRfcG9vbCBmaWVsZC4KCSogamNmLmggKENQb29sKTogIFJlbmFtZWQgc2l6ZSB0byBjb3VudC4gIEFkZGVkIGZpZWxkIGNhcGFjaXR5LgoJKENQT09fQ09VTlQsIENQT09MX1VJTlQsIENQT09MX1VTSE9SVDEsIENQT09MX1VTSE9SVDIsCglDUE9PTF9GSU5JU0gsIENQT09MX0lOSVQsIENQT09MX1JFSU5JVCk6ICBOZXcgbWFjcm9zLgoJUmV3cml0ZSBzb21lIG9mIHRoZSBvbGQgSkNGX1hYWCBpbiB0ZXJtcyBvZiBDUE9PTF9YWFggbWFjcm9zLgoKCSogY29uc3RhbnRzLmMgKGN1cnJlbnRfY29uc3RhbnRfcG9vbF90YWdzLCBjdXJyZW50X2NvbnN0YW50X3Bvb2xfZGF0YSwKCWN1cnJlbnRfY29uc3RhbnRfcG9vbF9sZW5ndGgpLCBqYXZhLXRyZWUuaDogUmVwbGFjZWQgYnkgb3V0Z29pbmdfY3Bvb2wuCgkqIGNvbnN0YW50cy5jIChidWlsZF9jb25zdGFudHNfY29uc3RydWN0b3IpOiAgVXNlIG5ldyBvdXRnb2luZ19jcG9vbC4KCShzZXRfY29uc3RhbnRfZW50cnksIGZpbmRfY29uc3RhbnQxLCBmaW5kX2NvbnN0YW50MiwKCWZpbmRfY2xhc3NfY29uc3RhbnQsIGNvdW50X2NvbnN0YW50X3Bvb2xfYnl0ZXMsIHdyaXRlX2NvbnN0YW50X3Bvb2wsCglmaW5kX3V0ZjhfY29uc3RhbnQsIGZpbmRfY2xhc3Nfb3Jfc3RyaW5nX2NvbnN0YW50KTogIE5ldyBmdW5jdGlvbnMuCgoJKiBqY2YtcGFyc2UuYyAobG9hZF9jbGFzcyk6ICBEb24ndCBzYXZlL3Jlc3RvcmUgdHJlZS1jb25zdGFudF9wb29sLgoJKGdldF9jb25zdGFudCk6ICBVc2UgY3VycmVudF9qY2YuY3Bvb2wgaW5zdGVhZCBvZiB0cmVlX2NvbnN0YW50X3Bvb2wuCgkoZ2l2ZV9uYW1lX3RvX2NsYXNzLCBnZXRfY2xhc3NfY29uc3RhbnQpOiAgTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jLCBqYXZhLXRyZWUuaCAodHJlZV9jb25zdGFudF9wb29sKTogIFJlbW92ZWQuCgkoZ2V0X25hbWVfYW5kX3R5cGVfY29uc3RhbnQsIGdldF9yZWZfY29uc3RhbnQpOiAgUmVtb3ZlZC4KCSogcGFyc2UuaCAocGFyc2VyX2N0eHQpOiAgUmVtb3ZlIGZpZWxkIHRyZWVfY29uc3RhbnRfcG9vbC4KCSogcGFyc2UueTogIERvbid0IHNhdmUvcmVzdG9yZSB0cmVlX2NvbnN0YW50X3Bvb2wuCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6ICBVcGRhdGUgZm9yIG5ldyBhcHByb2FjaC4KCSogZXhwci5jIChleHBhbmRfaW52b2tlLCBleHBhbmRfamF2YV9maWVsZF9vcCk6IExpa2V3aXNlLgoKCSogbGFuZy1vcHRpb25zLmg6ICBBZGRlZCAtZmVtaXQtY2xhc3MtZmlsZSwgLWZlbWl0LWNsYXNzLWZpbGVzLgoJKiBsYW5nLmMgKGZsYWdfZW1pdF9jbGFzc19maWxlcyksIGphdmEtdHJlZS5oOiAgTmV3IGZsYWcuCgkobGFuZ19mX29wdGlvbnMpOiAgQWRkZWQgImVtaXQtY2xhc3MtZmlsZShzKSIuCgoJKiBleHByLmMgKGJ1aWxkX2phdmFfYXJyYXlhY2Nlc3MpOiAgR2VuZXJhdGUgbW9yZSBlZmZpY2llbnQgYXJyYXkKCWJvdW5kcyBjaGVja2luZywgYnkgdXNpbmcgdW5zaWduZWQgY29tcGFyZS4KCgkqIGV4cHIuYyAoZXhwYW5kX2ludm9rZSk6ICBSZS1hcnJhbmdlIGVycm9yIGNoZWNrcyB0byBtYWtlIG1vcmUgcm9idXN0LgoKMTk5OC0wNi0xMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS5oOiBOZXcgY29tbWVudCBvbiB0aGUgaGFuZGxpbmcgb2YgdW5yZXNvbHZlZCB0eXBlCglpZGVudGlmaWVycy4gSkRFUHMgYXJlIG5vdyBwYXJ0IG9mIHRoZSBqZGVwX2NvZGUgZW51bS4KCSh0eXBlZGVmIHN0cnVjdCBqZGVwKTogTm93IHVzZSBlbnVtIGpkZXBfY29kZSBvciBpbnQsIGRlcGVuZGluZyBvbgoJYXZhaWxhYmlsaXR5LiBCb3RoIGFyZSBuYXJyb3dlZCBkb3duIHRvIGFuIDggYml0cyBiaXRmaWVsZC4KCShDQUxMX0VYUFJfUFJJTUFSWSk6IEZpeGVkIGNvbW1lbnQuCgoxOTk4LTA2LTEwICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEpOiBBZGRlZCBnamF2YWMgYW5kIGp2Z2VubWFpbi4KCShqYXZhLnN0YXJ0LmVuY2FwKTogRGVwZW5kIG9uIGdqYXZhYy4KCShqYXZhLnJlc3QuZW5jYXApOiBEZXBlbmQgb24ganZnZW5tYWluLgoKCSogTWFrZS1sYW5nLmluIChKQVZBX0lOU1RBTExfTkFNRSk6IE5hbWUgaXMgZ2phdmFjLCBub3QgYysrLgoJKEpBVkFfQ1JPU1NfTkFNRSk6IExpa2V3aXNlLgoJKGphdmEuYWxsLmJ1aWxkKTogRGVwZW5kIG9uIGp2Z2VubWFpbiBhbmQgZ2phdmFjLgoJKGphdmEuYWxsLmNyb3NzKTogRGVwZW5kIG9uIGp2Z2VubWFpbiBhbmQgZ2phdmFjLWNyb3NzLgoJKGp2Z2VubWFpbiQoZXhlZXh0KSk6IE5ldyB0YXJnZXQuCgkoamF2YS5pbnN0YWxsLWNvbW1vbik6IFdyb3RlLgoJKiBjb25maWctbGFuZy5pbiAoY29tcGlsZXJzLCBzdGFnZXN0dWZmKTogQWRkZWQgZ2phdmFjIGFuZAoJanZnZW5tYWluLgoKMTk5OC0wNi0xMCAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogbGFuZy5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBOZXcgYXJnYy9hcmd2IGludGVyZmFjZS4KCjE5OTgtMDYtMDkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogQ2hhbmdlTG9nOiBGaXhlZCBlbnRyaWVzIG5vdCBjb21wbGlhbnQgd2l0aCB0aGUgR251IENvZGluZyBTdGFuZGFyZC4KCSogZGVjbC5jIChidWlsZF9kZWNsX25vX2xheW91dCk6IE5ldyBmdW5jdGlvbi4KCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBMYXlvdXQgZGVjbGFyYXRpb25zIGZvdW5kIGluCglibG9ja3MgYmVmb3JlIHRoZXkncmUgcHVzaGVkLgoJKiBqY2YtcGFyc2UuYyAobG9hZF9jbGFzcyk6IFNhdmUgY3VycmVudCBsaW5lIHdoZW4gcGFyc2luZyBjbGFzcwoJZmlsZS4KCShwYXJzZV9zb3VyY2VfZmlsZSk6IFJlZ2lzdGVyIGNsYXNzIGJlZm9yZSBleHBhbmRpbmcgdGhlaXIKCW1ldGhvZHMuCgkqIGxhbmcuYyAocHV0X2RlY2xfbm9kZSk6IFByb2R1Y2UgYG51bGwnIHdoZW4gYHZvaWQgKicgaXMKCXByb2Nlc3NlZC4KCSogbGV4LmMgKHN0YXRpYyB0cmVlIHdmbF9vcCk6IE5ldyBzdGF0aWMgZ2xvYmFsLCBmb3IgZXJyb3IgcmVwb3J0CglvbiBjYXN0cy4KCShqYXZhX2luaXRfbGV4KTogd2ZsX29wZXJhdG9yIGFuZCB3Zmxfb3AgaW5pdGlhbGl6ZWQKCWhlcmUuIEZpbGVuYW1lIGNhY2hpbmcgYWRkZWQgZm9yIHdmbF9vcC4gUmV0dXJuIHdmbF9vcCB3aGVuIGAoJyBpcwoJcGFyc2VkLgoJKiBwYXJzZS5oIChidWlsZF91bmFyeW9wLCBidWlsZF9pbmNkZWMsIHBhdGNoX3VuYXJ5b3AsIGJ1aWxkX2Nhc3QsCglwYXRjaF9jYXN0LCB2YWxpZF9yZWZfYXNzaWduY29udl9jYXN0X3AsIGNhbl9jYXN0X3RvX3AsCglidWlsZF91bnJlc29sdmVkX2FycmF5X3R5cGUpOiBOZXcgc3RhdGljIGZ1bmN0aW9uIGRlZmluaXRpb25zLgoJKGJ1aWxkX2RlY2xfbm9fbGF5b3V0KTogTmV3IGV4dGVybiBmdW5jdGlvbiBkZWNsYXJlZC4KCShPQlNPTEVURV9NT0RJRklFUl9XQVJOSU5HKTogUmVwb3J0IGVycm9yIG9ubHkgaWYgdGhlIFdGTCBvZiB0aGUKCWZhdWx0eSBtb2RpZmllciBleGlzdHMuCgkoVFlQRV9JTlRFUkZBQ0VfUCwgVFlQRV9DTEFTU19QKTogTmV3IG1hY3Jvcy4KCShFUlJPUl9DQVNUX05FRURFRF9UT19JTlRFR1JBTCk6IEVycm9yIG1lc3NhZ2UgdHVuZWQuCgkoVU5BUllfUExVU19FWFBSKTogTmV3IGZha2Ugb3BlcmF0b3IuCgkoc3RydWN0IHBhcnNlcl9jdHh0KTogTmV3IGZpZWxkIG9zYl9udW1iZXIuCgkqIHBhcnNlLnkgKHN0YXRpYyB0cmVlIHdmbF9vcGVyYXRvcik6IE5ldyBzdGF0aWMgV0ZMIGZvciBvcGVyYXRvcgoJYm91bmQgZXJyb3IgbWVzc2FnZXMuCgkoREVDUl9USywgSU5DUl9USyk6IE1vdmVkLgoJKE9QX1RLKTogVGFnZ2VkIDxvcGVyYXRvcj4uCgkoYXJyYXlfdHlwZTopOiBOb3cgY2FsbCBidWlsZF91bnJlc29sdmVkX2FycmF5X3R5cGUuCgkoZGltX2V4cHI6KTogQ291bnQgdGhlIG51bWJlciBvZiAnWycgc2Vlbi4KCShwb3N0X2luY3JlbWVudF9leHByZXNzaW9uLCBwb3N0X2RlY3JlbWVudF9leHByZXNzaW9uLAoJcHJlX2luY3JlbWVudF9leHByZXNzaW9uLCBwcmVfZGVjcmVtZW50X2V4cHJlc3Npb24sCgl1bmFyeV9leHByZXNzaW9uX25vdF9wbHVzX21pbnVzLCB1bmFyeV9leHByZXNzaW9uOik6IEFjdGlvbnMgYXJlCglub3cgYnVpbGRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgdW5hcnkgZXhwcmVzc2lvbnMuCgkoY2FzdF9leHByZXNzaW9uOik6IEFjdGlvbnMgYXJlIG5vdyBidWlsZGluZyBjYXN0IGV4cHJlc3Npb25zLgoJKGJ1aWxkX3VucmVzb2x2ZWRfYXJyYXlfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShjcmVhdGVfaW50ZXJmYWNlKTogUmVzZXQgdGhlIG51bWJlciBvZiBkZWNsYXJlZCBpbnRlcmZhY2VzLgoJKGNyZWF0ZV9jbGFzcyk6IExpa2V3aXNlLgoJKG1ldGhvZF9oZWFkZXIpOiBNZXRob2RzIGRlY2xhcmVkIHdpdGhpbiB0aGUgc2NvcGUgb2YgYW4gaW50ZXJmYWNlCglhcmUgbm93IGltcGxpY2l0bHkgc2V0IHB1YmxpYyBhbmQgYWJzdHJhY3QuCgkoamF2YV9jb21wbGV0ZV9jbGFzcyk6IFZhcmlhYmxlJ3MgYW5kIHBhcmFtZXRlcidzIHR5cGUgYXJlIHBhdGNoZWQKCXdpdGggYSBwcm9tb3RlZCB0eXBlLgoJKGRlY2xhcmVfbG9jYWxfdmFyaWFibGVzKTogUmVzb2x2ZWQgbm9uIGJ1aWx0aW4gdHlwZXMgYXJlIHByb21vdGVkCgliZWZvcmUgYmVpbmcgdXNlZCB0byBidWlsZCBhIHZhcmlhYmxlIGRlY2wuIFJlbW92ZWQgdHlwZSBwYXRjaAoJcG9zdGVkIG9uIHZhcmlhYmxlIGluaXRpYWxpemF0aW9uIHN0YXRlbWVudC4KCShzb3VyY2Vfc3RhcnRfamF2YV9tZXRob2QpOiBVc2UgYnVpbGRfZGVjbF9ub19sYXlvdXQgdG8gYnVpbGQgdGhlCglkZWNsIG9mIGEgcGFyYW1ldGVyIG9mIGluY29tcGxldGUgdHlwZS4KCShqYXZhX3JlZ2lzdGVyX3BhcnNlZF9jbGFzcyk6IFByb2Nlc3MgaW50ZXJmYWNlcyB0b28uIENhbGwKCXJlc3Rfb2ZfZGVjbF9jb21waWxhdGlvbiBvbiBlYWNoIHByb2Nlc3NlZCBjbGFzcyBkZWNsYXJhdGlvbnMuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IERvbid0IGF0dGVtcHQgdG8gZXhwYW5kIHRoaW5ncyBpbgoJaW50ZXJmYWNlcy4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBQcm9jZXNzIENPTlZFUlRfRVhQUiwgZXZlbiB0aG91Z2ggaXQgYWx3YXlzCgloYXMgYSB0eXBlLiBQcm9wYWdhdGUgZXJyb3JfbWFya19ub2RlIHRvIG5vZGUncyB0eXBlIHRvby4gUHJvbW90ZQoJbWV0aG9kJ3MgY2FsbCBhcmd1bWVudCB0eXBlIGFuZCByZXR1cm4gZXJyb3JfbWFya19ub2RlIGlmCglhcmd1bWVudCdzIGNvbXBsZXRpb24gZGlkbid0IHdvcmsuIE1PRElGWV9FWFBSIGNhbiBoYXZlIGEgV0ZMIGFzIGEKCVJIUy4gRml4ZWQgYnVnIGluIHRoZSBoYW5kbGluZyBvZiBib2d1cyBSSFMgb2YgYSBmaXhlZCB0eXBlLiBOb3cKCWhhbmRsZSB1bmFyeSBvcGVyYXRvciBub2Rlcy4KCShidWlsZF9hc3NpZ25tZW50KTogQWRkZWQgY29tbWVudC4KCShwcmludF9pbnRfbm9kZSk6IE5ldyBmdW5jdGlvbi4KCShwYXRjaF9hc3NpZ25tZW50KTogTmV3IHNlY29uZCBhcmd1bWVudC4gTmV3IGVycm9yIGhhbmRsaW5nLiBVc2UKCXByaW50X2ludF9ub2RlLiBIYW5kbGUgcmVmZXJlbmNlcy4gVXNlIGNhbl9jYXN0X3RvX3AgdG8gaXNzdWUKCWRpZmZlcmVudCBlcnJvciBtZXNzYWdlIGFjY29yZGluZyB0byB0aGUgY29udGV4dCBhbmQgY2hlY2sgdXBvbgoJdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBSSFMuCgkoY2FuX2Nhc3RfdG9fcCwgdmFsaWRfcmVmX2Fzc2lnbmNvbnZfY2FzdF9wKTogTmV3IGZ1bmN0aW9ucy4KCShvcGVyYXRvcl9zdHJpbmcpOiBIYW5kbGUgbW9yZSBvcGVyYXRvcnMuCgkocGF0Y2hfYmlub3ApOiBObyBsb25nZXIgdXNlIGEgZnVuY3Rpb24gc3RhdGljCgl3Zmxfb3BlcmF0b3IuIEltcHJvdmVkIGVycm9yIG1lc3NhZ2Ugb24gc2hpZnQgZGlzdGFuY2UuCgkoYnVpbGRfdW5hcnlvcCwgYnVpbGRfaW5jZGVjLCBidWlsZF9jYXN0LCBwYXRjaF91bmFyeW9wLAoJcGF0Y2hfY2FzdCk6IE5ldyBmdW5jdGlvbnMuCgoxOTk4LTA2LTA1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGp2c3BlYy5jOiAgTmV3IGZpbGUuCgkqIE1ha2UtbGFuZy5pbjogIE5ldyBydWxlcyB0byBidWlsZCBnamF2YWMgZnJvbSBqdnNwZWMuYyBhbmQgLi4vZ2NjLmMuCgoJKiBqYXZhLXRyZWUuaCAoaWRlbnRpZmllcl9zdWJzdCk6ICBBZGQgZGVjbGFyYXRpb24uCgoxOTk4LTA2LTA0ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqdmdlbm1haW4uYyAobWFpbik6IEdlbmVyYXRlIGNhbGwgdG8gSnZSdW5NYWluLgoKCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogUHVzaCB2YWx1ZSBmb3IgInN5bmNfaW5mbyIgZmllbGQuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBQdXNoICJzeW5jX2luZm8iIGZpZWxkLgoKMTk5OC0wNi0wMyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9hcnJheV90eXBlKTogIFNldCBUWVBFX05BTUUgdG8gYWN0dWFsCglKYXZhIChzb3VyY2UpIG5hbWUsIG5vdCBzaWduYXR1cmUuCglTZXQgVFlQRV9BTElHTiB0byAoYXQgbGVhc3QpIHRoYXQgb2YgZWxlbWVudF90eXBlLgoKMTk5OC0wNi0wMiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jOiAgTW92ZWQgY2xhc3NuYW1lLW1hbmdsaW5nLXJla2F0ZWQgY29kZSB0byAuLi4KCSogbWFuZ2xlLmM6ICAuLi4gdGhpcyBuZXcgZmlsZS4KCSoganZnZW5tYWluLmM6ICBOZXcgcHJvZ3JhbSAobmVlZHMgbWFuZ2xlLmMpIHRvIGdlbmVyYXRlIG1haW4gcHJvZ3JhbS4KCSogTWFrZWZpbGUuaW46ICBVcGRhdGUgZm9yIGFib3ZlIGNoYW5nZXMuCgoxOTk4LTA2LTAxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAodHJ1dGh2YWx1ZV9jb252ZXJzaW9uKTogQ29udmVydCBpbnRlZ2VyIGFuZCBmbG9hdGluZwoJcG9pbnQgdmFsdWUgdG8gdGhlaXIgdHJ1dGggdmFsdWUuCgkqIGxleC5jIChqYXZhX2xleCk6IEhhbmRsZSB0aGUgYG51bGwnIGxpdGVyYWwuCgkqIHBhcnNlLmggKEpSRUZFUkVOQ0VfVFlQRV9QLCBERUNMX1ApOiBOZXcgbWFjcm9zLgoJKEVSUk9SX0NBTlRfQ09OVkVSVF9UT19CT09MRUFOLCBFUlJPUl9DQU5UX0NPTlZFUlRfVE9fTlVNRVJJQywKCUVSUk9SX0NBU1RfTkVFREVEX1RPX0lOVEVHUkFMLCBFUlJPUl9WQVJJQUJMRV9OT1RfSU5JVElBTElaRUQpOgoJTmV3IG1hY3Jvcy4KCgkqIHBhcnNlLnk6IFJlb3JnYW5pemF0aW9uL2RvY3VtZW50YXRpb24gb24gdG9rZW4gZGVjbGFyYXRpb24uCgkoYmlub3BfbG9va3VwW10pOiBOZXcgYWRkZWQgbmV3IHRyZWUgY29kZXMuCgkocmVsYXRpb25hbF9leHByZXNzaW9uKTogQnVpbGQgY29ycmVzcG9uZGluZyBiaW5hcnkgb3BlcmF0b3JzLgoJKGVxdWFsaXR5X2V4cHJlc3Npb24sIGNvbmRpdGlvbmFsX2FuZF9leHByZXNzaW9uLAoJY29uZGl0aW9uYWxfb3JfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKGphdmFfY29tcGxldGVfY2xhc3MpOiBGaXggY3Jhc2ggaW4gZGVidWcgbWVzc2FnZS4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBDaGVjayBpbml0aWFsaXphdGlvbiBvZiBtZXRob2QgY2FsbAoJYXJndW1lbnRzLiBGdXJ0aGVyIGJvZ3VzIG5vZGUgZXZhbHVhdGlvbiB0byBkZXRlY3QgbW9yZSBlcnJvcgoJZHVyaW5nIGFzc2lnbm1lbnRzLiBIYW5kbGVzIG1vcmUgYmluYXJ5IG9wZXJhdG9ycy4KCShwYXRjaF9hc3NpZ25tZW50KTogVXNlIERFQ0xfUC4KCShidWlsZF9iaW5vcCk6IEZpeCBjcmFzaCB3aGVuIHVzaW5nIFVSU0hJRlRfRVhQUiwgYSBKYXZhIG9ubHkgdHJlZQoJY29kZS4KCShvcGVyYXRvcl9zdHJpbmcpOiBIYW5kbGUgbW9yZSBjYXNlLiBDb21wYWN0ZWQgc291cmNlLgoJKHBhdGNoX2Jpbm9wKTogQ2hhbmdlZCBmdW5jdGlvbiBjb21tZW50LiBDaGVja2luZyBmb3IKCXVuaW5pdGlhbGl6ZWQgZmlyc3Qgb3BlcmFuZCB0YWtlcyB0aGUgY29tcG91bmQgYXNzaWdubWVudCBpbnRvCglhY2NvdW50IGFuZCB1c2VzIERFQ0xfUC4gQ2hlY2tpbmcgZm9yIHVuaW5pdGlhbGl6ZWQgc2Vjb25kIG9wZXJhbmQKCWRlbGF5ZWQgdG8gcm91dGluZSdzIGVuZC4gVXNlIG1hY3JvcyB0byBpc3N1ZSB0eXBlIGJvdW5kIGVycm9yCgltZXNzYWdlcyBhbmQgaXNzdWUgbWVzc2FnZXMgb24gYm90aCBvcGVyYW5kcyBpZiB0aGVpciB0eXBlcyBhcmUKCWRpZmZlcmVudC4gRm9yY2UgZml4ZWQgdHlwZSBpbnRvIG5vZGUuIEhhbmRsZSBhbGwgYmluYXJ5CglvcGVyYXRvcnMuCgoxOTk4LTA1LTI3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5oIChDT01QT1VORF9BU1NJR05fUCwgSU5JVElBTElaRURfUCk6IE5ldyBtYWNyb3MuCgkqIGxleC5jIChqYXZhX2xleCk6IFVzZSBCVUlMRF9PUEVSQVRPUiBhbmQgQlVJTERfT1BFUkFUT1IyIHRvCglidWlsZCBvcGVyYXRvciBub2RlIGFuZCByZXR1cm4gdG9rZW5zLgoJKiBsZXguaCAoQlVJTERfT1BFUkFUT1IsIEJVSUxEX09QRVJBVE9SMik6IE5ldyBtYWNyb3MuCgkqIHBhcnNlLmggKGphdmFfY29tcGxldGVfdHJlZSk6IENoYW5nZWQgcmV0dXJuZWQgdHlwZSBpbiBwcm90b3R5cGUuCgkoYnVpbGRfbWV0aG9kX2ludm9jYXRpb24sIGJ1aWxkX2Fzc2lnbm1lbnQsIHBhdGNoX2Fzc2lnbm1lbnQsCglwYXRjaF9iaW5vcCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoJKEpGTE9BVF9UWVBFX1AsIEpOVU1FUklDX1RZUEVfUCwgSlBSSU1JVElWRV9UWVBFX1AsIEpTVFJJTkdfUCwKCUJVSUxEX0VYUFJfV0ZMKTogTmV3IG1hY3Jvcy4KCSogcGFyc2UueSAoZW51bSB0cmVlX2NvZGUgYmlub3BfbG9va3VwW10pOiBOZXcgc3RhdGljIGZvciB0b2tlbiB0bwoJVFJFRV9DT0RFIGxvb2t1cC4KCSgldW5pb24pOiBQYXJzZXIgdW5pb24gaGFzIG5ldyBzdWItc3RydWN0dXJlIGBvcGVyYXRvcicuCgkoQVNTSUdOX1RLLCBNVUxUX0FTU0lHTl9USywgRElWX0FTU0lHTl9USywgUkVNX0FTU0lHTl9USywKCVBMVVNfQVNTSUdOX1RLLCBNSU5VU19BU1NJR05fVEssIExTX0FTU0lHTl9USywgU1JTX0FTU0lHTl9USywKCVpSU19BU1NJR05fVEssIEFORF9BU1NJR05fVEssIFhPUl9BU1NJR05fVEssIE9SX0FTU0lHTl9USywKCUFTU0lHTl9BTllfVEspOiBUb2tlbnMgdGFnZ2VkIGBvcGVyYXRvcicuCgkoRVFfVEssIEdURV9USywgWlJTX1RLLCBTUlNfVEssIEdUX1RLLCBMVEVfVEssIExTX1RLLCBCT09MX0FORF9USywKCUFORF9USywgQk9PTF9PUl9USywgT1JfVEssIElOQ1JfVEssIFBMVVNfVEssIERFQ1JfVEssIE1JTlVTX1RLLAoJTVVMVF9USywgRElWX1RLLCBYT1JfVEssIFJFTV9USywgTkVRX1RLLCBORUdfVEssIFJFTF9RTV9USywKCVJFTF9DTF9USywgTk9UX1RLLCBMVF9USyk6IFRva2VucyB0YWdnZWQgYG9wZXJhdG9yJy4KCShhc3NpZ25tZW50X29wZXJhdG9yOik6IFJ1bGUgdGFnZ2VkIGBvcGVyYXRvcicuCgkoZXhwcmVzc2lvbl9zdGF0ZW1lbnQ6KTogUmUtaW5zdGFsbGVkIGRlZmF1bHQgcnVsZS4KCShtZXRob2RfaW52b2NhdGlvbjopOiBTdWIgcnVsZXMgY2FsbCBidWlsZF9tZXRob2RfaW52b2NhdGlvbi4KCShwb3N0Zml4X2V4cHJlc3Npb246KTogRG9uJ3QgYXR0ZW1wdCB0byByZXNvbHZlIG5hbWUgaGVyZS4gSnVzdAoJcmV0dXJuIGFuIElELgoJKG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb246KTogU3ViLXJ1bGVzIGJ1aWxkIGNvcnJlc3BvbmRpbmcgYmlub3AKCWV4cHJlc3Npb24gbm9kZS4KCShhZGRpdGl2ZV9leHByZXNzaW9uOiwgc2hpZnRfZXhwcmVzc2lvbjosIGFuZF9leHByZXNzaW9uOiwKCWV4Y2x1c2l2ZV9vcl9leHByZXNzaW9uOiwgaW5jbHVzaXZlX29yX2V4cHJlc3Npb246KTogTGlrZXdpc2UuCgkoYXNzaWdubWVudDopOiBTdWIgcnVsZSBpbnZva2UgYnVpbGRfYXNzaWdubWVudC4KCShhc3NpZ25tZW50X29wZXJhdG9yOik6IERlZmF1bHQgcnVsZXMgb24gc3ViIHJ1bGVzLgoJKGZvcmNlX2Vycm9yKTogQWRkZWQgZG9jdW1lbnRhdGlvbiBvbiB0aGlzIHZhcmlhYmxlLgoJKGRlY2xhcmVfbG9jYWxfdmFyaWFibGVzKTogQnVpbGQgaW5pdGlhbGl6YXRpb24gY2FsbGluZwoJYnVpbGRfYXNzaWdubWVudC4KCShleHBhbmRfc3RhcnRfamF2YV9tZXRob2QpOiBSZW1vdmVkIHVudXNlZCBydHggZGVjbGFyYXRpb24uIE1hcmsKCWFyZ3VtZW50cyBhcyBhbHJlYWR5IGluaXRpYWxpemVkLgoJKGphdmFfbWV0aG9kX2FkZF9zdG10KTogVHlwZSBvZiBidWlsdCBDT01QT1VORF9FWFBSIHNldCB0byBOVUxMLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiBEb24ndCBwcm9jZXNzIG5leHQgbWV0aG9kIGlmCgljb21wbGV0aW9uIG9mIHRoZSBwcmV2aW91cyBvbmUgdHJpZ2dlcmVkIGVycm9ycy4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBDYWxsIHNvdXJjZV9lbmRfamF2YV9tZXRob2QgaWYgbm8KCWVycm9yIHdlcmUgZm91bmQgZHVyaW5nIGNvbXBsZXRpb24uCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBVc2UgSURFTlRJRklFUl9MT0NBTF9WQUxVRSB0byByZXRyaWV2ZQoJbG9jYWxzIGRlY2xhcmF0aWxvbi4gSGFuZGxlIG5hbWVzIGZvdW5kIHdpdGhpbiBhIGNsYXNzLiBSZXR1cm4KCWVycm9yX21hcmtfbm9kZSB3aGVuIHRoaW5ncyBhcmVuJ3QgZm91bmQuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb25fc3RtdCk6IFJldHVybiBlcnJvcl9tYXJrX25vZGUgb24gZmFpbHVyZXMuCgkocGF0Y2hfaW52b2tlKTogUmVtb3ZlZCB1bnVzZWQgbG9jYWwuIFJldHVybiB0aGUgY29ycmVjdCBub2RlLgoJKGphdmFfY29tcGxldGVfdHJlZSk6IE5vdyByZXR1cm5zIGEgdmFsdWUuIFRoZSBCTE9DSyBzZWN0aW9uIGJpbmRzCglsb2NhbCBpZGVudGlmaWVycyBhbmQgdGhlIHR5cGUgb2YgYSBCTE9DSyBpcyBub3cgdm9pZC4gQXNzaWduIHRoZQoJcmVzdWx0IG9mIG9wZXJhbmQgY29tcGxldGlvbiBvbiBDT01QT1VORF9FWFBSLiBBc3NpZ24gdGhlCgllbmNhcHN1bGF0ZWQgbm9kZSBvZiBhIFdGTCB0byB0aGUgcmVzdWx0IG9mIGl0cyBjb21wbGV0aW9uLCBleGNlcHQKCXdoZW4gdGhlIG5vZGUgaXMgYW4gaWRlbnRpZmllci4gTm93IGhhbmRsZSBNT0RJRllfRVhQUiBhbmQgc2V2ZXJhbAoJYmluYXJ5IG9wZXJhdG9ycy4gUmV0dXJuIGVycm9yX21hcmtfbm9kZSBvbiBlcnJvcnMuCgkoYnVpbGRfbWV0aG9kX2ludm9jYXRpb24sIGJ1aWxkX2Fzc2lnbm1lbnQsIHBhdGNoX2Fzc2lnbm1lbnQsCglidWlsZF9iaW5vcCwgb3BlcmF0b3Jfc3RyaW5nLCBwYXRjaF9iaW5vcCk6IE5ldyBmdW5jdGlvbnMuCgkqIHR5cGVjay5jIChiaW5hcnlfbnVtZXJpY19wcm9tb3Rpb24pOiBOZXcgZnVuY3Rpb24uCgoxOTk4LTA1LTIxICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGlkZW50aWZpZXJfc3Vic3QpOiAgTmV3IGNvbnZlbmllbmNlIHdyYXBwZXIgZm9yIGlkZW50X3N1YnN0LgoJUmVwbGFjZSBtb3N0IHVzZXMgb2YgaWRlbnRfc3Vic3QgYnkgaWRlbnRpZmllcl9zdWJzdC4KCgkqIGNsYXNzLmMgKHB1c2hfY2xhc3Nfc3RhdGljX2R1bW15X2ZpZWxkKTogIFJlbW92ZWQgZnVuY3Rpb24uCgkoYnVpbGRfY2xhc3NfcmVmKTogIEZpbmQgQ2xhc3Mgb2JqZWN0IGRlY2wgYnkgbG9va2luZyB1cCAiQ05BTUUuY2xhc3MiLAoJaW5zdGVhZCBvZiBsb29raW5nIGdvdCAiY2xhc3MiIHN0YXRpYyBmaWVsZC4gIENyZWF0ZSB0aGF0IGRlY2wgaGVyZS4KCShjbGFzc19pZGVudGlmaWVyX25vZGUpOiAgUmVtb3ZlZDsgIG5vIGxvbmdlciBuZWVkZWQuCgkoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogIERvbid0IGluaXQgY2xhc3NfaWRlbnRpZmllcl9ub2RlLgoJKiBqY2YtcGFyc2UuYyAoamNmX3BhcnNlKTogIERvbid0IGNhbGwgcHVzaF9jbGFzc19zdGF0aWNfZHVtbXlfZmllbGQuCglEbyBucmV2ZXJzZSAwIHRpbWVzIChpbnN0ZWFkIG9mIHR3aWNlKSBmb3IgT2JqZWN0IGFuZCBDbGFzcy4KCSogcGFyc2UueSAoamF2YV9sYXlvdXRfcGFyc2VkX2NsYXNzKTogTm8gcHVzaF9jbGFzc19zdGF0aWNfZHVtbXlfZmllbGQuCgoxOTk4LTA1LTIwICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9jbGFzcy1maWxlKTogIFNldCBsaW5vIHRvIHNtYWxsZXN0IGxpbmUgbnVtYmVyLAoJd2hpbGUgaW5pdGlhbGl6aW5nIGxpbmVudW1iZXJfY291bnQgYW5kIGxpbmVudW1iZXJfdGFibGUuCglEbyBpdCBiZWZvcmUgaW5pdF9mdW5jdGlvbl9zdGFydCAod2hpY2ggY2FsbHMgZW1pdF9saW5lX25vdGUpLgoJKiBleHByLmMgKGV4cGFuZF9ieXRlX2NvZGUpOiAgRG9uJ3QgbmVlZCB0byBjbGVhciBsaW5lbm8gaGVyZS4KCjE5OTgtMDUtMTggIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGFwcGVuZF9ncHBfbWFuZ2xlZF90eXBlKTogSWYgYHF1YWxpZmljYXRpb25zJyBpcyA+PTksCgl0aGVuIG1hbmdsZSBudW1iZXIgYXMgX05fLgoKCSogY2xhc3MuYyAobWFuZ2xlX2NsYXNzX2ZpZWxkKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX2NsYXNzX3JlZik6IFNldCBhc3NlbWJsZXIgbmFtZSBvZiBjbGFzcyByZWZlcmVuY2UgdXNpbmcKCW1hbmdsZV9jbGFzc19maWVsZC4KCShwdXNoX2NsYXNzX3N0YXRpY19kdW1teV9maWVsZCk6IExpa2V3aXNlLgoKMTk5OC0wNS0xNyAgTWljaGFlbCBUaWVtYW5uIDx0aWVtYW5uQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChzb3VyY2Vfc3RhcnRfamF2YV9tZXRob2QpOiBVc2UgVFJFRV9TRVRfQ09ERSBpbnN0ZWFkCglvZiBhc3NpZ25pbmcgdG8gVFJFRV9DT0RFLiAgVGhlIGxhdHRlciBtZXRob2QgZXhwbG9pdHMgYSBmZWF0dXJlCglvZiBHQ0MgdGhhdCBpcyBub3QgQU5TSSBjb21wbGlhbnQuCgoxOTk4LTA1LTEyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocHVzaGRlY2xfZm9yY2VfaGVhZCk6IE5ldyBmdW5jdGlvbi4KCShwdXNobGV2ZWwpOiBSZW1vdmVkIGNvbmRpdGlvbmFsIHByaW50Zi4KCShjb21wbGV0ZV9zdGFydF9qYXZhX21ldGhvZCk6IERvbid0IGVudGVyIGxvY2FsIHZhcmlhYmxlIHNjb3BlIGlmCglmdW5jdGlvbiBpcyBjb21waWxlZCBmcm9tIHNvdXJjZSBjb2RlLgoJKiBleHByLmM6IHBhcnNlLmggbm93IGluY2x1ZGVkCgkoamF2YV9sYW5nX2V4cGFuZF9leHByKTogTmV3IGZ1bmN0aW9uLgoJKiBqY2YtaW8uYyAoZmluZF9jbGFzcyk6IFVzZSBTT1VSQ0VfRlJPTlRFTkRfREVCVUcgaW5zdGVhZCBvZgoJcHJpbnRmLiBUZXJtaW5hdGUgYnVmZmVyIHdoZW4gZG9pbmcgZGlyZWN0b3JpZXMuCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9zb3VyY2VfZmlsZSk6IENhbGwgbGFuZ19pbml0X3NvdXJjZSBiZWZvcmUKCXBhcnNpbmcgYW5kIGJlZm9yZSBjb2RlIGdlbmVyYXRpb24uCgkqIGpjZi5oIChTT1VSQ0VfRlJPTlRFTkRfREVCVUcpOiBNYWNybyByZWRlZmluZWQgdG8gY29uZGl0aW9uYWxseQoJdXNlIHByaW50ZiBpZiB0aGUgbWFjcm8gaXMgZGVmaW5lZC4KCSogbGFuZy5jIChsYW5nX2luaXQpOiBJbnN0YWxsIGxhbmdfZXhwYW5kX2V4cHIgaG9vayBvbgoJamF2YV9sYW5nX2V4cGFuZF9leHByLgoJKGphdmFfZHVtbXlfcHJpbnQpOiBOZXcgZnVuY3Rpb24uCgkobGFuZ19pbml0X3NvdXJjZSk6IE5ldyBmdW5jdGlvbi4KCSogbGV4LmMgKGphdmFfbGV4KTogUmVtZW1iZXIgbG9jYXRpb24gb2YgYW4gb3BlbmluZyBicmFjZSBhdCB0aGUKCXNlY29uZCBuZXN0aW5nIGxldmVsLgoJKGphdmFfaXNfZW9sKTogVW5nZXQgY2hhcmFjdGVyIHNlZW4gYWZ0ZXIgYSBDUiBpZiBpdCBpcyBFT0YuCgkqIHBhcnNlLmg6IE5vdyBpbmNsdWRlcyBsZXguaAoJKFNPVVJDRV9GUk9OVEVORF9ERUJVRyk6IE1hY3JvIHJlZGVmaW5lZCB0byBjb25kaXRpb25hbGx5IHVzZQoJcHJpbnRmIGlmIHRoZSBtYWNybyBpcyBkZWZpbmVkLgoJKGV4cGFuZF9zdGFydF9qYXZhX21ldGhvZCwgYnVpbGRfZXhwcl9ibG9jaywgZW50ZXJfYmxvY2ssCglleGl0X2Jsb2NrLCBsb29rdXBfbmFtZV9pbl9ibG9ja3MsIG1heWJlX2Fic29yYl9zY29waW5nX2Jsb2Nrcyk6CglOZXcgc3RhdGljIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KCShwdXNoZGVjbF9mb3JjZV9oZWFkKTogTmV3IGV4dGVybiBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCShJTkNPTVBMRVRFX1RZUEVfUCk6IE5ldyBtYWNyby4KCShKREVQX1BBUk0sIEpERVBfVFlQRSk6IE5ldyBlbnRyaWVzIGluIEpERVBzIGVudW0uCgkoQkxPQ0tfQ0hBSU5fREVDTCwgQkxPQ0tfRVhQUl9ERUNMUywgQkxPQ0tfRVhQUl9CT0RZLAoJQkxPQ0tfRVhQUl9PUklHSU4pOiBOZXcgbWFjcm9zLgoJKERFQ0xfU09VUkNFX0xJTkVfTUVSR0UsIERFQ0xfU09VUkNFX0xJTkVfRklSU1QsCglERUNMX1NPVVJDRV9MSU5FX0xBU1QpOiBOZXcgbWFjcm9zLgoJKHN0cnVjdCBwYXJzZXJfY3R4dCk6IFJlbW92ZWQgZmllbGQgY3VycmVudF9tZXRob2RfZGVjbCwgcmVkdW5kYW50Cgl3aXRoIHRoZSBmaWVsZCBjdXJyZW50X2Z1bmN0aW9uX2RlY2wuIEFkZGVkIGZpZWxkcwoJZmlyc3RfY2NiX2luZGVudDEgYW5kIHBlbmRpbmdfYmxvY2suCgkqIHBhcnNlLnkgKG1ldGhvZF9ib2R5LCBsaXRlcmFsLCBJTlRfTElUX1RLLCBGUF9MSVRfVEssCglCT09MX0xJVF9USywgQ0hBUl9MSVRfVEssIFNUUklOR19MSVRfVEssIE5VTExfVEssIFZPSURfVEspOiBSdWxlcwoJdGFnZ2VkIDxub2RlPgoJKFNPVVJDRV9GUk9OVEVORF9ERUJVRyk6IFVzZWQgYXMgbWFjcm8gYWNjZXB0aW5nIHZhcmFyZ3MuCgkoY29tcGlsYXRpb25fdW5pdDopOiBDb3NtZXRpYyBvbiBzdWIgcnVsZS4KCSh0eXBlX2RlY2xhcmF0aW9uOik6IENvc21ldGljIG9uIHN1YiBydWxlcy4gQWRkZWQgYW4gZXJyb3IgcnVsZS4KCSh2YXJpYWJsZV9pbml0aWFsaXplcjopOiBJbnN0YWxsZWQgZGVmYXVsdCBydWxlIG9uIGV4cHJlc3Npb246LgoJKG1ldGhvZF9kZWNsYXJhdGlvbjopOiBtZXRob2RfaGVhZGVyOiBzdGFydHMgYSBuZXcKCW1ldGhvZC4gbWV0aG9kX2JvZHk6IGluc3RhbGxzIHRoZSBmdW5jdGlvbiBib2R5LCBhYnNvcmJzIGJsb2NrcwoJZW1pdHRlZCBmb3IgdGVtcG9yYXJ5IHZhcmlhYmxlIHNjb3BpbmdzLCBwb3BzIGZ1bmN0aW9uJ3MgYm9keSBibG9jawoJYW5kIG1lcmdlcyBmdW5jdGlvbidzIGxhc3Qgc3RhdGVtZW50IGxpbmVubyBpbiBERUNMX1NPVVJDRV9MSU5FLgoJKG1ldGhvZF9ib2R5Oik6IEluc3RhbGxlZCBkZWZhdWx0IHJ1bGVzLgoJKGJsb2NrOik6IENhbGwgZW50ZXJfYmxvY2sgd2hlbiBhbiBvcGVuaW5nIGJyYWNlIGlzIHNlZW4uICBBYnNvcmIKCXNjb3BpbmcgYmxvY2tzIGFuZCBjYWxsIGV4aXRfYmxvY2sgd2hlbiBhIGNsb3NpbmcgYnJhY2UgaXMgc2Vlbi4KCShibG9ja19zdGF0ZW1lbnQ6KTogQ29zbWV0aWMgY2hhbmdlcy4KCShtZXRob2RfaW52b2NhdGlvbjopOiBDcmVhdGUgV0ZMIGFyb3VuZCBDQUxMX0VYUFIgbm9kZS4KCShwYXRjaF9zdGFnZSk6IEFkZGVkIGNvbW1lbnQgYXJvdW5kIGRlZmluaXRpb24uCgkobWV0aG9kX2hlYWRlcik6IFRyeSB0byB1c2UgZmlyc3RfY2NiX2luZGVudDEgYXMgdGhlIGZpcnN0IGxpbmUgb2YKCXRoZSBtZXRob2QsIHNvIEJQIGRlYnVnIGluZm8gYXJlIGVtaXR0ZWQgYXQgdGhlIGZpcnN0IG9wZW5pbmcKCWJyYWNlIG9mIHRoZSBmdW5jdGlvbi4gSWYgdGhlIGZ1bmN0aW9uIGhhcyBubyBib2R5LCB1c2UgdGhlCglsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24ncyBuYW1lLiBPdmVycmlkZSBjdXJyZW50bHkgZGVmaW5lZCBtZXRob2QKCW5hbWUgd2l0aCB0aGUgbWF0Y2hpbmcgV0ZMIHNvIHdlIGNhbiBwb2ludCByZWRlZmluaXRpb24gZXJyb3JzCgl1c2luZyB0aGUgbG9jYXRpb24gd2hlcmUgdGhlIGZ1bmN0aW9uJ3MgbmFtZSB3YXMgZGVjbGFyZWQuCgkoY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2hlYWRlcik6IEludGVycHJldHMgREVDTF9OQU1FIGFzIGFuCglpZGVudGlmaWVyIG9yIGFzIGEgV0ZMLCBhY2NvcmRpbmdseS4KCShqYXZhX2NvbXBsZXRlX2NsYXNzKTogTmV3IGNhc2VzIGZvciBKREVQX1RZUEUgYW5kIEpERVBfUEFSTS4KCShjaGVja19tZXRob2RfcmVkZWZpbml0aW9uKTogVXNlIERFQ0xfTkFNRSBhcyBhIFdGTC4gRXh0cmFjdAoJbG9jYXRpb24gYW5kIG5hbWUgaW5mb3JtYXRpb24gb3V0IG9mIGl0IGFuZCByZWluc3RhbGwgREVDTF9OQU1FIHRvCglpdHMgb3JpZ2luYWwgaWRlbnRpZmllciBub2RlIHZhbHVlLgoJKGxvb2t1cF9jbCk6IFVzZSBERUNMX1NPVVJDRV9MSU5FX0ZJUlNUIChmaXJzdCBsaW5lIG9mIHRoZQoJZnVuY3Rpb24ncyBzb3VyY2UgY29kZSkuCgkocmVhZF9pbXBvcnRfZGlyKTogVGVzdCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgZmluZF9jbGFzcyBhbmQgaXNzdWUKCWEgZmF0YWwgYWNjb3JkaW5nbHkuCgkoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBQdXNoIGEgbmV3IGJsb2NrIGZvciB0aGUgc2NvcGUgb2YgdGhlCgluZXcgdmFyaWFibGUocykgaWYgY29kZSBoYXMgYmVlbiBhbHJlYWR5IGdlbmVyYXRlZCBhdCB0aGF0IG5lc3RpbmcKCWxldmVsLiBQaW5wb2ludCByZWRlZmluaXRpb24gZXJyb3JzIHVzaW5nIHRoZSB2YXJpYWJsZSBpZAoJV0ZMcy4gR2VuZXJhdGUgaW5pdGlhbGl6YXRpb24gY29kZSBpZiBuZWNlc3NhcnkuIElmIHRoZSB2YXJpYWJsZQoJdHlwZSBpcyBpbmNvbXBsZXRlLCByZWdpc3RlciBhIHBhdGNoIG9uIGl0cyBkZWNsLgoJKHNvdXJjZV9zdGFydF9qYXZhX21ldGhvZCk6IFJld3JpdHRlbi4gRGVmaW5lIGEgbmV3IGJsb2NrIGZvciB0aGUKCWZ1bmN0aW9uJ3MgcGFyYW1ldGVycy4gQnVpbGQgcGFyYW1ldGVyIGRlY2wgb3V0IG9mIGZ1bmN0aW9uJ3MKCWFyZ3VtZW50cyBhbmQgcmVnaXN0ZXIgdGhlbSBmb3IgYSBwYXRjaCBpZiB0aGVpciB0eXBlcyBhcmUKCWluY29tcGxldGUuCgkoZXhwYW5kX3N0YXJ0X2phdmFfbWV0aG9kKTogSW5jbHVkZXMgdGhlIHBhcnQgb2YKCXNvdXJjZV9zdGFydF9qYXZhX21ldGhvZCB0aGF0IHdhcyBwdXNoaW5nIHRoZSBwYXJhbWV0ZXIgZGVjbHMgYW5kCgljb21wbGV0aW5nIHRoZSBtZXRob2Qgc3RhcnQgY29kZS4KCShzb3VyY2VfZW5kX2phdmFfbWV0aG9kKTogUmVtb3ZlZCBjYWxsIHRoZSBleHBhbmRfZW5kX2JpbmRpbmdzIGFuZAoJcG9wbGV2ZWwgKGFscmVhZHkgdGFrZW4gY2FyZSBvZikuIFJlaW5zdGFsbCBmdW5jdGlvbidzIGFyZ3VtZW50cwoJYW5kIGdldCBmdW5jdGlvbidzIGxhc3QgbGluZSBvZiBjb2RlIGJlZm9yZSBjYWxsaW5nCglleHBhbmRfZnVuY3Rpb25fZW5kLgoJKGphdmFfbWV0aG9kX2FkZF9zdG10KTogTmV3IGNvbW1lbnQgYmVmb3JlIHRoZSBmdW5jdGlvbidzCgljb2RlLiBDb21wbGVtZW50IHRoZSBzZWNvbmQgb3BlcmFuZCBvZiB0aGUgY3VycmVudCBDT01QT1VORF9FWFBSCglpZiBuZWNlc3NhcnkuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IERvbid0IGdlbmVyYXRlIGRlYnVnIGluZm8gb24gbGluZQoJemVybyB3aGVuIGV4cGFuZGluZyBhIGdlbmVyYXRlZCBjb25zdHJ1Y3Rvci4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBTZXQgc3RhcnQgYW5kIGVuZCBsaW5lIG51bWJlcnMgZm9yCglhIGFydGlmaWNpYWxseSBnZW5lcmF0ZWQgY29uc3RydWN0b3IgdG8gb25lIGFuZCBtYW51YWxseSBjYWxsCgllbnRlcl9ibG9jayBhbmQgZXhpdF9ibG9jayB3aGVuIGRlZmluaW5nIGl0LiBGb3IgYWxsIG1ldGhvZHM6CglleHBhbmQgZnVuY3Rpb24ncyBzdGFydCBjYWxsaW5nIHRoZSBuZXcgZXhwYW5kX3N0YXJ0X2phdmFfbWV0aG9kCglhbmQgaW52b2tlIGphdmFfY29tcGxldGVfdHJlZSBvbiB0aGUgZWZmZWN0aXZlIG1ldGhvZCdzIGJvZHksIGlmCglhbnkuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBOb3cgdXNlIGxvb2t1cF9uYW1lX2luX2Jsb2NrcyB0byBzZWFyY2gKCWxvY2FsIHZhcmlhYmxlIGRlY2xzIGFuZCBwcmludCBvdXQgYW4gZXJyb3Igd2hlbiB2YXJpYWJsZXMgYXJlCgl1bmRlZmluZWQuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb25fc3RtdCk6IEluc2VydGVkIGNvbW1lbnQgYmVmb3JlIHRoZQoJZnVuY3Rpb24ncyBjb2RlLgoJKGxvb2t1cF9tZXRob2RfaW52b2tlKTogQ2hhaW4gbWV0aG9kJ3MgYXJndW1lbnRzIHVzaW5nIGNoYWlub24KCXdpdGggdGhlIGN1cnJlbnQgYXJnIGxpc3QgYXMgYSBzZWNvbmQgYXJndW1lbnQuIEluc2VydGVkIG1pc3NpbmcKCUlERU5USUZJRVJfUE9JTlRFUiB3aGVuIHJlcG9ydGluZyBhbiBlcnJvciBvbiBtZXRob2RzIG5vdCBmb3VuZC4KCShyZWZpbmVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBEb24ndCByZXRhaW4gY29uc3RydWN0b3JzLgoJKHBhdGNoX2FyZ3VtZW50cyk6IEZ1bmN0aW9uIHJlbW92ZWQuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogSW5zZXJ0ZWQgY29tbWVudCBiZWZvcmUgdGhlIGZ1bmN0aW9uJ3MKCWNvZGUuIE5ldyBjYXNlIGZvciBCTE9DS3MuIE1vdmVkIHRoZSBXRkwgY2FzZSBhIGJpdAoJZnVydGhlci4gQ29tcGxldGUgZnVuY3Rpb24ncyBhcmd1bWVudHMuCgkoYnVpbGRfZXhwcl9ibG9jaywgZW50ZXJfYmxvY2ssIGV4aXRfYmxvY2ssIGxvb2t1cF9uYW1lX2luX2Jsb2NrcywKCW1heWJlX2Fic29yYl9zY29waW5nX2Jsb2Nrcyk6IE5ldyBmdW5jdGlvbnMuCgoxOTk4LTA0LTI3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi1pby5jIChmaW5kX2NsYXNzKTogUmVzZXQgamNmLT5qYXZhX3NvdXJjZSBhZnRlciBKQ0ZfWkVSTywgaWYKCXByZXZpb3VzbHkgc2V0LgoJKiBqY2YtcGFyc2UuYyAocGFyc2Vfc291cmNlX2ZpbGUsIGphdmFfZXJyb3JfY291bnQpOiBOZXcgZm9yd2FyZAoJYW5kIGV4dGVybiBkZWNsYXJhdGlvbnMuCgkoamF2YV9wYXJzZV9hYm9ydF9vbl9lcnJvcik6IE1hY3JvIG1vdmVkLgoJKGpjZl9wYXJzZV9zb3VyY2UpOiBmYXRhbCBjYWxsZWQgaWYgZm9wZW4gZmFpbHMuIE5vdyBjYWxscwoJcGFyc2Vfc291cmNlX2ZpbGUuCgkocGFyc2Vfc291cmNlX2ZpbGUpOiBOZXcgcGFyc2Vfb25seSBwYXJhbWV0ZXIuIFJlZmxlY3RzIHRoZQoJZWxpbWluYXRpb24gb2YgdGhlIHNlY29uZCBwYXNzLgoJKHl5cGFyc2UpOiBwYXJzZV9zb3VyY2VfZmlsZSBjYWxsZWQgd2l0aCBhcmd1bWVudCBzZXQgdG8gMC4KCSogamNmLmggKEpDRl9aRVJPKTogU2V0cyBqYXZhX3NvdXJjZSB0byB6ZXJvLgoJKiBsZXguYyAoamF2YV9pbml0X2xleCk6IHBhc3MgYXJndW1lbnQgaXMgZ29uZS4gRnVuY3Rpb24gbW9kaWZpZWQKCXRvIGJlIGNhbGxlZCBvbmNlIGR1cmluZyB0aGUgYW5hbHlzaXMgb2YgYSBmaWxlLgoJKGphdmFfdW5nZXRfdW5pY29kZSk6IEZpeGVkIHR5cG8gaW4gZmF0YWwgbWVzc2FnZS4KCShqYXZhX2dldF9saW5lX2NvbCk6IExpa2V3aXNlLgoJKGphdmFfbHZhbCk6IExpa2V3aXNlLiBTdHJpbmcgbGl0ZXJhbHMgbm8gbG9uZ2VyIGJ1aWx0IGR1cmluZwoJc2Vjb25kIHBhc3MuCgkqIGxleC5oIChKQVZBX0NPTFVNTl9ERUxUQSk6IFRha2UgdGhlIHRhYnVsYXRpb24gY2hhcmFjdGVyIGludG8KCWFjY291bnQuCgkqIHBhcnNlLmggKE1PRElGSUVSX1dGTCk6IE5ldyBtYWNyby4KCShwYXJzZV9jaGVja19zdXBlciwgcGFyc2VyX2NoZWNrX3N1cGVyX2ludGVyZmFjZSk6IE5vdyByZXR1cm4gaW50LgoJKHBhcnNlcl9jaGFpbl9pbmNvbXBsZXRlX2l0ZW0sIG5vdF9idWlsdGluX3AsCgljb21wbGV0ZV9tZXRob2RfZGVjbCk6IERlY2xhcmF0aW9ucyByZW1vdmVkLgoJKGJ1aWxkX21ldGhvZF9pbnZvY2F0aW9uX3N0bXQsIGJ1aWxkX2ludm9rZSk6IFJlbmFtZWQgdXNpbmcgdGhlCglgcGF0Y2gnIGluc3RlYWQgb2YgYGJ1aWxkJwoJKHJlZ2lzdGVyLWluY29tcGxldGVfdHlwZSwgb2J0YWluX2luY29tcGxldGVfdHlwZSwKCWphdmFfY29tcGxldGVfdHJlZSwgamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kLAoJdW5yZXNvbHZlZF90eXBlX3AsIGNyZWF0ZV9qZGVwX2xpc3QpOiBOZXcgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoJKElDX1RZUEUsIElDX0RFUEVORCwgREVQRU5EX0RFQ0wsIERFUEVORF9XRkwsIEJFR0lOX09OTFlfUEFTUywKCUVORF9PTkxZX1BBU1MsIEVMU0VfT05MWV9QQVNTKTogTWFjcm8gZGVsZXRlZC4KCShqZGVwKTogTmV3IHR5cGVkZWYgb24gbmV3IHN0cnVjdCBfamRlcC4KCShKREVQX0RFQ0wsIEpERVBfREVDTF9XRkwsIEpERVBfS0lORCwgSkRFUF9TT0xWLCBKREVQX1dGTCwKCUpERVBfTUlTQywgSkRFUF9BUFBMWV9QQVRDSCwgSkRFUF9HRVRfUEFUQ0gsIEpERVBfQ0hBSU4sCglKREVQX1RPX1JFVk9MVkUsIEpERVBfUkVTT0xWRURfREVDTCwgSkRFUF9SRVNPTFZFRCwKCUpERVBfUkVTT0xWRURfUCk6IE5ldyBtYWNyb3MuCgkoSkRFUF9OT19QQVRDSCwgSkRFUF9TVVBFUiwgSkRFUF9GSUVMRCwgSkRFUF9NRVRIT0QsCglKREVQX01FVEhPRF9SRVRVUk4sIEpERVBfTUVUSE9EX0VORCwgSkRFUF9JTlRFUkZBQ0UsCglKREVQX1ZBUklBQkxFKTogTmV3IGVudW0gdmFsdWVzIGFuZCBqZGVwIGtpbmRzLgoJKGpkZXBsaXN0KTogTmV3IHR5cGVkZWYgb24gc3RydWN0IF9qZGVwbGlzdC4KCShDTEFTU0RfRklSU1QsIENMQVNTRF9MQVNULCBDTEFTU0RfQ0hBSU4sIEpERVBfSU5TRVJUKTogTmV3CgltYWNyb3MuCgkoQ0FMTF9FWFBSX1BSSU1BUlkpOiBOZXcgbWFjcm8uCgkoc3RydWN0IHBhcnNlcl9jdHh0KTogRmllbGRzIGphdmFfcGFzcywgY3VycmVudF9tZXRob2RfZGVjbCwKCW1ldGhvZF9kZWNsX2xpc3QgZGVsZXRlZC4gTmV3IGZpZWxkIGpkZXBsaXN0LgoJKElOQ09NUExFVEVfUCk6IE1hY3JvIGRlbGV0ZWQuCgkqIHBhcnNlLnkgKHNpbmdsZV90eXBlX2ltcG9ydF9kZWNsYXJhdGlvbjopOiBSZW1vdmVkIHBhc3Mgc3dpdGNoLgoJKHR5cGVfaW1wb3J0X29uX2RlbWFuZF9kZWNsYXJhdGlvbik6IExpa2V3aXNlLgoJKGZpZWxkX2RlY2xhcmF0aW9uOik6IFJlbW92ZWQgcGFzcyBzd2l0Y2ggb24gYWxsIHN1YiBydWxlcy4KCShjbGFzc19kZWNsYXJhdGlvbjopOiBDYWxsIHRoZSBjb21wbGV0ZV9jbGFzc19kZWNsIHJlbW92ZWQgb24KCWNsYXNzX2JvZHkgcnVsZXMuCgkobWV0aG9kX2RlY2xhcmF0aW9uOik6IFJlbW92ZWQgc2Vjb25kIHBhc3Mgc3dpdGNoLiBObyBsb25nZXIgY2hhaW4KCW1ldGhvZHMgZGVjbCB3aGVuIG1ldGhvZF9oZWFkZXIgcmVkdWNlZC4KCShtZXRob2RfaGVhZGVyOik6IFN1YiBydWxlcyBubyBsb25nZXIgZGVwZW5kIG9uIHBhc3Mgc3dpdGNoLgoJKG1ldGhvZF9kZWNsYXJhdG9yOik6IExpa2V3aXNlLgoJKG1ldGhvZF9ib2R5Oik6IExpa2V3aXNlLgoJKGFic3RyYWN0X21ldGhvZF9kZWNsYXJhdGlvbjopOiBMaWtld2lzZS4KCShibG9ja19zdGF0ZW1lbnQ6KTogTGlrZXdpc2UuCgkobG9jYWxfdmFyaWFibGVfZGVjbGFyYXRpb246KTogTGlrZXdpc2UuCgkoYXJndW1lbnRfbGlzdDopOiBMaWtld2lzZS4KCShtZXRob2RfaW52b2NhdGlvbjopOiBMaWtld2lzZS4gQ2FsbCB0bwlidWlsZF9tZXRob2RfaW52b2NhdGlvbl9zdG10CglyZW1vdmVkLiBQYXJ0aWFsIENMQVNTX0VYUFIgdHJlZSBub2RlIGJ1aWx0IGluc3RlYWQuCgkocG9zdGZpeF9leHByZXNzaW9uOik6IFJlbW92ZWQgcGFzcyBzd2l0Y2ggb24gYWxsIHN1YiBydWxlcy4KCShqYXZhX3BvcF9wYXJzZXJfY29udGV4dCk6IEZyZWUgY2xhc3NkX2xpc3QgY29udGVudC4KCSh5eWVycm9yKTogQ2FsbCBvYnN0cmFja19ncm93MCB0byBmaW5hbGl6ZSBlcnJvciBtZXNzYWdlLgoJKGNoZWNrX2NsYXNzX2ludGVyZmFjZV9jcmVhdGlvbik6IENvbW1lbnQgbW9kaWZpZWQgdG8gcmVmbGVjdCBuZXcKCXJldHVybmVkIHZhbHVlIG1lYW5pbmcuIFJlbW92ZWQgc2Vjb25kIHBhc3Mgc3dpdGNoLiBSZXR1cm4gMSBpZiBhbgoJZXJyb3Igd2FzIGZvdW5kLCAwIG90aGVyd2lzZS4gQWRqdXN0IHBvaW50ZXIgb24gZmlsZW5hbWUgaWYgYQoJbGVhZGluZyBwYXRoIHNlcGFyYXRvciB3YXMgZm91bmQuCgkobWF5YmVfY3JlYXRlX2NsYXNzX2ludGVyZmFjZV9kZWNsKTogUmVtb3ZlZCBmaXJzdCBwYXNzIHN3aXRjaAoJd2hlbiBsaW5raW5nIHRoZSBjbGFzcyBkZWNsIHRvIHRoZSBjbGFzc19saXN0LiBJbnN0YWxsIGEgbmV3CglqZGVwX2xpc3QgZm9yIHRoZSBjbGFzcy4KCShhZGRfc3VwZXJpbnRlcmZhY2VzKTogTGlzdCBvZiB1bnJlc29sdmVkIGludGVyZmFjZXMgaXMKCWdvbmUuIFVucmVzb2x2ZWQgaW50ZXJmYWNlcyBhcmUgZGlyZWN0bHkgYWRkZWQgdG8gdGhlIGN1cnJlbnQKCWRlcGVuZGVuY2llcyBsaXN0LgoJKGNyZWF0ZV9pbnRlcmZhY2UpOiBTZWNvbmQgcGFzcyBzaG9ydGN1dCByZW1vdmVkLgoJY3RweC0+bW9kaWZpZXJfY3R4IGFjY2VzcyB0aHJvdWdoIE1PRElGSUVSX1dGTC4KCShjcmVhdGVfY2xhc3MpOiBTZWNvbmQgcGFzcyBzaG9ydGN1dCByZW1vdmVkLiBDYWxsIHRvCglyZWdpc3Rlcl9pbmNvbXBsZXRlX3R5cGUgcmVwbGFjZXMgdGhlIGNhbGwgdG8KCXBhcnNlcl9jaGFpbl9pbmNvbXBsZXRlX2l0ZW0uCgkoY29tcGxldGVfY2xhc3NfZGVjbCk6IEZ1bmN0aW9uIHJlbW92ZWQuCgkoZHVwbGljYXRlX2RlY2xhcmF0aW9uX2Vycm9yKTogTmV3IHdheSBvZiByZXRyaWV2aW5nIHJlZGVjbGFyZWQKCWl0ZW0gdHlwZS4KCShyZWdpc3Rlcl9maWVsZHMpOiBDYWxsIHRvIGxvb2t1cF9tb2RpZmllcl9jbCByZXBsYWNlZCBieQoJTU9ESUZJRVJfV0ZMLiBOZXcgd2F5IG9mIGhhbmRsaW5nIHVucmVzb2x2ZWQgdHlwZSwgdXNpbmcKCXVucmVzb2x2ZWRfdHlwZV9wIGFuZCBvYnRhaW5faW5jb21wbGV0ZV90eXBlLgoJcmVnaXN0ZXJfaW5jb21wbGV0ZV90eXBlIHJlcGxhY2VzIGNhbGwgdG8gcGFyc2VyX2NoYWluX2luY29tcGxldGVfaXRlbS4KCShwYXRjaF9zdGFnZSk6IE5ldyBzdGF0aWMgZ2xvYmFsIHZhcmlhYmxlLgoJKG1ldGhvZF9oZWFkZXIpOiBOZXcgd2F5IG9mIGhhbmRsaW5nIHVucmVzb2x2ZWQgdHlwZSwgdXNpbmcKCXVucmVzb2x2ZWRfdHlwZV9wIGFuZCBvYnRhaW5faW5jb21wbGV0ZV90eXBlLiBwYXRjaF9zdGFnZSB1c2VkIHRvCglpbmRpY2F0ZXMgdGhhdCB0aGUgbWV0aG9kIGRlY2wgbmVlZHMgdG8gYmUgcGF0Y2hlZC4KCShjaGVja19hYnN0cmFjdF9tZXRob2RfaGVhZGVyKTogQ2FsbCB0byBsb29rdXBfbW9kaWZpZXJfY2wKCXJlcGxhY2VkIGJ5IE1PRElGSUVSX1dGTC4KCShtZXRob2RfZGVjbGFyYXRvcik6IEluY29tcGxldGUgYXJndW1lbnQgdHlwZSBhcmUgcmVnaXN0ZXJlZAoJY2FsbGluZyByZWdpc3Rlcl9pbmNvbXBsZXRlX3R5cGUuIFBhdGNoIG9uIHRoZSBkZWNsYXJlZCBtZXRob2QgaXMKCWlzc3VlZCBpbiB0aGF0IGNhc2UuCgkodW5yZXNvbHZlZF90eXBlX3ApOiBOZXcgZnVuY3Rpb24uCgkocGFyc2VyX2NoZWNrX3N1cGVyX2ludGVyZmFjZSk6IE5ldyBjb21tZW50IHRvIHJlZmxlY3QgZnVuY3Rpb24ncwoJbW9kaWZpZWQgcmV0dXJuZWQgdHlwZSAoaW50KS4gRnVuY3Rpb24gYW5kIGhhcyBhIG5ldyBhcmd1bWVudAoJdGhpc193ZmwuIENhbGwgdG8gcGFyc2VfZXJyb3JfY29udGV4dCB1c2VzIHRoaXNfd2ZsIGluc3RlYWQgb2YKCXJlbHlpbmcgb24gbG9va3VwX2NsLgoJKHBhcnNlcl9jaGVja19zdXBlcik6IENvbW1lbnQgcmVmbGVjdHMgZnVuY3Rpb24ncyBuZXcgcmV0dXJuZWQKCXR5cGUgKGludCkuIEZ1bmN0aW9uIHJldHVybnMgbm9uemVybyB2YWx1ZSBvbiBlcnJvci4KCShjcmVhdGVfamRlcF9saXN0LCByZXZlcnNlX2pkZXBfbGlzdCwgb2J0YWluX2luY29tcGxldGVfdHlwZSwKCXJlZ2lzdGVyX2luY29tcGxldGVfdHlwZSwgamRlcF9yZXNvbHZlX2NsYXNzKTogTmV3IGZ1bmN0aW9ucyB0bwoJaGFuZGxlIGluY29tcGxldGUgdHlwZXMgaW4gZGVjbGFyYXRpb25zLgoJKGphdmFfY29tcGxldGVfY2xhc3MpOiBSZXdyaXR0ZW4gdG8gd29yayB3aXRoIHRoZSBuZXcgaW5jb21wbGV0ZQoJdHlwZSBoYW5kbGluZyBzY2hlbWUuCgkoY29tcGxldGVfY2xhc3NfcmVwb3J0X2Vycm9ycyk6IExpa2V3aXNlLgoJKGNvbXBsZXRlX21ldGhvZF9kZWNsKTogUmVtb3ZlZDogaXQgam9icyBpcyBub3cgaGFuZGxlZCBieQoJamF2YV9jb21wbGV0ZV9jbGFzcy4KCShkb19yZXNvbHZlX2NsYXNzKTogQ2xhc3MgbG9hZGVkIGluIG5vdCBhbHJlYWR5IGxvYWRlZCBhbmQgbm90Cglmb3VuZCBpbiBKYXZhIHNvdXJjZSBjb2RlLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzLCBqYXZhX2NoZWNrX2Fic3RyYWN0X21ldGhvZHMpOiBEb24ndAoJY2FsbCBjb21wbGV0ZV9tZXRob2RfZGVjbCBhbnltb3JlLgoJKGxvb2t1cF9tb2RpZmllcl9jbCwgbm90X2J1aWx0aW5fcCk6IEZ1bmN0aW9ucyBkZWxldGVkLgoJKHJlYWRfaW1wb3J0X2Rpcik6IEdvdCByaWQgb2YgdGhlIHBhc3MgbnVtYmVyIGRlcGVuZGVuY3kuCgkoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBOZXcgaGFuZGxpbmcgb2YgdW5yZXNvbHZlZCB0eXBlcyAocGF0Y2gKCWlzc3VlZCkuCgkoc291cmNlX3N0YXJ0X2phdmFfbWV0aG9kKTogTmV3IHBhcmFtZXRlciBsZXZlbC4gRnVuY3Rpb24gY2FsbGVkCgl3aXRoIGxldmVsIHNldCB0byAxIHdoZW4gYXJndW1lbnQgdHlwZXMgYXJlIHBvdGVudGlhbGx5Cgl1bnJlc29sdmVkLiAgQ2FsbGVkIHRvIGNvbXBsZXRlIHRoZSBqb2Igd2l0aCBsZXZlbCBzZXQgdG8gMiBvbmNlCgl0eXBlcyBhcmUgY29tcGxldGUuCgkoc291cmNlX2VuZF9qYXZhX21ldGhvZCk6IENhbGwgdG8gcGVybWFuZW50X2FsbG9jYXRpb24KCXJlbW92ZWQuIFdhaXRpbmcgdG8gYmUgcmVwbGFjZWQgYnkgYSBtb3JlIHN1aXRhYmxlIG9ic3RhY2sKCW1hbmFnZW1lbnQuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcywgamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kLAoJamF2YV9leHBhbmRfZmluYWxzKTogTmV3IGZ1bmN0aW9ucy4KCShidWlsZF9tZXRob2RfaW52b2NhdGlvbl9zdG10KTogUmVuYW1lZAoJcGF0Y2hfbWV0aG9kX2ludm9jYXRpb25fc3RtdC4gRXh0cmFjdHMgZnVuY3Rpb24gY2FsbCBleHByZXNzaW9uCgkod2ZsKSBhbmQgYXJndW1lbnRzIChhcmdzKSBmcm9tIENBTExfRVhQUiB0cmVlIG9wZXJhbmRzLgoJKGJ1aWxkX2ludm9rZSk6IFJlbmFtZWQgcGF0Y2hfaW52b2tlLiBGaXhlZCB0eXBvIGluIGZhdGFsCgljYWxsLiBQYXRjaCB0aGUgZnVuY3Rpb24gYW5kIGFyZ3VtZW50IG9wZXJhbmQgb2YgdGhlIENBTExfRVhQUgoJdHJlZSBhcmd1bWVudC4KCShwYXRjaF9hcmd1bWVudCwgamF2YV9jb21wbGV0ZV90cmVlKTogTmV3IGZ1bmN0aW9ucy4KCjE5OTgtMDQtMjAgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCVJlY292ZXIgZnJvbSBtaXNzaW5nIGZpZWxkcyBhbmQgbWV0aG9kcyAoaS5lLiBlcnJvciBpbnN0ZWFkIG9mIGZhdGFsKS4KCSogZGVjbC5jLCBqYXZhLXRyZWUuaCAoVFlQRV9pZGVudGlmaWVyX25vZGUpOiAgTmV3IGdsb2JhbCBjb25zdGFudC4KCSogZXhwci5jIChleHBhbmRfaW52b2tlKTogIFJlY292ZXIgZnJvbSBtaXNzaW5nIG1ldGhvZC4KCShleHBhbmRfamF2YV9maWVsZF9vcCk6ICBSZWNvdmVyIGZyb20gbWlzc2luZyBmaWVsZC4KCUlubGluZSByZWZlcmVuY2VzIHRvIGphdmEubGFuZy57SW50ZWdlcixDaGFyLC4uLn0uVFlQRS4KCSogdHlwZWNrLmMgKGdldF90eXBlX2Zyb21fc2lnbmF0dXJlKSwgamF2YS10cmVlLmg6ICBOZXcgZnVuY3Rpb24uCgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiAgVXNlIGdldF90eXBlX2Zyb21fc2lnbmF0dXJlLgoJKGJ1aWxkX2NsYXNzX3JlZik6ICBIYW5kbGUgYSBjbGFzcyB0aGF0IHdhcyBub3QgZm91bmQuCgkqIHR5cGVjay5jIChjb252ZXJ0KTogIEhhbmRsZSBjb252ZXJzaW9uIHRvIHBvaW50ZXJzIChmb3IgY29udmVuaWVuY2UpLgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiAgVXNlIGdldF90eXBlX2Zyb21fc2lnbmF0dXJlCglpbnN0ZWFkIG9mIGxvb2t1cF9maWVsZCB0byBoYW5kbGUgbWlzc2luZyBmaWVsZHMuCgoJKiBqY2YtcGFyc2UuYyAocHJvY2Vzc196aXBfZGlyKTogIFNldCBqYXZhX3NvdXJjZS4KCjE5OTgtMDQtMjAgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiBqY2YtcGFyc2UuYyAoc2V0X3NvdXJjZV9maWxlbmFtZSk6IFVzZSBUWVBFX05BTUUsIG5vdCBERUNMX05BTUUuCgoxOTk4LTA0LTE0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChsb2FkX2NsYXNzKTogRG9uJ3QgY2hhbmdlIGlucHV0X2ZpbGVuYW1lIGJlZm9yZQoJY2FsbGluZyBqY2ZfcGFyc2Vfc291cmNlIChidXQgc3RpbGwgZG8gaXQgYmVmb3JlIGNhbGxpbmcKCWpjZl9wYXJzZSkuCgkoamNmX3BhcnNlX3NvdXJjZSk6IEFzc2lnbiBpbnB1dF9maWxlbmFtZSBhZnRlciBoYXZpbmcgc2F2ZWQgdGhlCglwYXJzZXIgY29udGV4dC4KCSogbGV4LmMgKGphdmFfaW5pdF9sZXgpOiBDaGFpbiBhIFdGTCBub2RlIHRvIHRoZSBpbXBvcnQgb24gZGVtYW5kCglsaXN0LiBjdHhwLT5tb2RpZmllcl9jdHggemVyb2VkIGFjY29yZGluZyB0byBpdHMgbmV3CglkZWZpbml0aW9uLiBjdHhwLT5maWxlbmFtZSBpbml0aWFsaXplZC4gUmVtb3ZlZAoJSkFWQV9NT0RJRklFUl9DVFhfVU5NQVJLLgoJKGphdmFfdW5nZXRfdW5pY29kZSk6IFVwZGF0ZSB0aGUgY2hhcmFjdGVyIGJhc2VkIGNvbHVtbiBwb3NpdGlvbi4KCShqYXZhX2FsbG9jYXRlX25ld19saW5lKTogcmVmX2NvdW50IG5vdCB1c2VkIGFueW1vcmUuIEFsd2F5cyBmcmVlCgljdHhwLT5wX2xpbmUuIEluaXRpYWxpemUgY19saW5lLT5jaGFyX2NvbCB0byAwLgoJKGphdmFfZ2V0X3VuaWNvZGUpOiBVcGRhdGUgdGhlIGNoYXJhY3RlciBiYXNlZCBjb2x1bW4gcG9zaXRpb24uCgkoamF2YV9sZXgpOiBVc2UgY3R4cC0+ZWxjIHRvIHN0b3JlIGN1cnJlbnQgcG9zaXRpb24gaW4gc291cmNlCglmaWxlLCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXJzZWQgdG9rZW4uIFNldCBtb2RpZmllcl9jdHggZW50cnkKCWNvcnJlc3BvbmRpbmcgdG8gdGhlIHBhcnNlIG1vZGlmaWVyIHRvIGEgV0ZMIG5vZGUuIFJldHVybiBhIFdGTAoJbm9kZSB3aGVuIGFuIGlkZW50aWZpZXIgaXMgcGFyc2VkLgoJKGphdmFfbGV4X2Vycm9yKTogTm93IHVzZXMgY3R4cC0+ZWxjIHRvIHN0b3JlIGN1cnJlbnQgcG9zaXRpb24gaW4KCXNvdXJjZS4KCShidWlsZF93Zmxfbm9kZSwgamF2YV9pc19lb2wsIGphdmFfZ2V0X2xpbmVfY29sKTogTmV3IGZ1bmN0aW9ucy4KCSogbGV4LmggKGJ1aWxkX3dmbF9ub2RlKTogTmV3IGZ1bmN0aW9uIGRlZmluaXRpb25zLgoJKHN0cnVjdCBqYXZhX2xpbmUpOiByZWZfY291bnQgYW5kIG5leHQgZmllbGRzIGFyZSBnb25lLiBOZXcgZmllbGQKCWNoYXJfY29sLgoJKEpBVkFfTElORV9DSEVDSywgSkFWQV9MSU5FX01BUkssIEpBVkFfTElORV9DSEFJTiwKCUpBVkFfTElORV9VTk1BUkssIElEX05BTUUsIElEX0NMKTogTWFjcm8gZGVmaW5pdGlvbnMgZGVsZXRlZC4KCShKQVZBX0NPTFVNTl9ERUxUQSk6IE5ldyBtYWNyby4KCShqYXZhX2xjKTogTmV3IHR5cGVkZWYgb24gbmV3IHN0cnVjdCBfamF2YV9sYy4KCSogcGFyc2UuaCAobG9va3VwX2NsLCBsb29rdXBfbW9kaWZpZXJfY2wpOiBDaGFuZ2VkIHJldHVybmVkIHR5cGVzLgoJKHBhcnNlX2Vycm9yX2NvbnRleHQsIHBhcnNlX3dhcm5pbmdfY29udGV4dCk6IENoYW5nZWQgcHJvdG90eXBlcy4KCShqYXZhX2dldF9saW5lX2NvbCk6IEFkZGVkIGFzIGFuIGF2YWlsYWJsZSBnbG9iYWwgZnVuY3Rpb24uCgkoSkFWQV9NT0RJRklFUl9DVFhfVU5NQVJLKTogTWFjcm8gcmVtb3ZlZC4KCShJQ19ERUNMKTogUmVwbGFjZWQgYnkgbWFjcm8gSUNfVFlQRQoJKERFUEVORF9XRkwpOiBOZXcgbWFjcm8uCgkoVEhJU19NT0RJRklFUl9PTkxZKTogTm93IHdvcmtzIHdpdGggV0ZMIGFuZCBvbmx5IHJlbWVtYmVycyB0aGUgZmlyc3QKCXdyb25nIG1vZGlmaWVyLgoJKGV4aXRfamF2YV9jb21wbGV0ZV9jbGFzcyk6IFJlbW92ZWQgYSBjb21tZW50ZWQgb3V0IHN0YXRlbWVudC4KCShzdHJ1Y3QgcGFyc2VyX2N0eHQpOiBBZGRlZCBjb21tZW50cyBvbiBmaWVsZHMuIG1vZGlmaWVyX2N0eCBpcwoJbm93IGFuIGFycmF5IG9mIHRyZWUgbm9kZXMuIERlbGV0ZWQgZmllbGRzIGxpbmVfbGlzdCBhbmQKCWVfbGluZS4gTmV3IGZpZWxkIGVsYywgdG8gcmVwbGFjZSBlX2xpbmUuCgkqIHBhcnNlLnkgKGFycmF5X3R5cGU6KTogQnVpbGQgV0ZMIG5vZGUuCgkocXVhbGlmaWVkX25hbWU6KTogQnVpbGQgYSBzaW5nbGUgV0ZMIG5vZGUgb3V0IG9mIHR3by4gUmV0YWluCgl0aGUgbG9jYXRpb24gaW5mb3JtYXRpb24gb2YgdGhlIGZpcnN0IG5vZGUgaW4gdGhlIHJlc3VsdGluZyBub2RlLgoJKHBhY2thZ2VfZGVjbGFyYXRpb246KTogVXNlIHBhY2thZ2UgbmFtZSBhcyBhIFdGTCBub2RlCgkoc2luZ2xlX3R5cGVfaW1wb3J0X2RlY2xhcmF0aW9uOik6IFVzZSBpbXBvcnRlZCBuYW1lIGFzIGEgV0ZMIG5vZGUuCgkodHlwZV9pbXBvcnRfb25fZGVtYW5kX2RlY2xhcmF0aW9uOik6IFVzZSByb290IG9mIHRoZSBpbXBvcnRlZAoJcGFja2FnZXMgYXMgYSBXRkwgbm9kZS4KCShmaWVsZF9kZWNsYXJhdGlvbjopOiBSZW1vdmVkIHVudXNlZCBsb2NhbCB2YXJpYWJsZSBjbC4KCShtZXRob2RfZGVjbGFyYXRpb246KTogRG9uJ3QgY2FsbCBKQVZBX01PRElGSUVSX0NUWF9VTk1BUksuCgkoeXllcnJvcik6IE5ldyBzdGF0aWMgZWxjLiBSZW1vdmVkIHN0YXRpYyBlcnJvcl9saW5lLCBlcnJvcl9wb3MuCglOZXcgbG9jYWwgY29kZV9mcm9tX3NvdXJjZS4gU2F2ZSBjdHhwLT5lbGMgaW50byBlbGMgYXQgdGhlIGZpcnN0CglwYXNzLiBDYWxsIGphdmFfZ2V0X2xpbmVfY29sIHRvIGdldCBhIHN0cmluZyBvZiB0aGUgbGluZSB3aGVyZQoJdGhlIGVycm9yIG9jY3VycmVkLgoJKGRlYnVnX2xpbmUpOiBSZW1vdmVkIHN0YXRpYyBmdW5jdGlvbi4KCShwYXJzZV9lcnJvcl9jb250ZXh0LCBwYXJzZV93YXJuaW5nX2NvbnRleHQpOiBQYXJhbWV0ZXIgY2wgaXMgbm93CglhIFdGTCBub2RlLiBVc2UgaXRzIHZhbHVlIHRvIGluaXRpYWxpemUgY3R4cC0+ZWxjLgoJKHJlZGVmaW5pdGlvbl9lcnJvcik6IFBhcmFtZXRlciBjbCBpcyBub3cgYSBXRkwgbm9kZS4KCShwYXJzZV9hZGRfaW50ZXJmYWNlKTogTmV3IHBhcmFtZXRlciB3ZmwuIE5vIGxvbmdlciBjYWxsCglsb29rdXBfY2wsIHVzZSB3ZmwgaW5zdGVhZC4KCShjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24pOiBQYXJhbWV0ZXIgY2wgaXMgbm93IGEgV0ZMIG5vZGUuCgkobWF5YmVfY3JlYXRlX2NsYXNzX2ludGVyZmFjZV9kZWNsKTogTGlrZXdpc2UuCgkoYWRkX3N1cGVyaW50ZXJmYWNlcyk6IE5ldyBmdW5jdGlvbi4KCShjcmVhdGVfaW50ZXJmYWNlKTogUmVtb3ZlZCBsb2NhbCBjbCwgbm9kZSwgc3VwZXJfZGVjbCwKCXN1cGVyX2RlY2xfdHlwZS4gIEZ1bmN0aW9uIG5vdyB1c2VzIGlkIGFzIGEgV0ZMIG5vZGUuIEJldHRlcgoJd2FybmluZy9lcnJvciByZXBvcnQgb24gb2Jzb2xldGUgb3IgZm9yYmlkZGVuIG1peCBvZgoJbW9kaWZpZXJzLiBOb3cgY2FsbHMgYWRkX3N1cGVyaW50ZXJmYWNlcyB0byByZWdpc3RlciBpbnRlcmZhY2VzLgoJKGNyZWF0ZV9jbGFzcyk6IFJlbW92ZWQgbG9jYWwgY2wsIG5vZGUuIExvY2FsIHZhcmlhYmxlIGlkIGlzIHVzZWQKCWFzIGEgV0ZMIG5vZGUuIEJldHRlciBlcnJvciByZXBvcnQgb24gZm9yYmlkZGVuIG1vZGlmaWVyCgltaXguIFVzZXMgYWRkX3N1cGVyaW50ZXJmYWNlcyB0byByZWdpc3RlciBpbnRlcmZhY2VzLgoJKGZpbmRfZmllbGQpOiBBcmd1bWVudCBjbCBpcyBub3cgYSBXRkwgbm9kZS4gTm93IHN0b3JlIHRoZSBXRkwKCW5vZGUgb2YgYSBmaWVsZHMgdGhhdCBuZWVkcyB0byBiZSBjaGVja2VkIGZvciB0aGVpcgoJaW5pdGlhbGl6YXRpb24uCgkobWV0aG9kX2hlYWRlcik6IExvY2FsIHZhcmlhYmxlIG5vZGUgbm9uIGxvbmdlciB1c2VkLiBMb2NhbAoJdmFyaWFibGUgaWQgcmVwbGFjZXMgY2wuCgkoY2hlY2tfbW9kaWZpZXJzX2NvbnNpc3RlbmN5KTogTG9jYWwgdmFyaWFibGUgY2wgaXMgbm93IGEgV0ZMCglub2RlLgoJKG1ldGhvZF9kZWNsYXJhdG9yKTogTG9jYWwgdmFyaWFibGUgY2wgcmVwbGFjZWQgYnkgcGFyYW1ldGVyIGlkLgoJKHBhcnNlcl9xdWFsaWZpZWRfbmFtZSk6IE5vdyB1c2VzIHBhcmFtZXRlciBuYW1lIGFzIGEgV0ZMIG5vZGUuCgkocGFyc2VyX2NoZWNrX3N1cGVyX2ludGVyZmFjZSk6IE5ldyBwYXJhbWV0ZXIgd2ZsLCBmb3IgYWNoaWV2ZQoJZ3JlYXRlciBhY2N1cmFjeSBkdXJpbmcgZXJyb3IgcmVwb3J0cy4KCShwYXJzZXJfY2hhaW5faW5jb21wbGV0ZV9pdGVtKTogTmV3IHBhcmFtZXRlciBuYW1lZCBsb2NhdGlvbi4gVXNlZCwKCWFsb25nIHRoZSBkZWNsLCB0byBjb25zdHJ1Y3QgdGhlIGluY29tcGxldGUgaXRlbSBub2RlLgoJKGphdmFfY29tcGxldGVfY2xhc3MpOiByZXNvbHZlX2NsYXNzIG5vdyB1c2VzIFdGTCBub2RlIGV4dHJhY3RlZAoJZnJvbSB0aGUgaW5jb21wbGV0ZSBpdGVtIG5vZGUuIE1hY3JvIElDX1RZUEUgcmVwbGFjZXMgVFJFRV9QVVJQT1NFCgl3aGVyZSBhcHByb3ByaWF0ZS4KCShjb21wbGV0ZV9tZXRob2RfZGVjbCk6IFVucmVzb2x2ZWQgZnVuY3Rpb24ncyBhcmd1bWVudCB0eXBlcyBhcmUgV0ZMLgoJKHJlc29sdmVfY2xhc3MpOiBQYXJhbWV0ZXIgY2wgaXMgbm93IGEgV0ZMIG5vZGUuCgkocmVzb2x2ZV9hbmRfbGF5b3V0KTogTGlrZXdpc2UuCgkoZG9fcmVzb2x2ZV9jbGFzcyk6IExpa2V3aXNlLiBUcnkgZmlyc3QgdG8gdXNlIGNsIGFuZCB0aGVuIGRvIHRoZQoJbG9va3VwIG9uIHRoZSBkZWNsIHdoZW4gY2FsbGluZyBjaGVja19wa2dfY2xhc3NfYWNjZXNzLgoJKGNvbXBsZXRlX2NsYXNzX3JlcG9ydF9lcnJvcnMpOiBVc2UgSUNfVFlQRSBpbiBwbGFjZSBvZgoJVFJFRV9QVVJQT1NFIHdoZXJlIGFwcHJvcHJpYXRlLiBVc2UgREVQRU5EX1dGTCBvbiBkZXBlbmRlbmN5CglpbnN0ZWFkIG9mIGRvaW5nIGEgbG9va3VwIG92ZXIgdGhlIGRlY2wuCgkoamF2YV9jaGVja19maW5hbCk6IFVzZSBXRkwgaW5mbyBmcm9tIGZpZWxkIHRyZWUgbGlzdC4KCShsb29rdXBfY2wpOiBSZXdyaXR0ZW4gYW5kIHJldHVybnMgYSBzdGF0aWNhbGx5IGRlZmluZWQgV0ZMIG5vZGUuCgkobG9va3VwX21vZGlmaWVyX2NsKTogTm93IHVzZXMgaW5mb3JtYXRpb24gZnJvbSBXRkwgbm9kZXMuCgkocHJvY2Vzc19pbXBvcnRzKTogTGlrZXdpc2UuCgkocmVhZF9pbXBvcnRfZGlyKTogbmFtZSBhbmQgY2wgYXJndW1lbnRzIHJlcGxhY2VkIGJ5IGEgc2luZ2xlIFdGTAoJbm9kZS4gRnVuY3Rpb24gbW9kaWZpZWQgYWNjb3JkaW5nbHkuCgkoZmluZF9pbl9pbXBvcnRzX29uX2RlbWFuZCk6IE5vdyB1c2VzIFdGTCBub2RlLgoJKGNoZWNrX3BrZ19jbGFzc19hY2Nlc3MpOiBjbCBhcmd1bWVudCBpcyBub3cgYSBXRkwgbm9kZS4KCShkZWNsYXJlX2xvY2FsX3ZhcmlhYmxlcyk6IEZpeGVkIHRvIHVzZSBXRkwgbm9kZXMuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBMaWtld2lzZS4KCShidWlsZF9tZXRob2RfaW52b2NhdGlvbl9zdG10KTogbmFtZV9jb21ibyBhcmd1bWVudCByZW5hbWVkCgl3ZmwuIEZ1bmN0aW9uIG1vZGlmaWVkIHRvIHVzZSBXRkwgbm9kZXMuCgkoYnVpbGRfaW52b2tlKTogY2wgdXNlZCBhcyBhIFdGTCBub2RlIHdoZW4gY2FsbGluZyBidWlsZF9leHByX3dmbC4KCShsb29rdXBfbWV0aG9kX2ludm9rZSk6IGNsIGlzIG5vdyBhIFdGTCBub2RlLiBBZGRlZCBtaXNzaW5nCglJREVOVElGSUVSX1BPSU5URVIgdG8gY2xhc3MgdHlwZSBkZWNsIG5hbWUuCgoxOTk4LTA0LTE0ICBEYXZlIEJyb2xsZXkgIDxicm9sbGV5QGN5Z251cy5jb20+CgoJKiBsYW5nLmMgKGluaXRfcGFyc2UpOiBOb3cgcmV0dXJucyBjaGFyKiBjb250YWluaW5nIHRoZSBmaWxlbmFtZS4KCjE5OTgtMDQtMTAgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzKTogIE1hbmdsZSByZXBlYXRlZCBhcmcgdHlwZXMgdG8gbWF0Y2ggY2MxcGx1cy4KCgkqIGRlY2wuYywgamF2YS10cmVlLmggKGludGVnZXJfZm91cl9ub2RlKTogIE5ldyBJTlRFR0VSX0NTVCBub2RlLgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiAgSWYgZmxhZ19hc3N1bWVfY29tcGlsZWQsIGluaXRpYWwgY2xhc3MKCXN0YXRlIGlzIENTVEFURV9QUkVQQVJFRDsgbWFrZSBzdXBlcmNsYXNzIGFuZCBpbnRlcmZhY2VzIGRpcmVjdAoJcmVmZXJlbmNlcywgcmF0aGVyIHRoYW4gY29uc3RhbnQgcG9vbCBpbmRleGVzLgoKMTk5OC0wNC0wOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZXIueTogSW5jbHVkZSBmbGFncy5oLiBSZW1vdmVkIGRlYnVnIHZhcmlhYmxlIHBsLgoJKG1ldGhvZF9kZWNsYXJhdGlvbjopOiBVc2VzIGN0eHAtPnBhcnNlcl9jY2JfaW5kZW50IGluc3RlYWQgb2YgcGwuCgkoYmxvY2s6KTogTGlrZXdpc2UuCgkobGFiZWxlZF9zdGF0ZW1lbnRfbnNpOik6IEdlbmVyYXRlIGRlYnVnIGluZm8gd2hlbiByZWR1Y2luZwoJZXhwcmVzc2lvbl9zdGF0ZW1lbnQ6LgoJKGNoZWNrX3BrZ19jbGFzc19hY2Nlc3MpOiBnZXRfYWNjZXNzX2ZsYWdzX2Zyb21fZGVjbCBpbnZvY2F0aW9uCglmaXhlZCBmb3IgbmV3IENMQVNTXyogZmxhZ3MgbG9jYXRpb24uCgkoc291cmNlX2VuZF9qYXZhX21ldGhvZCk6IFNhdmUvcmVzdG9yZSBwYXJzZXIgY29udGV4dCB3aGVuCgllbnRlcmluZy9sZWF2aW5nIHRoaXMgcm91dGluZS4gUmVzdG9yZSBsaW5lbm8gdG8gaXRzIHJpZ2h0IHZhbHVlCgliZWZvcmUgY2FsbGluZyBleHBhbmRfZW5kX2JpbmRpbmdzLgoJKGJ1aWxkX21ldGhvZF9pbnZvY2F0aW9uX3N0bXQpOiBidWlsZF9pbnZva2UgY2FsbGVkIHdpdGggdGhlCgljdXJyZW50IGxpbmUgaW5mb3JtYXRpb24uCgkoYnVpbGRfaW52b2tlKTogTmV3IGFyZ3VtZW50IGNsLiBXcmFwIHRoZSBmdW5jdGlvbiBjYWxsIGFyb3VuZCBhCgl3Zmwgbm9kZS4KCShyZWZpbmVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBDaGFuZ2VkIGNvbW1lbnQsIHJlbW92ZWQKCXVubmVjZXNzYXJ5IGNvZGUuCgkqIHBhcnNlLmg6IEZpeGVkIHR5cG8gaW4gY29tbWVudHMuCgkoQ0xBU1NfT1JfSU5URVJGQUNFKTogSGFuZGxlIHRoZSBuZXcgQ0xBU1NfKiBmbGFncyBsb2NhdGlvbi4KCShKQVZBX01BWUJFX0dFTkVSQVRFX0RFQlVHX0lORk8pOiBOZXcgbWFjcm8uCgkoc3RydWN0IHBhcnNlcl9jdHh0KTogTmV3IGZpZWxkcyBjY2JfaW5kZW50LCBsYXN0X2NjYl9pbmRlbnQxLAoJcGFyc2VyX2NjYl9pbmRlbnQuCgkqIGxleC5jIChqYXZhX2xleCk6IFJlY29yZCB0aGUgbGFzdCBjbG9zaW5nIGN1cmx5IGJyYWNrZXQgb2YgYQoJZnVuY3Rpb24uCgkqIGpjZi1wYXJzZS5jIChqY2ZfcGFyc2Vfc291cmNlKTogTm93IGNhbGxzCglqYXZhX2NoZWNrX21ldGhvZHMuIENsYXJpZmllZCBjb21tZW50LCBmaXhlZCB0eXBvLgoKMTk5OC0wNC0wOSAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogbGFuZy5jIChpbml0X3BhcnNlKTogRXhwb3NlIGZvciBub24gVVNFX0NQUExJQiBidWlsZHMuCgkoZmluaXNoX3BhcnNlKTogRXhwb3NlIGZvciBub24gVVNFX0NQUExJQiBidWlsZHMuCgoxOTk4LTA0LTA4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBsYW5nLmMgKGxhbmdfcHJpbnRfeG5vZGUpOiBOZXcgZnVuY3Rpb24uCgoxOTk4LTA0LTAzICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY2xhc3NfZHRhYmxlX2RlY2wpLCBqYXZhLXRyZWUuaDogIE5ldyB0cmVlIG5vZGUuCgkqIGNsYXNzLmMgKGdldF9kaXNwYXRjaF92ZWN0b3IsIGdldF9kaXNwYXRjaF90YWJsZSk6ICBOZXcgZnVuY3Rpb25zCgl1c2VkIHRvIGJ1aWxkIGEgY2xhc3MncyBkaXNwYXRjaCB0YWJsZS4KCShtYWtlX2NsYXNzX2RhdGEpOiAgR2VuZXJhdGUgZGlzcGF0Y2ggdGFibGUgaWYgZmxhZ19hc3N1bWVfY29tcGlsZWQuCglTZXQgZHRhYmxlIG9mIGNsYXNzIG9iamVjdCB0byBhZGRyZXNzIG9mIGNsYXNzX2R0YWJsZV9kZWNsLgoKCSogZGVjbC5jIChpbnRfZGVjbF9wcm9jZXNzaW5nKTogIE1ha2Ugc29mdF9iYWRhcnJheWluZGV4X25vZGUKCWJlIHZvbGF0aWxlIGFuZCBoYXZlIHNpZGUgZWZmZWN0cyAtIGdlbmVyYXRlcyBiZXR0ZXIgY29kZS4KCgkqIGNsYXNzLmMsIGV4cHIuYywgcGFyc2UueTogIENMQVNTX0lOVEVSRkFDRSwgQ0xBU1NfRklOQUwsIGV0YzoKCVRoZXNlIGZsYWdzIHdlcmUgZGVmaW5lZCBmb3IgVFlQRV9ERUNMcywgYnV0IHVzZWQgb24gUkVDT1JEX1RZUEVzLgoKCSogZXhwci5jIChleHBhbmRfaW52b2tlKTogIElmIGNsYXNzIGlzIGZpbmFsLCBtZXRob2QgaXMKCWVmZmVjdGl2ZWx5IGZpbmFsLCBzbyBjYW4gY2FsbCBpdCBkaXJlY3RseS4KCgkqIGphdmEtdHJlZS5oIChUWVBFX05WSVJUVUFMUywgVFlQRV9WVEFCTEUpOiAgTmV3IG1hY3Jvcy4KCgkqIE1ha2VmaWxlLmluLCBNYWtlLWxhbmcuaW46ICBBZGQgbWlzc2luZyAkKGV4ZWV4dClzLgoKMTk5OC0wMy0xOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChidWlsZF9tZXRob2RfaW52b2NhdGlvbl9zdG10KTogUmVtb3ZlZCBleHRyYSBhcmd1bWVudAoJdG8gYnVpbGRfaW52b2tlLgoKMTk5OC0wMy0xNiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGR0YWJsZV9pbmRlbnQpOiBOb3cgc3RhdGljIGdsb2JhbC4KCShleHBhbmRfaW52b2tlKTogTm93IGNhbGwgaW52b2tlX2J1aWxkX2R0YWJsZSBhbmQKCWJ1aWxkX2ludm9rZXZpcnR1YWwuCgkoaW52b2tlX2J1aWxkX2R0YWJsZSwgYnVpbGRfaW52b2tldmlydHVhbCk6IE5ldyBmdW5jdGlvbnMuCgkqIGpjZi1pby5jIChmaW5kX2NsYXNzKTogRGVmZXIgaXNzdWluZyBhIHdhcm5pbmcgYnkgc2V0dGluZwoJamNmLT5vdXRvZnN5bmNoIHRvIDEuCgkqIGpjZi1wYXJzZS5jIChqY2Zfb3V0X29mX3N5bmNoKTogTmV3IGZ1bmN0aW9uLgoJKGxvYWRfY2xhc3MpOiBUZXN0IHRoaXNfamNmLm91dG9mc3luY2ggZmxhZyBhbmQgY2FsbAoJamNmX291dF9vZl9zeW5jaCBhY2NvcmRpbmdseS4KCSogamNmLmg6ICh0eXBlZGVmIHN0cnVjdCBKQ0YpOiBOZXcgZmxhZyBvdXRvZnN5bmNoLiBGaXhlZCB0eXBvIGluCgljb21tZW50IGluZGVudGF0aW9uLgoJKiBsZXguYyAoamF2YV9nZXRfdW5pY29kZSk6IEZpeGVkIGNvZGUgaW5kZW50YXRpb24uCgkoamF2YV9sZXgpOiBDcmVhdGUgc3RyaW5nIGxpdGVyYWwuIEZpeGVkIHR5cG8uIFJlbW92ZWQgc2V2ZXJhbAoJcHJlbWF0dXJlIG9ic3RhY2tfZnJlZS4KCSogcGFyc2UuaDogTmV3IGVudW1zIGZvciBuYW1lIHJlc29sdXRpb24gYW5kIGludm9jYXRpb24gbW9kZS4KCShzdHJ1Y3QgcXVhbGlmaWNhdGlvbik6IE5ldyBkYXRhIHN0cnVjdHVyZS4KCShSRVNPTFZFX0NIQUlOX1JFTUFJTkRFUiwgQlVJTERfUFRSX0ZST01fTkFNRSk6IE5ldyBtYWNyb3MuCgkoZG9fcmVzb2x2ZV9jbGFzcywgYnVpbGRfbWV0aG9kX2ludm9jYXRpb25fc3RtdCwKCWJyZWFrZG93bl9xdWFsaWZpZWQsIHF1YWxpZnlfYW1iaWd1b3VzX25hbWUsIHJlc29sdmVfYW5kX2xheW91dCwKCWRlYnVnX2xpbmUsIGlkZW50aWNhbF9zdWJwYXRoX3AsIGludm9jYXRpb25fbW9kZSwKCXJlZmluZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCwgYnVpbGRfaW52b2tlLAoJbG9va3VwX21ldGhvZF9pbnZva2UpOiBOZXcgZnVuY3Rpb25zIGRlY2xhcmVkLgoJKGJ1aWxkX2ludm9rZXZpcnR1YWwsIGludm9rZV9idWlsZF9kdGFibGUsIG1hdGNoX2phdmFfbWV0aG9kLAoJYnVpbGRfZmllbGRfcmVmLCBqY2Zfb3V0X29mX3N5bmNoKTogTmV3IHJlZmVyZW5jZXMgdG8gZXh0ZXJuYWwKCWZ1bmN0aW9ucy4KCShzdHJ1Y3QgcGFyc2VfY3R4dCk6IFJlbW92ZWQgYXJ0aWZpY2lhbF9jb25zdHJ1Y3RvciBmaWVsZC4KCSogcGFyc2UueTogKGFycmF5X3R5cGU6KTogVHlwZSBkZWZpbmVkIGZvciB0aGlzIHJ1bGUuCgkoY2xhc3NfdHlwZTopOiBJbnN0YWxsZWQgZGVmYXVsdCBydWxlIGZvciBpbnRlcmZhY2VfdHlwZTouCgkoYXJyYXlfdHlwZTopOiBOb3cgYnVpbGQgSmF2YSBhcnJheSB0eXBlLgoJKHF1YWxpZmllZF9uYW1lOik6IE5vdyB1c2Ugb2JzdGFja19ncm93MC4KCShtZXRob2RfZGVjbGFyYXRpb246KTogU2tpcCB0aGUgYXJ0aWZpY2lhbCBjb25zdHJ1Y3RvciBhZGRlZCB0bwoJdGhlIGxpc3QsIGlmIGFueS4KCShhYnN0cmFjdF9tZXRob2RfZGVjbGFyYXRpb246KTogRXhlY3V0ZSB0aGUgY29kZSBvbmx5IGR1cmluZyBwYXNzIDEuCgkoYmxvY2s6KTogSW5zdGFsbGVkIGRlZmF1bHQgcnVsZSBpbiBibG9ja19zdGF0ZW1lbnRzOi4KCShibG9ja19zdGF0ZW1lbnQ6KTogQWRkIHRoZSBzdGF0ZW1lbnQgdG8gdGhlIG1ldGhvZCBkdXJpbmcgcGFzcyAyLgoJKHN0YXRlbWVudF9leHByZXNzaW9uKTogSW5zdGFsbGVkIGRlZmF1bHQgcnVsZSBmb3IKCW1ldGhvZF9pbnZvY2F0aW9uOi4KCShhcmd1bWVudF9saXN0Oik6IEFkZGVkIGNvZGUgdG8gYnVpbGQgdGhlIGFyZ3VtZW50IGxpc3QuCgkobWV0aG9kX2ludm9jYXRpb246KTogQWRkZWQgY2FsbCB0byBjcmVhdGUgdGhlIG1ldGhvZCBpbnZvY2F0aW9uCglub2RlLgoJKHl5ZXJyb3IpOiBOb3cgdXNlIG9ic3RhY2tfZ3JvdzAuIFJlbW92ZWQgYm9ndXMgb2JzdGFja19mcmVlLgoJKGRlYnVnX2xpbmUpOiBOZXcgZnVuY3Rpb24gZm9yIGRlYnVnLgoJKGNvbXBsZXRlX2NsYXNzX2RlY2wpOiBObyBsb25nZXIgZG8gc29tZXRoaW5nIGR1cmluZyBwYXNzIDEuCgkobWV0aG9kX2hlYWRlcik6IFVzZSBCVUlMRF9QVFJfRlJPTV9OQU1FLgoJKHBhcnNlcl9xdWFsaWZpZWRfY2xhc3NuYW1lKTogVXNlIG9ic3RhY2tfZ3JvdzAuIFJlbW92ZWQgYm9ndXMKCW9ic3RhY2tfZnJlZS4KCShwYXJzZXJfY2hhaW5faW5jb21wbGV0ZV9pdGVtKTogVXNlIEJVSUxEX1BUUl9GUk9NX05BTUUuIE1vZGlmaWVkCglmdW5jdGlvbidzIG1haW4gY29tbWVudC4KCShqYXZhX2NvbXBsZXRlX2NsYXNzKTogU2V0IENMQVNTX0xPQURFRF9QIG9uIGFsbCBmaXhlZCBpbmNvbXBsZXRlCgljbGFzc2VzLgoJKGNvbXBsZXRlX21ldGhvZF9kZWNsKTogVXNlIEJVSUxEX1BUUl9GUk9NX05BTUUgYW5kIHByb21vdGUgdHlwZXMuCgkocmVzb2x2ZV9jbGFzcyk6IE5vdyB3b3JrcyB3aXRoIGFycmF5cy4KCShkb19yZXNvbHZlX2NsYXNzLCByZXNvbHZlX2FuZF9sYXlvdXQpOiBOZXcgZnVuY3Rpb25zLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogUmV2ZXJzZSBtZXRob2QgbGlzdCBiZWZvcmUgYW5kIGFmdGVyCgloYXZpbmcgcHJvY2Vzc2VkIGl0LiBObyBsb25nZXIgc2V0IGN0eHAtPmFydGlmaWNpYWxfY29uc3RydWN0b3IuCgkocmVhZF9pbXBvcnRfZGlyKTogVGVzdCBqY2YtPm91dG9mc3luY2ggYW5kIGNhbGwgamNmX291dF9vZl9zeW5jaAoJYWNjb3JkaW5nbHkuIEZpeGVkIHR5cG8gaW4gaXNzdWVkIGVycm9yIG1lc3NhZ2UuIE5vdyB1c2UKCW9ic3RhY2tfZ3JvdzAuCgkoZmluZF9pbl9pbXBvcnRzX29uX2RlbWFuZCk6IE5vdyB1c2Ugb2JzdGFja19ncm93MC4KCShkZWNsYXJlX2xvY2FsX3ZhcmlhYmxlcyk6IFVzZSBCVUlMRF9QVFJfRlJPTV9OQU1FLgoJKHNvdXJjZV9lbmRfamF2YV9tZXRob2QpOiBDYWxsIGV4cGFuZF9leHByX3N0bXQgaW5zdGVhZCBvZgoJZXhwYW5kX2V4cHIuIENhbGxzIGl0IGJlZm9yZSBjYWxsaW5nIGV4cGFuZF9mdW5jdGlvbl9lbmQuCgkoamF2YV9tZXRob2RfYWRkX3N0bXQpOiBEbyBub3RoaW5nIGlmIGVycm9ycyB3ZXJlIGZvdW5kIGR1cmluZwoJcGFyc2luZy4KCShqYXZhX2xheW91dF9wYXJzZWRfY2xhc3MpOiBTZXQgQ0xBU1NfTE9BREVEX1AgYW5kIGZpeGVkIHR5cG8uCgkoYnVpbGRfbWV0aG9kX2ludm9jYXRpb25fc3RtdCwgYnVpbGRfaW52b2tlLCBpbnZvY2F0aW9uX21vZGUsCglsb29rdXBfbWV0aG9kX2ludm9rZSwgcmVmaW5lX2FjY2Vzc2libGVfbWV0aG9kc19saXN0LAoJcXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSwgYnJlYWtkb3duX3F1YWxpZmllZCwgaWRlbnRpY2FsX3N1YnBhdGhfcCk6CglOZXcgZnVuY3Rpb25zLgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9zaWduYXR1cmUpOiBQcm9wZXJseSBlbmQgbWV0aG9kIHNpZ25hdHVyZQoJaWYgcmV0dXJuIHR5cGUgc2tpcHBlZC4KCShtYXRjaF9qYXZhX21ldGhvZCk6IE5ldyBmdW5jdGlvbi4KCjE5OTgtMDMtMTYgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogamNmLWlvLmMgKGZpbmRfY2xhc3NmaWxlKTogIElmIFVTRV9KQ0ZfU1RESU8sIGZvcGVuIGluIGJpbmFyeSBtb2RlLgoKMTk5OC0wMi0yNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2ludm9rZV9ub25faW50ZXJmYWNlKTogTmV3IGZ1bmN0aW9uLgoJKG1ldGhvZHNfaWRlbnQsIG5jb2RlX2lkZW50KTogTm93IHN0YXRpYyBnbG9iYWxzLgoJKGV4cGFuZF9pbnZva2UpOiBVc2UgYnVpbGRfaW52b2tlX25vbl9pbnRlcmZhY2UuCgkqIGphdmEtdHJlZS5oIChzdHJ1Y3QgbGFuZ19kZWNsKTogTmV3IGZpZWxkIGZ1bmN0aW9uX2RlY2xfYm9keS4KCShERUNMX0ZVTkNUSU9OX0JPRFkpOiBOZXcgbWFjcm8uCgkqIGpjZi1wYXJzZS5jIChqY2ZfcGFyc2Vfc291cmNlKTogRGVlcGVyIGNoZWNrIGJlZm9yZSBzZXR0aW5nCglDTEFTU19GUk9NX1NPVVJDRV9QLgoJKHBhcnNlX3NvdXJjZV9maWxlKTogRml4ZWQgdHlwb3MuIENhbGwgamF2YV9sYXlvdXRfcGFyc2VkX2NsYXNzCgliZWZvcmUgc3RhcnRpbmcgcGFzcyAyLiBDYWxsIHRvIGphdmFfZ2VuZXJhdGVfcGFyc2VkX2NsYXNzIHJlcGxhY2VkCglieSBqYXZhX3JlZ2lzdGVyX3BhcnNlZF9jbGFzcy4KCSogbGV4LmM6IEZpeGVkIHR5cG8gaW4gaGVhZGVyLiBTb21lIGxpbmUgd2lkdGggcmVsYXRlZCBmb3JtYXRpbmcuCgkqIGxleC5oOiBTb21lIGxpbmUgd2lkdGggcmVsYXRlZCBmb3JtYXRpbmcuCgkqIHBhcnNlLmggKHNvdXJjZV9lbmRfamF2YV9tZXRob2QsIHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lLAoJY29tcGxldGVfY2xhc3NfZGVjbCwgbWF5YmVfY3JlYXRlX2NsYXNzX2ludGVyZmFjZV9kZWNsLAoJY2hlY2tfY2xhc3NfaW50ZXJmYWNlX2NyZWF0aW9uKTogTmV3IHN0YXRpYyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgkoamF2YV9sYXlvdXRfcGFyc2VkX2NsYXNzLCBqYXZhX21ldGhvZF9hZGRfc3RtdCk6IE5ldyBmdW5jdGlvbgoJZGVjbGFyYXRpb25zLgoJKHN0cnVjdCBwYXJzZXJfY3R4dCk6IEZpZWxkIG1hcmtfY2xhc3NfZ2VuZXJhdGUgcmVtb3ZlZC4gTmV3CglmaWVsZHMgY2xhc3NfbGlzdCBhbmQgYXJ0aWZpY2lhbF9jb25zdHJ1Y3Rvci4KCSogcGFyc2UueTogRml4ZWQgdHlwbyBpbiBoZWFkZXIuCgkoY2xhc3NfZGVjbGFyYXRpb246KTogQ2FsbCBjb21wbGV0ZV9jbGFzc19kZWNsIHdoZW4gY2xhc3MgYm9keQoJcGFyc2VkLgoJKG1ldGhvZF9kZWNsYXJhdGlvbjopOiBDYWxsIHNvdXJjZV9lbmRfamF2YV9tZXRob2QgaW4gcGFzcyAyIHdoZW4KCXRoZSBtZXRob2QgYm9keSBpcyBkZWZpbmVkLgoJKHBvc3RmaXhfZXhwcmVzc2lvbjopOiBEbyBleHByZXNzaW9uIG5hbWUgcmVzb2x1dGlvbiBvbiBzdWItcnVsZQoJbmFtZSBkdXJpbmcgcGFzcyAyLgoJKGNyZWF0ZV9jbGFzcywgY3JlYXRlX2ludGVyZmFjZSk6IE1lcmdlZCBjb21tb24gcGllY2VzLgoJKGNoZWNrX2NsYXNzX2ludGVyZmFjZV9jcmVhdGlvbiwgbWF5YmVfY3JlYXRlX2NsYXNzX2ludGVyZmFjZV9kZWNsKToKCU5ldyBmdW5jdGlvbnMuCgkoY29tcGxldGVfY2xhc3NfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShyZWdpc3Rlcl9maWVsZHMpOiBGaXhlZCBsaW5lIHdpZHRoIHJlbGF0ZWQgdHlwby4KCShtZXRob2RfaGVhZGVyKTogQ29ycmVjdGx5IHNraXAgZmlyc3QgYXJndW1lbnQgd2hlbiBmaXhpbmcKCWFyZ3VtZW50IGxpbmUuIENoYW5nZWQgdGhlIGxvb3AuCgkoamF2YV9jaGVja19jaXJjdWxhcl9yZWZlcmVuY2UpOiBOb3cgdXNlIGN0eHAtPmNsYXNzX2xpc3QuCgkoamF2YV9jb21wbGV0ZV9jbGFzcyk6IFJlbW92ZWQgc3RhcnQvc3RvcCBtYXJraW5nLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogTm93IHRha2VzIGEgY2xhc3MgZGVjbCBhcyBhbgoJYXJndW1lbnQuICBBZGQgZGVmYXVsdCBjb25zdHJ1Y3RvciBpZiBub25lIHdlcmUgZW5jb3VudGVyZWQuCgkoamF2YV9jaGVja19tZXRob2RzKTogTm93IHVzZSBjdHhwLT5jbGFzc19saXN0LiBDaGFuZ2VkIGNhbGwgdG8KCWphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzLgoJKHNvdXJjZV9zdGFydF9qYXZhX21ldGhvZCk6IFNldCBERUNMX0FSR19UWVBFIGZvciBlYWNoIGZ1bmN0aW9uCglhcmd1bWVudHMuCgkoc291cmNlX2VuZF9qYXZhX21ldGhvZCwgamF2YV9tZXRob2RfYWRkX3N0bXQpOiBOZXcgZnVuY3Rpb25zLgoJKGphdmFfZ2VuZXJhdGVfcGFyc2VkX2NsYXNzKTogTm8gbG9uZ2VyIGV4aXN0cy4KCShqYXZhX2xheW91dF9wYXJzZWRfY2xhc3MsIGphdmFfcmVnaXN0ZXJfcGFyc2VkX2NsYXNzKTogTmV3IGZ1bmN0aW9ucy4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IE5ldyBmdW5jdGlvbi4KCjE5OTgtMDItMTIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmM6IChwYXJzZV9zb3VyY2VfZmlsZSk6IENoZWNrIG9uIGVycm9ycyBhZnRlciBpbml0IGxleC4KCSogbGV4LmM6IChqYXZhX2luaXRfbGV4KTogRGVmZXIgY3R4cC0+amF2YV9wYXNzIGluaXRpYWxpemF0aW9uCgl1bnRpbCBwYXNzIGluaXRpYWxpemF0aW9ucyBhcmUgZG9uZS4gQ2FsbCByZWFkX2ltcG9ydF9kaXIgd2l0aAoJcGFzcyBzZXQgdG8gMC4KCSogcGFyc2UuaDogKGxvb2t1cF9tb2RpZmllcl9jbCk6IE5ldyBmdW5jdGlvbiBkZWNsYXJlZC4KCShJTlRFUkZBQ0VfRklFTERfTU9ESUZJRVJTKTogTmV3IG1hY3JvLgoJKE9CU09MRVRFX01PRElGSUVSX1dBUk5JTkcpOiBOZXcgbWFjcm8uCgkqIHBhcnNlLnk6IChyZWdpc3Rlcl9maWVsZHMpOiBDbGFzcyB0eXBlIGFuZCBjdXJyZW50IGZpZWxkIG5hbWUgaW4KCWxvY2FsIHZhcmlhYmxlcy4gQ2hlY2sgbW9kaWZpZXIocykgaWYgYWRkaW5nIGZpZWxkKHMpIHRvIGFuIGludGVyZmFjZS4KCShjaGVja19hYnN0cmFjdF9tZXRob2RfaGVhZGVyKTogTm93IHVzZSBPQlNPTEVURV9NT0RJRklFUl9XQVJOSU5HCglhbmQgcmVwb3J0IGVycm9ycyB1c2luZyB0aGUgZmF1bHR5IG1vZGlmaWVyIGxpbmUgY29udGV4dC4KCShsb29rdXBfbW9kaWZpZXJfY2wpOiBOZXcgZnVuY3Rpb24uCgkocmVhZF9pbXBvcnRfZGlyKTogRGV0ZWN0IGFuZCByZXBvcnQgZGVmYXVsdCBpbXBvcnQgcHJvY2Vzc2luZwoJZmFpbHVyZS4KCjE5OTgtMDItMTEgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJQWRkIGEgcGFpciBvZiAtZmFzc3VtZS1jb21waWxlZC8tZm5vLWFzc3VtZS1jb21waWxlZCBvcHRpb25zLgoJKiBjbGFzcy5jIChpc19jb21waWxlZF9jbGFzcyk6IFJldHVybiAxIGFmdGVyIG1ha2luZyBzdXJlIGl0CglxdWFsaWZpZXMgYXMgbG9hZGVkLCBpZiBGTEFHX0FTU1VNRV9DT01QSUxFRCBpcyBzZXQuCgkqIGxhbmctb3B0aW9ucy5oOiBBZGQgLWZhc3N1bWUtY29tcGlsZWQvLWZuby1hc3N1bWUtY29tcGlsZWQuCgkqIGphdmEtdHJlZS5oIChmbGFnX2Fzc3VtZV9jb21waWxlZCk6IEFkZCBkZWNsLgoJKiBsYW5nLmMgKGxhbmdfZl9vcHRpb25zKTogQWRkIHRoZSBmbGFnLgoJKGZsYWdfYXNzdW1lX2NvbXBpbGVkKTogQWRkIGRlY2wsIGRlZmF1bHQgdG8gMC4KCjE5OTgtMDItMTEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoY2xhc3NfZGVwdGgpOiBDYWxsIHRvIGxvYWRfY2xhc3MgdXNlcyBleHRyYSBWRVJCT1NFIGFyZy4KCShpc19jb21waWxlZF9jbGFzcyk6IExpa2V3aXNlLgoJKGxheW91dF9jbGFzcyk6IExpa2V3aXNlLgoJKGxheW91dF9jbGFzcyk6IERldGVjdCBhbmQgbGF5IG91dCBjbGFzc2VzIGRlZmluZWQgaW4gc291cmNlIGNvZGUuCgkoaW50ZXJmYWNlX29mX3AsIGFkZF9pbnRlcmZhY2VfZG8sIG1heV9hZGRfaW50ZXJmYWNlKTogTmV3CglmdW5jdGlvbi4KCShhZGRfaW50ZXJmYWNlKTogTm93IHVzZSBhZGRfaW50ZXJmYWNlX2RvLgoJKGFkZF9tZXRob2RfMSk6IE5ldyBmdW5jdGlvbi4KCShhZGRfbWV0aG9kKTogTm93IHVzZSBhZGRfbWV0aG9kXzEuCgkocHVzaGxldmVsKTogRGVidWcgbWVzc2FnZSBjb25kaXRpb25hbCB0byBTT1VSQ0VfRlJPTlRFTkRfREVCVUcuCgkoY29tcGxldGVfc3RhcnRfamF2YV9tZXRob2QpOiBOZXcgZnVuY3Rpb24uCgkoc3RhcnRfamF2YV9tZWhvZCk6IE5vdyBjYWxsIGNvbXBsZXRlX3N0YXJ0X2phdmFfbWV0aG9kLgoJKiBleHByLmMgKGxvb2t1cF9maWVsZCk6IENhbGwgdG8gbG9hZF9jbGFzcyB1c2VzIGV4dHJhIFZFUkJPU0UgYXJnLgoJKGV4cGFuZF9pbnZva2UpOiBMaWtld2lzZSBhbmQgZml4ZWQgdHlwby4KCSpnamF2YS5jOiAocHJpbnRfc3VwZXJfZmllbGQpOiBVc2UgbmV3IGFyZ3VtZW50IHRvIGZpbmRfY2xhc3MKCURPX0NMQVNTX0ZJTEUuCgkobWFpbik6IExpa2V3aXNlLgoJKmphdmEtdHJlZS5oOiAoQ0xBU1NfRlJPTV9TT1VSQ0VfUCk6IE5ldyBmbGFnIG9uIFJFQ09SRF9UWVBFLgoJKElTX0FfU0lOR0xFX0lNUE9SVF9DTEFTU0ZJTEVfTkFNRV9QLCBJU19BX0NMQVNTRklMRV9OQU1FLAoJUVVBTElGSUVEX1AsIElTX0FOX0lNUE9SVF9PTl9ERU1BTkRfUCk6IE5ldyBmbGFncyBvbgoJSURFTlRJRklFUl9OT0RFLgoJKENMQVNTX0NPTVBMRVRFX1ApOiBOZXcgZmxhZyBvbiBUWVBFX0RFQ0wuCgkoYWRkX21ldGhvZF8xLCBwdXNoX2NsYXNzKTogTmV3IHByb3RvdHlwZXMuCgkqamNmLWR1bXAuYzogZmluZF9jbGFzcyBub3cgdXNlcyBuZXcgRE9fQ0xBU1NfRklMRSBhcmd1bWVudC4KCSpqY2YtaW8uYzogKG9wZW5faW5femlwKTogamNmIG5vdyBzdG9yZXMgYSBwb2ludGVyIHRvIHRoZSBaaXAKCWRpcmVjdG9yeSB3aGVyZSB0aGUgY2xhc3Mgd2FzIGZvdW5kLgoJKGZpbmRfY2xhc3MpOiBOZXcgYXJndW1lbnQgRE9fQ0xBU1NfRklMRS4gRnVuY3Rpb24gZmluZF9jbGFzcwoJbW9kaWZpZWQgYWNjb3JkaW5nbHkuCgkqamNmLXBhcnNlLmM6IChmaXhfY2xhc3NfcGF0aCk6IE5ldyBmdW5jdGlvbi4KCShsb2FkX2NsYXNzKTogVXNlIG5ldyBWRVJCT1NFIGFyZ3VtZW50LiBsb2FkX2NsYXNzIG5vdyBmaW5kcyBhbmQKCWxvYWRzL3BhcnNlcyAuY2xhc3MvLmphdmEgZmlsZXMuIFNhdmUgcmVhZF9zdGF0ZSBvZiBjdXJyZW50X2pjZgoJaWYgbmVjZXNzYXJ5LgoJKGphdmFfcGFyc2VyX2Fib3J0X29uX2Vycm9yKTogTmV3IG1hY3JvLgoJKGpjZl9wYXJzZV9zb3VyY2UsIHBhcnNlX3NvdXJjZV9maWxlKTogTmV3IGZ1bmN0aW9uLgoJKGpjZl9wYXJzZSk6IEZpeGVkIHR5cG8uCgkoeXlwYXJzZSk6IENhbGwgcGFyc2Vfc291cmNlX2ZpbGUgKCkgb25seS4KCShwcm9jZXNzX3ppcF9kaXIpOiBGaXhlZCB0eXBvLCBmaXggemRpci0+ZmlsZW5hbWVfbGVuZ3RoIHdoZW4KCXdyaXRpbmcgdGhlIHJlYWwgY2xhc3MgbmFtZSBiYWNrIGluIHRoZSB6aXAgZGlyZWN0b3J5IGVudHJ5LgoJKGZpbmRfaW5fY3VycmVudF96aXApOiBJREVOVElGSUVSX0NMQVNTX1ZBTFVFIG1heSBiZSBudWxsLgoJKGpjZl9maWd1cmVfZmlsZV90eXBlKTogRml4ZWQgYm9ndXMgYWxsb2MgYW5kIGJjb3B5LgoJKmpjZi5oOiAodHlwZWRlZiBzdHJ1Y3QgSkNGKTogTmV3IGZpZWxkcyBqYXZhX3NvdXJjZSBhbmQgemlwZC4KCShmaW5kX2NsYXNzKTogUHJvdG90eXBlIGZpeGVkLgoJKmxleC5jOiBBZGRlZCAxOTk4IHRpbWUgc3RhbXAuCglSZW1vdmVkIGFsbCBzdGF0aWMgZ2xvYmFsIHZhcmlhYmxlcywgbW92ZWQgaW50byB0aGUgcGFyc2VyCgljb250ZXh0IGRhdGEgc3RydWN0dXJlLi4gTm93IGluY2x1ZGUgdW5pc3RkLmggaWYgU0VFS19TRVQgbm90CglkZWZpbmVkLgoJKGphdmFfaW5pdF9sZXgpOiBSZXdyaXR0ZW4uCgkoamF2YV9zbmVha191bmljb2RlKTogTW9kaWZpZWQgY3VycmVudCB1bmljb2RlIGFjY2VzcyBpbiBjdXJyZW50IGxpbmUuCgkoamF2YV91bmdldF91bmljb2RlKTogTGlrZXdpc2UuCgkoamF2YV9hbGxvY2F0ZV9uZXdfbGluZSk6IE5ldyBhbGxvY2F0aW9uIG1hbmFnZW1lbnQuCgkoamF2YV9yZWFkX2NoYXIpOiBNb2RpZmllZCBhY2Nlc3MgYW5kIHN0b3JhZ2Ugb2YgdW5nZXRfdXRmOF92YWx1ZS4KCU5ldyB3YXkgb2YgcHJvY2Vzc2luZyBjdXJyZW50IHVuaWNvZGUuCgkoamF2YV9zdG9yZV91bmljb2RlLCBqYXZhX3JlYWRfdW5pY29kZSk6IEZpeGVkIHR5cG8gaW4gZGVjbGFyYXRpb24uCgkoamF2YV9nZXRfdW5pY29kZSk6IE5vdyB1c2UgdGhlIHBhcnNlciBjb250ZXh0LgoJKGphdmFfbGluZXRlcm1pbmF0b3IpOiBMaWtld2lzZS4KCShqYXZhX2xleCk6IE5vdyB1c2VkIGphdmFfbHZhbCBhcmd1bWVudCAocG9pbnRlciB0byBZWVNUWVBFKSwgcGFydAoJb2YgdGhlIHJlZW50cmFudCBwYXJzZXIgaW1wbGVtZW50YXRpb24uIEZ1bmN0aW9uIG5vdyB1c2UgdGhlCglwYXJzZXIgY29udGV4dCBkYXRhIHN0cnVjdHVyZSBhbmQgamF2YV9sdmFsLiBGaXhlZCBwcm9kdWN0aW9uIG9mCgl0aGUgZmxvYXQgYW5kIGRvdWJsZSBjb25zdGFudCAib3V0IG9mIHJhbmdlIiBlcnJvciBtZXNzYWdlLiBGaXhlZAoJb2JzdGFjayB1c2UuIFJldHVybiBpbnRlZ2VyIHZhbHVlIHdoZW4gaGl0dGluZyBhIG1vZGlmaWVyLiBOb3cKCXJldHVybiB0eXBlIGZvciBUUlVFLCBGQUxTRSBhbmQgb3RoZXIgcHJlZGVmaW5lZCB0eXBlcy4gUmV0dXJuCglpZGVudGlmaWVyIGFzIGEgVFJFRV9MSVNUIGxpc3QgY29udGFpbmluZyB0aGUgY3VycmVudCBsaW5lIGNvbnRleHQKCWFzIHRoZSBUUkVFX1ZBTFVFIHN1Yi1ub2RlLgoJKGphdmFfdW5pY29kZV8yX3V0ZjgpOiBGaXhlZCB0eXBvIGluIGRlY2xhcmF0aW9uLgoJKGphdmFfbGV4X2Vycm9yKTogTm93IHVzZSB0aGUgcGFyc2VyIGNvbnRleHQgZGF0YSBzdHJ1Y3R1cmUuCgkqbGV4Lmg6IEFkZGVkIDE5OTggdGltZSBzdGFtcC4KCShzdHJ1Y3QgamF2YV9saW5lKTogTmV3IGZpZWxkcyByZWZfY291bnQgYW5kIG5leHQuCgkoSkFWQV9MSU5FX0NIRUNLLCBKQVZBX0xJTkVfTUFSSywgSkFWQV9MSU5FX0NIQUlOLAoJSkFWQV9MSU5FX1VOTUFSSywgSURfTkFNRSwgSURfQ0wpOiBOZXcgbWFjcm9zLgoJKEpBVkFfRkxPQVRfUkFOR0VfRVJST1IsIEpBVkFfSU5URUdSQUxfUkFOR0VfRVJST1IsIFVOR0VUQyk6IEZpeGVkLgoJKnBhcnNlLmg6IEFkZGVkIDE5OTggdGltZSBzdGFtcC4KCShqYXZhX3BhcnNlX3NvdXJjZV9maWxlKTogUmVuYW1lZCBmcm9tIHBhcnNlX3NvdXJjZV9maWxlLgoJKFlZRVJST1JfTk9XLCBZWU5PVF9UV0lDRSk6IEZpeGVkLgoJKENMQVNTX01PRElGSUVSUywgRklFTERfTU9ESUZJRVJTLCBNRVRIT0RfTU9ESUZJRVJTLAoJSU5URVJGQUNFX01PRElGSUVSLCBJTlRFUkZBQ0VfTUVUSE9EX01PRElGSUVSUywKCUpBVkFfTU9ESUZJRVJfQ1RYX1VOTUFSSywgSUNfREVDTCwgSUNfREVQRU5ELCBERVBFTkRfREVDTCwKCVRISVNfTU9ESUZJRVJfT05MWSwgQUJTVFJBQ1RfQ0hFQ0ssIEJFR0lOX09OTFlfUEFTUywKCUVORF9PTkxZX1BBU1MsIEVMU0VfT05MWV9QQVNTLCBleGl0X2phdmFfY29tcGxldGVfY2xhc3MsCglDTEFTU19PUl9JTlRFUkZBQ0UsIElOQ09NUExFVEVfUCk6IE5ldyBtYWNyb3MuCgkoc3RydWN0IHBhcnNlcl9jdHh0KTogTmV3IGRhdGEgc3RydWN0dXJlIHRvIGtlZXAgdGhlIHBhcnNlciBjb250ZXh0LgoJKnBhcnNlLnk6IEFkZGVkIDE5OTggdGltZSBzdGFtcCwgZ290IHJpZCBvZiBzdGF0aWMgZ2xvYmFsIHZhcmlhYmxlcy4KCShqYXZhX2Vycm9yX2NvdW50LCBjdHhwKTogTmV3IGdsb2JhbCB2YXJpYWJsZXMuCgkoJXVuaW9uKTogTmV3IHZhbHVlIGZpZWxkLgoJKG51bWVyaWNfdHlwZSwgaW50ZWdyYWxfdHlwZSk6IFJ1bGVzIHJlbW92ZWQuCgkocHJpbWl0aXZlX3R5cGUpOiBSdWxlIGRlZmluZWQgdG8gaGFuZGxlIGludGVncmFsLCBmbG9hdCwgZG91YmxlIGFuZAoJYm9vbGVhbiB0eXBlcy4KCShxdWFsaWZpZWRfbmFtZSwgcGFja2FnZV9kZWNsYXJhdGlvbiwKCXNpbmdsZV90eXBlX2ltcG9ydF9kZWNsYXJhdGlvbiwgdHlwZV9pbXBvcnRfb25fZGVtYW5kX2RlY2xhcmF0aW9uLAoJbW9kaWZpZXJzLCBjbGFzc19kZWNsYXJhdGlvbiwgc3VwZXIsIGludGVyZmFjZXMsCglpbnRlcmZhY2VfdHlwZV9saXN0LCBjbGFzc19ib2R5LCBmaWVsZF9kZWNsYXJhdGlvbiwKCWZpZWxkX2RlY2xhcmF0aW9uLCB2YXJpYWJsZV9kZWNsYXJhdG9ycywgdmFyaWFibGVfZGVjbGFyYXRvciwKCXZhcmlhYmxlX2RlY2xhcmF0b3JfaWQsIG1ldGhvZF9kZWNsYXJhdGlvbiwgbWV0aG9kX2hlYWRlciwKCWZvcm1hbF9wYXJhbWV0ZXJfbGlzdCwgZm9ybWFsX3BhcmFtZXRlciwgbWV0aG9kX2JvZHksIGJsb2NrLAoJc3RhdGljLCBpbnRlcmZhY2VfZGVjbGFyYXRpb24sIGV4dGVuZHNfaW50ZXJmYWNlcywKCWFic3RyYWN0X21ldGhvZF9kZWNsYXJhdGlvbiwgbG9jYWxfdmFyaWFibGVfZGVjbGFyYXRvcnMpOiBSdWxlcyBub3cKCWRlZmluZSBhY3Rpb25zLgoJKGZvcmNlX2Vycm9yLCBkb193YXJuaW5nKTogTmV3IGdsb2JhbCBzdGF0aWNzLgoJKHB1c2hfcGFyc2VyX2NvbnRleHQsIHBhcnNlcl9jb250ZXh0X3NhdmVfZ2xvYmFsLAoJcGFyc2VyX2NvbnRleHRfcmVzdG9yZV9nbG9iYWwsIHBvcF9wYXJzZXJfY29udGV4dCk6IE5ldyBmdW5jdGlvbnMuCgkoeXllcnJvcik6IE5vdyB1c2VzIHRoZSBnbG9iYWwgcGFyc2VyIGNvbnRleHQuIEZpeGVkIHVzZSBvZiBvYnN0YWNrLgoJKHBhcnNlX2Vycm9yLCBwYXJzZV9lcnJvcl9jb250ZXh0LCBwYXJzZV93YXJuaW5nX2NvbnRleHQsCglqYXZhX2FjY3N0cmluZ19sb29rdXAsIHJlZGVmaW5pdGlvbl9lcnJvciwgY2hlY2tfbW9kaWZpZXJzLAoJcGFyc2VyX2FkZF9pbnRlcmZhY2UsIGNyZWF0ZV9pbnRlcmZhY2UsIGNyZWF0ZV9jbGFzcywgZmluZF9maWVsZCwKCWR1cGxpY2F0ZV9kZWNsYXJhdGlvbl9lcnJvciwgcmVnaXN0ZXJfZmllbGRzLCBtZXRob2RfaGVhZGVyLAoJY2hlY2tfbW9kaWZpZXJzX2NvbnNpc3RlbmN5LCBjaGVja19hYnN0cmFjdF9tZXRob2RfaGVhZGVyLAoJbWV0aG9kX2RlY2xhcmF0b3IsIHBhcnNlcl9xdWFsaWZpZWRfY2xhc3NuYW1lLAoJcGFyc2VyX2NoZWNrX3N1cGVyX2ludGVyZmFjZSwgcGFyc2VyX2NoZWNrX3N1cGVyLAoJcGFyc2VyX2NoYWluX2luY29tcGxldGVfaXRlbSwgamF2YV9jaGVja19jaXJjdWxhcl9yZWZlcmVuY2UsCglsYXlvdXRfY2xhc3NfZnJvbV9zb3VyY2UsIGphdmFfY29tcGxldGVfY2xhc3MsCgljb21wbGV0ZV9tZXRob2RfZGVjbCwgcmVzb2x2ZV9jbGFzcywgY29tcGxldGVfY2xhc3NfcmVwb3J0X2Vycm9ycywKCWphdmFfY2hlY2tfZmluYWwsIGNoZWNrX21ldGhvZF9yZWRlZmluaXRpb24sCglqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcywgamF2YV9jaGVja19hYnN0cmFjdF9tZXRob2RzLAoJamF2YV9jaGVja19tZXRob2RzLCBsb29rdXBfamF2YV9pbnRlcmZhY2VfbWV0aG9kMiwKCWxvb2t1cF9qYXZhX21ldGhvZDIsIGxvb2t1cF9jbCwgZmluZF9uYW1lX2luX3NpbmdsZV9pbXBvcnRzLAoJcHJvY2Vzc19pbXBvcnRzLCBmaW5kX2luX2ltcG9ydHMsIHJlYWRfaW1wb3J0X2VudHJ5LAoJcmVhZF9pbXBvcnRfZGlyLCBmaW5kX2luX2ltcG9ydHNfb25fZGVtYW5kLAoJY2hlY2tfcGtnX2NsYXNzX2FjY2Vzcywgbm90X2J1aWx0aW5fcCwgZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMsCglzb3VyY2Vfc3RhcnRfamF2YV9tZXRob2QsIGphdmFfZ2VuZXJhdGVfcGFyc2VkX2NsYXNzKTogTmV3CglmdW5jdGlvbnMuCgkqdHlwZWNrLmM6IChzaWduYXR1cmVfaW5jbHVkZV9yZXR1cm4pOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKGJ1aWxkX2phdmFfc2lnbmF0dXJlKTogVXNlIFNJR05BVFVSRV9JTkNMVURFX1JFVFVSTiBmaWd1cmUgd2hldGhlcgoJdG8gYWRkIHRoZSBmdW5jdGlvbiByZXR1cm5lZCB0eXBlIGluIHRoZSBzaWduYXR1cmUuCgoxOTk4LTAyLTA5ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogamNmLWlvLmMgKG9wZW5faW5femlwKTogVXNlIHN0cm5jbXAgYW5kIExFTi4KCjE5OTgtMDEtMjkgIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS5pbmZvKTogQWRkZWQuCgkoamF2YS5pbnN0YWxsLWluZm8pOiBBZGRlZAoKMTk5OC0wMS0yNyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChjbGVhbik6IEFsc28gcmVtb3ZlIGphdmEvcGFyc2UuYy4KCjE5OTgtMDEtMjYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJQWRkIGEgcGFpciBvZiAtZmJvdW5kcy1jaGVjay8tZm5vLWJvdW5kcy1jaGVjayBvcHRpb25zLgoJKiBsYW5nLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IEFkZCBjb2RlIHRvIGdyb2sgYXJndW1lbnRzLgoJKGZsYWdfYm91bmRzX2NoZWNrKTogQWRkIGRlY2wuCgkobGFuZ19mX29wdGlvbnMpOiBOZXcgYXJyYXkgdy8gdGhlIG9wdGlvbiBpbiBpdC4KCSogamF2YS10cmVlLmggKGZsYWdfYm91bmRzX2NoZWNrKTogQWRkIGRlY2wuCgkqIGxhbmctb3B0aW9ucy5oOiBOZXcgZmlsZS4KCSogZXhwci5jIChidWlsZF9qYXZhX2FycmF5YWNjZXNzKTogVXNlIGZsYWdfYm91bmRzX2NoZWNrIGluc3RlYWQKCW9mIGEgc3RhdGljIG1hY3JvIHZhbHVlLgoJKEpBVkFfQVJSQVlfRVhDRVBUSU9OKTogRGVsZXRlIG1hY3JvLgoKMTk5OC0wMS0yMyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9hcnJheV90eXBlKTogIEZpeCB0d28gYnVncyBpbiBwcmV2aW91cyBjaGFuZ2UuCgkqIGV4cHIuYyAoYnVpbGRfYW5ld2FycmF5KTogIEFkZCBtaXNzaW5nIHByb21vdGVfdHlwZS4KCjE5OTgtMDEtMjIgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCUFkZCBhcnJheSB0eXBlcyB3aXRoIGtub3duIGxlbmd0aCB0byBvcHRpbWl6ZSBib3VuZHMgY2hlY2tpbmcuCgkqIHR5cGVjay5jIChidWlsZF9qYXZhX2FycmF5X3R5cGUpOiAgVGFrZSBsZW5ndGggcGFyYW1ldGVyLgoJKGphdmFfYXJyYXlfdHlwZV9sZW5ndGgsIGJ1aWxkX3ByaW1fYXJyYXlfdHlwZSk6ICBOZXcgZnVuY3Rpb25zLgoJKiBqYXZhLXRyZWUuaDogIFVwZGF0ZSBmb3IgbmV3IGZ1bmN0aW9ucy4KCSogZXhwci5jLCB0eXBlY2suYywgdmVyaWZ5LmM6IFVwZGF0ZSBidWlsZF9qYXZhX2FycmF5X3R5cGUgY2FsbHMuCgkqIGNsYXNzLmM6ICBVc2UgYnVpbGRfcHJpbV9hcnJheV90eXBlLgoJKiBleHByLmMgKGNhbl93aWRlbl9yZWZlcmVuY2VfdG8pOiAgSGFuZGxlIGtub3duLWxlbmd0aCBhcnJheSB0eXBlcy4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6ICBLZWVwIHRyYWNrIG9mIGludGVnZXIgcHVzaCBpbnN0cnVjdGlvbnMKCWZvbGxvd2VkIGJ5IG5ld2FycmF5L2FuZXdhcnJheSwgc28gd2UgY2FuIGJ1aWxkIGtub3duLWxlbmd0aCBhcnJheXMuCgkoSkFWQV9BUlJBWV9EQVRBX09GRlNFVCk6ICBSZXBsYWNlIGJ5IC4uLgoJKGphdmFfYXJyYXlfZGF0YV9vZmZzZXQpOiAgTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX2phdmFfYXJyYXlfbGVuZ3RoX2FjY2Vzcyk6ICBOZXcgZnVuY3Rpb24uICBPcHRpbWl6ZSBpZiBjb25zdGFudC4KCShidWlsZF9qYXZhX2FycmF5YWNjZXNzKTogIENvbnN0YW50IGZvbGQgYm91bmRzIGNoZWNrLgoJKGV4cGFuZF9qYXZhX25ld2FycmF5LCBleHBhbmRfamF2YV9hbmV3YXJyYXkpOiAgUmVwbGFjZWQgYnkgLi4uCgkoYnVpbGRfbmV3YXJyYXksIGJ1aWxkX2FuZXdhcnJheSk6ICBOZXcgZnVuY3Rpb25zLgoJKEFSUkFZX05FV19OVU0sIEFSUkFZX05FV19QVFIpOiAgVXNlIGJ1aWxkX3thLH1uZXdhcnJheS4KCSogdmVyaWZ5LmMgKG1lcmdlX3R5cGVzKTogIEhhbmRsZSBrbm93bi1sZW5naCBhcnJheSB0eXBlcy4KCjE5OTgtMDEtMTkgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogZXhwci5jIChleHBhbmRfYnl0ZV9jb2RlKTogIEZpeCBwZXJmb3JtYWNlIGJ1Zywgd2hpY2ggY2F1c2VkCglzZWFyY2hpbmcgbGluZW51bWJlcl90YWJsZSB0byBiZSBsaW5lYXIgcmF0aGVyIHRoYW4gY29uc3RhbnQuCgoxOTk3LTEyLTEyICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChCSVNPTiwgQklTT05GTEFHUyk6ICBBZGQgbWlzc2luZyBtYWNyb3MuCgoJKiBkZWNsLmMsIGphdmEtdHJlZS5oIChzb2Z0X2Ztb2Rfbm9kZSk6ICBOZXcgZ2xvYmFsLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogIERlZmluZSBfX2J1aWx0aW5fZm1vZC4KCSogZXhwci5jIChidWlsZF9qYXZhX2Jpbm9wKTogIEltcGxlbWVudCBUUlVOQ19NT0RfRVhQUiBmb3IgUkVBTF9UWVBFCgl1c2luZyBfX2J1aWx0aW5fZm1vZC4KCjE5OTctMTItMDQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSoga2V5d29yZC5oOiBOZXcgZmlsZSwgb3V0cHV0IG9mIGtleXdvcmQuZ3BlcmYgYXMgcHJvY2Vzc2VkIGJ5CglncGVyZi4KCSogbGV4LmMgKGphdmFfbGV4X2luaXQpOiBJbml0aWFsaXplIGphdmFfZXJyb3JfZmxhZy4KCSogcGFyc2UuYyAoWVlFUlJPUl9OT1cpOiBVc2VzIGphdmFfZXJyb3JfZmxhZy4KCSogcGFyc2UueTogTmV3IHN0YXRpYyBqYXZhX2Vycm9yX2ZsYWcuIFVzZWxlc3MgZGVmaW5pdGlvbiBvZgoJYnVmZmVyX2Vycm9yIGdvbmUuCgkqIHBhcnNlLnkgKGphdmFfZXJyb3IpOiBQb3J0YWJsZSBlcnJvciByZWNvdmVyeSB1c2luZwoJamF2YV9lcnJvcl9mbGFnCShub3QgeWV0IGNvbXBsZXRlbHkgdHVuZWQpLgoKMTk5Ny0xMi0wNCAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKHBhcnNlLmMpOiBVc2UgJChzcmNkaXIpIGZvciBwYXJzZS55LgoKMTk5Ny0xMi0wMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbjogKEpBVkFfT0JKUyk6IE5ldyBvYmplY3QgamNmLXBhcnNlLm8uCgkocGFyc2UuYywgbGV4LmMsIGtleXdvcmQuaCk6IE5ldyBydWxlcyBmb3IgSmF2YSBzb3VyY2UgY29kZQoJZnJvbnQtZW5kLgoJKiBwYXJzZS5jOiBSZW5hbWVkIGludG8gamNmLXBhcnNlLmMuCgkqIGpjZi1wYXJzZS5jICh5eXBhcnNlKTogSW52b2tlIHRoZSBwYXJzZXIgdG8gcHJvY2VzcyBKYXZhIHNvdXJjZSBjb2RlLgoJKiBrZXl3b3JkLmdwZXJmOiBOZXcgZmlsZSwgSmF2YSBrZXl3b3Jkcy4KCSogcGFyc2UueTogTmV3IGZpbGUsIEphdmEgbGFuZ3VhZ2UgZ3JhbW1hci4KCSogcGFyc2UuaDogTmV3IGZpbGUsIEphdmEgbGFuZ3VhZ2UgZ3JhbW1hciBkZWZpbml0aW9ucy4KCSogbGV4LmM6IE5ldyBmaWxlLCBKYXZhIGxhbmd1YWdlIGxleGVyLgoJKiBsZXguaDogTmV3IGZpbGUsIEphdmEgbGFuZ3VhZ2UgbGV4ZXIgZGVmaW5pdGlvbnMuCgoxOTk3LTEyLTAzICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY2xpbml0X2lkZW50aWZpZXJfbm9kZSksIGphdmEtdHJlZS5oOiAgTmV3IGdsb2JhbC4KCSogamF2YS10cmVlLmggKElTX01FVEhPRF9JTklUX1AsIElTX01FVEhPRF9DTElOSVRfUCk6ICBSZW1vdmVkLgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiAgSW5saW5lIHVzZSBvZiByZW1vdmVkIG1hY3Jvcy4KCSogZXhwci5jIChleHBhbmRfamF2YV9maWVsZF9vcCk6ICBDaGVjayBmb3IgaW52YWxpZCBhc3NpZ25tZW50Cgl0byBmaW5hbCBmaWVsZC4KCgkqIGpjZi1yZWFkZXIuYyAoZ2V0X2F0dHJpYnV0ZSk6ICBUZXN0IGZvciB3cm9uZyBhdHRyaWJ1dGUgbGVuZ3RoLgoKMTk5Ny0xMC0yNyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiAgV2hlbiBwcm9jZXNzaW5nIGEgaGFuZGxlciwKCWF0dGVtcHQgdG8gc2V0IHRoZSBjdXJyZW50X3N1YnIgdG8gdGhlIHJpZ2h0IHZhbHVlLgoJKE1vcmUgY29tcGxpY2F0ZWQgY29kZSBjb21iaW5lcyBTZXAgMTcgYW5kIE9jdCAyMiB2ZXJzaW9ucy4pCgoxOTk3LTEwLTI0ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKHB1c2hfY2xhc3MpOiAgRmlndXJlIG91dCAoZ3Vlc3MpIG5hbWUgb2Ygc291cmNlIGZpbGUuCgkqIHBhcnNlLmMgIChzZXRfc291cmNlX2ZpbGVuYW1lKTogIFNldCBERUNMX1NPVVJDRV9GSUxFIG9mIGNsYXNzIGRlY2wuCgkoZ2l2ZV9uYW1lX3RvX2NsYXNzKTogIERvbid0IGd1ZXNzIHNvdXJjZSBuYW1lOyAgdXNlIERFQ0xfU09VUkNFX0ZJTEUuCgkocGFyc2VfY2xhc3NfZmlsZSk6ICBDaGFuZ2UgcmV0dXJuIHR5cGUgZnJvbSBpbnQgdG8gdm9pZC4KCUNhbGwgZGVidWdfc3RhcnRfc291cmNlX2ZpbGUvZGVidWdfZW5kX3NvdXJjZV9maWxlLgoKCSogZXhwci5jIChidWlsZF9qYXZhX2Jpbm9wKTogIEZpeCBtYXNraW5nIDJuZCBvcGVyYW5kLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogIFNldCBzaXpldHlwZSBmaXJzdC4KCjE5OTctMTAtMjIgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIERvbid0IHNldCBjdXJyZW50X3N1YnIgdG8gTlVMTC4KCShSZXZlcnQgU2VwIDE3IGNoYW5nZS4pCgoxOTk3LTEwLTIxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLmMgKHByb2Nlc3NfemlwX2Rpcik6IFNraXAgWklQIGVudHJpZXMgbm90IGJlYXJpbmcgdGhlCgkuY2xhc3MgZXh0ZW5zaW9uIGluIHRoZWlyIG5hbWUgYW5kIGZpeCB0aGluZyBzbyB3ZSBkb24ndCBwcm9jZXNzCgl0aGVtIHBhcnNlX3ppcF9maWxlX2VudHJpZXMoKS4KCShwYXJzZV96aXBfZmlsZV9lbnRyaWVzKTogQ2xlYW5lZCB1bnVzZWQgbG9jYWwgdmFyaWFibGVzLgoKMTk5Ny0xMC0yMCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGNhbl93aWRlbl9yZWZlcmVuY2VfdG8pOiAgQWxsb3dzIGVxdWFsIGFycmF5IGVsZW1lbnQgdHlwZXMuCgkoZXhwYW5kX2J5dGVfY29kZSk6ICBQUkVfUkVUIG11c3QgZXhwYW5kIE9QRVJBTkRfVkFMVUUgKHRvIGdldCBpbmRleCkuCgkqIGpjZi1kdW1wLmMgKFJFVCk6ICBHZXQgKGFuZCBwcmludCkgaW5kZXguCgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMgY2FzZSBPUENPREVfYW5ld2FycmF5KToKCVByb21vdGUgZWxlbWVudCB0eXBlIHRvIFBPSU5URVJfVFlQRS4KCjE5OTctMTAtMjAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXJlYWRlci5jLCBwYXJzZS5jOiAocGFyc2VfemlwX2ZpbGUsIHByb2Nlc3NfemlwX2RpciwKCWZpbmRfaW5fY3VycmVudF96aXAsIGpjZl9maWd1cmVfZmlsZV90eXBlKTogTW92ZWQgZnJvbQoJamNmLXJlYWRlci5jIHRvIHBhcnNlLmMuCgkqIHpleHRyYWN0LmM6IChyZWFkX3ppcF9hcmNoaXZlKTogdGFrZXMgZmlsZV9jb21tZW50X2xlbmd0aCBwb3NzaWJsZQoJZmllbGQgaW50byBhY2NvdW50LgoKMTk5Ny0xMC0yMCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiAgVmFyIGNhbiBhbHNvIGJlIHByb21vdGVkIHRvIGludC4KCgkqIHZlcmlmeS5jIChtZXJnZV90eXBlcyk6ICBIYW5kbGUgYXJyYXkgdHlwZXMgZXZlbiBiZXR0ZXIgLi4uCgoxOTk3LTEwLTE3ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoamF2YV9zdGFja19wb3ApOiAgRml4IHVzZSBvZiBOVUxMX1RSRUUgZm9yIFRZUEVfU0VDT05ELgoKCSogamF2YS10cmVlLmggKFBVU0hfRklFTEQpOiAgU2V0IERFQ0xfQVJUSUZJQ0lBTC4KCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogIERvbid0IGJ1aWxkIGZpZWxkc19kZWNsIGlmIG5vIGZpZWxkcy4KCVdoZW4gYnVpbGRpbmcgZmllbGRzX2RlY2wsIHNraXAgaWYgREVDTF9BUlRJRklDSUFMLgoKCSogZXhwci5jIChqYXZhX3N0YWNrX3N3YXApOiAgVXBkYXRlIHN0YWNrX3R5cGVfbWFwLgoJKiB2ZXJpZnkuYyAobWVyZ2VfdHlwZXMpOiAgSGFuZGxlIGFycmF5IHR5cGVzIGJldHRlci4KCjE5OTctMTAtMTUgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoYWRkX2ZpZWxkKTogIERvbid0IHByb21vdGUgc2hvcnQgaW50ZWdyYWwgZmllbGRzIHRvCglpbnQgYW55IG1vcmUgKHVubGVzcyBKQVZBX1BST01PVEVfVE9fSU5UKSwgc2luY2UgS2FmZmUgZG9lc24ndC4KCSogZXhwci5jIChwdXNoX3ZhbHVlKTogIFByb21vdGUgYW5kIGNvbnZlcnQgc2hvcnQgaW50ZWdyYWwgdmFsdWVzLgoKCSogZGVjbC5jLCBqYXZhLXRyZWUuaCAoaW50ZWdlcl90d29fbm9kZSk6ICBOZXcgY29uc3RhbnQgbm9kZS4KCSogdmVyaWZ5LmMgKG1lcmdlX3R5cGVzKTogIENoZWNrIGZvciBUWVBFX1JFVFVSTl9BRERSLgoKMTk5Ny0xMC0xNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChhcHBlbmRfZ3BwX21hbmdsZWRfdHlwZSk6IFVzZSBmdW5jdGlvbiBhcmd1bWVudAoJdW5wcm9tb3RlZCB0eXBlIHRvIGdlbmVyYXRlIG1hbmdsZWQgbmFtZS4KCjE5OTctMTAtMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY29uc3RhbnRzLmMgKGJ1aWxkX2NvbnN0YW50X2RhdGFfcmVmKTogTm93IHVzZXMgY3VycmVudF9jbGFzcwoJaW5zdGVhZCBvZiBtYWluX2NsYXNzLgoJKGJ1aWxkX2NvbnN0YW50c19jb25zdHJ1Y3Rvcik6IE5vdyB1c2VzIGN1cnJlbnRfY2xhc3MgaW5zdGVhZCBvZgoJbWFpbl9jbGFzcy4KCSogemlwZmlsZS5oOiAoc3RydWN0IFppcEZpbGVDYWNoZSk6IE5vdyBkZWZpbmVkIGhlcmUuIERlY2xhcmF0aW9uCglvZiB0aGUgZ2xvYmFsIHZhcmlhYmxlIFNlZXBaaXBGaWxlcyBkb25lIGhlcmUuCgkqIHpleHRyYWN0LmMgKHJlYWRfemlwX2FyY2hpdmUpOiBleHRyYV9maWVsZCBvcHRpb25hbCBmaWVsZCB0YWtlbgoJaW50byBhY2NvdW50IHdoaWxlIGNvbXB1dGluZyB0aGUgcG9zaXRpb24gb2YgdGhlIGNsYXNzIGZpbGUgaW4gdGhlCglhcmNoaXZlLgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBVc2UgY3VycmVudF9qY2YgdG8gc2VhcmNoCgl0aGUgY29uc3RhbnQgcG9vbC4KCSogcGFyc2UuYyAobG9hZF9jbGFzcyk6IEZpcnN0IHNlYXJjaCBmb3IgdGhlIGNsYXNzIHRvIGxvYWQgaW4gdGhlCgljdXJyZW50IHppcCBmaWxlLiBTYXZlcyBjdXJyZW50X2pjZiAocmVzdG9yZWQgYmVmb3JlIHJldHVybmluZwoJZnJvbSB0aGF0IGZ1bmN0aW9uKS4gRG9uJ3QgY2FsbCBKQ0ZfRklOSVNIIGluIHRoZSBjbGFzcyB3YXMgZm91bmQKCWluIHRoZSBjdXJyZW50IFpJUCBmaWxlLgoJKGpjZl9wYXJzZSk6IElmIHRoZSBjbGFzcyB3YXMgZm91bmQgaW4gdGhlIGN1cnJlbnQgWklQIGZpbGUsIHNhdmUKCWl0cyB0cmVlX2NvbnN0YW50X3Bvb2wgKGZvciBsYXRlciByZXVzZSkuCgkocGFyc2VfY2xhc3NfZmlsZSk6IE5ldyBmdW5jdGlvbi4gUHJvY2VzcyBlYWNoIG1ldGhvZCBkZWZpbmVkIGluCgl0aGUgY3VycmVudCBjbGFzcyBhbmQgcmVjb3JkIHRoZSBjbGFzcyBhcyB0byBiZSBsYXRlciByZWdpc3RlcmVkLgoJKHl5cGFyc2UpOiBSZXdyaXR0ZW4uIEZpZ3VyZSB0aGUgdHlwZSBvZiB0aGUgY3VycmVudCBmaWxlIGFuZCBzd2l0Y2gKCWFjY29yZGluZ2x5LgoJKiBsYW5nLmM6IE5ldyBnbG9iYWwgdmFyaWFibGUgY3VycmVudF9qY2YuCgkobGFuZ19pbml0KTogUmVtb3ZlZCBjb21waWxpbmdfZnJvbV9zb3VyY2UgdGVzdCAoZG9uZSBsYXRlciwgaW4KCXl5cGFyc2UpLiBSZW1vdmVkIGNhbGwgdGhlIGpjZl9wYXJzZSAoKS4KCSogamNmLmggKEpDRl9aSVAsIEpDRl9DTEFTUywgSkNGX1NPVVJDRSk6IE5ldyBkZWZpbmVkIHZhbHVlcy4KCSh0eXBlZGVmIHN0cnVjdCBKQ0YpOiBOZXcgZmllbGRzIHNlZW5faW5femlwICh0byBtYXJrIGEgY2xhc3MgZm91bmQKCWluIHRoZSBjdXJyZW50IFpJUCBmaWxlKSBhbmQgemlwX29mZnNldCAob2Zmc2V0IHRvIHRoZSBjbGFzcyBkYXRhIGluCgl0aGUgY3VycmVudCB6aXAgZmlsZSkuCgkqIGpjZi1yZWFkZXIuYzogemlwZmlsZS5oIGluY2x1ZGVkLgoJbG9jYWxUb0ZpbGU6IE5ldyBaaXBGaWxlQ2FjaGUgc3RhdGljIGdsb2JhbCB2YXJpYWJsZQoJKHBhcnNlX3ppcF9maWxlX2VudHJpZXMpOiBOZXcgZnVuY3Rpb24uIEJyb3dzZSB0aGUgY3VycmVudCBaSVAKCWZpbGUgZGlyZWN0b3J5IGFuZCBwcm9jZXNzIGVhY2ggY2xhc3MgZm91bmQuCgkocHJvY2Vzc196aXBfZGlyKTogTmV3IGZ1bmN0aW9uLiBSZWdpc3RlciBlYWNoIGNsYXNzIGZvdW5kIGluIHRoZQoJWklQIGZpbGUgZGlyZWN0b3J5LiBUaGUgY2xhc3MgYXJlbid0IHBhcnNlZCBidXQgYSB2YWxpZCBKQ0YgaXMKCWxpbmsgdG8gZWFjaCBvZiB0aGVtLgoJKGZpbmRfaW5fY3VycmVudF96aXApOiBOZXcgZnVuY3Rpb24uIFNlYXJjaCBmb3IgYSBjbGFzcyBpbiB0aGUKCWN1cnJlbnQgWklQIGZpbGUgZGlyZWN0b3J5LiBJZiBmb3VuZCwgcHJlcGFyZSB0aGUgY2xhc3Mgc28gdGhhdCBpdAoJY2FuIGJlIGxvYWRlZC4KCShqY2ZfZmlndXJlX2ZpbGVfdHlwZSk6IE5ldyBmdW5jdGlvbi4gRXhhbWluZSB0aGUgZmlsZSBzdHJ1Y3R1cmUKCXRvIGZpZ3VyZSBhIGNsYXNzIGZpbGUsIGEgWklQIGZpbGUuIElmIG5vbmUgb2YgdGhlc2UgY2F0ZWdvcmllcyBhcmUKCW1hdGNoZWQsIGEgc291cmNlIGZpbGUgaXMgYXNzdW1lZC4KCSogamNmLWlvLmM6IFJlbW92ZWQgZGVmaW5pdGlvbiBvZiBaaXBGaWxlQ2FjaGUgKG1vdmVkIGluIHppcGZpbGUuaCkuCglTZWVuWmlwRmlsZTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShvcGVuX2luX3ppcCk6IFVzZSB6aXBtZW1iZXIncyBsZW5ndGggdG8gYWNjZWxlcmF0ZSB0aGUgc2VhcmNoIGZvcgoJYSBtZW1iZXIuIElmIHppcG1lbWJlciB3YXMgTlVMTCBhbmQgemlwIGZpbGUgc3VjY2Vzc2Z1bGx5IHJlYWQsCglyZXR1cm4gMC4KCSogamF2YS10cmVlLmg6IE5ldyBnbG9iYWwgdmFyaWFibGUgY3VycmVudF9qY2YgZGVjbGFyZWQuICBBZGRlZAoJZGVjbGFyYXRpb24gZm9yIGN1cnJlbnRfY29uc3RhbnRfcG9vbF90YWdzLCBjdXJyZW50X2NvbnN0YW50X3Bvb2xfZGF0YSwKCWN1cnJlbnRfY29uc3RhbnRfcG9vbF9sZW5ndGgsIGN1cnJlbnRfY29uc3RhbnRfcG9vbF9kYXRhX3JlZi4KCShzdHJ1Y3QgbGFuZ190eXBlKTogQXVnbWVudGVkIHdpdGggdHdvIGZpZWxkcy4gc3RydWN0IEpDRiAqamNmICh0bwoJc3RvcmUgdGhlIEpDRiBvZiBjbGFzc2VzIHNlZW4gaW4gYSB6aXAgZmlsZSkgYW5kIHRyZWUgKmNvbnN0YW50X3Bvb2wKCSh0byBzYXZlIGEgbG9hZGVkIGNsYXNzIGNvbnN0YW50IHBvb2wpLiBjdXJyZW50X2NsYXNzIGRlY2xhcmVkIGhlcmUuCgkqIGV4cHIuYyAoZXhwYW5kX2ludm9rZSk6IFVzZSBjdXJyZW50X2pjZiBpbnN0ZWFkIG9mIG1haW5famNmIHRvCglyZXRyaWV2ZSBtZXRob2RfcmVmX2NvbnN0YW50LgoJKFBVU0hDKTogamF2YV9wdXNoX2NvbnN0YW50X2Zyb21fcG9vbCBub3cgdXNlcyBjdXJyZW50X2pjZi4KCShPQkpFQ1QpOiBnZXRfY2xhc3NfY29uc3RhbnQgbm93IHVzZXMgY3VycmVudF9qY2YuCgkoQVJSQVlfTkVXX1BUUik6IGdldF9jbGFzc19jb25zdGFudCBub3cgdXNlcyBjdXJyZW50X2pjZi4KCShBUlJBWV9ORVdfTVVMVEkpOiBnZXRfY2xhc3NfY29uc3RhbnQgbm93IHVzZXMgY3VycmVudF9qY2YuCgkoZXhwYW5kX2ludm9rZSk6IE5vdyB1c2VzIGN1cnJlbnRfY2xhc3MgaW5zdGVhZCBvZiBtYWluX2NsYXNzCgkoYnVpbGRfY2xhc3NfaW5pdCk6IE5vdyB1c2VzIGN1cnJlbnRfY2xhc3MgaW5zdGVhZCBvZiBtYWluX2NsYXNzCgkqIGNsYXNzLmM6IE5ldyBzdGF0aWMgZ2xvYmFsIHZhcmlhYmxlIHJlZ2lzdGVyZWRfY2xhc3MuCgkocmVnaXN0ZXJfY2xhc3MpOiBOZXcgZnVuY3Rpb24uCgkoZW1pdF9yZWdpc3Rlcl9jbGFzcyk6IE1vZGlmaWVkIHRvIHVzZSByZWdpc3RlcmVkX2NsYXNzIGluc3RlYWQgb2YKCW1haW5fY2xhc3MKCShpc19jb21waWxlZF9jbGFzcyk6IE5vdyB0YWtlIGludG8gYWNjb3VudCBjbGFzcyBzZWVuIGluIHRoZSBhcmNoaXZlLgoKMTk5Ny0xMC0wNiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBleGNlcHQuaDogIFJlbmFtZWQgdG86IGphdmEtZXhjZXB0LmguCgkqIHBhcnNlLmMsIGV4Y2VwdC5jLCBleHByLmMsIHZlcmlmeS5jOiAgVXBkYXRlICNpbmNsdWRlIGFjY29yZGluZ2x5LgoJKiBleGNlcHQuYzogIEFkZCBzZW1pLXdvcmtpbmcgKGNvbW1lbnRlZCBvdXQpIGltcGxlbWVudGF0aW9uLgoKCSogZXhwci5jIChleHBhbmRfaWluYyk6ICBBZGQgbmVlZGVkIGZsdXNoX3F1aWNrX3N0YWNrLgoJKiBwYXJzZS5jIChzZXRfc291cmNlX2ZpbGVuYW1lKTogIE5ldyBmdW5jdGlvbi4KCShnaXZlX25hbWVfdG9fY2xhc3MpOiAgU2V0IGlucHV0X2ZpbGVuYW1lIGZyb20gcGFja2FnZS5jbGFzc25hbWUuamF2YS4KCgkqIGpjZi1pby5jIChmaW5kX2NsYXNzKTogIERvbid0IGxvb2sgZmlyc3QgaW4gIi4iLgoKMTk5Ny0xMC0wMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiB6ZXh0cmFjdC5jIChyZWFkX3ppcF9hcmNoaXZlKTogTm93IHRha2VzIGludG8gYWNjb3VudCB0aGUKCWV4dHJhX2ZpZWxkIGZpZWxkLgoJKiBleHByLmMgKGNhbl93aWRlbl9yZWZlcmVuY2VfdG8pOiBNb2RpZmllZCB0byBoYW5kbGUgc3ViLWludGVyZmFjZXMuCgoxOTk3LTA5LTIwICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNvbnN0YW50cy5jLCBqYXZhLXRyZWUuaCAoYnVpbGRfaW50ZXJuYWxfY2xhc3NfbmFtZSk6ICBOZXcgZnVuY3Rpb24uCgkoYWxsb2NfY2xhc3NfY29uc3RhbnQpOiAgUmUtaW1wbGVtZW50IHVzaW5nIGJ1aWxkX2ludGVybmFsX2NsYXNzX25hbWUuCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6ICBMaWtld2lzZS4KCSogY2xhc3MuYyAoaGFzaFV0ZjhTdHJpbmcpOiAgTWFrZSBoYXNoIGFsZ29yaXRobSBtYXRjaCBTdHJpbmcuaGFzaENvZGUuCgoxOTk3LTA5LTE3ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6ICBUZW1wb3JhcmlseSBzZXQgY3VycmVudF9zdWJyCgl0byBOVUxMIGJlZm9yZSBwdXNoaW5nIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIHRhcmdldC4KCgkqIGV4cHIuYyAoZmx1c2hfcXVpY2tfc3RhY2spOiAgU2F2ZSBmcm9tIGxvdyBzdGFjayBpbmRleGVzIHRvIGhpZ2guCgkoamF2YV9zdGFja19zd2FwLCBqYXZhX3N0YWNrX2R1cCk6ICBSZS13cml0ZSB0byBiZSBzYWZlIGZyb20KCWNsb2JiZXJpbmcgcmVnaXN0ZXJzLgoJKGJ1aWxkX2NsYXNzX2luaXQpOiAgTmV3IGZ1bmN0aW9uLgoKMTk5Ny0wOS0xNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9hcnJheV90eXBlKTogVGVtcG9yYXJ5IHVzZQoJcGVybWFuZW50X29ic3RhY2sgdG8gY3JlYXRlIHRoZSBhcnJheSAnbGVuZ3RoJyBmaWVsZC4KCSogZXhwci5jIChsb29rdXBfbGFiZWwpOiBUZW1wb3JheSB1c2UgcGVybWFuZW50X29ic3RhY2sgdG8gY3JlYXRlCglsYWJlbCBpZiBub3QgZm91bmQuCgkqIGNsYXNzLmMgKHB1c2hfc3VwZXJfZmllbGQpOiBUZW1wb3J5IHVzZSBwZXJtYW5lbnRfb2JzdGFjay4KCjE5OTctMDktMTUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKHR5cGVfZm9yX21vZGUpOiBOb3cgaGFuZGxlcyBkb3VibGVfdHlwZV9ub2RlIGFuZAoJZmxvYXRfdHlwZV9ub2RlLgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBUaGUgaW5zdHJ1Y3Rpb24gZm9sbG93aW5nCgl0aGUgd2lkZSBieXRlY29kZSBpcyBjaGVja2VkLiBPUENPREVfcmV0IGFkZGVkIHRvIHRoZSBsaXN0IG9mCgl3aWRlLgoKMTk5Ny0wOS0xMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzKTogVGVtcG9yYXJ5IHVzZSBwZXJtYW5lbnRfb2JzdGFjay4gU2V0IHRoZQoJY2xhc3MgQ0xBU1NfUCBmaWVsZCB0byAxLgoJKHB1c2hfY2xhc3MpOiBUZW1wb3JhcnkgdXNlIHBlcm1hbmVudF9vYnN0YWNrLgoJKHNldF9zdXBlcl9pbmZvKTogVGVtcG9yYXJ5IHVzZSBwZXJtYW5lbnRfb2JzdGFjay4KCShhZGRfbWV0aG9kKTogVGVtcG9yYXJ5IHVzZSBwZXJtYW5lbnRfb2JzdGFjaywgc2V0CglNRVRIT0RfVFJBTlNJRU5UKCkuCgkoYWRkX2ZpZWxkKTogVGVtcG9yYXJ5IHVzZSBwZXJtYW5lbnRfb2JzdGFjay4gU2V0cwoJRklFTERfVk9MQVRJTEUoKSBhbmQgRklFTERfVFJBTlNJRU5UKCkuCgkoYnVpbGRfY2xhc3NfcmVmKTogVGVtcG9yYXJ5IHVzZSBwZXJtYW5lbnRfb2JzdGFjayBpZiB0aGUgY2xhc3MKCWlzbid0IGNvbXBpbGVkLgoJKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBUZW1wb3JhcnkgdXNlIHBlcm1hbmVudF9vYnN0YWNrIHdoZW4KCWNyZWF0aW5nIGZpZWxkJ3MgcnRsLgoJKGdldF9hY2Nlc3NfZmxhZ3NfZnJvbV9kZWNsKTogSGFuZGxlIEFDQ19WT0xBVElMRSwgQUNDX1RSQU5TSUVOVCwKCUFDQ19TWU5DSFJPTklaRUQsIEFDQ19OQVRJVkUsIEFDQ19BQlNUUkFDVCBmbGFncyBmb3IgbWV0aG9kcwoJYW5kIGZpZWxkcy4gRnVuY3Rpb24gZmluYWxpemVkLCBhcyBmYXIgYXMgZmxhZyBoYW5kbGluZy4KCShwdXNoX2NsYXNzX3N0YXRpY19kdW1teV9maWVsZCk6IFRlbXBvcmFyeSB1c2UgcGVybWFuZW50X29ic3RhY2suCgkoZW1pdF9yZWdpc3Rlcl9jbGFzcyk6IEZvcmNlIGdlbmVyYXRpb24gb2YgY2xhc3MgcmVnaXN0cmF0aW9uIGF0CgktTzMgb3IgZGVlcGVyLgoJKiBkZWNsLmMgKGVuZF9qYXZhX21ldGhvZCk6IENhbGwgcGVybWFuZW50X2FsbG9jYXRpb24oKSBiZWZvcmUKCXJldHVybmluZy4KCSogZXhwci5jIChjYW5fd2lkZW5fcmVmZXJlbmNlX3RvKTogQWRkZWQgY29tbWVudCB0byBpbnRlcmZhY2UKCWhhbmRsaW5nLCBmaXhlZCB0eXBvLgoJKGxvb2t1cF9maWVsZCk6IE5vdyB1c2VzIENMQVNTX1AoKSB0byBjb3JyZWN0IEZJWE1FCgkoZXhwYW5kX2ludm9rZSk6IFZlcmlmaWNhdGlvbiBvbiBwdWJsaWMgJiYgIXN0YXRpYyAmJgoJIWFic3RyYWN0IG1vdmVkIGludG8gc29mdF9sb29rdXBpbnRlcmZhY2VtZXRob2QgKGthZmZlKS4KCVVzZSBPYmplY3QgY2xhc3MgZHRhYmxlIGlmIG9iamVjdHJlZiBpcyBhbiBhcnJheSB3aGVuIGV4cGFuZGluZwoJaW52b2tlaW50ZXJmYWNlLgoJKGphdmFfcHVzaF9jb25zdGFudF9mcm9tX3Bvb2wpOiBUZW1wb3JhcnkgdXNlIHBlcm1hbmVudF9vYnN0YWNrCglmb3IgQ09OU1RBTlRfc3RyaW5nCgkqIHBhcnNlLmMgKGdldF9yZWZfY29uc3RhbnQpOiBUZW1wb3JhcnkgdXNlIHBlcm1hbmVudF9vYnN0YWNrIHRvCgljcmVhdGUgY29uc3RhbnQgcmVmZXJlbmNlcy4KCShnZXRfY29uc3RhbnQpOiBUZW1wb3JhcnkgdXNlIHBlcm1hbmVudF9vYnN0YWNrIHRvIGNyZWF0ZSBjb25zdGFudC4KCShsb2FkX2NsYXNzKTogVGVtcG9yYXJ5IHVzZSBwZXJtYW5lbnRfb2JzdGFjayB0byBsb2FkIGNsYXNzLgoJKGpjZl9wYXJzZSk6IFRlbXBvcmFyeSB1c2UgcGVybWFuZW50X29ic3RhY2sgdG8gcGVyZm9ybSBjbGFzcwoJbGF5b3V0LgoJKiB0eXBlY2suYzogKHBhcnNlX3NpZ25hdHVyZV9zdHJpbmcpOiBUZW1wb3JhcnkgdXNlIHBlcm1hbmVudF9vYnN0YWNrLgoJKGJ1aWxkX2phdmFfc2lnbmF0dXJlKTogVGVtcG9yYXJ5IHVzZSBwZXJtYW5lbnRfb2JzdGFjay4KCSogdmVyaWZ5LmM6ICh2ZXJpZnlfanZtX2luc3RydWN0aW9uKTogcmVtb3ZlZCB1bm5lY2Vzc2FyeSB2ZXJpZmljYXRpb24KCW9uIEFDQ19TVVBFUiBmbGFnLgoJKiBqYXZhLXRyZWUuaCAoTUVUSE9EX05BVElWRSwgTUVUSE9EX1RSQU5TSUVOVCk6IERlZmluZWQuCgkoRklFTERfVk9MQVRJTEUsIEZJRUxEX1RSQU5TSUVOVCk6IERlZmluZWQuCgkoQ0xBU1NfUCk6IERlZmluZWQKCjE5OTctMDktMTEgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoYXBwZW5kX2dwcF9tYW5nbGVkX3R5cGUpOiAgRml4IHR5cG8uCgkoZW1pdF9yZWdpc3Rlcl9jbGFzcyk6ICBVc2UgbWFpbl9jbGFzcyB0byBnZXQgY2xhc3Mgb2JqZWN0LCByYXRoZXIKCXRoYW4gbG9va2luZyBmb3Igbm8tbG9uZ2VyLWV4aXN0aW5nIHN0YXRpYyBkZWNsIHN0YXJ0aW5nIHdpdGggX0NMLgoJKiB0eXBlY2suYyAocGFyc2Vfc2lnbmF0dXJlX3R5cGUpOiAgUHJvbW90ZSBhcnJheSBlbGVtZW50IHR5cGUKCWlmIGl0IGlzIGEgUkVDT1JEX1RZUEUuCgoxOTk3LTA5LTEwICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKHB1c2hfY2xhc3Nfc3RhdGljX2R1bW15X2ZpZWxkKTogIE5ldyBmdW5jdGlvbi4KCShtYW5nbGVfc3RhdGljX2ZpZWxkKTogIE5ldy4gRG8gRysrLXN0eWxlIG1hbmdsaW5nIG9mIHN0YXRpYyBmaWVsZHMuCgkobGF5b3V0X2NsYXNzKTogIE1hbmRsZSBzdGF0aWMgZmllbGRzIGhlcmUsIG5vdCBpbiBhZGRfZmllbGQuCgkoYnVpbGRfY2xhc3NfcmVmKTogIFRoZSBjbGFzcyBvYmplY3QgaXMgbm93IGEgZHVtbXkgc3RhdGljIGZpZWxkLgoJKiBkZWNsLmMgKGZpbmRfbG9jYWxfdmFyaWFibGUpOiAgTG9vayBmb3IgYmVzdCwgaW5zdGVhZCBvZiBmaXJzdCBtYXRjaC4KCSogZXhwci5jIChwdXNoX3R5cGUpOiAgQWx3YXlzIHByb21vdGVfdHlwZSwgbm90IGp1c3QgZm9yIFJFQ09SRF9UWVBFLgoJKGJ1aWxkX2phdmFfYXRocm93KTogIERvbid0IGNoZWNrIGhlcmUgaWYgZXhjZXB0aW9uIGlzIFRocm93YWJsZS4KCSogamF2YS10cmVlLmggKFRZUEVfVU5TRVQpOiAgUmVuYW1lZCB0byBUWVBFX1VOS05PV04uCgkoVFlQRV9VU0VEKTogIFJlbW92ZWQuICBObyBsb25nZXIgdXNlZCAuLi4KCSogcGFyc2UuYyAoamNmX3BhcnNlKTogIENhbGwgcHVzaF9jbGFzc19zdGF0aWNfZHVtbXlfZmllbGQuCgkqIHZlcmlmeS5jIChwdXNoX3BlbmRpbmdfbGFiZWwpOiAgTmV3IGZ1bmN0aW9uLgoJKHB1c2hfcGVuZGluZ19ibG9jayk6ICBSZW5hbWVkIHRvIGNoZWNrX3BlbmRpbmdfYmxvY2suCgkobWVyZ2VfdHlwZXMpOiAgUmVtb3ZlIHVubmVlZGVkIHN1dXBvcnQgZm9yIFRZUEVfVU5VU0VELgoJKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIE9ubHkgcmVzZXQgcHJldl9laF9yYW5nZXMgKHRvIGZvcmNlCglyZS1jaGVja2luZyBwb3NzaWJsZSBoYW5kbGVycykgYWZ0ZXIgYSBzdG9yZSAobGVzcyB3YXN0ZWQgd29yaykuCglDaGVjayBmb3IgbnVsbCBoYW5kbGVyIChmaW5hbGx5KSBiZWZvcmUgY2FsbGluZyBhZGRfaGFuZGxlci4KCVZhcmlvdXMgY2hhbmdlcyB0byAoZmluYWxseT8pIGNvcnJlY3RseSBoYW5kbGUgdHJ5L2ZpbmFsbHkuCgoxOTk3LTA5LTA5ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jOiBJbmNsdWRlIHN0ZGlvLmguCgoxOTk3LTA5LTA0ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2ludm9rZSk6ICBVc2UgQ09NUE9VTkRfRVhQUiAoYW5kIFRSRUVfU0lERV9FRkZFQ1RTKQoJdG8gbWFrZSBzdXJlIGNsYXNzIGlzIGluaXRpYWxpemVkIGJlZm9yZSBzdGF0aWMvc3BlY2lhbCBpbnZva2UuCgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiAgT24gYSBzdG9yZSBpbnN0cnVjdGlvbiwKCWNhbGwgZmluZF9sb2NhbF92YXJpYWJsZSB0byBmb3JjZSBwcmUtYWxsb2NhdGlvbiBvZiBkZWNsIGFuZCBydHguCgkqIGRlY2wuYyAocHVzaF9qdm1fc2xvdCk6ICBTZXQgREVDTF9SRUdJU1RFUiBvbiBzdGFjayBzbG90cy4KCjE5OTctMDktMDMgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfY2xhc3NfcmVmKTogICBTdHJpcCBvZmYgInByb21vdGVkXyIgaWYgbmVlZCBiZS4KCShtYWtlX2ZpZWxkX3ZhbHVlKTogQ2FsbCBidWlsZF9qYXZhX3NpZ25hdHVyZSB3aGVuIG5lZWRlZC4KCShsYXlvdXRfY2xhc3MpOiAgRG9uJ3QgbWFrZV9mdW5jdGlvbl9ydGwgaWYgTUVUSE9EX0FCU1RSQUNULgoJKiBleHByLmMgKGJ1aWxkX2phdmFfYXRocm93KTogIERvbid0IHB1c2hfdmFsdWUgb2YgZXhjZXB0aW9uLgoJKGJ1aWxkX2phdmFfYmlub3ApOiAgSW1wbGVtZW50IENPTVBBUkVfTF9FWFBSIGFuZCBDT01QQVJFX0dfRVhQUiB0bwoJbWF0Y2ggc3BlY2lmaWNhdGlvbiBvZiBbZmRdY21wW2xnXSBmb3IgTmFOcy4KCShleHBhbmRfYnl0ZV9jb2RlKTogIEFkZCBzdXBwb3J0IGZvciBleGNlcHRpb24gaGFuZGxlciByYW5nZXMuCgkqIGV4Y2VwdC5jOiAgQWRkIHNrZWxldG9uIGZvciBFSCBjb2RlLWdlbmVyYXRpb24uCgkqIHZlcmlmeS5jIChtZXJnZV90eXBlcyk6ICBUcmVhdCBhbGwgcHJvbW90ZWQgaW50ZWdyYWwgdHlwZXMgYXMgZXF1YWwuCgkqIGNvbnN0YW50cy5jIChidWlsZF9jb25zdGFudHNfY29uc3RydWN0b3IpOiAgVG8gZm9yY2UgY3JlYXRpb24gb2YKCWN1cnJlbnRfY29uc3RhbnRfcG9vbF9kYXRhX3JlZiwgY2FsbCBidWlsZF9jb25zdGFudF9kYXRhX3JlZi4KCgkqIGphdmFvcC5kZWYgKGxsb2FkKTogIEZpeCB0eXBvLgoJKiBqY2YtZHVtcC5jIChtYWluKTogIENsZWFyIGZpbGVuYW1lIHRvIHByZXZlbnQgcG9zc2libHktYmFkIGZyZWUuCgoxOTk3LTA5LTAyICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBwYXJzZS5jOiBEb24ndCBpbmNsdWRlIGZ1bmN0aW9uLmguCgoxOTk3LTA4LTI3ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5bY2hdOiAgTmV3IGZpbGVzLgoJKiBNYWtlZmlsZS5pbiAoSkFWQV9PQkpTKTogIEFkZCBleGNlcHQubwoJKiBleHByLmM6ICBUZW1wb3Jhcnkgd2FybmluZyBhYm91dCB1bmltcGxlbWVudGVkIGV4Y2VwdGlvbnMuCgkqIHZlcmlmeS5jOiAgVmVyaWZ5IGV4Y2VwdGlvbiBoYW5kbGVycy4KCgkqIGpjZi1kdW1wLmMgKGRpc2Fzc2VtYmxlX21ldGhvZCk6ICBQcmludCBleGNlcHRpb24gdGFibGUuCgoxOTk3LTA4LTI3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBTdGFydGVkIGEgdGhvcm91Z2gKCXZlcmlmaWNhdGlvbiBvZiBpbnZva2UqIGJ5dGVjb2Rlcy4KCShleHBhbmRfYnl0ZV9jb2RlKTogZmx1c2ggcXVpY2sgc3RhY2sgaWYgUEMgaXMgdGhlIHRhcmdldCBvZiBhCglicmFuY2guICBhbmQgdW5kZWYgUkVUIChjb25mbGljdGluZyB3aXRoIGNvbmZpZy9pMzg2L2kzODYuaCkuCgkoZXhwYW5kX2phdmFfYXJyYXlsb2FkKTogRml4ZWQgYm9ndXMgY2FzdCwgd2hlbiBCb29sZWFuIHR5cGUgaXMKCXVzZWQuCgkoZXhwYW5kX2ludm9rZSk6IE5vdyBoYW5kbGVzIGludm9rZWludGVyZmFjZSBhbmQgZG8gbW9yZQoJdmVyaWZpY2F0aW9uIGFjY29yZGluZyB0byB0aGUgYnl0ZWNvZGUuCgkobG9va3VwX2ZpZWxkKTogRG9uJ3QgdHJ5IHRvIGxvYWQgdGhlIGNsYXNzIGlmIHByb2Nlc3NpbmcKCWR0YWJsZV90eXBlLgoJKGNhbl93aWRlbl9yZWZlcmVuY2VfdG8pOiBOb3cgaGFuZGxlcyBpbnRlcmZhY2VzLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogTmV3IGdsb2JhbCB2YXJpYWJsZQoJc29mdF9sb29rdXBpbnRlcmZhY2VtZXRob2Rfbm9kZSwgZGVjbGFyZWQgaW4gamF2YS10cmVlLmguCglDYWxsIHNldF9zdXBlcl9pbmZvIG9uIHN0cmluZ190eXBlX25vZGUuCgkqIGphdmEtdHJlZS5oIChDTEFTU19JTlRFUkZBQ0UsIENMQVNTX0FCU1RSQUNULCBDTEFTU19TVVBFUik6IE5vdwoJZGVmaW5lZC4KCSogY2xhc3MuYyAoc2V0X3N1cGVyX2luZm8pOiBGaWxscyB0aGUgQ0xBU1NfKiBmbGFncyBhY2NvcmRpbmcgdG8KCWFjY2Vzc19mbGFncy4KCShnZXRfYWNjZXNzX2ZsYWdzX2Zyb21fZGVjbCk6IEhhbmRsZXMgYWxsIGNsYXNzIGZsYWdzLgoKMTk5Ny0wOC0yNiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogIFplcm8gb3V0IG5ld2x5LWFsbG9jYXRlZCBERUNMX0xBTkdfU1BFQ0lGSUMuCgkqIHBhcnNlLmMgKHl5cGFyc2UpOiAgQ2hlY2sgZm9yIGFic3RyYWN0IG1ldGhvZCwgYW5kIG1pc3NpbmcgY29kZS4KCSogZXhwci5jIChleHBhbmRfYnl0ZV9jb2RlKTogIENoYW5nZSBpbnRlcmZhY2UuCgkqIGxhbmcuYyAocHV0X2RlY2xfbm9kZSk6ICBQcmludCBwcm9tb3RlZCB0eXBlcyBwcmV0dGllci4KCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb24pOiAgQ2hhbmdlIGludGVyZmFjZS4KCVBhcnRpYWwgc3VwcG9ydCBmb3Igc2Nhbm5pbmcgZXhjZXB0aW9uIHRhYmxlLgoJRm9yIGxvYWQgaW5zdHJ1Y3Rpb25zLCBoYW5kbGUgcHJvbW90ZWQgaW50ZWdyYWwgdHlwZXMuCgoxOTk3LTA4LTIxICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIHZlcmlmeS5jOiAgTmV3IGZpbGUsIHdpdGggY29udGVudHMgbW92ZWQgZnJvbSBleHByLmMuCgkqIGV4cHIuYzogIEJ1bmNoIG9mIHN0dWZmIChtb3N0bHkgdmVyaWZpY2F0aW9uKSBtb3ZlZCB0byB2ZXJpZnkuYy4KCSogdHlwZWNrLmMgKGlzX2FycmF5X3R5cGVfcCk6ICBNb3ZlZCBoZXJlIGZyb20gZXhwci5jLgoJKiBqYXZhLXRyZWUuaDogIEFkZCBzb21lIG5vdy1uZWVkZWQgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoJKiBNYWtlZmlsZS5pbiAoSkFWQV9PQkpTKTogQWRkZWQgdmVyaWZ5Lm8uCgoxOTk3LTA4LTIwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiBTZXRzIHRoZSBNRVRIT0RfU1lOQ0hST05JWkVEIGZsYWcsIHNldHMgdGhlCglNRVRIT0RfQUJTVFJBQ1QgZmxhZy4KCgkqIGphdmEtdHJlZS5oIChNRVRIT0RfU1lOQ0hST05JWkVEKTogU2V0IHRvIERFQ0xfTEFOR19GTEFHXzQuCgkoSVNfTUVUSE9EX0NMSU5JVF9QLCBJU19NRVRIT0RfSU5JVF9QKTogTmV3IG1hY3Jvcy4KCShNRVRIT0RfQUJTVFJBQ1QpOiBTZXQgdG8gREVDTF9MQU5HX0ZMQUdfNQoKCSogZGVjbC5jIChzb2Z0X21vbml0b3JlbnRlcl9ub2RlLCBzb2Z0X21vbml0b3JleGl0X25vZGUpOiBOZXcgZ2xvYmFsCgl2YXJpYWJsZXMuCgkoc3RhcnRfamF2YV9tZXRob2QpOiBIb29rIGZvciBTWU5DSFJPTklaRUQgbWV0aG9kcy4KCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9qc3IsIGJ1aWxkX2phdmFfcmV0KTogTmV3IGZ1bmN0aW9ucwoJKEpTUixQUkUpOiBOZXcgbWFjcm9zCgkoUFJFX1RBQkxFX1NXSVRDSCwgUFJFX0xPT0tVUF9TV0lUQ0gpOiBGaXhlZCBhbmQgc2VjdXJlZC4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IHRhYmxlc3dpdGNoLCBsb29rdXBzd2l0Y2gsCgltb25pdG9yZW50ZXIsIG1vbml0b3JleGl0LCBnb3RvX3c6IHZlcmlmaWVkLgoJKExPT0tVUF9TV0lUQ0gsIFRBQkxFX1NXSVRDSCk6IEZpeGVkIGdlbmVyYXRpb24gb2YgZGVmYXVsdDogbGFiZWwKCShidWlsZF9qYXZhX21vbml0b3IpOiBOZXcgZnVuY3Rpb24uCgkoTU9OSVRPUl9PUEVSQVRJT04pOiBNb2RpZmllZCB0byBjYWxsIGJ1aWxkX2phdmFfbW9uaXRvcigpCgkodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBTdGFydGVkIGEgdGhvcm91Z2ggdmVyaWZpY2F0aW9uIG9mCglpbnZva2UqIGJ5dGVjb2Rlcy4KCjE5OTctMDgtMTkgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCVN1cHBvcnQgdmVyaWZpY2F0aW9uIG9mIGpzci9yZXQgc3Vicm91dGluZXMgKHVzZWQgZm9yIHRyeS9maW5hbGx5KS4KCSogZGVjbC5jIChyZXR1cm5fYWRkcmVzc190eXBlX25vZGUpOiAgTmV3IHR5cGUgbm9kZS4KCSogamF2YS10cmVlLmggKExBQkVMX1JFVFVSTl9MQUJFTCwgTEFCRUxfUkVUVVJOX1RZUEVfU1RBVEUsCglSRVRVUk5fTUFQX0FESlVTVEVELCBMQUJFTF9SRVRVUk5fTEFCRUxTLCBMQUJFTF9JTl9TVUJSLAoJTEFCRUxfU1VCUl9TVEFSVCwgTEFCRUxfU1VCUl9DT05URVhULCBCQ09ERV9WRVJJRklFRCk6ICBOZXcgbWFjcm9zLgoJKFRZUEVfVU5TRVQsIFRZUEVfU0VDT05ELCBUWVBFX05VTEwsIFRZUEVfUkVUVVJOX0FERFIsIFRZUEVfVU5VU0VELAoJVFlQRV9VU0VEKTogIE5ldyBtYWNyb3MgZm9yIHNwZWNpYWwgdHlwZXMgaW4gdHlwZV9tYXAuCgoJKiBqYXZhLXRyZWUuaCAoQkNPREVfSlVNUF9UQVJHRVQpOiAgUmVuYW1lZCB0byBCQ09ERV9UQVJHRVQuCgkoQkNPREVfQkFDS1dBUkRTX1RBUkdFVCwgQ09ERV9GT1JXQVJEU19UQVJHRVQpOiAgUmVwbGFjZWQgYnkKCUJDT0RFX0pVTVBfVEFSR0VULgoJKiBleHByLmMgKGV4cGFuZF9ieXRlX2NvZGUpOiAgRml4IGxvZ2ljIHRvIHdhcm4gb2YgdW51c2VkIGluc3RydWN0aW9ucy4KCgkqIGV4cHIuYyAoY2FuX3dpZGVuX3JlZmVyZW5jZV90byk6ICBOZXcgZnVuY3Rpb24uCgkocG9wX3R5cGUpOiAgVXNlIGl0LgoJKG1lcmdlX3R5cGVfc3RhdGUpOiAgU3VwcG9ydCBoYW5kbGluZyBzdGFydCBvZiBzdWJyb3V0aW5lLgoJKHB1c2hfcGVuZGluZ19ibG9jayk6ICBSZXR1cm4gY2hhciogZXJyb3IgbWVzc2FnZSwgaW5zdGVhZCBvZiBjYWxsaW5nCglmYXRhbCBvbiBhbiBlcnJvci4gIEFsc28gaGFuZGxlIHN1YnJvdXRpbmVzLgoJKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIEhhbmRsZSBlcnJvcnMgZnJvbSBwdXNoX3BvZW5kaW5nX2Jsb2NrLgoJU3VwcG9ydCBqc3IgYW5kIHJldCBpbnN0cnVjdGlvbnMuCgoxOTk3LTA4LTE5ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGpjZi1pby5jIChmaW5kX2NsYXNzZmlsZSk6ICBGaXggdGhpbmtvLgoJKiBqY2YtZHVtcC5jOiAgQWRkIENPTlZFUlQyICh0byBtYXRjaCBjaGFuZ2VkIGphdmFvcC5kZWYpLgoKMTk5Ny0wOC0xMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKEJJU09OKTogUmVtb3ZlLgoKMTk5Ny0wOC0wNyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbjogIENvbnZlcnQgdG8gYXV0b2NvbmYuCgkqIGNvbmZpZy1sYW5nLmluIChvdXRwdXRzKTogIEFkZGVkIGphdmEvTWFrZWZpbGUuCgoJKiBNYWtlLWxhbmcuaW4sIGxhbmctc3BlY3MuaCwgY29uZmlnLWxhbmcuaW4sIE1ha2VmaWxlLmluOgoJUmVuYW1lIGNjMWphdmEgdG8gamMxLgoKCSogbGFuZy5jIChpbml0X3BhcnNlLCBmaW5paHNfcGFyc2UpOiAgTmV3IGZ1bmN0aW9ucyAjaWZkZWYgVVNFX0NQUExJQi4KCSogTWFrZWZpbGUuaW4gKElOVEVSTkFMX0NGTEFHUyk6ICBBZGQgQGV4dHJhX2NfZmxhZ3MuCgoJKiBjbGFzcy5jIChjbGFzc19kZXB0aCk6ICBEbyBsb2FkX2NsYXNzIGlmIG5lZWRlZC4KCglNb3N0bHkgYmV0dGVyIHZlcmlmaWNhdGlvbi4KCSogZGVjbC5jIChwdXNoZGVjbCk6ICBTZXQgVFlQRV9TVFVCX0RFQ0wgZm9yIGEgdHlwZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6ICBDaGFuZ2UgcmV0dXJuIHR5cGUgb2Ygc29mdF9jaGVja2Nhc3QuCgkqIGV4cHIuYyAoZXhwYW5kX2phdmFfQ0hFQ0tDQVNUKTogIERvIHB1c2hfdmFsdWUgb2YgdGhlICJjYXN0ZWQiIHZhbHVlLgoJKiBsYW5nLmMgKHB1dF9kZWNsX3N0cmluZywgcHV0X2RlY2xfbm9kZSwgbGFuZ19wcmludGFibGVfbmFtZSwKCWxhbmdfcHJpbnRfZXJyb3IpOiAgTmV3IGZ1bmN0aW9ucy4KCShsYW5nX2luaXQpOiAgU2V0IGdsb2JhbCBob29rIHByaW50X2Vycm9yX2Z1bmN0aW9uIHRvIGxhbmdfcHJpbnRfZXJyb3IuCgkqIGV4cHIuYzogIEluIHRoZSB0eXBlX21hcCBwdHJfdHlwZV9ub2RlIGlzIG9ubHkgdXNlZCBmb3IgbnVsbCBub3cuCgkocG9wX3R5cGUsIG1lcmdlX3R5cGVzKTogIEhlbmNlIHB0cl90eXBlX25vZGUgbWF0Y2hlcyBhbnkgcmVmZXJlbmNlLgoJKG1lcmdlX3R5cGVzKTogIERlcmVyZW5jZSBwb2ludGVyIHRvIHJlY29yZCB0eXBlcyBiZWZvcmUgY29tcGFyaW5nLgoJKGRlY29kZV9uZXdhcnJheV90eXBlLCBtZXJnZV90eXBlcyk6ICBPbiBlcnJvciBqdXN0IHJldHVybiBOVUxMLgoJKGJ1aWxkX2phdmFfYmlub3ApOiAgQWRkIHByZWxpbWluYXJ5IGltcGxlbWVudGF0aW9uICh3aXRoIHdhcm5pbmcpCglmb3IgQ09NUEFSRV9MX0VYUFIgYW5kIENPTVBBUkVfR19FWFBSIChpLmUuIFtmZF1jbXBbbGddKS4KCShsb29rdXBfbGFiZWwpOiAgU2V0IERFQ0xfSUdOT1JFRF9QIChmb3IgZHdhcmYyb3V0KS4KCShleHBhbmRfY29tcGFyZSwgZXhwYW5kX2phdmFfZ290bywgZXhwYW5kX2phdmFfY2FsbCk6ICBEb24ndAoJcHVzaF9wZW5kaW5nX2Jsb2NrLCBzaW5jZSB0aGF0IG9ubHkgbWFrZXMgc2Vuc2Ugd2hlbiB2ZXJpZnlpbmcuCgkobWVyZ2VfdHlwZV9zdGF0ZSk6ICBEaWZmZXJlbnQgcmV0dXJuIGNvZGVzLgoJKHB1c2hfcGVuZGluZ19ibG9jayk6ICBBIGJsb2NrIG1heSBuZWVkIHRvIGJlIHZlcmlmaWVkIG1vcmUgdGhhbiBvbmNlLgoJKGV4cGFuZF9ieXRlX2NvZGUpOiAgV2FybiBhYm91dCB1bnVzZWQgY29kZSBhdCBjb2RlIGdlbmVyYXRpb24gdGltZS4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9uKTogIENoYW5nZWQgbG9naWMsIHNpbmNlIGNvZGUgbWF5IG5lZWQgdG8gYmUKCXJlLXZlcmlmaWVkIGlmIHR5cGUtc3RhdGUgaGFzIGNoYW5nZWQuICBBbHNvLCBiZXR0ZXIgZXJyb3IgaGFuZGxpbmcuCglJbXBsZW1lbnQgYWNtcGVxLCBhY21wbmUsIHBvcCwgcG9wMiwgc3dhcCwgY2hlY2tjYXN0LCBpbnN0YW5jZW9mLgoJSW1wcm92ZSBuZXdhcnJheSwgYW5ld2FycmF5LCA/YWxvYWQsIGF0aHJvdywKCSogamF2YS10cmVlLmggKExBQkVMX0NIQU5HRUQpOiAgTmV3IG1hY3JvLgoKMTk5Ny0wOC0wNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHNvZnRfYXRocm93X25vZGUpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlIGluaXRpYWxpemVkLgoJKiBqYXZhb3AuZGVmIChpMmIsIGkyYywgaTJzKTogSW52b2tlIENPTlZFUlQyCgkqIHR5cGVjay5jIChjb252ZXJ0KTogQWRkZWQgc3VwcG9ydCBmb3IgUkVBTF9UWVBFLgoJKGNvbnZlcnRfdG9fY2hhcik6IE5ldyBmdW5jdGlvbi4KCShjb252ZXJ0KTogSGFuZGxlIENIQVJfVFlQRS4KCSogZXhwci5jIChleHBhbmRfamF2YV9hcnJheXN0b3JlKTogTW9kaWZpZWQgYmVjYXVzZSBDSEFSL0JZVEUvQk9PTEVBTi8KCVNIT1JUIG5vdyBleHBlY3QgSU5UIGJ1dCBzdG9yZSBhcyBDSEFSL0JZVEUvQk9PTEVBTi9TSE9SVC4KCShleHBhbmRfamF2YV9hcnJheWxvYWQpOiBDSEFSL0JZVEUvQk9PTEVBTi9TSE9SVCBub3cgY29udmVydCByZXN1bHQgdG8KCXByb21vdGVkIHR5cGUuCgkodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBBZGRlZCBicmVhayBhIHRoZSBlbmQgb2YgYm9ndXMgdW5vcDogbGFiZWwuCgkoT1BDT0RFXzxifGN8cz5hc3RvcmUpOiBQb3AgYW4gaW50IG9wZXJhbmQgZnJvbSB0aGUgdHlwZSBzdGFjawoJKE9QQ09ERV88YnxjfHM+YXN0b3JlKTogUHVzaCB0aGUgcHJvbW90ZWQgdHlwZSBvbnRvIHRoZSBzdGFjawoJKHByb2Nlc3NfanZtX2luc3RydWN0aW9uKTogTmV3IG1hY3JvIENPTlZFUlQyIGZvciBpMmMsIGkycyBhbmQgaTJiLgoJKEpBVkFfQVJSQVlfTEVOR1RIX09GRlNFVCwgSkFWQV9BUlJBWV9EQVRBX09GRlNFVCk6IE1vZGlmaWVkCgl0byBVc2UgVGhlIFJpZ2h0IFRoaW5ncy4KCShwb3BfdHlwZSk6IEFjY2VwdCBDSEFSL0JZVEUvQk9PTEVBTi9TSE9SVCBwcm9tb3RlZCB0eXBlIGFzCgljb21wYXRpYmxlIHdpdGggSU5ULiBCT09MRUFOIGlzIG1hZGUgZXF1aXZhbGVudCB0byBCWVRFLgoJKE9QQ09ERV9hdGhyb3csIE9QQ09ERV9hY29uc3RfbnVsbCwgT1BDT0RFX2lmbnVsbCwKCU9QQ09ERV9pZm5vbm51bGwpOiBOb3cgc3VwcG9ydGVkLgoJKGJ1aWxkX2phdmFfYXRocm93KTogTmV3IGZ1bmN0aW9uLgoKMTk5Ny0wOC0wNCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJUmVuYW1lIG1ldGhvZCBuYW1lIDxpbml0PiB0byBtYXRjaCBHKysgKGFuZCBmaXggbWFuZ2xpbmcpLgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3MpOiAgUmVwbGFjZSBtZXRob2QgbmFtZSBvZiA8aW5pdD4gYnkgY2xhc3MgbmFtZS4KCShtYWtlX21ldGhvZF92YWx1ZSk6ICBEbyBpbnZlcnNlIHJlbmFtaW5nIG9mIGNvbnN0cnVjdG9yIGZyb20gPGluaXQ+LgoJKiBqYXZhLXRyZWUuaCAoREVDTF9DT05TVFJVQ1RPUl9QKTogIE5ldyBtYWNyby4KCSogdHlwZWNrLmMgKGxvb2t1cF9qYXZhX2NvbnN0cnVjdG9yKTogIE5ldyBmdW5jdGlvbi4KCSogZXhwci5jIChleHBhbmRfaW52b2tlKTogIElmIG1ldGhvZF9uYW1lIGlzIDxpbml0PiwgY2FsbAoJbG9va3VwX2phdmFfY29uc3RydWN0b3IgdG8gZmluZCBjb25zdHJ1Y3Rvci4KCgkqIHBhcnNlLmMgKGdldF9jb25zdGFudCk6ICBIYW5kbGUgQ09OU1RBTlRfRmxvYXQgYW5kIENPTlNUQU5UX0RvdWJsZS4KCjE5OTctMDgtMDEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UuYyAoZ2V0X2NsYXNzX2NvbnN0YW50KTogTW9kaWZpZWQgdG8gaGFuZGxlIGFycmF5ICJjbGFzc2VzIgoJKiB0eXBlY2suYyAoc2V0X2xvY2FsX3R5cGUpOiBCdWcgZml4ZWQgd2hlbiBmaWxsaW5nIHR5cGVfbWFwW10gd2l0aAoJd2lkZSB0eXBlLgoJKGNvbnZlcnQpOiBNb2RpZmllZCB0byBoYW5kbGUgcmVhbCB0eXBlLgoJKiBqYXZhLXRyZWUuaCAoc29mdF9iYWRhcnJheWluZGV4X25vZGUsIHNvZnRfYW5ld2FycmF5X25vZGUsCglzb2Z0X211bHRpYW5ld2FycmF5LCBzb2Z0X25ld2FycmF5X25vZGUsIHNvZnRfdGhyb3dfbm9kZSk6IE5ldyBnbG9iYWwKCXZhcmlhYmxlcyBkZWNsYXJlZC4KCSogZGVjbC5jIChzb2Z0X2JhZGFycmF5aW5kZXhfbm9kZSwgc29mdF9hbmV3YXJyYXlfbm9kZSwKCXNvZnRfbXVsdGlhbmV3YXJyYXksIHNvZnRfbmV3YXJyYXlfbm9kZSwgc29mdF90aHJvd19ub2RlKTogTmV3CglnbG9iYWwgdmFyaWFibGVzIGluaXRpYWxpemVkLgoJKGZpbmRfbG9jYWxfdmFyaWFibGUpOiBIYW5kbGVzIHRoZSBjYXNlIG9mIGEgcG9pbnRlcgoJKGVuZF9qYXZhX21ldGhvZCk6IFJlc3RvcmUgdGhlIHVzZSBvZiBvbmUgbW9yZSBzY29wZQoJKiBleHByLmMgKGJ1aWxkX2phdmFfYXJyYXludWxsX2NoZWNrLCBidWlsZF9qYXZhX2FycmF5YWNjZXNzLAoJYnVpbGRfamF2YV9hcnJheV9sZW5ndGhfYWNjZXNzLCBleHBhbmRfamF2YV9hcnJheWxvYWQsCglleHBhbmRfamF2YV9hcnJheXN0b3JlLCBleHBhbmRfamF2YV9hcnJheV9sZW5ndGgsCglleHBhbmRfamF2YV9tdWx0aWFuZXdhcnJheSwgZXhwYW5kX2phdmFfYW5ld2FycmF5LAoJYnVpbGRfamF2YV9jaGVja19pbmRleGVkX3R5cGUsIGlzX2FycmF5X3R5cGVfcCwKCWJ1aWxkX2phdmFfdGhyb3dfb3V0X29mX2JvdW5kX2V4Y2VwdGlvbik6IE5ldyBmdW5jdGlvbnMuCgkoU1RPUkVfSU5URVJOQUwpOiBOb3cgZm9yY2VzIHR5cGUgb2YgdGhlIGRlY2wgdG8gYmUgdHlwZSBvZiB0aGUgdmFsdWUuCgkoT1BDT0RFX2FycmF5bGVuZ3RoLCBPUENPREVfbmV3YXJyYXksIE9QQ09ERV88dD5hc3RvcmUsCglPUENPREVfPHQ+YWxvYWQpOiBJbXBsZW1lbnRlZCBjb2RlIGZvciB2ZXJpZmljYXRpb24uCgkoQVJSQVlfU1RPUkUsIEFSUkFZX0xPQUQsIEFSUkFZX0xFTkdUSCwgQVJSQVlfTkVXX1BUUiwgQVJSQVlfTkVXX05VTQoJQVJSQVlfTkVXX01VTFRJKTogTWFjcm8gZGVmaW5lZC4KCShDT05WRVJUKTogTW9kaWZpZWQgdG8gaW52b2tlIGNvbnZlcnQoKS4KCShjYXNlIE9QQ09ERV9hbG9hZDIpOiBGaXhlZCBpbmRleCB0eXBvIGZyb20gMiB0byAxLgoKMTk5Ny0wNy0zMSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChwdXNoX2NsYXNzKTogIFNldCBERUNMX0FSVElGSUNJQUwgKGZvciBkYnhvdXQuYykuCgkoYnVpbGRfY2xhc3NfcmVmLCBpc19jb21waWxlZF9jbGFzcyk6ICBIYW5kbGUgcG9pbnRlci10by1yZWNvcmQgdHlwZXMuCgkobWFrZV9jbGFzc19kYXRhKTogIEZpZWxkIG5hbWUgbmVlZHMgJy8nIGFzIHBhY2thZ2UgcHJlZml4LgoJKiBleHByLmMgKHR5cGVfc3RhY2tfZHVwLCBqYXZhX3N0YWNrX2R1cCk6ICBGaXggZmVuY2Vwb3N0IGVycm9ycy4KCjE5OTctMDctMjUgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCUltcGxlbWVudCBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgbG9jYWwgdmFyaWFibGVzLgoJKiBqYXZhLXRyZWUuaCAoREVDTF9DT0RFX0xFTkdUSCwgREVDTF9BUkdfU0xPVF9DT1VOVCwKCURFQ0xfTE9DQUxfU0xPVF9OVU1CRVIsIERFQ0xfTE9DQUxfU1RBUlRfUEMsIERFQ0xfTE9DQUxfRU5EX1BDLAoJREVDTF9MT0NBTF9TTE9UX0NIQUlOKTogIE5ldyBtYWNyb3MuCgkoc3RydWN0IGxhbmdfZGVjbF92YXIpOiAgTmV3IHR5cGUuCgkqIHBhcnNlLmMgKGdpdmVfbmFtZV90b19sb2NhbHMpOiAgTW92ZSB0byBkZWNsLmMuCgkqIGRlY2wuYyAoZ2l2ZV9uYW1lX3RvX2xvY2Fscyk6ICBSZS13cml0dGVuIHRvIERvIFRoZSBSaWdodCBUaGluZy4KCShzdGFydF9qYXZhX21ldGhvZCk6ICBSZS13cml0ZSBwYXJhbWV0ZXIgaGFuZGxpbmcuCgkocGVuZGluZ19sb2NhbF9kZWNscyk6ICBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKHB1c2hfanZtX3Nsb3QsIG1heWJlX3B1c2hsZXZlbHMsIG1heWJlX3BvcGxldmVscyk6ICBOZXcgZnVuY3Rpb25zLgoJKGZpbmRfbG9jYWxfdmFyaWFibGUpOiAgQWNjZXB0IHBjIHNvIHdlIGNhbiBza2lwcyBkZWNscyBub3QgaW4gcmFuZ2UuCgkoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiAgQWRkIGVuZF9wYyBmaWVsZC4KCSogZXhwci5jIChleHBhbmRfYnl0ZV9jb2RlKTogQ2FsbCBtYXliZV9wdXNobGV2ZWxzIGFuZCBtYXliZV9wb3BsZXZlbHMuCgkodmFyaW91cyk6ICBDaGFuZ2Ugc28gY3VycmVudCBwYyBnZXRzIHBhc3NlZCB0byBmaW5kX2xvY2FsX3ZhcmlhYmxlLgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6ICBSZS1hcnJhbmdlIGZpZWxkcyBpbgoJY2xhc3NfdHlwZV9ub2RlIGFuZCBhbmQgbWV0aG9kX3R5cGVfbm9kZSB0byBtYXRjaCBrYWZmZSAwLjkuMS4KCSogY2xhc3MuYyAobWFrZV9tZXRob2RfdmFsdWUsIG1ha2VfY2xhc3NfZGF0YSk6ICBVcGRhdGUKCWluaXRpYWxpemF0aW9ucyB0byBtYXRjaC4KCjE5OTctMDctMTYgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAodW5pY29kZV9tYW5nbGluZ19sZW5ndGgsIGVtaXRfdW5pY29kZV9tYW5nbGVkX25hbWUsCglhcHBlbmRfZ3BwX21hbmdsZWRfbmFtZSwgYXBwZW5kX2dwcF9tYW5nbGVkX3R5cGUpOiAgTmV3IGZ1bmN0aW9ucy4KCShwdXNoX3N1cGVyX2ZpZWxkKTogIE5ldyBmdW5jdGlvbi4KCShtYWtlX2NsYXNzX2RhdGEpOiAgSGFuZGxlIGluaGVyaXRhbmNlIG9mIGNsYXNzIHN0YXRpYyBpbml0aWFsaXplci4KCShsYXlvdXRfY2xhc3MpOiAgTmV3IG5hbWUgbWFuZ2xpbmcuCgkqIGNvbnN0YW50cy5jIChidWlsZF9jb25zdGFudF9kYXRhX3JlZik6ICBJbml0IHR5cGUgb2YgZGF0YSBhcnJheQoJdG8gYSBvbmUtZWxlbWVudCBhcnJheS4KCShidWlsZF9jb25zdGFudHNfY29uc3RydWN0b3IpOiAgU2V0IERFQ0xfU0laRSBmcm9tIGNvbXBsZXRlIGFycmF5IHR5cGUuCgkqIGRlY2wuYzogIFJlbmFtZSBjbGFzc190eXBlLCBvYmplY3RfdHlwZSBldGMgdG8gY2xhc3NfdHlwZV9ub2RlLAoJb2JqZWN0X3R5cGVfbm9kZSBldGMuICBNYWtlIGZvcm1lciBpbmhlcml0IGZyb20gbGF0dGVyLgoJKiBleHByLmMgKGV4cGFuZF9pbnZva2UpOiAgQWRkIGNhc3Qgb2YgZnVuY3Rpb24gYWRkcmVzcy4KCSogamF2YS10cmVlLmggKFRZUEVfQVJSQVlfRUxFTUVOVCwgUFVTSF9TVVBFUl9WQUxVRSk6ICBOZXcuCgkqIHBhcnNlLmMgKHl5cGFyc2UpOiAgRG9uJ3QgY2FsbCBsYXlvdXRfY2xhc3MgaGVyZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2phdmFfYXJyYXlfdHlwZSk6ICBTZXQgVFlQRV9BUlJBWV9FTEVNRU5ULgoKMTk5Ny0wNi0xNCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBkZWNsLmMsIGNsYXNzLmM6ICBVcGRhdGUgbWV0aG9kIHR5cGUgdG8gbWF0Y2ggbGF0ZXN0IEthZmZlIHNuYXBzaG90LgoJKiBjb25zdGFudHMuYyAobG9va3VwX25hbWVfY29uc3RhbnQpOiAgUmVuYW1lZCB0byBhbGxvY19uYW1lX2NvbnN0YW50LgoJKGFsbG9jX2NsYXNzX2NvbnN0YW50KTogIE5ldy4KCSogZXhwci5jIChleHBhbmRfaW52b2tlKTogIE1ha2Ugc3VyZSBtZXRob2QncyBjbGFzcyBpcyBpbml0aWFsaXplZC4KCSogY2xhc3MuYyAoaW50ZXJpdHNfZnJvbV9wLCBlbWl0X3JlZ2lzdGVyX2NsYXNzKTogIE5ldyBmdW5jdGlvbnMuCgkqIHBhcnNlLmMgKHl5cGFyc2UpOiAgQ2FsbCBlbWl0X3JlZ2lzdGVyX2NsYXNzLgoKMTk5Ny0wNi0wOSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjb25zdGFudHMuYzogIE5ldyBmaWxlLCB0byBoYW5kbGUgY29uc3RhbnQgcG9vbC4KCSogTWFrZWZpbGUuaW4gKEpBVkFfT0JKUyk6ICBBZGQgY29uc3RhbnRzLm8uCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiAgVXBkYXRlLCBmaXgsIGZpbmlzaCB2YXJpb3VzIHN0cnVjdHMuCgkocHVzaGRlY2xfdG9wX2xldmVsKTogIE5ldy4KCSogcGFyc2UuYyAobGF5b3V0X2NsYXNzKTogIE1vdmVkIHRvIGNsYXNzLmMuCgkqIGV4cHIuYyAoamF2YV9wdXNoX2NvbnN0YW50X2Zyb21fcG9vbCk6ICBOZXcgZnVuY3Rpb24uCgkqIGNsYXNzLmMgKGJ1aWxkX2NsYXNzX3JlZik6ICBNYWtlIHdvcmsgZnVsbHkKCShtYWtlX2NsYXNzX2RhdGEpOiAgRW1pdCBzdXBlci1jbGFzcywgY29uc3RhbnQgcG9vbCwgaW50ZXJmYWNlIHZlY3Rvci4KCjE5OTctMDYtMDMgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCWphdmEtdHJlZS5oIChERUNMX1NJR05BVFVSRSwgQkNPREVfRU1JVFRFRCk6ICBSZW1vdmUuCgkoTEFCRUxfVkVSSUZJRUQsIEJDT0RFX0VYQ0VQVElPTl9UQVJHRVQsIFRZUEVfQVJSQVlfUCk6ICBOZXcuCgkqIGNsYXNzLmMgKGNsYXNzX2RlcHRoKTogIE5ldyBmdW5jdGlvbi4KCShsb29rdXBfbmFtZWRfY2xhc3MpOiAgUmVwbGFjZWQgYnkgbmV3IGZ1bmN0aW9uIGxvb2t1cF9jbGFzcy4KCSogZGVjbC5jIChvYmplY3RfdHlwZV9ub2RlLCBzdHJpbmdfdHlwZV9ub2RlKTogIE5ldy4KCVJlbW92ZSB2YXJpb3VzIHR5cGVzIHRoYXQgd2Ugbm8gbG9uZ2VyIG5lZWQuCgkqIGV4cHIuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiAgTmV3IHNlcGFyYXRlIHZlcmlmaWVyIHBhc3MuCgkocHVzaF90eXBlLCBwb3BfdHlwZSk6ICBOZXcgZnVuY3Rpb25zIGZvciB2ZXJpZmllci4KCSh0eXBlX3N0YWNrX2R1cCwgcG9wX2FyZ3VtZW50X3R5cGVzLCBtZXJnZV90eXBlcyk6ICBMaWtld2lzZS4KCShleHBhbmRfYnl0ZV9jb2RlKTogIFNpbXBsaWZ5LCBzaW5jZSB3ZSBhc3N1bWUgYWxyZWFkeSB2ZXJpZmllZC4KCShleHBhbmRfaW52b2tlKTogIE5vdyBtb3N0bHkgd29ya3MuCgkqIGphdmFvcC5kZWY6ICBSZW5hbWUgbGRjMS0+bGRjLCBsZGMyLT5sZGNfdywgbGRjMnctPmxkYzJfdy4KCSogbGFuZy5jIChtYWluX2NsYXNzKTogIE1vdmUgdG8gcGFyc2UuYy4gIERvbid0IG1ha2VfY2xhc3MgeWV0LgoJKiBwYXJzZS5jOiAgV2FpdCB0byBhbGxvY2F0ZSBjbGFzcyBvYmplY3QgdW50aWwgd2Uga25vdyBpdHMgbmFtZS4KCShsYXlvdXRfY2xhc3MpOiAgQ2FsY3VsYXRlIERFQ0xfVklOREVYIGZvciBlYWNoIHZpcnR1YWwgbWV0aG9kLgoJKiB0eXBlY2suYyAoZ2V0X2FycmF5X3R5cGUpOiAgUmVuYW1lIHRvIC4uLgoJKGJ1aWxkX2phdmFfYXJyYXlfdHlwZSk6ICAuLi4gYW5kIHByb3ZpZGUgd29ya2luZyBpbXBsZW1lbnRhdGlvbi4KCShidWlsZF9qYXZhX3NpZ25hdHVyZSk6ICBOZXcgZnVuY3Rpb24gLSBidWlsZCBKYXZhIHNpZ25hdHVyZSBvZiB0eXBlLgoJKHNldF9qYXZhX3NpZ25hdHVyZSk6ICBOZXcgZnVuY3Rpb24gLSBjYWNoZSBzaWduYXR1cmUgd2l0aCB0eXBlLgoJKGxvb2t1cF9qYXZhX21ldGhvZCk6ICBOZXcgZnVuY3Rpb24uCgoxOTk3LTA1LTA2ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAZGVuZWIuY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGlkZW50X3N1YnN0KTogIFRha2UgZXh0cmEgU1VGRklYIHBhcmFtZXRlci4KCShhZGRfZmllbGQpOiAgU2V0IERFQ0xfQVNTRU1CTEVSX05BTUUgb2Ygc3RhdGljIGZpZWxkczsgIG1vcmUuCgkoc2V0X2NvbnN0YW50X3ZhbHVlLCBidWlsZF9zdGF0aWNfZmllbGRfcmVmLCBpc19jb21waWxlZF9jbGFzcyk6ICBOZXcuCgkoYnVpbGRfY2xhc3NfcmVmKTogIEFjdHVhbGx5IGltcGxlbWVudC4KCSogZGVjbC5jLCBqYXZhLXRyZWUuaDogIFJlbmFtZWQgc29tZSB4eF90eXBlIHRvIHh4X3R5cGVfbm9kZS4KCSogZGVjbC5jIChidWlsdGluX2Z1bmN0aW9uKTogIE5ldy4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6ICBVcGRhdGUgZm9yIGN1cnJlbnQgS2FmZmUuICBEZWNsYXJlIHNvbWUKCWJ1aWx0aW4gS2FmZmUgZnVuY3Rpb25zLgoJKiBleHByLmMgKGJ1aWxkX2FkZHJlc3Nfb2YpOiAgTmV3LgoJKGV4cGFuZF9qYXZhX05FVywgZXhwYW5kX2phdmFfSU5TVEFOQ0VPRiwgZXhwYW5kX2phdmFfQ0hFQ0tDQVNUKToKCVJlbmFtZWQgKGZyb20gZXhwYW5kX2phdmFfbmV3IGV0YyksIGFuZCBhZGRlZCB3b3JraW5nIGltcGxlbWVudGF0aW9ucy4KCShidWlsZF9maWVsZF9yZWYpOiAgTm93IGFsc28gaGFuZGxlIHN0YXRpYyBmaWVsZHMuCgkoZXhwYW5kX2ludm9rZSk6ICBJbXBsZW1lbnQgaW52b2tlc3RhdGljLCBhbmQgc3RhcnQgaW1wbGVtZW50IHJlc3QuCgkqIGphdmEtb3Bjb2Rlcy5oOiAgVXNlIGphdmFvcC5kZWYgdG8gYXZvaWQgZHVwbGljYXRlZCBsaXN0LgoJKiBqYXZhb3AuZGVmOiAgUmVuYW1lIGludm9rZXZpcnQgLT4gaW52b2tldmlydHVhbC4KCSogbGFuZy5jICh1c2VfaGFuZGxlcyk6ICBSZW1vdmVkLgoJKiBwYXJzZS5jOiAgQWRkIHN1cHBvcnQgZm9yIENvbnN0YW50VmFsdWUgYXR0cmlidXRlLgoJSGFuZGxlIG5lc3RlZCBsb2FkaW5nIG9mIGEgY2xhc3MuICAoSlBPT0xfVVRGKTogIE5ldy4KCjE5OTctMDMtMTEgIFBlciBCb3RobmVyICA8Ym90aG5lckBkZW5lYi5jeWdudXMuY29tPgoKCSogZXhwci5jIChleHBhbmRfamF2YV9wdXNoYyk6ICBTdXBwb3J0ICNpZm5kZWYgUkVBTF9BUklUSE1FVElDIGNhc2UuCgoxOTk3LTAyLTI3ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAZGVuZWIuY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS5pbnN0YWxsLW1hbik6ICBOZXcgZW1wdHkgcnVsZS4KCSogdHlwZWNrLmMgKHNldF9sb2NhbF90eXBlKTogIE5ldyBmdW5jdGlvbi4KCSogZXhwci5jIChTVE9SRV9JTlRFUk5BTCk6ICBDYWxsIGZpbmRfbG9jYWxfdmFyaWFibGUsCglub3QgZmluZF9zdGFja19zbG90LiAgQ2FsbCBzZXRfbG9jYWxfdHlwZS4KCjE5OTctMDItMTIgIFBlciBCb3RobmVyICA8Ym90aG5lckBrYWxlc3Npbi5jeWdudXMuY29tPgoKCSogamF2YS10cmVlLmg6ICBWYXJpb3VzIG5ldyBtYWNyb3MgZm9yIGNvbnN0cnVjdGluZyBSRUNPUkRfVFlQRXMsCglhbmQgYnVpbGRpbmcgUkVDT1JEX1RZUEUgQ09OU1RSVUNUT1JzLgoJQWxzbyBzdXBwb3J0IGZvciBjcmVhdGluZyBVdGY4Q29uc3Qgb2JqZWN0cyBmcm9tIGFuIElOREVUSUZJRVJfTk9ERS4KCgkqIGxhbmcuYyAodXNlX2hhbmRsZXMpOiAgQ2hhbmdlIHRoZSBkZWZhdWx0IHRvIDAuCgkqIGRlY2wuYzogIERlZmluZSBhbmQgYnVpbGQgY2xhc3NfdHlwZSwgZmllbGRfdHlwZSwgdXRmOGNvbnN0X3R5cGUuCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSwgbWFrZV9maWVsZF92YWx1ZSwKCWdldF9hY2Nlc3NfZmxhZ3NfZnJvbV9kZWNsLCBidWlsZF9jbGFzc19yZWYsIGJ1aWxkX3V0ZjhfcmVmLAoJaGFzaFV0ZjhTdHJpbmcsIHN0ckxlbmd0aFV0ZjgsIG1hbmdsZWRfY2xhc3NuYW1lOgoJRnVuY3Rpb25zIHRvIGJ1aWxkIHJlZmxlY3RpdmUgZGF0YSBzdHJ1Y3R1cmVzLgoJKiBwYXJzZS5jICh5eXBhcnNlKTogIENhbGwgbWFrZV9jbGFzc19kYXRhLgoKCSogamNmLWlvLmMgKG9wZW5fY2xhc3MsIGZpbmRfY2xhc3NmaWxlKTogIE5ldyBmdW5jdGlvbnMuCgkqIGpjZi1kdW1wLmM6ICBTdXBwb3J0IHJlYWRpbmcgY2xhc3NmaWxlIGZyb20gZXhwbGljaXRseS1uYW1lZAoJY2xhc3MgZmlsZSAod2l0aG91dCBDTEFTU1BBVEggc2VhcmNoaW5nKS4KCjE5OTYtMTAtMjQgIFBlciBCb3RobmVyICA8Ym90aG5lckBkZW5lYi5jeWdudXMuY29tPgoKCSogamNmLXJlYWRlci5jOiAgQWRkIHBhcmFtZXRlciBsaXN0IHRvIEhBTkRMRV9DT05TVEFOVF9VdGY4LgoJKiBwYXJzZS5jIChKUE9PTF9VVEZfTEVOR1RILCBKUE9PTF9VVEZfREFUQSwgSEFORExFX0NPTlNUQU5UX1V0ZjgpOgoJT3ZlcnJpZGUgamNmLXJlYWRlciBtYWNyb3Mgc28gQ09OU1RBTlRfVXRmOCBiZWNvbWVzIHRyZWUgbm9kZSBoZXJlLgoJKGdldF9jb25zdGFudCk6ICBOb3cgdHJpdmlhbCBmb3IgQ09OU1RBTlRfVXRmOC4KCgkqIGpjZi5oOiAgTWFrZSBORVdfQ1BPT0wgdGhlIGRlZmF1bHQuCgkqIGpjZi5oLCBqY2YtcmVhZGVyLmMsIHBhcnNlLmM6ICBSZW1vdmUgc3VwcG9ydCBmb3IgIU5FV19DUE9PTC4KCjE5OTYtMTAtMjQgIFBlciBCb3RobmVyICA8Ym90aG5lckBkZW5lYi5jeWdudXMuY29tPgoKCU5ldyBkaXJlY3RvcnkuCg==